使用react-native-i18next / locize / locate后端处理语言环境更改

时间:2018-09-03 11:49:37

标签: react-native i18next

我正在尝试获取RN i18next,并根据来自react-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 :(得分:1)

您使用的I18n.locale语言检测似乎不同步->因此,请删除async: true ...如果在i18next.init上设置了语言,它将不再使用检测器...

您也可以将此检测器用作示例:https://github.com/dormakaba-digital/digital-reactnative-client/blob/master/src/modules/i18n/i18n.js#L4->使用过的deviceInfo模块