日期:2014-05-16  浏览次数:20346 次

JS消息国际化
需求背景:***销售支撑系统现在需要在中国及非中国的地区上线,以前在JS里面的提示信息需要提到外面来做国际化。

技术实现:通过浏览器的属性来获取是中文操作系统还是英文操作系统,如果是中文操作系统,则从中文资源里面读取提示信息。如果是英文操作系统,则从英文资源里面读取信息。

代码:
1、首先获得操作系统的类型:中文、英文
function getLanguageType() {
  var appName = navigator.appName;
  var clientLanguage = null;
  if (appName == "Microsoft Internet Explorer") {
    clientLanguage = navigator.userLanguage;
  } else {
    clientLanguage = navigator.language;
   }
   return clientLanguage.substring(0, 2);
}

2、获取资源信息
function getResource(key) {
var langType = getLanguageType();
if (langType.toUpperCase()=="ZH") {
return CPropertes_ZN[key];
} else {
return CPropertes_EN[key];
}
}

String.prototype.toMessage=function(args){
if(this==""){
return this;
}else{
var propVal=getResource(this);
if(propVal != undefined && args != undefined){
for(var i=0;i<args.length;i++){
propVal=propVal.replace(/%s/,args[i]);
}
}
return propVal;
}
}

var CPropertes_ZN = {
"USER_NOT_EXIST": "用户名[%s]不存在."
}

var CPropertes_EN = {
"USER_NOT_EXIST": "用户名[%s]不存在."
}

3、测试
alert( "USER_NOT_EXIST".toMessage(["yltf"]) );