Struts2国际化

来源:互联网 发布:python分布式读取 编辑:程序博客网 时间:2024/06/07 21:51

应用程序国际化

l软件的本地化:一个软件在某个国家或地区使用时,采用该国家或地区的语言,数字,货币,日期等习惯。
l软件的国际化:软件开发时,让它能支持多个国家和地区的本地化应用。使得应用软件能够适应多个地区的语言和文化风俗习惯。

l资源文件和资源包
要用Struts实现国际化和本地化,首先要定义资源文件的名称,这个文件会包含用默认语言编写的会在程序中出现的所有消息。这些消息以”键-值“对的形式存储,如下:
error.validation.localtion= The entered location is invalid
当对一个应用程序进行国际化处理时,所要用的各种语言版本的”标签“信息应该存放在不同的属性文件中,每一个这样的文件对应一种语言版本。所有属性文件合在一起称为资源包(ResourceBundle)。
属性文件的命名格式可分为以下两种:
   
a)文件名前缀.properties
   
b)文件名前缀_语言种类.properties
文件名后缀必须是properties,前缀可自由书写,其中语言种类字段必须是有效的ISO语言代码。
l文件名前缀.properties默认的形式,当其他属性文件找不到时,会默认的寻找此属性文件。


如何实现应用程序国际化

l针对不同的国家定义不同的资源文件
l资源文件的命名:基名_国家代码_语言代码.properties

  默认名:基名.properties

l定义不同的资源文件
中文的资源文件
文件名:resources_zh_CN.properties
文件内容:item.username=用户名
英文的资源文件
文件名:resources_en_US.properties
文件内容:item.username=username_en
默认的资源文件
文件名:resources.properties
文件内容:item.username=username
l

配置全局资源与输出国际化信息

1、准备资源文件

2、在struts.xml中使用struts.custom.i18n.resources常量即可加载全局资源文件

    <constantname="struts.custom.i18n.resources"

                      value="cn.itcast.i18n.resource" />

    resource为资源文件的基本名。

3、在jsp页面获取国际化的资源文件的信息

        使用text标签:用来显示一条国际化消息的数据标签.相当于从property

                    标签调用getText方法.该标签包含如下属性:

   * name:用来检索消息的键

   *var:用来引用压入 ContextMap栈的值的变量名

   * 可以通过 param子标签向 text标签传递参数
  
<s:text name="item.username"/>

全局资源文件中含有占位符

  使用text标签传递参数:

  资源文件的信息

              item.test={0}欢迎来到xxxx{1}

    jsp页面

             <s:text name="item.test">

                    <s:param>用户名</s:param>     {0}

                    <s:param>密码</s:param>        {1}    

              </s:text>

   输出结果:

           用户名欢迎来到xxxx密码

           

在action中获取资源文件的信息

ActionSupport类实现了TextProvider接口,该接口负责提供对各种资源包和它们的底层文本消息的访问机制.

当调用getText()方法时, 它将按以下顺序搜索相关的属性文件.

Action类的属性文件:该文件的名字与相关的动作类的名字一样,并且和那个动作类存放在同一个目录下

动作类所实现的各个接口的属性文件

动作类的各个父类的属性文件

动作类的各个父类所实现的各个接口的属性文件

如果动作类实现了ModelDriven接口, Struts将调用getModel()方法并从模型对象的类开始沿着类的继承关系进行一次上溯搜索

默认的包的属性文件

继承关系中的下个父包里的资源包

国际化—JSP中直接访问某个资源文件

i18n 标签:用来加载一个自定义的 ResourceBundle.不用做任何配置

       name:将被加载的资源集的java完全限定名

<s:i18n name=“resource">

   <s:text name=“item.username”/>

</s:i18n>

resource为类路径下资源文件的基本名。

      如果要访问的资源文件在类路径的某个包下,可以这样访问:

       <s:i18n name=“cn.itcast.i18n.resource">

    <s:text name=“item.test">

    <s:param>小张</s:param>

    </s:text>

       </s:i18n>

      上面访问cn.itcast.i18n包下基本名为resource的资源文件。

使用 native2ascii 程序转换字符编码


lJDK中提供了一个native2ascii工具程序,它可以将某种本地字符集编码的字符转换成Unicode转义序列的形式
lDOS下进入test_cn_backup.properties文件所在目录,运行下面的命令后将在当前目录下生成一个名为test_zh_CN.properites文件:

     native2ascii -encoding gb2312 源文件   目标文件.properites

    native2ascii -encoding gb2312  test_cn_backup.txt   test_zh_CN.properites






0 0
原创粉丝点击