【发布时间】:2021-06-13 02:54:12
【问题描述】:
我在语言之间切换的想法是单击标志(单击时,标志会随着语言发生变化)。到目前为止我做得很好,flag和url路径也在切换,但我无法在翻译之间进行切换。
为了处理 url,我使用构建 Next 选项 i18n,而对于实际语言翻译,我使用 react-i18next。
我的 i18next 文件非常简单:
i18n.use(LanguageDetector)
.use(initReactI18next)
.init({
resources: {
en: {
translation: translations_EN_homePage,
},
da: {
translation: translations_DA_homePage,
},},});
改变语言钩子和handleOnclick函数:
const [language, setLanguage] = useState('en');
const handleOnclick = (e) => {
e.preventDefault();
setLanguage(e.target.value);
i18n.changeLanguage(e.target.value);
};
最后解决我的按钮 = 标志
<button
value={language === 'en' ? 'da' : 'en'}
onClick={() => {
const locale = router.locale === 'en' ? 'da' : 'en';
setCookie(locale);
{handleOnclick}
router.push(
`/${locale}`,
`/${locale}`,
{locale: false,}}} >
{router.locale === 'en' ? (
<img
src={menuItems.data.body[5].items[0].image.url}/>
) : (
<img src={menuItems.data.body[4].items[0].image.url} />
)}
</button>
为什么handleOnclick 功能不起作用?当我只使用 2 个按钮进行测试时,它在翻译时完全正常,那么它在哪里冲突?
我不想使用的 handleOnclick 函数示例:
<button value="da" onClick={handleOnclick}>
Danish
</button>
<button value="en" onClick={handleOnclick}>
English
</button>
【问题讨论】:
标签: reactjs typescript internationalization i18next react-i18next