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

Vue3中如何使用i18n实现SELECT选项的国际化翻译

Vue3 + Naive UI Select 结合i18n实现选项翻译

前提准备

确保你的Vue3项目已经正确集成vue-i18n,并配置好对应的中英文语言包:

// src/i18n/index.js
import { createI18n } from 'vue-i18n'

const messages = {
  en: {
    class: 'Class',
    document: 'Document'
  },
  cn: {
    class: '类',
    document: '文档'
  }
}

export default createI18n({
  locale: 'cn', // 默认语言
  messages
})

组件改造方案

核心思路是不硬写label文本,通过i18n的翻译函数,根据option的value(对应语言包的key)动态生成label。具体实现如下:

<template>
  <n-select v-model:value="selectedValue" :options="translatedOptions" />
</template>

<script setup>
import { ref, computed } from 'vue'
import { useI18n } from 'vue-i18n'

const { t } = useI18n()
const selectedValue = ref('document')

// 定义基础选项配置(仅保留value和非文本属性)
const baseOptions = [
  { value: 'document' },
  { value: 'class' }
]

// 通过计算属性生成带翻译label的最终选项
const translatedOptions = computed(() => {
  return baseOptions.map(opt => ({
    ...opt,
    label: t(opt.value) // 用value匹配语言包key,自动获取对应翻译
  }))
})
</script>

关键说明

  • 切换语言时,computed会自动触发重新计算,Select的选项文本会实时更新为对应语言。
  • 语言包的key必须和option的value完全一致,否则翻译函数无法匹配到正确文本。
  • 如果需要给选项添加图标、禁用状态等额外属性,直接在baseOptions里补充即可,不影响翻译逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:20:30