import i18n from 'i18n-js'; import { I18nManager } from 'react-native'; import * as RNLocalize from 'react-native-localize'; export * from './isRTL'; export const LANGUAGES = [ { label: 'English', value: 'en', file: require('./locales/en').default }, { label: '简体中文', value: 'zh-CN', file: require('./locales/zh-CN').default }, { label: '繁體中文', value: 'zh-TW', file: require('./locales/zh-TW').default }, { label: 'Deutsch', value: 'de', file: require('./locales/de').default }, { label: 'Español (ES)', value: 'es-ES', file: require('./locales/es-ES').default }, { label: 'Français', value: 'fr', file: require('./locales/fr').default }, { label: 'Português (BR)', value: 'pt-BR', file: require('./locales/pt-BR').default }, { label: 'Português (PT)', value: 'pt-PT', file: require('./locales/pt-PT').default }, { label: 'Russian', value: 'ru', file: require('./locales/ru').default }, { label: 'Nederlands', value: 'nl', file: require('./locales/nl').default }, { label: 'Italiano', value: 'it', file: require('./locales/it').default }, { label: '日本語', value: 'ja', file: require('./locales/ja').default }, { label: 'العربية', value: 'ar', file: require('./locales/ar').default } ]; const translations = LANGUAGES.reduce((ret, item) => { ret[item.value] = item.file; return ret; }, {}); i18n.translations = translations; i18n.fallbacks = true; const defaultLanguage = { languageTag: 'en', isRTL: false }; const availableLanguages = Object.keys(i18n.translations); const { languageTag, isRTL } = RNLocalize.findBestAvailableLanguage(availableLanguages) || defaultLanguage; I18nManager.forceRTL(isRTL); I18nManager.swapLeftAndRightInRTL(isRTL); i18n.locale = languageTag; i18n.isRTL = I18nManager.isRTL; export default i18n;