2016-12-27 13 views
0

私はスペイン語の言語パック(私の場合はネイティブ)のウィンドウを持っていますが、国際化はすべてのページで完璧ですが、自分の言語パックを英語に変更し、効果的に国際化がうまくいかず、Beanに設定されているデフォルト言語のみが動作しています。私は2つの言語のスペイン語と英語を使用しています他の言語がウィンドウ上にあるときに国際化が機能しない

私はJSF 2、html5で作業します。これは私の豆

@ManagedBean (name= "swtLanguage") 
@SessionScoped 
public class LanguageSwitcher implements Serializable{ 

private Locale locale; 
private int backgroud=1;  

@PostConstruct 
public void init() { 
    locale = new Locale("en"); 
} 

public Locale getLocale() { 
    return locale; 
} 

public String getLanguage() { 
    return locale.getLanguage(); 
} 

public void setLanguage(String language) { 
    locale = new Locale(language); 
    FacesContext.getCurrentInstance().getViewRoot().setLocale(locale); 
} 

public int getBackgroud() { 
    return backgroud; 
} 

public void setBackgroud(int backgroud) { 
    this.backgroud = backgroud; 
} 

} 

HTML

<html xmlns="http://www.w3.org/1999/xhtml"  xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://xmlns.jcp.org/jsf/html" 
xmlns:f="http://xmlns.jcp.org/jsf/core" 
xmlns:p="http://xmlns.jcp.org/jsf/passthrough" 
xmlns:c="http://java.sun.com/jsp/jstl/core"> 
    <f:view locale="#{swtLanguage.locale}"> 
    <h:head> 
    <title>#{aees_msg['loginScreen']}</title> 

      <meta name="viewport" content="width=device-width, initial-scale=1"> </meta> 
      <h:outputStylesheet library="styleAE" name="boots/css/login.css"/> 
      <h:outputStylesheet library="styleAE" name="boots/css/bootstrap.min.css"/> 
      <h:outputStylesheet library="styleAE" name="boots/css/bootstrap.css"/> 
      <h:outputScript library="styleAE" name="alerts/alertify.js"/> 
      <h:outputScript library="styleAE" name="alerts/alertify.min.js"/> 
      <h:outputStylesheet library="styleAE" name="alerts/alertify.core.css"/> 
      <h:outputStylesheet library="styleAE" name="alerts/alertify.default.css"/> 

     </h:head> 
     <h:body class="body"> 

      <div class="wrapper"> 
       <h:graphicImage library="styleAE" name="img/login/LoginPieces-02.png" class="img-responsive logo-img2"/> 
       <div class="container wrapper-container"> 
        <div class="row"> 
         <div class="col-xs-12"> 
          <h:form id="inputFormXD" class="login" > 
           <div class="form-group input-group"> 
            <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span> 
            <h:inputText value= "#{Login.usuario}" class="form-control" p:placeholder="#{gen_msg['user']}" required="true" requiredMessage="#{aees_msg['userRequired']}" id="user"> 
             <f:ajax execute="@this" event="change" listener="#{Login.roles(Login.usuario)}" render="role" /> 
            </h:inputText> 
           </div> 
           <div class="form-group input-group separate"> 
            <span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span> 
            <h:inputSecret value= "#{Login.password}" class="form-control" p:placeholder="#{gen_msg['pass']}" required="true" requiredMessage="#{aees_msg['passwordRequired']}" id="password"/> 
           </div> 
           <div class="form-group separate" style="display: none"> 
            <h:panelGroup id="role"> 
             <h:outputLabel >Rol:</h:outputLabel> 
             <h:selectOneMenu value="#{Login.role}" id="roles" class="form-control" > 
              <f:selectItems value="#{Login.listarole}" var="option" itemLabel="#{option.roleDesc}" itemValue="#{option.sgrRolePK.roleCode}"/> 
             </h:selectOneMenu> 
            </h:panelGroup> 
           </div> 

           <div class="form-group separate"> 
            <h:outputLabel id="language">#{gen_msg['language']}:</h:outputLabel> 
            <h:selectOneMenu value="#{swtLanguage.language}" class="form-control" > 
             <f:selectItem itemValue="en" itemLabel="English" /> 
             <f:selectItem itemValue="es" itemLabel="Español" />                             
             <f:ajax execute="@this" render="@form psw usn language lo" /> 
            </h:selectOneMenu> 

           </div> 
           <div class="buttom separate"> 
            <h:commandButton class="btn-login btn btn-primary" value="#{aees_msg['login']}" action="#{Login.usersValidator}" id="lo"/> 
           </div> 
           <div class="form-group separate"> 
            <label> 
             <a href="#" style="font-style: normal" class="bstrong" onclick="mailto();">#{gen_msg['ProblCuenta']} ></a> 
            </label><br></br> 

            <label> 
             <a href="#" style="font-style: normal" class="bstrong">#{gen_msg['politPriv']} > </a> 
            </label> 
           </div> 

          </h:form> 

          <c:if test="${Login.error == 1}"> 
           <h:outputScript rendered="#{facesContext.postback and not facesContext.validationFailed}">; 
            alertify.error("Usuario o Password Incorrectos"); 
           </h:outputScript> 
          </c:if> 
          <c:if test="${Login.error == 2}"> 
           <h:outputScript rendered="#{facesContext.postback and not facesContext.validationFailed}">; 
            alertify.error("Usuario sin privilegios"); 
           </h:outputScript> 
          </c:if> 

         </div> 
        </div> 
       </div> 
      </div> 



     </h:body> 
    </f:view> 
</html> 

顔-config設定

国際はブラウザレベルではなく、OSレベルで動作
<faces-config version="2.1" 
       xmlns="http://java.sun.com/xml/ns/javaee" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd"> 
<application> 
    <locale-config> 
     <default-locale>es</default-locale> 
     <supported-locale>es</supported-locale> 
     <supported-locale>en</supported-locale> 
    </locale-config> 
    <resource-bundle> 
     <base-name>com.internationalization.aeesmessages</base-name> 
     <var>aees_msg</var> 
    </resource-bundle> 
    <resource-bundle> 
     <base-name>com.internationalization.genmessages</base-name> 
     <var>gen_msg</var> 
    </resource-bundle> 
    <resource-bundle> 
     <base-name>com.internationalization.menumessages</base-name> 
     <var>menu_msg</var> 
    </resource-bundle> 
</application> 
</faces-config> 
+0

十分なはずですあなたのための私の答えは役に立ちましたか?あなたの答えはありがたいですが、私はすでにあなたの提案を試しました。 –

答えて

0

です。したがって、使用するブラウザで言語を変更する必要があります。ただ、国際化は、他のlangauageにロケールを切り替えることによって動作するかどうか、あなたも試みることができるテスト目的のために:

UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot(); 
viewRoot.setLocale(new Locale("en")); 

とにかくブラウザでのlangaugeを変更することは

+0

私は問題がOS言語でないことを知っています;私はロケールを切り替えますが、OS言語で国際化が動作する理由はスペイン語であり、英語ではありません。私は他の言語で問題が続くかどうかはわかりません。 –

関連する問題