使用I18n.t帮助程序更新react-redux-I18n语言环境

时间:2017-03-06 21:24:06

标签: reactjs translation react-redux

我正在使用react-redux-i18n而我在更新I18n.t helper

时遇到问题

我有一个调用动作的按钮,该动作调度react-redux-i18n

的setLocale
<FlatButton
        label={languageToDisplay}
        labelStyle={styles.buttonLabel}
        onClick={() => this.props.actions.setLanguage(languageToDisplay)}
        style={styles.button}
      />

调用此函数:

export default function setLanguage(language: string) {
  return async (dispatch) => {
    dispatch(setLocale(language));
  };
}

虽然确实更改了I18n._locale,但它不会重新渲染和翻译文本。任何人都知道如何操作它?

我正在使用react-redux-i18n,因为我喜欢react-native翻译方式:I18n.t(...)

它很干净,并且不会仅对<FormationMessage /><Translate />

等翻译强制使用奇怪的组件

如果有人知道如何修复它或者使用与react-redux-i18n相同的翻译风格的其他库,请告诉我们:)

1 个答案:

答案 0 :(得分:1)

找到解决此问题的方法:

import React, { Component } from 'react';
import { connect } from 'react-redux';

@connect(state => ({
  i18n: state.i18n, // <= this makes your component rerender on language change
}), dispatch => ({ dispatch }))
class SomeClass extends Component {
    ......
}

告诉我你是否有更好的方法。