Повернутися до блогу
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-CA, pt-BR, es-MX, en-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, щоб врахувати команди, які працюють з кількома регіональними варіантами в одному виклику.


Чому регіональні коди важливі

Загальні коди мов (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": "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."
  }
}

Ви отримуєте чотири ключі, по одному на код. Якщо 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": "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']) // Бразильська португальська

Один запит охоплює як латиноамериканський, так і іберійський ринки. Без циклів, без пакетної обробки за регіонами.


Переклад JSON-файлів за ринками в Python

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: 'English (UK)',           rtl: false },
//   { code: 'fr-CA', name: 'French (Canada)',         rtl: false },
//   { code: 'es-ES', name: 'Spanish (Spain)',         rtl: false },
//   { code: 'es-MX', name: 'Spanish (Mexico)',        rtl: false },
//   { code: 'pt-PT', name: 'Portuguese (Portugal)',   rtl: false },
//   { code: 'pt-BR', name: 'Portuguese (Brazil)',     rtl: false },
//   { code: 'zh-TW', name: 'Chinese (Traditional)',  rtl: false },
//   { code: 'zh-HK', name: 'Chinese (Hong Kong)',     rtl: false },
// ]

Коли використовувати загальний код, а коли регіональний

Використовуйте загальний код (pt, fr, es), коли ваша аудиторія географічно змішана або невідома, коли ви тільки починаєте роботу з ринком і хочете широкого охоплення, або коли контент технічний і регіональні відмінності навряд чи матимуть значення.

Використовуйте регіональний код (pt-BR, fr-CA, es-MX), коли ви доставляєте продукт до конкретної країни, коли досвід продукту локалізований іншими способами (ціни, валюта, формати дат), коли ваш контент розмовний або маркетинговий і важливий стиль, або коли ви знаєте, що користувачі помітять різницю.

Обидва підходи можуть співіснувати в одному запиті. Поширена практика — використовувати загальний код як запасний варіант, а регіональний код для досвіду конкретного ринку, обидва повертаються в одній відповіді.


Нічого не ламається для існуючих користувачів

Всі існуючі коди мов продовжують працювати так само, як і раніше. Нові коди є додатковими. Якщо ви зараз передаєте fr, ви й надалі отримуватимете той самий результат. Якщо хочете саме канадську французьку, додайте fr-CA до ваших цілей. Обидва можуть співіснувати в одному виклику без конфліктів.


Отримайте свій API ключ на usepolylingo.com — безкоштовний тариф включає 50 000 токенів на місяць.