xlat
Vrací parametrizovaný a lokalizovaný řetězec odpovídající zadanému klíči.
Stringxlat
(
String key [,
String default-value [,
Object arg-0 [,
Object arg-1 [,
… Object arg-n ] ] ] ])
- key
- Lokalizovaný klíč.
- default-value
- Defaultní hodnota.
- arg-0, arg-1,…, arg-n
- Hodnoty pro parametrizaci lokalizované zprávy.
Popis
Vytvoření lokalizovaného řetězce probíhá ve dvou krocích:
- Nejprve je nalezen lokalizovaný formát.
- Na ten jsou případně aplikovány zadané parametry.
Získání lokalizovaného formátu
Získání lokalizovaného formátu je závislé na kontextu šablony.
- Šablona pocházející ze souborového systému (nebo jeho alternativy) pracuje s property soubory.
- V systému jNetPublish se používají lokalizační mapy příslušné k assetu šablony nebo formátovače.
- Lze také použít parametr
localizationSource
příkazu options; hodnotou může být libovolný zdroj lokalizace: například jiná šablona, ale zejména také asset typu Složka slovníků.
Pokud není možné nalézt lokalizovaný formát pro daný klíč, použije se místo něho hodnota default-value, je-li zadána. Pokud zadána není, je formát nastaven na null
.
Zpracování formátu
Pokud je výsledný formát null
, vrací funkce hodnotu key. V opačném případě dojde k formátování výsledného řetězce.
Pakliže nejsou zadány argumenty arg-0, arg-1,…, arg-n, vrací funkce samotný formát.
Jinak se z argumentů vytvoří pole parametrů pro formátování a to takto - pokud je zadán pouze argument arg-0, je otestován, zda se nejedná o pole nebo seznam (java.util.List), je chápán jako pole formátovacích parametrů. V opačném případě se pole vytvoří se samotných argumentů.
Zpracování formátu popisuje podrobně dokumentace pro MessageFormat. (Nejdůležitější je možnost vložit formátovanou hodnotu arg-i pomocí konstruktu {i}
.)
lang: Český
message: Vyhráli jste {0} doláčků!
message2: Vyhráli jste {0} doláčků a já vyhrál {1}!
lang: English
message: You have won {0} dollars!
message2: You have won {0} dollars and I won {1}!
{xlat("lang")}
{xlat("message", null, 50)}
{xlat("message2", null, 50, 20)}
{xlat("klic", "Pro tento klíč nejsou lokalizované hodnoty")}
Český
Vyhrali jste 50 dolacku!
Vyhrali jste 50 dolacku a já vyhrál 20!
Pro tento klíč nejsou lokalizované hodnoty
MSG_1=La richiesta di modifica dell'indirizzo di contatto é stata inviata a {0}, dove attende conferma.
MSG_2=La richiesta di modifica dell''indirizzo di contatto é stata inviata a {0}, dove attende conferma.
{xlat('MSG_1', null, 'test@example.com')}
{xlat('MSG_2', null, 'test@example.com')}
La richiesta di modifica dellindirizzo di contatto é stata inviata a {0}, dove attende conferma.
La richiesta di modifica dell'indirizzo di contatto é stata inviata a test@example.com, dove attende conferma.
Jak je vidět, pokud použijeme v hodnotě překladového klíče jednoduchou uvozovku ve významu apostrofu, nedojde k překladu tak jak očekáváme. Je to z toho důvodu, že pro formátování s použitím parametrizace se použije zmíněný MessageFormat. Řešením je uvést v překladovém klíči uvozovky dvě.
Pokud je lokalizovaný klíč konstantní a nejsou potřeba další parametry, je možné použít přehlednější zápis pomocí operátoru %%.
Od verze systému jNetPublish 3.4 je také k dispozici funkce exlat, která lokalizuje pro jazyk editace, nikoli jazyk stránky. Tato funkce je vhodná v některých případech v insite editaci, pokud se do stránky doplňují nějaké pokyny a texty pro editora.
Při lokalizaci do češtiny je možné kombinovat použití této funkce s funkcí declineCnt.