Skip to content

(国际化 多语言) 引擎内置

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');
            },