1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import Vue from "vue";
import VueI18n from "vue-i18n";
import Cookies from "js-cookie";
import elementEnLocale from "element-ui/lib/locale/lang/en"; // element-ui lang
import elementZhLocale from "element-ui/lib/locale/lang/zh-CN"; // element-ui lang
import elementThLocale from "element-ui/lib/locale/lang/th"; // element-ui lang
import elementViLocale from "element-ui/lib/locale/lang/vi"; // element-ui lang
import enLocale from "./local/en/";
import zhLocale from "./local/zh/";
import thLocale from "./local/en/"; //TODO 本地th暂无
import viLocale from "./local/en/"; //TODO 本地vi暂无
/**
* 详细文档
* https://kazupon.github.io/vue-i18n/zh/guide/formatting.html#%E5%85%B7%E5%90%8D%E6%A0%BC%E5%BC%8F
*/
Vue.use(VueI18n);
const messages = {
en: {
...enLocale,
...elementEnLocale,
},
zh: {
...zhLocale,
...elementZhLocale,
},
th: {
...thLocale,
...elementThLocale,
},
vi: {
...viLocale,
...elementViLocale,
},
};
export function getLanguage() {
const chooseLanguage = Cookies.get("language");
if (chooseLanguage) return chooseLanguage;
// if has not choose language
const language = (
navigator.language || navigator.browserLanguage
).toLowerCase();
const locales = Object.keys(messages);
for (const locale of locales) {
if (language.indexOf(locale) > -1) {
return locale;
}
}
return "en";
}
const i18n = new VueI18n({
// set locale
// options: en | zh | es
locale: getLanguage(),
// set locale messages
messages,
missing: function (locale, key, vm, values) {
// 若找不到,默认将key返回
const ks = key.split(".")
return ks[ks.length - 1]
}
});
export default i18n;