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

Vue i18n中如何通过参数实现关联本地化消息的动态键?

当然可以实现这个需求!

你想要的是Vue I18n里的动态链接本地化消息功能,只是之前的语法细节没调整对。我来给你梳理正确的实现方式:

正确的本地化文件写法

把消息里的链接语法改成带括号的形式,这样Vue I18n才能正确识别并解析动态的keypath:

{
  "text": "I want to learn @:(langs.{lang})",
  "langs": {
    "es": "Spanish",
    "en": "English",
    "it": "Italian"
  }
}

调用方式

你原本的调用代码完全没问题:

$t('text', { lang: 'es' })

执行后就能得到你想要的结果:I want to learn Spanish

为什么之前会报错?

之前你用的@:langs.{lang}写法,Vue I18n会把langs.{lang}当成一个静态的固定keypath去查找,自然找不到对应的本地化条目,所以会触发编译或解析错误。而加上括号@:(langs.{lang})后,Vue I18n就明白这里的{lang}是一个参数,会先把传入的参数值替换进去,再去查找对应的消息内容。

补充说明

不管你用的是Vue 2配套的Vue I18n v8,还是Vue 3的Vue I18n v9+,这个语法都能正常工作。如果之后有更深层级的嵌套需求,比如@:(categories.{type}.label)这类结构,也可以用同样的逻辑实现动态关联。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 13:18:15