react+hook+ts项目总结-React国际化react-i18next项目应用

当前文件引入import { useTranslation } from "react-i18next";

const { t } = useTranslation();

<Form.Item className="login-btn">
<Button
onClick={() => {
form.resetFields();
}}
icon={<CloseCircleOutlined />}
>
{t("login.reset")}
</Button>
<Button type="primary" htmlType="submit"
loading={loading} icon={<UserOutlined />}>
{t("login.confirm")}
</Button>
</Form.Item>

 app.tsx

import { useState, useEffect } from "react";
import { getBrowserLang } from "@/utils/util";
import { ConfigProvider } from "antd";
import { connect } from "react-redux";
import { setLanguage } from "@/redux/modules/global/action";
import { HashRouter } from "react-router-dom";
import AuthRouter from "@/routers/utils/authRouter";
import Router from "@/routers/index";
import useTheme from "@/hooks/useTheme";
import zhCN from "antd/lib/locale/zh_CN";
import enUS from "antd/lib/locale/en_US";
import i18n from "i18next";
import "moment/dist/locale/zh-cn";
const App = (props: any) => {
const { language, assemblySize, themeConfig, setLanguage } = props;
const [i18nLocale, setI18nLocale] = useState(zhCN);
// 全局使用主题
useTheme(themeConfig);
// 设置 antd 语言国际化
const setAntdLanguage = () => {
// 如果 redux 中有默认语言就设置成 redux 的默认语言,
没有默认语言就设置成浏览器默认语言
if (language && language == "zh") return setI18nLocale(zhCN);
if (language && language == "en") return setI18nLocale(enUS);
if (getBrowserLang() == "zh") return setI18nLocale(zhCN);
if (getBrowserLang() == "en") return setI18nLocale(enUS);
};
useEffect(() => {
// 全局使用国际化
i18n.changeLanguage(language || getBrowserLang());
setLanguage(language || getBrowserLang());
setAntdLanguage();
}, [language]);
return (
<HashRouter>
<ConfigProvider locale={i18nLocale} componentSize={assemblySize}>
<AuthRouter>
<Router />
</AuthRouter>
</ConfigProvider>
</HashRouter>
);
};

posted @   前端导师歌谣  阅读(49)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示