2016-07-22 9 views
3

webapp에서 작업하고 있습니다. i18next를 사용하고 있으며 옵션에 "lng"를 지정하지 않으면 언어를 감지하지 못합니다. "navigator.language || navigator.userLanguage"를 사용하면 Chrome에서 문제가 없습니다. "en"과 같은 것을 반환합니다. 그러나 예를 들어 Firefox는 "en-GB"를 반환합니다. 나는 지역 번역을 사용하지 않으며 i18next는 "en-GB"를 "en"으로 리디렉션하지 않습니다. 따라서 시스템이 작동하지 않습니다.브라우저 언어를 감지하고 i18next와 함께 사용하는 데 문제가 있습니다.

$(document).ready(function(){ 
 
     i18next.use(i18nextXHRBackend); 
 
     i18next.init({ 
 
      'debug': true, 
 
      'lng': navigator.language || navigator.userLanguage, 
 
      'fallbackLng': 'en', 
 
      'load': 'currentOnly', 
 
      'backend': { 
 
      loadPath: 'locales/{{lng}}/{{ns}}.json' 
 
      } 
 
     }, function() { 
 
      jqueryI18next.init(i18next, $); 
 
      $('body').localize(); 
 
     }); 
 
    });

+0

아마도 매우 잘 지원되는 기능은 아닙니다 ... 'navigator.language.substr (0, 2)'로 충분합니까? 그렇게하면 'en-GB'가 'en'으로 바뀝니다 ... 이것은 정말로 'lng'에 대해 i18next가 허용하는 값 ​​목록에 따라 다릅니다. –

+0

@ AurelBílý 그걸로 작동합니다. 감사. 그래서, 내 코드에 문제가 없지, 그렇지? – mutlucan96

답변

1

i18next이 지역의 언어를 지원합니다 ... 즉 지역화에 관한 내용은 다음과 같습니다

여기 내 코드입니다.

이 지역없이 단지 언어를 지원하고자하는 경우

load: 'languageOnly'을 설정

$(document).ready(function(){ 
    i18next.use(i18nextXHRBackend); 
    i18next.init({ 
     'debug': true, 
     'load': 'languageOnly', 
     'lng': navigator.language || navigator.userLanguage, 
     'fallbackLng': 'en', 
     'load': 'currentOnly', 
     'backend': { 
     loadPath: 'locales/{{lng}}/{{ns}}.json' 
     } 
    }, function() { 
     jqueryI18next.init(i18next, $); 
     $('body').localize(); 
    }); 
}); 

이 조회에 KO-GB 받아들이는 피하기 만 엔을 사용합니다. 이것을 설정하지 않으면 i18next는 여전히 동일한 결과를 출력하지만 en-GB 번역을로드하려고 시도합니다.