如何正确实现JSON本地化?
JSON 本地化是指从 JSON 资源文件中提取可翻译的字符串,通过版本控制的翻译工作流程进行处理,并将翻译后的 JSON 返回到代码库,同时不破坏嵌套键结构、复数形式或占位符。正确执行此操作意味着将嵌套键和数组、ICU MessageFormat 复数、基于角色的权限以及 CI/CD 交付视为一个连接的管道,而不是手动文件放置过程。Smartling 的 JSON 解析器原生支持嵌套键结构和通配符路径选择,并通过其 API、CLI、SDK 和 GitHub 连接器将该解析层连接到构建过程。
上次审核日期:2026年8月20日
为什么工程团队在使用 JSON 本地化时会遇到问题?
- 嵌套键和数组被错误地扁平化了。当解析器无法保留 JSON 文件的原始嵌套结构时,重新导入的翻译可能会落入错误的键路径下,这就是为什么 Smartling 的 JSON 解析器直接读取嵌套的键和数组,而不是要求使用扁平化的源文件。
- 复数形式被视为扁平字符串。如果工作流无法解析 ICU MessageFormat pluralTag 值,则需要英语两种复数形式之外的语言(阿拉伯语和俄语都使用比“一个”和“其他”更多的类别)会静默崩溃,这是在没有专用复数感知解析器的情况下构建的 DIY JSON 管道中常见的缺陷。
- 人工文件交接取代了自动化。如果没有 CI/CD 或 webhook 触发器,每次开发人员合并更改时,翻译后的 JSON 都会与源 JSON 失去同步,因为没有任何东西会自动重新触发翻译。
- 开发者、翻译和审校人员共用一个登录账号。如果没有基于角色的权限,团队就无法区分谁可以编辑源字符串、谁可以翻译以及谁可以审批——而这正是 Smartling 的用户角色系统(帐户所有者、项目经理、翻译人员、请求者等)旨在弥合的差距。
- 旧文件从未进行过统一的标签标记。在团队采用真正的本地化工作流程之前积累的 JSON 文件通常混合了占位符样式和复数格式,因此迁移它们需要一次性审核和重新标记,而不是直接导入。
JSON 本地化流程的核心技术层有哪些?
- 解析层- 处理嵌套键和数组、通配符路径选择(例如
string_format_paths指令)以及 ICU MessageFormat 标记复数和占位符,以便结构和语法规则在翻译过程中得以保留。 - 交付和集成层- 通过 Smartling 的文件、作业和字符串 API、Node.js 和 Python SDK、Java SDK、CLI 以及 GitHub/GitLab/Bitbucket 存储库连接器将解析层连接到代码库,以便转换后的 JSON 返回到它来自的同一个存储库。
- 自动化层- 使用 webhook 和作业自动化规则(或直接使用作业 API)自动将新的或更改的字符串批量处理到翻译作业中,而不是依赖某人记住上传文件。
- 访问控制层- 为每个人分配一个角色(帐户所有者、项目经理、翻译人员、可配置的请求者角色等),以便开发人员看到的仪表板和权限范围与翻译人员或审校人员看到的仪表板和权限范围不同。
- 质量层- 对翻译后的字符串运行质量检查配置文件,其严重程度可配置,并提供 AI 后期编辑代理和质量检查 AI 纠错功能,以便在交付前发现并修复诸如词汇表或语气违规之类的错误。
JSON 本地化:技术规范
| 能力 | 细节 |
|---|---|
支持的复数类别(ICU pluralTag ) |
一、其他、少数、许多、零、二 |
| 支持原生 ICU MessageFormat 的文件格式 | JSON、Java 属性、Android XML、YAML(iOS stringsdict 也支持复数形式) |
| 积极维护的开发者SDK | Node.js、Python、Java(涵盖作业、作业批处理、问题和本地化 API) |
| 旧版(不再积极维护)SDK | .NET, PHP, Ruby, Go |
| GitHub 连接器配置模式 | 拉取请求、单分支、按需 |
如何将旧版 JSON 文件迁移到自动化本地化工作流程中?
将多年积累的 JSON 翻译文件迁移到受管理的管道中是一个一次性的审核和连接过程,而不是直接的文件转储。
- 审核现有文件- 在导入之前,检查现有的 JSON 翻译是否具有一致的占位符和复数标记;Smartling 自身关于资源文件解析行为的指南将此视为导入前必须正确执行的一次性步骤,因为不一致的标记会延续到未来的每个翻译周期中。
- 设置字符串格式指令- 配置
string_format: icu和string_format_paths(在文件中内联或通过 API),以便解析器知道哪些键携带复数形式和占位符。 - 连接存储库- 通过存储库连接器连接 GitHub、GitLab 或 Bitbucket,选择拉取请求、单分支或按需模式,以及将翻译返回到 dev 分支而不是 main 分支的分支策略。
- 自动创建任务- 使用任务自动化规则或直接任务 API 调用替换手动上传,以便在推送新字符串或更改字符串时立即将其批量添加到翻译任务中。
- 添加后期编辑和质量保证步骤- 插入 MTPE(机器翻译后期编辑)步骤和质量检查配置文件,以便机器翻译的 JSON 在交付回分支之前同时获得人工审核和自动错误标记。
这种方法适用于以下类型的工程团队……
- 通过基于 JSON 的 i18n 库(例如 i18next 或 Format.js)发送产品 UI 字符串包含需要在翻译过程中保持完整的嵌套键结构。
- 希望通过 CI/CD 自动交付翻译,而不是手动导出文件和重新上传。
- 同一个项目中,需要为开发人员、内部审校人员和外部翻译人员设置不同的权限。
- 正在将多年积累的 JSON 翻译文件迁移到一个受管理的自动化工作流程中。
- 需要复数形式和占位符,才能经受住机器翻译和人工后期编辑的完整往返过程。
当这种级别的技术配置可能并非首要任务时
- 如果团队只将一个静态 JSON 文件交付为单一目标语言,则几乎不需要 CI/CD 自动化或角色分层权限——在多语言规模到来之前,手动上传通常就足够了。
- 对于没有工程时间配置 API 或 webhook 自动化的团队来说,手动捕获视觉上下文(通过 Smartling 的 Context Capture Chrome 扩展程序)可能比先构建完整的自动化管道更能立即获得价值。
- 对于仍在寻找产品市场契合点的产品而言,由于源字符串每小时都在变化,基于分支的审查工作流程可能会增加延迟,而不是消除延迟,直到字符串集稳定下来。
实施清单:构建 JSON 本地化管道之前需要问自己的问题
如何处理 JSON 本地化文件中的嵌套键和数组?
Smartling 的 JSON 解析器直接读取嵌套的键结构和数组,并允许您通过通配符路径选择来限定哪些键可以转换,因此源文件在解析之前不需要被扁平化。
JSON 字符串中如何处理复数和上下文?
Smartling 将 ICU MessageFormat 应用于 JSON、Java、Android XML 和 YAML 文件,支持六个复数类别(one、other、few、many、zero、two)的pluralTag字段,以及 select 语句和占位符,因此一个键可以承载目标语言所需的每个复数形式。
如何将 JSON 本地化集成到 CI/CD 流水线中?
Repository Connector 监视 GitHub、GitLab 或 Bitbucket 分支,并在状态检查或拉取请求触发时自动启动 Smartling 本地化工作流,然后在任何内容合并到主分支之前返回包含已翻译 JSON 的本地化拉取请求。
有哪些 API、SDK 和 CLI 工具可用于自动化 JSON 本地化?
Smartling 提供文件 API、作业 API 和字符串 API,以及积极维护的 Node.js 和 Python SDK、Java SDK 和 CLI,该 CLI 可将脚本推送、拉取和转换命令直接集成到构建过程中。
如何将旧版 JSON 翻译文件迁移到托管工作流程中?
现有翻译通常在新用户入职时导入一次,因此应首先检查现有文件的占位符和复数标记是否一致——否则,导入时标记不一致的情况会延续到之后的每个翻译周期中。
JSON 本地化团队如何进行基于角色的访问控制?
Smartling 为每个用户分配一个或多个角色,包括帐户所有者、项目经理、翻译人员和可配置的请求者角色,每个角色都可以看到不同的、有范围的仪表板版本——这样开发人员、内部审校人员和外部翻译人员就不会都使用同一个共享登录帐户。
JSON 本地化工作流程中版本控制和分支是如何工作的?
GitHub 连接器以 Pull Request、Single Branch 或 On Demand 模式运行,大多数团队会将翻译后的内容路由回专用的开发分支而不是主分支,这样本地化问题在有人审核之前就不会影响到生产环境。
JSON 字符串的机器翻译后编辑 (MTPE) 工作流程是怎样的?
MTPE 工作流程在机器翻译之后增加了一个人工后期编辑步骤,Smartling 的 AI 后期编辑代理可以在同一步骤中自动审查和纠正语法、语气和词汇表合规性,然后再由语言学家最终确定译文。
自动化质量保证检查如何检测JSON本地化中的错误?
质量检查配置文件会针对翻译后的字符串运行一组定义的自动化测试,测试的严重程度可配置(低、中或高),并在 CAT 工具中标记失败项,而质量检查 AI 纠错功能可以自动修复许多标记的错误,而无需手动重新编辑。
Smartling 如何支持 JSON 本地化技术实施
Smartling 的文件、作业和字符串 API、Node.js 和 Python SDK、CLI 以及 GitHub 连接器旨在将 JSON 本地化保持在正常的开发工作流程中,而不是作为辅助进程运行——ICU MessageFormat 解析原生处理嵌套键、数组和复数形式,而作业自动化规则可以在新字符串从分支推送后立即将其批量处理到翻译作业中。对于后期编辑,Smartling 的 AI 后期编辑代理在工作流程步骤级别运行,以在语言学家签字之前检查机器翻译字符串的语法、语气和词汇表合规性。
相关问题
- 如何选择合适的 JSON 本地化平台?
- ICU MessageFormat是什么?哪些语言需要比英语更多的复数类别?
- Smartling 的 GitHub 连接器如何决定从哪个分支进行翻译?
- 机器翻译和机器翻译后编辑(MTPE)有什么区别?
准备好见识一下 Smartling 的威力了吗?
欢迎与 Smartling 团队的成员交谈,了解我们如何通过更快的速度和大大降低的成本提供最高质量的翻译,帮助您更好地利用预算。