# umi-plugin-locale i18n plugin for umi. --- Suggest to use together with umi-plugin-react, see our website [umi-plugin-react](https://umijs.org/plugin/umi-plugin-react.html) for more. --- ## 配置 **.umirc.js** ```js export default { plugins: [ [ 'umi-plugin-react', { locale: { default: 'zh-CN', //默认语言 zh-CN,如果 baseSeparator 设置为 _,则默认为 zh_CN baseNavigator: true, // 为true时,用navigator.language的值作为默认语言 antd: true, // 是否启用antd的 baseSeparator: '-', // 语言默认分割符 - }, }, ], ], }; ``` Other: You can setDefaultLocal in `src/app.js` ```js export const locale = { default: 'en-US', //默认语言 zh-CN,如果 baseSeparator 设置为 _,则默认为 zh_CN }; ``` ## 目录及约定 ``` . ├── dist/ ├── mock/ └── src/ ├── layouts/index.js ├── pages/ └── locales // 多语言文件存放目录,里面的文件会被umi自动读取 ├── zh-CN.js └── en-US.js ├── .umirc.js ├── .env └── package.json ``` > 如果`.umirc.js`里配置了`singular: true`,`locales`要改成`locale` ## 多语言文件约定 多语言文件的命名规范:`<分割符(通过 baseSeparator 配置)>.{ts,js,json}` 多语言文件的内容规范:键-值组成的字面量,如下: zh-CN.js ```javascript export default { WELCOME_TO_UMI_WORLD: '{name},欢迎光临umi的世界', }; ``` en-US.js ```javascript export default { WELCOME_TO_UMI_WORLD: "{name}, welcome to umi's world", }; ``` ### 支持多格式的语言文件 支持 ts、js 和 json 格式的语言文件。 zh-CN.js, zh-CN.ts ```javascript export default { WELCOME_TO_UMI_WORLD: '{name},欢迎光临umi的世界', }; ``` zh-CN.json ```javascript { "WELCOME_TO_UMI_WORLD": "{name},欢迎光临umi的世界" } ``` ## 扩展 API 使用本插件后,你可以从 umi-plugin-locale 引入国际化相关的 API,获得关于多语言功能在编程上的便利。 ```javascript import { formatMessage, setLocale, getLocale, FormattedMessage } from 'umi-plugin-locale'; // 获取指定文字的多语言版本 const formatedText = formatMessage( { id: 'WELCOME_TO_UMI_WORLD', }, { name: '小伙子', }, ); console.log(formatedText === '小伙子,欢迎光临umi的世界'); // 设置为 en-US setLocale('en-US'); // 获取当前语言 console.log(getLocale() === 'en-US'); // 渲染一个文字标签 function Example() { return ; } ```