code refactor

This commit is contained in:
MaysWind
2020-10-20 22:46:24 +08:00
parent 32d3972ce9
commit be8bd6b17b
20 changed files with 123 additions and 115 deletions
+80
View File
@@ -0,0 +1,80 @@
import { defaultLanguage, allLanguages } from '../locales/index.js'
export function getAllLanguages() {
return allLanguages;
}
export function getLanguage(locale) {
return allLanguages[locale];
}
export function getDefaultLanguage() {
if (!window || !window.navigator) {
return defaultLanguage;
}
let browserLocale = window.navigator.browserLanguage || window.navigator.language;
if (!browserLocale) {
return defaultLanguage;
}
if (!allLanguages[browserLocale]) {
const locale = getLocaleFromLanguageAlias(browserLocale);
if (locale) {
browserLocale = locale;
}
}
if (!allLanguages[browserLocale]) {
return defaultLanguage;
}
return browserLocale;
}
export function getI18nOptions() {
return {
locale: defaultLanguage,
fallbackLocale: defaultLanguage,
formatFallbackMessages: true,
messages: (function () {
const messages = {};
for (let locale in allLanguages) {
if (!Object.prototype.hasOwnProperty.call(allLanguages, locale)) {
continue;
}
const lang = allLanguages[locale];
messages[locale] = lang.content;
}
return messages;
})()
};
}
function getLocaleFromLanguageAlias(alias) {
for (let locale in allLanguages) {
if (!Object.prototype.hasOwnProperty.call(allLanguages, locale)) {
continue;
}
const lang = allLanguages[locale];
const aliases = lang.aliases;
if (!aliases || aliases.length < 1) {
continue;
}
for (let i = 0; i < aliases.length; i++) {
if (aliases[i] === alias) {
return locale;
}
}
}
return null;
}