@enum-plus/plugin-vue-i18n

中文文档
1.0.1发布于 2026/06/24MITTypeScriptES Module零依赖近 30 天下载 7257

A plugin for enum-plus that supports internationalization of enums through vue-i18n

原始使用文档
文档目录4 节
  1. 简介
  2. 安装
  3. 插件选项
  4. 基本用法

English | 中文 | CHANGELOG

@enum-plus/plugin-vue-i18n

npm version license

集成 vue-i18n 并实现枚举标签的国际化

简介

@enum-plus/plugin-vue-i18n 是 enum-plus 的一个插件,自动集成 vue-i18n 实现枚举标签的国际化。它允许你在枚举定义中使用 vue-i18n 的本地化键,并动态显示为当前语言的翻译文本。当语言切换时,枚举标签也会相应自动更新。

注意:该插件要求 Vue 3 和 vue-i18n 9 及以上版本,不支持 vue-i18n 的 legacy 模式。

安装

npm install @enum-plus/plugin-vue-i18n

在应用程序的入口文件中,导入 @enum-plus/plugin-vue-i18n 插件并安装:

import i18nPlugin from '@enum-plus/plugin-vue-i18n';
import { Enum } from 'enum-plus';

const i18n = createI18n({
  // ...
});

Enum.install(i18nPlugin, {
  localize: {
    instance: i18n,
  },
});

如果你永远不会在组件上下文之外调用枚举的国际化功能,甚至可以进一步简化为:

import i18nPlugin from '@enum-plus/plugin-vue-i18n';
import { Enum } from 'enum-plus';

Enum.install(i18nPlugin);

插件选项

安装插件时,可以传入一个配置对象,用于设置插件的全局选项:

Enum.install(i18nPlugin, {
  localize: {
    // 传递全局默认的 i18n 实例。如果你想在非组件环境下使用枚举的国际化功能,必须传入该实例
    instance: i18n,
    // 传递给 i18next.t 方法的默认选项
    tOptions: {
      // 设置返回值的默认值
      default: '-',
      // 其它 i18next.t 方法支持的选项
      // 请参考 https://vue-i18n.intlify.dev/api/general.html#translateoptions
    },
  },
});

tOptions 还支持函数形式,以便动态生成选项,

// 使用函数形式动态生成 tOptions
Enum.install(i18nPlugin, {
  localize: {
    tOptions: (key) => {
      if (key === 'week.sunday') {
        return { ns: 'my-namespace' };
      }
      return { ns: 'translation' }; // 默认命名空间
    },
  },
});

你甚至可以在 tOptions 中直接返回一个字符串,作为最终的翻译文本,以完全控制 localize 方法的行为。

Enum.install(i18nPlugin, {
  localize: {
    tOptions: (key) => {
      if (key === 'week.sunday') {
        return '周日'; // 直接返回翻译文本
      }
      return instance.t(key); // 其它情况返回默认翻译
    },
  },
});

基本用法

可以通过在枚举定义中使用本地化键,来实现枚举标签的国际化。

import { Enum } from 'enum-plus';

const WeekEnum = Enum(
  {
    Monday: { value: 1, label: 'week.monday' },
    Tuesday: { value: 2, label: 'week.tuesday' },
  },
  {
    name: 'weekDays.name', // 枚举类型名称,可选
  },
);

WeekEnum.label(1); // Monday
WeekEnum.name; // Week

const i18n = useI18n();
i18n.locale.value = 'zh-CN';
WeekEnum.label(1); // 星期一
WeekEnum.name; // 周

版本与发布记录

@enum-plus/plugin-vue-i18n 共发布 2 个版本,首次发布于 2025/10/13;过去 12 个月发布了 1 个版本。

版本发布日期距今
1.0.1latest2026/06/244 个月前
1.0.02025/10/131.1 年前

关于 @enum-plus/plugin-vue-i18n 的常见问题

@enum-plus/plugin-vue-i18n 是什么?

A plugin for enum-plus that supports internationalization of enums through vue-i18n

如何安装 @enum-plus/plugin-vue-i18n?

在项目目录运行 npm install @enum-plus/plugin-vue-i18n,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:enum-plus(^3.0.0)、vue-i18n(>=9.2.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@enum-plus/plugin-vue-i18n 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@enum-plus/plugin-vue-i18n 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@enum-plus/plugin-vue-i18n 可以商用吗?

@enum-plus/plugin-vue-i18n 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@enum-plus/plugin-vue-i18n 的下载量有多少?

根据 npm 官方下载统计,@enum-plus/plugin-vue-i18n 在 2026/10/14 – 2026/11/12 这 30 天内被下载 7,257 次,日均约 242 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@enum-plus/plugin-vue-i18n 还在维护吗?

最新版本 1.0.1 发布于 2026/06/24(4 个月前);至今共发布 2 个版本,其中过去 12 个月发布了 1 个;首次发布于 2025/10/13。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。