CLI — UI 字串
extract
概要: ai-i18n-tools extract
從 t("…") / i18n.t("…") 字面值、可選的 package.json 描述,以及當啟用 includeUiLanguageEnglishNames 時的可選隨附主檔 englishName 項目更新 strings.json(請參閱 ui.uiExtractor;不會讀取 languagesManifestPath)。同時會在 languagesManifestPath 重新產生 ui-languages.json。當 .html / .htm 列於 ui.uiExtractor.extensions 時,也會從 HTML 擷取 data-i18n / data-i18n-title / data-i18n-placeholder 標記字串。需要非空白的 ui.sourceRoots。不會呼叫 LLM。
另請參閱: UI 字串概觀, 純 HTML 應用程式
migrate-intlayer
概要: ai-i18n-tools migrate-intlayer [paths...] [--write] [--report <path>] [--content-glob <glob>] [--t-import <specifier>]
將 Intlayer *.content.ts 字典匯入至 strings.json 與扁平化語系檔案,並將簡單的 useIntlayer / getIntlayer 呼叫位置重寫為 t('English source')。預設為模擬執行(仍會寫入報告)。--write 會植入目錄並套用安全的重寫。不會呼叫 LLM。
此報告是 --write 所留下所有內容的交接文件,結尾附有 逐步待辦事項 以安排後續工作:每個手動站點的具體 t() 或 JSX 呼叫、import { t } 行、字典檔與後續需刪除的 IntlayerProvider 殘留檔案、需要先 extract 再 translate-ui 的來源字串,以及用來覆寫應用程式 i18n 模組的 i18next 執行階段啟動程式碼。區域設定控制項必須呼叫 i18n.changeLanguage 與 loadLocale。extract 會寫入 ui-languages.json,並由該啟動程式碼匯入。請勿手動編輯 strings.json、扁平化區域設定檔案或 ui-languages.json。
主要選項: --write, --report, --content-glob (預設 **/*.content.ts), --t-import
另請參閱: 從 Intlayer 遷移
mark-html
概要: ai-i18n-tools mark-html [paths...] [--write]
將裸露的 data-i18n / data-i18n-title / data-i18n-placeholder 標記插入 HTML 中,以便原始文字只撰寫一次(位於元素本身上)。掃描給定的檔案/目錄/萬用字元(預設:ui.sourceRoots 下的 .html / .htm)。預設為模擬執行(報告每個檔案的新增計數以及任何需要手動 <span data-i18n> 的混合內容元素);--write 會套用變更。具備等冪性,遵循 data-i18n-ignore(跳過元素及其子樹),絕不碰觸類似程式碼的元素(code, pre, kbd, samp, var)或空白/僅含數字的文字,且絕不發出帶有值的標記。不會呼叫 LLM。
關鍵選項: --write
另請參閱: 標記 HTML 以供翻譯
generate-ui-languages
概要: ai-i18n-tools generate-ui-languages [--master <path>] [--dry-run]
使用 sourceLocale + targetLocales 與隨附的 data/ui-languages-complete.json(或 --master)將 ui-languages.json 寫入 languagesManifestPath(預設為 {ui.flatOutputDir}/ui-languages.json)。會針對主檔中缺少的地區設定發出警告並產生 TODO 佔位符。如果您現有的資訊清單包含自訂的 label 或 englishName 值,它們將會被主目錄預設值取代 — 請在之後檢閱並調整產生的檔案。
關鍵選項: --master, --dry-run
translate-ui
概要: ai-i18n-tools translate-ui [-l <codes>] [--force] [--dry-run] [-j <n>]
僅翻譯 UI 字串(strings.json → 地區設定 JSON)。需要 features.translateUIStrings。
關鍵選項: -l / --locale, --force, --dry-run, -j / --concurrency
-l / --locale:以逗號分隔的目標語言地區(預設:設定 targetLocales 減去 sourceLocale)。--force:重新翻譯每個語言地區的所有項目(忽略現有翻譯)。--dry-run:不寫入、不呼叫 API。-j 並行處理 locales;在每個語言地區內,設定 uiBatchConcurrency(預設 2)並行處理 LLM 批次(每 50 個字串為一區塊,接著是複數群組)。沒有用於 uiBatchConcurrency 的 CLI 旗標。
sync-ui
概要: ai-i18n-tools sync-ui [-l <codes>] [--force] [--dry-run] [-j <n>]
先擷取,再翻譯 UI 字串(需要 features.translateUIStrings)。僅限 UI — 不含文件、SVG 或 json[]。與 translate-ui 使用相同的 -l、--force、--dry-run 及 -j 選項。
proofread-ui
概要: ai-i18n-tools proofread-ui [-l <code>] [--chunk <n>] [--dry-run] [--json] [-j <n>]
先執行 extract(需要 features.translateUIStrings),使 strings.json 與來源一致,再由 LLM 審查來源語系的 UI 字串(拼字、文法)。術語提示僅來自 glossary.userGlossary CSV(範圍與 translate-ui 相同 — 不含 strings.json / uiGlossary,因此不良文案不會被當作詞彙表而強化)。使用作用中的 LLM 供應商(其 API 金鑰環境變數)。
失敗時以 1 結束 (缺少功能旗標、擷取失敗、缺少/無效的目錄、缺少 API 金鑰,或所有批次皆失敗時);執行成功完成時以 0 結束 (發現僅供參考)。將 proofread-ui-results_<timestamp>.log 寫入 cacheDir 下,作為人類可讀的報告 (摘要、問題、未審查的列,以及每個字串的 OK 列);終端機僅列印摘要計數和問題 (每個字串沒有 [ok] 行)。失敗的批次,或是短於批次長度且在每個位置沒有可用 index 的模型回應,會將這些字串計為未審查。系統會捨棄其問題,以免將過短的陣列套用到錯誤的字串。在最後一行印出記錄檔名稱。使用 --json 時,人類風格的輸出會傳送至 stderr。連結會使用 path:line,類似儀表板 UI 字串的連結按鈕。
關鍵選項: -l / --locale、--chunk(預設 50)、--dry-run、--json、-j / --concurrency
export-ui-xliff
概要: ai-i18n-tools export-ui-xliff [-l <codes>] [-o <dir>] [--untranslated-only] [--dry-run]
將 strings.json 匯出為 XLIFF 2.0(每個目標語系一個 .xliff)。唯讀;無 API。
關鍵選項: -l / --locale、-o / --output-dir、--untranslated-only、--dry-run
-o / --output-dir:輸出目錄(預設:與目錄相同的資料夾)。--untranslated-only:僅包含該語系缺少翻譯的單元。