5a9994d72230c4c317caaf9d08ee809887917afebca99d979505739c9ea182142d9a68dc0fb7d5a866f198263680186cae66a069ffe36ba36f8cf0ebb65be9 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. # vue-i18n
  2. Internationalization plugin for Vue.js
  3. ## Which dist file to use?
  4. ### From CDN or without a Bundler
  5. - **`vue-i18n(.runtime).global(.prod).js`**:
  6. - For direct use via `<script src="...">` in the browser. Exposes the `VueI18n` global
  7. - Note that global builds are not [UMD](https://github.com/umdjs/umd) builds. They are built as [IIFEs](https://developer.mozilla.org/en-US/docs/Glossary/IIFE) and is only meant for direct use via `<script src="...">`
  8. - In-browser locale messages compilation:
  9. - **`vue-i18n.global.js`** is the "full" build that includes both the compiler and the runtime so it supports compiling locale messages on the fly
  10. - **`vue-i18n.runtime.global.js`** contains only the runtime and requires locale messages to be pre-compiled during a build step
  11. - Inlines internal the bellow packages - i.e. it’s a single file with no dependencies on other files. This means you **must** import everything from this file and this file only to ensure you are getting the same instance of code
  12. - `@intlify/shared`
  13. - `@intlify/message-compiler`
  14. - `@intlify/core`
  15. - Contains hard-coded prod/dev branches, and the prod build is pre-minified. Use the `*.prod.js` files for production
  16. - **`vue-i18n(.runtime).esm-browser(.prod).js`**:
  17. - For usage via native ES modules imports (in browser via `<script type="module">`)
  18. - Shares the same runtime compilation, dependency inlining and hard-coded prod/dev behavior with the global build
  19. ### With a Bundler
  20. - **`vue-i18n(.runtime).esm-bundler.js`**:
  21. - For use with bundlers like `webpack`, `rollup` and `parcel`
  22. - Leaves prod/dev branches with `process.env.NODE_ENV` guards (must be replaced by bundler)
  23. - Does not ship minified builds (to be done together with the rest of the code after bundling)
  24. - Imports dependencies (e.g. `@intlify/core-base`, `@intlify/message-compiler`)
  25. - Imported dependencies are also `esm-bundler` builds and will in turn import their dependencies (e.g. `@intlify/message-compiler` imports `@intlify/shared`)
  26. - This means you **can** install/import these deps individually without ending up with different instances of these dependencies, but you must make sure they all resolve to the same version
  27. - In-browser locale messages compilation:
  28. - **`vue-i18n.runtime.esm-bundler.js` (default)** is runtime only, and requires all locale messages to be pre-compiled. This is the default entry for bundlers (via `module` field in `package.json`) because when using a bundler templates are typically pre-compiled (e.g. in `*.json` files)
  29. - **`vue-i18n.esm-bundler.js`**: includes the runtime compiler. Use this if you are using a bundler but still want locale messages compilation (e.g. templates via inline JavaScript strings)
  30. ### For Node.js (Server-Side)
  31. - **`vue-i18n.cjs(.prod).js`**:
  32. - For CommonJS usage in Node.js
  33. - For use in Node.js via `require()`
  34. - If you bundle your app with webpack with `target: 'node'` and properly externalize `vue-i18n`, this is the build that will be loaded
  35. - The dev/prod files are pre-built, but the appropriate file is automatically required based on `process.env.NODE_ENV`
  36. - **`vue-i18n(.runtime).node.mjs`**:
  37. - For ES Moudles usage in Node.js
  38. - For use in Node.js via `import`
  39. - The dev/prod files are pre-built, but the appropriate file is automatically required based on `process.env.NODE_ENV`
  40. - This module is proxy module of `vue-i18n(.runtime).mjs`
  41. - **`vue-i18n.runtime.node.mjs`**: is runtime only. proxy `vue-i18n.runtime.mjs`
  42. - **`vue-i18n.node.mjs`**: includes the runtime compiler. proxy `vue-i18n.mjs`
  43. > NOTE: ES Modules will be the future of the Node.js module system. The `vue-i18n.cjs(.prod).js` will be deprecated in the future. We recommend you would use `vue-i18n(.runtime).node.mjs`. 9.3+
  44. ## For Bundler feature flags
  45. ### Build Feature Flags
  46. The `esm-bundler` builds now exposes global feature flags that can be overwritten at compile time:
  47. - `__VUE_I18N_FULL_INSTALL__` (enable/disable, in addition to vue-i18n APIs, components and directives all fully support installation: `true`)
  48. - `__VUE_I18N_LEGACY_API__` (enable/disable vue-i18n legacy style APIs support, default: `true`)
  49. - `__INTLIFY_JIT_COMPILATION__` (enable/disable message compiler for JIT style, default: `false`)
  50. - `__INTLIFY_DROP_MESSAGE_COMPILER__` (enable/disable whether to tree-shake message compiler when we will be bundling, this flag works when `__INTLIFY_JIT_COMPILATION__` is enabled. default: `false`)
  51. > NOTE: `__INTLIFY_JIT_COMPILATION__`, `__INTLIFY_DROP_MESSAGE_COMPILER__` flag support version, 9.3+
  52. The build will work without configuring these flags, however it is **strongly recommended** to properly configure them in order to get proper tree shaking in the final bundle. To configure these flags:
  53. - webpack: use [DefinePlugin](https://webpack.js.org/plugins/define-plugin/)
  54. - Rollup: use [@rollup/plugin-replace](https://github.com/rollup/plugins/tree/master/packages/replace)
  55. - Vite: configured by default, but can be overwritten using the [`define` option](https://github.com/vitejs/vite/blob/a4133c073e640b17276b2de6e91a6857bdf382e1/src/node/config.ts#L72-L76)
  56. Note: the replacement value **must be boolean literals** and cannot be strings, otherwise the bundler/minifier will not be able to properly evaluate the conditions.
  57. ## :copyright: License
  58. [MIT](http://opensource.org/licenses/MIT)