Обработка изменения языкового стандарта с помощью response-native-i18next / locize / locize backend - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь получить RN i18next и определить местонахождение, чтобы обеспечить переводы, основанные на текущей локали изact-native-i18n (уже есть локальные настройки переводов)

У меня были проблемы с библиотекой languageDetector, найденной здесь: https://github.com/DylanVann/i18next-react-native-language-detector

Это выдаст ошибку о том, что не найден параметр «заменить» объекта.

Итак, я решил настроить свой собственный locize / languageDetector, используя следующий код.

Однако .. Кажется, он не обновляется при изменении локали ..

Что я делаю не так?

в i18next.js:

import i18next from "i18next";
import LocizeBackend from "i18next-locize-backend";
import I18n from "../i18n/i18n";

const languageDetector = {
 init: Function.prototype,
 type: "languageDetector",
 async: true, // flags below detection to be async
 detect: lng => I18n.locale,
 cacheUserLanguage: () => {}
};

i18next
  .use(languageDetector)
  .use(LocizeBackend)
  .init({
    fallbackLng: I18n.locale,
    lng: I18n.locale,
    debug: true,
    whitelist: ["en", "fr", "sv", "dev"],
    keySeparator: false,
    ns: ["common"],
    defaultNS: "common",
    saveMissing: false, 

    interpolation: {
      escapeValue: false 
    },
    backend: {
      referenceLng: "en",
    }
  });

1 Ответ

0 голосов
/ 04 сентября 2018

Похоже, обнаружение языка, которое вы используете, I18n.locale не является асинхронным -> поэтому удалите async: true ... далее, если вы установите язык в i18next.init, он не будет использовать детектор ...

Вы также можете использовать этот детектор в качестве образца: https://github.com/dormakaba-digital/digital-reactnative-client/blob/master/src/modules/i18n/i18n.js#L4 -> б / у deviceInfo module

...