跳至内容

保留结构的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 有四种基本类型(字符串、数字、布尔值和 null)和两种结构化类型(对象和数组)。数组是有序的值列表。对象是一组名称/值对,其中每个名称(键)都是字符串。

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

  • 如果值是字符串,就在其前面加上方括号括起的目标语言代码:text 变为 [code] text。空字符串保持为 ""。
  • 如果值是数字、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保持不变
对象键始终保持不变
数组顺序始终保持不变
空字符串""保持不变

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

常见错误

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

“翻译失败。请重试。” 这条消息只在一种特定情况下出现:粘贴的输入只有单独一个词 null,没有别的内容。由于没有可遍历的结构,工具无内容可处理。把该值包在一个对象里,例如 {"value": null},即可避免这种情况。

输入框留空时会显示一条占位消息,不会被视为错误。

为什么保留结构很重要

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

常见问题

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

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

它会更改我的对象键或数字吗? 不会。键、数字、true/false 和 null 在每一层嵌套中(包括数组内部)都会原样通过。

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

我可以把它用于 i18next 或类似的翻译文件吗? 输出保留与输入相同的键结构,因此适用于任何要求各语言文件之间键相互匹配的框架。字符串值本身在使用前仍需替换为真正的译文。

对于深层嵌套的 JSON 或数组中的数组,会怎样处理? 工具会处理每一层(无论多深)以及每个数组元素,每次都应用相同的规则。

参考文献

  1. 互联网工程任务组。RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format。RFC 8259 — 四种基本类型和两种结构化类型、有序数组,以及名称为字符串的名称/值对对象。
  2. MDN Web 文档(Mozilla)。JSON.parse()。JSON.parse() 参考 — JSON 不允许尾随逗号,字符串必须使用双引号,而不是单引号。