向Mobx订阅i18n,根据可观察的反应进行翻译

时间:2019-08-14 13:11:46

标签: reactjs internationalization mobx

我正在使用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状态并在检测到新语言时进行更新。如果这不可能,那么我想在商店中编写一个处理程序以根据一些输入来更改语言。

0 个答案:

没有答案