一口一口吃掉Struts(九)——国际化问题(1) .
2014-03-25 11:49
447 查看
Web应用实现国际化(i18n),主要包括两个方面
一、页面(jsp)静态信息的国际化
二、动态消息的国际化
在开始Struts国际化之前,我们先来看一下java如何实现国际化
主要步骤:
1、创建属性文件(国际化资源文件)
*国际化资源文件是有baseName+Locale构成,如MessagesBundle_en_US.properties
*缺省的国际化资源文件是baseName.properties格式命名,如:MessagesBundle.properties
*关于中文必须转换成unicode,可以采用J***A_HOME/bin/native2ascii工具转换
命令native2ascii.exe o.properties MessagesBundle_zh_CN.properties
也可以一个一个字符转换
举例:
属性文件示例:
k1=China
k2=Hello,{0}
2、定义Locale对象
*可以获得系统默认local,也可以自定义
*缺省的Locale是有操作系统决定的
*Locale是有语言和国家代码构成
3、创建一个ResourceBundle对象
*ResourceBundle对象用于分离跟本地相关的数据
*如果找不到相应语言或国家代码的属性文件,将使用默认的属性文件(即没有标识语言和国家代码的属性文件:MessagesBundle.properties)
4、从ResourceBundle对象中获取数据,如果有占位符,可以给占位符赋值
示例:
[java]
view plaincopyprint?
public class test {
public static void main(String[] args)
{
//获取系统默认locle
Locale localeDefault=Locale.getDefault();
System.out.println("Country="+localeDefault.getCountry());
System.out.println("Language="+localeDefault.getLanguage());
System.out.println("------------------------");
//我们通过指定一个语言代码和国家代码来创建一个Locale对象
Locale localeNew=new Locale("en","US");
System.out.println("Country="+localeNew.getCountry());
System.out.println("Language="+localeNew.getLanguage());
System.out.println("------------------------");
//读取国际化资源文件
/**
* 其创建方式如下:
第一个参数,表示要从哪些资源属性文件中(MessagesBundle_XX_XX.properties)获取数据
第二个参数,是一个Locale对象,表示要选择哪个资源属性文件
ResourceBundle对象用于分离跟本地相关的数据
如果找不到相应语言或国家代码的属性文件,
将使用默认的属性文件(即没有标识语言和国家代码的属性文件:MessagesBundle.properties)
*/
ResourceBundle myResources =ResourceBundle.getBundle("com.jialin.resource.MessagesBundle", localeDefault);
//从ResourceBundle对象中获取数据
System.out.println(myResources.getString("k1"));
System.out.println(myResources.getString("k2"));
System.out.println("------------------------");
//给国际化资源文件中的占位符赋值
MessageFormat myFormat=new MessageFormat(myResources.getString("k2"));
System.out.println(myFormat.format(new Object[]{"jialin"}));
}
}
Struts国际化实现的核心原理,基本也是这个样子,只是把相关的东西都写到了配置文件中,更复杂也更灵活一些。
下篇继续介绍Struts如何实现国际化。
一、页面(jsp)静态信息的国际化
二、动态消息的国际化
在开始Struts国际化之前,我们先来看一下java如何实现国际化
主要步骤:
1、创建属性文件(国际化资源文件)
*国际化资源文件是有baseName+Locale构成,如MessagesBundle_en_US.properties
*缺省的国际化资源文件是baseName.properties格式命名,如:MessagesBundle.properties
*关于中文必须转换成unicode,可以采用J***A_HOME/bin/native2ascii工具转换
命令native2ascii.exe o.properties MessagesBundle_zh_CN.properties
也可以一个一个字符转换
举例:
属性文件示例:
k1=China
k2=Hello,{0}
2、定义Locale对象
*可以获得系统默认local,也可以自定义
*缺省的Locale是有操作系统决定的
*Locale是有语言和国家代码构成
3、创建一个ResourceBundle对象
*ResourceBundle对象用于分离跟本地相关的数据
*如果找不到相应语言或国家代码的属性文件,将使用默认的属性文件(即没有标识语言和国家代码的属性文件:MessagesBundle.properties)
4、从ResourceBundle对象中获取数据,如果有占位符,可以给占位符赋值
示例:
[java]
view plaincopyprint?
public class test {
public static void main(String[] args)
{
//获取系统默认locle
Locale localeDefault=Locale.getDefault();
System.out.println("Country="+localeDefault.getCountry());
System.out.println("Language="+localeDefault.getLanguage());
System.out.println("------------------------");
//我们通过指定一个语言代码和国家代码来创建一个Locale对象
Locale localeNew=new Locale("en","US");
System.out.println("Country="+localeNew.getCountry());
System.out.println("Language="+localeNew.getLanguage());
System.out.println("------------------------");
//读取国际化资源文件
/**
* 其创建方式如下:
第一个参数,表示要从哪些资源属性文件中(MessagesBundle_XX_XX.properties)获取数据
第二个参数,是一个Locale对象,表示要选择哪个资源属性文件
ResourceBundle对象用于分离跟本地相关的数据
如果找不到相应语言或国家代码的属性文件,
将使用默认的属性文件(即没有标识语言和国家代码的属性文件:MessagesBundle.properties)
*/
ResourceBundle myResources =ResourceBundle.getBundle("com.jialin.resource.MessagesBundle", localeDefault);
//从ResourceBundle对象中获取数据
System.out.println(myResources.getString("k1"));
System.out.println(myResources.getString("k2"));
System.out.println("------------------------");
//给国际化资源文件中的占位符赋值
MessageFormat myFormat=new MessageFormat(myResources.getString("k2"));
System.out.println(myFormat.format(new Object[]{"jialin"}));
}
}
public class test { public static void main(String[] args) { //获取系统默认locle Locale localeDefault=Locale.getDefault(); System.out.println("Country="+localeDefault.getCountry()); System.out.println("Language="+localeDefault.getLanguage()); System.out.println("------------------------"); //我们通过指定一个语言代码和国家代码来创建一个Locale对象 Locale localeNew=new Locale("en","US"); System.out.println("Country="+localeNew.getCountry()); System.out.println("Language="+localeNew.getLanguage()); System.out.println("------------------------"); //读取国际化资源文件 /** * 其创建方式如下: 第一个参数,表示要从哪些资源属性文件中(MessagesBundle_XX_XX.properties)获取数据 第二个参数,是一个Locale对象,表示要选择哪个资源属性文件 ResourceBundle对象用于分离跟本地相关的数据 如果找不到相应语言或国家代码的属性文件, 将使用默认的属性文件(即没有标识语言和国家代码的属性文件:MessagesBundle.properties) */ ResourceBundle myResources =ResourceBundle.getBundle("com.jialin.resource.MessagesBundle", localeDefault); //从ResourceBundle对象中获取数据 System.out.println(myResources.getString("k1")); System.out.println(myResources.getString("k2")); System.out.println("------------------------"); //给国际化资源文件中的占位符赋值 MessageFormat myFormat=new MessageFormat(myResources.getString("k2")); System.out.println(myFormat.format(new Object[]{"jialin"})); } }
Struts国际化实现的核心原理,基本也是这个样子,只是把相关的东西都写到了配置文件中,更复杂也更灵活一些。
下篇继续介绍Struts如何实现国际化。
相关文章推荐
- Java字符串之性能优化
- java写utf-8编码的csv文件,用excel2007打开乱码
- 快速排序 Java实现
- java 中对象引用,以及对象赋值
- java学习视频
- mac os x如何在eclipse中阅读jdk源代码
- ComputeArea.java
- 选择排序 Java实现
- MyEclipse查看.class文件
- 冒泡排序Java实现
- Spring 2.5 多文件上传
- javaweb之jstl标签库
- eclipse 中 svn 插件链接
- myEclipse
- java中synchronized的用法详解
- 从字节码的角度看Java内部类与外部类的互相访问
- SpringMvc(三)配置Mybatis
- SpringMvc(三)配置Mybatis
- Java中常见的运行时异常和非运行时异常
- SpringMvc(二)配置SpringMvc