Skip to content

Commit 1d5205f

Browse files
authored
Update language-switcher.js
1 parent 86db4a6 commit 1d5205f

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
// Find all alternate hreflang link elements
2+
const hreflangLinks = document.querySelectorAll('link[rel="alternate"]');
3+
4+
const hreflangToLangMapping = {
5+
"en-us": "en",
6+
"de-de": "de",
7+
"fr-fr": "fr",
8+
"es-es": "es",
9+
"ja-jp": "ja",
10+
"pt-br": "pt_BR",
11+
"zh-cn": "zh_CN",
12+
"ko-kr": "ko_KR",
13+
};
14+
15+
// Create an object to hold the languages
16+
const languages = {};
17+
18+
hreflangLinks.forEach((link) => {
19+
const hreflang = link.getAttribute("hreflang");
20+
const href = link.getAttribute("href");
21+
22+
if (hreflang && hreflang !== "x-default") {
23+
let label;
24+
switch (hreflang.toLowerCase()) {
25+
case "en-us":
26+
label = "English";
27+
break;
28+
case "de-de":
29+
label = "Deutsch";
30+
break;
31+
case "fr-fr":
32+
label = "Français";
33+
break;
34+
case "es-es":
35+
label = "Español";
36+
break;
37+
case "zh-cn":
38+
label = "中文";
39+
break;
40+
case "ja-jp":
41+
label = "日本語";
42+
break;
43+
case "ko-kr":
44+
label = "한국어";
45+
break;
46+
case "pt-br":
47+
label = "Português Brasileiro";
48+
break;
49+
}
50+
51+
let lang = hreflangToLangMapping[hreflang.toLowerCase()];
52+
languages[lang] = {
53+
label: label,
54+
url: href,
55+
};
56+
}
57+
});
58+
59+
// Get the current language
60+
const currentLang = document.documentElement.lang || "en";
61+
62+
// Update the <shared-header> element
63+
const sharedHeader = document.querySelector("shared-header");
64+
if (sharedHeader) {
65+
sharedHeader.setAttribute("language", currentLang);
66+
sharedHeader.setAttribute("languages", JSON.stringify(languages));
67+
}

0 commit comments

Comments
 (0)