SuperAPI AI 工具集

nextjs-json-i18n-ai-translate

前端与建站

查看项目

更新于 10-15 07:50

技能介绍

用途

本技能用于 Next.js 项目中使用 JSON 格式 i18n 资源文件的场景。当项目需要添加语言、填充缺失翻译,或对齐各语言文件结构(并可选移除多余键)时,可使用该技能。它通过运行 npx @thor123141245r/ai-translate i18n 命令,以源语言文件(默认 en.json)为基准,翻译并填充目标语言的 JSON 文件。

不适用的情况:字典格式不是 JSON(例如 .ts、.yaml、.po);用户需要翻译长文本内容(文档/页面)或代码注释,此时应使用通用翻译流程,而非 i18n 子命令。

主要能力

  • 以源语言 JSON 为基准,翻译并填充目标语言 JSON 文件。
  • 支持三种模式:
    • fill:仅填充缺失值(推荐的默认模式)。
    • overwrite:重新翻译全部内容(仅在明确要求时使用)。
    • prune:对齐结构并移除目标文件中的多余键(仅在明确要求时使用)。
  • 支持从目录中已有的目标 *.json 文件推断目标语言;若目录中只有源文件(例如只有 en.json),则必须显式提供 --targets。
  • 支持通过 --file 指定非标准源文件名(例如 en-US.json)。
  • 默认在 baseDir 下写入缓存文件 .ai-translate.cache.json,以减少重复翻译。
  • 目标语言文件以 <lang>.json 形式输出(例如 ru.json)。

使用方式

1. 确认用户意图

运行任何命令前,先询问并确认:

  • 范围:要处理哪个 i18n 目录(可能存在多个)。
  • 源语言:默认是 en(是否需要其他语言,例如 zh-CN)。
  • 目标语言:哪些语言代码(例如 ru、de、fr)。
  • 模式:fill(推荐默认)、overwrite(仅在明确要求时)、prune(仅在明确要求时)。
  • 预览优先:默认先用 --dry 查看统计信息,确认后再执行实际写入。

2. 定位 i18n 目录

从项目根目录开始,先搜索 en.json。常见位置:src/i18n、src/messages、messages、locales、public/locales。如果存在多个候选目录,列出它们并让用户选择要处理哪个(或哪些)目录。

3. 先运行 dry 预览

确认 baseDir、目标语言和模式后:

npx @thor123141245r/ai-translate i18n --base <baseDir> --source en --targets ru,de --dry

4. 执行实际翻译

仅在用户确认 dry-run 统计信息后:

npx @thor123141245r/ai-translate i18n --base <baseDir> --source en --targets ru,de --mode fill

5. 非标准源文件名

如果源文件不叫 en.json(例如 en-US.json),使用 --file:

npx @thor123141245r/ai-translate i18n --base <baseDir> --source en --file en-US.json --targets ru --dry

6. 提供商配置与 API 密钥

该工具需要可用的模型提供商配置,否则翻译会失败。API 密钥优先使用环境变量,不要将密钥提交到仓库。可以通过 ai-translate set provider ... 将提供商配置写入 .ai-translate.json。示例:

export OPENAI_API_KEY="YOUR_KEY" npx @thor123141245r/ai-translate set provider openai

7. 运行后检查

完成后:运行 Next.js dev/build,确保 JSON 文件能正确解析;抽查带占位符的字符串,确保占位符被保留(例如 {{name}}、{name}、%s)。

适用场景

  • Next.js 项目使用 JSON 格式 i18n 资源文件。
  • 需要添加新的语言。
  • 需要填充缺失的翻译。
  • 需要对齐各语言文件结构,并可选移除多余键。

限制

  • 不适用于非 JSON 字典格式(例如 .ts、.yaml、.po)。
  • 不适用于长文本内容(文档/页面)或代码注释的翻译,这些应使用通用翻译流程。
  • 需要可用的模型提供商配置和 API 密钥,否则翻译会失败。
  • 若目录中只有源文件,必须显式提供 --targets。
  • 关于具体支持的模型提供商列表、价格、收费方式、翻译质量或效果,资料中暂未提供。