一口一口吃掉Struts(九)——国际化问题(1)

系统 1447 0

Web 应用实现国际化(i18n),主要包括两个方面

一、页面 jsp )静态信息 国际化

二、动态消息的 国际化

在开始 Struts 国际化之前,我们先来看一下 java 如何实现国际化

主要步骤:

1、创建属性文件(国际化资源文件)

* 国际化资源文件是有baseName+Locale构成,如MessagesBundle_en_US.properties

* 缺省的国际化资源文件是baseName.properties格式命名,如:MessagesBundle.properties

* 关于中文必须转换成unicode,可以采用JAVA_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对象中获取数据,如果有占位符,可以给占位符赋值

示例:

    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如何实现国际化。

一口一口吃掉Struts(九)——国际化问题(1)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论