Fluent
Obsah
Fluent je celý lokalizační systém navržený Mozillou, který umožňuje překlady přizpůsobit podle cílového jazyka. Vychází z dřívějšího projektu L20n rovněž od Mozilly. Soubory používají příponu .ftl.
Syntaxe
Úplně nejzákladnější podoba .ftl souboru není nepodobná
Properties (IDENTIFIKATOR = RETEZEC
). Navíc ale
umožňuje reference na další řetězce nebo dodatečné atributy.
menu-settings = Settings
help-menu-settings = Click { menu-settings } to save the file.
login-button =
.label = Login
.accesskey = L
Základní syntaxe IDENTIFIKATOR = RETEZEC
je velmi jednoduchá, ale pro
plné využití možností Fluentu se předpokládá použití nějakého editoru.
Jelikož jde o poměrně nový formát, který se pomalu prosazuje v
překladech Mozilly, nejdále
je podpora zřejmě v jejím webovém editoru Pontoon.
emails = { $unreadEmails ->
[one] You have one unread email.
[42] You have { $unreadEmails } unread emails. So Long, and Thanks for All the Fish.
*[other] You have { $unreadEmails } unread emails.
}
Toto je příklad selektorů pro množná čísla. Fluent podporuje kromě standardních CLDR kategorií, také konkrétní čísla, takže je možné překlad libovolně vyladit pro konkrétní situaci. Hvězdička označuje výchozí variantu řetězce (v příkladu tedy jakékoliv číslo kromě jedničky a čtyřicet dvojky). Selektory je možné používat i v kombinaci s některými vestavěnými funkcemi.
Skloňování
Pokročilejší syntax Fluentu lze použít k podpoře skloňování podstatných jmen definovaných v samostatných entitách. Typicky jde o názvy produktů nebo služeb.
-vendor-short-name =
{ $case ->
*[nom] Mozilla
[gen] Mozilly
[dat] Mozille
[acc] Mozillu
[voc] Mozillo
[loc] Mozille
[ins] Mozillou
}
Tady vidíme překlad slova Mozilla v entitě s názvem
-vendor-short-name
. Hvězdička označuje výchozí pád, pokud by žádný
nebyl explicitně vybraný. Všimněte si také speciálního typu entity
začínající pomlčkou. Označuje se jako termín. Jejich použití se pak
rovněž trochu liší (nepoužívá se znak dolaru).
learn-more-blog = Podrobnosti najdete na blogu { -vendor-short-name(case: "gen") }.
Výsledný text bude
Podrobnosti najdete na blogu Mozilly
Používání brandů (názvů produktů) obsahujících obecné názvy
Výše uvedené skloňování se využívá hlavně pro názvy produktů, funkcí a služeb. V některých případech ale tyto v češtině obsahují obecná podstatná jména a v tu chvíli nastává oříšek s psaním velkých a malých písmen.
-brand-name-firefox-account =
{ $case ->
[gen]
{ $capitalization ->
[lower] účtu Firefoxu
*[upper] Účtu Firefoxu
}
[dat]
{ $capitalization ->
[lower] účtu Firefoxu
*[upper] Účtu Firefoxu
}
[acc]
{ $capitalization ->
[lower] účet Firefoxu
*[upper] Účet Firefoxu
}
[voc]
{ $capitalization ->
[lower] účte Firefoxu
*[upper] Účte Firefoxu
}
[loc]
{ $capitalization ->
[lower] účtu Firefoxu
*[upper] Účtu Firefoxu
}
[ins]
{ $capitalization ->
[lower] účtem Firefoxu
*[upper] Účtem Firefoxu
}
*[nom]
{ $capitalization ->
[lower] účet Firefoxu
*[upper] Účet Firefoxu
}
}
Jako příklad zde vidíme -brand-name-firefox-account
, který kromě skloňování přidává
ještě parametr $capitalization
s možnými hodnotami lower
a upper
pro v tomto případě
počáteční malé nebo velké písmeno.
firefox-accounts-already = { -brand-name-firefox-account(case: "acc") } už máte. Gratulujeme!
features-index-get-an-account = Vytvořit { -brand-name-firefox-account(case: "acc", capitalization: "lower") }
V případě řetězce firefox-accounts-already
, kde jsme $capitalization
vůbec neuvedli,
se použije výchozí varianta s velkým písmenem (označena *
).
Účet Firefoxu už máte. Gratulujeme!
V druhém řetězci features-index-get-an-account
jsme už ale uvedli capitalization: "lower"
,
což nám umožňuje použít ve slově účet uprostřed věty malé písmeno.
Vytvořit účet Firefoxu
Další
Překlady projektů Mozilly mají některá další specifika, která přímo nesouvisí s Fluentem, byť jeho syntaxi využívají. Najdete je popsané na samostatné stránce.
Editory a nástroje
- Textový editor (ne příliš vhodný kvůli relativně komplexní syntaxi)
- Pontoon
Knihovny
Fluent poskytuje knihovny pro internacionalizaci softwaru v jazycích Rust, JavaScript, Python a Mozilla ho používá i pro lokalizaci Firefoxu v C/C++ a výhledově i aplikací v Javě pro Android.