Localization 如何根据浏览器语言选择文件?

Localization 如何根据浏览器语言选择文件?,localization,sencha-touch,sencha-touch-2,Localization,Sencha Touch,Sencha Touch 2,如何根据sencha touch 2中的浏览器语言选择文件?在我的项目下,我有3个文件app_de.js、app_en-US.js和app_es.js。 我正在查找浏览器语言并按如下方式加载文件: <script type="text/javascript" id="extlocale"> var browserLang = window.navigator.language; // get the browsers language alert(browserL

如何根据sencha touch 2中的浏览器语言选择文件?在我的项目下,我有3个文件app_de.js、app_en-US.js和app_es.js。 我正在查找浏览器语言并按如下方式加载文件:

 <script type="text/javascript" id="extlocale">

    var browserLang = window.navigator.language; // get the browsers language
    alert(browserLang);
    var locale = 'en'; // default locale

    if(browserLang == 'de' || browserLang == 'de-de')       //called when the language is german
    {
        locale = 'de';
    }
    else if(browserLang == 'en-US' || browserLang == 'en-us' || browserLang == 'en')
    {
        locale = 'en-US';                           //called when the language is english
    }
    else if(browserLang == 'es' || browserLang == 'es-es' )
    {
        locale = 'es';                              //called when the language is spanish
    }
    else
    {
        console.log("Invalid language");
        locale = 'en-US';
    }
    if(locale) {

       Ext.fly('extlocale').set({src:'app_'+locale+'.js'});

    }

</script>

var browserLang=window.navigator.language;//获取浏览器语言
警报(browserLang);
变量区域设置='en';//默认语言环境
if(browserLang=='de'| | browserLang=='de'')//在语言为德语时调用
{
地区='de';
}
else if(browserLang='en-US'| | browserLang='en-US'| | browserLang='en-US'|
{
locale='en-US';//当语言为英语时调用
}
else if(browserLang=='es'| | browserLang=='es es')
{
locale='es';//当语言为西班牙语时调用
}
其他的
{
console.log(“无效语言”);
语言环境='en-US';
}
如果(语言环境){
Ext.fly('extlocale').set({src:'app_'+locale+'.js'});
}
如果我以这种方式包括这些文件,它们将单独工作:

  <script type="text/javascript" src="app_en-US.js"></script>


请告诉我如何根据浏览器的语言加载文件?

您需要一种更跨浏览器的方式来检测浏览器语言。它没有标准,但以下是一个很好的尝试:

 function browserLanguage() {
   if (!navigator) { return null; }
   return navigator.language || navigator.browserLanguage ||
          navigator.systemLanguage || navigator.userLanguage || null; 
 }  
您还需要更好的方法将语言代码映射到您支持的代码。例如,de AT不应该被认为是de吗?那英格呢?最简单的方法是解析语言代码,这样您就可以进行
拆分('-')
,只取第一部分。如果您的文件需要为en-US.js,则需要将en映射到en-US

我不知道
Ext.fly()。只需在文档中找到它的位置,执行
document.createElement('script')
,将
src
属性分配给它,并将其放入文档树中


请注意,浏览器语言是浏览器自己的UI语言,完全不需要与用户的首选项匹配。用户通常甚至无法控制它,除非用户可以决定使用哪种浏览器(及其版本)。

要根据Sencha Touch 2中的浏览器语言加载文件,最好加载一个通用文件,并根据浏览器语言加载内容

<script type="text/javascript" src="locale.js"></script><!--locale.js was the file invoked-->
由此可知,如果浏览器语言为
en-US
,则显示英语内容,如果语言为印地语,则显示印地语内容


在这里,我使用了一个简单的切换案例,但根据您的可用性,可以对其进行修改以满足您的目标。

您可以在服务器上执行任何操作,还是只能使用JavaScript?
var browserLang = window.navigator.language; // get the browsers language
alert(browserLang);

var Messages;

switch (browserLang) {

    case 'en-US':
    Messages = {
        username : 'EN-glish Username',
        password : 'EN-glish Password',
        login    : 'EN-glish Login' 
    };
    break;

    case 'hi':
    Messages = {
        username : 'HI-ndi Username',
        password : 'HI-ndi Password',
        login    : 'HI-ndi Login'   
    };
    break;

    ........

}