我正在使用i18n为我的项目提供翻译,当前它将基于浏览器语言进行翻译。我希望它不是基于mobx存储中的属性来更改语言。
我尝试研究react-mobx-i18n
,这似乎是一个糟糕的解决方案。因为我必须将每个组件都注释为可翻译的,并重组所有组件。
import i18n from 'i18next'
i18n
.init({
fallbackLng: 'en',
resources: {
},
ns: ['application'],
defaultNS: 'application',
react: {
wait: true,
},
})
export default i18n
这是我的App.js的呈现
import React, { Component } from 'react';
import { I18nextProvider } from 'react-i18next'
import i18n from './i18n'
import { Provider } from 'mobx-react'
export default class App extends Component {
render() {
return (
<Provider {...this.props.stores}> //mobx stores
<I18nextProvider i18n={i18n}>
//router want to change mobx-state and rerender everything with a new language
</I18nextProvider>
</Provider>
)
}
}
我想以某种方式使i18n订阅我的mobx状态并在检测到新语言时进行更新。如果这不可能,那么我想在商店中编写一个处理程序以根据一些输入来更改语言。