使用Tailwind CSS和i18n的react实践

首先在 src 下设置 i18n.js 文件

TypeScript 复制代码
// src/i18n.js
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';

import en from './locales/en/public';
import zh from './locales/zh/public';

i18n
  .use(initReactI18next)  
  .init({
    resources: {
      en: { translation: en },//翻译文本
      zh: { translation: zh },
    },
    lng: 'zh',  
    fallbackLng: 'en', // When no lang
    interpolation: {
      escapeValue: false, // React avoid XSS
    },
  });

export default i18n;

然后再主文件引入文件

TypeScript 复制代码
import RouterGuard from './common/components/router-wrapper/RouterGuard'
import { Router } from './routes/router/RouterRender'
import routesConfig from './routes'
import { BrowserRouter } from 'react-router-dom'
import 'antd/dist/reset.css'
import './index.css'
import './i18n' // 引入
function App() {
  return (
    <BrowserRouter>
      <RouterGuard>
        <Router routes={routesConfig} />
      </RouterGuard>
    </BrowserRouter>
  )
}
export default App

最后直接使用就行

TypeScript 复制代码
import { message } from 'antd';
import './index.scss'
import { useTranslation } from 'react-i18next';
const DataCard = () => {
  const { t, i18n } = useTranslation();
  const toggleLanguage = () => {
    const newLang = i18n.language === 'zh' ? 'en' : 'zh';
    i18n.changeLanguage(newLang);
  };
   return (
    <div>
        <div style={{ padding: 20 }}>
          <h1 className="text-3xl font-bold mb-4">{t('currentName')}</h1>
          <button className="bg-blue-400 hover:bg-blue-200 text-white font-bold py-2 px-3 rounded transition duration-100" 
          onClick={toggleLanguage}>
            {t('check')}
          </button>
          <div className="buttons mt-6">
            <button className="bg-red-400 hover:bg-red-200 text-white font-bold py-2 px-4 rounded transition duration-100 mr-2" 
            onClick={() => message.success(t('successfullyDeleted'))}>
              {t('delete')}
            </button >
            <button className="bg-yellow-400 hover:bg-yellow-200 text-white font-bold py-2 px-4 rounded transition duration-100 mr-2" 
            onClick={() => message.success(t('successfulOperation'))}>
              {t('edit')}
            </button>
            <button className="bg-green-400 hover:bg-green-200 text-white font-bold py-2 px-4 rounded transition duration-100"  onClick={() => message.success(t('successfulOperation'))}>
              {t('create')}
            </button>
          </div>
        </div>
      </div>
    )
相关推荐
章豪Mrrey nical43 分钟前
前后端分离工作详解Detailed Explanation of Frontend-Backend Separation Work
后端·前端框架·状态模式
程序员爱钓鱼2 小时前
Node.js 编程实战:文件读写操作
前端·后端·node.js
PineappleCoder2 小时前
工程化必备!SVG 雪碧图的最佳实践:ID 引用 + 缓存友好,无需手动算坐标
前端·性能优化
JIngJaneIL3 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
敲敲了个代码3 小时前
隐式类型转换:哈基米 == 猫 ? true :false
开发语言·前端·javascript·学习·面试·web
澄江静如练_3 小时前
列表渲染(v-for)
前端·javascript·vue.js
JustHappy4 小时前
「chrome extensions🛠️」我写了一个超级简单的浏览器插件Vue开发模板
前端·javascript·github
Loo国昌4 小时前
Vue 3 前端工程化:架构、核心原理与生产实践
前端·vue.js·架构
sg_knight4 小时前
拥抱未来:ECMAScript Modules (ESM) 深度解析
开发语言·前端·javascript·vue·ecmascript·web·esm