Struts的I18N需要理解以下几个问题:
1.理解Locale对象是由语言和国家组成的
2.理解basename的概念
3.资源属性文件名的命名规则?什么是缺省的资源属性文件?缺省的资源属性文件有什么作用?
4.如何创建支持中文的资源属性文件?(通过native2ascii工具),如何使用native2ascii:
*native2ascii工具的位置:JAVA_HOME/bin/
具体使用方法:native2ascii 输入文件 输出文件 例:native2ascii a.properties b.properties
一.本人编写的I18N简单测试程序,I18NSample.java:
package
com.codedestiny.i18n;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
public class I18NSample ... {
public static void main(String[] args) ...{
//取得缺省的Locale
Locale defaultLocale = Locale.getDefault();
System.out.println("language=" + defaultLocale.getLanguage());
System.out.println("country=" + defaultLocale.getCountry());
//通过语言和国家代码创建,语言代码是小写字母,国家代码是大写字母
Locale currentLocale = new Locale("zh", "CN");
//一个ResourceBundle是由basename和locale组成,资源文件是由basename的名称决定的
//如果将资源文件放到其它的包中采用包的完整路径+basename,来定位ResourceBundle
ResourceBundle rb = ResourceBundle.getBundle("MessagesBundle", currentLocale);
// System.out.println(rb.getString("v1"));
// System.out.println(rb.getString("v2"));
//消息文本的格式化处理
MessageFormat mf = new MessageFormat(rb.getString("v1"));
System.out.println(mf.format(new Object[]...{"Mike"}));
}
}
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
public class I18NSample ... {
public static void main(String[] args) ...{
//取得缺省的Locale
Locale defaultLocale = Locale.getDefault();
System.out.println("language=" + defaultLocale.getLanguage());
System.out.println("country=" + defaultLocale.getCountry());
//通过语言和国家代码创建,语言代码是小写字母,国家代码是大写字母
Locale currentLocale = new Locale("zh", "CN");
//一个ResourceBundle是由basename和locale组成,资源文件是由basename的名称决定的
//如果将资源文件放到其它的包中采用包的完整路径+basename,来定位ResourceBundle
ResourceBundle rb = ResourceBundle.getBundle("MessagesBundle", currentLocale);
// System.out.println(rb.getString("v1"));
// System.out.println(rb.getString("v2"));
//消息文本的格式化处理
MessageFormat mf = new MessageFormat(rb.getString("v1"));
System.out.println(mf.format(new Object[]...{"Mike"}));
}
}
二.MessageBundle.properties(注意名字要与ResourceBundle.getBundle( )方法中的参数名一致):
v1=Hello,{0}
v2=Good Bye
三.MessageBundle_zh_CN.properties(汉字需要转换成ISO-8859-1格式):
v1=/u4f60/u597d/uff0c{0}
v2=/u518d/u89c1
四.包图:
五.测试效果截图: