关于Struts2-I18n国际化
一、什么是I18N?
:人们常把I18N作为“国际化”的简称,其来源是英文单词 internationalization的首末字符i和n。18为中间的字符数。
二、为什么要是用国际化?
:互联网是一个多元文化的集结地,它让信息变的全球化。但是每一个国家的语言却是不同的,那么如何使得在某个国家使用某种语言的版面了?那就是使用I18N.
三、Java中对I18N的支持。
:我们知道Java在底层就提供了国家化的操作,在JDK帮助文档中我们可以找到有关于使用I18N的几个重要的类
1.Locale 获取使用场地等信息
2.ResourceBundle 获取资源文件包
3.MessageFormat 进行参数的设定
public class TestI18n {
/*
* JDK 自带的I18N功能的实现
* */
public static void main(String[] args) {
Locale.setDefault(Locale.US);
/*
Locale [] locales= Locale.getAvailableLocales();
//获取已经安装的语言文件信息
for (Locale locale : locales) {System.out.println(locale.getDisplayCountry()+" :
"+locale.getCountry());
//获取国家 和 国家名的缩写 如: 中国:CN 美国:US
}
System.out.println("--------------------------------------------------------");
for (Locale locale : locales) {
System.out.println(locale.getDisplayLanguage()+" : "+locale.getLanguage());
//获取语言 和 语言缩写 如:中文:zn 英文:en
}
*/
ResourceBundle bundle = ResourceBundle.getBundle("message", Locale.CHINA);
//资源文件对象 getBundle方法的参数为 资源文件basename 和 指定的语言表示(也就是使用什么语言)
//message 为配置文件的前缀 这里有两种语言文件:message_zh_CN.properties, message_en_US.properties
String value=bundle.getString("hello");
//hello为配置文件中的key
/*
hello=hello={0}\u4E2D\u56FD\u4F60\u597D\u5440!
*/
String format = MessageFormat.format(value, new String[]{"北京"});
//使用MessageFormat的format方法进行参数的设定value为需要设定的
//数据new String[]{"北京"} 则是设定的参数
String values="我是{0},来自{1},很高兴认识你{2}";
String strs=MessageFormat.format(values, new String []{"天蓝","地球","外星人"});
System.out.println(strs);
System.out.println(format);
}
}
四、Struts2中的国际化。
:首先我们要知道的是,Struts2的国际化功能是基于Java中的上述操作.我们主要需要了解的是如何在不同的阶层设
置I18N的使用。
1.关于I18N的资源文件的创建
a):I18N的资源文件的名称规范为:BaseName + (_language) +(_country)+(.properties)
BaseName:可以随便起
language:对应设定的语言
country: 对应语言的国家 如:
message_zh_CN.properties (中文资源包)
message_en_US.properties(英文资源包)
b):资源文件的创建有四种方式。
1.全局的资源文件
:创建在Src的根目录下 资源文件的basename 由struts.xml文件中的<Constant
name="struts.custom.i18n.resources" value="message"> value值指定
如:
message_zh_CN.properties (中文资源包)
message_en_US.properties(英文资源包)
2.包级别的资源文件
:创建该包目录下资源文件的basename 为固定写法
如:
package_zh_CN.properties (中文资源包)
package_en_US.properties(英文资源包)
3.类级别的资源文件
:创建在包目录下资源文件的basename为类的名称
如:
RigesterAction_zh_CN.properties(中文资源包)
RigesterAction_en_US.properties(英文资源包)
4.临时的资源文件
:创建在Src的根目录下basename 主要是给<s:i18n>标签提供数据信息的
如:
temp_zh_CN.properties(中文资源包)
temp_en_US.properties(英文资源包)
c):关于资源文件的优先级
文件的优先级是有小及大的:程序为先访问 类级别的资源包 -> 包级别的资源包 -> 全局的资源文件包
d):关于取出资源文件中的信息
1.界面上的取值和设定参数的方法
:使用struts2的标签库
第一种:<S:text name="指定资源文件中的key"/>
第二中:<s:i18n name="指定资源文件的basename名称">
<s:text name="指定资源文件中的key">
<s:param>对应资源文件的{0}</s:param>
<s:param>对应资源文件的{1}</s:param>//依次类推
</s:text>
</s:i18n>
2.Action-validation.xml中的取值的方法:
<message key="指定资源文件中的key"></message>
3.Action中的取值和传入参数的方法
调用ActionSupport的getTest()方法获取信息
this.getTest("指定资源文件中的key","对应参数的集合或数组");
如:
资源文件的信息为:hello=wellcome to ,{1}
this.getTest("hello",new String []{"天蓝"});
结果为:wellcome to 天蓝
分享到:
相关推荐
自己写的 本人也是刚刚接触struts2 所以写的东西比较适合刚刚接触struts2的新人。。
基于Struts2技术的i18n,Web项目的国际化,能够生成,中,日,英三种语言
用MyEclipse工具实现的一个struts2国际化,用于刚接解struts2中i18n的同学学习。很好的代码,深入浅出。
一个超级简单的Struts2国际化demo
非常清晰可用的struts2 i18n国际化实例,非常适合初学者,不会让大家失望的,有问题还请求指教,大家互相学习,谢谢
struts2 国际化 i18n struts2 国际化 i18n struts2 国际化 i18n
struts2国际化_i18n 完整实例。欢迎下载。
struts2i18n.rar struts2 i18n的实例, 环境是myeclipse6. struts2.16. struts国际化。
i18n Locale ResourceBundle MessageFormat 使用例子 在struts2学习开始前需要普及的知识点
NULL 博文链接:https://zhouxianglh.iteye.com/blog/521629
根据不同的语言环境,读取不同的本地资源文件,自动实现本地化。
博文链接:https://zhengdl126.iteye.com/blog/413021
struts1中实现了国际化(i18n)的登陆界面
struts2 中际化示例,加上s2sh所需的Jar就可以运行!如果不行留言,把demo发给你! 示例图:http://blog.csdn.net/liuc0317/archive/2010/12/01/6048552.aspx
i18n,struts2实现国际化 手动配置过滤器实现国际化
Struts2中的validation_多国语言版 国际化+struts2数据校验.zip
使用Struts 进行网页的国际化操作,实现国际化
1-helloworld 2-常用标签 3-action 4-I18N国际化 5-转换器Converter 6-表单数据验证 ... 15-AJAX
国际化(i18n),struts 2实例,一步步教你如何实现一个示例
truts2的国际化与Struts1.2不太一样,对于我们一般的应用程序来说是非常重要的,因为它只需要我们来开发一套逻辑,可以以多种语言来显示,Struts2的国际化本身是基于JAVA语言的国际化的概念。JAVA本身是基于UNICODE...