在本机反应中检测系统语言变化

Detect system language change in react native

我正在使用 i18next 进行本地化。我可以使用 i18next changelanguage 方法手动更改。但是我需要在更改系统语言的同时手动更改语言。那么是否有任何包来检测反应本机的语言变化

使用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.log('App has come to the foreground!')
    }
    this.setState({appState: nextAppState});
  }