Files
ezbookkeeping/src/lib/i18n.js
T
2020-10-20 23:08:31 +08:00

81 lines
1.8 KiB
JavaScript

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;
}