Головна/Мови/Каталог мов ENУКРРУС API-довідник (ReDoc) ↗

Каталог мов

Що в каталозі, що означає кожне поле мови і які рядки варто знати.

503 мови і 324 вхідні аліаси, куровані під тих провайдерів, якими платформа справді користується.

Перегляд

curl "https://languages.service.custom.mt/v1/languages?q=portuguese"
curl "https://languages.service.custom.mt/v1/languages?kind=regional&limit=50"
curl "https://languages.service.custom.mt/v1/languages/pt-BR"

q шукає по назві, канонічному коду й кожному аліасу, тож Brazil, pt-br і por-br знаходять той самий рядок.

Параметр Що робить
q вільний текст по назві, канонічному коду й аліасах
kind base або regional
active true ховає рядки, збережені лише для трасування
limit, offset пагінація; total у відповіді — кількість без пагінації

Що несе рядок мови

Поле Значення
code канонічний код BCP-47 — зберігайте саме його
name англійська відображувана назва
kind base (без кваліфікатора) або regional
base_language_code для регіонального варіанта — мова, яку він уточнює
script, region розпарсено з коду, для фільтрів
is_active false для рядків, збережених для трасування, але непридатних
also_known_as інші назви, під якими відома та сама мова
aliases усі вхідні написання, що резолвляться сюди

code, kind і base_language_code — три поля, які вирішують, як зарезолвиться пара; див. Resolution Ladder. Решта — описові.

Одна мова, кілька назв

Ту саму мову різні інструменти часто називають по-різному — «Norwegian (Bokmål)» і «Norwegian (Norway)», «Chinese (Simplified)» і «Chinese (PRC)». Каталог тримає один рядок на мову, а інші назви — в also_known_as, тож пошук за будь-якою з них влучає.

Неактивні рядки

Зараз усі рядки каталогу активні. Параметр active і поле is_active лишаються частиною контракту API: мову можна деактивувати, не видаляючи, тож викликачеві, який будує список мов, варто й далі фільтрувати через ?active=true, а не покладатися на те, що цей інваріант вічний.

Вибір канонічного коду

Де мова має кілька правдоподібних написань, канонічне — значення в code, те, яке ви зберігаєте, — обирається так:

  1. придатний дволітерний код ISO 639-1, якщо мова його має,
  2. далі менше субтегів — канонічний код не має нести кваліфікатор, який йому не потрібен. Себуанська — ceb, а не ceb-Latn-PH; сербська кирилиця — sr-Cyrl, а не sr-Cyrl-RS,
  3. далі найканонічніше написання BCP-47.

Відкинуті кваліфікатори лишаються аліасами, тож точність на вході збережена: ceb-Latn-PH досі резолвиться й віддає ceb.

Зверніть увагу: це не те, як обирається вихідний код провайдера. Що приймає API провайдера — це факт про той API, і довжина тут ні до чого; див. Providers and Vendors.

Пари, на які відповідає драбина, а не рядок

Більшість пар (провайдер, мова) нині мають явний рядок — налаштований прямо з того, що документує кожен провайдер. Решта резолвляться через драбину фолбеків, і це нормально: драбина зрізає регіональний тег до базової мови, яку провайдер напевно розуміє, і для таких пар це правильна відповідь.

Де вона безсила — це провайдер, чиї прийнятні коди взагалі не BCP-47. Зрізати zh-TW до zh — розумна здогадка у світі BCP-47; але це просто не той словник для API, яке пише традиційну китайську як cht. Такі пари мають явні рядки:

Провайдер Мова Код Чому драбина не впоралась
baidu_translate zh-TW cht власний набір кодів Baidu — zh, cht, jp, kor
baidu_translate ja jp базова мова, тож драбина віддала б ja без змін
baidu_translate ko kor те саме
deepl_api en-GB EN-GB DeepL розрізняє регіональні англійські
deepl_api en-US EN-US те саме

Усі п'ять відповідають match: exact.

У baidu_translate + zh-CN рядка свідомо немає: слово Baidu для спрощеної китайської — це zh, тобто рівно те, що виводить драбина.

Урок узагальнюється. Якщо прийнятні коди провайдера — це власний словник, а не конвенція написання, чекайте явних рядків і ставтесь до виведеної відповіді там з підозрою: match і каже, що саме ви отримали. Див. Resolution Ladder.

Далі