@umijs/plugin-locale使用

2023-11-05

介绍

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: true ,locales 要改成 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 三个参数。

  • name 语言的 key。例如 zh-TW
  • message 语言的 id 列表。 例如:{ // id 列表 name: '妳好,{name}', }
  • 相应的 momentLocale 和 antd 配置

配置完以上代码之后,我们需要重新运行一下项目,页面可能会报一些红色波浪线错误,但不影响使用,原因是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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@umijs/plugin-locale使用 的相关文章

  • nodejs:process.stdout.write 的短别名

    我正在学习nodejs 而且我喜欢它 我试图弄清楚如何使用更短的别名console log我发现我可以使用var cout console log并使用cout string 从那时起 然后当我想使用process stdout write
  • 如何使用 HTML 元素阻止 THREE.js 光线投射?

    我希望页面上的 HTML 元素阻止 THREE js 光线投射 我该如何执行此操作 我遇到的问题是 当用户单击打开的 DIV 元素时 光线投射会检索场景中的对象 它会检索 DIV 后面的对象 我不想在 DIV 打开时禁用光线投射 我纯粹希望
  • 如何阻止地址自动填充谷歌地点

    所以我在我的表单上有一个谷歌地图自动完成功能 当它到达一个位置时 它会占据该位置并格式化它 以便所有正确的信息都进入表单上的不同输入 我遇到的问题是在 place changed 事件触发自动完成填充输入之前 我想阻止最初的人口 而是填充我
  • 在 Nodejs/javascript 中的 Excel 中创建动态数量的列或标题

    我用过exceljsNodejs中用于将json数据导出到excel的模块 它工作正常 但必须在添加行之前预定义标题 列的名称 即列是固定的 添加行后 我无法动态添加列 我尝试了许多通过 npm 提供的模块 但它们都具有相同的功能 那么 有
  • 如何清除画布元素中的多边形区域?

    我使用过clearRect函数 但没有看到多边形的等效函数 我天真地尝试过 ctx fillStyle transparent ctx beginPath ctx moveTo 0 0 ctx lineTo 100 50 ctx lineT
  • 如何在html中创建字体选择栏

    我想创建一个下拉菜单 在其中我们可以看到所有可用的字体 并且可以选择我们选择的任何字体 我还想创建一个字体颜色选择小部件 存在大量的字体样式 我想知道如何获取所有这些字体以及如何创建一个小部件 用户可以使用该小部件选择他选择的颜色 为了创建
  • Karma + JSPM + Typescript - 未找到“.ts.js”

    主要只是想让 Karma JSPM 在加载 ts 文件时发挥良好作用 但绝对没有运气 我看到一个讨论库 https github com Larchy karma jspm typescript coverage tree master一个
  • 监听外部事件。 Bash 到 NodeJS 的桥梁

    在 NodeJS 进程内部 我如何监听来自 bash 的事件 例如 NodeJS side obj on something function data console log data Bash side do something Hel
  • 代理递归函数

    想象一个简单的递归函数 我们试图包装它以检测输入和输出 A simple recursive function const count n gt n 1 count n 1 Wrap a function in a proxy to ins
  • 用于匹配重复子字符串的单个js正则表达式?

    假设我有一个字符串 例如 where is mummy where is daddy 我想用空字符串替换任何一组重复子字符串 所以在这种情况下where and is元素将被删除 结果字符串将是 mummy daddy 我想知道是否有任何单
  • 根据用户的时间设置问候语(早上好,下午好......)

    任何人都可以推断如何根据用户的时间设置实现基本的 晚上好 或 早上好 也许 PHP 会获取服务器时间 但我希望用基于时间的适当问候语来问候网站访问者 并考虑到他们一天中的时间 E G 早上好 晚上好 下午好 基于它 getHours 日期对
  • 我可以阻止history.popstate在初始页面加载时触发吗?

    我正在开发一个通过 AJAX 提供内容的网站 如果您单击菜单中的某个项目 内容 div 会更新为 get回应 没什么花哨的 我正在实施history pushState允许使用浏览器的后退 前进按钮进行导航 我有以下内容可以在历史导航上加载
  • 如何使用Javascript获取ASP.NEt Web Forms标签的值?

    我有以下标签控件
  • Jasmine 单元测试不等待承诺解析

    我有一个有角度的服务 它具有像这样的异步依赖项 function angular module app factory myService q asyncService function q asyncService var myData
  • Angular2,测试和解析数据:如何测试 ngOnInit?

    我正在通过Angular2 测试指南 https angular io docs ts latest guide testing html并希望编写一个测试ngOnInit 功能 那个来自编程指南的路由部分 https angular io
  • Meteor JS:存储特定模板实例状态的最佳方法是什么?

    我正在学习 Meteor JS 中的会话和反应式数据源 它们非常适合设置全局 UI 状态 但是 我不知道如何将它们的范围限制到模板的特定实例 这就是我想做的 我的页面上有多个可内容编辑的元素 每个下面都有一个 编辑 按钮 当用户单击 编辑
  • 如何使用 Ajax 在 Flask 中发布按钮值而不刷新页面?

    我有一个问题 当我单击 Flask 应用程序中的按钮时 我想避免重新加载 我知道有 Ajax 解决方案 但我想知道如何将我的按钮链接到 ajax 函数以发布按钮值并运行链接到其值的 python 函数 这是我的 html 按钮 div di
  • Javascript For 循环在 dom 元素上执行[重复]

    这个问题在这里已经有答案了 我有 javascript 代码来获取具有类名称的元素 并迭代从元素中删除该类 var elements document getElementsByClassName test console log Leng
  • 如何运行 Mike Bostock 的 D3 示例?

    我一直在尝试经营迈克博斯托克透视地球仪 http bl ocks org mbostock 6747043例如 但是如果您尝试在本地重现它 则对其 json 文件的引用是不正确的 问题来自于这行代码 d3 json mbostock raw
  • JavaScript 开关(真)

    你好 我正在尝试处理 ajax json 响应 这是我的代码 success function j switch true case j choice1 alert choice2 break case j choice2 alert ch

随机推荐

  • FreeRTOS学习笔记 6 - 互斥量

    目录 1 创建 2 获取 3 释放 4 测试 FreeRTOS不支持调度方式的设置 所以下面2个宏定义可以随意设置值 define RTOS IPC FLAG FIFO 0x00 define RTOS IPC FLAG PRIO 0x01
  • 灰度重采样的方法分为_均值采样

    from skimage import datafrom matplotlib import pyplot as pltimport numpy as npimage data coffee print image shape 显示图像原始
  • Python连接Oracle数据库

    cx Oracle cx Oracle模块是Python连接Oracle数据库的模块 在Python中 如果要连接Oracle 必须先安装cx Oracle模块 cx Oracle的下载地址 https pypi python org py
  • 【 华为OD机试 2023】 最快到达医院的方法(C++ Java JavaScript Python)

    华为od机试题库 华为OD机试2022 2023 C Java JS Py https blog csdn net banxia frontend category 12225173 html 华为OD机试2023最新题库 更新中 C Ja
  • printk与内核日志打印优先级设置

    1 控制台的日志优先级 define KERN EMERG lt 0 gt 致命级 紧急事件消息 系统崩溃之前提示 表示系统不可用 define KERN ALERT lt 1 gt 警戒级 报告消息 表示必须采取措施 define KER
  • MySQL 数据库引擎

    引擎分类 InnoDB MyIsam 引擎对比 单位 ms 测试项 MyIsam InnoDb 结论 insert 100w 28825 123487 百万级插入性能 MyIsql 在30秒内完成性能优于 InnoDb 性能相差接近5倍 u
  • docker安装MongoDB

    base rootyx rootyx Default string sudo docker pull mongo 4 4 4 4 Pulling from library mongo 99803d4b97f3 Pull complete 6
  • NODE => CORS跨域资源共享学习

    1 CORS跨域资源共享 cors是Express的一个第三方中间件 通过安装和配置cors中间件 可以很方便地解决跨域问题 运行npm install cors 安装中间件 使用const cors require cors 导入中间件
  • Qt信号槽使用注意事项

    使用信号槽connect时 1 信号函数和槽函数都不能加形参 2 信号函数和槽函数形参列表要保持一致
  • 使用VS2010编译QT

    首先不要使用中文目录 发布QT程序时 为了使没有QT依赖库的环境中也能运行QT程序 这就需要静态编译你的QT程序 要达到这个目的 首先必须静态编译你的QT库文件 1 下载Qt的安装包和VS2010的Qt插件 2 安装Qt Library 注
  • maven模板freemarker引擎代码

    依次在src resource template 新建模板引擎mapper xml ftl
  • wvp-pro Java项目启动流程

    1 下载eclipse 下载 点击左边Download x86 64 下载 2 下载后解压 进入文件夹执行 eclipse inst 一路 next就可以安装完成了 记得给自己选择一个合适的安装路径 3 安装结束后 打开IDE 选择菜单he
  • 距离大决战777天——目前的进度

    最近看上了两款开发板 一是大名鼎鼎的合宙C3 看上他是因为9 9的无敌性价比 二是某黄厂的st7789s3 看上他是因为始终的大小和性价比 有着一块170 320的屏 S3处理起来刚好得心应手 58元的价位也是蛮能打 秒杀其他大厂的板子的配
  • OpenMMLab实训16班--第一节

    OpenMMLab实训16班 第一节 主讲人 张子豪 主题 计算机视觉与Openmmlab入门 内容 一 计算视觉基础 计算机视觉任务主要分为分类 检测 分割三类任务 计算机视觉基础问题都是对图像进行模式识别和数据挖掘 二 openmmla
  • 魔方游戏(附游戏开源代码)

    这个魔方游戏的前期的实现参考了许多教程 但全部代码逻辑都是本人写的 借鉴了的都会给出原贴链接 只讲实现的思路 已完成 魔方的转动和魔方的动画效果 支持魔方的cfop全部公式 按按钮可转动魔方 按键盘上的alt键可用移动鼠标360无死角观察魔
  • 二维数组与字符数组部分实验

    学习目标 1 掌握与数组有关的算法 2 掌握二维数组的定义 存储结构 初始化及输入 输出的方法 3 掌握字符数组的定义 初始化及输入 输出的方法 4 掌握字符串和字符串函数的使用 学习内容 1 编写程序实现 输出二维数组 数值型 每一行的最
  • 轨迹路线相似度计算

    概述 在日常生活中很多场景应用到了轨迹相似度的计算 如 地图路线匹配 发现新冠病毒易感人群等 目前主要使 的相似性分析 法可以分为基于规整的方法 包括动态时间规整 DTW 最 公共 序列 LCSS 和基于真实序列的编辑距离 EDR 等 和基
  • 内推几何建模与图形渲染职位

    最近 可能也会是长期的 公司在大力招兵买马 急缺几何 图形方面的人才 初级 高级 专家或有致力于图形领域方面开发都欢迎 当然其他方面的也有 包括BIM相关的开发 可直接内推 具体职位列表如下 薪资open可谈 坐标 上海 深圳 武汉三地均可
  • android shape 的使用

    Android中常常使用shape来定义控件的一些显示属性它可以作为一般图片使用 今天看了一些shape的使用 对shape有了大体的了解 稍作总结 先看下面的代码 复制到剪贴板 XML HTML代码
  • @umijs/plugin-locale使用

    介绍 plugin locale是一个国际化的插件 用于解决i18n问题 约定式的多语言支持 可以进行多个国际语言的切换 启用方式 在umirc ts文件中配置locale 开启 使用 在src下创建一个locales文件夹 在文件夹下配置