标准翻译工具无法理解 JSON。
通用翻译 API 将您的 JSON 视为一大段文本。它们会同时翻译键名和对应值。它们会扁平化嵌套对象。它们会错误地连接字符串。返回的结果是结构破损的 JSON,需要手动修正后才能使用。如果您维护生产应用的本地化文件,您会知道将它们输入标准翻译 API 会带来更多工作而非节省。
问题不仅仅在于键名。标准翻译 API 还会破坏插值变量。像“Hello {name}, you have {count} messages”这样的字符串,返回时变量名被翻译成“Hola {nombre}, tienes {cuenta} mensajes”,这会破坏所有期望原始变量名的运行时环境,导致数小时调试。
对于维护多语言本地化文件的团队来说,这不是理论问题,已经发生过。问题是每次手动修复需要多长时间。
PolyLingo 在翻译前遍历您的 JSON。
PolyLingo 理解 JSON 结构。它递归遍历您的对象,识别包含可翻译文本的字符串值,仅将这些值发送给翻译模型。键名绝不修改。数字、布尔值、null 和非字符串类型原样通过。输出是有效 JSON,结构完全相同——只是字符串值被翻译。
插值变量——{name}、{{count}}、%s 及类似模式——在翻译过程中被识别并完整保留。它们在翻译前被替换为占位符,输出时恢复原样。翻译模型从未将它们视为可翻译文本。
数组处理正确:每个字符串元素被翻译,数字索引和数组结构保持不变。包含字符串和非字符串(数字、对象)的混合数组也被正确遍历,非字符串类型原样通过。
{
"nav_home": "Home",
"nav_pricing": "Pricing",
"hero_title": "Grow your audience globally",
"hero_cta": "Get started for free",
"footer_rights": "All rights reserved."
}{
"nav_home": "Accueil",
"nav_pricing": "Tarifs",
"hero_title": "Développez votre audience mondiale",
"hero_cta": "Commencer gratuitement",
"footer_rights": "Tous droits réservés."
}{
"nav": {
"home": "Home",
"pricing": "Pricing",
"blog": "Blog"
},
"hero": {
"title": "Grow your audience globally",
"subtitle": "Translate in seconds.",
"cta": "Get started for free"
},
"errors": {
"notFound": "Page not found",
"serverError": "Something went wrong"
}
}{
"nav": {
"home": "Inicio",
"pricing": "Precios",
"blog": "Blog"
},
"hero": {
"title": "Expande tu audiencia globalmente",
"subtitle": "Traduce en segundos.",
"cta": "Comienza gratis"
},
"errors": {
"notFound": "Página no encontrada",
"serverError": "Algo salió mal"
}
}curl -X POST https://api.usepolylingo.com/v1/translate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "{\"nav_home\": \"Home\", \"hero_title\": \"Get started\"}",
"format": "json",
"targets": ["es", "fr", "de", "ja", "zh"],
"model": "standard"
}'
# Response:
# {
# "translations": {
# "es": "{\"nav_home\": \"Inicio\", \"hero_title\": \"Empezar\"}",
# "fr": "{\"nav_home\": \"Accueil\", \"hero_title\": \"Commencer\"}",
# ...
# }
# }PolyLingo 对每次 JSON 翻译的保证
- ✓键名绝不修改
- ✓递归处理嵌套对象和数组
- ✓数字、布尔值、null 原样通过
- ✓一次请求支持全部 36 种语言
- ✓自动检测为 JSON,无需格式标志
- ✓支持扁平及深度嵌套的本地化文件
- ✓插值变量({name}、{{count}}、%s)完全保留
- ✓输出为有效 JSON——无需修改即可解析
翻译本地化文件的三步法
粘贴 JSON 或调用 API
使用无代码翻译器进行一次性翻译:粘贴 JSON,选择语言,下载翻译文件。自动化请调用 POST /v1/translate,传入 JSON 内容和目标语言代码。
一次响应获取所有语言
API 返回一个 JSON 对象,每个目标语言一个条目,包含结构完全相同的完整翻译本地化文件。无需逐语言调用,无需循环,一次请求获取所有输出。
将输出文件放入 messages 目录
将每个翻译文件写入 messages/es.json、messages/fr.json、messages/de.json,或您的 i18n 库期望的位置。结构与源文件完全相同,无需额外处理。
JSON 翻译最重要的应用场景
使用 next-intl 或 i18next 的应用国际化
直接翻译 messages/*.json 或 locales/*.json 文件。键名保持不变,嵌套保留,插值变量不变。将文件放入 messages 目录并部署。
CMS 内容导出
无头 CMS 平台通常以 JSON 格式导出结构化内容。PolyLingo 翻译字符串值,同时保留字段名、嵌套内容类型和非字符串值(如日期、布尔值、ID)。
API 响应和配置文件
任何包含可翻译字符串值的 JSON 结构——产品描述、通知模板、通过 API 提供的应用内文案——都可在不修改应用依赖结构的情况下翻译。
关于 JSON 翻译的常见问题
插值变量如 {name} 或 {{count}} 会被保留吗?
会。PolyLingo 识别常见插值模式,包括 {variable}、{{variable}}、%(variable)s 和 %s,翻译前替换为稳定占位符,翻译文本,输出时恢复原变量名。翻译模型从未将变量名视为可翻译内容。
非字符串值(数字、布尔值、null)会怎样?
非字符串值完全原样通过。PolyLingo 仅翻译包含自然语言文本的字符串值。数字、布尔值、null 及非字符串数组均保持与源文件一致。
PolyLingo 能处理深度嵌套的 JSON 结构吗?
能。PolyLingo 递归遍历任意深度的对象结构,翻译结构中所有字符串值,无论嵌套多深。
如果某些键包含不可翻译内容如 slug 或代码怎么办?
PolyLingo 默认翻译所有字符串值。如果有不应翻译的字符串字段(slug、语言代码、技术标识符),建议从发送的 JSON 中排除,或使用即将推出的格式参数显式指定跳过字段。大多数本地化文件中所有字符串值均需翻译。
支持 JSON5 或 JSONC(带注释的 JSON)吗?
目前 PolyLingo 处理标准 JSON。JSON5 和 JSONC(带注释)应预先处理,去除注释并转换为标准 JSON 后再发送。这是构建流程中的常见步骤,开销极小。
一次请求最多支持多少语言?
一次请求最多支持全部 36 种语言。响应包含每个语言代码对应的翻译 JSON 对象。速率限制因套餐而异——免费套餐允许每分钟 10 次请求,Growth 和 Scale 套餐允许每分钟 200–600 次请求。