JSF permet fer aplicacions multiidioma de una manera molt senzilla. A més, al FAM, s'ha intentat treballar de la manera correcta per tal que internacionalitzar una aplicació sigui fàcil.
Per mirar de modularitzar la internacionalització de les aplicacions dintre del FAM, s'ha preparat un Backed Bean que inclogui la lògica multiidioma.
Aquest Bean inclou:
public class IdiomaBB extends AbstractDibaBB { private static final String PARAM_IDIOMA = "codiIdioma"; enum IDIOMAS {ca, es} private String idioma = IDIOMAS.ca.name(); public String getIdioma() { return idioma; } public String canviIdioma() { idioma = WebUtils.facesRequestParam(PARAM_IDIOMA); updateLocale(idioma); return NavigationConstants.OK; } private void updateLocale(String idioma) { Locale locale = new Locale(idioma); FacesContext context = FacesContext.getCurrentInstance(); context.getViewRoot().setLocale(locale); context.getApplication().setDefaultLocale(locale); } public boolean isCastella() { return IDIOMAS.es.name().equals(idioma); } public boolean isCatala() { return IDIOMAS.es.name().equals(idioma); } }
A les jsp's s'ha d'indicar que la vista agafi l'idioma del bean de sessió que hem creat
<f:view locale="#{idiomaBB.idioma}">
Al menú s'han d'afegir les opcions de canvi d'idioma, visibles o no en funció de l'idioma seleccionat
<li style="float: right"><ice:commandLink title="Cambio de idioma a Castellano" rendered="#{idiomaBB.catala}" action="#{idiomaBB.castellaAction}">[es]</ice:commandLink></li> <li style="float: right"><ice:commandLink title="Cambio de idioma a Catalán" rendered="#{idiomaBB.castella}" action="#{idiomaBB.catalaAction}">[ca]</ice:commandLink></li>
L'editor de l'eclipse permet definir els literals per diferents idiomes.
També s'ha d'indicar el valor per defecte.