xlat

Vrací parametrizovaný a lokalizovaný řetězec odpovídající zadanému klíči.

String xlat (
    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:

  1. Nejprve je nalezen lokalizovaný formát.
  2. 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}.)

Příklad: Použití překladových map
Lokalizace pro locale cs_CZ
lang: Český
message: Vyhráli jste {0} doláčků!
message2: Vyhráli jste {0} doláčků a já vyhrál {1}!
Lokalizace pro locale en_US
lang: English
message: You have won {0} dollars!
message2: You have won {0} dollars and I won {1}!
Šablona
{xlat("lang")}
{xlat("message", null, 50)}
{xlat("message2", null, 50, 20)}
{xlat("klic", "Pro tento klíč nejsou lokalizované hodnoty")}
Výstup pro jazyk "cz"
Český
Vyhrali jste 50 dolacku!
Vyhrali jste 50 dolacku a já vyhrál 20!
Pro tento klíč nejsou lokalizované hodnoty

 

Příklad: Problém s použitím jednoduché uvozovky
Lokalizace
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.
Šablona
{xlat('MSG_1', null, 'test@example.com')}
{xlat('MSG_2', null, 'test@example.com')}
Výstup
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.

Pro vložení příspěvku do diskuse se přihlašte.