Додати мову
Прийшов код, якого ми не знаємо. Вирішіть, це нова мова чи новий аліас.
Мета: інтеграція надіслала 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-LI → de.
Це розумний дефолт. Закріпіть ті, яким це потрібно: див. Закріпити код провайдера.
Видалення
Мову з мапінгами провайдерів видалити не можна — ви отримаєте конфлікт із їхньою кількістю. Спершу приберіть мапінги. Видалення через каскад тихо втратило б конфігурацію, якої ніхто не збирався позбуватись.
Щоб вивести мову з обігу без видалення, зніміть Active. Вона зникне з вибірок ?active=true, але й далі резолвитиметься, тож наявні записи лишаться читабельними.
Далі
- Language Catalog — що вже є