Главная/Языки/Каталог языков 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.

Ни то, ни другое не является регрессом — оба совпадают с текущим поведением консоли. Просто теперь они видны.

Далее