为了国际化,我使用了i18next。
我有使用i18next jQuery和ReactJS的经验。
现在我使用了i18next for ReactJS。
但我有个问题。
在jQuery中,可以将该值设置为默认值。
例如
<!-- Standard -->
<li data-i18n="nav.home"></li>
<!-- below code also available -->
<li data-i18n="nav.home">MY HOME</li>
上面的代码将"HOME“作为默认值应用。
但是React i18n不能设置默认值。
因此,当第一次初始化网页时,显示Json键分裂秒。
像这样
<!-- set a -->
const {t} = this.props;
<li>{ t(nav.home) }</li>
我不想看到json键,我只想直接看到加载的值("MY“)。
你可以把这个问题看作是我上传的Youtube视频
或者,我选择使用i18next事件侦听器的解决方案。
// In constructor
this.state = { i18nLoaded : false }
// In componentWillMount
i18next.on('initialized', () => {
this.setState({ i18nLoaded : true })
});
// In Render
const {t} = this.props;
return (
<div>
{
this.state.i18nLoaded ?
<li>{ t(nav.home) }</li>
: ""
}
</div>
)
我选择使用事件侦听器在i18next初始化后呈现组件的方法。但看起来不完整。
有人知道这个问题的解决办法吗?
发布于 2017-02-09 06:13:19
若要在react i18n中设置默认值,请使用选项。i18next API
const {t} = this.props;
<li>{ t(nav.home, {defaultValue : "MY HOME"}) }</li>
发布于 2017-05-24 20:21:20
解决方案将使用react i18next:https://github.com/i18next/react-i18next。
在那里,您可以在翻译临时设置等待标志。
https://stackoverflow.com/questions/42105600
复制相似问题