-
Notifications
You must be signed in to change notification settings - Fork 22
(国际化 多语言) 引擎内置
lauer3912 edited this page Mar 8, 2015
·
2 revisions
#(国际化-多语言) 引擎内置
本地引擎本身,已经实现了自己多语言的处理。
从bs.js 中可以查看到,哪些语言,我们已经做了本地化处理。
///获得当前苹果操作系统本地的语言
getAppleLanguage:function(){
if(b$.pN){
return b$.pN.app.curAppleLanguage();
}
return "en-US";
},
///获得兼容浏览器的语言标识, 发起者,为Native
getCompatibleWebkitLanguageList:function(_getType){
var getType = _getType || 'Native2Webkit'; // 获取类型,默认是获取兼容WebKit的语言标识数组
var defaultLanguage = 'en';
//本地对应浏览器的语言标识
var NativeApple2WebKit_LanguageMap = {
'Unknown':['']
,'en':['en','en-US','en-us'] // 英语
,'fr':['fr', 'fr-FR', 'fr-fr'] // French (fr) 法语
,'de':['de', 'de-DE', 'de-de'] // German (de) 德语
,'zh-Hans':['zh', 'zh-CN', 'zh-cn', 'zh-Hans'] // Chinese (Simplified) (zh-Hans) 中文简体
,'zh-Hant':['zh-TW', 'zh-tw', 'zh-Hant'] // Chinese (Traditional) (zh-Hant) 中文繁体
,'ja':['ja', 'ja-JP', 'ja-jp'] // Japanese (ja) 日语
,'es':['es', 'es-ES', 'es-es'] // Spanish (es) 西班牙语
,'es-MX':['es-MX', 'es-XL', 'es-xl'] // Spanish (Mexico) (es-MX) 西班牙语(墨西哥)
,'it':['it', 'it-IT', 'it-it'] // Italian (it) 意大利语
,'nl':['nl', 'nl-NL', 'nl-nl'] // Dutch (nl) 荷兰语
,'ko':['ko', 'ko-KR', 'ko-kr'] // Korean (ko) 韩语
,'pt':['pt', 'pt-BR', 'pt-br'] // Portuguese (pt) 葡萄牙语
,'pt-PT':['pt-PT','pt-pt'] // Portuguese (Portugal) (pt) 葡萄牙语(葡萄牙)
,'da':['da', 'da-DK', 'da-da'] // Danish (da) 丹麦语
,'fi':['fi', 'fi-FI', 'fi-fi'] // Finnish (fi) 芬兰语
,'nb':['nb', 'nb-NO', 'nb-no'] // Norwegian Bokmal (nb) 挪威语
,'sv':['sv', 'sv-SE', 'sv-se'] // Swedish (sv) 瑞典语
,'ru':['ru', 'ru-RU', 'ru-ru'] // Russian (ru) 俄语
,'pl':['pl', 'pl-PL', 'pl-pl'] // Polish (pl) 波兰语
,'tr':['tr', 'tr-TR', 'tr-tr'] // Turkish (tr) 土耳其语
,'ar':['ar', 'AR'] // Arabic (ar) 阿拉伯语
,'th':['th', 'th-TH', 'th-th'] // Thai (th) 泰语
,'cs':['cs', 'cs-CZ', 'cs-cz'] // Czech (cs) 捷克语
,'hu':['hu', 'hu-HU', 'hu-hu'] // Hungarian (hu) 匈牙利语
,'ca':['ca', 'ca-ES', 'ca-es'] // Catalan (ca) 加泰罗尼亚语
,'hr':['hr', 'hr-HR', 'hr-hr'] // Croatian (hr) 克罗地亚语
,'el':['el', 'el-GR', 'el-gr'] // Greek (el) 希腊语
,'he':['he', 'he-IL', 'he-il'] // Hebrew (he) 希伯来语
,'ro':['ro', 'ro-RO', 'ro-ro'] // Romanian (ro) 罗马尼亚语
,'sk':['sk', 'sk-SK', 'sk-sk'] // Slovak (sk) 斯洛伐克语
,'uk':['uk', 'uk-UA', 'uk-ua'] // Ukrainian (uk) 乌克兰语
,'id':['id', 'ID', 'id-ID', 'id-id'] // Indonesian (id) 印尼语
,'ms':['ms', 'MS', 'ms-MS', 'ms-ms'] // Malay (ms) 马来西亚语
,'vi':['vi', 'vi-VN', 'vi-vn'] // Vietnamese (vi) 越南语
};
if(getType === 'Native2Webkit'){ // 先获取Native的语言,然后查找Map
var apple_lng = 'en-US';
if(b$.pN){
apple_lng = b$.pN.app.getAppleLanguage();
}
if(NativeApple2WebKit_LanguageMap.hasOwnProperty(apple_lng)){
return NativeApple2WebKit_LanguageMap[apple_lng];
}
return NativeApple2WebKit_LanguageMap[defaultLanguage];
}else if(getType === 'webkitCompatible'){
var mapValue = null, webLanguage = navigator.language || 'en';
var inArray = function(value, array){
if (Array.prototype.indexOf) {
return array.indexOf(value);
} else {
for (var i = 0; i < array.length; i++) {
if (array[i] === value) return i;
}
return -1;
}
};
for(var key in NativeApple2WebKit_LanguageMap){
if(NativeApple2WebKit_LanguageMap.hasOwnProperty(key)){
var languageArray = NativeApple2WebKit_LanguageMap[key];
if(inArray(webLanguage, languageArray) > -1){
mapValue = languageArray;
break;
}
}
}
return mapValue;
}
return console.error('调用方式不正确,需要的参数为:Native2Webkit 或者webkitCompatible');
},