跳至内容

保留结构的JSON翻译器 | 免费国际化工具

该工具在浏览器中为JSON文件里的每一条字符串自动标记目标语言代码以便后续翻译处理,同时完整保留原有的键名、数字、布尔值和嵌套数据结构完全不变,适合翻译i18next等国际化语言文件、多语言API响应以及带有复杂嵌套关系的配置文件,避免破坏程序读取所需的原始格式。

JSON结构保留翻译器

此工具可在保留JSON对象结构的同时翻译其内容。将您的JSON粘贴到左侧面板,选择目标语言,即可在右侧看到翻译输出。

翻译结果将在此处显示...

使用说明

  1. 将您的JSON对象粘贴到源JSON字段。
  2. 从下拉菜单中选择目标语言。
  3. 翻译后的JSON将自动出现在右侧面板。
  4. 点击复制按钮,将翻译后的JSON复制到剪贴板。
加载计算器...
📚

文档

什么是 JSON 结构保留翻译器?

JSON 结构保留翻译器是一种遍历 JSON 文档、只修改其中文本值的工具。对象键、数字、true/false 值和 null 都保持原样不变。只有字符串会被处理。

此版本的工具不会将任何文本发送到翻译服务。它完全在浏览器中运行。对于找到的每个字符串,它都会在原文本前面加上方括号括起的目标语言代码,例如 [es] Hello。这样,开发者就能准确预览 JSON 文件中哪些部分会被翻译,并在连接实际翻译服务之前确认结构能够在处理后保持不变。

工作原理

工具在 JSON 树的每一层重复应用一条规则:

  • 如果值是字符串,就在其前面加上方括号括起的目标语言代码:text 变为 [code] text。空字符串保持为 ""。
  • 如果值是数字、true、false或null,则保持不变。
  • 如果值是数组,则按相同顺序对每一项应用此规则。
  • 如果值是对象,则对每个值应用此规则,并保持所有键不变。

整个文档不一定是对象。JSON 文本可以是任意单个值,因此单独的数组、字符串、数字、true、false或null也会被接受,并按相同规则处理。

工具首先检查输入 JSON 的语法是否有效。如果 JSON 无法解析,它会停止并显示错误,而不是进行猜测。

如何使用工具

  1. 将 JSON 粘贴到左侧的“源 JSON”字段中。对象、数组或单个值均可。
  2. 从下拉菜单中选择目标语言。共有九种语言可选:西班牙语、法语、德语、意大利语、葡萄牙语、中文、日语、韩语和俄语。
  3. 右侧面板会自动更新。无需点击任何按钮。
  4. 点击“复制”即可将结果复制到剪贴板。
  5. 点击“全部清除”即可重置两个面板并重新开始。

计算示例

输入 JSON:

1{
2  "app": {
3    "title": "My Store",
4    "version": 2,
5    "isBeta": false,
6    "tags": ["sale", "new"]
7  }
8}
9

选择西班牙语(es)作为目标语言后,工具会生成:

1{
2  "app": {
3    "title": "[es] My Store",
4    "version": 2,
5    "isBeta": false,
6    "tags": [
7      "[es] sale",
8      "[es] new"
9    ]
10  }
11}
12

请注意,"title"和"tags"仍然是键,2和false保持不变,只有字符串值会添加[es]标签。嵌套结构和数组顺序与输入完全相同。

哪些内容会改变,哪些内容保持不变

JSON 元素结果
字符串值添加[language code]前缀
编号保持不变
true / false保持不变
null保持不变
对象键始终保持不变,包括字面名称为__proto__的键
数组顺序始终保持不变
空字符串""保持不变

对于结构本身承载含义的文件,这一点尤其重要,例如 Web 应用使用的 i18n(国际化)文件,或客户端代码按键名读取的 API 响应。如果像"welcomeMessage"这样的键在翻译过程中发生变化,查找welcomeMessage的代码就会失效。此工具从不处理键,因此这里不存在这种风险。

常见错误

“JSON 格式无效。请检查输入。” 当粘贴的文本不是有效 JSON 时会显示此消息。常见原因包括条目之间缺少逗号、最后一项后多出逗号、使用单引号而不是双引号,或字符串中包含未转义的特殊字符。先使用 JSON 验证器检查输入,有助于找到确切位置。

“翻译失败。请重试。” 这是非语法错误导致失败时显示的备用消息。这种情况很少见。最可能的原因是输入过大,导致格式化结果超过浏览器对单段文本长度的限制。将超大文件拆分成较小部分即可避免此问题。

将输入字段留空会显示占位提示,但不会被视为错误。粘贴单个值null也不是错误:null是有效 JSON,工具会返回null。

为什么保留结构很重要

存储应用翻译的 JSON 文件,例如en.json和fr.json,通常需要使用相同的键,以便外围代码能够在任何语言中通过相同路径进行查找,例如user.profile.displayName。按字段名读取的 API 响应也是如此;对于配置文件,键名变化还可能导致部署失败。在将这些字符串发送到实际翻译服务或交由译者审核之前,保留结构并标记可翻译字符串是一个有用的初始步骤。

常见问题

此工具会调用实际的翻译服务吗? 不会。它只在浏览器中运行,不会将数据发送到任何地方。它会用目标语言代码标记每个字符串,而不是生成译文。

为什么我的输出显示的是[es] Hello而不是Hola? 这个方括号标签是当前版本的占位行为。它显示哪些字符串将被翻译以及要翻译成哪种语言,但不会执行实际翻译。

它会更改我的对象键或数字吗? 不会。键、数字、true/false和null在每一层嵌套中都会原样保留,包括数组内部的值。即使是容易引发问题的键名也同样如此,例如__proto__,某些 JavaScript 代码可能会意外丢弃它。

它需要互联网连接吗? 不需要。解析和标记都在浏览器标签页本地完成。

我可以将它用于 i18next 或类似的翻译文件吗? 输出会保留与输入相同的键结构,因此适用于任何要求不同语言文件使用匹配键的框架。不过,字符串值在使用前仍需替换为实际译文。

对于深度嵌套的 JSON 或数组中的数组,会如何处理? 工具会处理每一层结构,无论嵌套多深,也会处理每个数组项,并在每次处理时应用相同规则。

参考文献