čtvrtek 26. dubna 2012

Jak získat lokalizované texty z .properties souboru

Grails má dobře zmáklé message.properties soubory pro internacionalizaci aplikací. Díky tomu lze jednoduše udělat vícejazyčné aplikace. V dokumentaci je pěkně popsané, jak získat texty z těchto souborů z view nebo controlleru a taglib. Trochu však pozapomněli popsat, jak získat z doménových tříd a servisních tříd. Hodí se to, když chci v service třídě vyházet výjimku s vlastním textem.

Je potřeba deklarovat na začátku třídy field proměnnou (česky lokální?):
def messageSource
Grails do této proměnné provede automaticky DI. Pak lze pomocí této proměnné získat poměrně snadno texty z message.properties:
messageSource.getMessage("some.entity.label", null, "", LocaleContextHolder.getLocale())
getMessage() metoda má několik variant (přetěžovaných metod). Tu, kterou jsem použil, bere 4 parametry - první String je kód z message.properties souboru, druhý jsou možné argumenty v textu (žádné nemám), třetí je defaultní text a čtvrtý je Locale instance (což je zde ten, který má klient). Více zde.

Žádné komentáře:

Okomentovat