Commit 6350e89a authored by 沈翠玲's avatar 沈翠玲

国际化配置

parent 4d630dcf
...@@ -63,6 +63,7 @@ ...@@ -63,6 +63,7 @@
"vue-barcode": "^1.3.0", "vue-barcode": "^1.3.0",
"vue-count-to": "1.0.13", "vue-count-to": "1.0.13",
"vue-cropper": "0.5.5", "vue-cropper": "0.5.5",
"vue-i18n": "^8.27.0",
"vue-ls": "4.0.0", "vue-ls": "4.0.0",
"vue-meta": "2.4.0", "vue-meta": "2.4.0",
"vue-plugin-hiprint": "^0.0.56", "vue-plugin-hiprint": "^0.0.56",
......
import Vue from "vue";
import VueI18n from "vue-i18n";
// 引入自定义语言
import zh from "./lang/zh";
import th from "./lang/th";
// 引入element框架语言
import ElementLocale from "element-ui/lib/locale";
import thLocale from "element-ui/lib/locale/lang/th";
import zhLocale from "element-ui/lib/locale/lang/zh-CN";
ElementLocale.i18n((key, value) => i18n.t(key, value));
Vue.use(VueI18n);
// 准备翻译的语言环境信息
const i18n = new VueI18n({
locale: localStorage.getItem("lang") || "zh", //将语言标识存入localStorage或sessionStorage中,页面刷新不会默认中文显示
messages: {
// 中文语言包
zh: {
...zh,
...zhLocale,
},
//英文语言包
th: {
...th,
...thLocale,
},
},
silentTranslationWarn: true, //解决vue-i18n黄色警告"value of key 'xxx' is not a string"和"cannot translate the value of keypath 'xxx'.use the value of keypath as default",可忽略
globalInjection: true, // 全局注入
fallbackLocale: "zh", // 指定的locale没有找到对应的资源或当前语种不存在时,默认设置当前语种为中文
});
export const langs = [
{ value: 'zh-CN', label: '中文' },
{ value: 'th-TH', label: 'ภาษาไทย' }
]
export const getLocaleText = (lang) => {
return langs.find(item => item.value == lang).label
}
export const setLocal = (lang) => {
localStorage.setItem('lang', lang)
i18n.locale = lang
}
export default i18n;
\ No newline at end of file
export default {
common: {
login: "login",
logining: 'logining'
},
};
export default {
common: {
login: "登 录",
logining: '登 录 中'
},
};
...@@ -24,7 +24,7 @@ import { getDicts } from "@/api/system/dict/data"; ...@@ -24,7 +24,7 @@ import { getDicts } from "@/api/system/dict/data";
import { getConfigKey } from "@/api/system/config"; import { getConfigKey } from "@/api/system/config";
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree, formatMoney } from "@/utils/ruoyi"; import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree, formatMoney } from "@/utils/ruoyi";
window.store = store window.store = store
import i18n from './i18n'
import TipLabel from '@/components/TipLabel/index.vue' import TipLabel from '@/components/TipLabel/index.vue'
import PageTitle from '@/components/Page/PageTitle.vue' import PageTitle from '@/components/Page/PageTitle.vue'
import PageWrapper from '@/components/Page/PageWrapper.vue' import PageWrapper from '@/components/Page/PageWrapper.vue'
...@@ -54,7 +54,9 @@ import VueMeta from 'vue-meta' ...@@ -54,7 +54,9 @@ import VueMeta from 'vue-meta'
import DictData from '@/components/DictData' import DictData from '@/components/DictData'
import webSite from '@/config/website' import webSite from '@/config/website'
Vue.prototype.website = webSite Vue.prototype.website = webSite
Vue.use(Element, {
i18n: (key, value) => i18n.t(key, value)
})
// 全局方法挂载 // 全局方法挂载
Vue.prototype.getDicts = getDicts Vue.prototype.getDicts = getDicts
Vue.prototype.getConfigKey = getConfigKey Vue.prototype.getConfigKey = getConfigKey
...@@ -113,5 +115,6 @@ new Vue({ ...@@ -113,5 +115,6 @@ new Vue({
el: '#app', el: '#app',
router, router,
store, store,
i18n,
render: h => h(App) render: h => h(App)
}) })
import { login, logout, getInfo } from '@/api/login' import { login, logout, getInfo } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth' import { getToken, setToken, removeToken } from '@/utils/auth'
import {setLocal} from '@/i18n'
const user = { const user = {
state: { state: {
token: getToken(), token: getToken(),
...@@ -62,6 +62,9 @@ const user = { ...@@ -62,6 +62,9 @@ const user = {
} else { } else {
commit('SET_ROLES', ['ROLE_DEFAULT']) commit('SET_ROLES', ['ROLE_DEFAULT'])
} }
if (user) {
user.locale ? setLocal(user.locale.substring(0, 2)) : 'zh'
}
commit('SET_NAME', user.userName) commit('SET_NAME', user.userName)
commit('SET_AVATAR', avatar) commit('SET_AVATAR', avatar)
commit('SET_USERID', user.userId) commit('SET_USERID', user.userId)
......
...@@ -9,6 +9,20 @@ ...@@ -9,6 +9,20 @@
<el-form-item label="邮箱" prop="email"> <el-form-item label="邮箱" prop="email">
<el-input v-model="user.email" maxlength="50" /> <el-input v-model="user.email" maxlength="50" />
</el-form-item> </el-form-item>
<el-form-item label="语言" prop="locale">
<el-select
v-model="user.locale"
placeholder="请选择语言"
clearable
>
<el-option
v-for="dict in langs"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="性别"> <el-form-item label="性别">
<el-radio-group v-model="user.sex"> <el-radio-group v-model="user.sex">
<el-radio label="0"></el-radio> <el-radio label="0"></el-radio>
...@@ -24,8 +38,9 @@ ...@@ -24,8 +38,9 @@
<script> <script>
import { updateUserProfile } from "@/api/system/user"; import { updateUserProfile } from "@/api/system/user";
import { setLocal, langs } from '@/i18n'
export default { export default {
dicts: ['sys_lang'],
props: { props: {
user: { user: {
type: Object type: Object
...@@ -38,6 +53,9 @@ export default { ...@@ -38,6 +53,9 @@ export default {
nickName: [ nickName: [
{ required: true, message: "用户昵称不能为空", trigger: "blur" } { required: true, message: "用户昵称不能为空", trigger: "blur" }
], ],
locale: [
{ required: true, message: "语言不能为空", trigger: "blur" }
],
email: [ email: [
{ required: true, message: "邮箱地址不能为空", trigger: "blur" }, { required: true, message: "邮箱地址不能为空", trigger: "blur" },
{ {
...@@ -54,7 +72,8 @@ export default { ...@@ -54,7 +72,8 @@ export default {
trigger: "blur" trigger: "blur"
} }
] ]
} },
langs
}; };
}, },
methods: { methods: {
...@@ -63,6 +82,7 @@ export default { ...@@ -63,6 +82,7 @@ export default {
if (valid) { if (valid) {
updateUserProfile(this.user).then(response => { updateUserProfile(this.user).then(response => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
setLocal(this.user.locale.substring(0,2))
}); });
} }
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment