返回博客
Four regional language code badges — fr-CA, pt-BR, es-MX, en-GB — connecting to a single API endpoint.

PolyLingo 现已支持区域语言代码:fr-CA、pt-BR、es-MX 等

By Robert M

PolyLingo 现已支持区域语言代码:fr-CA、pt-BR、es-MX 等

您现在可以直接将区域方言代码作为 PolyLingo 中的翻译目标传递。fr-CApt-BRes-MXen-GB 以及其他几个代码现在都是您 targets 数组中的有效值,可以与它们的通用对应代码一起使用,也可以替代它们。

调用 API 的方式没有变化。使用相同的端点,相同的请求格式。您只是有了更多有效代码可供选择。


新增内容

新增了七个符合 BCP-47 标准的区域代码:

代码语言
en-GB英语(英国)
fr-CA法语(加拿大)
es-ES西班牙语(西班牙)
es-MX西班牙语(墨西哥)
pt-PT葡萄牙语(葡萄牙)
pt-BR葡萄牙语(巴西)
zh-HK中文(香港)

这些代码与现有的 zh-TW(繁体中文)并列,后者已经使用相同的 BCP-47 规范。目标数量上限也从 36 提升到了 50,以满足团队在一次调用中处理多个区域变体的需求。


为什么区域代码很重要

当您的受众广泛或混合时,通用语言代码(frptes)是可以接受的。但当您向特定国家发布产品时,通用代码往往不够准确。

巴西葡萄牙语和欧洲葡萄牙语在词汇、拼写和语体上存在差异,这些差异对母语者来说非常重要。墨西哥西班牙语和卡斯蒂利亚西班牙语相似度较高,以至于通用翻译对两者来说既不显得陌生,也不完全自然。加拿大法语有其自身的惯例,与巴黎法语存在明显差异,这对魁北克人来说一目了然。

如果您面向特定市场销售,该市场应获得专为其编写的翻译。区域代码使这一点成为可能,无需单独的 API 调用或工作流程。


同一次调用,多种变体

通用代码和区域代码可以共存于同一请求中。每个代码在响应中都有自己的键:

curl -sS -X POST "https://api.usepolylingo.com/v1/translate" \
  -H "Authorization: Bearer $POLYLINGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Your order has been confirmed.",
    "targets": ["fr", "fr-CA", "pt", "pt-BR"]
  }'
{
  "translations": {
    "fr":    "Votre commande a été confirmée.",
    "fr-CA": "Votre commande a été confirmée.",
    "pt":    "O seu pedido foi confirmado.",
    "pt-BR": "O seu pedido foi confirmado."
  }
}

您会收到四个键值对,每个代码对应一个。如果 frfr-CA 对同一字符串产生相同输出,这是预期的——它们会在词汇和语体上根据差异产生不同的翻译。


仅针对特定市场

如果您只针对已知市场且不需要通用变体,只需传递区域代码:

curl -sS -X POST "https://api.usepolylingo.com/v1/translate" \
  -H "Authorization: Bearer $POLYLINGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Sign in to your account.",
    "targets": ["en-GB", "es-MX", "pt-BR", "zh-HK"]
  }'

在 Node.js 中构建特定市场的目标列表

import { PolyLingo } from '@polylingo/node'

const client = new PolyLingo(process.env.POLYLINGO_API_KEY)

const result = await client.translate({
  content: 'Free shipping on orders over $50.',
  targets: ['es', 'es-MX', 'es-ES', 'pt', 'pt-BR', 'pt-PT'],
})

console.log(result.translations['es-MX']) // 墨西哥西班牙语
console.log(result.translations['pt-BR']) // 巴西葡萄牙语

一次请求覆盖拉丁美洲和伊比利亚市场。无需循环,也无需按区域分批。


在 Python 中按市场翻译 JSON 文件

import os, requests

client = requests.Session()
client.headers['Authorization'] = f"Bearer {os.environ['POLYLINGO_API_KEY']}"

markets = {
    'latam':  ['es-MX', 'pt-BR'],
    'europe': ['en-GB', 'fr', 'es-ES', 'pt-PT', 'de', 'it'],
    'asia':   ['zh-HK', 'zh-TW', 'zh', 'ja', 'ko'],
}

content = '{"cta": "Start your free trial"}'

for region, targets in markets.items():
    r = client.post(
        'https://api.usepolylingo.com/v1/translate',
        json={'content': content, 'format': 'json', 'targets': targets},
        timeout=120,
    )
    r.raise_for_status()
    print(f"\n{region.upper()}")
    for code, text in r.json()['translations'].items():
        print(f"  {code}: {text}")

运行时发现支持的代码

如果您正在构建语言选择器或动态目标列表,无需硬编码任何内容。GET /languages 返回完整列表,包括所有区域变体。通过筛选包含连字符的代码来专门获取方言:

const res = await fetch('https://api.usepolylingo.com/v1/languages')
const { languages } = await res.json()

const dialects = languages.filter(l => l.code.includes('-'))
console.log(dialects)
// [
//   { code: 'en-GB', name: '英语(英国)',           rtl: false },
//   { code: 'fr-CA', name: '法语(加拿大)',         rtl: false },
//   { code: 'es-ES', name: '西班牙语(西班牙)',         rtl: false },
//   { code: 'es-MX', name: '西班牙语(墨西哥)',        rtl: false },
//   { code: 'pt-PT', name: '葡萄牙语(葡萄牙)',   rtl: false },
//   { code: 'pt-BR', name: '葡萄牙语(巴西)',     rtl: false },
//   { code: 'zh-TW', name: '中文(繁体)',  rtl: false },
//   { code: 'zh-HK', name: '中文(香港)',     rtl: false },
// ]

何时使用通用代码,何时使用区域代码

使用通用代码ptfres)当您的受众地理分布广泛或未知,刚进入某个市场且需要广泛覆盖,或者内容足够技术化,区域差异不大时。

使用区域代码pt-BRfr-CAes-MX)当您面向特定国家发布产品,产品体验在其他方面本地化(定价、货币、日期格式),内容偏向对话或营销,语体很重要,或者您知道用户会注意到差异时。

这两种方式可以在同一请求中共存。常见模式是将通用代码作为后备,区域代码用于特定市场体验,两者在一次响应中返回。


现有用户无需担心

所有现有语言代码继续按原样工作。新增代码是附加的。如果您当前传递 fr,仍会得到相同输出。如果您需要加拿大法语,添加 fr-CA 到您的目标列表即可。两者可以在同一次调用中共存,互不冲突。


在 usepolylingo.com 获取您的 API 密钥 — 免费套餐每月包含 50,000 个令牌。