Boa Noite galera, estou tento um problema com jsf e internacionalização:
1) Setei o idioma default como sendo português, mas continua me abrindo primeiro o inglês.
2) Criei o botão para selecionar o idioma, e funciona perfeito. Porém quando saio da página e vou para outra o idioma volta para Inglês...
segue o código que adicionei:
faces-config.xml<application>
<resource-bundle>
<base-name>br.com.canivel.messages.messages</base-name>
<var>msg</var>
</resource-bundle>
<locale-config>
<default-locale>pt</default-locale>
<supported-locale>en</supported-locale>
</locale-config>
<message-bundle>
br.com.canivel.messages.messages
</message-bundle>
</application>
criei os arquivos messages_en.properties e messages_pt.properties
criei o controller LocaleController.javapackage br.com.canivel.face.controller;
import java.io.Serializable;
import java.util.Locale;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.inject.Named;
@Named
@SessionScoped
public class LocaleController implements Serializable {
private Locale locale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
public Locale getLocale() {
return locale;
}
public String getLanguage() {
return locale.getLanguage();
}
public void changeLanguage(String language) {
locale = new Locale(language);
FacesContext.getCurrentInstance().getViewRoot().setLocale(locale);
}
}
<html lang="#{localeController.language}"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<f:view locale="#{localeController.language}">
<h:head>
<ui:include src="mainHead.xhtml" />
<title>Canivel Commerce - <ui:insert id="title" name="title"> Administration</ui:insert></title>
</h:head>
<h:body>
<ui:include src="header.xhtml"></ui:include>
<ui:insert name="content"></ui:insert>
<ui:include src="footer.xhtml"></ui:include>
</h:body>
</f:view>
</html>
<ul>
<li> <h:form style="border:none; background:none;" prependId="false"><h:commandLink action="#{localeController.changeLanguage('pt')}" value="#{msg.portuguese}" /></h:form> </li>
<li> <h:form style="border:none; background:none;" prependId="false"><h:commandLink action="#{localeController.changeLanguage('en')}" value="#{msg.english}" /></h:form> </li>
</ul>
Alguem sabe porque o idioma não fica setado na sessão?
OBrigado