# @enum-plus/plugin-vue-i18n 中文文档

规范地址：https://npmcn.com/package/%40enum-plus/plugin-vue-i18n/

版本：1\.0\.1
npm 元数据更新时间：2026-06-24T13:58:20.777Z
中文译文更新时间：2026-11-13T18:48:11.699Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40enum-plus/plugin-vue-i18n
原文对照：https://npmcn.com/package/%40enum-plus/plugin-vue-i18n/?lang=original
项目主页：https://github.com/shijistar/enum-plus/tree/master/packages/plugin-vue-i18n
源码仓库：https://github.com/shijistar/enum-plus

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：39.4 kB，22 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：enum-plus ^3\.0\.0，vue-i18n \>=9\.2\.0
- 首次发布：2025-10-13T15:57:08.743Z
- 最新版本发布：2026-06-24T13:58:20.649Z
- 近 30 天下载量：7257（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：2（近 12 个月 1 个）

## 中文简介

通过 vue- i18n 支持enums 国际化的 enum- plus 插件

## 安装

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

也可以使用：`pnpm add @enum-plus/plugin-vue-i18n`、`yarn add @enum-plus/plugin-vue-i18n`、`bun add @enum-plus/plugin-vue-i18n`

## README

[English](https://npmcn.com/package/%40enum-plus/plugin-vue-i18n/README.md) | [中文](https://npmcn.com/package/%40enum-plus/plugin-vue-i18n/README.zh-CN.md) | [CHANGELOG](https://npmcn.com/package/%40enum-plus/plugin-vue-i18n/CHANGELOG.md)

# @enum-plus/plugin-vue-i18n

[![npm version](https://img.shields.io/npm/v/@enum-plus/plugin-vue-i18n.svg)](https://www.npmjs.com/package/@enum-plus/plugin-vue-i18n) [![license](https://img.shields.io/npm/l/@enum-plus/plugin-vue-i18n.svg)](https://www.npmjs.com/package/@enum-plus/plugin-vue-i18n)

> 集成 [vue-i18n](https://vue-i18n.intlify.dev/) 并实现枚举标签的国际化

## 简介

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

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

## 安装

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

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

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

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

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

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

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

Enum.install(i18nPlugin);
```

## 插件选项

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

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

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

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

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

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

## 基本用法

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

```js
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 是什么？

通过 vue- i18n 支持enums 国际化的 enum- plus 插件

### 如何安装 @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 和提交记录判断。

