`

国际化struts

阅读更多

一、java中的国际化

a)         jave中实现国际化的原理

java中通过Locale对象可以指定或得到当前系统的默认国际化配置及语言代码和国家代码,然后通过ResourceBundle类得到对应Lacale对象的国际化配置文件即Properties文件,通过读取键的值实现国际化。

b)         java中实现国际化需要的类

locale类:

可以指定所要显示的语言,即对应的国际化文件

Locale类的方法:

//得到当前系统默认的编码

           Locale l=Locale.getDefault();

                                 //自定义Locale

                                 //参数1:语言编码en(英文) zh(中文) ja(日本)

                                  //参数2;国家编码US(英国) CN(中国)JP(日本)

           Locale l1=new Locale("en","US");

           //得到国家代码

           l.getCountry();

           //得到语言代码

l.getLanguage();

        ResourceBundle类:

                      可以读取相应的Locale 对应的property文件

c)     更改系统默认的国际化编码

控制面板—语言区域

d)     在IE中修改默认的编码

IE首选项—语言

e)         property文件的文件名编写规则

Basename名_­语言代码_国家代码.properties

说明: BaseName名可以自定义但后面的名称必须按以上规则书写

f)          读取对应的Properties文件

           //读取对应的Properties文件

           //第一个参数对应相应的basename

           //第二个参数对应相应的Locale

ResourceBundle rb=ResourceBundle.getBundle("Message",l);

           rb.getString("key值");

g)      Properties文件的中文乱码问题

在读取Properties文件时键对应的中文键值会出现乱码应使用jdk的native2ascii.exe 工具将中文转换成unicode码再写入Properties文件中

h)     Native2ascii .exe的使用方法

在jdk的bin目录下双击native2ascii.exe 将需要转换的中文copy到该命令提示行下 回车即可看到转换的unicode编码将其替换对应键的值即可

Eg:

      将a=你好

      替换成 a= \uf60\u597d

批量替换

       Native2ascii.exe 源文件路径 替换文件路径

系统会自动根据控制面板设置的国际化编码进行转换。

i)       Properties 文件的占位符问题

Properties 文件中可以使用{0}{1}进行占位符设置注意是从0位开始

使用占位符

              MessageFormat mf =new MessageFormat(rb.getString("键名"));

      String result = mf.format(new Object[]{"a","b"});

j)       国际化文件的路径问题

ResourceBundle rb=ResourceBundle.getBundle("Message",l);

默认读取的是src下的文件,若路径不同应标明路径

方法:msg + . + Properties文件的BaseName名

Eg: msg.Message

k)      注意:

默认情况下ResourceBundle会根据参数Locale的国家代码和语言代码自动匹配相应的Properties文件进行读取(所以properties文件的命名必须合法)。

若没有找到相应文件则加载系统默认的国际化配置文件(读取系统设置的国家代码和语言代码)若系统的设置也没有与之对应的properties文件则加载Basename名.properties文件。若还没有对应文件则报错。

l)       注意2:新建java项目进行测试时必须建立源src文件夹否则报错。

二、 Struts硬编码国际化

a)      Stuts硬编码国际化即对页面中不变的文字进行国际化处理。

b)      使用方法

                 i.          在struts-config.xml:文件中加入

<message-resources parameter="MessageResources" />

第一个参数及Properties文件BaseName的名称

                ii.          在properties文件中配置相关的字段,注意中文要转换成unicode码

               iii.          在页面中用Struts标签替换需要国际化的内容

<bean:message key=” ”>

c)      注意:加载国际化文件时若没有找得相关文件(IE中的国际化配置)则会根据操作系统的语言配置进行查找若还没有会加载默认文件即 Basename.properties文件。

d)      通过修改session 实现手动修改语言

request.getSession().setAttribute(Globals.LOCALE_KEY, currentLocale);

第二个参数为自定义的Locale对象。

或者:

this.setLocale(request, currentLocale);

第二个参数为自定义的Locale对象

三、 动态文本国际化

1、  方法

在action中定义普通信息和错误信息

ActionMessage m=new ActionMessage("upass",new Object[]{"pppp"});

第一个参数是该信息的key值,第二个参数是占位符的内容,若仅有一个占位符可以不用object数组

直接写成String类型的参数

ActionMessage m=new ActionMessage("upass",”sss”);

2、 分别定义普通信息和错误信息的ActionMessages

ActionMessages messages=new ActionMessages();

3、 将普通信息和错误信息分别放入相应的messages中

Messages.add("uu",m3);

第一个参数为信息的名称,第二个参数为定义的ActionMessage

4、 将普通信息存入

this.saveMessages(request,messages);

注意 选择方法是应选择第二个弹出的方法,第一个参数是作用域,第二个参数为信息的集合。

5、 将错误信息存入

this.saveErrors(request, messages2);

注意 选择方法是应选择第二个弹出的方法,第一个参数是作用域,第二个参数为信息的集合。

6、 读取普通信息

   <html:messages id="s" message="true">

       <bean:write name="s"/>

   </html:messages>

解析: message=”true”信息标识此标签读取的是普通信息

Id表示从普通信息的集合中取出的每一个元素相当于iterator标签的id。

   <hr>

      <html:messages id="s" message="true" property="upass">

       <bean:write name="s"/>

   </html:messages>

解析: message=”true”信息标识此标签读取的是普通信息。

          Property表示从该信息集合中取出名为此属性值的元素的集合。

Id表示从普通信息的集合中取出的每一个元素相当于iterator标签的id。

7、 读取错误信息

<html:messages id="s" property="upass">

   <bean:write name="s"/>

   </html:messages>

 解析: message标签默认读取的是错误信息。

   <html:errors property="uu"/><br>

解析:该标签可以读取所有错误信息也可根据property读出所有是该属性名的错误信息的集合。

8、 错误信息的格式定义

定义在国际化的Properties文件中

Eg:

errors.header=<UL> 信息的头部代码

errors.prefix=<LI><font color="red"> 每条信息的开头代码

errors.suffix=</font></LI>每条信息的结尾代码

errors.footer=</UL> 信息的尾部代码

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics