Java官方使用Resource Bundle进行国际化,但是Resource Bundle的properties格式只支持ASCII码,Unicode需要转化后才能用。xml格式的,struts又不支持(没查到)。好在IDEA有个透明ASCII转换功能。File->Settings->Editor->File Encodings
sky=Sky
sky=天
<struts>
<constant name="struts.custom.i18n.resources" value="i18n"/>
</struts>
package cn.corpro.iot.action;
import com.opensymphony.xwork2.ActionSupport;
import java.io.IOException;
/**
* Author: BaiJiFeiLong@gmail.com
* Date: 2016/7/7 10:18
*/
public class HomeAction extends ActionSupport {
private String sky;
public String index() throws IOException {
sky = getLocale() + getText("sky", "No sky");
return SUCCESS;
}
public String getSky() {
return sky;
}
}
在任一请Struts请求中,加入参数?request_locale=zh_CN即可
对于未支持的语言,Struts不是用默认的语言文件(比如i18n.properties),也不是用英语,而是使用JVM的语言设置。所以要让默认的语言文件真正缺省使用,也就是默认用英语(默认语言文件用英语的情况),可以将JVM的语言设为英语。
给Tomcat增加启动参数:-Duser.language=en
这样,Struts会根据HTTP请求头的语言设定自动进行国际化,而且默认使用英语。