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

Vue中如何匹配API对象键与翻译文件键并遍历展示?

问题分析与解决

问题场景

从API获取的数据对象:

var data= { "Date": "01-01-2024", "Code": "5000", "region": "NA" } 

vue-i18n的en.json翻译文件:

{"info": {
    "Code": "CODE",
    "Date": "DATE",
    "region": "REGION"
  }}

用于遍历展示的Vue代码:

<v-list  v-for="(value, key) in data" :key="key">
  <v-list-item>
       <v-list-item-content>
            <v-row>
                <v-col>
                   {{ $t(`info.$key`) }}
                 </v-col>
                 <v-col>
                   {{ value }}
                  </v-col>
             </v-row>
         </v-list-item-content>
    </v-list-item>
</v-list>

期望输出

DATE    01-01-2024
CODE    5000
REGION  NA

实际输出

info.$key  01-01-2024
info.$key 5000
info.$key NA

同时控制台出现警告:Not found 'info.key' key in 'en' locale messages.

问题原因

你在模板字符串中错误地将$key作为字面量使用,而非引用循环中的key变量。$t(info.$key)会被解析为查找翻译键info.$key,但你的en.json中不存在这个键,因此触发警告,并且直接显示原始的键路径字符串。

修正方案

需要在模板字符串中通过变量插值插入循环的key,将info.$key改为info.${key},也可以使用字符串拼接的方式:

修正后的代码

<v-list  v-for="(value, key) in data" :key="key">
  <v-list-item>
       <v-list-item-content>
            <v-row>
                <v-col>
                   <!-- 模板字符串插值变量key -->
                   {{ $t(`info.${key}`) }}
                   <!-- 或字符串拼接写法:{{ $t('info.' + key) }} -->
                 </v-col>
                 <v-col>
                   {{ value }}
                  </v-col>
             </v-row>
         </v-list-item-content>
    </v-list-item>
</v-list>

验证结果

修改后,$t会根据循环的key(如Date、Code、region)正确匹配对应的翻译值,输出符合预期,控制台的警告也会消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:33:19