i18next настройка языка по умолчанию для en-ZA вместо en-US

У меня есть переводы на английский и китайский языки для использования с i18next в моем веб-приложении. Теперь, с приведенным ниже кодом, я хотел, чтобы он был en-US в качестве языка по умолчанию и имел возможность перейти на китайский. Но когда я ищу переменную локального хранилища для i18nextLng, значение равно en-ZA. Почему английский язык по умолчанию не настроен на en-US.

Пожалуйста, дайте мне знать, где я ошибаюсь. Спасибо.

Ниже приведен код, который я использовал:

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();
  });

person bgth    schedule 11.11.2017    source источник


Ответы (1)


в настоящее время ваша конфигурация устанавливает только fallbackLng, который «просто» используется, если найден обнаруженный язык из детектора (=> en-ZA из localStorage).

Чтобы вручную отменить обнаружение, установите lng при инициализации или используйте i18next.changeLanguage.

person jamuhl    schedule 11.11.2017
comment
Привет @jamuhl, я попытался поместить lng: en в js на странице входа. Но проблема в том, что если пользователь выберет китайский язык на странице входа и просматривает страницы после входа в систему. А потом он выходит и заходит на страницу авторизации, вместо китайского язык меняется на английский. Есть ли решение для этого? Типа, пока сессия не активна, держать ее на выбранном пользователем языке? - person bgth; 11.11.2017
comment
так что в принципе вы не хотите обнаружения...? затем не устанавливайте lng при инициализации и настройте детектор lng так, чтобы он не обнаруживал, а только кэшировал: github.com/i18next/ - person jamuhl; 11.11.2017