You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Vue-i18n翻译参数{n}应用样式(如设置为红色)

给Vue I18n翻译参数添加样式的两种方案

方案一:v-html结合带HTML标签的翻译文案

这种方式适合简单场景,注意仅当参数是可信内容(比如内部生成的数字)时使用,避免XSS风险:

  1. 修改语言包中的翻译文本,给参数位置加上带类名的HTML标签:
// 示例语言包(如zh-CN.js)
export default {
  'counter_label': '计数器: <span class="counter-num">{n}</span>'
}
  1. 在模板中用v-html替代双大括号渲染,避免HTML转义:
<p v-html="$t('counter_label', {n: counter})"></p>
  1. 定义对应的CSS样式:
.counter-num {
  color: red;
  font-weight: bold;
}

方案二:使用Vue I18n组件式语法(推荐,更安全)

这种方式不需要依赖HTML字符串,直接通过Vue模板插槽传递带样式的参数,完全规避XSS风险:

  1. 在组件中使用<i18n>标签定义翻译文本,同时通过插槽替换参数:
<template>
  <p>
    <i18n path="counter_label">
      <!-- 用插槽对应翻译文本中的{n}参数 -->
      <template #n>
        <span class="counter-num">{{ counter }}</span>
      </template>
    </i18n>
  </p>
</template>

<script setup>
import { ref } from 'vue'
const counter = ref(5) // 你的数字变量
</script>

<!-- 内联定义翻译(也可以用外部语言包) -->
<i18n>
{
  "en": {
    "counter_label": "Counter: {n}"
  },
  "zh-CN": {
    "counter_label": "计数器: {n}"
  }
}
</i18n>

<style scoped>
.counter-num {
  color: red;
}
</style>

两种方案都能实现给参数{n}添加样式,优先推荐方案二,尤其是参数可能涉及用户输入的场景,安全性更高。

内容的提问来源于stack exchange,提问作者Little Monkey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:20:01