三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

一条命令,让 JSON 语言包说上百种话:认识 jsontt

一条命令,让 JSON 语言包说上百种话:认识 jsontt

一条命令,让 JSON 语言包说上百种话:认识 jsontt

【免费下载链接】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

周五下午五点,同事小周还在工位上机械地重复同一件事:打开 en.json,复制一行英文,粘进网页翻译,再粘回 JSON,保存,下一行。产品要出海,他得把 400 多行的语言包翻成日语、韩语、法语和德语——照这个速度,周末基本泡汤。这种"复制—粘贴—复制"的死循环,正是今天想介绍给你的开源工具jsontt要解决的问题:它是一个专门翻译 JSON / YAML 文件的小工具,一条命令就能让整个语言包自动完成翻译。

它到底是个什么东西

一句话安利:jsontt 是一个把 JSON / YAML 文件批量翻译成多种语言的命令行工具。你在终端里指一个文件、告诉它从什么语言翻到什么语言,它读完、翻译完、再保存成新的语言版本,全程不用你碰编辑器。

背后可以接 Google、Bing、Libre、Argos 等免费翻译引擎,也能接 GPT、Gemma、Mixtral、Llama 这些 AI 模型,支持的目标语言超过 100 种。

同样一个下午,两种结局

环节手工搬运用 jsontt
打开文件对着 400 行 JSON 深呼吸一条命令指向它
逐条翻译复制 → 粘贴 → 复制自动完成
格式安全手滑就丢逗号、漏引号结构原样保留
多语言每种语言重来一遍全套一次列出所有目标语言
花费时间一个下午起步喝杯水的功夫

数字不夸张:文件越大、目标语言越多,省下的时间越可观。

第一件事:装好它 🏃

前提很简单:电脑里有 Node.js(16 及以上版本)。然后执行全局安装:

npm install -g @parvineyvazov/json-translator

这条命令会把 jsontt 装到全局,之后你在任意目录都能直接用jsontt

接着,把英语语言包翻成简体中文、日语和韩语:

jsontt en.json --module google --from en --to zh-CN ja ko

做完这一步,en.json 旁边会多出三个文件:zh-CN.json、ja.json、ko.json。键名、嵌套结构、数组顺序全都和原文件一模一样,只有值被翻译了。就这么简单。

想自己折腾源码的话,也可以克隆到本地慢慢看:

git clone https://gitcode.com/gh_mirrors/js/json-translator

它的几个小脾气,值得了解

占位符会被温柔对待

语言包里常有{{userName}}{email}这种变量占位符,普通翻译工具常常把它们一起翻掉,前端一渲染就变乱码。jsontt 的做法是先"藏"起来、翻译完再放回原位:

  • 原文:Welcome {{name}}!
  • 译文:欢迎 {{name}}!

建议:给所有动态内容都用{{...}}{...}包起来,它们就是天然的保护罩,谁翻译都动不了。

URL 链接不会被"好心办坏事"

有些翻译服务会把手伸进链接里,把https://example.com翻得面目全非。jsontt 会自动识别字符串里的网址并跳过它,翻译完再原样放回。不用任何配置,默认就管这件事。

引擎随你挑:免费的有,AI 的也有

  • 免费即用:Google、Google 2、Bing、Libre、Argos,装完就能翻。
  • 质量优先:DeepL(需要 DEEPL_API_KEY)、GPT 系列(需要 OPENAI_API_KEY)、Gemma / Mixtral / Llama(需要 GROQ_API_KEY),以及可以本地跑的 llama-cpp。

建议:常规文案用 Google 或 Bing 就够,术语密集、对质量敏感的内容再上 AI 引擎

一次翻译一整串语言

--to后面可以挂一长串语言代码:

jsontt en.json --module bing --from en --to fr de es ja ko

一条命令,五个语言版本一次生成,按语言代码命名,互不覆盖。

深层嵌套?YAML?都不在话下

四层嵌套的对象、数组里的对象、YAML 配置文件,jsontt 都能一层层读下去,翻译完再原样重建。对,YAML 同样支持。

真实场景里怎么用

给前端项目生成多语言包:React、Vue、Angular 的 i18n 文件大多是 JSON。把基础语言文件(比如 en.json)用上面的命令批量生成各语言版本,再人工扫一遍口语化表达,比自己手写快一个量级。

出海产品批量本地化:产品要同时上多个市场,语言包动辄几十个起。把--to列表一次写全,配合--concurrencylimit控制并发,几分钟出全套,中途还能实时看到翻译进度。

配置文件本地化:后端服务的错误提示、通知文案放在 JSON / YAML 里的话,同样可以直接交给 jsontt,键名保持稳定,前端引用完全不受影响。

几个常见疑问,快速回答

Q:免费引擎会不会被限流?没有明说的次数限制,但别把并发调太高,太猛容易被临时限制。

Q:翻译结果放在哪里?和原文件同一个目录,文件名用目标语言代码。

Q:想用 GPT 翻译,要做什么?先设置环境变量OPENAI_API_KEY,再用--module gpt-4o这类参数指定模型。

Q:它会动我原有的 JSON 结构吗?不会。键名、嵌套、数组、格式都保持原样,只翻译值。

新手最容易踩的坑 🕳

并发拉满,然后被翻译服务"请喝茶"--concurrencylimit默认是 3,别一上来就调成 100。翻译量大可以慢慢加到 5、8,给服务留点体面。

用错了语言代码。不同引擎的语言代码不完全一样,比如简体中文在 Google 里是zh-CN,在 Bing 里是zh-Hans。参数报错时,先确认这个引擎认不认这个代码。

忘了配 API Key 就想用 AI 引擎。GPT、Gemma 这些模块会直接要求环境变量里有对应 Key,没配好就只看到报错。先export OPENAI_API_KEY=...再跑命令。

机器翻译的结果直接上线。免费引擎偶尔会把专有名词翻得怪怪的,上线前留十分钟人工扫一遍,产品名、品牌词可以用{{...}}包起来保护。

现在就能开始

后来小周只用了小半天就把五国语言全部搞定,周末过得很踏实。

你不需要学新框架,也不需要写代码,装好它,把语言包丢给一条命令就行。现在就打开终端跑一遍安装命令,找一个现成的语言包文件试试手——第一个文件翻译成功的那一刻,你就再也不想回到复制粘贴的日子了

想深入了解:支持的语言全列表在官方文档,核心翻译逻辑在src/core/,各翻译引擎的实现见src/modules/。

【免费下载链接】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),仅供参考

← 返回列表