struts2--java国际化

来源:互联网 发布:苹果天气软件图标 编辑:程序博客网 时间:2024/05/29 03:17

java国际化通过以下三个类来完成:

Ø java.util.ResourceBundle:用于加载一个国家、语言资源包。

Ø java.util.Locale:用于封装一个特定的国家/区域、语言环境。

Ø java.text.MessageFormat:用于格式化带占位符的字符串。

为了实现程序的国际化,必须先提供程序所需要的资源文件。资源文件的内容是很多key-value对。其中key是程序使用的部分,而value则是程序界面的显示字符串。

资源文件的命名可以有如下三种形式:

Ø baseName language _country.properties 

Ø baseName _language.properties 

Ø baseName.properties

其中baseName是资源文件的基本名,用户可以自由定义。而language和country都不可随意变化,必须是Java所支持的语言和国家。

 



获取Locale对象的三种方式:

  1. Locale locale1 = new Locale("zh","CN");     
  2.     
  3. //②只有语言信息的本地化对象    
  4. Locale locale2 = new Locale("zh");      //1
  5.     
  6. //③等同于Locale("zh","CN")    
  7. Locale locale3 = Locale.CHINA;     
  8.     
  9. //④等同于Locale("zh")    
  10. Locale locale4 = Locale.CHINESE;      //2
  11.     
  12. //⑤获取本地系统默认的本地化对象    
  13. Locale locale5= Locale.getDefault();   //3

案例:实现不同的语言环境下输出不同的"Hello world"。

SayHello.java类:

package com.bean;import java.util.Locale;import java.util.ResourceBundle;public class SayHello {  public static void main(String []args) {  //获取系统默认的国家/语言系统Locale locale = Locale.getDefault();//根据指定的国家/语言环境加载资源文件ResourceBundle rBundle = ResourceBundle.getBundle("hello", locale);//通过键取值System.out.println(rBundle.getString("hello"));}}

根路径下的两个属性配置文件:

hello_en_US.properties:

hello =Hello World\!


hello_zh_CN.properties:

hello =\u60A8\u597D   (您好)

以上程序不是直接打印"Hello World",而是从资源包中读取的信息,如果在中午环境下该程序的运行结果将打印“您好”,英文环境则打印"Hello world"。



MessageFormat类:

案例:创建MyLocale的java类:

package com.bean;import java.text.MessageFormat;import java.util.Locale;import java.util.ResourceBundle;public class MyResource {  public static void main(String[] args) {Locale locale = Locale.getDefault();ResourceBundle rBundle = ResourceBundle.getBundle("hello", locale);String hello = rBundle.getString("hello");String mFormat = MessageFormat.format(hello, "刘东升",new java.util.Date());//format(pattern,args)System.out.println(mFormat);}}

创建国际化资源文件hello_zh_CN.properties:

hello ={0},\u60A8\u597D,{1}

输出:


MessageFormat提供了一个format(String pattern,Object ……values)静态方法,该方法将多个参数填充到pattern字符串中,其中pattern字符串是一个带占位符的字符串

原创粉丝点击