在src根目录下新建.properties配置文件,注意配置文件名格式,如xxx_zh_CN.properties表示中文。xxx_ru_RU.properties表示俄文。具体的语言简写浏览器的Internet选项的语言里可以看到。建立多个不同语言的配置文件就能国际化。注意配置文件的前缀名xxx要一致。而且配置文件的key值name都一致。

在index.jsp里写两个不同的链接,根据传到action的不同的lan值显示不同的语言。

 <body>
    <a href="change.action?lan=1">繁体</a>
    <a href="change.action?lan=2">俄语</a> 
  </body>

struts.xml配置文件配一个常量

<constant name="struts.custom.i18n.resources" value="intern"/>

页面跳转过来的action为

<action name="change" class="com.oracle.i18n.action.InternationalAction" method="changeLanuage">
            <result name="changelan">
              /intern.jsp
            </result>
        </action>

Action类需要实现一个接口LocaleProvider。在Action里定义一个全局变量lan,生成get、set方法,接收页面传过来的lan值。

private String  lan ;
public String getLan() {
        return lan;
    }
public void setLan(String lan) {
        this.lan = lan;
    }

定义一个设置ActionContext环境的方法,根据lan的不同值,设置不同的语言环境:

public Locale  getLocal(){
        Locale locale = null;
        if(lan.equals("1")) 
            locale = new Locale("zh","TW");  //台湾繁体
        else if(lan.equals("2"))
            locale = new Locale("ru","RU");  //俄语
        return locale;
            
}

其中Locale类有一个参数为语言和国家的构造。

改变语言的方法,struts.xml的action调的就是他。

public String changeLanuage(){
        
        ActionContext.getContext().setLocale(getLocal());//设置ActionContext的语言环境
        return  "changelan";
        
    }

在intern.jsp里用<s:i18n><s:text >标签显示:

<s:i18n name="intern">
        <s:text name="country"></s:text><input type="text"/>
        <s:text name="name"></s:text><input type="text"/>
    </s:i18n>
   <s:debug></s:debug>

也可以用下拉框显示不同语言,定义一个js,和一个form加下拉菜单实现:

function  changelan(a){
    //alert(a);
        var change  = document.getElementById("change");
        change.action="change";
        change.method="post";
        change.submit();
        
    }

 

 Please select Language:
  <form id="change">
  <select name="lan" onchange="changelan(this)">
  <option value="0">Please select Language:</option>
      <option value="1">繁体</option>
      <option value="2">俄语</option>
  </select>
  </form>

 

最终效果:

 

 欢迎关注个人公众号一起交流学习: