
PolyLingoは現在、地域言語コードをサポートしています:fr-CA、pt-BR、es-MXなど
By Robert M
PolyLingoは地域言語コードをサポートしました:fr-CA、pt-BR、es-MXなど
PolyLingoで翻訳ターゲットとして地域方言コードを直接指定できるようになりました。fr-CA、pt-BR、es-MX、en-GBなどが、一般的なコードと並んで、または代わりにtargets配列の有効な値として使えます。
APIの呼び出し方法は変わりません。同じエンドポイント、同じリクエスト形式です。選べる有効なコードが増えただけです。
追加されたもの
BCP-47標準に従った7つの新しい地域コード:
| コード | 言語 |
|---|---|
en-GB | 英語(英国) |
fr-CA | フランス語(カナダ) |
es-ES | スペイン語(スペイン) |
es-MX | スペイン語(メキシコ) |
pt-PT | ポルトガル語(ポルトガル) |
pt-BR | ポルトガル語(ブラジル) |
zh-HK | 中国語(香港) |
これらは既存のzh-TW(中国語繁体字)と並びます。zh-TWも同じBCP-47規約を使っていました。ターゲットの上限も36から50に引き上げられ、複数の地域変種を一度の呼び出しで扱うチームに対応しています。
なぜ地域コードが重要か
一般的な言語コード(fr、pt、es)は、対象が広範または混在している場合には問題ありません。しかし、特定の国に製品を提供する場合、一般的なコードでは十分でないことが多いです。
ブラジルポルトガル語とヨーロッパポルトガル語は、語彙、綴り、文体が母語話者にとって重要な違いがあります。メキシコスペイン語とカスティーリャスペイン語は似ていますが、一般的な翻訳はどちらにも不自然でもなく、完璧に自然でもありません。カナダフランス語はケベックの人にすぐにわかるように、パリのフランス語とは異なる慣習があります。
特定の市場に販売するなら、その市場向けに書かれた翻訳が必要です。地域コードは、別のAPI呼び出しや別のワークフローなしでそれを可能にします。
同じ呼び出しで複数のバリアント
一般的なコードと地域コードは同じリクエスト内で共存できます。レスポンスではそれぞれにキーが割り当てられます:
curl -sS -X POST "https://api.usepolylingo.com/v1/translate" \
-H "Authorization: Bearer $POLYLINGO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "ご注文が確定しました。",
"targets": ["fr", "fr-CA", "pt", "pt-BR"]
}'
{
"translations": {
"fr": "Votre commande a été confirmée.",
"fr-CA": "Votre commande a été confirmée.",
"pt": "ご注文が確定しました。",
"pt-BR": "ご注文が確定しました。"
}
}
コードごとに4つのキーが返されます。frとfr-CAが同じ文字列で同じ出力を生成することもありますが、それは期待されることで、意味のある違いがある場合は語彙や文体が異なります。
特定の市場のみをターゲットにする
既知の市場向けに構築していて一般的なバリアントが不要な場合は、地域コードだけを渡してください:
curl -sS -X POST "https://api.usepolylingo.com/v1/translate" \
-H "Authorization: Bearer $POLYLINGO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "アカウントにサインインしてください。",
"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: '$50以上の注文で送料無料。',
targets: ['es', 'es-MX', 'es-ES', 'pt', 'pt-BR', 'pt-PT'],
})
console.log(result.translations['es-MX']) // メキシコスペイン語
console.log(result.translations['pt-BR']) // ブラジルポルトガル語
1回のリクエストでラテンアメリカとイベリア市場の両方をカバーします。ループや地域ごとのバッチ処理は不要です。
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": "無料トライアルを始める"}'
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 },
// ]
一般コードと地域コードの使い分け
一般コードを使う(pt、fr、es)のは、対象が地理的に混在しているか不明な場合、市場に参入したばかりで広範囲にカバーしたい場合、またはコンテンツが技術的で地域差が重要でない場合です。
地域コードを使う(pt-BR、fr-CA、es-MX)のは、特定の国に出荷する場合、製品体験が他の方法でローカライズされている場合(価格、通貨、日付形式)、コンテンツが会話調やマーケティング向けで文体が重要な場合、またはユーザーが違いに気づくとわかっている場合です。
両方のアプローチは同じリクエスト内で共存できます。一般的なコードをフォールバックに、地域コードを特定市場の体験に使い、両方を1つのレスポンスで返すのが一般的なパターンです。
既存ユーザーには影響なし
既存の言語コードはすべてこれまで通り動作します。新しいコードは追加的なものです。現在frを使っているなら同じ出力が得られます。カナダフランス語が必要ならfr-CAをターゲットに追加してください。両方は同じ呼び出しで共存可能で、競合はありません。
usepolylingo.comでAPIキーを取得 — 無料プランは月50,000トークンを含みます。