React 实现多语言(使用i18n)

1.新建i18n.js

import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import en_translate from './locales/en.json';
import zh_translation from './locales/zh.json';

i18n.use(initReactI18next).init({
    // fallbackLng: 'zh',
    // lng: 'zh',
    fallbackLng: localStorage.getItem('lang') ? localStorage.getItem('lang') : 'zh_CN',
    resources: {
        en: {
            translation: en_translate
        },
        zh_CN: {
            translation: zh_translation
        }
    },
    debug: false,
    interpolation: {
        escapeValue: false // not needed for react as it escapes by default
    }
});
export default i18n;

 1.index.js 全局使用

import './i18n';
import { useTranslation } from 'react-i18next';





const { t } = useTranslation();
global.t = t;

2.页面

import { Select } from 'antd';
import { useTranslation } from 'react-i18next';
import './index.less';

function topMenu(_props) {
    
    const { t, i18n } = useTranslation();
   

    const changeLanguages = e => {
        i18n.changeLanguage(e);
        localStorage.setItem('lang', e);
       
    };

    return (
        <div className="language-change" id="language-change">
            <div>
                <Select
                    className="language"
                    defaultValue={
                        localStorage.getItem('lang') ? localStorage.getItem('lang') : 'zh_CN'
                    }
                    onChange={changeLanguages}
                    getPopupContainer={() => document.getElementById('language-change')}
                >
                    <Select.Option value="zh_CN">{t('chinese')}</Select.Option>
                    <Select.Option value="en">{t('english')}</Select.Option>
                    {/* <Select.Option value="ja">{t('ja')}</Select.Option>
                    <Select.Option value="ko">{t('ko')}</Select.Option>
                    <Select.Option value="ru">{t('ru')}</Select.Option> */}
                </Select>
            </div>
        </div>
    );
}
export default topMenu;

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值