# 🌏 vue-cli-plugin-i18n [![npm](https://img.shields.io/npm/v/vue-cli-plugin-i18n/next.svg)](https://www.npmjs.com/package/vue-cli-plugin-i18n) [![npm](https://img.shields.io/npm/v/vue-cli-plugin-i18n.svg)](https://www.npmjs.com/package/vue-cli-plugin-i18n) ![Test](https://github.com/intlify/vue-cli-plugin-i18n/workflows/Test/badge.svg) [![vue-cli-plugin-i18n Dev Token](https://badge.devtoken.rocks/vue-cli-plugin-i18n)](https://devtoken.rocks/package/vue-cli-plugin-i18n) Vue CLI plugin to add vue-i18n to your Vue Project ## 🌟 Features - [vue-i18n](https://github.com/kazupon/vue-i18n) basic scaffolding - Locale messages in Single File components with [vue-i18n-loader](https://github.com/intlify/vue-i18n-loader) - Locale messages missing & unused reporting (experimental) - Env Variables ## 🚀 Getting Started If yon don't have a project created with Vue CLI: ```sh vue create my-vue-app ``` Install the plugin into your project: ```sh cd my-vue-app vue add i18n ``` ## 🔨 Injected Commands - **`vue-cli-service i18n:report`** (experimental) Report the missing locale message keys and unused keys. > NOTE: limitation > `vue-cli-service i18n:report` cannot detect missing and unused keys from local messages of i18n custom blocks. ## 📋 Env variables When vue-i18n code files had been scaffolded into your project, the following env variables generate into `.env`: - **`VUE_APP_I18N_LOCALE`** The locale of project localization, default `en`. - **`VUE_APP_I18N_FALLBACK_LOCALE`** The locale of project fallback localization, default `en`. These env variables are read in `src/i18n.(js|ts)`. ## 🔧 Configurations `vue-cli-plugin-i18n` have some plugin options in `vue.config.js`: ```js module.exports = { pluginOptions: { i18n: { locale: 'ja', fallbackLocale: 'en', localeDir: 'locales', enableInSFC: false, enableLegacy: false } } } ``` ### `locale` - **Type:** `string` - **Default in prompt:** `en` The locale of project localization. ### `fallbackLocale` - **Type:** `string` - **Default in prompt:** `en` The fallback locale of project localization. ### `localeDir` - **Type:** `string` - **Default in prompt:** `locales` The directory where store localization messages of project. The specified directory will start from the `src` directory. ### `enableInSFC` - **Type:** `boolean` - **Default in prompt:** `false` - **Support project Vue version:** Vue 2 only Whether enable locale messages in Single file components. Default `No` in prompt, for Vue 2 and Vue I18n v8.x only. ### `enableLegacy` - **Type:** `boolean` - **Default in prompt:** `false` - **Support project Vue version:** Vue 3 only Whether use legacy mode API in Vue I18n. Default `No` in prompt, for Vue 3 and Vue I18n v9 or later. ### `enableBridge` - **Type:** `boolean` - **Default in prompt:** `false` - **Support project Vue version:** Vue 2 only Whether to set up a bridge to migrate to `vue-i18n@v9.x` from `vue-i18n@v8.26`, Default `No` in prompt. > âš ī¸ NOTE: If you use the Composition API with `vue-i18n-bridge` in bridge mode, you need to install [`@vue/composition-api`](https://github.com/vuejs/composition-api). ### `includeLocales` - **Type:** `boolean` - **Default in prompt:** `false` - **Support project Vue version:** Vue 2 only When `enableBridge` is `true`, i.e. in bridge mode, whether localization messages placed in `localeDir` option should be pre-compiled by message compiler or not. If you use Composition API in bridge mode, this option must be `true` because all localization messages are bundled during production build. ### `runtimeOnly` - **Type:** `boolean` - **Default(No Prompt):** `false` - **Support project Vue version:** Vue 3 only Whether or not to use Vue I18n **runtime-only**, set in the `vue-i18n` field of webpack `resolve.alias` option. default Vue I18n (vue-i18n) package.json `module` field will be used. If `true` is specified, Vue I18n (vue-i18n) will use `node_modules/vue-i18n/dist/vue-i18n.runtime.esm-bundler.js`. For more details, See [here](https://vue-i18n.intlify.dev/guide/advanced/optimization.html#reduce-bundle-size-with-feature-build-flags) ### `compositionOnly` - **Type:** `boolean` - **Default(No Prompt):** if `enableLegacy` set `false`, `true` else then `false` - **Support project Vue version:** Vue 3 only Whether to make vue-i18n's API only composition API. **By default the legacy API is tree-shaken.** For more details, See [here](https://vue-i18n.intlify.dev/guide/advanced/optimization.html#reduce-bundle-size-with-feature-build-flags) ### `fullInstall` - **Type:** `boolean` - **Default(No Prompt):** `true` - **Support project Vue version:** Vue 3 only Whether to install the full set of APIs, components, etc. provided by Vue I18n. By default, all of them will be installed. If `false` is specified, **build-in components and directive will not be installed in vue and will be tree-shaken.** For more details, See [here](https://vue-i18n.intlify.dev/guide/advanced/optimization.html#reduce-bundle-size-with-feature-build-flags) ## 📜 Changelog Details changes for each release are documented in the [CHANGELOG.md](https://github.com/intlify/vue-cli-plugin-i18n/blob/master/CHANGELOG.md). ## ❗ Issues Please make sure to read the [Issue Reporting Checklist](https://github.com/intlify/vue-cli-plugin-i18n/blob/master/.github/CONTRIBUTING.md#issue-reporting-guidelines) before opening an issue. Issues not conforming to the guidelines may be closed immediately. ## ✅ TODO Managed with [GitHub Projects](https://github.com/intlify/vue-cli-plugin-i18n/projects/1) ## đŸ’Ē Contribution Please make sure to read the [Contributing Guide](https://github.com/intlify/vue-cli-plugin-i18n/blob/master/.github/CONTRIBUTING.md) before making a pull request. ## ÂŠī¸ License [MIT](http://opensource.org/licenses/MIT)