我有麻烦,而添加i18next到我的应用程序,t('test')
是不翻译
这是我的i18n.ts
文件
import i18n from "i18next";
import { initReactI18next } from "react-i18next";
import enJSON from './locales/en.json';
import cnJSON from './locales/cn.json';
i18n.use(initReactI18next).init({
resources: {
en: { ...enJSON },
cn: { ...cnJSON },
},
lng: "en",
});
这是我的App.tsx
文件
import { useState } from 'react'
import { useTranslation } from 'react-i18next';
function App() {
const { t, i18n: {changeLanguage, language} } = useTranslation();
const [currentLanguage, setCurrentLanguage] = useState(language)
const handleChangeLanguage = () => {
const newLanguage = currentLanguage === "en" ? "cn" : "en";
setCurrentLanguage(newLanguage);
changeLanguage(newLanguage);
}
return (
<div>
<h1>
{t('test')}
</h1>
<h3>
Current Language: {currentLanguage}
</h3>
<button
type="button"
onClick={()=> handleChangeLanguage()}
>
Change Language
</button>
</div>
)
}
export default App
2条答案
按热度按时间2jcobegt1#
对不起,我的英语,你试图改变路线的路径?http://localhost:300/en/home或http://localhost:300/cn/home
rdlzhqv92#
看起来你已经正确地初始化了i18 next,但是你需要确保你的JSON文件中正确定义了你的翻译键。
例如,如果在JSON文件中有一个名为“test”的翻译键,它应该看起来像这样:
en.json
cn.json
如果在JSON文件中正确定义了翻译密钥,则可以尝试以下步骤来解决问题:
检查浏览器开发工具中的网络选项卡,确保正确加载JSON文件。确保加载了JSON文件,并且其内容正确。
检查您的控制台是否存在与i18 next或react-i18 next相关的任何错误。如果有任何错误,请首先尝试解决它们。
确保您的转换密钥被正确地传递给t函数。您可以尝试记录t('test')的值,以查看它是否与预期的翻译匹配。
如果上述解决方案都不起作用,您可以尝试使用useEffect钩子来强制在更改语言时重新呈现组件。下面是一个例子:
每当语言发生更改时,此代码将重新呈现组件,这将强制更新翻译。