Salve ragazzi,
ho un problema che non riesco a risolvere riguardo il cambio lingua sulla mia applicazione web: vorrei che l'utente, selezionando la bandierina ENG (per esempio), passi dalla visualizzazione in italiano a quella in inglese e la mantenga per TUTTA la sessione di lavoro. (come accade in tutti i più comuni siti web)
Quello che sono riuscito a produrre è che, cliccando sulla bandierina ENG, la pagina su cui si trova l'utente viene ricaricata in inglese, solo che, passando ad un'altra pagina, la lingua ritorna ad essere quella di default e cioè l'italiano. E non riesco a capire perché.
Ipotizzo sia un problema di sessione, che non riesce a tenere a mente il cambio di lingua.
Vi posto un po' di codice.
Questo è il bean .java che mi permette di effettuare il cambio lingua:
codice:
import javax.faces.context.FacesContext;
import java.util.Locale;
public class LocaleManager {
public String italian() { FacesContext context = FacesContext.getCurrentInstance(); context.getViewRoot().setLocale(Locale.ITALIAN);
return null; }
public String english() {
FacesContext context = FacesContext.getCurrentInstance(); context.getViewRoot().setLocale(Locale.ENGLISH);
return null; }
public Locale getLocale() {
FacesContext context = FacesContext.getCurrentInstance();
return context.getViewRoot().getLocale(); }
}
Questa è la dichiarazione del bean nel file faces-config.xml:
codice:
<managed-bean>
<managed-bean-name>LocaleManager</managed-bean-name>
<managed-bean-class>it.miosito.beans.LocaleManager</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
E questa è la parte di codice relativa al "cambio di lingua", inserito nell'heander.jsp dell'applicazione web:
codice:
<h:form id="locale">
<h:commandLink immediate="true" action="#{Manager.lm.italian}">
<h:outputText value="IT"/>
</h:commandLink>
<h:commandLink immediate="true" action="#{Manager.lm.english}">
<h:outputText value="EN"/>
</h:commandLink>
</h:form>
Ora: sembra funzionare tutto apparentemente, nel senso che cliccando su EN, effettivamente passa alla lingua inglese, ma cambiando pagina tornano a visualizzarsi tutti i valori in italiano.
Dove è l'errore? Cosa sbaglio?
Spero di essere stato chiaro!
L'applicazione è scritta in java e jsf1.2 come da titolo.
Ringrazio tutti per la disponibilità!!
Ciao ciao