`
wolfmaster
  • 浏览: 154902 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts2国际化

阅读更多

1.国际化(Internationalization),使程序在不改动代码的情况下,从一种语言切换到另外一种语言

 

2.java 内置国际化

    1.定义国际化文件,

      message.properties(没有找到对于国际化,使用此配置)

       

t1=test1 \u4e2d\u6587-\u4e2d\u56fd,{0},{1}
t2=test2 \u4E2D\u6587-\u4E2D\u56FD

 

      message_zh_CN.properties

 

t1=test1 \u4e2d\u6587-\u4e2d\u56fd,{0},{1}
t2=test2 \u4E2D\u6587-\u4E2D\u56FD

 

      message_en_US.properties

 

t1=test1 en_US,{0},{1}
t2=test2 en_US

 

    2.指定当前语言 Locale locale1 = Locale.SIMPLIFIED_CHINESE;

    3.获得当前语言的资源 ResourceBundle bundle = ResourceBundle.getBundle("message",locale1);

    4.获得当前资源中指定key的值 System.out.println("value:"+bundle.getString("key")); 

 

3.struts2 对国际化提供很好的支持

    1.定义国际化文件,同上

    2.struts.xml,添加支持<constant name="struts.custom.i18n.resources" value="message"/> 

    3.可以指定默认使用语言,如<constant name="struts.locale" value="zh_CN"/> 

    4.页面中引用

         

	普通文本  使用国际化<br />
	<s:text name="t1">  
	    <s:param>param1</s:param>  
	    <s:param>param2</s:param>
	</s:text>
	<br /> 
	<s:text name="t2"/> 

	<hr /> 
	 表单标签  使用国际化<br />
	<s:textfield name="name1" label="普通text"/> <br /> 
	<s:textfield name="name2" key="t1"/> <br />
	<s:textfield name="name3" key="t2"/> 

    5.在Action中使用

         1.自定义action,继承ActionSupport,更好的使用本地化方法

         2.代码如下

          

public class HomeAction extends ActionSupport
{
    /** serialVersionUID Auto-generated field comment */
    private static final long serialVersionUID = 1L;
    
    private Logger log = Logger.getLogger(HomeAction.class);
    public String result = "success";
    public String t1;
    public String t2;
    
    public String index()
    {
        log.info("start index.jsp");
        
        String[] arr = new String[]{"zhangsan","lisi"};
        t1 = this.getText("t1", arr);
        t2 = this.getText("t2");
        
        //ResourceBundle bundle = this.getTexts("message");
        //System.out.println(bundle.getString("c"));
        return result;
    }
}

       6.使国际化生效,可以手动配置,struts.xml默认。还可以修改浏览器器,默认语言首选项。但这些不是太死板,就是太繁琐。struts,提供了request_locale参数可以动态改变语言,第一次请求后会保存在WW_TRANS_I18N_LOCALE,session中

 

目前为止:简单的国际化可以,如果想把配置文件细分可以,分为,全局级别,包级别,类级别,详细可以参考http://rubbing-struts2.iteye.com/blog/1661482

 

注意:对于中文文件,要进行unicode 到 asiic 转码,我的所有都统一为utf-8

1.中文资源保存为UTF-8

   src_message_zh_CN.properties

t1=test1 中文-中国,{0},{1}
t2=test2 中文-中国

 

2.使用native2ascii.exe -encoding utf-8  src_message_zh_CN.properties message_zh_CN.properties

         

3.转码后目标文件开头会有一个多余识别码(\ufeff),需要手动删掉。

 

\ufefft1=test1 \u4e2d\u6587-\u4e2d\u56fd,{0},{1}
t2=test2 \u4e2d\u6587-\u4e2d\u56fd

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics