保留结构的JSON翻译器 | 免费国际化工具
该工具在浏览器中为JSON文件里的每一条字符串自动标记目标语言代码以便后续翻译处理,同时完整保留原有的键名、数字、布尔值和嵌套数据结构完全不变,适合翻译i18next等国际化语言文件、多语言API响应以及带有复杂嵌套关系的配置文件,避免破坏程序读取所需的原始格式。
JSON结构保留翻译器
此工具可在保留JSON对象结构的同时翻译其内容。将您的JSON粘贴到左侧面板,选择目标语言,即可在右侧看到翻译输出。
翻译结果将在此处显示...
使用说明
- 将您的JSON对象粘贴到源JSON字段。
- 从下拉菜单中选择目标语言。
- 翻译后的JSON将自动出现在右侧面板。
- 点击复制按钮,将翻译后的JSON复制到剪贴板。
文档
什么是 JSON 结构保留翻译器?
JSON 结构保留翻译器是一种遍历 JSON 文档、只修改其中文本值的工具。对象键、数字、true/false 值和 null 都保持原样不变。只有字符串会被处理。
此版本的工具不会将任何文本发送到翻译服务。它完全在浏览器中运行。对于找到的每个字符串,它都会在原文本前面加上方括号括起的目标语言代码,例如 [es] Hello。这样,开发者就能准确预览 JSON 文件中哪些部分会被翻译,并在连接实际翻译服务之前确认结构能够在处理后保持不变。
工作原理
JSON 有四种基本类型(字符串、数字、布尔值和 null)和两种结构化类型(对象和数组)。数组是有序的值列表。对象是一组名称/值对,其中每个名称(键)都是字符串。
工具在 JSON 树的每一层重复应用一条规则:
- 如果值是字符串,就在其前面加上方括号括起的目标语言代码:
text变为[code] text。空字符串保持为""。 - 如果值是数字、true、false或null,则保持不变。
- 如果值是数组,则按相同顺序对每一项应用此规则。
- 如果值是对象,则对每个值应用此规则,并保持所有键不变。
工具首先检查输入 JSON 的语法是否有效。如果 JSON 无法解析,它会停止并显示错误,而不是进行猜测。
如何使用工具
- 把 JSON 对象粘贴到左侧的“源 JSON”字段中。
- 从下拉菜单中选择目标语言。共有九种语言可选:西班牙语、法语、德语、意大利语、葡萄牙语、中文、日语、韩语和俄语。
- 右侧面板会自动更新。无需点击任何按钮。
- 点击“复制”即可将结果复制到剪贴板。
- 点击“全部清除”即可重置两个面板并重新开始。
示例
输入 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 或数组中的数组,会怎样处理? 工具会处理每一层(无论多深)以及每个数组元素,每次都应用相同的规则。
参考文献
- 互联网工程任务组。RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format。RFC 8259 — 四种基本类型和两种结构化类型、有序数组,以及名称为字符串的名称/值对对象。
- MDN Web 文档(Mozilla)。JSON.parse()。JSON.parse() 参考 — JSON 不允许尾随逗号,字符串必须使用双引号,而不是单引号。