114 lines
2.8 KiB
JavaScript
114 lines
2.8 KiB
JavaScript
import Vue from "vue";
|
|
import VueI18n from "vue-i18n";
|
|
|
|
import arAR from "./ar_AR.json";
|
|
import enGB from "./en_GB.json";
|
|
import esAR from "./es_AR.json";
|
|
import esCO from "./es_CO.json";
|
|
import esES from "./es_ES.json";
|
|
import esMX from "./es_MX.json";
|
|
import frFR from "./fr_FR.json";
|
|
import idID from "./id_ID.json";
|
|
import ltLT from "./lt_LT.json";
|
|
import ptBR from "./pt_BR.json";
|
|
import ptPT from "./pt_BR.json";
|
|
import ruRU from "./ru_RU.json";
|
|
import trTR from "./tr_TR.json";
|
|
import ukUA from "./uk_UA.json";
|
|
import zhCN from "./zh_CN.json";
|
|
|
|
Vue.use(VueI18n);
|
|
|
|
export function detectLocale() {
|
|
let locale = (navigator.language || navigator.browserLanguage).toLowerCase();
|
|
switch (true) {
|
|
case /^ar.*/i.test(locale):
|
|
locale = "ar_AR";
|
|
break;
|
|
case /^en.*/i.test(locale):
|
|
locale = "en_GB";
|
|
break;
|
|
case /^es-AR.*/i.test(locale):
|
|
locale = "es_AR";
|
|
break;
|
|
case /^es-CO.*/i.test(locale):
|
|
locale = "es_CO";
|
|
break;
|
|
case /^es-MX.*/i.test(locale):
|
|
locale = "es_MX";
|
|
break;
|
|
case /^es.*/i.test(locale):
|
|
locale = "es_ES";
|
|
break;
|
|
case /^fr.*/i.test(locale):
|
|
locale = "fr_FR";
|
|
break;
|
|
case /^id.*/i.test(locale):
|
|
locale = "id_ID";
|
|
break;
|
|
case /^lt.*/i.test(locale):
|
|
locale = "lt_LT";
|
|
break;
|
|
case /^pt-BR.*/i.test(locale):
|
|
locale = "pt_BR";
|
|
break;
|
|
case /^pt.*/i.test(locale):
|
|
locale = "pt_PT";
|
|
break;
|
|
case /^ru.*/i.test(locale):
|
|
locale = "ru_RU";
|
|
break;
|
|
case /^tr.*/i.test(locale):
|
|
locale = "tr_TR";
|
|
break;
|
|
case /^uk.*/i.test(locale):
|
|
locale = "uk_UA";
|
|
break;
|
|
case /^zh.*/i.test(locale):
|
|
locale = "zh_CN";
|
|
break;
|
|
case /^ua.*/i.test(locale):
|
|
locale = "ua";
|
|
break;
|
|
default:
|
|
locale = "en_GB";
|
|
}
|
|
|
|
return locale;
|
|
}
|
|
|
|
const removeEmpty = (obj) =>
|
|
Object.keys(obj)
|
|
.filter((k) => obj[k] !== null && obj[k] !== undefined && obj[k] !== "") // Remove undef. and null and empty.string.
|
|
.reduce(
|
|
(newObj, k) =>
|
|
typeof obj[k] === "object"
|
|
? Object.assign(newObj, { [k]: removeEmpty(obj[k]) }) // Recurse.
|
|
: Object.assign(newObj, { [k]: obj[k] }), // Copy value.
|
|
{}
|
|
);
|
|
|
|
const i18n = new VueI18n({
|
|
locale: detectLocale(),
|
|
fallbackLocale: "en_GB",
|
|
messages: {
|
|
ar_AR: removeEmpty(arAR),
|
|
en_GB: enGB,
|
|
es_AR: removeEmpty(esAR),
|
|
es_CO: removeEmpty(esCO),
|
|
es_ES: removeEmpty(esES),
|
|
es_MX: removeEmpty(esMX),
|
|
fr_FR: removeEmpty(frFR),
|
|
id_ID: removeEmpty(idID),
|
|
lt_LT: removeEmpty(ltLT),
|
|
pt_BR: removeEmpty(ptBR),
|
|
pt_PT: removeEmpty(ptPT),
|
|
ru_RU: removeEmpty(ruRU),
|
|
tr_TR: removeEmpty(trTR),
|
|
uk_UA: removeEmpty(ukUA),
|
|
zh_CN: removeEmpty(zhCN),
|
|
},
|
|
});
|
|
|
|
export default i18n;
|