1) java.util.Locale 表示了特定的地理、政治和文化地区. 环境信息对象。
由语言代码和区域代码组成。
语言代码小写字母: en,zh
区域代码大写字母: US,CN
2) java.util.ResourceBundle 用于绑定特定语言环境的资源对象。
资源文件的命名规范:基本名_语言代码[_区域代码].properties
默认资源文件名:基本名.properties
中国:基本名_zh_CN.properties
美国:基本名_en_US.properties
3) java.text.MessageFormat 用于对含有占位符的字符进行格式化输出。
4) 编码方式:
Locale locale = Locale.CHINA;
ResourceBundle rb = ResourceBundle.getBundle("资源文件的基本名", locale);
String value = rb.getString("key");
String str = MessageFormat.format(value, Object... arguments);
2. Struts2的国际化应用
1) 在classpath中添加针对特定语言环境的资源文件
2) 在struts.xml中通过常量配置注册资源文件的基本名:
3) 在JSP页面中,用
Struts2的表单标签都有一个属性key用来取出本地化的消息
4) 在Action中,可以使用ActionSupport类提供的getText("key", 给占位符传值的对象数组);也可以获取本地化的消息
具体示例
index.jsp
Java代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
JavaCrazyer
I18NAction.java
Java代码
package com.javacrazyer.action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class I18NAction extends ActionSupport {
private static final long serialVersionUID = -7001482935770262132L;
public String execute() throws Exception{
String i18nStr = this.getText("welcome", new String[]{"wrr"});
ActionContext.getContext().put("msg", i18nStr);
return SUCCESS;
}
}
资源文件:msg_en_US.properties
Java代码
index_title=Struts2 I18N APP Demo
welcome=Welcome {0}\!
资源文件:msg_zh_CN.properties
Java代码
#这里放置中文消息键/值对
index_title=Struts2\u56FD\u9645\u5316\u5E94\u7528\u793A\u4F8B
welcome=\u6B22\u8FCE{0}\u60A8\u7684\u5230\u6765\uFF01
src/struts.xml
Html代码
/success.jsp
succ.jsp
Java代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
一般情况下我们浏览器默认语言都是中文,运行呈程序效果如下
如果更换浏览器语言为英语【美国】,那么重新刷新页面,结果就是英文界面如下