当前位置: 首页 > news >正文

i18n的替换处理

i18n的替换处理

背景描述

在开发的过程中,需要对项目文件的中文使用i18n进行多语言处理。在特定的页面,中文会有特定的处理,例如: 存在5台设备,其中 5 是一个变量,同时具有特定的样式,那么这个时候应该如何加i18n?

代码示例

<span>存在 <span style="color: red;">{{deviceNum}}</span> 台设备</span>

假如直接把”存在“存在json中,而后把”台设备“存在json中,随便一想最后得到的翻译会非常混乱,导致语义不符。

解决方案

首先,我们需要使用i18n的传参机制,使得这一整句话会一起翻译,这样就不会出现翻译语义不符的情况。而后,由于其中的变量存在特定的样式,因此我们需要以变量为切割点,将整个i18n语句拆分成前后两个内容,随后进行拼接即可。(需要注意的是:变量作为切割点,当i18n的变量不传参的情况下,其内容是不会被替换的,如果不理解请看后续的代码,而后进行切割即可)

// test.json
{
    "text": "存在{num}台设备"
}

// html(或.vue)
// 原先:<span>存在 <span style="color: red;">{{deviceNum}}</span> 台设备</span>
// 目前:
<span>$t('test.text').split(/{\s*num\s*}/)[0]</span> // '存在'
<span style="color: red;">{{deviceNum}}</span>
<span>$t('test.text').split(/{\s*num\s*}/)[1]</span> // '台设备'
// 假如翻译的是exist 5 devices,前面第一项就是"exist",第二项就是"devices",大家可以举一反三。

相关文章:

  • 【从零开始学习计算机科学】数据库系统(十一)云数据库、NoSQL 与 NewSQL
  • 智能化水利监管:无人机视频在违章行为识别中的应用
  • 基于java(springboot+mybatis)汽车信息管理系统设计和实现以及文档
  • 5秒学会excel中序号列自动增加,不是拖动,图解加说明,解决序号自增多了手拖太累
  • 手写一些常见算法
  • 网络安全演练有哪些形式
  • 前端面试:如何减少项目里面 if-else?
  • 开源操作系统复习3
  • 基于docker+python+paddleocr构建自己本地化ocr服务
  • Unity基于C#+UGUI解决方案,制作每日签到系统(本地存储签到数据)
  • c++进阶--AVL树
  • Golang | 每日一练 (5)
  • RISC-V汇编学习(四)—— RISCV QEMU平台搭建(基于芯来平台)
  • 天气app:简易高效,纯净无广,随时随地掌握天气动态!
  • 元类(metaclass)如何控制类的创建过程
  • SpringBoot为什么流行以及能解决什么问题?
  • 使用DMA进行ADC数据读取与USART数据发送与接收
  • 图的存储--十字链表与邻接多重表
  • 01-虚拟系统配置
  • MySQL时间溢出原理、影响与解决方案
  • 4月22城新房价格上涨:上海一二手房价环比均上涨,核心城市土地热带动市场热度提升
  • 夜驾遇东北虎隔窗对视?延吉林业局:村里有牛被咬死,保险公司会理赔
  • 以色列总理:以哈谈判内容包括“结束战争的框架”
  • 首次公布!我国空间站内发现微生物新物种
  • 多个“首次”!上市公司重大资产重组新规落地
  • 美国关税压力下,日本经济一年来首次萎缩