今天我们将深入探讨一个在 React 中实现国际化的强大工具——
什么是React-i18next?
安装React-i18next
首先,让我们从安装开始。使用 npm 或者 yarn 进行安装:
npm install react-i18next i18next //or yarn add react-i18next i18next
基本用法
1. 初始化i18n
在你的应用中初始化
// i18n.js
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
i18n
.use(initReactI18next) // passes i18n down to react-i18next
.init({
resources: {
en: {
translation: {
greeting: 'Hello, World!',
},
},
fr: {
translation: {
greeting: 'Bonjour le monde!',
},
},
},
lng: 'en',
fallbackLng: 'en',
interpolation: {
escapeValue: false, // not needed for React as it escapes by default
},
});
export default i18n;
2. 使用 useTranslation 钩子
在你的 React 组件中使用
// GreetingComponent.js
import React from 'react';
import { useTranslation } from 'react-i18next';
function GreetingComponent() {
const { t } = useTranslation();
return <div>{t('greeting')}</div>;
}
export default GreetingComponent;
3. 渲染多语言内容
现在,你可以在应用中轻松渲染多语言内容。
// App.js
import React from 'react';
import GreetingComponent from './GreetingComponent';
import './i18n'; // 引入初始化的i18n配置
function App() {
return (
<div>
<GreetingComponent />
</div>
);
}
export default App;
动态切换语言
// LanguageSwitcher.js
import React from 'react';
import { useTranslation } from 'react-i18next';
function LanguageSwitcher() {
const { i18n } = useTranslation();
const changeLanguage = (lng) => {
i18n.changeLanguage(lng);
};
return (
<div>
<button onClick={() => changeLanguage('en')}>English</button>
<button onClick={() => changeLanguage('fr')}>Fran?ais</button>
</div>
);
}
export default LanguageSwitcher;