Главная/Рецепты/Добавить язык ENУКРРУС API-справочник (ReDoc) ↗

Добавить язык

Пришёл код, которого мы не знаем. Решите, это новый язык или новый алиас.

Цель: интеграция прислала gsw (швейцарский немецкий) или региональный вариант, которого у нас нет и получила language_not_found.

Сначала: это новый язык или написание существующего?

Это и есть всё решение, и ошибка в нём создаёт дубликат, который тихо расщепит ваши данные.

curl ".../v1/normalize?language=gsw"       # known: false — не совпадает вообще ничего
curl ".../v1/normalize?language=de-LI"     # known: true, но language.code = "de"
curl ".../v1/languages?q=german"           # какие варианты немецкого уже есть?

Warning

known: true не означает, что у нас есть именно этот вариант Региональный код, которого у нас нет, деградирует до языка, который он уточняет: de-LI отвечает known: true с language.code: "de". Это намеренно — вызывающий получает пригодный ответ вместо 404, — но это значит, что проверка «есть ли у нас этот вариант?» — это language.code, равный тому, что вы спросили, а не known.

  • Другой вариант со своим поведением перевода → новый язык.
  • Другое написание того, что уже есть (por-br для pt-BR, cmn для zh) → новый алиас. Язык не создавать.

Когда сомневаетесь — выбирайте алиас. Слить два языка потом — ручная работа; удалить лишний алиас — один клик.

Добавить алиас

Admin → Languages → язык → Inbound aliases, введите, Add.

Алиасы хранятся нормализованными, так что POR_BR и por-br — та же строка; достаточно одной.

Если ключ занят, вы получите понятный конфликт с именем текущего владельца. Это правило глобальной уникальности из Aliases and Normalisation делает свою работу: алиас, резолвящийся в два языка, превратил бы входящий резолвинг в подбрасывание монетки.

Добавить язык

Admin → Languages → Add a language: код и название.

Остальное выводится из кода. de-LI становится:

code:  de-LI        kind:  regional
script: —           region: LI
base_language_code: de

Регистр на вводе не важен — zh_hant_hk сохранится как zh-Hant-HK.

Используйте каноническую форму BCP-47

Сначала язык, потом скрипт (с заглавной), потом регион (прописными): sr-Latn-RS, а не sr-RS-Latn. Сервис всё равно переставит, но совпадение с сохранённой формой держит ваши собственные записи опрятными.

Дальше проверьте, что будут отправлять провайдеры

Страница нового языка перечисляет всех провайдеров и то, что каждый получит. Свежий региональный язык обычно показывает base_language везде — de-LIde.

Это разумный дефолт. Закрепите те, которым это нужно: см. Закрепить код провайдера.

Удаление

Язык с маппингами провайдеров удалить нельзя — вы получите конфликт с их количеством. Сначала уберите маппинги. Удаление через каскад тихо потеряло бы конфигурацию, которой никто не собирался лишаться.

Чтобы вывести язык из оборота без удаления, снимите Active. Он исчезнет из выборок ?active=true, но продолжит резолвиться, так что существующие записи останутся читаемыми.

Далее