我有一个带有React钩子的项目,我想更改语言。我使用i18n,但是当我使用useTranslation更改语言时,它的加载时间很长,而且我不知道如何解决它。请帮我解决这个问题,对不起我的英语不好。
文件路径:
const Routes = () => {
return (
<Suspense fallback={<BrandLoading />}>
<Switch>
<RouteWithLayout
component={DashboardView}
exact
layout={MainLayout}
path={`/${routeUrls.dashboard.path}`}
/>
</Switch>
</Suspense>
);
};
export default Routes;
文件App.js
import React from 'react';
import { Router } from 'react-router-dom';
import { createBrowserHistory } from 'history';
import { ThemeProvider } from '@material-ui/styles';
import theme from 'theme';
import Routes from 'routes';
import './i18n'
const browserHistory = createBrowserHistory();
const App = () => {
return (
<ThemeProvider theme={theme}>
<Router history={browserHistory}>
<Routes/>
</Router>
</ThemeProvider>
);
};
export default App;
文件i18n.js:
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import LanguageDetector from 'i18next-browser-languagedetector';
i18n.use(LanguageDetector)
.use(initReactI18next)
.init({
defaultNS: 'translation',
fallbackLng: 'vn',
debug: true,
interpolation: {
escapeValue: false,
},
load: 'languageOnly',
saveMissing: true,
});
export default i18n;
文件dashboard.js:
const Dashboard = ({ className = '' }) => {
const { t, i18n } = useTranslation();
return (
<div>
<Typography>{t.hello}</Typography>
</div>
);
};
export default Dashboard;
答案 0 :(得分:1)
它应该是t('hello')
而不是t.hello
,因为t
是一个函数,而不是对象
答案 1 :(得分:-1)
在这里查看文档是个好主意: https://react.i18next.com/latest/usetranslation-hook
还需要在i18n.js中解决翻译文件