如何持久保留语言更改react-i18next React-native

B. *_*mad 8 i18next react-native react-i18next

我使用react-i18nexti18next来本地化一个应用程序。我希望能够在设置中手动更改语言并保留该更改。问题是我不知道如何在i18n配置文件中使用 redux,因为 redux 是异步的,我也检查了文档中的一些内置存储选项,react-i18next但没有成功。

这是i18n配置文件:

'use strict';

import i18n from 'i18next';
import {reactI18nextModule, initReactI18next} from 'react-i18next';
import DeviceInfo from 'react-native-device-info';

import translationFR from '../translation/fr/translation.json';
import translationEN from '../translation/en/translation.json';
import translationAR from '../translation/ar/translation.json';

async function getAppLang() {
  const unsubscribe = store.subscribe(() => true);
  const appLang = await store.getState().appLang;
  await unsubscribe();
  return appLang;
}

let locale = DeviceInfo.getDeviceLocale().substring(0, 2);
if (locale != 'fr' && locale != 'ar') {
  locale = 'en';
}

// the translations
const resources = {
  en: translationEN,
  fr: translationFR,
  ar: translationAR,
};
i18n
  .use(reactI18nextModule) // passes i18n down to react-i18next
  .init({
    resources: resources,
    lng: locale,
    fallbackLng: ['en', 'fr', 'ar'],
    keySeparator: false, // we do not use keys in form messages.welcome
    interpolation: {
      escapeValue: false, // react already safes from xss
    },
  });


export default i18n;
Run Code Online (Sandbox Code Playgroud)

要更改语言,我使用此函数:

import i18n from 'config/i18n';
////
i18n.changeLanguage(langageName);
Run Code Online (Sandbox Code Playgroud)

谢谢 !