当前位置: 首页 > 知识库问答 >
问题:

javascript - vue i18n,如何实现文字动态替换?

高建本
2024-04-29

vue i18n,如何实现文字动态替换
背景:已有的项目,要把项目中指定的文字改成根据配置文件显示。

现在项目中是这样(JSON文件内的文案都是固定的):
zh.json

zh: {    hello: '你好,小蓝'  }

组件中:

<p>{{ $t('hello') }}</p>// 显示:你好,小蓝

网上看到的i18动态替换的方案:
zh.json

zh: {    hello: '你好,{name}'  }

组件中:

<p>{{ $t('hello', {name: '小红'}) }}</p>// 显示:你好,小红

但是现在我是已有的项目,项目中上百个地方使用$t,不可能一个个去添加{name: '小红'}
想问问大佬有什么好的解决方案。

共有2个答案

萧奇
2024-04-29

我的话就是适用笨办法,使用 ally-i18n 这个插件找到所有用到对应 key 的业务代码,然后去手动替换。

但是如果你的替换有规律的话,可以使用全局批量替换的方式。比如说都是插入的 nickName 这个变量之类的,就可以在VSC里面全局查找 $t('hello') 然后批量替换 $t('hello', {name: this.userInfo.nickName})

莫承运
2024-04-29
  1. 最笨的办法,全局替换 $t('hello') -> $t('hello', {name: '小红'})
  2. 写个脚本去处理,思路是把代码用 babel 转成 ast 根据特征去处理,适合处理情况比较复杂的场景
 类似资料:
  • 本文向大家介绍three.js如何实现3D动态文字效果,包括了three.js如何实现3D动态文字效果的使用技巧和注意事项,需要的朋友参考一下 前言 大家好,这里是 CSS 魔法使——alphardex。 之前在逛国外网站的时候,发现有些网站的文字是刻在3D图形上的,并且能在图形上运动,视觉效果相当不错,于是笔者就也想用three.js来尝试复现出这种效果 上图只是所有效果的其中之一,接下来让我们

  • 本文向大家介绍javascript实现状态栏中文字动态显示的方法,包括了javascript实现状态栏中文字动态显示的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript实现状态栏中文字动态显示的方法。分享给大家供大家参考,具体如下: 希望本文所述对大家JavaScript程序设计有所帮助。

  • 本文向大家介绍javascript实现文字无缝滚动,包括了javascript实现文字无缝滚动的使用技巧和注意事项,需要的朋友参考一下 效果如图: html:( 一个div 包裹两个ul ) js代码: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍如何在JavaScript中实现多态?,包括了如何在JavaScript中实现多态?的使用技巧和注意事项,需要的朋友参考一下 多态性 多态 是面向对象编程(OOP)的宗旨之一。它有助于设计对象,使其可以与特定提供的对象共享或覆盖任何行为。多态性 利用继承的 优势来实现这一点。 在以下示例中,子对象(例如“板球”和“网球”)已覆盖从父对象“游戏”调用的“选择”方法,并分别返回了新字符串

  • 问题内容: 我有以下代码: 它不起作用。我给了两个按钮,如果按下第一个,则应该加载。如果第二个被按下,则应加载。 我怎样才能做到这一点? 问题答案: 您不能以这种方式将HTML嵌入Javascript。基本上,您想要的是嵌入一个脚本元素,单击按钮时指向某个javascript文件。可以通过将事件与DOM结合来完成:

  • 问题内容: 我有这个字符串: 正在做: 似乎只删除了上面字符串中的第一个匹配项。 如何替换 所有 出现的内容? 问题答案: 注意:请勿在对性能有要求的代码中使用此代码。 作为简单文字字符串的正则表达式的替代方法,您可以使用 一般模式是 在某些情况下,它过去比使用和正则表达式要快,但是在现代浏览器中,情况似乎不再如此。 结论:如果您有性能至关重要的用例(例如,处理数百个字符串),请使用Regexp方