struts2学习笔记之十八(国际化)
来源:互联网 发布:数据库调用函数 编辑:程序博客网 时间:2024/05/18 21:41
java国际化
程序国际化:
程序可以根据机器所在国家、语言环境,自动翻译内容
国际化的本质就是:查找、替换,从资源包里找到相应国家下的关键字对应的语言文字
国际化的步骤:
(1)提供国际化资源文件
如果国家化资源包中有非西欧字符,需要使用native2ascii
处理文件,
native2ascii sourcefile destfile
生成一个是Unicode字符的文件
资源文件的写法:文件名语言代码国家代码
xiyang_en_US.properties
hi=”hello”
xiyang_zh_CN.properties
hi=”你好”
注意:不能直接写”你好”,要使用Unicode编码,转换之后hi=”\u4f60\u597d”
(2)在程序中输出的是国际化消息的key值,这样程序就会从资源包中搜索key的value
提供国际化资源文件
mess_zh_CN.properties
java国际化
public class LocaleTest{ public static class main(String[] args){ //查看系统支持的语言和国家代码 System.out.println("查看语言、国家代码"); Locale[] locales = Locale.getAvailableLocales(); for(Locale locale: locales){ System.out.println(locale.getDisaplayLanguage() +"---->"+locale.getLanguage()); System.out.println(locale.getDispalayCountry() +"---->"+locale.getCountry()) } //已经提供了两个资源包hi_en_US.properties,hi_zh_CN.properties //获取本机的环境 Locale locale = Locale.getDefault(Locale.Ctegory.FORMAT); //绑定资源文件 ResouceBundle bundle=ResourceBundle.getBundle("hi",locale); System.out.println(bundle.getString("hi")); }}
struts2的国际化
- 支持模块化加载
struts2支持自动加载国际化资源
jsp页面的国际化
i18n,internationalization 取i和末尾n,中间省略18个字母,故有i18n
1、需要手工加载国际化消息
使用<s:i18n .../>
2、在页面上使用
<s:text ../>
根据key来输出国际化消息
如果是表单标签,可以直接使用key来指定国际化消息的key
每一个页面都使用一个国际化模块Action国际化
1、自动加载国际化消息
ActionSupport类实现了action接口,而且它还增加了输入校验支持,国际化支持等功能
因此推荐继承ActionSupport
让国际化消息的basename与action类名相同,而且放在同一个目录下
getText是ActionSupport的方法,专门用来加载国际化消息
2、在action类中调用getText()方法
getText(key,String[])
getText(key)包范围的国际化
1、自动加载国际化消息
让国际化消息的basename为package(不是与包名相同),而且放在该包下面
可以让该包下面的action共享同一个国际化资源文件
2、在action类中调用getText()方法
getText(key,String[])
getText(key)全局国际化资源文件
1、通过一个struts.custom.i18n.resources常量来加载国际化资源
2、全局国际化资源文件,即可被action访问,也可以被jsp页面访问
3、尽量少用,这样不利于项目后期的升级和维护
实例
JSP国际化
<!--JSP页面的国际化--><!--name表示国际化消息的baseName--><!--注意s:i18n的作用范围--><%@ page language="java" import="java.util.*" pageEncoding="gb2312"%><%@ taglib prefix="s" uri="/struts-tags"%><!-- 最好设置一个resource文件夹,且放在src下面 ,放在content文件下会出错--><!--重点--><s:i18n name="resource/I18nJSP" ><html> <head> <title> <s:text name="LoginPage"/> </title> </head> <body> <!-- 下面的表单的好处 1、更简单 2、自动支持2列布局 3、自动输出类型转换失败,输入校验失败的错误信息 --> <s:form action="loginAction"> <s:textfield name="name" key="username" /> <s:textfield name="pass" key="password" /> <s:submit key="login"/> </s:form> </body></html></s:i18n><!--文件内容:I18nJSP_zh_CN.propertiesLoginPage=\u767B\u9646username=\u7528\u6237\u540Dpassword=\u5BC6\u7801login=\u767B\u9646I18nJSP_en_US.propertiesLoginPage=Login Pageusername=usernamepassword=passwordlogin=login in-->
Action类国际化
public String execute() throws Exception { // TODO Auto-generated method stub if(name.equals("me") && pass.equals("12345")){ setTip(getText("login", new String[]{name})); return SUCCESS; } return ERROR; }/*与action同名,且放在同一个包下面,系统会自动加载Login_zh_CN.propertieslogin=\u5F88\u9AD8\u5174\u89C1\u5230\u4F60\uFF0C{0}\uFF01Login_en_US.propertieslogin=Nice to meet you,{0}\!*/
全局国际化
将所有的国际化的key集中到一个文件中,然后直接由系统自动调用
重点是struts.xml中配置常量struts.custom.i18n.resouresstruts 默认使用浏览器设置选择国家和语言
提供机制让用户选择国家语言环境
A、根据request_locale来确定确定
如在提交请求时加上request_locale=en_US来设定语言环境为English
B、直接通过浏览器选项修改语言环境
重点就是在struts.xml中添加常量:<constant name="struts.custom.i18n.resources" value="/resource/globalI18n"></constant>
总结:
jsp页面和全局国际化都是需要指定资源文件所在的位置
<s:i18n name="">
<constant name="struts.custom.i18n.resources" value="/resource/globalI18n"></constant>
action和package范围的国际化会自动加载
只需要在命名的时候注意,action范围需要与action同名,package需要命名为package_xx_xx.properties
- struts2学习笔记之十八(国际化)
- J2EE系列之Struts2学习笔记(十八)--Struts2国际化
- struts2学习笔记之九(国际化)
- Struts2学习笔记(3)之国际化
- Struts2学习笔记之国际化
- Struts2学习笔记之国际化
- struts2学习笔记之十八(下载文件)
- 【Struts2学习笔记(12)】Struts2国际化
- Struts2学习笔记之国际化一
- Struts2.x 学习笔记 之 国际化
- 学习笔记-------------------struts2国际化
- 国际化---struts2学习笔记
- struts2学习笔记----国际化
- struts2学习之---国际化
- Struts2学习笔记(十)国际化
- Struts2学习笔记 国际化(Internationalization)
- struts2学习笔记(八)国际化
- struts2学习笔记6--国际化
- 第十三周项目1--动物这样叫(1)
- ubuntu jdk8·安裝
- IOS之UIPickerView添加确定,取消按钮
- 第十三周项目1——动物这样叫(1)
- 详细整理:UITableView优化技巧
- struts2学习笔记之十八(国际化)
- C++刷题——2736: 指针练习--输出最大值
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- 2015.6.3动物这样叫
- Oracle学习(12):存储过程,函数和触发器
- 第十三周【项目2-形状类族的中的纯虚函数】
- 第13周 【项目3-立体类族共有的抽象类】
- 第十三周项目:动物这样叫(2)
- 平衡二叉查找树 [AVL]