您可以使用下面的代码获取浏览器的语言。请注意,此方法将返回用户在 Chrome 中的“首选语言”,而不是 Chrome 的显示语言。它仍然大部分是准确的。
var userLang = navigator.language || navigator.userLanguage;
您可以在应用程序的任何地方containers/LanguageProvider/actions.js
分派提供的changeLocale
动作创建者以动态更改语言。
至于将检测到的语言环境设置为默认值,您可以LanguageProvider
按如下方式修改容器:
...other imports
import {changeLocale} from './actions';
export class LanguageProvider extends React.PureComponent {
componentDidMount() {
this.props.changeLocale(navigator.language || navigator.userLanguage);
}
// eslint-disable-line react/prefer-stateless-function
render() {
return (
<IntlProvider
locale={this.props.locale}
key={this.props.locale}
messages={this.props.messages[this.props.locale]}
>
{React.Children.only(this.props.children)}
</IntlProvider>
);
}
}
LanguageProvider.propTypes = {
locale: PropTypes.string,
messages: PropTypes.object,
children: PropTypes.element.isRequired,
};
const mapStateToProps = createSelector(makeSelectLocale(), locale => ({
locale,
}));
function mapDispatchToProps(dispatch) {
return {
changeLocale: (lang) => dispatch(changeLocale(lang)),
};
}
... other code
请注意,这会将语言环境设置为en-US
美国语言的格式,因此您必须重新格式化字符串或更改翻译文件夹中语言文件的名称。希望这能回答你的问题。