Провайдери та вендори
26 провайдерів, чому 106 рядків консолі згорнулись у них, і як обирався вихідний код.
curl "https://languages.service.custom.mt/v1/providers"
curl "https://languages.service.custom.mt/v1/providers/deepl_api"
curl "https://languages.service.custom.mt/v1/providers/deepl_api/languages?effective=true"
Каталог
Коди провайдерів — ті самі, що у provider_credentials. Один ідентифікатор резолвить кред там і код мови тут; викликачеві не треба перекладати між двома схемами іменування.
| Вендор | Провайдери |
|---|---|
| OpenAI | openai_api |
| Anthropic | anthropic_api |
| Google Cloud | google_translate, gemini_api |
| Microsoft Azure | microsoft_translator |
| Amazon Web Services | amazon_translate |
| DeepL | deepl_api |
| Translated | modernmt_api, lara_api |
| LanguageWire | languagewire_api |
| SYSTRAN | systran_translate |
| Tencent | tencent_transmart |
| Alibaba Cloud | alibaba_translate |
| Baidu | baidu_translate |
| Naver | papago_translate |
| Supertext | supertext_translate |
| XL8 | xl8_translate |
| Tarjama | tarjama_mt |
| Tahrirchi | tilmoch_api, sayqalchi_api |
| Widn.AI | widn_tower_anthill, widn_tower_sugarloaf, widn_tower_vesuvius |
| Internal | custom_finetuned_mt |
| Yandex Cloud | yandex_translate ⚠ |
| Pangeanic | pangea_mt ⚠ |
Warning
in_credentials_catalog: false
yandex_translate і pangea_mt несуть мапінги консолі — в одного Yandex їх 102, — але запису в provider_credentials ще не мають. Вони лишені тут, щоб наявний трафік і далі резолвився, і позначені в API, щоб викликач бачив: мапінг є, контракту на креди за ним немає.
Чому 106 рядків консолі стали 26
У таблиці translation_provider консолі один рядок на модель: OpenAI GPT 4o-2024-11-20, OpenAI GPT 5-mini-2025-08-07, Gemini 2.5 Pro тощо — плюс рядки *_in_sys / *_out_sys, які є білінговими лічильниками, а не рушіями.
Рядки моделей згортаються у провайдера API свого вендора, бо підтримка мов — це властивість ендпоінта вендора, а не чекпоінта за ним. provider_credentials уже трактує модель як поле конфігурації model_id під одним кредом, а дублювати таблицю на 130 мов для кожної моделі означало б 17 таблиць, які треба тримати синхронними лише для OpenAI.
Білінгові лічильники відкинуті: вони несуть посилання на регіональні коди, скопійовані з батьківської моделі, і їхній імпорт подвоював би кожен мапінг.
Для викликачів нічого не ламається — кожен згорнутий service_name лишається аліасом провайдера:
curl ".../v1/resolve?provider=OpenAiGPT4o_2024_11_20_Provider&language=zh-CN"
# → { "provider": "openai_api", "code": "zh-CN", … }
AutoML-провайдери консолі згортаються так само: GoogleAutoMLProvider адресує google_translate, LaraAutoMLProvider — lara_api. Їхні коди йдуть у ті самі API вендорів.
Як обирався вихідний код
Для 97 пар (провайдер, мова) консоль пропонувала кілька кодів. Переможець обирається так:
- прапорець
is_defaultконсолі на регіональному коді, - дорівнює власному канонічному коду мови — коли конкурує кілька написань і одне з них те, як ми вже називаємо мову, надсилати інше означає розходитись без причини,
- канонічність BCP-47 (
es-419надES-LA), - найновіший легасі-провайдер, що його обрав, — рядки пізніших моделей курувалися свіжіше за зразка 2023 року,
- найменший id регіонального коду — збігається з
.first()консолі при нічиїх.
На відміну від канонічного коду мови, тут коротший тег ніколи не має переваги сам по собі. Якщо API DeepL хоче zh-Hans і тільки zh-Hans — рядок консолі, що це каже, і є фактом; правило 2 спрацьовує лише коли кілька написань справді конкурують.
Кожне написання-програвший стає вхідним аліасом, тож ніщо, що резолвиться сьогодні, не перестає. Усі 97 рішень перелічені в data/seed/REPORT.md.
Явне проти ефективного
# лише пари, які хтось налаштував
curl ".../v1/providers/deepl_api/languages"
# усі мови, включно з фолбеками — те, що провайдер справді отримає
curl ".../v1/providers/deepl_api/languages?effective=true"
У DeepL 3 явні рядки й 348 ефективних. Це не прогалина: базовим мовам рядок не потрібен, а регіональні фолбечаться за Fallback Policies. Смуги покриття в адмінці показують розподіл по провайдерах.
Далі
- Fallback Policies — що відбувається, коли нічого не налаштовано
- Підключити провайдера