## 国际化 Element Plus 组件内部默认使用英语,若希望使用其他语言,则需要进行多语言设置。以中文为例,在 main.js 中: ```javascript // 完整引入 Element import { createApp } from 'vue' import ElementPlus from 'element-plus' import 'dayjs/locale/zh-cn' import locale from 'element-plus/lib/locale/lang/zh-cn' createApp(App).use(ElementPlus, { locale }) ``` 或 ```javascript // 按需引入 Element import Vue from 'vue' import { ElButton, ElSelect } from 'element-plus' import lang from 'element-plus/lib/locale/lang/zh-cn' import 'dayjs/locale/zh-cn' import locale from 'element-plus/lib/locale' // 设置语言 locale.use(lang) // 引入组件 Vue.component(ElButton.name, ElButton) Vue.component(ElSelect.name, ElSelect) ``` ### 设置 Day.js 国际化 Element Plus 直接使用了 [Day.js](https://day.js.org/) 项目的时间日期国际化设置,如月份名称、每周第一天是周几等。并且会自动全局设置已经导入的 Day.js 国际化配置。 ```javascript import locale from 'element-plus/lib/locale/lang/zh-cn' import 'dayjs/locale/zh-cn' // 将自动设置 Day.js 的国际化设置为 'zh-cn' app.use(ElementPlus, { locale }) ``` 当然,如果有需要,你也可以手动设置成其他 Day.js 国际化配置 ```javascript import 'dayjs/locale/fr' dayjs.locale('fr') ``` 如果使用其它语言,默认情况下英文语言包依旧是被引入的,可以使用 webpack 的 NormalModuleReplacementPlugin 替换默认语言包。 **webpack.config.js** ```javascript { plugins: [ new webpack.NormalModuleReplacementPlugin(/element-plus[\/\\]lib[\/\\]locale[\/\\]lang[\/\\]en/, 'element-plus/lib/locale/lang/zh-cn') ] } ``` ## 兼容 `vue-i18n@5.x` Element Plus 兼容 [vue-i18n@5.x](https://github.com/kazupon/vue-i18n),搭配使用能更方便地实现多语言切换。 ```javascript import Vue from 'vue' import VueI18n from 'vue-i18n' import ElementPlus from 'element-plus' import enLocale from 'element-plus/lib/locale/lang/en' import zhLocale from 'element-plus/lib/locale/lang/zh-cn' import App from './App.vue'; const app = createApp(App) app.use(ElementPlus) Vue.use(VueI18n) Vue.config.lang = 'zh-cn' Vue.locale('zh-cn', zhLocale) Vue.locale('en', enLocale) ``` ## 兼容其他 i18n 插件 如果不使用 `vue-i18n@5.x`,而是用其他的 i18n 插件,Element Plus 将无法兼容,但是可以自定义 Element Plus 的 i18n 的处理方法。 ```javascript import Vue from 'vue' import ElementPlus from 'element-plus' import enLocale from 'element-plus/lib/locale/lang/en' import zhLocale from 'element-plus/lib/locale/lang/zh-cn' Vue.use(Element, { i18n: function (path, options) { // ... } }) ``` ## 兼容 `vue-i18n@6.x` 默认不支持 6.x 的 `vue-i18n`,你需要手动处理。 ```javascript import Vue from 'vue' import ElementPlus from 'element-plus' import VueI18n from 'vue-i18n' import enLocale from 'element-plus/lib/locale/lang/en' import zhLocale from 'element-plus/lib/locale/lang/zh-cn' Vue.use(VueI18n) const messages = { en: { message: 'hello', ...enLocale // 或者用 Object.assign({ message: 'hello' }, enLocale) }, zh: { message: '你好', ...zhLocale // 或者用 Object.assign({ message: '你好' }, zhLocale) } } // Create VueI18n instance with options const i18n = new VueI18n({ locale: 'en', // set locale messages, // set locale messages }) Vue.use(Element, { i18n: (key, value) => i18n.t(key, value) }) new Vue({ i18n }).$mount('#app') ``` ## 按需加载里定制 i18n ```js import Vue from 'vue' import DatePicker from 'element/lib/date-picker' import VueI18n from 'vue-i18n' import enLocale from 'element-plus/lib/locale/lang/en' import zhLocale from 'element-plus/lib/locale/lang/zh-cn' import ElementLocale from 'element-plus/lib/locale' Vue.use(VueI18n) Vue.use(DatePicker) const messages = { en: { message: 'hello', ...enLocale }, zh: { message: '你好', ...zhLocale } } // Create VueI18n instance with options const i18n = new VueI18n({ locale: 'en', // set locale messages, // set locale messages }) ElementLocale.i18n((key, value) => i18n.t(key, value)) ``` ## 通过 CDN 的方式加载语言文件 ```html ``` 搭配 `vue-i18n` 使用 ```html ``` 目前 Element Plus 内置了以下语言: