2012-04-13 1 views
0

sencha touch 2의 브라우저 언어에 따라 파일을 선택하는 방법은 무엇입니까? 내 프로젝트에는 app_de.js, app_en-US.js 및 app_es.js 파일이 3 개 있습니다. 나는 브라우저 언어를 발견하고이 같은 파일을로드하고 있습니다 :브라우저 언어에 따라 파일을 선택하는 방법은 무엇입니까?

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

나를 따라 파일을로드하는 방법을 알려 주시기 바랍니다 : 내가 이런 식으로 포함하는 경우

<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> 

파일은 개별적으로 작동을 브라우저의 언어로?

+0

서버에서 어떤 작업을 수행 할 수 있습니까? 아니면 JavaScript로 고정되어 있습니까? –

답변

0

브라우저 언어를 감지하는 브라우저가 더 필요합니다. 거기에 대한 표준은 없지만, 다음은 좋은 시도입니다 : 당신은 또한 당신이 지원하는 매핑 언어 코드의 더 나은 방법이 필요

function browserLanguage() { 
    if (!navigator) { return null; } 
    return navigator.language || navigator.browserLanguage || 
      navigator.systemLanguage || navigator.userLanguage || null; 
} 

. 예를 들어, de-AT가 de로 인식되어서 취급되어서는 안됩니까? en-GB는 어떻습니까? 가장 간단한 방법은 언어 코드를 구문 분석하여 split('-')을 수행하고 첫 번째 부분 만 취하는 것입니다. 파일이 en-US.js 일 필요가있는 경우 en을 en-US에 매핑해야합니다.

나는 Ext.fly()을 모르지만 script 요소를 추가하는 것은 라이브러리가 없어도 비교적 쉽습니다. 문서에서 해당 위치를 찾고 document.createElement('script')을 입력하고 src 속성을 할당하고 문서 트리에 넣으십시오.

브라우저 언어는 고유 한 UI 언어에 대한 브라우저 자체 아이디어이므로 사용자의 기본 설정과 전혀 일치하지 않아도됩니다. 사용자가 어떤 브라우저 (및 그 버전)를 사용하는지 결정할 수 있다는 것을 제외하고는 일반적으로 사용자가 제어 할 수 없습니다.

1

Sencha Touch 2에서 브라우저 언어에 따라 파일을로드하려면 가장 일반적인 방법은 공통 파일을로드하고 브라우저 언어에 따라 내용을로드하는 것입니다.

<script type="text/javascript" src="locale.js"></script><!--locale.js was the file invoked--> 

그리고 브라우저의 언어에 따라 locale.js에서 내용을로드하십시오. 로그인 양식

예 :이에서

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; 

    ........ 

} 

는, 브라우저 언어 인 경우 en-US는 영어 컨텐츠를 표시하고, 언어는 힌디어 경우는 힌디어 내용을 표시합니다.

여기 간단한 스위치 케이스를 사용했지만 유용성에 따라 목표를 수정하십시오.

관련 문제