JsonTranslate 实用指南:怎样让你的项目说上 37 种语言?
JsonTranslate,一款专为开发者和内容创作者设计的多语言 JSON 翻译工具,支持 Google Translate、Azure 和 DeepL(X) 翻译 API,助力项目国际化和本地化。无论你是在开发多语言网站、应用程序还是处理多语言数据集,JsonTranslate 都能提供简便的解决方案,轻松将 JSON 文件中的内容翻译为多种目标语言。

该工具的设计理念与市面上其他多语言翻译器不同。常见的翻译器虽然追求一键自动化,但通常配置繁琐,且往往需要付费订阅。JsonTranslate 的设计初衷是为了解决 ChatGPT Shortcut 和 IMGPrompt 等个人或开源项目中的英汉互译问题而设计,特别适合那些翻译文件不多的项目。
相比传统的全站自动化翻译工具,JsonTranslate 更加注重用户需求。它能针对特定节点或键名进行翻译,大大简化了多语言翻译的流程,使得翻译工作更为高效、精准。它已成功测试了 5 万行 JSON 数据,即使使用免费 API 也能确保翻译全部完成。你只需粘贴需要翻译的文本,即可完成项目 i18n。
翻译模式
全局翻译
全局翻译会遍历 JSON 中的所有键和值,进行整体翻译。对于大多数情况,直接使用全局翻译即可满足需求。
指定节点
用户可以通过指定局部节点的 JSONPath 来遍历该节点下的所有键值对,并对其进行翻译。该模式更适合需要分组处理的翻译任务。
指定键名
用户可以指定特定的键名,JsonTranslate 会根据所选键名对对应的值进行翻译。该模式适合精确翻译特定部分内容。键名(key)是访问 JSON 结构中特定信息的关键,可以由数字、英文字母、中文等非符号字符组成。在命名时需注意大小写的区别。对于包含数组[]
的 JSON 数据,建议避免使用数字作为键名,因为这会被认为是数组索引,从而可能引起混淆或错误。
为了同时指定多个键名的翻译,你可以通过逗号进行分隔 (中英文逗号均可)。如果你刚开始接触 JSON 的键名,不妨参考使用问题中的示例说明,可以帮助你更好地理解键名的格式和使用方式。
使用说明

1. 选择翻译 API
在使用 JsonTranslate 时,你有多种翻译 API 的选择。Google、Azure 和 DeepL Translate 都需要用户自行获取 API 密钥。Google Translate 在常见句子的翻译上较为普遍,特别适合翻译用户界面 UI,每月可免费翻译 50 万字符;DeepL 在长文本翻译方面表现更优,能提供更流畅的翻译结果,每月可免费翻译 50 万字符;Azure Translate 支持语言较多,每月可免费翻译 200 万字符(仅限注册 Azure 后的前 12 个月)。若想申请这些 API,可参考相关的接口申请教程。
此外,JsonTranslate 还提供了 GTX 和 DeepLX 免费翻译接口。DeepLX 通过将 DeepL Free API 转换为本地 API 接口,允许第三方应用进行调用。它无需 API 密钥,适合少量或偶尔的翻译需求。想了解更多关于 DeepLX 的信息,可以访问其 GitHub 页面。

需要注意的是,使用 Google Translate 时,你的翻译数据会从客户端直接发送到 Google 服务器。而 DeepL API 则不支持在网页上使用。因此,JsonTranslate 在服务器端提供了一个专门的 DeepL 翻译转发接口,该接口仅用于数据转发,不会收集任何用户数据。用户可以选择在本地环境中部署并使用这一接口。
2. 语言设置
你可以灵活地选择源语言和目标语言,以实现不同语言之间的相互翻译。目前,JsonTranslate 支持 37 种语言的互译,包括英语、中文、日语、韩语、西班牙语、法语、德语、意大利语、俄语、葡萄牙语、印地语、阿拉伯语等。这些语言涵盖了全球大部分主要语言区域,能满足多样化的用户需求。需要注意的是,印地语和孟加拉语目前仅能通过 Google Translate 进行翻译,因为 DeepL 尚未支持这两种语言。

3. 翻译内容
JsonTranslate 专为 JSON 内容翻译而设计,仅支持 JSON 格式输入。
输入内容变更时,应用会实时格式化 JSON 并验证格式正确性。请避免在输入框内进行大量修改,因为频繁的修改可能增加出错的风险。如果需要对 JSON 文件做大量的编辑或修改,建议先在其他专用的 JSON 编辑工具中完成编辑,确保格式无误后再将内容导入 JsonTranslate 进行翻译。
4. 翻译结果
点击「开始翻译」按钮后,翻译完成可以选择「复制结果」。

结果界面右侧还设有灰色按钮,用于切换翻译节点模式,包括单一键名模式和映射翻译模式。单一键名模式下,翻译的输入输出使用相同节点,而映射翻译模式则涉及不同节点的翻译。例如,节点 A 的值将翻译至节点 B,节点 C 的值翻译至节点 D。
使用问题
返回 null
使用 DeepLX 免费接口时,可能会返回 null。请等一会再使用,或使用自己的 API KEY。
JSON 键名及其局限性
JSON 数据是以键值对的形式存储的,其中“键”(也称为“名称”)是一个字符串,用于唯一标识数据记录中的特定项目或元素,是数据检索和操作的基础。JsonTranslate 正是利用了 JSON 键名的标识作用来实现精准化识别翻译。
以下是对示例中的几个键名的解释:
downvote.message
:这是一个嵌套的键名。downvote
是外层对象的键名,而message
是downvote
对象内部的一个键名。提示词.message
:这里提示词
是一个键名,它本身包含一个对象,该对象有一个键message
。share.owner
:这个键名包含了一个点(.
),它是一个单独的键名而不是指示嵌套关系。在这种情况下,如果你想访问share.owner
对象中的name
,你不能使用share.owner.name
,因为这会被错误解释为查找一个名为owner
的对象内的name
键,而实际上share.owner
是一个完整的键名。
{
"downvote": {
"message": "Downvote"
},
"提示词": {
"message": "prompt"
},
"share.owner": {
"name": "rabbit"
},
"data": {
"title": {
"id": "001",
"name": "cabbages"
}
},
"content": [
{
"id": "001",
"value": "Hello, cabbage."
},
{
"id": "002",
"value": "Hello, Radish."
}
]
}
目前,JsonTranslate 无法处理包含点(.
)的 JSON 键名。这是因为点号在 JSONPath 中用于区分嵌套对象的键名,使得含点的键名可能被误解为多层嵌套对象。为避免这一问题,建议使用不含点的键名。
结语
JsonTranslate 是一款适合小型项目和个人开发者的多语言 JSON 翻译工具。它以简单直观的操作和对多种翻译 API 的支持,帮助用户高效处理多语言翻译任务。虽然不能与专业的全站自动化翻译工具如 Crowdin 相媲美,但对于那些追求便利性、面临有限资源或只需处理少量翻译任务的用户来说,JsonTranslate 提供了一种实用且易于上手的解决方案。