2017-11-11 7 views
0

웹 응용 프로그램에서 i18next와 함께 사용할 수있는 영어 및 중국어 번역본이 있습니다. 이제 아래 코드를 사용하여 en-US로 기본 언어로 사용하고 중국어로 변경할 수있는 옵션이 필요했습니다. 그러나 i18nextLng에 대한 로컬 저장소 변수를 조회하면 값은 en-ZA입니다. 기본 영어가 en-US로 설정되지 않는 이유는 무엇입니까?i18next 기본 언어가 en-US 대신 en-ZA로 설정됩니다.

내가 잘못 된 부분을 알려주십시오. 감사.

아래는 내가 사용하는 코드는 다음과 같습니다

i18next 
    .use(i18nextXHRBackend) 
    .use(i18nextBrowserLanguageDetector) 
    .init({ 
    fallbackLng: 'en', 
    debug: true, 
    ns: ['menu', 'translate'], 
    defaultNS: 'translate', 
    backend: { 

     loadPath: '/assets/locales/{{lng}}/{{ns}}.json', 
     crossDomain: false 
    } 
    }, function(err, t) { 
    // init set content 
    updateContent(); 
    }); 

답변

1

현재 설정은 검출기 (로컬 스토리지에서 => EN-ZA)에서 감지 된 언어가 발견되면 "그냥"사용되는 fallbackLng을 설정합니다.

init에서 감지 집합 lng을 수동으로 무시하거나 i18next.changeLanguage을 사용하십시오.

+0

안녕하세요 @ jamuhl, 나는 로그인 페이지에 js에 lng : en을 입력 해 보았습니다. 하지만 그 문제는 사용자가 로그인 페이지에서 중국어를 선택하고 로그인 후 페이지를 탐색하는 경우입니다. 그리고 나서 그는 사인을하고 로그인 페이지로 간다. 중국어가 아니라 영어로 바뀐다. 거기에 대한 해결책이 있습니까? 세션이 활성화 될 때까지 사용자를 위해 선택한 언어로 유지하십시오. – bgth

+0

그래서 기본적으로 당신은 탐지를 원하지 않습니다 ...? init 및 config lng 감지기에 lng를 설정하지 마십시오. 캐시 만 검색합니다. https://github.com/i18next/i18next-browser-languageDetector#detector-options – jamuhl

+0

Thanks @jamuhl. – bgth