react项目使用i18n进行国际化封装
react项目使用i18n进行国际化封装
-
安装
npm i i18next react-i18next --save
-
配置i18n:
- 在根目录新建一个目录
i18n
- 在
i18n
目录添加en.json
、zh.json
{ "footer": { "detail" : "版权所有 @ React 旅游网" } }
{ "footer": { "detail" : "All rights reserved @ ReactTravel.com" } }
- 在
i18n
目录新建文件index.ts
import i18n from 'i18next' import {initReactI18next} from 'react-i18next' import enTranslation from './en.json' import zhTranslation from './zh.json' const lng = 'zh' i18n.use(initReactI18next) .init({ resources: { en: {translation: enTranslation}, zh: {translation: zhTranslation} }, lng, fallbackLng: lng, interpolation: {escapeValue: false} }) export default i18n
- 在根目录新建一个目录
-
在根目录的
index.tsx
中引入i18n/index.ts
import React from 'react' import ReactDOM from 'react-dom' import 'antd/dist/antd.css' import './index.css' import App from './App' import 'i18n' ReactDOM.render( <React.StrictMode> <App /> </React.StrictMode>, document.getElementById('root') )
-
在组件中使用
i18n
- class类组件
import {Component} from "react"; import { withTranslation, WithTranslation } from 'react-i18next' class FooterComponent extends Component<WithTranslation, any> { render() { const { t } = this.props return (<div> {/!*版权所有 @ React 旅游网*!/} {t('footer.detail')} </div>); } } export const Footer = withTranslation()(FooterComponent)
- 函数式组件
import {FC} from "react"; import {useTranslation} from 'react-i18next' export const Footer: FC = () => { const {t} = useTranslation() return (<div> {/!*版权所有 @ React 旅游网*!/} {t('footer.detail')} </div>) }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了