{"_rev":"4-07078692fc1f6b4176075236184347e7","time":{"created":"2026-04-07T04:31:14.661Z","modified":"2026-04-07T04:31:15.234Z","0.2.0":"2026-04-06T14:57:46.801Z","0.21.0":"2026-04-07T04:31:14.976Z"},"_id":"@dante9l/i18n-auto","name":"@dante9l/i18n-auto","dist-tags":{"latest":"0.21.0"},"versions":{"0.21.0":{"name":"@dante9l/i18n-auto","version":"0.21.0","description":"Full-chain i18n migration CLI: scan → extract → translate for React/Vue projects","keywords":["i18n","cli","react","vue","migration","translation"],"license":"AGPL-3.0-only","publishConfig":{"access":"public"},"type":"module","engines":{"node":">=18"},"bin":{"i18n-auto":"dist/index.js"},"main":"./dist/index.js","scripts":{"build":"tsc","dev":"tsx src/index.ts","typecheck":"tsc --noEmit"},"dependencies":{"@babel/generator":"^7.29.1","@babel/parser":"^7.29.2","@babel/traverse":"^7.29.0","@babel/types":"^7.29.0","@vue/compiler-sfc":"^3.4.0","chalk":"^5.3.0","commander":"^12.0.0","diff":"^5.2.0","openai":"^4.40.0"},"devDependencies":{"@types/babel__traverse":"^7.20.0","@types/diff":"^5.2.0","@types/node":"^20.0.0","tsx":"^4.7.0","typescript":"^5.4.0"},"_id":"@dante9l/i18n-auto@0.21.0","gitHead":"e174ddfc7fe56f53c9106bce2bba40410734a3ee","types":"./dist/index.d.ts","_nodeVersion":"22.19.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-xGmAoNDtyu6reaUcLIkBO/v6ofz/fntkBYRyf7iUwK/GD+Z3LVmqtzlKFWZbErH/sLJ4VHTSLl8+l4AVwMbaug==","shasum":"ef57c89a7bf011695ed4ffda7187d400032f5bb1","tarball":"https://registry.npmjs.org/@dante9l/i18n-auto/-/i18n-auto-0.21.0.tgz","fileCount":79,"unpackedSize":167644,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC7W0IcNhGMk63E1L+eH8vTUCwn+C+DjFz6BC+zVqE6CAIhAMOTZm00y9KxFGxH+7V6+GhcN0jIPEO5wL3+PcJ5e5NW"}]},"_npmUser":{"name":"dante9l","email":"zby99932@gmail.com"},"directories":{},"maintainers":[{"name":"dante9l","email":"zby99932@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/i18n-auto_0.21.0_1775536274817_0.9777501883658155"},"_hasShrinkwrap":false}},"maintainers":[{"name":"dante9l","email":"zby99932@gmail.com"}],"description":"Full-chain i18n migration CLI: scan → extract → translate for React/Vue projects","keywords":["i18n","cli","react","vue","migration","translation"],"license":"AGPL-3.0-only","readme":"# @dante9l/i18n-auto\n\n[![npm version](https://img.shields.io/npm/v/@dante9l/i18n-auto)](https://www.npmjs.com/package/@dante9l/i18n-auto)\n[![npm downloads](https://img.shields.io/npm/dm/@dante9l/i18n-auto)](https://www.npmjs.com/package/@dante9l/i18n-auto)\n[![license](https://img.shields.io/npm/l/@dante9l/i18n-auto)](./LICENSE)\n\n全链路 i18n 迁移 CLI，支持 React / Vue 项目从扫描到多语言翻译一键完成。\n\n```\nscan → extract → translate → rename-keys\n```\n\n## 安装\n\n```bash\nnpm install -g @dante9l/i18n-auto\n# 或项目内使用\nnpm install -D @dante9l/i18n-auto\n```\n\n## 快速开始\n\n```bash\n# 1. 扫描项目中的中文字符串（只读预览）\ni18n-auto scan\n\n# 2. 提取中文字符串、用 AI 生成语义 key、替换源码、生成 zh-CN.json\ni18n-auto extract\n\n# 3. 翻译成目标语言\ni18n-auto translate --target en\ni18n-auto translate --all   # 一键翻译 11 种热门语言\n\n# 4. 将哈希 key 批量重命名为 AI 语义 key（可选）\ni18n-auto rename-keys\n```\n\n## 命令\n\n### `scan`\n\n扫描源码目录，列出所有中文字符串，只读不修改。\n\n```bash\ni18n-auto scan [src-dir]\ni18n-auto scan --output result.json\n```\n\n| 选项 | 说明 |\n|------|------|\n| `-o, --output <file>` | 将结果写入 JSON 文件 |\n\n---\n\n### `extract`\n\n调用 AI 为中文字符串生成语义 key，写入 `zh-CN.json`，并将源码中的字符串替换为 `t(\"key\")`。同时自动完成框架接入（安装 react-i18next / vue-i18n、生成 `i18n.ts`、patch `main.tsx`）。\n\n```bash\ni18n-auto extract\ni18n-auto extract --dry-run   # 预览，不写入\n```\n\n| 选项 | 说明 |\n|------|------|\n| `--locales-dir <dir>` | locale 文件输出目录，默认 `./src/locales` |\n| `--dry-run` | 预览变更，不实际写入文件 |\n\n---\n\n### `translate`\n\n读取 `zh-CN.json`，调用 AI 翻译到目标语言，生成对应的 locale 文件。已翻译的 key 自动跳过，`__TODO__` 条目会重试。\n\n```bash\ni18n-auto translate --target ja\ni18n-auto translate --lang en,ja,ko\ni18n-auto translate --all\n```\n\n| 选项 | 说明 |\n|------|------|\n| `[langs...]` | 目标语言，空格分隔（如 `en ja ko`） |\n| `--target <lang>` | 单个目标语言 |\n| `--lang <langs>` | 逗号分隔的目标语言 |\n| `--all` | 翻译全部热门语言：`en ja ko fr de es pt ru ar th vi` |\n| `--locales-dir <dir>` | locale 文件目录 |\n\n---\n\n### `rename-keys`\n\n将 `extract` 阶段因 AI 调用失败而产生的哈希格式 key（`key_xxxxxx`）批量重命名为 AI 语义 key，同步更新所有 locale 文件和源码引用。\n\n```bash\ni18n-auto rename-keys\ni18n-auto rename-keys --dry-run   # 预览，不写入\n```\n\n| 选项 | 说明 |\n|------|------|\n| `--locales-dir <dir>` | locale 文件目录 |\n| `--src-dir <dir>` | 源码目录，默认 `./src` |\n| `--dry-run` | 预览变更，不实际写入文件 |\n\n---\n\n## 配置\n\n在项目根目录创建 `i18n-auto.config.ts`（优先级最高）：\n\n```ts\nexport default {\n  sourceDir: './src',\n  localesDir: './src/locales',\n  openaiApiKey: 'sk-...',\n  openaiBaseURL: 'https://api.siliconflow.cn/v1',  // 可替换为任意 OpenAI 兼容端点\n  openaiModel: 'deepseek-ai/DeepSeek-V3',\n}\n```\n\n也可以通过环境变量配置：\n\n```bash\nI18N_AUTO_API_KEY=sk-...\nI18N_AUTO_BASE_URL=https://api.siliconflow.cn/v1\nI18N_AUTO_MODEL=deepseek-ai/DeepSeek-V3\n```\n\n未设置 `I18N_AUTO_*` 时自动回退读取 `OPENAI_API_KEY` / `OPENAI_BASE_URL` / `OPENAI_MODEL`。\n\n## 支持框架\n\n| 框架 | 自动接入 | 文件类型 |\n|------|----------|----------|\n| React | react-i18next | `.tsx` `.ts` `.jsx` `.js` |\n| Vue 3 | vue-i18n | `.vue` `.ts` `.js` |\n\n## 许可证\n\nGNU Affero General Public License v3.0 (`AGPL-3.0-only`)。\n\n完整文本见 [LICENSE](./LICENSE)。\n","readmeFilename":"README.md"}