fix: compare all browser languages with available offerings.

This commit is contained in:
Matt Kilgore
2024-09-07 12:41:26 -04:00
parent 25c76522d6
commit a6aafeb374
5 changed files with 25 additions and 15 deletions

View File

@@ -1,19 +1,22 @@
import type { CompileError, MessageCompiler, MessageContext } from "vue-i18n";
import { createI18n } from "vue-i18n";
import { IntlMessageFormat } from "intl-messageformat";
import { messages } from "./messages";
export default defineNuxtPlugin(({ vueApp }) => {
function checkDefaultLanguage() {
let matched = null;
const languages = Object.getOwnPropertyNames(messages())
const languages = Object.getOwnPropertyNames(messages());
languages.forEach(lang => {
if (lang === navigator.language.replace('-', '_')) {
matched = lang;
}
navigator.languages.forEach(language => {
if (lang === language) {
matched = lang;
}
});
});
if (!matched) {
languages.forEach(lang => {
const languagePartials = navigator.language.split('-')[0]
const languagePartials = navigator.language.split("-")[0];
if (lang === languagePartials) {
matched = lang;
}
@@ -51,13 +54,3 @@ export const messageCompiler: MessageCompiler = (message, { locale, key, onError
return () => key;
}
};
export const messages: Object = () => {
let messages = {};
const modules = import.meta.glob('~//locales/**.json', { eager: true });
for (const path in modules) {
const key = path.slice(9, -5);
messages[key] = modules[path];
}
return messages;
};

View File

@@ -0,0 +1,9 @@
export const messages: Object = () => {
const messages = {};
const modules = import.meta.glob("~//locales/**.json", { eager: true });
for (const path in modules) {
const key = path.slice(9, -5);
messages[key] = modules[path];
}
return messages;
};