In un precedente articolo (Localizzazione del testo via Javascript) abbiamo visto come localizzare il testo via Javascript, con la limitazione che le traduzioni erano quelle di portale e non quelle della portlet custom.
Vediamo ora come localizzare il testo all'interno della classe Java di una portlet custom.
Durante una qualsiasi fase di elaborazione all'interno di una portlet (ossia della classe Java che rappresenta la portlet) può essere necessario generare dei messaggi in lingua da visualizzare nei log oppure in pagina.
Abbiamo già visto come usare la classe LanguageUtil
messa a disposizione da Liferay:
LanguageUtil.get(pageContext, "sample-text");
Peccato che all'interno della classe il contesto di pagina non sia disponibile...
Ma il problema è facilmente risolvibile utilizzando un altro metodo della suddetta classe LanguageUtil
grazie al quale sarà possibile recuperare sia le traduzioni di portale che le traduzioni specifiche di una portlet custom:
ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
// Utilizzando solamente il locale si recuperano le traduzioni di portale String text1 = LanguageUtil.get(themeDisplay.getLocale(), "no-entries-were-found");
// Utilizzando anche la configurazione della portlet si recuperano le traduzioni della portlet String text2 = LanguageUtil.get(getPortletConfig(), themeDisplay.getLocale(), "this-is-a-custom-message");