(一)需要

我的项目须要中英文切换。须要将我的项目做中文/英文切换。来满足英语语言的展现和拜访需要。

(二)剖析

1、我的项目至多须要反对中英文切换。

2、须要切换的内容分为:

  • 组件的中英文切换;
  • 菜单、题目、表单等其余内容的中英文切换。

(三)实现

1、Ant Design Pro 组件库

官网反对了配置,链接如下:
https://ant.design/components...

2、菜单、题目等其余内容

须要填写中英文两种文字的对照版本——两个文件别离对应文本不同的翻译内容,切换语言后,做不同的展现。

(四)代码

1、在src文件夹下新建了lang文件夹

有三个子文件

// cn.tsexport default {  box: '框',  shortkey: '快捷键',  batchEditAttr: '批量批改属性',  selCheck: '抽检',  save: '保留',  submit: '提交',};
// en.tsexport default {  box: 'box',  shortkey: 'shortkey',  batchEditAttr: 'batchEditAttr',  selCheck: 'selCheck',  save: 'save',  submit: 'submit',};
// index.tsimport cn from '@/lang/cn';import en from '@/lang/en';export default {  'zh-cn': cn,  en,};

2、src 文件新建了common文件夹

蕴含了解决多语言的公共办法

// antdLocale.tsimport enUS from 'antd/lib/locale/en_US';import zhCN from 'antd/lib/locale/zh_CN';import lang from '@/lang/index';import moment from 'moment';export const localeMap = {  en: enUS,  'zh-cn': zhCN,};export const utransLang = localStorage.utransLang  ? localStorage.utransLang  : 'zh-cn';export const setLocaleLang = (item) => {  localStorage.utransLang = item;};export const getLocalLang = () => {  const tmp = localStorage.utransLang ? localStorage.utransLang : 'zh-cn';  window.lang = lang[tmp];  // console.log(lang);  // debugger;};export const getAntdLang = () => {  getLocalLang();  moment.locale(utransLang);  return localeMap[utransLang];};

3、首页Demo

// index.tsximport styles from './index.less';import React, { useState } from 'react';import {  ConfigProvider,  Button,  DatePicker,  Space,  version,  Radio,  Col,  Row,} from 'antd';import type { RadioChangeEvent } from 'antd';import enUS from 'antd/es/locale/en_US';import zhCN from 'antd/es/locale/zh_CN';import {  getAntdLang,  getLocalLang,  utransLang,  setLocaleLang,} from '@/common/antdLocale';export default function IndexPage() {  if (!window.lang) {    getLocalLang();  }  console.log(window.lang);  // debugger  const [locale, setLocal] = useState(utransLang);  const changeLocale = (e: RadioChangeEvent) => {    console.log('changeLocale:', locale);    const localeValue = e.target.value;    // debugger    setLocaleLang(localeValue.locale);    getLocalLang();    // const href = window.location.href    // location.href = location.href    setLocal(localeValue);  };  const save = () => {    console.log('click');  };  return (    <div>      <h1 className={styles.title}>Page index</h1>      <div className="App">        <h1>antd version: {version}</h1>        <Row>          <Col span={24}>            <Radio.Group value={locale} onChange={changeLocale}>              <Radio.Button key="en" value={enUS}>                English              </Radio.Button>              <Radio.Button key="cn" value={zhCN}>                中文              </Radio.Button>            </Radio.Group>          </Col>        </Row>        <Row>          <Col span={24}>            <ConfigProvider locale={locale}>              <Space                key={                  locale                    ? locale.locale                    : 'en' /* Have to refresh for production environment */                }              >                <DatePicker />                <Button type="primary" onClick={() => save()}>                  {lang.submit}                </Button>              </Space>            </ConfigProvider>          </Col>        </Row>      </div>    </div>  );}