欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

struts2学习笔记十六(第16讲.Struts2的国际化)

程序员文章站 2022-05-28 15:53:35
...
struts2学习笔记十六(第16讲.Struts2的国际化)

一、struts2的国际化的几个方面:
1.页面的国际化,也就是jsp的国际化。
2.Action的国际化
3.类型转换信息的国际化
4.数字校验的国际化

java的国际化:
java语言国际化的支持几个类:ResourceBundle、Locale
如何获得当前java jdk系统中已经安装提供的那些国家和源的支持,并不是所有的国家都支持,只支持一些主要的国家。
添加一个包com.i18n,并且创建一个Tes1.java类来说明获取java中的源。
package com.i18n;
import java.util.Locale;;

public class Test1 {

public static void main(String[] args) {
Locale[] locales = Locale.getAvailableLocales();

for(Locale locale : locales)
{
// System.out.println(locale.getDisplayCountry()+":"+locale.getCountry());

System.out.println(locale.getDisplayLanguage()+":"+locale.getLanguage());
}
}

}


二、使用属性文件来实现国际化,主要是根据键值对的方式,键都是一样的,值是对应不同的国家语言。

在src下创建属性文件:hellofile_en_US.properties和hellofile_zh_CN.properies。
(属性文件名称baseName_language_country)

在src下创建测试类Test2.java

package com.i18n;

import java.util.*;

public class Test2 {

public static void main(String[] args)
{
Locale locale = Locale.US;

ResourceBundle bundle = ResourceBundle.getBundle("hellofile", locale);

String value = bundle.getString("hello");

System.out.println("value:"+value);
}

}


三、国家化的另一个类MessageFormat
在属性文件中传入参数,是返回的信息不是固定的。
在src下创建测试类Test3.java

package com.i18n;

import java.util.*;
import java.text.*;

public class Test3
{
public static void main(String[] args)
{
// Locale locale = Locale.getDefault();

Locale locale = Locale.US;

ResourceBundle bundle = ResourceBundle.getBundle("hellofile", locale);

String value = bundle.getString("hello");

String result = MessageFormat.format(value, new Object[]{"zly"});

System.out.println(result);
}
}

注意:传入的参数是按顺序排的,否则将什么都不做。

struts2的jsp页面的国际化:
在src下创建属性文件:message_en_US.properties和message_zh_CN.properties
在register2.jsp页面中添加调用的标签。