@schukai/monster 3.97.0 → 3.97.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/package.json +1 -1
- package/source/components/accessibility/locale-picker.mjs +265 -200
- package/source/components/accessibility/stylesheet/locale-picker.mjs +13 -6
- package/source/i18n/locale.mjs +151 -151
- package/source/i18n/map/languages.mjs +88 -88
- package/source/i18n/util.mjs +16 -8
- package/source/monster.mjs +1 -0
package/source/i18n/util.mjs
CHANGED
@@ -36,8 +36,9 @@ export function detectUserLanguagePreference() {
|
|
36
36
|
}
|
37
37
|
|
38
38
|
// add to preferredLanguages all the base languages of the preferred languages
|
39
|
-
preferredLanguages = preferredLanguages.concat(
|
40
|
-
|
39
|
+
preferredLanguages = preferredLanguages.concat(
|
40
|
+
preferredLanguages.map((lang) => lang.split("-")[0]),
|
41
|
+
);
|
41
42
|
|
42
43
|
if (!currentLang && preferredLanguages.length === 0) {
|
43
44
|
return {
|
@@ -56,11 +57,14 @@ export function detectUserLanguagePreference() {
|
|
56
57
|
const availableLanguages = [...linkTags].map((link) => {
|
57
58
|
const fullLang = link.hreflang;
|
58
59
|
const baseLang = fullLang.split("-")[0];
|
59
|
-
let label = link.getAttribute(
|
60
|
+
let label = link.getAttribute("data-monster-label");
|
60
61
|
if (!label) {
|
61
|
-
label =
|
62
|
+
label = link.getAttribute("title");
|
62
63
|
if (!label) {
|
63
|
-
|
64
|
+
label = languages?.[fullLang];
|
65
|
+
if (!label) {
|
66
|
+
label = languages?.[baseLang];
|
67
|
+
}
|
64
68
|
}
|
65
69
|
}
|
66
70
|
|
@@ -73,7 +77,11 @@ export function detectUserLanguagePreference() {
|
|
73
77
|
});
|
74
78
|
|
75
79
|
// filter availableLanguages to only include languages that are in the preferredLanguages array
|
76
|
-
const offerableLanguages = availableLanguages.filter(
|
80
|
+
const offerableLanguages = availableLanguages.filter(
|
81
|
+
(lang) =>
|
82
|
+
preferredLanguages.includes(lang.fullLang) ||
|
83
|
+
preferredLanguages.includes(lang.baseLang),
|
84
|
+
);
|
77
85
|
|
78
86
|
if (offerableLanguages.length === 0) {
|
79
87
|
return {
|
@@ -103,7 +111,7 @@ export function detectUserLanguagePreference() {
|
|
103
111
|
const bestMatch = offerableLanguages[0];
|
104
112
|
const bestMatchWeight = getWeight(bestMatch);
|
105
113
|
|
106
|
-
const currentLabel = languages?.[currentLang] || currentLang
|
114
|
+
const currentLabel = languages?.[currentLang] || currentLang;
|
107
115
|
|
108
116
|
// If we found a language that matches user preferences (weight > 1)
|
109
117
|
if (bestMatchWeight > 0) {
|
@@ -114,7 +122,7 @@ export function detectUserLanguagePreference() {
|
|
114
122
|
full: bestMatch.fullLang,
|
115
123
|
base: bestMatch.baseLang,
|
116
124
|
label: bestMatch.label,
|
117
|
-
href
|
125
|
+
href: bestMatch.href,
|
118
126
|
},
|
119
127
|
available: availableLanguages.map((lang) => ({
|
120
128
|
...lang,
|
package/source/monster.mjs
CHANGED
@@ -91,6 +91,7 @@ export * from "./components/datatable/embedded-pagination.mjs";
|
|
91
91
|
export * from "./components/datatable/status.mjs";
|
92
92
|
export * from "./components/datatable/change-button.mjs";
|
93
93
|
export * from "./components/datatable/constants.mjs";
|
94
|
+
export * from "./components/accessibility/locale-picker.mjs";
|
94
95
|
export * from "./components/state/log/entry.mjs";
|
95
96
|
export * from "./components/state/state.mjs";
|
96
97
|
export * from "./components/state/log.mjs";
|