Я использую i18next для локализации. Я могу изменить вручную, используя метод i18next changelanguage. Но мне нужно вручную изменить язык при изменении языка системы. Итак, есть ли какой-либо пакет для обнаружения изменения языка в реагировании на родной
@YogendraGirase Я уже реализовал локализацию. Теперь мне нужно событие детектора смены языка.
Используйте react-native-device-info
npm install --save react-native-device-info
getDeviceLocale ()
Получает языковой стандарт устройства.
const deviceLocale = DeviceInfo.getDeviceLocale();
// iOS: "en"
// Android: "en-US"
// Windows: ?
Обновлять:
Мы можем AppState
, если приложение находится на переднем плане или в фоновом режиме, и уведомить вас при изменении state
.
Если пользователь переместил приложение в фоновое состояние, язык был изменен, а затем снова открыть приложение.
Когда приложение переходит в состояние переднего плана, мы можем проверить язык с помощью DeviceInfo.getDeviceLocale()
.
Это хороший способ узнать, был ли изменен язык устройства.
Без перехода в фоновый режим пользователь не изменит язык, верно?
state = {
appState: AppState.currentState
}
componentDidMount() {
AppState.addEventListener('change', this._handleAppStateChange);
}
componentWillUnmount() {
AppState.removeEventListener('change', this._handleAppStateChange);
}
_handleAppStateChange = (nextAppState) => {
if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') {
console.info('App has come to the foreground!')
}
this.setState({appState: nextAppState});
}
Я использовал это. Но при смене языка не происходит никаких событий. DeviceInfo.getDeviceLocale () просто указывает язык системы, когда мы вызываем его вручную.
Вы можете проверить github.com/stefalda/ReactNativeLocalization