ai-i18n-tools 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +157 -0
- package/dist/api/openrouter.d.ts +115 -0
- package/dist/api/openrouter.d.ts.map +1 -0
- package/dist/api/openrouter.js +399 -0
- package/dist/api/openrouter.js.map +1 -0
- package/dist/cli/doc-translate.d.ts +90 -0
- package/dist/cli/doc-translate.d.ts.map +1 -0
- package/dist/cli/doc-translate.js +1153 -0
- package/dist/cli/doc-translate.js.map +1 -0
- package/dist/cli/export-ui-xliff.d.ts +32 -0
- package/dist/cli/export-ui-xliff.d.ts.map +1 -0
- package/dist/cli/export-ui-xliff.js +153 -0
- package/dist/cli/export-ui-xliff.js.map +1 -0
- package/dist/cli/extract-strings.d.ts +12 -0
- package/dist/cli/extract-strings.d.ts.map +1 -0
- package/dist/cli/extract-strings.js +80 -0
- package/dist/cli/extract-strings.js.map +1 -0
- package/dist/cli/file-utils.d.ts +10 -0
- package/dist/cli/file-utils.d.ts.map +1 -0
- package/dist/cli/file-utils.js +77 -0
- package/dist/cli/file-utils.js.map +1 -0
- package/dist/cli/format.d.ts +21 -0
- package/dist/cli/format.d.ts.map +1 -0
- package/dist/cli/format.js +75 -0
- package/dist/cli/format.js.map +1 -0
- package/dist/cli/helpers.d.ts +27 -0
- package/dist/cli/helpers.d.ts.map +1 -0
- package/dist/cli/helpers.js +84 -0
- package/dist/cli/helpers.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +772 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/log-output.d.ts +13 -0
- package/dist/cli/log-output.d.ts.map +1 -0
- package/dist/cli/log-output.js +75 -0
- package/dist/cli/log-output.js.map +1 -0
- package/dist/cli/translate-svg.d.ts +7 -0
- package/dist/cli/translate-svg.d.ts.map +1 -0
- package/dist/cli/translate-svg.js +167 -0
- package/dist/cli/translate-svg.js.map +1 -0
- package/dist/cli/translate-ui-strings.d.ts +27 -0
- package/dist/cli/translate-ui-strings.d.ts.map +1 -0
- package/dist/cli/translate-ui-strings.js +357 -0
- package/dist/cli/translate-ui-strings.js.map +1 -0
- package/dist/core/cache-tracking-keys.d.ts +12 -0
- package/dist/core/cache-tracking-keys.d.ts.map +1 -0
- package/dist/core/cache-tracking-keys.js +20 -0
- package/dist/core/cache-tracking-keys.js.map +1 -0
- package/dist/core/cache.d.ts +153 -0
- package/dist/core/cache.d.ts.map +1 -0
- package/dist/core/cache.js +546 -0
- package/dist/core/cache.js.map +1 -0
- package/dist/core/config.d.ts +58 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +392 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/doc-file-tracking.d.ts +8 -0
- package/dist/core/doc-file-tracking.d.ts.map +1 -0
- package/dist/core/doc-file-tracking.js +27 -0
- package/dist/core/doc-file-tracking.js.map +1 -0
- package/dist/core/errors.d.ts +19 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +23 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/locale-utils.d.ts +20 -0
- package/dist/core/locale-utils.d.ts.map +1 -0
- package/dist/core/locale-utils.js +75 -0
- package/dist/core/locale-utils.js.map +1 -0
- package/dist/core/output-paths.d.ts +22 -0
- package/dist/core/output-paths.d.ts.map +1 -0
- package/dist/core/output-paths.js +130 -0
- package/dist/core/output-paths.js.map +1 -0
- package/dist/core/prompt-builder.d.ts +62 -0
- package/dist/core/prompt-builder.d.ts.map +1 -0
- package/dist/core/prompt-builder.js +232 -0
- package/dist/core/prompt-builder.js.map +1 -0
- package/dist/core/prompts.d.ts +27 -0
- package/dist/core/prompts.d.ts.map +1 -0
- package/dist/core/prompts.js +57 -0
- package/dist/core/prompts.js.map +1 -0
- package/dist/core/svg-asset-paths.d.ts +40 -0
- package/dist/core/svg-asset-paths.d.ts.map +1 -0
- package/dist/core/svg-asset-paths.js +107 -0
- package/dist/core/svg-asset-paths.js.map +1 -0
- package/dist/core/types.d.ts +388 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +265 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/ui-languages.d.ts +66 -0
- package/dist/core/ui-languages.d.ts.map +1 -0
- package/dist/core/ui-languages.js +277 -0
- package/dist/core/ui-languages.js.map +1 -0
- package/dist/core/user-edited-model.d.ts +3 -0
- package/dist/core/user-edited-model.d.ts.map +1 -0
- package/dist/core/user-edited-model.js +3 -0
- package/dist/core/user-edited-model.js.map +1 -0
- package/dist/edit-cache-app/app.js +1326 -0
- package/dist/edit-cache-app/index.html +287 -0
- package/dist/edit-cache-app/styles.css +664 -0
- package/dist/extractors/base-extractor.d.ts +15 -0
- package/dist/extractors/base-extractor.d.ts.map +1 -0
- package/dist/extractors/base-extractor.js +23 -0
- package/dist/extractors/base-extractor.js.map +1 -0
- package/dist/extractors/classify-segment.d.ts +6 -0
- package/dist/extractors/classify-segment.d.ts.map +1 -0
- package/dist/extractors/classify-segment.js +20 -0
- package/dist/extractors/classify-segment.js.map +1 -0
- package/dist/extractors/json-extractor.d.ts +16 -0
- package/dist/extractors/json-extractor.d.ts.map +1 -0
- package/dist/extractors/json-extractor.js +128 -0
- package/dist/extractors/json-extractor.js.map +1 -0
- package/dist/extractors/markdown-extractor.d.ts +15 -0
- package/dist/extractors/markdown-extractor.d.ts.map +1 -0
- package/dist/extractors/markdown-extractor.js +205 -0
- package/dist/extractors/markdown-extractor.js.map +1 -0
- package/dist/extractors/svg-extractor.d.ts +19 -0
- package/dist/extractors/svg-extractor.d.ts.map +1 -0
- package/dist/extractors/svg-extractor.js +132 -0
- package/dist/extractors/svg-extractor.js.map +1 -0
- package/dist/extractors/ui-string-extractor.d.ts +40 -0
- package/dist/extractors/ui-string-extractor.d.ts.map +1 -0
- package/dist/extractors/ui-string-extractor.js +146 -0
- package/dist/extractors/ui-string-extractor.js.map +1 -0
- package/dist/extractors/ui-string-locations.d.ts +23 -0
- package/dist/extractors/ui-string-locations.d.ts.map +1 -0
- package/dist/extractors/ui-string-locations.js +138 -0
- package/dist/extractors/ui-string-locations.js.map +1 -0
- package/dist/glossary/glossary.d.ts +34 -0
- package/dist/glossary/glossary.d.ts.map +1 -0
- package/dist/glossary/glossary.js +260 -0
- package/dist/glossary/glossary.js.map +1 -0
- package/dist/glossary/matcher.d.ts +10 -0
- package/dist/glossary/matcher.d.ts.map +1 -0
- package/dist/glossary/matcher.js +12 -0
- package/dist/glossary/matcher.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/processors/admonition-placeholders.d.ts +8 -0
- package/dist/processors/admonition-placeholders.d.ts.map +1 -0
- package/dist/processors/admonition-placeholders.js +59 -0
- package/dist/processors/admonition-placeholders.js.map +1 -0
- package/dist/processors/anchor-placeholders.d.ts +8 -0
- package/dist/processors/anchor-placeholders.d.ts.map +1 -0
- package/dist/processors/anchor-placeholders.js +37 -0
- package/dist/processors/anchor-placeholders.js.map +1 -0
- package/dist/processors/batch-processor.d.ts +10 -0
- package/dist/processors/batch-processor.d.ts.map +1 -0
- package/dist/processors/batch-processor.js +33 -0
- package/dist/processors/batch-processor.js.map +1 -0
- package/dist/processors/bold-code-placeholders.d.ts +14 -0
- package/dist/processors/bold-code-placeholders.d.ts.map +1 -0
- package/dist/processors/bold-code-placeholders.js +116 -0
- package/dist/processors/bold-code-placeholders.js.map +1 -0
- package/dist/processors/doc-postprocess.d.ts +51 -0
- package/dist/processors/doc-postprocess.d.ts.map +1 -0
- package/dist/processors/doc-postprocess.js +215 -0
- package/dist/processors/doc-postprocess.js.map +1 -0
- package/dist/processors/emphasis-placeholders.d.ts +6 -0
- package/dist/processors/emphasis-placeholders.d.ts.map +1 -0
- package/dist/processors/emphasis-placeholders.js +262 -0
- package/dist/processors/emphasis-placeholders.js.map +1 -0
- package/dist/processors/flat-link-rewrite.d.ts +32 -0
- package/dist/processors/flat-link-rewrite.d.ts.map +1 -0
- package/dist/processors/flat-link-rewrite.js +90 -0
- package/dist/processors/flat-link-rewrite.js.map +1 -0
- package/dist/processors/glossary-force-placeholders.d.ts +12 -0
- package/dist/processors/glossary-force-placeholders.d.ts.map +1 -0
- package/dist/processors/glossary-force-placeholders.js +58 -0
- package/dist/processors/glossary-force-placeholders.js.map +1 -0
- package/dist/processors/inline-code-placeholders.d.ts +11 -0
- package/dist/processors/inline-code-placeholders.d.ts.map +1 -0
- package/dist/processors/inline-code-placeholders.js +87 -0
- package/dist/processors/inline-code-placeholders.js.map +1 -0
- package/dist/processors/placeholder-handler.d.ts +38 -0
- package/dist/processors/placeholder-handler.d.ts.map +1 -0
- package/dist/processors/placeholder-handler.js +55 -0
- package/dist/processors/placeholder-handler.js.map +1 -0
- package/dist/processors/translation-placeholder-leaks.d.ts +2 -0
- package/dist/processors/translation-placeholder-leaks.d.ts.map +1 -0
- package/dist/processors/translation-placeholder-leaks.js +9 -0
- package/dist/processors/translation-placeholder-leaks.js.map +1 -0
- package/dist/processors/url-placeholders.d.ts +10 -0
- package/dist/processors/url-placeholders.d.ts.map +1 -0
- package/dist/processors/url-placeholders.js +29 -0
- package/dist/processors/url-placeholders.js.map +1 -0
- package/dist/processors/validator.d.ts +23 -0
- package/dist/processors/validator.d.ts.map +1 -0
- package/dist/processors/validator.js +186 -0
- package/dist/processors/validator.js.map +1 -0
- package/dist/runtime/i18next-helpers.d.ts +146 -0
- package/dist/runtime/i18next-helpers.d.ts.map +1 -0
- package/dist/runtime/i18next-helpers.js +192 -0
- package/dist/runtime/i18next-helpers.js.map +1 -0
- package/dist/runtime/index.d.ts +4 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +4 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/template.d.ts +21 -0
- package/dist/runtime/template.d.ts.map +1 -0
- package/dist/runtime/template.js +28 -0
- package/dist/runtime/template.js.map +1 -0
- package/dist/runtime/ui-language-display.d.ts +16 -0
- package/dist/runtime/ui-language-display.d.ts.map +1 -0
- package/dist/runtime/ui-language-display.js +26 -0
- package/dist/runtime/ui-language-display.js.map +1 -0
- package/dist/server/translation-editor.d.ts +25 -0
- package/dist/server/translation-editor.d.ts.map +1 -0
- package/dist/server/translation-editor.js +583 -0
- package/dist/server/translation-editor.js.map +1 -0
- package/dist/utils/concurrency.d.ts +31 -0
- package/dist/utils/concurrency.d.ts.map +1 -0
- package/dist/utils/concurrency.js +103 -0
- package/dist/utils/concurrency.js.map +1 -0
- package/dist/utils/hash.d.ts +5 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +9 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/ignore-parser.d.ts +7 -0
- package/dist/utils/ignore-parser.d.ts.map +1 -0
- package/dist/utils/ignore-parser.js +26 -0
- package/dist/utils/ignore-parser.js.map +1 -0
- package/dist/utils/logger.d.ts +45 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +158 -0
- package/dist/utils/logger.js.map +1 -0
- package/docs/GETTING_STARTED.md +697 -0
- package/docs/PACKAGE_OVERVIEW.md +427 -0
- package/docs/ai-i18n-tools-context.md +481 -0
- package/package.json +117 -0
- package/translated-docs/README.de.md +157 -0
- package/translated-docs/README.es.md +157 -0
- package/translated-docs/README.fr.md +157 -0
- package/translated-docs/README.hi.md +157 -0
- package/translated-docs/README.ja.md +157 -0
- package/translated-docs/README.ko.md +157 -0
- package/translated-docs/README.pt-BR.md +157 -0
- package/translated-docs/README.zh-CN.md +157 -0
- package/translated-docs/README.zh-TW.md +157 -0
- package/translated-docs/docs/GETTING_STARTED.de.md +682 -0
- package/translated-docs/docs/GETTING_STARTED.es.md +682 -0
- package/translated-docs/docs/GETTING_STARTED.fr.md +682 -0
- package/translated-docs/docs/GETTING_STARTED.hi.md +682 -0
- package/translated-docs/docs/GETTING_STARTED.ja.md +682 -0
- package/translated-docs/docs/GETTING_STARTED.ko.md +682 -0
- package/translated-docs/docs/GETTING_STARTED.pt-BR.md +682 -0
- package/translated-docs/docs/GETTING_STARTED.zh-CN.md +682 -0
- package/translated-docs/docs/GETTING_STARTED.zh-TW.md +682 -0
- package/translated-docs/docs/PACKAGE_OVERVIEW.de.md +428 -0
- package/translated-docs/docs/PACKAGE_OVERVIEW.es.md +428 -0
- package/translated-docs/docs/PACKAGE_OVERVIEW.fr.md +428 -0
- package/translated-docs/docs/PACKAGE_OVERVIEW.hi.md +428 -0
- package/translated-docs/docs/PACKAGE_OVERVIEW.ja.md +428 -0
- package/translated-docs/docs/PACKAGE_OVERVIEW.ko.md +428 -0
- package/translated-docs/docs/PACKAGE_OVERVIEW.pt-BR.md +428 -0
- package/translated-docs/docs/PACKAGE_OVERVIEW.zh-CN.md +428 -0
- package/translated-docs/docs/PACKAGE_OVERVIEW.zh-TW.md +428 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# ai-i18n-tools
|
|
2
|
+
|
|
3
|
+
用於國際化 JavaScript/TypeScript 應用程式與文件網站的 CLI 與程式化工具包。可提取 UI 字串,透過 OpenRouter 使用 LLM 進行翻譯,並為 i18next 生成符合語系的 JSON 檔案,同時提供 markdown、Docusaurus JSON 的處理流程,以及(透過 `features.translateSVG`、`translate-svg` 與 `svg` 區塊)獨立 SVG 資源的支援。
|
|
4
|
+
|
|
5
|
+
<small>**以其他語言閱讀:**</small>
|
|
6
|
+
|
|
7
|
+
<small id="lang-list">[en-GB](../README.md) · [de](./README.de.md) · [es](./README.es.md) · [fr](./README.fr.md) · [hi](./README.hi.md) · [ja](./README.ja.md) · [ko](./README.ko.md) · [pt-BR](./README.pt-BR.md) · [zh-CN](./README.zh-CN.md) · [zh-TW](./README.zh-TW.md)</small>
|
|
8
|
+
|
|
9
|
+
## 兩大核心工作流程
|
|
10
|
+
|
|
11
|
+
**工作流程 1 - UI 翻譯** (React、Next.js、Node.js,任何 i18next 專案)
|
|
12
|
+
|
|
13
|
+
掃描原始碼檔案中的 `t("…")` 呼叫,建立主目錄(`strings.json`,可選包含每個區域設定的 **`models`** 元資料),透過 OpenRouter 為每個區域設定翻譯缺失的條目,並寫入可供 i18next 直接使用的扁平 JSON 檔案(`de.json`、`pt-BR.json`,…)。
|
|
14
|
+
|
|
15
|
+
**工作流程 2 - 文件翻譯** (Markdown、Docusaurus JSON)
|
|
16
|
+
|
|
17
|
+
當啟用時,會翻譯每個 `documentations` 區塊中 `contentPaths` 的 `.md` 與 `.mdx` 檔案,以及該區塊 `jsonSource` 中的 JSON 標籤檔案。每個區塊支援 Docusaurus 風格或扁平的語系後綴目錄結構(`documentations[].markdownOutput`)。共用的根目錄 `cacheDir` 用於存放 SQLite 快取,因此僅有新增或變更的片段會被傳送至 LLM。**SVG:** 啟用 `features.translateSVG`,加入頂層 `svg` 區塊,然後使用 `translate-svg`(當兩者皆設定時,也會由 `sync` 執行)。
|
|
18
|
+
|
|
19
|
+
兩種工作流程共用單一的 `ai-i18n-tools.config.json` 檔案,可獨立或同時使用。獨立的 SVG 翻譯需使用 `features.translateSVG` 搭配頂層 `svg` 區塊,並透過 `translate-svg` 執行(或在 `sync` 中的 SVG 階段執行)。
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 安裝
|
|
24
|
+
|
|
25
|
+
已發佈的套件為 **僅限 ESM**(`"type": "module"`)。請在 Node.js、打包工具或 `import()` 中使用 `import` — **不支援 `require('ai-i18n-tools')`。**
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install ai-i18n-tools
|
|
29
|
+
# or
|
|
30
|
+
pnpm add ai-i18n-tools
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
設定您的 OpenRouter API 金鑰:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
export OPENROUTER_API_KEY=sk-or-v1-your-key-here
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 快速開始
|
|
42
|
+
|
|
43
|
+
### 工作流程 1 - UI 字串
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# 1. Create config
|
|
47
|
+
npx ai-i18n-tools init
|
|
48
|
+
|
|
49
|
+
# 2. Extract t("…") calls from source
|
|
50
|
+
npx ai-i18n-tools extract
|
|
51
|
+
|
|
52
|
+
# 3. Translate to all target locales
|
|
53
|
+
npx ai-i18n-tools translate-ui
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
使用 `'ai-i18n-tools/runtime'` 中的輔助工具,在您的應用程式中連接 i18next:
|
|
57
|
+
|
|
58
|
+
```js
|
|
59
|
+
import i18n from 'i18next';
|
|
60
|
+
import { initReactI18next } from 'react-i18next';
|
|
61
|
+
import uiLanguages from './locales/ui-languages.json';
|
|
62
|
+
import {
|
|
63
|
+
defaultI18nInitOptions,
|
|
64
|
+
wrapI18nWithKeyTrim,
|
|
65
|
+
makeLoadLocale,
|
|
66
|
+
applyDirection,
|
|
67
|
+
} from 'ai-i18n-tools/runtime';
|
|
68
|
+
|
|
69
|
+
// Must match sourceLocale in ai-i18n-tools.config.json
|
|
70
|
+
export const SOURCE_LOCALE = 'en-GB';
|
|
71
|
+
|
|
72
|
+
void i18n.use(initReactI18next).init(defaultI18nInitOptions(SOURCE_LOCALE));
|
|
73
|
+
wrapI18nWithKeyTrim(i18n);
|
|
74
|
+
i18n.on('languageChanged', applyDirection);
|
|
75
|
+
applyDirection(i18n.language);
|
|
76
|
+
|
|
77
|
+
const localeLoaders = Object.fromEntries(
|
|
78
|
+
uiLanguages
|
|
79
|
+
.filter(({ code }) => code !== SOURCE_LOCALE)
|
|
80
|
+
.map(({ code }) => [code, () => import(`./locales/${code}.json`)])
|
|
81
|
+
);
|
|
82
|
+
export const loadLocale = makeLoadLocale(i18n, localeLoaders, SOURCE_LOCALE);
|
|
83
|
+
export default i18n;
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 工作流程 2 - 文件
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# 1. Create config for Docusaurus
|
|
90
|
+
npx ai-i18n-tools init -t ui-docusaurus
|
|
91
|
+
|
|
92
|
+
# 2. Translate all docs
|
|
93
|
+
npx ai-i18n-tools translate-docs
|
|
94
|
+
|
|
95
|
+
# 3. Check status
|
|
96
|
+
npx ai-i18n-tools status
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### 兩個工作流程
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
npx ai-i18n-tools sync # Extract UI strings, then translate UI strings, SVG, and docs
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 執行期輔助工具
|
|
108
|
+
|
|
109
|
+
從 `'ai-i18n-tools/runtime'` 匯出 - 適用於任何 JS 環境,無需引入 i18next:
|
|
110
|
+
|
|
111
|
+
| 輔助工具 | 描述 |
|
|
112
|
+
|---|---|
|
|
113
|
+
| `defaultI18nInitOptions(sourceLocale)` | 適用於以鍵值作為預設值設定的標準 i18next 初始化選項。 |
|
|
114
|
+
| `wrapI18nWithKeyTrim(i18n)` | 包裝 `i18n.t`,使其在查詢前先修剪鍵值。 |
|
|
115
|
+
| `makeLoadLocale(i18n, loaders, sourceLocale)` | 用於非同步載入區域設定檔案的工廠函式。 |
|
|
116
|
+
| `getTextDirection(lng)` | 針對 BCP-47 代碼返回 `'ltr'` 或 `'rtl'`。 |
|
|
117
|
+
| `applyDirection(lng, element?)` | 在 `document.documentElement` 上設定 `dir` 屬性。 |
|
|
118
|
+
| `getUILanguageLabel(lang, t)` | 語言選單列的顯示標籤(搭配 i18n)。 |
|
|
119
|
+
| `getUILanguageLabelNative(lang)` | 不呼叫 `t()` 的顯示標籤(標題風格)。 |
|
|
120
|
+
| `interpolateTemplate(str, vars)` | 對純字串進行 `{{var}}` 替換的低階函式(內部使用;應用程式碼應改用 `t()`)。 |
|
|
121
|
+
| `flipUiArrowsForRtl(text, isRtl)` | 針對 RTL 佈局將 `→` 翻轉為 `←`。 |
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## CLI 指令
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
ai-i18n-tools init [-t ui-markdown|ui-docusaurus] Create config file
|
|
129
|
+
ai-i18n-tools extract Scan source for t("…") calls
|
|
130
|
+
ai-i18n-tools translate-docs [--locale <code>] Translate documentation (markdown, JSON); see docs for
|
|
131
|
+
--force-update, --force, --stats, --clear-cache,
|
|
132
|
+
--prompt-format (xml | json-array | json-object)
|
|
133
|
+
ai-i18n-tools translate-svg [--locale <code>] Standalone SVG assets (features.translateSVG + config.svg); see --no-cache
|
|
134
|
+
ai-i18n-tools translate-ui [--locale <code>] Translate UI strings only; see --force, --dry-run
|
|
135
|
+
ai-i18n-tools export-ui-xliff [--locale <code>] Export UI strings to XLIFF 2.0 (one file per locale); see --untranslated-only, -o
|
|
136
|
+
ai-i18n-tools sync Extract UI strings, then translate UI strings, SVG, and docs
|
|
137
|
+
ai-i18n-tools status Translation status per file × locale
|
|
138
|
+
ai-i18n-tools editor Open cache/glossary web editor
|
|
139
|
+
ai-i18n-tools cleanup [--dry-run] [--no-backup] [--backup <path>] Runs sync --force-update, then cleans stale + orphaned cache rows; backs up SQLite by default
|
|
140
|
+
ai-i18n-tools glossary-generate Create empty glossary CSV template
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
所有命令都接受 `-c <config>`(默認值:`ai-i18n-tools.config.json`)、`-v`(詳細模式),以及可選的 `-w` / `--write-logs [path]` 來將控制台輸出附加到日誌文件(默認值:在翻譯緩存目錄下)。
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## 文檔
|
|
148
|
+
|
|
149
|
+
- [開始使用](docs/GETTING_STARTED.zh-TW.md) - 針對兩種工作流程的完整設置指南、所有 CLI 標誌和配置字段參考。
|
|
150
|
+
- [包概述](docs/PACKAGE_OVERVIEW.zh-TW.md) - 架構、內部原理、程序化 API 和擴展點。
|
|
151
|
+
- [AI 代理上下文](../docs/ai-i18n-tools-context.md) - 為進行代碼或配置更改的代理和維護者提供簡明的項目上下文。
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## 授權
|
|
156
|
+
|
|
157
|
+
MIT © [Waldemar Scudeller Jr.](https://github.com/wsj-br)
|