亲宝软件园·资讯

展开

JavaScript @umijs/plugin-locale插件使用教程

是张鱼小丸子鸭 人气:0

介绍

plugin-locale是一个国际化的插件,用于解决i18n问题,约定式的多语言支持,可以进行多个国际语言的切换

启用方式

在umirc.ts文件中配置locale:{}开启

使用

在src下创建一个locales文件夹,在文件夹下配置我们的语言文件

中文语言文件:zh-CN.js

export default {
    WELCOME_TO_UMI_WORLD: '{name},欢迎光临umi的世界',
  };

英文语言文件:en-US.js

export default {
    WELCOME_TO_UMI_WORLD: "{name}, welcome to umi's world",
  };

注意:如果项目配置了singular: truelocales要改成locale

App.ts配置

import zhTW from 'antd/es/locale/zh_TW';
import {addLocale} from 'umi'
// 动态增加新语言
addLocale(
  'zh-TW',
  {
    // id 列表
    name: '妳好,{name}',
  },
  {
    momentLocale: 'zh-tw',
    antd: zhTW,
  },
);

动态的增加语言,增加语言之后可以通过getAllLocales获取列表

addLocale 三个参数。

配置完以上代码之后,我们需要重新运行一下项目,页面可能会报一些红色波浪线错误,但不影响使用,原因是ts类型问题,如果不想报红色波浪线,可以在后面加上:any,这是最快的解决方案,但是一般不推荐使用

在组件中使用

getAllLocales

获取当前获得所有国际化文件的列表,默认会在locales文件夹下寻找类似en-US.(js|json|ts)文件

import { getAllLocales } from 'umi';
console.log(getAllLocales()); // [en-US,zh-CN,...]

getLocale

获取当前选择的语言

import { getLocale } from 'umi';
console.log(getLocale()); // en-US | zh-CN

useIntl

useIntl是最常用的 api,它可以获得formatMessage等 api 来进行具体的值绑定

import styles from './index.less';
import { getAllLocales } from 'umi';
import { useIntl} from 'umi';
export default function IndexPage() {
  const intl = useIntl();
  console.log(intl);
  return (
    <div className={styles.title}>
      <h1>Page index</h1>
      <div>{intl.messages.WELCOME_TO_UMI_WORLD}</div>
    </div>
  );
}

通过useIntl可以把我们的语言文件中内容渲染到页面

setLocale

设置切换语言,默认会刷新页面,可以通过设置第二个参数为false,来实现无刷新动态切换

import styles from './index.less';
import { getAllLocales } from 'umi';
import { useIntl, setLocale } from 'umi';
export default function IndexPage() {
  const intl = useIntl();
  console.log(intl);
  console.log(getAllLocales()); // [en-US,zh-CN,...]
  return (
    <div className={styles.title}>
      <h1>Page index</h1>
      <div>{intl.messages.WELCOME_TO_UMI_WORLD}</div>
      <button
        onClick={() => {
          setLocale('zh-CN', false);
        }}
      >
        切换中文
      </button>
      <button onClick={() => {
          setLocale('en-US', false);
        }}>切换英文</button>
    </div>
  );
}

给定了两个button按钮,可以做语言的切换

以上是plugin-locale的简单操作,详情请查看umi官网@umijs/plugin-locale

加载全部内容

相关教程
猜你喜欢
用户评论