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

如何在Vue 3的模型与服务类中使用i18n国际化翻译

在Vue 3组合式API中实现模型/服务类的国际化翻译

核心实现思路

在Vue 3搭配VueI18n v9+的项目中,你可以直接创建并导出全局I18n实例,然后在模型、服务类这类非组件文件中导入使用,核心逻辑和Vue 2类似,但API有适配调整。

具体操作步骤

1. 创建并导出全局I18n实例

在项目的I18n配置文件(比如src/i18n/index.js)中完成初始化并导出实例:

import { createI18n } from 'vue-i18n'

// 多语言资源
const messages = {
  en: {
    common: {
      confirm: 'Confirm',
      cancel: 'Cancel'
    },
    user: {
      notFound: 'User not found'
    }
  },
  zh: {
    common: {
      confirm: '确认',
      cancel: '取消'
    },
    user: {
      notFound: '用户不存在'
    }
  }
}

// 初始化I18n实例
const i18n = createI18n({
  locale: 'zh', // 默认语言
  fallbackLocale: 'en', // 兜底语言
  messages
})

export default i18n

2. 在模型/服务类中调用翻译方法

直接导入全局I18n实例,通过i18n.global.t()方法完成翻译:

// 示例:src/models/UserModel.js
import i18n from '@/i18n'

export class UserModel {
  static getNotFoundTip() {
    // 调用翻译方法
    return i18n.global.t('user.notFound')
  }
}

// 示例:src/services/DialogService.js
import i18n from '@/i18n'

export function getDialogButtons() {
  return {
    confirmText: i18n.global.t('common.confirm'),
    cancelText: i18n.global.t('common.cancel')
  }
}

3. 额外说明

  • 必须使用VueI18n v9及以上版本,该版本专门适配Vue 3的组合式API
  • 若在组件内使用,除了上述全局实例方式,还可以用useI18n()组合式函数:
import { useI18n } from 'vue-i18n'

export default {
  setup() {
    const { t } = useI18n()
    return { t }
  }
}
  • 切换语言时,模型/服务类中通过i18n.global.t()获取的内容会自动同步更新,因为实例的locale变化会触发全局翻译状态更新

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:32:06