Každý termín glosáře, text hlasu značky, pravidlo a konfigurace modelu jsou uložené pro konkrétní jazyk. Když engine zpracovává požadavek na překlad, určí, které uložené položky se na požadovaný jazyk vztahují – porovnává přesné kódy, dědí mezi regionálními variantami a používá fallback, když neexistuje přesná shoda. Stejné vyhodnocení platí pro všechny čtyři konfigurační vrstvy.
Jak to funguje#
Jazyky se při vstupu normalizují do kanonické podoby a v té se pak ukládají i vracejí. Opraví se velikost písmen i oddělovače, podznačky ale zůstávají zachované.
| Zadáte | Uloží se jako |
|---|---|
EN | en |
en_US | en-US |
sr_Latn-RS | sr-Latn-RS |
zh-cn | zh-CN |
Párování funguje obousměrně napříč hranicí podznaček: uložený jazyk se použije pro požadavek, pokud se přesně shoduje nebo je jeden nadřazený druhému. Jako shodné se berou i dva zápisy téhož jazyka, když ani jeden není nadřazený druhému, ale region určuje písmo: varianta pouze s regionem a varianta s uvedeným písmem jsou ekvivalentní (zh-CN ≡ zh-Hans-CN, zh-TW ≡ zh-Hant-TW).
| Uloženo | Použije se pro | Nepoužije se pro |
|---|---|---|
de | de, de-DE, de-AT, de-CH | - |
de-DE | de-DE, de | de-AT, de-CH (sourozenecké regiony) |
zh-CN | zh-CN, zh-Hans-CN, zh | zh-TW, zh-Hant-TW (jiné písmo) |
Obrácené dědění
Uložené de-DE, které odpovídá na obecný požadavek de, je v praxi nejčastější scénář: většina enginů je nakonfigurovaná s plnými regionálními kódy, ale přijímá požadavky se základními kódy. Podporované jsou oba směry.
Jak se rozhoduje mezi více shodami#
Když se použije víc než jedna uložená položka, engine je seřadí a vezme tu nejlepší:
- Nejdřív přesná nebo výchozí jazyková varianta. Pro požadavek
dese upřednostníde-DE(výchozí region podle CLDR pro němčinu), potom obecnéde. - Pak ta nejkonkrétnější jako rozhodující kritérium při rovnosti.
- Jakýkoli jiný odpovídající region zůstává jako fallback – zákazník, jehož jediná položka je
de-CH, ji pořád dostane i pro požadavekde, když se nic lepšího neshoduje, takže konfigurace nikdy nezůstane bez využití.
| Požadavek | Preferováno | Také se použije (fallback) | Vyloučeno |
|---|---|---|---|
de | de-DE, potom de | de-CH, de-AT | - |
de-DE | de-DE, potom de | - | de-AT, de-CH |
de-AT | de-AT, potom de | - | de-DE, de-CH |
Řazení vs. výběr#
Výše uvedené řazení určuje pořadí u vrstev, které se kombinují, a vítěze u vrstev, které vybírají jen jednu možnost:
| Vrstva | Co řazení určuje |
|---|---|
| Glosář | Všechny odpovídající termíny je možné načíst; o tom, co se dostane do promptu, rozhoduje sémantická relevance |
| Pravidla | Zahrnou se všechna odpovídající pravidla, nejdřív jazyk s nejlepší shodou |
| Hlas značky | Vyhrává jediný text s nejlepší shodou – pro každý požadavek platí jeden text hlasu značky |
| Konfigurace modelu | Nejlepší shoda se stane primárním modelem; ostatní tvoří fallback řetězec |
Bezpečnost skriptu#
Jedno další pravidlo platí jen pro položky custom_translationglosáře, jejichž text je navázaný na konkrétní pravopis. Základní jazyk s nejednoznačným písmem – sr (cyrilice nebo latinka), zh (zjednodušené nebo tradiční) – musí při zápisu určit písmo, buď jako explicitní písmo (zh-Hans, sr-Cyrl), nebo jako region, který ho určuje (zh-CN → zjednodušené, sr-RS → cyrilice, podle CLDR). Odmítnutý je jen skutečně holý kód bez písma a bez regionu. Při čtení jsou tyto určené formy ekvivalentní — termín uložený jako zh-Hans-CN platí pro požadavek zh-CN a naopak — ale holý požadavek zh, u kterého písmo není známé, nepřebere řádek s určeným písmem, takže pro předvídatelné výsledky posílejte explicitní písmo nebo region. Jazyky s jediným písmem, jako de, písmo nepotřebují a de se běžně vyhodnotí na de-DE. Položky non_translatable procházejí bez ohledu na písmo.
Příklad#
Engine nakonfigurovaný pomocí regionálních kódů (en-US až fr-FR, de-DE, nb-NO) přijímá požadavky se základními kódy (fr, de, no):
- Cíl
frpřevezme termíny glosáře, text hlasu značky a pravidla zfr-FR— řadí se jako výchozí profr, ne jako poslední možnost, protožefr-FRje pro francouzštinu výchozí region podle CLDR. - Zdroj
enodpovídá položkámen-US– shoda je obousměrná. - Cíl
nonepřevezmenb-NO.noanbjsou různé jazykové podznačky, ne dvojice regionů; jako cíl použijtenb.
Použití rozhodování jazyků s API#
Vyhodnocení probíhá automaticky při volání localize endpoint. Engine porovná sourceLocale a targetLocale z požadavku s termíny glosáře, texty hlasu značky, pravidly a konfiguracemi modelu, které se mají použít – nejsou potřeba žádné další parametry.
