【发布时间】:2021-10-25 13:25:33
【问题描述】:
更改语言时翻译不会更改。我正在使用 MobX 来存储语言的状态。更改语言会更改 I18nContext.Provider 中的语言环境,但页面上的文本不会更改。
我的钩子。
import {useI18n} from "@shopify/react-i18n";
import enTrans from "../../translate/en.json";
import frTrans from "../../translate/fr.json";
export const UseI18nHook = () => {
console.log('hook1');
return useI18n({
id: 'App',
fallback: 'fr',
translations(locale) {
return locale === "en" ? enTrans : frTrans;
},
})};
我的翻译提供商
import React from "react";
import {inject, observer} from "mobx-react";
import {I18nContext, I18nManager} from '@shopify/react-i18n';
const TranslateWrapper = inject(stores => ({
activeEnglish: stores.LocalizeStore.activeEnglish
}))(observer(({activeEnglish, children}) => {
return(
<I18nContext.Provider value={new I18nManager({
locale: activeEnglish ? 'en' : 'fr',
onError(error) {
console.log(error);
},
})}>
{children}
</I18nContext.Provider>
)
}));
export default TranslateWrapper;
在页面中我使用const [i18n] = UseI18nHook(); 和i18n.translate('App.InstallPage.installTitle')
【问题讨论】:
标签: reactjs next.js internationalization shopify