Skip to content
Snippets Groups Projects
Verified Commit 14ab03ac authored by Volker Schukai's avatar Volker Schukai :alien:
Browse files

fix: optimize local-picker #276

parent e76c349a
No related branches found
No related tags found
No related merge requests found
This diff is collapsed.
...@@ -13,92 +13,92 @@ ...@@ -13,92 +13,92 @@
*/ */
export const languages = { export const languages = {
"en": "English", en: "English",
"en-GB": "English (United Kingdom)", "en-GB": "English (United Kingdom)",
"en-US": "English (United States)", "en-US": "English (United States)",
"en-CA": "English (Canada)", "en-CA": "English (Canada)",
"en-AU": "English (Australia)", "en-AU": "English (Australia)",
"es": "Español", es: "Español",
"es-ES": "Español (España)", "es-ES": "Español (España)",
"es-MX": "Español (México)", "es-MX": "Español (México)",
"es-AR": "Español (Argentina)", "es-AR": "Español (Argentina)",
"zh": "中文", zh: "中文",
"zh-CN": "中文(简体)", "zh-CN": "中文(简体)",
"zh-TW": "中文(繁體)", "zh-TW": "中文(繁體)",
"zh-HK": "中文(香港)", "zh-HK": "中文(香港)",
"fr": "Français", fr: "Français",
"fr-FR": "Français (France)", "fr-FR": "Français (France)",
"fr-CA": "Français (Canada)", "fr-CA": "Français (Canada)",
"fr-BE": "Français (Belgique)", "fr-BE": "Français (Belgique)",
"de": "Deutsch", de: "Deutsch",
"de-DE": "Deutsch (Deutschland)", "de-DE": "Deutsch (Deutschland)",
"de-AT": "Deutsch (Österreich)", "de-AT": "Deutsch (Österreich)",
"de-CH": "Deutsch (Schweiz)", "de-CH": "Deutsch (Schweiz)",
"ja": "日本語", ja: "日本語",
"ru": "Русский", ru: "Русский",
"ru-RU": "Русский (Россия)", "ru-RU": "Русский (Россия)",
"it": "Italiano", it: "Italiano",
"it-IT": "Italiano (Italia)", "it-IT": "Italiano (Italia)",
"pt": "Português", pt: "Português",
"pt-PT": "Português (Portugal)", "pt-PT": "Português (Portugal)",
"pt-BR": "Português (Brasil)", "pt-BR": "Português (Brasil)",
"ko": "한국어", ko: "한국어",
"ar": "العربية", ar: "العربية",
"hi": "हिन्दी", hi: "हिन्दी",
"bn": "বাংলা", bn: "বাংলা",
"pa": "ਪੰਜਾਬੀ", pa: "ਪੰਜਾਬੀ",
"id": "Bahasa Indonesia", id: "Bahasa Indonesia",
"vi": "Tiếng Việt", vi: "Tiếng Việt",
"tr": "Türkçe", tr: "Türkçe",
"tr-TR": "Türkçe (Türkiye)", "tr-TR": "Türkçe (Türkiye)",
"pl": "Polski", pl: "Polski",
"pl-PL": "Polski (Polska)", "pl-PL": "Polski (Polska)",
"uk": "Українська", uk: "Українська",
"uk-UA": "Українська (Україна)", "uk-UA": "Українська (Україна)",
"ro": "Română", ro: "Română",
"ro-RO": "Română (România)", "ro-RO": "Română (România)",
"nl": "Nederlands", nl: "Nederlands",
"nl-NL": "Nederlands (Nederland)", "nl-NL": "Nederlands (Nederland)",
"el": "Ελληνικά", el: "Ελληνικά",
"el-GR": "Ελληνικά (Ελλάδα)", "el-GR": "Ελληνικά (Ελλάδα)",
"hu": "Magyar", hu: "Magyar",
"hu-HU": "Magyar (Magyarország)", "hu-HU": "Magyar (Magyarország)",
"sv": "Svenska", sv: "Svenska",
"sv-SE": "Svenska (Sverige)", "sv-SE": "Svenska (Sverige)",
"cs": "Čeština", cs: "Čeština",
"cs-CZ": "Čeština (Česká republika)", "cs-CZ": "Čeština (Česká republika)",
"bg": "Български", bg: "Български",
"bg-BG": "Български (България)", "bg-BG": "Български (България)",
"da": "Dansk", da: "Dansk",
"da-DK": "Dansk (Danmark)", "da-DK": "Dansk (Danmark)",
"fi": "Suomi", fi: "Suomi",
"fi-FI": "Suomi (Suomi)", "fi-FI": "Suomi (Suomi)",
"sk": "Slovenčina", sk: "Slovenčina",
"sk-SK": "Slovenčina (Slovensko)", "sk-SK": "Slovenčina (Slovensko)",
"he": "עברית", he: "עברית",
"th": "ไทย", th: "ไทย",
"sr": "Српски", sr: "Српски",
"sr-RS": "Српски (Србија)", "sr-RS": "Српски (Србија)",
"no": "Norsk", no: "Norsk",
"no-NO": "Norsk (Norge)", "no-NO": "Norsk (Norge)",
"lt": "Lietuvių", lt: "Lietuvių",
"lt-LT": "Lietuvių (Lietuva)", "lt-LT": "Lietuvių (Lietuva)",
"lv": "Latviešu", lv: "Latviešu",
"lv-LV": "Latviešu (Latvija)", "lv-LV": "Latviešu (Latvija)",
"et": "Eesti", et: "Eesti",
"et-EE": "Eesti (Eesti)", "et-EE": "Eesti (Eesti)",
"hr": "Hrvatski", hr: "Hrvatski",
"hr-HR": "Hrvatski (Hrvatska)", "hr-HR": "Hrvatski (Hrvatska)",
"sl": "Slovenščina", sl: "Slovenščina",
"sl-SI": "Slovenščina (Slovenija)", "sl-SI": "Slovenščina (Slovenija)",
"mt": "Malti", mt: "Malti",
"mt-MT": "Malti (Malta)", "mt-MT": "Malti (Malta)",
"is": "Íslenska", is: "Íslenska",
"is-IS": "Íslenska (Ísland)", "is-IS": "Íslenska (Ísland)",
"ga": "Gaeilge", ga: "Gaeilge",
"ga-IE": "Gaeilge (Éire)", "ga-IE": "Gaeilge (Éire)",
"cy": "Cymraeg", cy: "Cymraeg",
"cy-GB": "Cymraeg (Y Deyrnas Unedig)", "cy-GB": "Cymraeg (Y Deyrnas Unedig)",
"sq": "Shqip", sq: "Shqip",
"sq-AL": "Shqip (Shqipëria)" "sq-AL": "Shqip (Shqipëria)",
}; };
...@@ -36,8 +36,9 @@ export function detectUserLanguagePreference() { ...@@ -36,8 +36,9 @@ export function detectUserLanguagePreference() {
} }
// add to preferredLanguages all the base languages of the preferred languages // add to preferredLanguages all the base languages of the preferred languages
preferredLanguages = preferredLanguages.concat(preferredLanguages.map(lang => lang.split("-")[0])); preferredLanguages = preferredLanguages.concat(
preferredLanguages.map((lang) => lang.split("-")[0]),
);
if (!currentLang && preferredLanguages.length === 0) { if (!currentLang && preferredLanguages.length === 0) {
return { return {
...@@ -56,11 +57,14 @@ export function detectUserLanguagePreference() { ...@@ -56,11 +57,14 @@ export function detectUserLanguagePreference() {
const availableLanguages = [...linkTags].map((link) => { const availableLanguages = [...linkTags].map((link) => {
const fullLang = link.hreflang; const fullLang = link.hreflang;
const baseLang = fullLang.split("-")[0]; const baseLang = fullLang.split("-")[0];
let label = link.getAttribute('data-monster-label') let label = link.getAttribute("data-monster-label");
if (!label) {
label = link.getAttribute("title");
if (!label) { if (!label) {
label = languages?.[fullLang] label = languages?.[fullLang];
if (!label) { if (!label) {
label = languages?.[baseLang] label = languages?.[baseLang];
}
} }
} }
...@@ -73,7 +77,11 @@ export function detectUserLanguagePreference() { ...@@ -73,7 +77,11 @@ export function detectUserLanguagePreference() {
}); });
// filter availableLanguages to only include languages that are in the preferredLanguages array // filter availableLanguages to only include languages that are in the preferredLanguages array
const offerableLanguages = availableLanguages.filter(lang => preferredLanguages.includes(lang.fullLang) || preferredLanguages.includes(lang.baseLang)); const offerableLanguages = availableLanguages.filter(
(lang) =>
preferredLanguages.includes(lang.fullLang) ||
preferredLanguages.includes(lang.baseLang),
);
if (offerableLanguages.length === 0) { if (offerableLanguages.length === 0) {
return { return {
...@@ -103,7 +111,7 @@ export function detectUserLanguagePreference() { ...@@ -103,7 +111,7 @@ export function detectUserLanguagePreference() {
const bestMatch = offerableLanguages[0]; const bestMatch = offerableLanguages[0];
const bestMatchWeight = getWeight(bestMatch); const bestMatchWeight = getWeight(bestMatch);
const currentLabel = languages?.[currentLang] || currentLang const currentLabel = languages?.[currentLang] || currentLang;
// If we found a language that matches user preferences (weight > 1) // If we found a language that matches user preferences (weight > 1)
if (bestMatchWeight > 0) { if (bestMatchWeight > 0) {
......
...@@ -91,6 +91,7 @@ export * from "./components/datatable/embedded-pagination.mjs"; ...@@ -91,6 +91,7 @@ export * from "./components/datatable/embedded-pagination.mjs";
export * from "./components/datatable/status.mjs"; export * from "./components/datatable/status.mjs";
export * from "./components/datatable/change-button.mjs"; export * from "./components/datatable/change-button.mjs";
export * from "./components/datatable/constants.mjs"; export * from "./components/datatable/constants.mjs";
export * from "./components/accessibility/locale-picker.mjs";
export * from "./components/state/log/entry.mjs"; export * from "./components/state/log/entry.mjs";
export * from "./components/state/state.mjs"; export * from "./components/state/state.mjs";
export * from "./components/state/log.mjs"; export * from "./components/state/log.mjs";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment