Struts2中的I18N(国际化)处理

本文详细介绍了Struts2框架中如何进行I18N(国际化)处理,包括创建资源文件、转换非ASCII字符、定义Locale对象、编写Action以及在JSP中展示国际化文本的方法。通过改变请求中的request_locale参数,可以动态切换语言环境。
摘要由CSDN通过智能技术生成

 

1.     I18N处理

 

 

什么是I18N问题?

在英文中, 国际化(Internationalization)被缩写为I18N, 即只取首尾两个字母, 中间字母为18个。

问题在哪里?

 

一个简单的例子

public class EnglishHelloWorld {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       System.out.println("Hello World");

    }

 

}

 

public class ChineseHelloWorld {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       System.out.println("世界,你好");

    }

 

}

 

上述两个例子中,如果要分别输出英文和中文文本,就需要写两个程序。利用国际化处理机制,可以只写一个程序。即我们需要将程序中硬编码的文本转移到外部的资源文件(.properties文件)中!针对每一种语言环境,我们需要编写一个资源文件。然后指定当前应用程序所使用的语言环境,JAVA中的国际化处理机制,将能够自动找到对应的资源文件,并将其中的文本内容读出来。

 

下面我们将硬编码的文本转移到资源文件中。我们需要三个资源文件:

一个缺省的资源文件,即如果不指定语言环境,默认使用的资源文件;

一个用于中文环境的资源文件,如果指定是中文环境,将使用此资源文件;

一个用于英文环境的资源文件,如果指定是英文环境,将使用此资源文件;

 

MessageResources.properties文件:

hello=Hello World!

 

MessageResources_en.properties文件:

hello=Hello World!

 

MessageResources_zh.properties文件:

hello=/u4e16/u754c/uff0c/u4f60/u597d

 

特别注意上述MessageResources_zh.properties文件,因为JAVA要求.properties文件不允许包含非ASCII(请自行上网查阅ASCII字符包括哪些字符,主要是英文和一些常见的符号,而中文等字符不属于ASCII字符)字符,所以对于中文,需要将中文转换为UNICODE编码的字符,并用/u+UNICODE编码来表示中文。

 

native2ascii.exe程序(在JAVA安装目录下面的bin目录下),就是用来将中文的字符转换为/u+UNICODE编码的文本的工具。

我们可以编写一个MessageResources_zh.txt文件:

hello=世界,你好

 

然后,在命令行下,通过如下命令,将MessageResources_zh.txt文件转换为MessageResources_zh.properties文件:

native2ascii MessageResources_zh.txt MessageResources_zh.properties

 

资源文件的命名规则:

 

资源名称_语言代码_国家/

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值