I cookie ci aiutano a fornire i nostri servizi.

Utilizzando tali servizi, accetti l'utilizzo dei cookie da parte nostra. Per saperne di piu'

Approvo

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.