{"_id":"@enum-plus/plugin-vue-i18n","_rev":"2-c91525ae0f6854988d792043ed3307d6","name":"@enum-plus/plugin-vue-i18n","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@enum-plus/plugin-vue-i18n","version":"1.0.0","keywords":["enum","enumeration","enum-plus","plugin","typescript","i18n","vue","vue-i18n","localization","globalization","internationalization","front-end","node.js","ssr"],"author":{"url":"Leo","name":"李凤宝","email":"shijistar@gmail.com"},"license":"MIT","_id":"@enum-plus/plugin-vue-i18n@1.0.0","maintainers":[{"name":"shijistars","email":"shijistar@hotmail.com"}],"homepage":"https://github.com/shijistar/enum-plus/tree/master/packages/plugin-vue-i18n","bugs":{"url":"https://github.com/shijistar/enum-plus/issues"},"dist":{"shasum":"8bc11346d728ed0dca9cac614c3c587ac52aa4ca","tarball":"https://registry.npmjs.org/@enum-plus/plugin-vue-i18n/-/plugin-vue-i18n-1.0.0.tgz","fileCount":22,"integrity":"sha512-mhVnfn6UrYPInIM9mB5cm0VOzcFp3T1nzbgObbw5TW+g0JSohggNY60UI1axfDmUtrd4OfVhgnX7wB+/w90NKQ==","signatures":[{"sig":"MEUCIHfILV6rfJnYUrN1iQCbM91vNA7PibeOONXSMOvvehsyAiEA3IvGUWUzNHbCmdEXeEzCcbFv70rwoSYN2XFdQ1SIg90=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36323},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","module":"es/index.js","gitHead":"f3e7528da32250d68fe19cccf8779ce4ae729f4a","scripts":{"test":"run-s test:modern","build":"run-p build:modern build:legacy","test:legacy":"cross-env LEGACY=1 vitest","test:modern":"vitest","build:legacy":"cross-env LEGACY=1 father build","build:modern":"father build","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"shijistars","email":"shijistar@hotmail.com"},"repository":{"url":"git+https://github.com/shijistar/enum-plus.git","type":"git"},"_npmVersion":"10.9.2","description":"A plugin for enum-plus that supports internationalization of enums through vue-i18n","directories":{},"sideEffects":false,"_nodeVersion":"22.13.1","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.2","devDependencies":{"vue":"^3.5.22","vitest":"^4.0.0-beta.17","vue-i18n":"^9.14.5","@vue/test-utils":"^2.4.6","@vitejs/plugin-vue":"^6.0.1","@vitest/browser-playwright":"^4.0.0-beta.17"},"peerDependencies":{"vue-i18n":">=9.2.0","enum-plus":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-vue-i18n_1.0.0_1760371028816_0.9788753753845345","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@enum-plus/plugin-vue-i18n","version":"1.0.1","description":"A plugin for enum-plus that supports internationalization of enums through vue-i18n","keywords":["enum","enumeration","enum-plus","plugin","typescript","i18n","vue","vue-i18n","localization","globalization","internationalization","front-end","node.js","ssr"],"homepage":"https://github.com/shijistar/enum-plus/tree/master/packages/plugin-vue-i18n","bugs":{"url":"https://github.com/shijistar/enum-plus/issues"},"repository":{"type":"git","url":"git+https://github.com/shijistar/enum-plus.git"},"license":"MIT","author":{"name":"李凤宝","email":"shijistar@gmail.com","url":"Leo"},"sideEffects":false,"type":"module","main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","scripts":{"build":"run-p build:modern build:legacy","build:legacy":"cross-env LEGACY=1 father build","build:modern":"father build","prepublishOnly":"npm run build && npm run test","test":"run-s test:modern","test:legacy":"cross-env LEGACY=1 vitest","test:modern":"vitest"},"devDependencies":{"@vitejs/plugin-vue":"^6.0.1","@vitest/browser-playwright":"^4.0.0-beta.17","@vue/devtools-api":"^6.6.4","@vue/test-utils":"^2.4.6","vitest":"^4.0.0-beta.17","vue":"^3.5.22","vue-i18n":"^9.14.5"},"peerDependencies":{"enum-plus":"^3.0.0","vue-i18n":">=9.2.0"},"packageManager":"npm@11.12.1","publishConfig":{"registry":"https://registry.npmjs.org/"},"_id":"@enum-plus/plugin-vue-i18n@1.0.1","gitHead":"b3b4c80219fde2544bce4db4022e2bd925eaf44e","_nodeVersion":"22.13.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-10bT3y/c7h6zqsQE0fWsgorhpV151XKD4wslBZylEMcm6y2M9s0mmDAGSKTYlEM+/C4yNpfUQHLzArrxBFnBSQ==","shasum":"0e0cbb645f2e2b5169bc1dbde310945b768104e3","tarball":"https://registry.npmjs.org/@enum-plus/plugin-vue-i18n/-/plugin-vue-i18n-1.0.1.tgz","fileCount":22,"unpackedSize":39385,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCwXVZC6vfmM7MzUYUR2HRUyjtYPFm7d34IPKJISK402wIhALpJDgqbLZknsEPl6PhlJ5iur96/hoMGEWjOYSezRQg1"}]},"_npmUser":{"name":"shijistars","email":"shijistar@hotmail.com"},"directories":{},"maintainers":[{"name":"shijistars","email":"shijistar@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/plugin-vue-i18n_1.0.1_1782309500515_0.8923065386951479"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-13T15:57:08.743Z","modified":"2026-06-24T13:58:20.777Z","1.0.0":"2025-10-13T15:57:08.999Z","1.0.1":"2026-06-24T13:58:20.649Z"},"bugs":{"url":"https://github.com/shijistar/enum-plus/issues"},"author":{"name":"李凤宝","email":"shijistar@gmail.com","url":"Leo"},"license":"MIT","homepage":"https://github.com/shijistar/enum-plus/tree/master/packages/plugin-vue-i18n","keywords":["enum","enumeration","enum-plus","plugin","typescript","i18n","vue","vue-i18n","localization","globalization","internationalization","front-end","node.js","ssr"],"repository":{"type":"git","url":"git+https://github.com/shijistar/enum-plus.git"},"description":"A plugin for enum-plus that supports internationalization of enums through vue-i18n","maintainers":[{"name":"shijistars","email":"shijistar@hotmail.com"}],"readme":"<!-- markdownlint-disable MD001 MD009 MD033 MD041 -->\n\n[English](./README.md) | [中文](./README.zh-CN.md) | [CHANGELOG](./CHANGELOG.md)\n\n# @enum-plus/plugin-vue-i18n\n\n[![npm version](https://img.shields.io/npm/v/@enum-plus/plugin-vue-i18n.svg)](https://www.npmjs.com/package/@enum-plus/plugin-vue-i18n)\n[![license](https://img.shields.io/npm/l/@enum-plus/plugin-vue-i18n.svg)](https://www.npmjs.com/package/@enum-plus/plugin-vue-i18n)\n\n> 集成 [vue-i18n](https://vue-i18n.intlify.dev) 并实现枚举标签的国际化\n\n## 简介\n\n`@enum-plus/plugin-vue-i18n` 是 [enum-plus](https://github.com/shijistar/enum-plus) 的一个插件，自动集成 [vue-i18n](https://vue-i18n.intlify.dev) 实现枚举标签的国际化。它允许你在枚举定义中使用 vue-i18n 的本地化键，并动态显示为当前语言的翻译文本。当语言切换时，枚举标签也会相应自动更新。\n\n> 注意：该插件要求 Vue 3 和 vue-i18n 9 及以上版本，不支持 vue-i18n 的 `legacy` 模式。\n\n## 安装\n\n```bash\nnpm install @enum-plus/plugin-vue-i18n\n```\n\n在应用程序的入口文件中，导入 `@enum-plus/plugin-vue-i18n` 插件并安装：\n\n```js\nimport i18nPlugin from '@enum-plus/plugin-vue-i18n';\nimport { Enum } from 'enum-plus';\n\nconst i18n = createI18n({\n  // ...\n});\n\nEnum.install(i18nPlugin, {\n  localize: {\n    instance: i18n,\n  },\n});\n```\n\n如果你永远不会在组件上下文之外调用枚举的国际化功能，甚至可以进一步简化为：\n\n```js\nimport i18nPlugin from '@enum-plus/plugin-vue-i18n';\nimport { Enum } from 'enum-plus';\n\nEnum.install(i18nPlugin);\n```\n\n## 插件选项\n\n安装插件时，可以传入一个配置对象，用于设置插件的全局选项：\n\n```js\nEnum.install(i18nPlugin, {\n  localize: {\n    // 传递全局默认的 i18n 实例。如果你想在非组件环境下使用枚举的国际化功能，必须传入该实例\n    instance: i18n,\n    // 传递给 i18next.t 方法的默认选项\n    tOptions: {\n      // 设置返回值的默认值\n      default: '-',\n      // 其它 i18next.t 方法支持的选项\n      // 请参考 https://vue-i18n.intlify.dev/api/general.html#translateoptions\n    },\n  },\n});\n```\n\n`tOptions` 还支持函数形式，以便动态生成选项，\n\n```js\n// 使用函数形式动态生成 tOptions\nEnum.install(i18nPlugin, {\n  localize: {\n    tOptions: (key) => {\n      if (key === 'week.sunday') {\n        return { ns: 'my-namespace' };\n      }\n      return { ns: 'translation' }; // 默认命名空间\n    },\n  },\n});\n```\n\n你甚至可以在 `tOptions` 中直接返回一个字符串，作为最终的翻译文本，以完全控制 `localize` 方法的行为。\n\n```js\nEnum.install(i18nPlugin, {\n  localize: {\n    tOptions: (key) => {\n      if (key === 'week.sunday') {\n        return '周日'; // 直接返回翻译文本\n      }\n      return instance.t(key); // 其它情况返回默认翻译\n    },\n  },\n});\n```\n\n## 基本用法\n\n可以通过在枚举定义中使用本地化键，来实现枚举标签的国际化。\n\n```js\nimport { Enum } from 'enum-plus';\n\nconst WeekEnum = Enum(\n  {\n    Monday: { value: 1, label: 'week.monday' },\n    Tuesday: { value: 2, label: 'week.tuesday' },\n  },\n  {\n    name: 'weekDays.name', // 枚举类型名称，可选\n  },\n);\n\nWeekEnum.label(1); // Monday\nWeekEnum.name; // Week\n\nconst i18n = useI18n();\ni18n.locale.value = 'zh-CN';\nWeekEnum.label(1); // 星期一\nWeekEnum.name; // 周\n```\n","readmeFilename":"README.zh-CN.md"}