1.今天学习
实现用户管理界面的国际化
html页面的国际化(含Javascript的国际化)采用读取Properties文件的方式。和文中不一样的是,不再是用户手动选择语言版本,而是改用js读取语言版本配置文件来决定读取哪个版本资源文件。代码大致如下:
-
var bLoad= false;
-
function getRootPath() {
-
var pathName = window.location.pathname.substring(1);
-
var webName = pathName == '' ? '' : pathName.substring(0, pathName.indexOf('/'));
-
return window.location.protocol + '//' + window.location.host + '/'+ webName;
-
}
-
-
function GetValueByKey(key){
-
if(!bLoad)
-
{
-
loadProperties();
-
bLoad=true;
-
}
-
var value = $.i18n.prop(key);
-
return value;
-
};
-
-
function loadProperties(){
-
var JsSrc = (navigator.language || navigator.browserLanguage).toLowerCase();
-
if(JsSrc.indexOf('zh')>=0)
-
{
-
JsSrc = 'js_zh_CN';
-
}
-
else if(JsSrc.indexOf('en')>=0)
-
{
-
JsSrc = 'js_en_US';
-
}
-
else
-
{
-
JsSrc = 'js_zh_CN';
-
}
-
-
var i18npath = getRootPath()+ "/resources/js/"
-
jQuery.i18n.properties({//加载资浏览器语言对应的资源文件
-
name:JsSrc, //资源文件名称
-
path: i18npath, //'resources/js/', //资源文件路径
-
mode:'map', //用Map的方式使用资源文件中的值
-
callback: function() {//加载成功后设置显示内容
-
-
}
-
});
-
};
其它的js可以这样调用:
-
document.write("<script language=javascript src='common/taglibs.js'></script>"); // 这句放在最前面
-
var key = “user”;
-
var value = GetValueByKey(key);
java部分的国际化,采用读取语言配置文件,语言配置文件大致如下:
-
-
<properties>
-
<category name="LangConf">
-
<property name="Lang" value="en_US" /> <!-- zh_CN --> <!-- en_US -->
-
</category>
-
</properties>
然后增加一个Java读取这个配置文件的类:
-
// 读取语言配置文件的语言配置类
-
public class LangConfInit {
-
public static String language = null;
-
public static ResourceBundle rb=null;
-
public LangConfInit(){
-
if(null == language && null == rb){
-
language = ConfigUtil.getProperty("LangConf","Lang");
-
rb = ResourceBundle.getBundle("message_"+language);
-
}
-
}
-
-
public String GetValue(String key)
-
{
-
try {
-
String keyValue = new String(rb.getString(key).getBytes("ISO-8859-1"), "utf-8");
-
return keyValue;
-
} catch (UnsupportedEncodingException e) {
-
e.printStackTrace();
-
}
-
return null;
-
}
调用代码如下:
-
public LangConfInit lang =new LangConfInit();
-
String vaule = lang.GetValue("user");
2.没有遇到问题
3.明天打算学习
数字的格式化