1.0.0 • Published 3 years ago

react-native-i18next-asyncstorage v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

react-native-i18next-async-storage

This plugin caches your user's language in React Native's Async storage

Getting Started

Install using:

yarn add react-native-i18next-async-storage
npm i react-native-i18next-async-storage

Then pass it to your i18n instance

import {languageDetector} from 'react-native-i18next-async-storage'
import i18n from 'i18next';
import {initReactI18next} from 'react-i18next';

// create directories or files for every language you want to use in your app
import englishTranslation from './en/en.json'; //
import persianTranslation from './fa/fa.json';
/**
 * resources are used for local changes in App translation
 */
const resources = {
  en: {
    translation: englishTranslation, // imported from ./en/en.json
  },
  fa: {
    translation: persianTranslation, // imported from ./fa/fa.json
  },
};

i18n
  .use(languageDetector)
  .use(initReactI18next)
  .init({
    resources,
    fallbackLng: 'fa',
    debug: false,
    interpolation: {
      escapeValue: false, // react already safes from xss
    },
  });

Change language and Persist in AsyncStorage

// Change Language and Save the selected lang to AsyncStorage

import i18n from './i18n'; // imported from i18n
import {APP_LANGUAGE} from 'react-native-i18next-async-storage'

changeLanguage(language) {
    AsyncStorage.setItem(APP_LANGUAGE, language, () => {
        i18n.changeLanguage(language).then(() => {
            RNRestart.Restart();
        });
    });
}