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

如何在切换语言时更新Nuxt i18n中的数组对象值

Nuxt i18n切换语言时更新验证数组提示信息的解决方案

你当前的问题核心是:提交时把已翻译完成的静态文本存入了validations数组,切换语言时这些文本不会自动更新。要解决这个问题,关键是存储翻译的key而非最终渲染的文本,再通过动态方式解析翻译内容。

下面提供两种可行方案:

方案1:模板中直接动态翻译

修改组件逻辑,提交时仅存入翻译key,在模板里直接调用$t方法解析:

<!-- Template -->
<div v-for="(validation, index) in validations" :key="index">
    <v-alert type="danger">{{ $t(validation.messageKey) }}</v-alert>
</div>

<!-- Component -->
export default {
    data() {
        return {
            validations: []
        }
    },
    methods: {
        submit() {
            // 存入翻译key,而非已翻译好的文本
            this.validations.push({ 
                part: '表单字段', 
                messageKey: 'error.required' 
            });
            this.validations.push({ 
                part: '必填项', 
                messageKey: 'error.mandatory' 
            });
        }
    }
}

切换语言时,模板会自动重新执行$t方法,渲染对应语言的提示信息。

方案2:用计算属性处理数组(适合需额外逻辑的场景)

如果需要对验证数组做过滤、排序等额外处理,可以用计算属性包裹,动态生成带翻译信息的数组:

<!-- Template -->
<div v-for="(validation, index) in translatedValidations" :key="index">
    <v-alert type="danger">{{ validation.message }}</v-alert>
</div>

<!-- Component -->
export default {
    data() {
        return {
            validations: [] // 存储带翻译key的原始数据
        }
    },
    computed: {
        translatedValidations() {
            // 遍历原始数组,动态翻译每个项的messageKey
            return this.validations.map(item => ({
                ...item,
                message: this.$t(item.messageKey)
            }));
        }
    },
    methods: {
        submit() {
            this.validations.push({ 
                part: '表单字段', 
                messageKey: 'error.required' 
            });
            this.validations.push({ 
                part: '必填项', 
                messageKey: 'error.mandatory' 
            });
        }
    }
}

注意事项

  • 修正了你代码中push的语法错误:push的参数应为完整对象,而非零散的键值对。
  • 两种方案的核心逻辑一致:避免存储静态翻译文本,始终保留翻译key,让Nuxt i18n在渲染时动态解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:45:49