1.安装插件:npm install vue-i18n --savevue
2.src下新建i18n文件夹,npm
i18n文件夹下建立langs文件夹和i18n.js文件element-ui
langs文件夹下建立cn.js; en.js; index.jsapp
如图:ui
3. i18n.js:this
import Vue from "vue"; import locale from 'element-ui/lib/locale' import VueI18n from "vue-i18n"; import messages from "./langs"; Vue.use(VueI18n); const i18n = new VueI18n({ locale: localStorage.lang || "cn", messages }); locale.i18n((key, value) => i18n.t(key, value)) export default i18n;
4. cn.js:spa
import zhLocale from "element-ui/lib/locale/lang/zh-CN"; const cn = { message: { login: "登陆", password: "密码不可为空", upassword: "密码", uname: "帐户", }, ...zhLocale }; export default cn;
5. en.js:插件
import enLocale from 'element-ui/lib/locale/lang/en' const en = { message: { login: "Login", password: "Password is required", upassword: "password", uname: "account" }, ...enLocale }; export default en;
6.index.js:code
import en from "./en"; import cn from "./cn"; export default { en, cn };
7. main.js:orm
import Vue from 'vue' import App from './App' import store from './store' import i18n from './i18n/i18n' Vue.config.productionTip = false window.app = new Vue({ store, i18n, render: h => h(App) }).$mount('#app')
以上就是配置好了,可使用了
8. 使用:
//data()中声明 data() { return { lang: "", }; },
//做为文本内容,绑定在标签中 <div class="manage_tip"> <span class="title">{{$t('message.login')}}</span> </div>
//做为属性绑定 <el-form-item :label="$t('message.uname')" prop="pnone"> <el-input v-model="loginUser.pnone" placeholder="请输入手机或邮箱"></el-input> </el-form-item>
//做为elementui 中的校验规则,要放在computed中 computed: { rules() { return { password: [ { required: true, message: this.$t("message.password"), trigger: "blur" }, { pattern: /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[\W_]).{6,16}$/, message: "输入6-16位包含数字、字母、特殊字符的密码", trigger: "blur" } ], }; } },
//切换中英文 <el-dropdown @command="handleCommand"> <span class="el-dropdown-link"> 中英文切换 <i class="el-icon-arrow-down el-icon--right"></i> </span> <el-dropdown-menu slot="dropdown"> <el-dropdown-item command="cn">中文</el-dropdown-item> <el-dropdown-item command="en">英文</el-dropdown-item> </el-dropdown-menu> </el-dropdown> //切换语言的事件 methods: { // 根据下拉框的中被选中的值切换语言 handleCommand(command) { // this.$message("click on item " + command); switch (command) { case "cn": { this.lang = "cn"; this.$i18n.locale = this.lang; break; } case "en": { this.lang = "en"; this.$i18n.locale = this.lang; break; } default: break; } }, }