Liferay mette a disposizione degli sviluppatori un meccanismo di localizzazione del testo molto funzionale, che può essere utilizzato tramite la classe Java LanguageUtil
(e la sua controparte UnicodeLanguageUtil
) oppure tramite la taglib <liferay-ui:message/>
.
Ma come possiamo fare ad utilizzare lo stesso meccanismo via Javascript? Scopriamolo!
Supponiamo quindi di avere definito il nostro plugin Liferay, al cui interno abbiamo definito il solito file di traduzione Language.properties
contenente le seguenti voci:
sample-text=Sample text sample-text-with-param-x=Sample text with param: {0}
Come abbiamo detto, possiamo visualizzare questi messaggi tradotti nel modo seguente attraverso la taglib:
<liferay-ui:message key="sample-text" /> <liferay-ui:message key="sample-text-with-param-x" arguments='<%=new String[] { "Foo" }%>' />
Oppure attraverso la classe Java:
LanguageUtil.get(pageContext, "sample-text"); LanguageUtil.format(pageContext, "sample-text-with-param-x", new String[] {"Foo"});
Entrambe le scritture sopra produrranno il medesimo output:
Sample text Sample text with param: Foo
Ma se avessimo bisogno di una traduzione in una funzione Javascript, come possiamo fare? Fortunatamente ci viene in aiuto la poco documentata libreria fornita da Liferay; in particolare l'oggetto Liferay.Language
.
Tramite questo oggetto Javascript possiamo quindi utilizzare il meccanismo di localizzazione nel modo seguente:
alert(Liferay.Language.get('sample-text')); alert(Liferay.Language.get('sample-text-with-param-x', ['Foo']));
Purtroppo c'è solo una limitazione nell'utilizzo della localizzazione via Javascript: l'oggetto Liferay.Language
cerca la traduzione tra quelle di portale e non tra quelle della portlet.
Ciò significa che tutti i messaggi che vogliamo visualizzare via Javascript, dovranno essere definiti tramite un apposito hook di lingua.