diff --git a/docs/AI prompt.md b/docs/AI prompt.md index 6e4cb8a2b..e63097343 100644 --- a/docs/AI prompt.md +++ b/docs/AI prompt.md @@ -2,6 +2,21 @@ 我将在这里记录下开发过程中的AI提示词,让AI更好的助力项目发展(使用VSCode Github Copilot Agent模式) +## 术语与本地化修改规则 + +以下要求适用于所有会新增或修改本地化内容的 AI 任务,包括 `src/locales//translation.json`、对应语言的文档、界面文案与测试快照: + +```md +凡是新增或修改某个语言地区(locale)的内容,必须先检查是否存在对应的术语规范文件 `docs/terminology-.md`;如果存在,必须读取并遵循该文件。例如,修改 Traditional Chinese / 繁体中文(zh-TW)时,必须遵循 `docs/terminology-zh-TW.md`。 + +- 遵循目标语言地区的自然表达和产品界面惯用语,不可仅做文字或字形的机械转换。 +- 对应术语规范文件中标注为固定保留的术语,或明确限定在当前同类 UI 场景中的修正规则,必须遵循。 +- 不要把某个界面文案的修正扩大成该词在所有上下文中的禁用规则;对于需要结合语境判断的项目,不得机械式全局替换,应根据功能语境与原文含义选择用词。 +- 如果目标 locale 尚无术语规范文件,应保持现有翻译风格,并避免擅自引入新的术语标准。 +- 保留 i18next placeholder、程序标识符、HTML/React 标记和既有功能行为。 +- 完成后检查本次修改的本地化内容,确认符合对应的术语规范文件(如存在)。 +``` + ## 单元测试 ```md @@ -33,4 +48,4 @@ 你是一个翻译专家,使用react-i18next做为翻译框架,我需要你帮助我翻译这个React文件中的中文,首先你需要提取文件中的中文部分,生成一个合适的key,使用蛇形命名,添加到 src/locales/zh-CN/translations.json 文件中,然后使用`useTranslation`替换原有中文,如果有参数你可以使用i18next的格式,不需要处理其他语言,不要做多余的事情 -``` \ No newline at end of file +``` diff --git a/docs/terminology-de-DE.md b/docs/terminology-de-DE.md new file mode 100644 index 000000000..89fd243d5 --- /dev/null +++ b/docs/terminology-de-DE.md @@ -0,0 +1,97 @@ +# de-DE Terminologie- und UI-Text-Richtlinien + +Dieses Dokument definiert die Terminologie für die deutsche (`de-DE`) Benutzeroberfläche und Dokumentation von ScriptCat. Es dient dazu, Produktkonzepte eindeutig zu benennen, UI-Texte natürlich zu formulieren und technische Bezeichner bei künftigen Übersetzungen unverändert zu erhalten. + +Geprüfte Verwendungsquelle: `src/locales/de-DE/translation.json` + +## Grundsätze + +1. Verwende kurze, idiomatische deutsche UI-Texte, die Handlung oder Zustand eindeutig benennen. +2. Behalte die Unterscheidung zwischen `Benutzerskript`, `Seitenskript`, `Hintergrundskript` und `Geplantes Skript` bei; die Typen sind nicht austauschbar. +3. Ersetze Begriffe nicht global nach Wortlaut. Prüfe Funktion, UI-Kontext und Satzzusammenhang. +4. Behalte technische Begriffe und Bezeichner wie `Regex`, `Cron-Ausdruck`, `@match`, `@exclude`, `@grant`, `@connect`, `@resource` und `@require` unverändert oder technisch gleichwertig. +5. Verändere keine Placeholder, HTML/React-Tags, i18next-Interpolation, URLs oder Metadaten-Bezeichner im Rahmen einer sprachlichen Überarbeitung. +6. Die unten genannten Keys dokumentieren die derzeitige Verwendung oder bekannte Prüfpunkte; dieselben Regeln gelten für neue Texte mit derselben Bedeutung. + +## Kategorien + +| Kategorie | Verwendung | +| --- | --- | +| **A. Produkt- und Funktionsbegriffe** | Namen für ScriptCat-Funktionen und Skripttypen. | +| **B. UI-Aktionen und Zustände** | Bevorzugte Formulierungen für Bedienelemente und Statusmeldungen. | +| **C. Kontextabhängige Begriffe** | Begriffe, deren beste Formulierung vom konkreten UI-Kontext abhängt. | +| **D. Technische Begriffe beibehalten** | Bezeichner und Fachbegriffe, deren technische Bedeutung erhalten bleiben muss. | +| **E. Spätere Prüfpunkte** | Bestehende Texte, die in einer gesonderten Überarbeitung geprüft werden sollten. | + +## A. Produkt- und Funktionsbegriffe + +| Konzept | Bevorzugte Formulierung | Aktuelle Beispiel-Keys | Hinweise | +| --- | --- | --- | --- | +| ScriptCat browser extension | `ScriptCat-Erweiterung` | `start_guide_title`, `ext_update_notification` | Produktname als `ScriptCat` schreiben. | +| generic user script | `Benutzerskript` | `create_user_script`, `guide_script_list_content` | Allgemeine Bezeichnung für ein Userscript. | +| Tampermonkey-compatible script type | `Tampermonkey-Skript` | `script_status_tooltip` | Nicht zu einem allgemeinen Skripttyp verkürzen. | +| page script | `Seitenskript` | `page_script`, `foreground_page_script_tooltip` | Skript, das auf angegebenen Seiten ausgeführt wird. | +| background script | `Hintergrundskript` | `create_background_script`, `background_script` | Produkttyp für Ausführung im Hintergrund. | +| scheduled script | `Geplantes Skript` | `create_scheduled_script`, `scheduled_script` | Produkttyp für geplante Ausführung; nicht ohne Kontext in `Cron-Skript` umbenennen. | +| script synchronization | `Skript-Synchronisation` | `script_sync`, `sync_status` | Bei Löschungen klarstellen, ob ein Löschstatus synchronisiert wird. | +| subscription | `Abonnement` | `subscribe_url`, `install_subscribe`, `subscribe_import_progress` | `Abonnieren` nur für die Aktion verwenden. | +| script gallery / market | `Skript-Galerie` / `Skript-Markt` | `script_gallery`, `guide_script_list_title` | Nach dem tatsächlichen Zielbereich benennen. | + +## B. UI-Aktionen und Zustände + +| Konzept | Bevorzugte Formulierung | Aktuelle Beispiel-Keys | Hinweise | +| --- | --- | --- | --- | +| create | `Erstellen` | `create_script`, `create_background_script` | Mit Objekt verwenden, wenn ein Button sonst unklar wäre. | +| save / save as | `Speichern` / `Speichern unter` | `save`, `save_as` | Standardformulierungen für Datei- und Einstellungsaktionen. | +| import / export | `Importieren` / `Exportieren` | `import`, `export`, `import_file`, `export_file` | Als Aktionen verwenden; Nomen nur in zusammengesetzten Labels. | +| install / update | `Installieren` / `Aktualisieren` | `install_script`, `update_script` | Zielobjekt ergänzen, falls erforderlich. | +| run / runtime | `Ausführen` / `Laufzeit` | `run`, `runtime`, `log_title` | Für Ausführungsprotokolle ist `Ausführungsprotokoll` passend. | +| enable / disable | `Aktivieren` / `Deaktivieren`; Zustände `Aktiviert` / `Deaktiviert` | `enable`, `disable`, `updatepage.enabled` | Nicht mit Öffnen/Schließen verwechseln. | +| settings | `Einstellungen` | `settings`, `script_setting.title` | Für benutzerseitige Konfigurationen. | +| permission | `Berechtigung` | `permission`, `request_permission` | Für Zugriffsrechte und Abfragen. | +| connect / sync | `Verbinden` / `Synchronisieren` | `connect`, `script_sync` | Verbindung und Datensynchronisation getrennt halten. | +| directory | `Verzeichnis` | `open_directory`, `open_backup_dir` | Für Dateisystemfunktionen des Tools. | +| browser tab | `Tab` | `close_current_tab`, `close_other_tabs` | Browser-Tabs nicht als `Bezeichnungen` benennen. | + +## C. Kontextabhängige Begriffe + +| Konzept | Mögliche Formulierung | Entscheidungsregel | Aktuelle Beispiel-Keys | +| --- | --- | --- | --- | +| local / cloud | `Lokal` / `Cloud` | Für Quelle, Speicherort oder Synchronisationsziel verwenden; bei Bedarf Objekt ergänzen. | `local`, `cloud`, `source_local_script` | +| panel / console | `Panel` / `Konsole` | Bedienoberfläche als `Panel`, Entwicklerausgabe als `Konsole` benennen. | `scheduled_script_description_title`, `build_success_message` | +| source | `Quelle`, `Installationsquelle`, `Abonnementquelle` | Benennen, was die Quelle liefert. | `source`, `install_source`, `subscribe_source_tooltip` | +| storage | `Speicher`, `Speicherplatz`, `Speicher-API` | Nach Datenablage, zugewiesenem Speicherplatz oder API unterscheiden. | `script_storage`, `script_operation_description`, `storage_api` | +| sync deletion | `Löschstatus synchronisieren` / `Löschungen synchronisieren` | Erst nach Bestätigung des tatsächlichen Verhaltens vereinheitlichen. | `sync_delete`, `sync_delete_desc`, `notification.script_sync_delete` | + +## D. Technische Begriffe beibehalten + +| Konzept | Verwenden | Aktuelle Beispiel-Keys | Grund | +| --- | --- | --- | --- | +| regular expression | `Regex` / `regulärer Ausdruck` | `search_regex` | Etablierter Entwicklerbegriff. | +| cron expression | `Cron-Ausdruck` | `cron_invalid_expr`, `error_cron_invalid` | Bezeichnet die akzeptierte Syntax präzise. | +| expression | `Ausdruck` | `value_export_expression`, `expression_format_error` | Technische Bedeutung eines eingegebenen oder ausgewerteten Ausdrucks. | +| watch file changes | `Datei überwachen` / `Überwachung stoppen` | `watch_file`, `stop_watch_file` | Bezeichnet die laufende Dateibeobachtung. | +| metadata declaration | `Deklaration` | `error_metadata_line_duplicated` | Begriff der Metadaten-Syntax. | +| product/API identifiers | `ESLint`, `VSCode`, `Cookie`, `GM API`, `@match`, `@exclude`, `@grant`, `@connect`, `@resource`, `@require` beibehalten | `enable_eslint`, `vscode_url`, `confirm_operation_description`, `script_resource_tooltip` | Namen und Codebezeichner müssen erkennbar bleiben. | + +## E. Spätere Prüfpunkte + +Die folgenden Einträge beschreiben bereits vorhandene Auffälligkeiten. Dieses Dokument ändert die Laufzeittexte nicht; eine Korrektur sollte separat mit UI-Prüfung erfolgen. + +| Thema | Aktueller Stand | Empfohlene Richtung | Aktuelle Beispiel-Keys | +| --- | --- | --- | --- | +| browser tabs | Die Ausführungsumgebung enthält `Alle Bezeichnungen`, während Schließen-Aktionen `Tab` verwenden. | Falls `script_run_env` Browser-Tabs bezeichnet, durchgängig `Alle Tabs`, `Normale Tabs`, `Inkognito-Tabs` verwenden. | `script_run_env.all`, `close_current_tab` | +| scheduled script expression label | `Geplante Aufgaben-Ausdruck` ist grammatisch unklar. | Nach Bestätigung der Funktion etwa `Ausdruck für geplante Aufgabe` verwenden. | `scheduled_script_description_description_expr` | +| ScriptCat capitalization | Einige Einstiegstexte können eine abweichende Produkt-Schreibung enthalten. | Produktnamen stets als `ScriptCat` schreiben. | `start_guide_title`, `ext_update_notification` | +| documentation link locale | Deutsche UI-Texte verweisen teilweise auf `/en/`-Dokumentation. | Nur ändern, wenn ein entsprechendes deutsches Ziel verfügbar ist. | `guide_script_list_content`, `develop_mode_guide` | + +## Checkliste für AI und Mitwirkende + +Beim Hinzufügen oder Bearbeiten deutscher Texte: + +1. Prüfe, dass das Ziel-Locale `de-DE` ist, und lies diese Richtlinie sowie benachbarte bestehende Strings. +2. Bewahre die Unterscheidung der Skripttypen und verwende für gleiche Funktionen dieselben Produktbegriffe. +3. Prüfe bei kontextabhängigen Begriffen die tatsächliche Funktion und den UI-Ort vor einer Änderung. +4. Erhalte technische Begriffe, Placeholder, Tags, Interpolation, URLs und Metadaten-Bezeichner. +5. Behandle Prüfpunkte als gesonderte Überarbeitung und nicht als Aufforderung zu globalem Ersetzen. +6. Suche vor der Auslieferung in neuem oder geändertem Text nach inkonsistenten Skripttypen, Tab-Bezeichnungen und veränderten Identifikatoren. diff --git a/docs/terminology-en-US.md b/docs/terminology-en-US.md new file mode 100644 index 000000000..43e16f915 --- /dev/null +++ b/docs/terminology-en-US.md @@ -0,0 +1,124 @@ +# en-US Terminology and UI Copy Guidelines + +This document defines terminology for ScriptCat's US English (`en-US`) interface and documentation. It is intended to keep product concepts identifiable, make UI actions read naturally in English, and prevent later translations from copying unclear source wording. + +Usage sources reviewed: `src/locales/en-US/translation.json`, `README.md` + +## Principles + +1. Use concise US English UI copy that states the action or state directly. +2. Preserve product distinctions between `User Script`, `Page Script`, `Background Script`, and `Scheduled Script`; they are not interchangeable labels. +3. Do not replace words globally based on spelling alone. Confirm the feature, UI location, surrounding copy, and whether the string is a label or a sentence. +4. Keep developer-facing terms technically precise, including `regular expression`, `cron expression`, `watch`, `storage`, and metadata identifiers. +5. Do not alter placeholders, HTML/React tags, i18next interpolation, URLs, or identifiers such as `@match`, `@exclude`, `@grant`, and `@connect` as part of copy editing. +6. `en-US` is the runtime fallback locale and the template for new translations. Ambiguous or ungrammatical English should be corrected deliberately rather than propagated into other locales. +7. Keys listed below document present usage or known review targets; the same terminology principles apply to future strings with the same meaning. + +## Categories + +| Category | Use | +| --- | --- | +| **A. Product and feature terms** | Names that identify ScriptCat capabilities and script types. | +| **B. UI actions and states** | Preferred wording for controls, labels, and status messages. | +| **C. Context-sensitive wording** | Terms whose best wording depends on the specific feature or UI surface. | +| **D. Technical terms to preserve** | Terms and identifiers that should retain their technical meaning. | +| **E. Copy review targets** | Existing strings that need later correction or product-context confirmation. | + +## A. Product and Feature Terms + +| Concept | Preferred wording | Current example keys | Notes | +| --- | --- | --- | --- | +| ScriptCat browser extension | `ScriptCat extension` | `start_guide_title`, `ext_update_notification` | Preserve the `ScriptCat` product capitalization. | +| generic userscript capability | `user script` / `userscript` | `create_user_script`, `guide_script_list_content`, README | Use `User Script` in UI type labels; prose may use `userscript` consistently within a document. | +| Tampermonkey-compatible script type | `Tampermonkey script` | `script_status_tooltip` | Do not reduce a compatibility statement to a generic script label. | +| page script | `Page Script` | `page_script`, `foreground_page_script_tooltip` | A script that runs on a specified page. | +| background script | `Background Script` | `create_background_script`, `background_script`, `enable_background.description` | A ScriptCat script type and background-running capability. | +| scheduled script | `Scheduled Script` | `create_scheduled_script`, `scheduled_script`, `scheduled_script_description_title` | Use this product term instead of introducing `crontab script`. | +| script sync | `Script Sync` | `script_sync`, `sync_status`, `guide_setting_sync_title` | When deletion is involved, explain whether deletion state or content is synchronized. | +| script subscription | `Subscription` | `subscribe`, `subscribe_url`, `subscribe_import_progress` | Use `Subscribe` only as a verb or control action; use `Subscription` for the object. | +| script gallery / market | `Script Gallery` / `Script Market` | `script_gallery`, `guide_script_list_title` | Match the destination's product label rather than merging names without confirmation. | + +## B. UI Actions and States + +| Concept | Preferred wording | Current example keys | Notes | +| --- | --- | --- | --- | +| create | `Create` | `create_script`, `create_background_script`, `create_success_note` | Use for creation actions and confirmations. | +| save / save as | `Save` / `Save As` | `save`, `save_as`, `save_as_success` | Capitalize as a label; use sentence case within prose. | +| import / export | `Import` / `Export` | `import`, `export`, `import_file`, `export_file` | Standard data/file actions. | +| install / update | `Install` / `Update` | `install_script`, `update_script`, `install_success` | Use the object name when needed to disambiguate. | +| run / runtime | `Run` / `Runtime` | `run`, `running`, `runtime`, `log_title` | `Runtime Logs` is appropriate for execution logs. | +| enable / disable | `Enable` / `Disable`; states `Enabled` / `Disabled` | `enable`, `disable`, `updatepage.enabled`, `updatepage.disabled` | Avoid `open` or `close` for feature enablement. | +| settings / configuration | `Settings` / `Configuration` | `settings`, `script_setting.title`, `editor_config` | UI options are settings; configuration data or editor configuration uses configuration. | +| connect / sync | `Connect` / `Sync` | `connect`, `connection_success`, `script_sync` | Keep connection state separate from data synchronization. | +| restore / reset | `Restore` / `Reset` | `restore`, `restore_default_values`, `reset` | Use according to whether saved/default content is recovered or settings are reset. | +| load / reload | `Loading` / `Reload` | `loading`, `install_page_loading`, `click_to_reload` | Use natural progressive/action forms. | +| directory | `Directory` | `open_directory`, `open_backup_dir` | Suitable for this developer-facing file-system feature. | +| browser tab | `Tab` | `close_current_tab`, `close_other_tabs` | Do not call browser tabs `tags`. | + +## C. Context-Sensitive Wording + +| Concept | Candidate wording | Decision rule | Current example keys | +| --- | --- | --- | --- | +| local / cloud | `Local` / `Cloud` | Use for data origin, destination, and storage location; add `device` or `storage` where the object is otherwise unclear. | `local`, `cloud`, `source_local_script`, `guide_tools_backup_content` | +| panel / console | `panel` / `console` | Use `panel` for ScriptCat UI controls and `console` for developer-tools output. | `background_script_description`, `build_success_message` | +| source | `Source`, `Install Source`, `Subscription Source` | Name what the source provides; a subscription object is not a verb. | `source`, `install_source`, `subscribe_source_tooltip` | +| permissions / authorization | `Permission`, `Allow`, `Grant access` | Use permission for capability records, allow/deny for decisions, and grant access in explanatory sentences. | `permission`, `allow_once`, `confirm_script_operation` | +| run location / application | `Applies To`, `Run Status` | Verify the column behavior before rewriting `Apply To / Run Status`; it may combine two separate concepts. | `apply_to_run_status`, `guide_script_list_apply_to_run_status_title` | +| sync deletion | `Sync Deletions` / `Sync Deletion Status` | Choose after confirming whether the setting propagates tombstones or performs deletion immediately. | `sync_delete`, `sync_delete_desc`, `notification.script_sync_delete` | +| match / exclude | `Match` / `Exclude` | Keep metadata identifiers visible as `@match` and `@exclude` when the UI edits those rules. | `website_match`, `website_exclude`, `add_match`, `add_exclude` | + +## D. Technical Terms to Preserve + +| Concept | Use | Current example keys | Reason | +| --- | --- | --- | --- | +| regular expression | `regular expression` / compact label `regex` | `search_regex` | Standard developer terminology. | +| cron expression | `cron expression` | `cron_invalid_expr`, `error_cron_invalid` | Identifies the accepted schedule syntax precisely. | +| expression | `expression` | `value_export_expression`, `cookie_export_expression`, `expression_format_error` | Retains the technical meaning of an entered or evaluated expression. | +| watch file changes | `Watch File` / `Stop Watching` | `watch_file_description`, `watch_file`, `stop_watch_file` | `watch` describes ongoing file-change monitoring in developer tools. | +| metadata declaration | `declaration` | `error_metadata_line_duplicated` | Corresponds to metadata syntax, not a general duplicate value. | +| storage / Storage API | `storage` / `Storage API` | `script_storage`, `storage_api`, `script_operation_title` | Feature and API terminology. | +| product/API identifiers | Preserve `ESLint`, `VSCode`, `Cookie`, `GM API`, `@resource`, `@require` | `enable_eslint`, `vscode_url`, `permission_cookie`, `script_resource_tooltip` | Names and metadata identifiers must remain recognizable and accurate. | + +## E. Copy Review Targets + +The entries below identify defects or inconsistencies already present in `translation.json`. Creating this guideline does not itself change runtime strings; these should be corrected in a scoped English copy pass with UI checks. + +| Target | Current wording or issue | Preferred direction | Current example keys | +| --- | --- | --- | --- | +| spelling errors | `Suceeded`, `exeuction` | `Succeeded`, `execution` | `import_local_success`, `exclude_off` | +| subscription as a noun | Object labels use `Subscribe`, such as `Subscribe URL` and `Install Subscribe`. | Use `Subscription URL`, `Install Subscription`, `Update Subscription`, and plural `Subscriptions` where the value is an object. | `subscribe_url`, `install_subscribe`, `update_subscribe`, `select_subscribes_to_import`, `notification.subscribe_update` | +| browser tabs | Run-environment entries call tabs `tags`. | Use `All Tabs`, `Normal Tabs`, and `Incognito Tabs` if these values target browser tabs. | `script_run_env.all`, `script_run_env.normal-tabs`, `script_run_env.incognito-tabs` | +| scheduled script naming | One status string says `crontab scripts` while the feature name is `Scheduled Script`. | Use `scheduled scripts` consistently. | `only_background_scheduled_can_run`, `scheduled_script` | +| product capitalization | `Scriptcat extension updated` does not match `ScriptCat`. | Preserve `ScriptCat` capitalization. | `ext_update_notification` | +| metadata identifier | Tooltip refers to `@required`; userscript metadata uses `@require`. | Keep the identifier as `@require`. | `script_resource_tooltip` | +| title-style fragments used as messages | Many success/error messages use noun-like forms such as `Delete Successful`, `Update Successful`, or `Dump success saved`. | For notifications, prefer natural result messages such as `Deleted successfully`, `Updated successfully`, and `Export successful`; keep label capitalization separate. | `delete_success`, `update_success`, `export_success`, `install_success` | +| script type capitalization | Labels use title case while sentences capitalize `Background scripts` and `Scheduled scripts` mid-sentence. | Use title case only for displayed type labels; use lowercase common nouns in explanatory sentences. | `background_script`, `scheduled_script`, `script_status_tooltip` | +| interaction instructions | Links use `tap` or `Click me`, and some instructional text is ungrammatical. | Use consistent desktop UI wording such as `Click to learn how to enable it` and sentence-form instructions. | `develop_mode_guide`, `allow_user_script_guide`, `lower_version_browser_guide`, `blacklist_placeholder`, `import_script_placeholder` | +| browser-specific background behavior | Background-running copy says the user must quit `Chrome`, although ScriptCat supports multiple browsers. | Confirm implementation behavior, then use `the browser` unless the setting is Chrome-specific. | `enable_background.description` | + +## Preferred Vocabulary + +For new `en-US` strings in the corresponding context, prefer these forms: + +| Prefer | Avoid unless required by a specific context | +| --- | --- | +| `ScriptCat` | `Scriptcat` | +| `User Script`, `Page Script`, `Background Script`, `Scheduled Script` | `Normal Script` or `crontab script` as an unverified replacement type | +| `Subscription` for the object; `Subscribe` for the action | `Subscribe` used as a noun | +| `Settings` for product options; `Configuration` for configuration data | `Config` in user-facing copy without space constraints | +| `Tab` for a browser tab | `Tag` for a browser tab | +| `regular expression` / `regex` | vague `condition` when regex syntax is accepted | +| `Storage API` | renamed API terminology | +| `@require`, `@resource`, `@match`, `@exclude`, `@grant`, `@connect` | translated or misspelled metadata identifiers | + +## Checklist for AI and Contributors + +When adding or editing English copy: + +1. Confirm the target locale is `en-US` and consult this guide plus adjacent existing UI strings. +2. Use the product and feature terms for the same ScriptCat concept; do not merge script types based on similar wording. +3. For context-sensitive terms, check actual behavior, control type, and neighboring text before editing. +4. Preserve technical terms, product capitalization, metadata identifiers, tags, interpolation values, and URLs. +5. Treat `en-US` as source copy for other locales: do not introduce awkward grammar, noun/verb ambiguity, or untranslated type distinctions. +6. Address review targets only with a scoped change that also checks related notifications, tooltips, and labels. +7. Before delivery, search newly edited English text for inconsistent type naming, `Subscribe` used as a noun, browser tabs called tags, and modified identifiers. diff --git a/docs/terminology-ja-JP.md b/docs/terminology-ja-JP.md new file mode 100644 index 000000000..8a28d1981 --- /dev/null +++ b/docs/terminology-ja-JP.md @@ -0,0 +1,128 @@ +# 日本語(ja-JP)用語・UI 文言ガイドライン + +本書は、ScriptCat の日本語(`ja-JP`)UI およびドキュメントで使用する用語と UI 文言の基準です。日本語の文言を翻訳または修正する際は、日本語として自然で、製品 UI として一貫した表現を使用します。 + +用例の参照元:`src/locales/ja-JP/translation.json`、`docs/README_ja.md` + +## 外来語表記の基準 + +個別に本書または製品用語として指定していない外来語は、最新の JIS に沿う表記を既定とします。現時点で参照する基準は `JIS Z 8301:2019` であり、同規格の外来語表記は主として内閣告示第二号「外来語の表記」(平成3年6月28日)によります。 + +- 語末の `-er`、`-or`、`-ar` などに対応する長音は、原則として長音符号 `ー` を付けます。例:`サーバー`、`ユーザー`、`エディター`。 +- 本書で固定している製品名、API 名、第三者サービス名、コード上の識別子は、一般的な外来語表記への機械的置換対象にしません。 +- 既存の `ja-JP` 文言がこの原則と異なる場合でも、本書の追加だけを理由に直ちに変更しません。意味、UI の表示箇所、既存の利用実績を確認する後日の監査対象とします。 + +参照: + +- [`JIS Z 8301:2019`(日本規格協会)](https://webdesk.jsa.or.jp/books/W11M0090/index/?bunsyo_id=JIS+Z+8301%3A2019) +- [文化庁「外来語の表記」(平成3年内閣告示第二号)](https://www.bunka.go.jp/kokugo_nihongo/sisaku/joho/joho/kijun/naikaku/gairai/index.html) + +## 基本方針 + +1. 日本語 UI として自然で、簡潔に操作内容が伝わる文言を使用します。 +2. 製品内ですでに確立しているスクリプト種別、機能名、技術用語を維持します。 +3. 単語だけを見て一括置換せず、機能、原文の意味、周辺の UI 文言を確認します。 +4. placeholder、HTML/React タグ、i18next の補間形式、`@grant`、`@match`、`@exclude` などの識別子は変更しません。 +5. 個別指定のない外来語を新たに導入する場合は、上記の外来語表記基準に従います。 +6. 本書に記載した key は現在の用例であり、同じ機能・同じ意味の新規文言には同じ用語原則を適用します。 +7. 現行翻訳に複数の表現がある場合は、監査が完了するまで新しい統一ルールを推測して導入しません。 +8. UI ラベルは短く明確にし、動作の詳細や注意事項は説明文またはツールチップで補います。 + +## 分類 + +| 分類 | 扱い | +| --- | --- | +| **A. 製品・機能の標準用語** | 同じ機能を示す文言では、現行の用語を優先して使用します。 | +| **B. UI 操作・状態の標準表現** | ボタン、メニュー、列名、状態表示などで現在採用されている表現です。 | +| **C. 文脈を確認する用語** | 用途により語が変わるため、自動置換しません。 | +| **D. 固定して扱う技術用語** | 技術的な意味を保つため、別表現へ安易に変更しません。 | +| **E. 後日レビュー対象** | 現行ファイルに複数表現があるため、現時点では統一を強制しません。 | + +## A. 製品・機能の標準用語 + +| 概念 | 使用する表記 | 現行用例 key | 備考 | +| --- | --- | --- | --- | +| user script | `ユーザースクリプト` | `create_user_script`, `guide_script_list_content` | 一般名として使用します。 | +| Tampermonkey compatible script | `Tampermonkey スクリプト` | `script_status_tooltip` | `ユーザースクリプト` に置き換えて種別情報を失わないでください。 | +| page script | `ページスクリプト` | `page_script`, `guide_script_list_enable_content` | ページ上で動作するスクリプト種別です。 | +| background script | `バックグラウンドスクリプト` | `create_background_script`, `background_script`, `enable_background.description` | 実行方式を示す製品用語です。 | +| scheduled script | `スケジュールスクリプト` | `create_scheduled_script`, `scheduled_script`, `scheduled_script_description_title` | 定時実行のスクリプト種別です。 | +| ScriptCat extension | `ScriptCat拡張機能` | `start_guide_title`, `ext_update_notification` | locale ファイルの現行表記を基準とします。 | +| script center | `スクリプトセンター` | `guide_script_list_title`, `guide_script_list_content` | README にも使用例があります。 | +| sync deletion state | `削除状態を同期` / `スクリプトの削除状態を同期` | `sync_delete`, `notification.script_sync_delete` | 削除操作そのものではなく、削除済み状態を同期する機能です。 | + +## B. UI 操作・状態の標準表現 + +| 概念 | 使用する表記 | 現行用例 key | 備考 | +| --- | --- | --- | --- | +| create | `新しい...を作成` / `作成` | `create_script`, `create_background_script`, `create_success_note` | ボタンでは短く、説明文では目的語を補います。 | +| save / save as | `保存` / `名前を付けて保存` | `save`, `save_as`, `save_success` | 現行 UI と揃えます。 | +| import / export | `インポート` / `エクスポート` | `import`, `export`, `import_file`, `export_file` | 現行の外来語表記を維持します。 | +| install | `インストール` | `install_script`, `install_success`, `install_failed` | 現行 UI と揃えます。 | +| run / runtime | `実行` / `ランタイム` | `run`, `running`, `runtime`, `script_run_at.title` | `runtime` は `ランタイム` を維持します。 | +| enable / disable | `有効` / `無効`、操作文では `有効にする` / `無効にする` | `enable`, `disable`, `enable_script`, `enable_background.title`, `in_use`, `sync_system_closed` | 状態表示には `有効` / `無効` を優先します。 | +| settings | `設定` | `settings`, `script_setting.title`, `editor_config` | 現行 UI と揃えます。 | +| permission | `権限` / `許可` | `permission`, `permission_management`, `allow_once` | 権限の種類は `権限`、許可する操作は `許可` を使用します。 | +| connection | `接続` | `connect`, `connection_success`, `sync_system_connect_failed` | 状態を表す `closed` は機能の意味に応じて訳します。 | +| synchronization | `同期` | `script_sync`, `sync_status`, `guide_setting_sync_title` | 対象がある場合は `削除状態を同期` のように対象を明示します。 | +| restore | `復元` | `restore`, `restore_default_values` | 現行 UI と揃えます。 | +| load / reload | `読み込み` / `再読み込み` | `loading`, `install_page_loading`, `click_to_reload` | 現行 UI と揃えます。 | +| tabs | `タブ` | `close_current_tab`, `script_run_env.all`, `script_run_env.normal-tabs` | 現行の外来語表記を維持します。 | +| interface display | `表示` / `非表示` | `badge_type_none`, `editor.show_script_list`, `editor.hide_script_list` | 表示状態および表示操作に使用します。 | +| action / operation | `操作` | `action`, `operation`, `guide_script_list_action_title` | UI の列名、操作欄、メニュー文脈では `操作` を使用します。 | +| work in progress | `開発中` | `under_construction` | ソフトウェアの機能状態を示します。 | +| silent update | `サイレントで更新する` | `silent_update_non_critical_changes` | 通知を抑えた更新を示す現行表記です。 | +| issue report | `バグ報告 / 問題のフィードバック` | `report_issue` | 読みやすい区切りを維持します。 | + +## C. 文脈を確認する用語 + +| 概念 | 現行表記 | 判断基準 | 現行用例 key | +| --- | --- | --- | --- | +| local / cloud | `ローカル` / `クラウド` | 端末上の保存先、作成元、インポート元は `ローカル`、同期先は `クラウド` を使用します。 | `local`, `cloud`, `source_local_script`, `local_creation`, `guide_tools_backup_content` | +| directory / path | `ディレクトリ` / `パス` | ファイルシステムを扱う開発機能では、現行の `ディレクトリ` を維持します。一般向け機能へ拡大する場合は別途確認します。 | `open_directory`, `open_backup_dir`, `script_operation_description`, `watch_file_description` | +| panel / console | `パネル` / `コンソール` | `panel` は `パネル`、開発者ツールの console は `コンソール` とし、相互に置換しません。 | `background_script_description`, `build_success_message` | +| check / confirm | `チェック` / `確認` | 更新確認の UI には両表現が現存します。新しい文言では周辺 UI に合わせ、統一はレビュー後に行います。 | `check_update`, `updatepage.main_header`, `status_checking_updates` | +| source | `ソース` / `インストール元` | 外部リソースや出所一般は `ソース`、導入元を明示する欄では `インストール元` を使用しています。 | `source`, `install_source`, `install_from_legitimate_sources_warning` | +| query / filter | `検索` / `絞り込み` / `クエリ` | ログ検索 UI の操作名は `検索`、結果を条件で狭める説明は `絞り込み` を優先します。API や問い合わせ言語など技術文脈では `クエリ` を使用できます。 | `query`, `enter_filter_conditions`, `filtered_logs` | +| match / exclude | `対象` / `除外`、ラベルでは `対象サイト(@match)` / `除外サイト(@exclude)` | ユーザー向け操作では現行の `対象` / `除外` を優先します。`@match` / `@exclude` は識別子として保持します。現行の `マッチ` 文言は後日レビュー対象です。 | `add_match`, `add_exclude`, `website_match`, `website_exclude`, `match` | +| storage access / operation | `ストレージにアクセス` / `ストレージ` | 許可ダイアログは一般のファイルストレージへのアクセス確認であり、同期機能に限定しません。タイトルでは対象への `アクセス` を明確にし、説明文で具体的操作を補います。 | `script_operation_title`, `script_storage`, `storage_api` | + +## D. 固定して扱う技術用語 + +| 英語概念 | 現行表記 | 現行用例 key | 理由 | +| --- | --- | --- | --- | +| regular expression | `正規表現` | `search_regex` | 日本語の開発用語として定着しており、別表記へ変更しません。 | +| cron expression | `cron 式` | `cron_invalid_expr`, `error_cron_invalid` | cron の入力エラーでは現行の短い表記を維持します。 | +| expression(入力・エラー文言) | `式` | `value_export_expression`, `cookie_export_expression`, `expression_format_error` | 入力欄と形式エラーでは現行の `式` を維持します。スケジュール説明のラベルは後日レビュー対象です。 | +| watch file changes | `監視` | `watch_file_description`, `watch_file`, `stop_watch_file` | ファイル変更の watch 機能は `監視` として統一されています。 | +| metadata declaration | `宣言` | `error_metadata_line_duplicated` | metadata 行の declaration を示す技術用語です。 | +| storage | `ストレージ` | `script_storage`, `storage_api`, `script_operation_title` | API・保存領域の機能名として使用します。 | +| background execution | `バックグラウンド実行` | `enable_background.title`, `enable_background.description` | バックグラウンドスクリプトと関連する機能名として維持します。 | +| ESLint / VSCode / API names | 原文の固有名を維持 | `enable_eslint`, `eslint_rules`, `vscode_url`, `storage_api` | 製品名・API 名は翻訳せず、必要に応じて周辺文言のみ調整します。 | + +## E. 後日レビュー対象 + +以下は現行翻訳を否定するものではありません。既存ファイル内に複数の表記または意味確認が必要な箇所があるため、後日の日本語レビューで確認します。本書の作成だけを理由に変更しません。 + +| 対象 | 現行の状況 | 現行用例 key | +| --- | --- | --- | +| subscription | `サブスクライブ` と `サブスクリプション` が使用されています。機能名としてどちらを採用するか確認が必要です。 | `subscribe`, `subscribe_url`, `subscribe_source_tooltip`, `notification.subscribe_update` | +| expression label | 多くの入力・エラーは `式` ですが、スケジュール説明には `表現` が使用されています。画面上の意味を確認してから統一を検討します。 | `scheduled_script_description_description_expr`, `cron_invalid_expr`, `expression_format_error` | +| panel operation availability | `background_script_description` は `パネルで手動制御` と明記されていますが、`scheduled_script_description_title` は手動操作の場所を省略しています。機能仕様を確認してから調整します。 | `background_script_description`, `scheduled_script_description_title` | +| documentation link locale | locale 文言内のドキュメントリンクに `/en/` または別 locale の URL が含まれています。利用可能な日本語ページを確認してから変更します。 | `develop_mode_guide`, `allow_user_script_guide`, `guide_script_list_action_content`, `import_script_placeholder` | +| 外来語の語末長音 | 外来語表記の既定では長音符号を付けますが、現行文言に `エディタ`、`エディタ設定` など既存表記があります。製品内での統一範囲を確認してから変更します。 | `editor_config`, `editor_type_definition`, `editor_config_description`, `editor_type_definition_description`, `editor_config_reset`, `editor_config_saved`, `editor_config_format_error`, `editor_type_definition_reset`, `editor_type_definition_saved` | +| match 表記 | 操作ラベルは `対象` / `除外` ですが、説明文や一部ラベルに `マッチ` が使用されています。UI 上の概念名としてどちらを採用するか確認してから統一します。 | `match`, `after_deleting_match_item`, `confirm_delete_match`, `add_match`, `website_match` | + +## AI・コントリビューター向けチェックリスト + +日本語の文言を追加または修正する場合: + +1. 対象 locale が `ja-JP` であることを確認し、まず本書と既存の近接文言を確認してください。 +2. 同じ機能の既存文言がある場合は、「製品・機能の標準用語」と「UI 操作・状態の標準表現」を優先してください。 +3. 「文脈を確認する用語」は、英語原文、表示場所、ユーザー操作を確認してから選択してください。 +4. 「固定して扱う技術用語」は、明確なレビュー判断なしに別表現へ変更しないでください。 +5. 個別指定がない新規の外来語は、`JIS Z 8301:2019` が主として参照する「外来語の表記」に沿って表記してください。 +6. 「後日レビュー対象」は、個別の翻訳変更と同時に根拠を確認できる場合のみ統一してください。 +7. placeholder、HTML/React タグ、i18next 補間、URL、コード識別子を文言整理だけを理由に壊さないでください。 +8. UI ラベルを変更する場合は、同じ概念の通知、ツールチップ、説明文も確認してください。 +9. `@match`、`@exclude`、`@grant` などのメタデータ識別子は翻訳せず、必要であれば日本語ラベルに併記してください。 diff --git a/docs/terminology-ru-RU.md b/docs/terminology-ru-RU.md new file mode 100644 index 000000000..20564b52a --- /dev/null +++ b/docs/terminology-ru-RU.md @@ -0,0 +1,97 @@ +# Руководство по терминологии и текстам интерфейса ru-RU + +Этот документ задает терминологию для русского (`ru-RU`) интерфейса и документации ScriptCat. Его цель - сохранять различия между возможностями продукта, использовать естественные для интерфейса формулировки и не повреждать технические идентификаторы при дальнейшей локализации. + +Проверенные источники употребления: `src/locales/ru-RU/translation.json`, `docs/README_RU.md` + +## Основные принципы + +1. Используйте краткие и понятные формулировки на русском языке, явно обозначающие действие или состояние. +2. Сохраняйте различия между `Пользовательский скрипт`, `Скрипт страницы`, `Фоновый скрипт` и `Скрипт по расписанию`; это разные типы продукта. +3. Не выполняйте глобальную замену слов только из-за похожего перевода. Сначала проверяйте функцию, место в интерфейсе и контекст фразы. +4. Сохраняйте точный технический смысл терминов `регулярное выражение`, `выражение cron`, `хранилище`, а также идентификаторов `@match`, `@exclude`, `@grant` и `@connect`. +5. Не изменяйте placeholders, HTML/React-теги, интерполяцию i18next, URL и идентификаторы метаданных в рамках языкового редактирования. +6. Указанные ниже ключи фиксируют текущее употребление или известные точки проверки; те же правила относятся к будущим строкам с тем же смыслом. + +## Категории + +| Категория | Назначение | +| --- | --- | +| **A. Термины продукта и функций** | Названия возможностей ScriptCat и типов скриптов. | +| **B. Действия и состояния интерфейса** | Предпочтительные формулировки для элементов управления и сообщений. | +| **C. Термины, зависящие от контекста** | Слова, выбор которых требует проверки конкретной функции. | +| **D. Сохраняемые технические термины** | Термины и идентификаторы, техническое значение которых нельзя терять. | +| **E. Темы для последующей проверки** | Уже существующие формулировки, требующие отдельного прохода. | + +## A. Термины продукта и функций + +| Понятие | Предпочтительная формулировка | Примеры ключей | Примечание | +| --- | --- | --- | --- | +| ScriptCat browser extension | `Расширение ScriptCat` | `start_guide_title`, `ext_update_notification` | Название продукта писать как `ScriptCat`. | +| generic user script | `Пользовательский скрипт` | `create_user_script`, `guide_script_list_content` | Общее название пользовательского скрипта. | +| Tampermonkey-compatible script type | `Скрипт Tampermonkey` | `script_status_tooltip` | Не заменять общим названием, если важна совместимость. | +| page script | `Скрипт страницы` | `page_script`, `foreground_page_script_tooltip` | Выполняется на указанных страницах. | +| background script | `Фоновый скрипт` | `create_background_script`, `background_script` | Тип скрипта, выполняемого в фоне. | +| scheduled script | `Скрипт по расписанию` | `create_scheduled_script`, `scheduled_script` | Предпочтительно для нового текста; сохраняет смысл планового запуска. | +| script synchronization | `Синхронизация скриптов` | `script_sync`, `sync_status` | Для удаления следует уточнять синхронизацию состояния удаления. | +| subscription | `Подписка` | `subscribe_url`, `install_subscribe`, `subscribe_import_progress` | `Подписаться` использовать только для действия. | +| script browsing destination / gallery / market | `Хранилище скриптов` / `Галерея скриптов` / `Магазин скриптов` | `script_gallery`, `guide_script_list_title`, README | В документации `Хранилище скриптов` обозначает переход к `scriptcat.org/ru/search`; для UI выбирать название фактического раздела назначения. | + +## B. Действия и состояния интерфейса + +| Понятие | Предпочтительная формулировка | Примеры ключей | Примечание | +| --- | --- | --- | --- | +| create | `Создать` | `create_script`, `create_background_script` | При необходимости указывать объект действия. | +| save / save as | `Сохранить` / `Сохранить как` | `save`, `save_as` | Стандартные команды интерфейса. | +| import / export | `Импорт` / `Экспорт`; в предложениях `импортировать` / `экспортировать` | `import`, `export`, `import_file`, `export_file` | Форму выбирать по роли строки. | +| install / update | `Установить` / `Обновить` | `install_script`, `update_script` | При необходимости уточнять скрипт или подписку. | +| run / runtime | `Запустить` / `Время выполнения` | `run`, `runtime`, `log_title` | Для журнала подходит `Журнал выполнения`. | +| enable / disable | `Включить` / `Выключить`; состояния `Включено` / `Выключено` | `enable`, `disable`, `updatepage.enabled` | Не смешивать с открытием и закрытием UI. | +| settings | `Настройки` | `settings`, `script_setting.title` | Для параметров продукта. | +| permission | `Разрешение` / `Разрешения` | `permission`, `request_permission` | Для прав доступа скрипта. | +| connect / sync | `Подключить` / `Синхронизировать` | `connect`, `script_sync` | Подключение сервиса и синхронизация данных различаются. | +| directory | `Папка` / `Каталог` | `open_backup_dir`, `open_directory` | В пользовательском интерфейсе естественнее `папка`; технический контекст может требовать `каталог`. | +| browser tab | `Вкладка` | `close_current_tab`, `script_run_env.all` | Для browser tab использовать этот термин. | + +## C. Термины, зависящие от контекста + +| Понятие | Возможная формулировка | Правило выбора | Примеры ключей | +| --- | --- | --- | --- | +| local / cloud | `Локальный` / `Облачный`, `Облако` | Выбирать по тому, описывается ли источник, место хранения или назначение синхронизации. | `local`, `cloud`, `source_local_script` | +| panel / console | `панель` / `консоль` | Панель управления продуктом не называть консолью разработчика. | `background_script_description`, `build_success_message` | +| source | `Источник`, `Источник установки`, `Источник подписки` | Называть объект, который предоставляет источник. | `source`, `install_source`, `subscribe_source_tooltip` | +| storage | `Хранилище`, `пространство хранения`, `API хранилища` | Различать данные скрипта, настроенное место хранения и API. | `script_storage`, `script_operation_description`, `storage_api` | +| sync deletion | `Синхронизировать состояние удаления` / `Синхронизировать удаления` | Выбрать после подтверждения поведения функции. | `sync_delete`, `sync_delete_desc`, `notification.script_sync_delete` | + +## D. Сохраняемые технические термины + +| Понятие | Использовать | Примеры ключей | Причина | +| --- | --- | --- | --- | +| regular expression | `регулярное выражение` | `search_regex` | Стандартный термин разработки. | +| cron expression | `выражение cron` | `cron_invalid_expr`, `error_cron_invalid` | Точно указывает на синтаксис расписания. | +| expression | `выражение` | `value_export_expression`, `expression_format_error` | Сохраняет технический смысл введенного выражения. | +| watch file changes | `Отслеживать файл` / `Остановить отслеживание` | `watch_file`, `stop_watch_file` | Описывает длительное наблюдение за изменениями файла. | +| metadata declaration | `объявление` | `error_metadata_line_duplicated` | Соответствует синтаксису метаданных. | +| product/API identifiers | Сохранять `ESLint`, `VSCode`, `Cookie`, `GM API`, `@match`, `@exclude`, `@grant`, `@connect`, `@resource`, `@require` | `enable_eslint`, `vscode_url`, `confirm_operation_description`, `script_resource_tooltip` | Имена и идентификаторы должны оставаться узнаваемыми. | + +## E. Темы для последующей проверки + +Эти пункты описывают имеющиеся расхождения. Создание руководства само по себе не меняет `translation.json`; исправления должны выполняться отдельной проверяемой правкой. + +| Тема | Текущее состояние | Предпочтительное направление | Примеры ключей | +| --- | --- | --- | --- | +| scheduled script naming | Используются как `Скрипт по расписанию`, так и `Запланированный скрипт`. | После проверки экранов унифицировать термин продукта как `Скрипт по расписанию`, если это соответствует назначению типа. | `create_scheduled_script`, `scheduled_script` | +| subscription as object/action | Действие и объект могут встречаться в близких строках. | Для объекта использовать `Подписка`, для кнопки действия - `Подписаться`. | `subscribe`, `subscribe_url`, `install_subscribe` | +| documentation link locale | Русские строки могут вести на англоязычные страницы документации. | Менять ссылки только после подтверждения доступной русской страницы. | `guide_script_list_content`, `develop_mode_guide` | +| metadata identifier | В подсказках ресурсов следует подтвердить использование `@require`, а не ошибочного варианта. | Всегда сохранять действительный metadata-идентификатор `@require`. | `script_resource_tooltip` | + +## Контрольный список для AI и участников + +При добавлении или редактировании русского текста: + +1. Убедитесь, что целевая локаль - `ru-RU`, и проверьте это руководство вместе с соседними строками интерфейса. +2. Сохраняйте различия типов скриптов и применяйте одинаковые названия для одной функции. +3. Для контекстно-зависимых терминов проверяйте фактическое поведение и место строки в UI. +4. Не изменяйте технические термины, placeholders, теги, интерполяцию, URL и metadata-идентификаторы. +5. Не превращайте темы последующей проверки в глобальные замены без отдельной проверки поведения. +6. Перед передачей результата проверьте новые и измененные строки на смешение типов скриптов, подписки как объекта и измененные идентификаторы. diff --git a/docs/terminology-vi-VN.md b/docs/terminology-vi-VN.md new file mode 100644 index 000000000..82c8955f3 --- /dev/null +++ b/docs/terminology-vi-VN.md @@ -0,0 +1,98 @@ +# Hướng dẫn thuật ngữ và nội dung giao diện vi-VN + +Tài liệu này quy định thuật ngữ dùng cho giao diện và tài liệu tiếng Việt (`vi-VN`) của ScriptCat. Mục đích là giữ rõ các khái niệm sản phẩm, dùng câu chữ tự nhiên trong giao diện và bảo toàn các định danh kỹ thuật khi tiếp tục bản địa hóa. + +Nguồn sử dụng đã kiểm tra: `src/locales/vi-VN/translation.json` + +## Nguyên tắc + +1. Dùng câu chữ tiếng Việt ngắn gọn, tự nhiên và nêu rõ thao tác hoặc trạng thái. +2. Giữ riêng các loại `script người dùng`, `script trang`, `script nền` và `script hẹn giờ`; không gộp chúng chỉ vì đều là script. +3. Không thay thế từ hàng loạt theo mặt chữ. Cần kiểm tra tính năng, vị trí giao diện và ngữ cảnh đầy đủ. +4. Giữ đúng ý nghĩa kỹ thuật của `regex`, `biểu thức cron`, `lưu trữ` và các định danh như `@match`, `@exclude`, `@grant`, `@connect`. +5. Không thay đổi placeholder, thẻ HTML/React, nội suy i18next, URL hoặc định danh metadata trong một lần chỉnh sửa câu chữ. +6. Các key liệt kê dưới đây ghi lại cách dùng hiện tại hoặc điểm cần rà soát; quy tắc tương tự áp dụng cho chuỗi mới cùng ý nghĩa. + +## Phân loại + +| Nhóm | Cách dùng | +| --- | --- | +| **A. Thuật ngữ sản phẩm và tính năng** | Tên các khả năng của ScriptCat và các loại script. | +| **B. Thao tác và trạng thái giao diện** | Cách viết ưu tiên cho nút, nhãn và thông báo. | +| **C. Thuật ngữ phụ thuộc ngữ cảnh** | Từ cần kiểm tra tính năng trước khi chọn cách dịch. | +| **D. Thuật ngữ kỹ thuật cần giữ** | Thuật ngữ và định danh phải giữ đúng ý nghĩa kỹ thuật. | +| **E. Điểm cần rà soát sau** | Chuỗi hiện tại có sự không thống nhất hoặc cần xác nhận ngữ cảnh. | + +## A. Thuật ngữ sản phẩm và tính năng + +| Khái niệm | Cách viết ưu tiên | Key ví dụ hiện tại | Ghi chú | +| --- | --- | --- | --- | +| ScriptCat browser extension | `tiện ích ScriptCat` | `start_guide_title`, `ext_update_notification` | Giữ tên sản phẩm là `ScriptCat`. | +| generic user script | `script người dùng` | `create_user_script`, `guide_script_list_content` | Dùng cho khái niệm userscript chung. | +| Tampermonkey-compatible script type | `script Tampermonkey` | `script_status_tooltip` | Không rút gọn thành loại script chung nếu cần giữ ý tương thích. | +| page script | `script trang` | `page_script`, `foreground_page_script_tooltip` | Script chạy trên các trang được chỉ định. | +| background script | `script nền` | `create_background_script`, `background_script` | Loại script chạy nền của sản phẩm. | +| scheduled script | `script hẹn giờ` | `create_scheduled_script`, `scheduled_script` | Dùng thay cho việc giới thiệu thêm tên `script crontab`. | +| script synchronization | `đồng bộ script` | `script_sync`, `sync_status` | Khi liên quan đến xóa, cần nói rõ trạng thái hoặc thao tác xóa được đồng bộ. | +| subscription | `đăng ký` | `subscribe_url`, `install_subscribe`, `subscribe_import_progress` | Cần phân biệt với thao tác đăng ký bằng ngữ cảnh câu. | +| script gallery / market | `thư viện script` / `chợ script` | `script_gallery`, `guide_script_list_title` | Dùng tên phù hợp với trang đích thực tế. | + +## B. Thao tác và trạng thái giao diện + +| Khái niệm | Cách viết ưu tiên | Key ví dụ hiện tại | Ghi chú | +| --- | --- | --- | --- | +| create | `Tạo` | `create_script`, `create_background_script` | Thêm đối tượng khi nhãn cần rõ nghĩa. | +| save / save as | `Lưu` / `Lưu thành` | `save`, `save_as` | Giữ nhất quán với giao diện hiện tại. | +| import / export | `Nhập` / `Xuất` | `import`, `export`, `import_file`, `export_file` | Dùng cho dữ liệu hoặc tệp theo ngữ cảnh. | +| install / update | `Cài đặt` / `Cập nhật` | `install_script`, `update_script` | Có thể thêm `script` hoặc `đăng ký` để phân biệt. | +| run / runtime | `Chạy` / `Thời gian chạy` | `run`, `runtime`, `log_title` | Dùng cho việc thực thi script. | +| enable / disable | `Bật` / `Tắt`; trạng thái `Đã bật` / `Đã tắt` | `enable`, `disable`, `script_disabled` | Không dùng như thao tác mở hoặc đóng thành phần giao diện. | +| settings | `Cài đặt` | `settings`, `script_setting.title` | Dành cho các tùy chọn sản phẩm. | +| permission | `Quyền` / `Cấp quyền` | `permission`, `confirm_script_operation` | Phân biệt loại quyền và thao tác cho phép. | +| connect / sync | `Kết nối` / `Đồng bộ` | `connect`, `script_sync` | Không gộp trạng thái kết nối với đồng bộ dữ liệu. | +| directory | `Thư mục` | `open_directory`, `open_backup_dir` | Dùng cho thao tác hệ thống tệp. | +| browser tab | `Tab` | `close_current_tab`, `script_run_env.all` | Dùng nhất quán khi nói về tab trình duyệt. | + +## C. Thuật ngữ phụ thuộc ngữ cảnh + +| Khái niệm | Cách viết có thể dùng | Quy tắc chọn | Key ví dụ hiện tại | +| --- | --- | --- | --- | +| local / cloud | `Cục bộ` / `Đám mây` | Dùng cho nguồn, nơi lưu hoặc đích đồng bộ; thêm đối tượng nếu câu chưa rõ. | `local`, `cloud`, `source_local_script` | +| panel / console | `bảng điều khiển` / `console` | Thành phần điều khiển của sản phẩm dùng `bảng điều khiển`; đầu ra công cụ phát triển cần giữ nghĩa console. | `background_script_description`, `build_success_message` | +| source | `Nguồn`, `Nguồn cài đặt`, `Nguồn đăng ký` | Nêu rõ nguồn cung cấp nội dung gì. | `source`, `install_source`, `subscribe_source_tooltip` | +| storage | `Lưu trữ`, `không gian lưu trữ`, `API lưu trữ` | Phân biệt dữ liệu script, vị trí được cấu hình và tên API. | `script_storage`, `script_operation_description`, `storage_api` | +| sync deletion | `Đồng bộ trạng thái xóa` / `Đồng bộ xóa` | Chỉ thống nhất sau khi xác nhận hành vi thực tế của tùy chọn. | `sync_delete`, `sync_delete_desc`, `notification.script_sync_delete` | + +## D. Thuật ngữ kỹ thuật cần giữ + +| Khái niệm | Sử dụng | Key ví dụ hiện tại | Lý do | +| --- | --- | --- | --- | +| regular expression | `regex` / `biểu thức chính quy` | `search_regex` | Thuật ngữ kỹ thuật thông dụng; chọn dạng đầy đủ khi cần giải thích. | +| cron expression | `biểu thức cron` | `cron_invalid_expr`, `error_cron_invalid` | Nêu chính xác cú pháp lịch chạy được chấp nhận. | +| expression | `biểu thức` | `value_export_expression`, `expression_format_error` | Giữ nghĩa kỹ thuật của biểu thức được nhập hoặc đánh giá. | +| watch file changes | `Theo dõi tệp` / `Dừng theo dõi` | `watch_file`, `stop_watch_file` | Mô tả việc theo dõi thay đổi tệp liên tục. | +| metadata declaration | `khai báo` | `error_metadata_line_duplicated` | Tương ứng với cú pháp metadata. | +| product/API identifiers | Giữ `ESLint`, `VSCode`, `Cookie`, `GM API`, `@match`, `@exclude`, `@grant`, `@connect`, `@resource`, `@require` | `enable_eslint`, `vscode_url`, `confirm_operation_description`, `script_resource_tooltip` | Tên sản phẩm và định danh mã phải nhận biết được và chính xác. | + +## E. Điểm cần rà soát sau + +Các mục dưới đây ghi nhận vấn đề đã tồn tại. Việc tạo hướng dẫn không tự thay đổi `translation.json`; mọi sửa đổi nên là một đợt chỉnh riêng có kiểm tra giao diện. + +| Chủ đề | Hiện trạng | Hướng ưu tiên | Key ví dụ hiện tại | +| --- | --- | --- | --- | +| `script` / `tập lệnh` | Hai cách gọi xuất hiện trong cùng luồng giao diện. | Xác nhận giọng điệu sản phẩm rồi thống nhất; với chuỗi mới trong ngữ cảnh hiện đang dùng rộng rãi, ưu tiên `script`. | `installed_scripts`, `create_user_script`, `script_status_tooltip` | +| scheduled script naming | Loại sản phẩm là `script hẹn giờ` nhưng một thông báo dùng `script crontab`. | Dùng `script hẹn giờ` cho cùng loại sản phẩm; chỉ nhắc `cron` khi nói đến biểu thức lịch chạy. | `scheduled_script`, `only_background_scheduled_can_run`, `cron_invalid_expr` | +| identifier and brand capitalization | Có các dạng `scriptcat`, `eslint`, `vscode`, `api`, `Url` trong văn bản hiện tại. | Trong chỉnh sửa có phạm vi rõ ràng, giữ `ScriptCat`, `ESLint`, `VSCode`, `API`, `URL`. | `start_guide_title`, `api_docs`, `enable_eslint`, `vscode_url` | +| metadata identifier | Tooltip tài nguyên ghi `@required`, trong khi metadata dùng `@require`. | Giữ đúng định danh `@require`. | `script_resource_tooltip` | +| documentation link locale | Một số chuỗi tiếng Việt liên kết đến tài liệu `/en/`. | Chỉ đổi khi đã xác nhận có trang tiếng Việt tương ứng. | `guide_script_list_content`, `develop_mode_guide` | + +## Danh sách kiểm tra cho AI và người đóng góp + +Khi thêm hoặc sửa nội dung tiếng Việt: + +1. Xác nhận locale đích là `vi-VN`, rồi đọc hướng dẫn này và các chuỗi giao diện lân cận. +2. Giữ riêng các loại script và dùng cùng thuật ngữ cho cùng một tính năng. +3. Với thuật ngữ phụ thuộc ngữ cảnh, kiểm tra hành vi thực tế và vị trí giao diện trước khi sửa. +4. Giữ nguyên thuật ngữ kỹ thuật, placeholder, thẻ, nội suy, URL và định danh metadata. +5. Không biến các điểm cần rà soát thành thay thế hàng loạt khi chưa kiểm tra phạm vi ảnh hưởng. +6. Trước khi bàn giao, tìm trong nội dung mới hoặc đã sửa để kiểm tra việc trộn `script`/`tập lệnh`, tên script hẹn giờ và các định danh bị thay đổi. diff --git a/docs/terminology-zh-CN.md b/docs/terminology-zh-CN.md new file mode 100644 index 000000000..ed3a261e5 --- /dev/null +++ b/docs/terminology-zh-CN.md @@ -0,0 +1,132 @@ +# zh-CN 术语与界面文案规范 + +本文档是 ScriptCat 简体中文(`zh-CN`)界面与文档的用语依据。翻译或修改简体中文时,目标是让中国大陆用户自然理解,同时保留 ScriptCat 已建立的脚本类型、功能名称和开发者术语。 + +用例参考来源:`src/locales/zh-CN/translation.json`、`docs/README_zh-CN.md` + +作者确认参考:[PR #1421 讨论](https://github.com/scriptscat/scriptcat/pull/1421)。其中 CodFrm 明确确认了 `同步删除`、`同步脚本删除`、`查询`,并建议将存储权限标题写为 `脚本正在尝试访问存储空间`。 + +## 使用原则 + +1. 优先使用简体中文软件界面中常见且清晰的表达,例如 `设置`、`保存`、`加载`、`目录`、`连接`、`扩展`。 +2. 保持产品类型信息:`普通脚本`、`页面脚本`、`后台脚本`、`定时脚本` 表示不同的界面或运行概念,不应仅为了语言统一而互相替换。 +3. 不对单字或词组进行机械式全局替换;先确认英文概念、功能行为、显示位置及相邻文案。 +4. 技术词应保持开发者可识别的含义,例如 `表达式`、`正则表达式`、`监听文件`、`存储 API`。 +5. placeholder、HTML/React 标签、i18next 插值、URL,以及 `@match`、`@exclude`、`@grant`、`@connect` 等代码标识符不得因文案整理而改变。 +6. 表中列出的 key 是当前用例或待审查现状;相同含义的新文案应遵循相同原则。 +7. 当前翻译存在不一致时,本规范可指出建议方向,但不表示应在缺少界面确认的情况下批量修改现有字符串。 + +## 分类说明 + +| 分类 | 用法 | +| --- | --- | +| **A. 产品与功能标准术语** | 同一产品概念应优先复用的名称。 | +| **B. 界面操作与状态标准表达** | 按钮、菜单、字段和状态文案中可直接沿用的表达。 | +| **C. 需结合语境判断的词汇** | 不同功能场景可能需要不同词语,不作自动替换。 | +| **D. 固定保留的技术词** | 为保持技术含义和已有产品约定,不应随意改写。 | +| **E. 后续审查项目** | 当前文件已有混用或表达需要产品语境确认,本次规范不直接修改原翻译。 | + +## A. 产品与功能标准术语 + +| 概念 | 优先使用 | 当前用例 key | 说明 | +| --- | --- | --- | --- | +| ScriptCat browser extension | `脚本猫扩展` | `start_guide_title`, `ext_update_notification` | `扩展` 是浏览器 extension 的标准表达。 | +| generic user script | `用户脚本` | `guide_script_list_content`, `allow_user_script_guide` | 泛指用户脚本能力或浏览器权限。 | +| ordinary / Tampermonkey-compatible script type | `普通脚本` / `普通油猴脚本` | `create_user_script`, `script_status_tooltip`, `script_list.sidebar.normal_script` | 表示产品中的脚本分类;不可仅因泛称为用户脚本而抹去分类信息。 | +| page script | `页面脚本` | `page_script`, `foreground_page_script_tooltip`, `guide_script_list_enable_content` | 表示在指定页面运行的脚本。 | +| background script | `后台脚本` | `create_background_script`, `background_script`, `enable_background.description` | 表示后台运行能力及脚本类型。 | +| scheduled script | `定时脚本` | `create_scheduled_script`, `scheduled_script`, `scheduled_script_description_title` | 表示按计划执行的脚本类型。 | +| ScriptCat script-browsing destination | `脚本站` / `脚本市场` | `script_gallery`, `guide_script_list_title`, `guide_script_list_content`, README | README 将指向 `https://scriptcat.org/search` 的入口称为 `脚本站`;引导界面的脚本发现与安装区域使用 `脚本市场`。按显示位置沿用名称,不自动互换。 | +| script synchronization | `脚本同步` | `script_sync`, `guide_setting_sync_title`, `sync_status` | 与同步相关的功能名称沿用现行产品用语。 | +| deletion synchronization | `同步删除` / `同步脚本删除` | `sync_delete`, `notification.script_sync_delete`, `guide_setting_sync_content` | CodFrm 在 PR #1421 中明确选择此写法;具体行为由右侧帮助说明解释,不在标签中扩写为 `删除状态`。 | +| script subscription | `订阅` / `脚本订阅` | `subscribe`, `subscribe_url`, `subscribe_import_progress` | 对象为订阅,不使用英文式动词名词混写。 | + +## B. 界面操作与状态标准表达 + +| 概念 | 优先使用 | 当前用例 key | 说明 | +| --- | --- | --- | --- | +| create | `新建` / `创建` | `create_script`, `create_background_script`, `local_creation` | 新建按钮使用 `新建`;描述创建来源或过程时可用 `创建`。 | +| save / save as | `保存` / `另存为` | `save`, `save_as`, `save_success` | 与现行 UI 一致。 | +| import / export | `导入` / `导出` | `import`, `export`, `import_file`, `export_file` | 与现行 UI 和大陆技术产品习惯一致。 | +| install / update | `安装` / `更新` | `install_script`, `update_script`, `install_success` | 脚本与订阅均沿用同一动词。 | +| run / runtime | `运行` / `运行时` | `run`, `running`, `runtime`, `script_run_at.title` | 脚本执行及 runtime 语境使用现行表达。 | +| enable / disable | `开启` / `关闭`;状态或系统能力可用 `启用` / `禁用` | `enable`, `disable`, `enable_script`, `sync_system_closed`, `enable_background.title` | 操作按钮与配置状态需按句子自然度决定,不机械互换。 | +| settings / configuration | `设置` / `配置` | `settings`, `script_setting.title`, `editor_config`, `user_config` | 产品设置页用 `设置`;配置对象或开发者配置使用 `配置`。 | +| connect / synchronization | `连接` / `同步` | `connect`, `connection_success`, `script_sync`, `sync_system_connect_failed` | 分别表示网络或服务连接、数据同步。 | +| restore / reset | `恢复` / `重置` | `restore`, `restore_default_values`, `reset`, `reset_success` | 恢复备份/默认值与重置操作应按实际行为区分。 | +| load / reload | `加载` / `重新加载` | `loading`, `install_page_loading`, `click_to_reload` | 与现行 UI 一致。 | +| directory | `目录` | `open_directory`, `open_backup_dir` | 文件系统操作的常用表达。 | +| tabs | `标签页` | `close_current_tab`, `close_other_tabs` | 指浏览器 tab 时使用完整的 `标签页`。 | +| log query | `查询` | `query`, `total_logs`, `filtered_logs`, `enter_filter_conditions` | CodFrm 在 PR #1421 中明确偏好 `查询`;日志筛选说明可继续使用 `筛选`。 | + +## C. 需结合语境判断的词汇 + +| 概念 | 可用表达 | 判断标准 | 当前用例 key | +| --- | --- | --- | --- | +| local / cloud | `本地` / `云端` | 保存位置、导入来源与同步目的地使用现行成对表达。 | `local`, `cloud`, `source_local_script`, `guide_tools_backup_content` | +| storage | `存储` / `储存` / `存储空间` | 权限对话框标题使用 CodFrm 建议的 `脚本正在尝试访问存储空间`;API 名使用 `存储 API`。其他既有混用列入审查,不直接全局替换。 | `storage_api`, `script_operation_title`, `script_storage`, `storage_error` | +| panel / console | `面板` / `控制台` | 操作面板使用 `面板`;开发者工具输出位置使用 `控制台`。 | `background_script_description`, `build_success_message` | +| source | `来源` / `安装来源` / `订阅源` | 依据是一般来源、安装出处还是提供订阅内容的源来选择。 | `source`, `install_source`, `subscribe_source_tooltip` | +| permission / authorization | `权限` / `授权` | 能力类别与请求使用 `权限`;给予脚本访问权或已授权项使用 `授权`。 | `permission`, `request_permission`, `permission_management`, `confirm_delete_permission` | +| ordinary / normal / page | `普通脚本` / `页面脚本` | 两者是否同一运行类型需依据产品模型确认,不从字面推定。 | `create_user_script`, `page_script`, `guide_script_list_enable_content` | +| match / exclude | `匹配` / `排除` | 用户可见文案保留 `@match` / `@exclude` 标识符并配以中文说明。 | `website_match`, `website_exclude`, `add_match`, `add_exclude` | + +## D. 固定保留的技术词 + +| 英文概念 | 固定使用 | 当前用例 key | 理由 | +| --- | --- | --- | --- | +| expression | `表达式` | `value_export_expression`, `cookie_export_expression`, `expression_format_error` | 是脚本、条件与导出字段中一致且明确的开发术语。 | +| cron expression | `定时表达式` | `cron_invalid_expr`, `error_cron_invalid`, `scheduled_script_description_description_expr` | 当前界面对 cron 采用用户可理解的产品表述。 | +| regular expression | `正则表达式`;紧凑提示可写 `正则` | `search_regex` | 简体中文开发语境中的通用写法。 | +| watch file changes | `监听文件` / `停止监听` | `watch_file_description`, `watch_file`, `stop_watch_file` | 表达持续监听变化并触发更新的功能含义。 | +| metadata declaration | `声明` | `error_metadata_line_duplicated` | 对应 metadata declaration 的技术含义。 | +| storage API | `存储 API` | `storage_api` | API 名称应与开发文档和平台术语保持一致。 | +| ESLint / VSCode / Cookie / API | 保留原英文名称 | `enable_eslint`, `vscode_url`, `permission_cookie`, `storage_api` | 产品名与 API/平台名称不翻译。 | + +## E. 后续审查项目 + +以下内容记录当前文案中需要确认或统一的地方。本规范的建立本身不要求同时修改 `translation.json`。 + +| 对象 | 当前情况 | 建议方向 | 当前用例 key | +| --- | --- | --- | --- | +| `存储` / `储存` | API 与权限标题使用 `存储` / `存储空间`,脚本数据和迁移文案仍有 `储存`。 | `script_operation_title` 已按作者建议使用 `存储空间`;其余是否统一需单独确认。 | `storage_api`, `script_operation_title`, `script_storage`, `storage_error`, `migration_confirm_message` | +| browser tabs | 关闭操作使用 `标签页`,运行环境使用 `标签`。 | 若 `script_run_env` 表示浏览器 tab,应改用 `所有标签页`、`普通标签页`、`隐身标签页`。 | `close_current_tab`, `script_run_env.all`, `script_run_env.normal-tabs`, `script_run_env.incognito-tabs` | +| script type boundaries | 界面同时存在 `普通脚本`、`普通油猴脚本`、`用户脚本` 和 `页面脚本`。 | 在确认类型模型前保留各自现行含义;新文案不要擅自合并类别。 | `create_user_script`, `script_status_tooltip`, `guide_script_list_content`, `page_script` | +| UI spacing around Latin identifiers | 部分字符串写成 `API文档`、`ESLint规则`、`Cookie域`、`@connect标签`。 | 新增文案优先在中文与英文/标识符之间保留空格,既有内容应在单独审查中统一。 | `api_docs`, `eslint_rules`, `cookie_domain`, `confirm_operation_description` | + +## 常用标准词 + +新增或修改简体中文文案时,在对应语境下可优先采用以下写法。 + +本表只规定 `zh-CN` 输出应使用的词语,不是简繁转换表,也不表示右栏词语在其所属 locale 中有误。右栏以 `zh-TW` 原写法显示,用于识别误混入简体中文文案的繁中界面词。例如浏览器 extension 在 `zh-CN` 中写为 `扩展`,在 `zh-TW` 中可规范地写为 `擴充功能`;两者是各自 locale 的完整术语,并非 `扩展` 到 `扩充` 的逐字替换。 + +| 在 `zh-CN` 中优先使用 | 不要混入 `zh-CN` 文案的 `zh-TW` 写法 | +| --- | --- | +| `导入` / `导出` | `匯入` / `匯出` | +| `文件` / `目录` | `檔案` / `資料夾` | +| `信息` | `資訊` | +| `设置`(产品选项)/ `配置`(配置内容) | `設定` | +| `支持` | `支援` | +| `搜索` | `搜尋` | +| `加载` | `載入` | +| `代码` / `源码` | `程式碼` | +| `账号` | `帳號` | +| `设备` | `裝置` | +| `网络` | `網路` | +| `服务器` | `伺服器` | +| `扩展`(浏览器 extension) | `擴充功能` | +| `鼠标` | `滑鼠` | +| `标签页`(浏览器 tab) | `分頁` | +| `正则表达式` | `正規表達式` | + +## AI 与贡献者检查清单 + +修改包含简体中文的文件时: + +1. 确认目标 locale 是 `zh-CN`,不要从 `zh-TW` 规则机械转换词汇。 +2. 同一功能优先沿用“产品与功能标准术语”和“界面操作与状态标准表达”。 +3. 对“需结合语境判断的词汇”检查实际 UI 行为、英文概念和相邻文案后再选择写法。 +4. 对“固定保留的技术词”保留指定用语和代码标识符。 +5. 对“后续审查项目”仅在能够确认产品含义及影响范围时实施统一。 +6. 保持 placeholder、HTML/React 标记、i18next 插值、URL 及 metadata 标识符原样可用。 +7. 交付前搜索本次新增或修改的简体中文,确认未引入其他 locale 的专属用词或脚本类型混淆。 diff --git a/docs/terminology-zh-TW.md b/docs/terminology-zh-TW.md new file mode 100644 index 000000000..2e87ff526 --- /dev/null +++ b/docs/terminology-zh-TW.md @@ -0,0 +1,124 @@ +# zh-TW 術語與介面文案規範 + +本文件是 ScriptCat 繁體中文(`zh-TW`)介面與文件的用語依據。翻譯或修改繁體中文時,目標是讓台灣使用者自然理解,並維持台灣軟體產品介面常見的語氣。 + +盤點來源:`src/locales/zh-TW/translation.json`、`docs/README_zh-TW.md` + +產品互動參考:[PR #1421 討論](https://github.com/scriptscat/scriptcat/pull/1421)。CodFrm 對相同同步刪除設定確認應以簡短標籤呈現,詳細行為由旁側說明交代;此項產品決策在 `zh-TW` 對應為 `同步刪除` / `同步腳本刪除`,不代表其他 `zh-CN` 詞彙偏好應套用至繁中。 + +## 使用原則 + +1. 避免只有繁體字形、但詞彙與語氣仍偏中國大陸介面的翻譯。 +2. 優先使用台灣產品介面慣用詞,例如 `儲存`、`載入`、`設定`、`裝置`、`分頁`。 +3. 不對詞彙做機械式全域取代;即使表中列有目前的修正案例,也應先確認英文原意、功能和完整句子。 +4. 技術名詞以專案既有術語與台灣開發者常用寫法為準;例如 `expression` 使用 `表達式`,`watch` 使用 `監聽`,不可改為 `運算式` 或 `監看`。 +5. 本文件列出的 `受影響 key` 是目前盤點到的現況,不限制日後在其他文案中套用相同原則。 + +## 分類說明 + +| 分類 | 用法 | +| --- | --- | +| **A. 目前介面應直接修正** | 在表列 UI 語境中已確認應改;除非語境相同,不應擴張為任何句子的禁用詞。 | +| **B. 視語境修正** | 台灣可能使用,但替代詞取決於產品功能或原文意思。 | +| **C. 風格一致性** | 技術上可接受,不一定錯;面向使用者的介面宜優先採用較自然寫法。 | +| **D. 固定保留的技術詞** | 已採用且符合本產品技術語境的詞彙,不應因在地化掃描而替換。 | + +## A. 目前介面應直接修正 + +| 避免使用 | 優先使用 | 目前受影響 key | +| --- | --- | --- | +| `新建` | `新增` / `建立` | `create_user_script`, `create_background_script`, `create_scheduled_script`, `create_script`, `create_success_note` | +| `暫無資料` | `尚無資料` / `目前沒有資料` | `no_data` | +| `通用` | `一般` | `general` | +| `列表` | `清單` | `backup_list`, `editor.show_script_list`, `editor.hide_script_list` | +| `連接` | `連線` | `auto_connect_vscode_service`, `connect`, `connection_success`, `connection_failed`, `sync_system_connect_failed` | +| `應用至` | `套用至` | `apply_to_run_status`, `guide_script_list_apply_to_run_status_title` | +| `每星期` | `每週` | `cron_oncetype.week` | +| `返傭連結` | `分潤連結` | `antifeature_referral_link_description` | +| `訂閱源` | `訂閱來源` | `subscribe_source_tooltip` | +| `展示` | `顯示` | `guide_script_list_apply_to_run_status_content` | +| `懸停` | `滑鼠停留` / `將滑鼠移到...上方` | `guide_script_list_apply_to_run_status_content` | +| `運行` | 腳本用 `執行`;功能或環境用 `運作` | `guide_script_list_action_content`, `script_run_at.title`, `runtime`, `enable_background.title`, `enable_background.prompt_title`, `enable_background.prompt_description` | +| `視圖模式` | `檢視模式` | `guide_script_list_action_content` | +| `其它` | `其他` | `guide_setting_sync_content` | +| `批量` | `批次` | `batch_edit` | +| `代碼` | `程式碼` | `script_code` | +| `回車` | `Enter 鍵` | `input_tags_placeholder` | +| `重覆` | `重複` | `error_metadata_line_duplicated` | +| `加載` | `載入` | `loading` | + +## B. 視語境修正 + +| 目前詞彙 | 建議判斷 | 目前受影響 key | +| --- | --- | --- | +| `目錄` | 指 filesystem directory 的介面動作用 `資料夾`;文章或文件的內容目錄仍用 `目錄`。 | `open_backup_dir`, `open_directory`, `script_operation_description`, `get_backup_dir_url_failed` | +| `恢復` | restore settings/default values 用 `還原`;resume operation 或 recover 依語意使用 `恢復` / `復原`。 | `exclude_on`, `restore_default_values` | +| `拉取` | Git pull 可用 `拉取`;從雲端取得備份或資料的 UI 動作用 `下載` / `擷取` / `同步取得`。 | `pulling_data_from_cloud`, `pull_failed` | +| `保存` / `儲存` | UI 的 save 動作用 `儲存`;保存期限、保存證據或一般敘述仍可使用 `保存`。 | `guide_tools_backup_content` | +| `設備` / `裝置` | 使用者持有、同步或連線的 device 介面用 `裝置`;equipment 或設備管理等語境仍可使用 `設備`。 | `guide_setting_sync_content` | +| `打開` / `開啟` | 按鈕、選單或操作指示優先用 `開啟`;一般敘述中的 `打開` 並非錯誤。 | `open_sidebar` | +| `聲明` / `宣告` | 程式 metadata declaration 使用 `宣告`;政策、立場或正式 statement 仍使用 `聲明`。 | `error_metadata_line_duplicated` | +| `控制面板` / `面板` / `控制台` | 依實際產品元件與英文原文決定。英文為 `panel` 時優先保留 `面板`;只有 console/dashboard 或既定元件名稱才用 `控制台` / `儀表板`。 | `scheduled_script_description_title`, `background_script_description` | +| `查看` | 台灣可用;選單、模式或系統動作可用 `檢視`,開啟工具則可直接寫 `開啟`。 | `guide_script_list_apply_to_run_status_content`, `develop_mode_guide`, `allow_user_script_guide`, `build_success_message`, `ext_update_notification_desc` | +| `退出瀏覽器` | quit/close browser 通常用 `關閉瀏覽器`,必要時可用 `結束瀏覽器`。 | `enable_background.description` | +| `前臺` / `後臺` | foreground/background 用 `前景` / `背景`;frontend/backend 用 `前端` / `後端`;管理系統語境才可能用 `前台` / `後台`。 | `error_script_type_mismatch` | +| `本地` / `本機` | 兩者皆為台灣可用寫法,不應只因 `zh-TW` 在地化而互相取代。`本地` 適合表達 local source / local creation 等與遠端來源相對的概念;`本機` 適合強調目前裝置或與雲端相對的儲存、匯入位置。同一功能流程內應維持一致。 | `source_local_script`, `by_manual_creation`, `local`, `import_by_local`, `import_local_failure`, `import_local_success`, `local_creation`, `sync_delete_desc`, `guide_tools_backup_content` | +| `腳本站` / `腳本網站` / `腳本中心` | README 將指向 `https://scriptcat.org/zh-TW/search` 的入口稱為 `腳本站`;介面另有 `腳本網站` 與用於尋找、安裝腳本的 `腳本中心`。依顯示位置沿用名稱,不自動互換。 | `script_gallery`, `guide_script_list_title`, `guide_script_list_content`, README | +| `查詢` / `搜尋` | 兩者皆可用;紀錄或資料條件查詢的欄位可保留 `查詢`,搜尋動作與正規表達式搜尋使用 `搜尋`。不因 `zh-CN` 對 `查詢` 的偏好而全域統一。 | `query`, `search_regex`, `search_scripts`, `enter_search_value` | +| `同步刪除` / `同步腳本刪除` | 依 CodFrm 對同一設定的產品文案決策,設定標籤與通知標題保留短稱;刪除狀態的傳播行為由說明文字呈現,不在標籤中擴寫。 | `sync_delete`, `notification.script_sync_delete`, `guide_setting_sync_content`, `sync_delete_desc` | +| `腳本同步儲存空間` | 權限對話框標題使用 `儲存空間` 即可;同步用途由周邊功能語境與說明文字交代。 | `script_operation_title`, `script_operation_description` | + +## C. 風格一致性 + +| 目前詞彙 | 介面優先寫法 | 目前受影響 key | 說明 | +| --- | --- | --- | --- | +| `幫助` | `說明` / `協助` | `helpcenter`, `help_translate` | 台灣日常用語可使用 `幫助`;Help Center 建議為 `說明中心`,help translate 建議為 `協助翻譯`。 | +| `更新日誌` | `更新紀錄` / `版本紀錄` | `ext_update_notification_desc` | 技術內容可理解,產品介面以 `紀錄` 較自然。 | +| `腳本個數` | `腳本數量` | `badge_type_script_count` | `個數` 可理解,但介面欄位以 `數量` 較自然。 | +| `普通腳本` / `普通油猴腳本` / `普通標籤` | `一般腳本` / `一般油猴腳本` / `一般分頁` | `create_user_script`, `script_status_tooltip`, `script_run_env.normal-tabs`, `script_list.sidebar.normal_script` | `普通` 可改為較適合分類名稱的 `一般`;但 `油猴` 表示 Tampermonkey 相容腳本類型,不可逕改為語意較廣的 `使用者腳本`。若 `tabs` 指瀏覽器分頁,應使用 `分頁`。 | +| `API文件` / `專案文件` | `API 文件` / `API 說明文件` / `專案文件` | `api_docs`, `project_docs` | `文件` 在台灣技術語境可接受;不要改為偏中國大陸用語的 `文檔`。 | + +## D. 固定保留的技術詞 + +| 英文概念 | 固定使用 | 不使用 | 目前使用 key | 理由 | +| --- | --- | --- | --- | --- | +| `expression` | `表達式` | `運算式` | `value_export_expression`, `cookie_export_expression`, `cron_invalid_expr`, `scheduled_script_description_description_expr`, `expression_format_error`, `search_regex` | `表達式` 是台灣程式開發語境常見用法,也與既有 `正規表達式` 術語一致。將不同 expression 文案改成 `運算式` 會造成同一概念在介面中不一致,且容易讓人誤解為只限數學或計算公式。 | +| `watch`(檔案變動功能) | `監聽` | `監看` | `watch_file_description`, `watch_file`, `stop_watch_file` | 在開發工具中,watch 表示持續監聽檔案變動並觸發更新,與 watcher、事件監聽等技術概念相連。`監聽` 能保持技術意義與現有文案一致;`監看` 雖可理解,但不作為本專案術語。 | + +## 常用標準詞 + +新增或修改繁體中文文案時,以下寫法可在表列語境中直接沿用;表格中的限定說明同樣屬於規範的一部分。 + +本表只規定 `zh-TW` 輸出應使用的詞語,不是簡繁轉換表,也不表示右欄詞語在其他 locale 中有誤。右欄記錄的是不適合混入相同 `zh-TW` 介面語境的寫法,並保留其可能出現在繁中草稿中的字形,方便檢查現有文案;它不是其他 locale 正式詞形的逐項引用。例如瀏覽器 extension 在 `zh-TW` 中寫為 `擴充功能`,而 `zh-CN` 可規範地寫為 `扩展`,兩者並非逐字替換關係。 + +| 在 `zh-TW` 中優先使用 | 不要混入相同 `zh-TW` 介面語境的寫法 | +| --- | --- | +| `匯入` / `匯出` | `導入` / `導出` | +| `檔案` / `資料夾` | `文件`(一般使用者檔案語境)/ `目錄`(filesystem UI 動作) | +| `資訊` | `信息` | +| `設定` | `配置` | +| `支援` | `支持` | +| `搜尋` | `搜索` | +| `載入` | `加載` | +| `程式碼` | `代碼` | +| `帳號` | `賬號` | +| `裝置`(使用者持有、同步或連線的 device) | `設備`(同一 device UI 語境;equipment 語境可保留) | +| `網路` | `網絡` | +| `伺服器` | `服務器` | +| `擴充功能` | `擴展` / `插件`(指瀏覽器 extension 時) | +| `滑鼠` | `鼠標` | +| `分頁` | `標籤`(指瀏覽器 tab 時) | +| `正規表達式` | `正則表達式` / `正規運算式` | +| `表達式` | `運算式`(指程式、排程或匯出 expression 時) | +| `監聽檔案` / `停止監聽` | `監看檔案` / `停止監看` | + +## AI 與貢獻者檢查清單 + +修改包含繁體中文的檔案時: + +1. 確認文字的目標語系是 `zh-TW`,而非只將簡體中文字形轉為繁體。 +2. 針對與表列 UI 語境相同的文案,套用「目前介面應直接修正」與「常用標準詞」。 +3. 遇到「視語境修正」或「風格一致性」詞彙時,檢查功能、英文原文或相鄰文案後再決定。 +4. 遇到「固定保留的技術詞」時,沿用指定寫法,不依一般替換偏好改寫。 +5. 維持既有 placeholder、HTML/React 標記與 i18next 插值格式,不因術語修正而改壞行為。 +6. 交付前重新搜尋本次新增或修改的繁體中文,確認未引入本文件標示應避免的用詞。 diff --git a/src/locales/de-DE/translation.json b/src/locales/de-DE/translation.json index 07c1e776e..825a9c988 100644 --- a/src/locales/de-DE/translation.json +++ b/src/locales/de-DE/translation.json @@ -380,7 +380,7 @@ "access_cookie_content": "Skript versucht auf Website-Cookie-Inhalte zuzugreifen", "confirm_script_operation": "Bitte bestätigen Sie, ob Sie dem Skript erlauben, diese Operation durchzuführen. Cookies sind wichtige Benutzerdaten, bitte autorisieren Sie nur vertrauenswürdige Skripte.", "cookie_domain": "Cookie-Domain", - "script_operation_title": "Skript versucht, auf den Skript-Synchronisierungsspeicher zuzugreifen", + "script_operation_title": "Skript versucht, auf den Speicherplatz zuzugreifen", "script_operation_description": "Bitte bestätigen Sie, ob Sie dem Skript erlauben, diese Operation durchzuführen. Nach der Erlaubnis kann das Skript den von Ihnen eingestellten Speicherplatz bearbeiten. Das Skript erstellt ein app/${dir}-Verzeichnis unter dem Speicherplatz zur Verwendung", "script_permission_content": "Skript", "sync_system_connect_failed": "Synchronisationssystem-Verbindung fehlgeschlagen", diff --git a/src/locales/en-US/translation.json b/src/locales/en-US/translation.json index d0d9b7291..9173d45e0 100644 --- a/src/locales/en-US/translation.json +++ b/src/locales/en-US/translation.json @@ -380,7 +380,7 @@ "access_cookie_content": "The script is attempting to access website cookie content", "confirm_script_operation": "Please confirm if you allow the script to perform this operation. Cookies contain important user data, so only grant access to trusted scripts.", "cookie_domain": "Cookie Domain", - "script_operation_title": "Script is attempting to access script synchronization storage", + "script_operation_title": "Script is attempting to access storage space", "script_operation_description": "Please confirm whether you allow the script to perform this operation. If allowed, the script will be able to access the storage space you have set up and create a directory app/${dir} within it.", "script_permission_content": "Script", "sync_system_connect_failed": "Sync system connection failed", diff --git a/src/locales/ja-JP/translation.json b/src/locales/ja-JP/translation.json index a3ac3677a..ec8a0f213 100644 --- a/src/locales/ja-JP/translation.json +++ b/src/locales/ja-JP/translation.json @@ -380,7 +380,7 @@ "access_cookie_content": "スクリプトがウェブサイトのCookieコンテンツにアクセスしようとしています", "confirm_script_operation": "スクリプトがこの操作を実行することを許可するかどうか確認してください。Cookieは重要なユーザーデータですので、信頼できるスクリプトにのみ許可してください。", "cookie_domain": "Cookieドメイン", - "script_operation_title": "スクリプトが同期ストレージにアクセスしようとしています", + "script_operation_title": "スクリプトがストレージにアクセスしようとしています", "script_operation_description": "スクリプトがこの操作を実行することを許可するかどうか確認してください。許可すると、スクリプトが設定したストレージスペースの操作が許可され、スクリプトはストレージスペース下にapp/${dir}ディレクトリを作成して使用します", "script_permission_content": "スクリプト", "sync_system_connect_failed": "同期システムの接続に失敗しました", @@ -415,7 +415,7 @@ "guide_script_list_update_title": "最終更新", "guide_script_list_update_content": "「最終更新」列ラベルをクリックすると、スクリプトの更新がチェックされます。", "guide_script_list_action_title": "操作", - "guide_script_list_action_content": "操作バーでは、スクリプトの編集、制御スクリプトの実行と終了(バックグラウンドスクリプト)、および設定(UserConfig を参照)にアクセスできます。右側のボタンからは、高度なフィルタリングや表示モードの切り替えにアクセスできます。", + "guide_script_list_action_content": "操作バーでは、スクリプトの編集、スクリプトの実行・停止(バックグラウンドスクリプト)、および設定(UserConfig を参照)にアクセスできます。右側のボタンからは、高度な絞り込みや表示モードの切り替えにアクセスできます。", "guide_tools_title": "常用ツール", "guide_tools_content": "ツールにはバックアップと開発のツールが提供されています", "guide_tools_backup_title": "バックアップ", @@ -423,7 +423,7 @@ "guide_setting_title": "設定", "guide_setting_content": "設定には主に言語、スクリプト同期、更新頻度などの常用設定項目が含まれています", "guide_setting_sync_title": "更新と同期", - "guide_setting_sync_content": "スクリプト同期機能により、このデバイスのスクリプトコンテンツをクラウドに便利に同期できます。複数のデバイスがある場合は、同期削除オプションをチェックしてください。このデバイスでスクリプトが削除されると、クラウドから対応するスクリプトが削除され、他のデバイスのスクリプトも削除されます。", + "guide_setting_sync_content": "スクリプト同期機能により、このデバイスのスクリプトコンテンツをクラウドに便利に同期できます。複数のデバイスがある場合は、「削除状態を同期」オプションを有効にしてください。このデバイスでスクリプトが削除されると、クラウドから対応するスクリプトが削除され、他のデバイスのスクリプトも削除されます。", "auto": "自動", "hide": "非表示", "custom": "カスタム", diff --git a/src/locales/ru-RU/translation.json b/src/locales/ru-RU/translation.json index 22990b40f..7f872aef3 100644 --- a/src/locales/ru-RU/translation.json +++ b/src/locales/ru-RU/translation.json @@ -380,7 +380,7 @@ "access_cookie_content": "Скрипт пытается получить доступ к содержимому cookie сайта", "confirm_script_operation": "Пожалуйста, подтвердите, разрешаете ли вы скрипту выполнить эту операцию. Cookie являются важными пользовательскими данными, обязательно предоставляйте разрешения только доверенным скриптам.", "cookie_domain": "Домен Cookie", - "script_operation_title": "Скрипт пытается получить доступ к хранилищу синхронизации скриптов", + "script_operation_title": "Скрипт пытается получить доступ к пространству хранения", "script_operation_description": "Пожалуйста, подтвердите, разрешаете ли вы скрипту выполнить эту операцию. После разрешения скрипт сможет работать с настроенным вами пространством хранения. Скрипт создаст папку app/${dir} в пространстве хранения для использования", "script_permission_content": "скрипт", "sync_system_connect_failed": "Ошибка подключения к системе синхронизации", diff --git a/src/locales/vi-VN/translation.json b/src/locales/vi-VN/translation.json index f6eaa231a..0e6c9e797 100644 --- a/src/locales/vi-VN/translation.json +++ b/src/locales/vi-VN/translation.json @@ -380,7 +380,7 @@ "access_cookie_content": "Script đang cố gắng truy cập nội dung cookie của trang web", "confirm_script_operation": "Vui lòng xác nhận xem bạn có cho phép script thực hiện thao tác này không. Cookie chứa dữ liệu người dùng quan trọng, vì vậy chỉ cấp quyền truy cập cho các script đáng tin cậy.", "cookie_domain": "Miền cookie", - "script_operation_title": "Script đang cố gắng truy cập bộ nhớ đồng bộ script", + "script_operation_title": "Script đang cố gắng truy cập không gian lưu trữ", "script_operation_description": "Vui lòng xác nhận xem bạn có cho phép script thực hiện thao tác này không. Nếu được phép, script sẽ có thể truy cập không gian lưu trữ bạn đã thiết lập và tạo một thư mục app/${dir} trong đó.", "script_permission_content": "Script", "sync_system_connect_failed": "Kết nối hệ thống đồng bộ thất bại", diff --git a/src/locales/zh-CN/translation.json b/src/locales/zh-CN/translation.json index 4d6a1a100..128975b18 100644 --- a/src/locales/zh-CN/translation.json +++ b/src/locales/zh-CN/translation.json @@ -123,7 +123,7 @@ "disable": "关闭", "name": "名称", "version": "版本", - "apply_to_run_status": "应用至/运行状态", + "apply_to_run_status": "应用于 / 运行状态", "source": "来源", "home": "主页", "sorting": "排序", @@ -380,7 +380,7 @@ "access_cookie_content": "脚本正在尝试访问网站 Cookie 内容", "confirm_script_operation": "请您确认是否允许脚本进行此操作,Cookie 是一项重要的用户数据,请务必只给信任的脚本授权。", "cookie_domain": "Cookie域", - "script_operation_title": "脚本正在尝试访问脚本同步存储", + "script_operation_title": "脚本正在尝试访问存储空间", "script_operation_description": "请您确认是否允许脚本进行此操作,允许后将允许脚本操作你设定的储存空间,脚本会在储存空间下创建一个app/${dir}的目录进行使用", "script_permission_content": "脚本", "sync_system_connect_failed": "同步系统连接失败", @@ -408,14 +408,14 @@ "guide_script_list_content": "可以从脚本市场中安装脚本,脚本猫除了支持用户脚本以外,还支持后台脚本", "guide_script_list_enable_title": "脚本开启", "guide_script_list_enable_content": "脚本需要开启才能使用,页面脚本安装默认开启,后台脚本安装默认关闭", - "guide_script_list_apply_to_run_status_title": "应用至、与运行状态", + "guide_script_list_apply_to_run_status_title": "应用于 / 运行状态", "guide_script_list_apply_to_run_status_content": "脚本运行状态展示,鼠标悬浮至标签可以查看脚本类型", "guide_script_list_sort_title": "排序", "guide_script_list_sort_content": "你可以拖动脚本的标签进行排序", "guide_script_list_update_title": "最后更新", "guide_script_list_update_content": "点击最后更新列标签可以对脚本进行一次检查更新", "guide_script_list_action_title": "操作", - "guide_script_list_action_content": "操作列可以进入脚本编辑、控制脚本的运行停止(后台脚本)、设置UserConfig,操作右侧按钮可以打开高级筛选与切换视图模式", + "guide_script_list_action_content": "操作列可以进入脚本编辑、控制脚本的运行与停止(后台脚本)、设置UserConfig,操作右侧按钮可以打开高级筛选与切换视图模式", "guide_tools_title": "常用工具", "guide_tools_content": "工具中提供了备份和开发的工具", "guide_tools_backup_title": "备份", @@ -423,7 +423,7 @@ "guide_setting_title": "设置", "guide_setting_content": "设置中主要包含了语言、脚本同步、更新频率等常用设置项", "guide_setting_sync_title": "更新与同步", - "guide_setting_sync_content": "脚本同步功能可以方便的将本设备的脚本内容同步至云端,如果有多台设备请勾选同步删除选项,当本设备脚本删除时,会从云端删除对应的脚本,也会将其它设备的脚本删除。", + "guide_setting_sync_content": "脚本同步功能可以方便地将本设备的脚本内容同步至云端,如果有多台设备请勾选同步删除选项,当本设备脚本删除时,会从云端删除对应的脚本,也会将其他设备的脚本删除。", "auto": "自动", "hide": "隐藏", "custom": "自定义", @@ -442,7 +442,7 @@ "allow_user_script_guide": "当前未启用“允许运行用户脚本”,脚本无法正常运行。👉点击查看启用方法", "lower_version_browser_guide": "您的浏览器版本过低,脚本无法正常运行。👉点击了解更多", "click_to_reload": "👉点击重新加载", - "confirm_leave_page": "当前正在编辑状态,跳转其它页面将会丢失当前内容,是否跳转?", + "confirm_leave_page": "当前正在编辑状态,跳转其他页面将会丢失当前内容,是否跳转?", "page_in_blacklist": "当前页面在黑名单中,无法使用脚本", "baidu_netdisk": "百度网盘", "netdisk_unbind": "解除绑定 {{provider}}", diff --git a/src/locales/zh-TW/translation.json b/src/locales/zh-TW/translation.json index ce2248677..8d457f11a 100644 --- a/src/locales/zh-TW/translation.json +++ b/src/locales/zh-TW/translation.json @@ -1,13 +1,13 @@ { "import_link": "連結匯入", "import_link_failure": "連結匯入失敗", - "create_user_script": "新建普通腳本", - "create_background_script": "新建背景腳本", - "create_scheduled_script": "新建排程腳本", + "create_user_script": "新增一般腳本", + "create_background_script": "新增背景腳本", + "create_scheduled_script": "新增排程腳本", "import_by_local": "本機匯入", "import_local_failure": "本機匯入失敗", "import_local_success": "本機匯入成功", - "create_script": "新建腳本", + "create_script": "新增腳本", "user_guide": "使用手冊", "api_docs": "API文件", "development_guide": "開發手冊", @@ -15,7 +15,7 @@ "community_forum": "社群討論區", "external_links": "外部連結", "system_follow": "跟隨系統", - "no_data": "暫無資料", + "no_data": "尚無資料", "installed_scripts": "已安裝腳本", "subscribe": "訂閱", "logs": "紀錄", @@ -24,10 +24,10 @@ "hide_main_sidebar": "摺疊側邊欄", "show_main_sidebar": "展開側邊欄", "guide": "新手指南", - "helpcenter": "幫助中心", - "general": "通用", + "helpcenter": "說明中心", + "general": "一般", "language": "語言", - "help_translate": "幫助翻譯", + "help_translate": "協助翻譯", "script_sync": "腳本同步", "sync_delete": "同步刪除", "sync_delete_desc": "啟用後,腳本刪除時會標記腳本為刪除,其他裝置檢測到刪除狀態後會將腳本刪除;關閉時,會直接刪除本機與雲端的腳本,如果有多台裝置可能出現腳本反覆同步的情況。", @@ -65,8 +65,8 @@ "backup_success": "備份成功", "backup_failed": "備份失敗", "no_backup_files": "沒有備份檔案", - "backup_list": "備份列表", - "open_backup_dir": "開啟備份目錄", + "backup_list": "備份清單", + "open_backup_dir": "開啟備份資料夾", "confirm_delete": "確定刪除", "confirm_delete_backup_file": "確定刪除備份檔案", "confirm_update": "確定更新", @@ -76,14 +76,14 @@ "under_construction": "開發中", "development_tool": "開發工具", "vscode_url": "VSCode網址", - "auto_connect_vscode_service": "自動連接 VSCode 服務", - "connect": "連接", - "connection_success": "連接成功", - "connection_failed": "連接失敗", + "auto_connect_vscode_service": "自動連線 VSCode 服務", + "connect": "連線", + "connection_success": "連線成功", + "connection_failed": "連線失敗", "select_import_script": "請在新頁面中選擇要匯入的腳本", "import_error": "匯入錯誤", - "pulling_data_from_cloud": "正在從雲端拉取資料", - "pull_failed": "拉取失敗", + "pulling_data_from_cloud": "正在從雲端下載資料", + "pull_failed": "下載失敗", "restore": "還原", "log_title": "執行紀錄", "last_5_minutes": "最近5分鐘", @@ -123,7 +123,7 @@ "disable": "停用", "name": "名稱", "version": "版本", - "apply_to_run_status": "應用至/執行狀態", + "apply_to_run_status": "套用至 / 執行狀態", "source": "來源", "home": "首頁", "sorting": "排序", @@ -228,7 +228,7 @@ "gm_api": "GM API", "storage_api": "儲存 API", "use_file_system": "使用的檔案系統", - "open_directory": "開啟目錄", + "open_directory": "開啟資料夾", "account_validation_failed": "帳號資訊驗證失敗", "not_set": "未設定", "in_use": "使用中", @@ -241,7 +241,7 @@ "overwrite_original_value_on_import": "匯入時覆蓋原值", "cookie_export_expression": "Cookie 匯出表達式", "overwrite_original_cookie_on_import": "匯入時覆蓋原值", - "restore_default_values": "恢復預設值", + "restore_default_values": "還原預設值", "get_confirm_error": "取得確認資訊失敗", "confirm_error": "確認失敗", "ignore": "忽略", @@ -270,7 +270,7 @@ "add_new": "新增", "no_operation": "不做操作", "enable_script": "開啟腳本", - "local_creation": "本機建立", + "local_creation": "本地建立", "import_success": "匯入成功", "install_script": "安裝", "update_script": "更新", @@ -292,13 +292,13 @@ "hour": "{{next}} (每小時執行一次)", "day": "{{next}} (每天執行一次)", "month": "{{next}} (每月執行一次)", - "week": "{{next}} (每星期執行一次)" + "week": "{{next}} (每週執行一次)" }, "cron_invalid_expr": "錯誤的排程表達式", - "scheduled_script_description_title": "這是一個排程腳本,啟用後將在特定時間自動執行,並可在控制面板中手動控制。", + "scheduled_script_description_title": "這是一個排程腳本,啟用後將在特定時間自動執行,並可在面板中手動控制。", "scheduled_script_description_description_expr": "排程任務表達式:", "scheduled_script_description_description_next": "最近一次執行時間:", - "background_script_description": "這是一個背景腳本,啟用後將在瀏覽器開啟時自動執行一次,並可在控制面板中手動控制。", + "background_script_description": "這是一個背景腳本,啟用後將在瀏覽器開啟時自動執行一次,並可在面板中手動控制。", "install_success": "安裝成功", "install": { "update_success": "更新成功" @@ -348,7 +348,7 @@ "scheduled_script": "排程腳本", "install_from_legitimate_sources_warning": "請從合法來源安裝腳本!未知的腳本可能會侵犯您的隱私或進行惡意操作!", "antifeature_referral_link_title": "推薦連結", - "antifeature_referral_link_description": "此腳本會修改或重新導向至作者的返傭連結", + "antifeature_referral_link_description": "此腳本會修改或重新導向至作者的分潤連結", "antifeature_ads_title": "附帶廣告", "antifeature_ads_description": "此腳本會在您存取的頁面上插入廣告", "antifeature_payment_title": "付費腳本", @@ -360,8 +360,8 @@ "antifeature_tracking_title": "資訊追蹤", "antifeature_tracking_description": "此腳本會追蹤您的使用者資訊", "script_info_load_failed": "腳本資訊載入失敗!", - "script_status_tooltip": "可以控制腳本開啟狀態,普通油猴腳本預設開啟,背景腳本、排程腳本預設關閉", - "subscribe_source_tooltip": "這是一個訂閱源,當你開啟訂閱後會自動安裝訂閱的腳本", + "script_status_tooltip": "可以控制腳本開啟狀態,一般油猴腳本預設開啟,背景腳本、排程腳本預設關閉", + "subscribe_source_tooltip": "這是一個訂閱來源,當你開啟訂閱後會自動安裝訂閱的腳本", "get_script": "取得腳本", "report_issue": "BUG / 問題回報", "project_docs": "專案文件", @@ -380,10 +380,10 @@ "access_cookie_content": "腳本正在嘗試存取網站 Cookie 內容", "confirm_script_operation": "請您確認是否允許腳本進行此操作,Cookie 是一項重要的使用者資料,請務必只給信任的腳本權限。", "cookie_domain": "Cookie網域", - "script_operation_title": "腳本正在嘗試存取腳本同步儲存空間", - "script_operation_description": "請您確認是否允許腳本進行此操作,允許後將允許腳本操作您設定的儲存空間,腳本會在儲存空間下建立一個app/${dir}的目錄進行使用", + "script_operation_title": "腳本正在嘗試存取儲存空間", + "script_operation_description": "請您確認是否允許腳本進行此操作,允許後將允許腳本操作您設定的儲存空間,腳本會在儲存空間下建立一個 app/${dir} 的資料夾進行使用", "script_permission_content": "腳本", - "sync_system_connect_failed": "同步系統連接失敗", + "sync_system_connect_failed": "同步系統連線失敗", "sync_system_closed": "同步已停用", "sync_system_closed_description": "同步功能已停用,請重新設定", "auth_type": "驗證類型", @@ -408,22 +408,22 @@ "guide_script_list_content": "可以從腳本中心中安裝腳本,腳本貓除了支援使用者腳本外,還支援背景腳本", "guide_script_list_enable_title": "腳本開啟", "guide_script_list_enable_content": "腳本需要開啟才能使用,頁面腳本安裝預設開啟,背景腳本安裝預設關閉", - "guide_script_list_apply_to_run_status_title": "應用至、與執行狀態", - "guide_script_list_apply_to_run_status_content": "腳本執行狀態展示,滑鼠懸停至標籤可以查看腳本類型", + "guide_script_list_apply_to_run_status_title": "套用至 / 執行狀態", + "guide_script_list_apply_to_run_status_content": "腳本執行狀態顯示,將滑鼠移到標籤上方可以檢視腳本類型", "guide_script_list_sort_title": "排序", "guide_script_list_sort_content": "你可以拖曳腳本的標籤進行排序", "guide_script_list_update_title": "最後更新", "guide_script_list_update_content": "點擊最後更新列標籤可以對腳本進行一次檢查更新", "guide_script_list_action_title": "操作", - "guide_script_list_action_content": "操作列可以進入腳本編輯、控制腳本的運行停止(背景腳本)、設定UserConfig,操作右側按鈕可開啟進階篩選與切換視圖模式", + "guide_script_list_action_content": "操作列可以進入腳本編輯、控制腳本的執行與停止(背景腳本)、設定UserConfig,操作右側按鈕可開啟進階篩選與切換檢視模式", "guide_tools_title": "常用工具", "guide_tools_content": "工具中提供了備份和開發的工具", "guide_tools_backup_title": "備份", - "guide_tools_backup_content": "備份可以保存腳本,避免遺失。可以匯出腳本檔案到本機,也可以載入本機的腳本檔案。也可以備份到雲端,更加方便。", + "guide_tools_backup_content": "備份可以儲存腳本,避免遺失。可以匯出腳本檔案到本機,也可以載入本機的腳本檔案。也可以備份到雲端,更加方便。", "guide_setting_title": "設定", "guide_setting_content": "設定中主要包含了語言、腳本同步、更新頻率等常用設定項目", "guide_setting_sync_title": "更新與同步", - "guide_setting_sync_content": "腳本同步功能可以方便的將本設備的腳本內容同步至雲端,如果有多台設備請勾選同步刪除選項,當本設備腳本刪除時,會從雲端刪除對應的腳本,也會將其它設備的腳本刪除。", + "guide_setting_sync_content": "腳本同步功能可以方便地將本裝置的腳本內容同步至雲端,如果有多台裝置請勾選同步刪除選項,當本裝置腳本刪除時,會從雲端刪除對應的腳本,也會將其他裝置的腳本刪除。", "auto": "自動", "hide": "隱藏", "custom": "自訂", @@ -435,11 +435,11 @@ "script_name_cannot_be_set_to_empty": "腳本名稱不可設定為空", "eslint_config_format_error": "ESLint設定格式錯誤", "export_success": "匯出成功", - "get_backup_dir_url_failed": "取得備份目錄網址失敗", + "get_backup_dir_url_failed": "取得備份資料夾網址失敗", "get_backup_files_failed": "取得備份檔案失敗", "request_permission": "要求權限", - "develop_mode_guide": "目前尚未啟用「開發者模式」,腳本無法正常執行。👉點此查看啟用方式", - "allow_user_script_guide": "目前尚未啟用「允許使用者指令碼」,腳本無法正常執行。👉點此查看啟用方式", + "develop_mode_guide": "目前尚未啟用「開發者模式」,腳本無法正常執行。👉點此了解啟用方式", + "allow_user_script_guide": "目前尚未啟用「允許使用者指令碼」,腳本無法正常執行。👉點此了解啟用方式", "lower_version_browser_guide": "您的瀏覽器版本過舊,腳本無法正常執行。👉點擊了解更多", "click_to_reload": "👉點擊重新載入", "confirm_leave_page": "目前正在編輯狀態,跳轉其他頁面將會遺失目前內容,是否跳轉?", @@ -459,12 +459,12 @@ "migration_confirm_message": "重試遷移儲存引擎會對現有資料造成修改,請確認,詳情請參閱:https://docs.scriptcat.org/docs/change/v0.17/", "retry_migration": "重試遷移儲存引擎", "script_modified_leave_confirm": "腳本已修改,離開後會遺失修改,是否繼續?", - "create_success_note": "新建成功,請注意背景腳本不會預設開啟", + "create_success_note": "新增成功,請注意背景腳本不會預設開啟", "save_as_failed": "另存新檔失敗", "save_as_success": "另存新檔成功", "only_background_scheduled_can_run": "只有背景腳本/排程腳本才能執行", "preparing_script_resources": "正在準備腳本資源...", - "build_success_message": "建置成功,可以在擴充功能頁開啟開發者工具在主控台中查看輸出", + "build_success_message": "建置成功,可以在擴充功能頁開啟開發者工具在主控台中檢視輸出", "script_storage_tooltip": "可以管理腳本的儲存資料(GM_value)", "script_resource_tooltip": "管理@resource,@require下載的資源", "script_setting_tooltip": "對腳本進行一些自訂設定", @@ -480,14 +480,14 @@ "sync_status": "同步狀態", "search_scripts": "搜尋腳本", "ext_update_notification": "腳本貓擴充功能已更新", - "ext_update_notification_desc": "目前版本:{{version}},詳情請查看更新日誌", + "ext_update_notification_desc": "目前版本:{{version}},詳情請檢視更新紀錄", "watch_file_description": "監聽檔案變動,自動更新腳本,使用時請確保腳本檔案路徑不變且不能關閉頁面", "watch_file": "監聽檔案", "stop_watch_file": "停止監聽", "script_menu_display": "腳本註冊的選單", "badge_type_none": "不顯示", "badge_type_run_count": "執行次數", - "badge_type_script_count": "腳本個數", + "badge_type_script_count": "腳本數量", "interface_settings": "介面", "select_interface_language": "選擇介面顯示語言", "extension_icon_badge": "擴充功能圖示徽章", @@ -513,17 +513,17 @@ "light": "淺色模式", "dark": "暗色模式", "individual_edit": "單獨編輯", - "batch_edit": "批量編輯", - "script_code": "腳本代碼", + "batch_edit": "批次編輯", + "script_code": "腳本程式碼", "enter_search_value": "請輸入 {{search}} 進行搜尋", "script_run_env": { "title": "運作環境", - "all": "所有標籤", - "normal-tabs": "普通標籤", - "incognito-tabs": "隱身標籤" + "all": "所有分頁", + "normal-tabs": "一般分頁", + "incognito-tabs": "無痕分頁" }, "script_run_at": { - "title": "運行時機" + "title": "執行時機" }, "script_setting": { "title": "腳本設定", @@ -544,16 +544,16 @@ "sidebar": { "stopped": "停止", "all": "全部", - "normal_script": "普通腳本", + "normal_script": "一般腳本", "status": "狀態" } }, "tags": "標籤", "install_source": "安裝來源", - "input_tags_placeholder": "輸入標籤,按回車確認", + "input_tags_placeholder": "輸入標籤,按 Enter 鍵確認", "switch_to_card_mode": "切換到卡片模式", "switch_to_table_mode": "切換到表格模式", - "open_sidebar": "打開側邊欄", + "open_sidebar": "開啟側邊欄", "close_sidebar": "關閉側邊欄", "no_message_content": "無訊息內容", "error_metadata_invalid": "MetaData 資訊錯誤", @@ -561,32 +561,32 @@ "error_script_version_required": "腳本 @version 版本不可為空", "error_script_namespace_required": "腳本 @namespace 命名空間不可為空", "error_cron_invalid": "錯誤的排程表示式,請檢查:{{expr}}", - "error_script_type_mismatch": "腳本類型不相容,前臺腳本與後臺腳本不可互轉", + "error_script_type_mismatch": "腳本類型不相容,前景腳本與背景腳本不可互轉", "error_old_script_code_missing": "舊的腳本程式碼不存在", "error_subscribe_name_required": "訂閱名稱不可為空", "error_grant_conflict": "@grant 同時宣告了 none 與 GM API", - "error_metadata_line_duplicated": "Metadata 裡有重覆的聲明。", + "error_metadata_line_duplicated": "Metadata 裡有重複的宣告。", "notification": { "script_sync_delete": "同步腳本刪除", "script_sync_delete_desc": "腳本 {{scriptName}} 已被刪除", "subscribe_update": "訂閱 {{subscribeName}} 已更新", "subscribe_update_desc": "新增腳本:{{newScripts}}\n刪除腳本:{{deletedScripts}}" }, - "loading": "加載中...", - "runtime": "運行時", + "loading": "載入中...", + "runtime": "執行時", "enable_background": { - "title": "啟用背景運行", - "description": "啟用後,即使關閉所有視窗,瀏覽器仍會在背景執行,並最小化到系統匣中,直到您手動退出瀏覽器。這能讓背景腳本繼續運作。", + "title": "啟用背景運作", + "description": "啟用後,即使關閉所有視窗,瀏覽器仍會在背景執行,並最小化到系統匣中,直到您手動關閉瀏覽器。這能讓背景腳本繼續運作。", "enable_failed": "啟用失敗", "disable_failed": "停用失敗", - "prompt_title": "是否開啟背景運行?", - "prompt_description": "此腳本是{{scriptType}},啟用背景運行功能可以讓腳本在瀏覽器關閉後繼續運行。", + "prompt_title": "是否開啟背景運作?", + "prompt_description": "此腳本是{{scriptType}},啟用背景運作功能可以讓腳本在瀏覽器關閉後繼續執行。", "enable_now": "立即啟用", "maybe_later": "暫不啟用", "settings_hint": "你可以隨時在設定中修改此選項。" }, "editor": { - "show_script_list": "顯示腳本列表", - "hide_script_list": "隱藏腳本列表" + "show_script_list": "顯示腳本清單", + "hide_script_list": "隱藏腳本清單" } }