Selaa lähdekoodia

refac: browser language detection

Timothy J. Baek 10 kuukautta sitten
vanhempi
commit
df8d1dacc4
2 muutettua tiedostoa jossa 12 lisäystä ja 5 poistoa
  1. 7 0
      src/lib/utils/index.ts
  2. 5 5
      src/routes/+layout.svelte

+ 7 - 0
src/lib/utils/index.ts

@@ -746,3 +746,10 @@ export const extractFrontmatter = (content) => {
 
 
 	return frontmatter;
 	return frontmatter;
 };
 };
+
+// Function to determine the best matching language
+export const bestMatchingLanguage = (supportedLanguages, preferredLanguages, defaultLocale) => {
+	const languages = supportedLanguages.map((lang) => lang.code);
+	const match = preferredLanguages.find((lang) => languages.includes(lang));
+	return match || defaultLocale;
+};

+ 5 - 5
src/routes/+layout.svelte

@@ -31,6 +31,7 @@
 
 
 	import { WEBUI_BASE_URL, WEBUI_HOSTNAME } from '$lib/constants';
 	import { WEBUI_BASE_URL, WEBUI_HOSTNAME } from '$lib/constants';
 	import i18n, { initI18n, getLanguages } from '$lib/i18n';
 	import i18n, { initI18n, getLanguages } from '$lib/i18n';
+	import { bestMatchingLanguage } from '$lib/utils';
 
 
 	setContext('i18n', i18n);
 	setContext('i18n', i18n);
 
 
@@ -92,12 +93,11 @@
 		// so `/error` can show something that's not `undefined`.
 		// so `/error` can show something that's not `undefined`.
 
 
 		const languages = await getLanguages();
 		const languages = await getLanguages();
+		const browserLanguages = navigator.languages
+			? navigator.languages
+			: [navigator.language || navigator.userLanguage];
 
 
-		const browserLanguage = navigator.languages
-			? navigator.languages[0]
-			: navigator.language || navigator.userLanguage;
-
-		initI18n(languages.includes(browserLanguage) ? browserLanguage : backendConfig?.default_locale);
+		initI18n(bestMatchingLanguage(languages, browserLanguages, backendConfig.default_locale));
 
 
 		if (backendConfig) {
 		if (backendConfig) {
 			// Save Backend Status to Store
 			// Save Backend Status to Store