Powrót do bloga
Four regional language code badges — fr-CA, pt-BR, es-MX, en-GB — connecting to a single API endpoint.

PolyLingo obsługuje teraz regionalne kody językowe: fr-CA, pt-BR, es-MX i więcej

By Robert M

PolyLingo teraz obsługuje regionalne kody językowe: fr-CA, pt-BR, es-MX i inne

Możesz teraz przekazywać regionalne kody dialektów bezpośrednio jako cele tłumaczenia w PolyLingo. fr-CA, pt-BR, es-MX, en-GB i kilka innych to teraz prawidłowe wartości w twojej tablicy targets, obok lub zamiast ich ogólnych odpowiedników.

Nic się nie zmienia w sposobie wywoływania API. Ten sam endpoint, ten sam kształt zapytania. Masz po prostu więcej prawidłowych kodów do wyboru.


Co zostało dodane

Siedem nowych regionalnych kodów zgodnych ze standardem BCP-47:

KodJęzyk
en-GBAngielski (Wielka Brytania)
fr-CAFrancuski (Kanada)
es-ESHiszpański (Hiszpania)
es-MXHiszpański (Meksyk)
pt-PTPortugalski (Portugalia)
pt-BRPortugalski (Brazylia)
zh-HKChiński (Hongkong)

Te kody występują obok istniejącego zh-TW (chiński tradycyjny), który już używał tej samej konwencji BCP-47. Limit celów został również podniesiony z 36 do 50, aby umożliwić zespołom korzystanie z wielu regionalnych wariantów w jednym wywołaniu.


Dlaczego regionalne kody mają znaczenie

Ogólne kody językowe (fr, pt, es) są w porządku, gdy twoja publiczność jest szeroka lub mieszana. Ale gdy dostarczasz produkt do konkretnego kraju, ogólne kody często nie są wystarczające.

Portugalski brazylijski i europejski różnią się słownictwem, pisownią i stylem w sposób istotny dla rodzimych użytkowników. Hiszpański meksykański i kastylijski są na tyle podobne, że ogólne tłumaczenie nie brzmi ani obco, ani całkowicie naturalnie. Francuski kanadyjski ma własne konwencje, które różnią się od paryskiego francuskiego w sposób natychmiast zauważalny dla mieszkańca Quebecu.

Jeśli sprzedajesz na konkretny rynek, ten rynek zasługuje na tłumaczenie napisane specjalnie dla niego. Regionalne kody umożliwiają to bez konieczności osobnego wywołania API lub osobnego przepływu pracy.


To samo wywołanie, wiele wariantów

Ogólne i regionalne kody mogą współistnieć w tym samym żądaniu. Każdy otrzymuje własny klucz w odpowiedzi:

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."
  }
}

Otrzymujesz cztery klucze z powrotem, po jednym na kod. Jeśli fr i fr-CA dają ten sam wynik dla danego tekstu, jest to oczekiwane — będą się różnić słownictwem i stylem tam, gdzie różnica ma znaczenie.


Kierowanie tylko na konkretny rynek

Jeśli tworzysz dla znanego rynku i nie potrzebujesz wariantu ogólnego, po prostu przekaż kod regionalny:

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"]
  }'

Tworzenie listy celów specyficznych dla rynku w 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']) // Hiszpański meksykański
console.log(result.translations['pt-BR']) // Portugalski brazylijski

Jedno żądanie obejmuje zarówno rynki Ameryki Łacińskiej, jak i Półwyspu Iberyjskiego. Bez pętli, bez grupowania według regionu.


Tłumaczenie plików JSON na rynek w Pythonie

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}")

Odkrywanie obsługiwanych kodów w czasie działania

Jeśli tworzysz wybierak języka lub dynamiczną listę celów, nie musisz nic kodować na sztywno. GET /languages zwraca pełną listę wraz ze wszystkimi regionalnymi wariantami. Filtruj po kodach zawierających myślnik, aby uzyskać dialekty:

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 },
// ]

Kiedy używać kodu ogólnego, a kiedy regionalnego

Używaj kodu ogólnego (pt, fr, es), gdy twoja publiczność jest geograficznie mieszana lub nieznana, gdy dopiero zaczynasz na rynku i chcesz szerokiego zasięgu, lub gdy treść jest na tyle techniczna, że różnice regionalne prawdopodobnie nie mają znaczenia.

Używaj kodu regionalnego (pt-BR, fr-CA, es-MX), gdy wysyłasz do konkretnego kraju, gdy doświadczenie produktu jest lokalizowane w inny sposób (ceny, waluta, formaty dat), gdy twoja treść jest konwersacyjna lub marketingowa i styl ma znaczenie, lub gdy wiesz, że użytkownicy zauważą różnicę.

Oba podejścia mogą współistnieć w tym samym żądaniu. Powszechny wzorzec to użycie kodu ogólnego jako zapasowego i kodu regionalnego dla doświadczenia konkretnego rynku, oba zwracane w jednej odpowiedzi.


Nic się nie psuje dla obecnych użytkowników

Wszystkie istniejące kody językowe działają dokładnie tak jak wcześniej. Nowe kody są dodatkiem. Jeśli obecnie przekazujesz fr, nadal będziesz otrzymywać ten sam wynik. Jeśli chcesz konkretnie francuski kanadyjski, dodaj fr-CA do swoich celów. Oba mogą współistnieć w tym samym wywołaniu bez konfliktów.


Pobierz swój klucz API na usepolylingo.com — darmowy plan obejmuje 50 000 tokenów miesięcznie.