尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

JSON多语言翻译工具jsontt:一条命令让英文语言包生成4个语种版本

JSON多语言翻译工具jsontt:一条命令让英文语言包生成4个语种版本 JSON多语言翻译工具jsontt一条命令让英文语言包生成4个语种版本【免费下载链接】json-translatorjsontt - AI JSON Translator with GPT / Gemma / Mixtral / llama other FREE translation modules to translate your json/yaml files into other languages ✅ Check Readme ✌ Supports GPT / Gemma / Mixtral / llama / DeepL / Google / Bing / Libre / Argos项目地址: https://gitcode.com/gh_mirrors/js/json-translator上线前夜产品经理丢来一句今晚8点前i18n语言包要把日语、法语、德语、中文简体都补齐。你打开en.json看着里面四百多行文案脑子里浮现的是复制、粘贴、翻页、再粘贴的漫长循环还要小心别把{{username}}这种变量占位符给改坏。如果你的项目也经常被这种JSON多语言翻译的苦差事拖住那么接下来要介绍的jsontt或许能让你从这场消耗战里提前下班。这套工具全名叫 jsonttnpm 包名parvineyvazov/json-translator开源免费核心就干一件事把 JSON / YAML 文件翻译成 100 语言顺带把变量占位符、URL、深层嵌套结构都给你保护好。这篇文章不聊虚的直接带你走一遍从装到用的完整流程每一关都有可复制的命令。第一关装好它然后看着 en.json 长出 zh-CN.json先做环境准备。要求 Node.js 16 及以上然后全局安装 CLInpm install -g parvineyvazov/json-translator装完验证一下版本能输出版本号就说明 CLI 已经就位jsontt --version 重点这个工具的真正用法是jsontt 文件路径加一串选项而不是jsontt translate xxx这种子命令风格。记住这一点后面所有例子都不容易跑偏。现在假设你的项目里有一个configs/en.json里面有这样的内容{ app: { title: Welcome to our platform!, subtitle: Sign up now and get {{bonus}} credits }, nav: { home: Home, settings: Account settings } }想把它翻译成中文简体一条命令jsontt configs/en.json --module google --from en --to zh-CN命令的意思是用 Google 翻译引擎把 en.json 从英文翻译成中文生成的文件默认放在源文件同目录命名为zh-CN.json。翻完打开zh-CN.json你会看到键名一个没动嵌套结构原样保留只有文案变成了中文{{bonus}}还好端端地待在原地。这就是第一关通关标志。如果你不想背参数直接jsontt configs/en.json不带任何选项它会进入交互式问答一步步问你用什么引擎、从哪种语言翻到哪种语言效果是一样的。第二关一次命令同时生成 4 个语种版本逐个语言翻一遍要跑四次命令不需要。-t参数后面可以跟一串语言代码空格隔开即可jsontt configs/en.json --module google --from en --to zh-CN ja fr de执行完你的configs/目录会从孤零零一个 en.json 变成一整套语言包configs/ ├── en.json ├── zh-CN.json ├── ja.json ├── fr.json └── de.json⚠️ 注意多语言同时翻译时每个语种是并行发请求的速度上去了也意味着同一时间对翻译服务有多次调用。如果你的文本量大别急着加大并发后面有专门的调优说明。如果嫌文件名不合习惯可以用--name给输出文件加前缀jsontt configs/en.json --module google --from en --to zh-CN ja --name messages这样生成的是messages.zh-CN.json和messages.ja.json。想要在命名上掌握主动权的读者记住这个参数就够了。第三关把变量占位符稳稳护住的秘密翻译最怕什么最怕变量被翻坏。想想看如果Welcome {{user}}被翻译引擎翻成欢迎 {user}还好要是花括号被吞掉、或者{{被拆散前端渲染直接崩。jsontt 的处理思路是把保护做在翻译之前它专门有一个叫 ignorer忽略器的模块在干活。翻译前工具会扫描整段文本把需要保护的片段先锁起来翻译完成后再原样放回去。它的规则很直观双花括号{{word}}和单花括号{word}的内容一律不翻译URL 链接自动识别并保护不需要你做任何配置看一个实际例子把这条翻译成德语{ text: this is a puppy https://shorturl.at/lvPY5 }普通翻译工具很可能把链接里的字符也搅进去而 jsontt 的结果是{ text: das ist ein welpe https://shorturl.at/lvPY5 }文案翻了链接毫发无损。这套先锁定、后翻译、再还原的机制实现都在src/core/ignorer.ts里感兴趣的同学可以顺着源码看看它具体是怎么用正则做 map 和 unmap 的。想让它只翻文本不碰链接你其实什么都不用做这是默认行为。但有一点要记住保护的前提是你在文案里用了{{变量}}这种标准写法。如果你把变量写成别家框架特有的语法那就需要自己先做一层映射再交给 jsontt。第四关增量更新只翻新改动的几行语言包不是一次性产物产品文案每周都在变。假设你已经翻好了 zh-CN.json这周只改了 en.json 里 3 行文案难道要全量重翻一遍jsontt 在这里做了个很聪明的设计执行翻译时如果目标语言的文件已经存在它会先读取旧文件把已有的翻译结果直接复用只对新增或变化的文本发起新的翻译请求。也就是说第二次、第三次跑同一条命令速度会越来越快费用如果用 AI 引擎也会越来越省。配合缓存使用效果更佳jsontt configs/en.json --module google --from en --to zh-CN ja --cache--cache会把原文 → 译文的映射存进本地缓存文件下次遇到相同的句子直接命中缓存连翻译请求都不用发。你会发现命令行输出的统计里多了In cache这一项那就是被缓存拦下来的翻译次数。 重点增量复用 本地缓存这两招组合起来就是多轮迭代阶段翻译成本趋近于零的秘诀。如果你的项目每周都在改文案务必把这两条养成习惯。终极大招多引擎切换与翻车自救引擎自由一个参数的事免费用户的主力是 Google、Bing、Libre Translate、Argos Translate 这几个免费引擎切换只需要改--module的值# 用 Bing 翻译 jsontt configs/en.json --module bing --from en --to zh-CN # 用 Libre Translate jsontt configs/en.json --module libre --from en --to zh-CN需要更高翻译质量时可以切到 AI 引擎。GPT 系列读OPENAI_API_KEY环境变量Gemma、Mixtral、Llama 系列走 Groq 读GROQ_API_KEYDeepL 读DEEPL_API_KEYexport OPENAI_API_KEYsk-xxxx jsontt configs/en.json --module gpt-4o --from en --to zh-CN不用 API key 也能本地跑的是 llama-cpp它走http://localhost:8080/v1适合有本地推理环境、又不想把文案发给第三方服务的团队。翻车自救fallback 与并发控制免费翻译引擎偶尔会拒绝请求尤其是在高频调用之后。两个参数帮你兜底jsontt configs/en.json --module google --from en --to zh-CN --fallback yes --concurrencylimit 3--fallback yes当前引擎失败时自动按可用引擎列表换下一个继续翻翻译流程不会因为单条失败而中断--concurrencylimit控制并发请求数默认是 3。调高能加速但越高越容易被服务商临时封禁这是官方文档里的原话慎用 如果某条文案所有引擎都失败了工具会把这条值写成--占位符而不是让整个进程崩溃退出。你可以事后用编辑器全局搜索--找出漏网之鱼单独补救。踩坑现场实录三个真实教训教训一大文件别硬开高并发。我试过把一张 2000 行的大语言包用--concurrencylimit 20加速结果跑到一半被 Google 临时限流一大批文案变成--。正确做法是先用默认的 3观察统计里失败的条数再逐步往上加10 以内比较稳妥。教训二YAML 文件同样适用但缩进别乱。jsontt 支持.yaml/.yml文件翻译输出文件的扩展名会跟随源文件。但 YAML 对缩进极其敏感翻译前先确认源文件格式合法否则解析阶段就会报错。教训三翻译对象时小心空字符串和超长值。工具对空值有安全检查空字符串会原样跳过但如果某条文案超过合理长度内部有 5000 字符的阈值设计建议拆成多条再翻避免单条请求超时。从代码里调用的另一种姿势如果你不想用命令行jsontt 也能当普通 npm 库用。把翻译能力嵌进你自己的构建脚本里实现发布前自动补齐多语言const translator require(parvineyvazov/json-translator); const en { login: { title: Login {{name}}, failure: Failed } }; const zh await translator.translateObject( en, translator.languages.English, translator.languages.Chinese_Simplified );核心入口分布在src/core/下文件读写是json_file.ts深层对象遍历和请求队列是json_object.ts忽略机制是ignorer.ts翻译模块实现是modules/functions.ts。完整支持的语言清单见 docs/LANGUAGES.md超过 100 种语言都有对应代码表。收尾行动清单现在就动手给下一个发版周期省出半天时间安装执行npm install -g parvineyvazov/json-translator然后jsontt --version确认就绪想从源码跑通全流程也可以git clone https://gitcode.com/gh_mirrors/js/json-translator后按仓库 README 操作跑通第一条命令拿你的en.json执行jsontt en.json --module google --from en --to zh-CN打开同目录下新生成的zh-CN.json检查占位符和结构建立发布流程把--cache和--fallback yes写进你的构建脚本让语言包随每次构建自动增量更新从此告别手动复制粘贴【免费下载链接】json-translatorjsontt - AI JSON Translator with GPT / Gemma / Mixtral / llama other FREE translation modules to translate your json/yaml files into other languages ✅ Check Readme ✌ Supports GPT / Gemma / Mixtral / llama / DeepL / Google / Bing / Libre / Argos项目地址: https://gitcode.com/gh_mirrors/js/json-translator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表