Skip to content Skip to sidebar Skip to footer

How To Set The Default Language In I18next - React Native?

I'm trying to set a default language when the user opening the app for the first time, I'm using i18next & react-i18next Default language I want to be ar, Is there a way to do

Solution 1:

in your App.js, check current user language to determine language:

import i18next from'i18next';
import { initReactI18next } from'react-i18next';

const languageDetector = {
  type: 'languageDetector',
  async: true,
  detect: cb => {
    const deviceLanguage =
        Platform.OS === 'ios'
          ? NativeModules.SettingsManager.settings.AppleLocale ||
            NativeModules.SettingsManager.settings.AppleLanguages[0] // iOS 13
          : NativeModules.I18nManager.localeIdentifier;
      cb(deviceLanguage.indexOf('vi')>=0?'vi':'en')
  },
  init: () => {},
  cacheUserLanguage: () => {},
};

i18next
  .use(languageDetector)
  .use(initReactI18next)
  .init({
    fallbackLng: 'en',
    debug: false,
    resources: languages,
  });
functionApp(){ return ....}

Solution 2:

Try this:

import { reactI18nextModule } from'react-i18next';
const ar = require('./Lang/ar.json');
const en = require('./Lang/en.json');

i18n.use(reactI18nextModule).init({
  resources: {
    ar,
    en,
  },
  fallbackLng: 'ar',
  keySeparator: false,
  interpolation: {
    escapeValue: false,
  },
});

Hint

It's better to have the fallback-lang aka default-language to be the user-device-lang instead of hardcoding it to ar ...

Post a Comment for "How To Set The Default Language In I18next - React Native?"