Если вы используете i18next
, вы можете i18next.changeLanguage
использовать, чтобы изменить свой язык
export const changeLaguage = (languageKey) => {
i18next.changeLanguage(lng, callback) // -> returns a Promise
}
import { changeLanguage } from 'services/translation';
<Button onPress={() => {changeLanguage(languageKey)}} />
Но я рекомендовал изменить на act-native * локализация вместо i18next
simply in implementation
и native performance
Как использовать react-native-localization
?
Установка
yarn add react-native-localization --save
#react-native >= 0.60
cd ios && pod install && cd ..
#react-native < 0.60
react-native link react-native-localization
Удалите переводы
import LocalizedStrings from 'react-native-localization';
import english from './en.js'
import french from './fr.js'
import korean from './kr.js'
const strings = new LocalizedStrings({
en: english,
fr: french,
kr: korean,
});
с en.js
, fr.js
, kr.js
- файлы, содержащие ваши переводы в формате key
value
.
например: содержимое fr.js
export default {
ok: 'D'accord',
no: 'non'
}
Вы также можете использовать json
тип файла для объявления.
использование
import strings from 'services/translation';
<Text style={styles.title}>
{strings.ok}
</Text>
Смена языков
написать функцию для изменения вашего язык приложения и используйте его в любом месте.
const strings = new LocalizedStrings({
en: english,
fr: french,
kr: korean,
});
export const changeLaguage = (languageKey) => {
strings.setLanguage(languageKey)
}
import { changeLaguage } from 'services/translation'
<Button onPress={() => {changeLanguage(languageKey)}} />
Примечания: Не объявляйте ключ одинаковым при использовании методов по умолчанию, таких как setLanguage
Подробнее о react-native-localization
здесь