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

Каталог мов

Що в каталозі, звідки воно і що робити з дивними рядками.

348 мов, 237 аліасів, засіяно з бази легасі-консолі й курується далі.

Перегляд

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 знаходять той самий рядок.

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

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

legacy_language_ids — це слід аудиту назад у консоль. Більше одного id означає, що сід злив дублікати.

Злиття

П'ять пар рядків консолі описували ту саму мову під різними id і були об'єднані:

Канонічний Залишено Влито
fa Persian (41) Persian (222) — прямий дублікат
uk Ukrainian (320) Ukrainian (Ukraine uk) (162)
zh-CN Chinese (Simplified) (217) Chinese (PRC) (271)
zh-TW Chinese (Traditional) (176) Chinese (Taiwan) (278)
nb Norwegian (Bokmal) (221) Norwegian (Norway) (203)

Обидва id лишаються в legacy_language_ids, а відкинута назва — в also_known_as, тож пошук за будь-яким id консолі досі влучає правильно.

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

Шість рядків консолі не мали ні дволітерної абревіатури, ні жодного регіонального коду — жодного коду взагалі, тож у них нічого не могло зарезолвитись:

Serbian (Cyrillic-Trados) · Chinese (SmartCat) · Serbian (Cyrillic-XTM) · Serbian (Latin-Trados) · Chinese (Hong Kong-2) · Chin

Вони імпортовані з кодом-заглушкою x-… і is_active: false, а не викинуті, — інформація не втрачена, і оператор може дати їм справжній код із адмінки. Відфільтрувати: ?active=true.

Більшість — це специфічні для інтеграцій дублікати вже наявних мов (Serbian (Cyrillic-Trados) — це sr-Cyrl). Chin — реальна мовна сім'я, якій так і не дали код.

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

Де мова мала кілька написань, канонічне обирається так:

  1. придатна дволітерна abbreviation — такі рядки і є базовими мовами ISO 639-1,
  2. інакше: прапорець is_default консолі — явний людський вибір,
  3. далі менше субтегів — канонічний код не має нести кваліфікатор, який йому не потрібен. Себуанська — ceb, а не ceb-Latn-PH; сербська кирилиця — sr-Cyrl, а не sr-Cyrl-RS. Відкинуті кваліфікатори лишаються аліасами, тож точність на вході збережена,
  4. далі найканонічніше написання BCP-47,
  5. далі найменший легасі-id — те, що невпорядкований .first() консолі віддає сьогодні, тож нічиї зберігають поточну поведінку.

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

Відомі прогалини, які варто виправити

Каталог успадкував сліпі плями консолі. Вони видимі в адмінці на екрані покриття й є хорошими першими правками:

Baidu і традиційна китайська

Baidu має власний набір кодів (zh, cht, jp, kor), не BCP-47. Без явного рядка zh-TW фолбечиться в zh — це те, що прод шле сьогодні, і це неправильно: Baidu хоче cht. Закріпити — одна правка; див. Закріпити код провайдера.

[!warning] Регіональні англійська й португальська в DeepL У DeepL три явні рядки (zh-CN, zh-TW, pt-BR). en-GB фолбечиться в en, хоча DeepL приймає і розрізняє EN-GB і EN-US.

Ні те, ні те не є регресом — обидва збігаються з поточною поведінкою консолі. Просто тепер вони видимі.

Далі