經(jīng)驗(yàn)總結(jié)——Java WEB系統(tǒng)國(guó)際化
并行處理系統(tǒng)的國(guó)際化主要包括前端的國(guó)際化、后端的國(guó)際化和算法的國(guó)際化。前端的國(guó)際化包括css、js和html文件的國(guó)際化,后端的國(guó)際化包括jsp、java代碼的國(guó)際化。
? ? ? ? ? jsp的國(guó)際化方式的方式是采用國(guó)際化標(biāo)簽庫(kù)的方式。具體是在jsp頁(yè)面添加如下代碼:
??//?導(dǎo)入fmt庫(kù)//?設(shè)置為英文,若設(shè)置為中文則是zh_CN//確保加載的是webWebContentWEB-INFclassesjsp_en_US.properties文件"?cdata_tag="script"?_ue_custom_node_="true">//?確保加載
? ? ? ? html頁(yè)面的國(guó)際化(含Javascript的國(guó)際化)采用讀取Properties文件的方式,具體參考使用jQuery.i18n.properties實(shí)現(xiàn) Web 前端的國(guó)際化的實(shí)現(xiàn)方式。和文中不一樣的是,不再是用戶手動(dòng)選擇語(yǔ)言版本,而是改用js讀取語(yǔ)言版本配置文件來決定讀取哪個(gè)版本資源文件。代碼大致如下:
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({//加載資瀏覽器語(yǔ)言對(duì)應(yīng)的資源文件
name:JsSrc,?//資源文件名稱
path:?i18npath,??????????????????????//'resources/js/',?//資源文件路徑
mode:'map',?//用Map的方式使用資源文件中的值
callback:?function()?{//加載成功后設(shè)置顯示內(nèi)容
}
});
};
? ? ? ?其它的js可以這樣調(diào)用:
document.write("");??//?這句放在最前面
var?key?=?“user”;
var?value?=??GetValueByKey(key);
? ? ? ?
? ? ? java部分的國(guó)際化,采用讀取語(yǔ)言配置文件,語(yǔ)言配置文件大致如下:
然后增加一個(gè)Java讀取這個(gè)配置文件的類:
//?讀取語(yǔ)言配置文件的語(yǔ)言配置類
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;
}調(diào)用代碼如下:
public?LangConfInit?lang?=new?LangConfInit();
String?vaule?=?lang.GetValue("user");? ? ?css的國(guó)際化另外寫文章進(jìn)行論述。
?
參考文獻(xiàn):
1.?用jQuery.i18n.properties實(shí)現(xiàn) Web 前端的國(guó)際化
2.?使用JSP的fmt標(biāo)簽實(shí)現(xiàn)國(guó)際化支持
3.JavaWeb 后端





