@wix/multilingual-manager 1.0.0

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.
Files changed (36) hide show
  1. package/README.md +154 -0
  2. package/dist/cjs/index.d.ts +34 -0
  3. package/dist/cjs/index.d.ts.map +1 -0
  4. package/dist/cjs/index.js +36 -0
  5. package/dist/cjs/index.js.map +1 -0
  6. package/dist/cjs/languages-display-names.d.ts +2 -0
  7. package/dist/cjs/languages-display-names.d.ts.map +1 -0
  8. package/dist/cjs/languages-display-names.js +186 -0
  9. package/dist/cjs/languages-display-names.js.map +1 -0
  10. package/dist/cjs/multilingual.d.ts +37 -0
  11. package/dist/cjs/multilingual.d.ts.map +1 -0
  12. package/dist/cjs/multilingual.js +166 -0
  13. package/dist/cjs/multilingual.js.map +1 -0
  14. package/dist/cjs/types.d.ts +165 -0
  15. package/dist/cjs/types.d.ts.map +1 -0
  16. package/dist/cjs/types.js +13 -0
  17. package/dist/cjs/types.js.map +1 -0
  18. package/dist/esm/index.d.ts +34 -0
  19. package/dist/esm/index.d.ts.map +1 -0
  20. package/dist/esm/index.js +32 -0
  21. package/dist/esm/index.js.map +1 -0
  22. package/dist/esm/languages-display-names.d.ts +2 -0
  23. package/dist/esm/languages-display-names.d.ts.map +1 -0
  24. package/dist/esm/languages-display-names.js +183 -0
  25. package/dist/esm/languages-display-names.js.map +1 -0
  26. package/dist/esm/multilingual.d.ts +37 -0
  27. package/dist/esm/multilingual.d.ts.map +1 -0
  28. package/dist/esm/multilingual.js +161 -0
  29. package/dist/esm/multilingual.js.map +1 -0
  30. package/dist/esm/types.d.ts +165 -0
  31. package/dist/esm/types.d.ts.map +1 -0
  32. package/dist/esm/types.js +10 -0
  33. package/dist/esm/types.js.map +1 -0
  34. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  35. package/dist/tsconfig.tsbuildinfo +1 -0
  36. package/package.json +79 -0
package/README.md ADDED
@@ -0,0 +1,154 @@
1
+ # @wix/multilingual
2
+
3
+ A type-safe Wix Multilingual SDK for accessing available languages on a site. This package provides a browser-only interface that proxies to the global `window.multilingual` methods with full TypeScript support.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @wix/multilingual
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ```typescript
14
+ import { listSupportedLanguages } from "@wix/multilingual";
15
+
16
+ // Get all available languages
17
+ const languages = listSupportedLanguages();
18
+ console.log("Available languages:", languages);
19
+
20
+ // Find the primary language
21
+ const primaryLanguage = languages.find(lang => lang.primary);
22
+ if (primaryLanguage) {
23
+ console.log("Primary language:", primaryLanguage.displayName);
24
+ console.log("Primary language URL:", primaryLanguage.url);
25
+ }
26
+
27
+ // Iterate through all languages
28
+ languages.forEach(lang => {
29
+ console.log(`${lang.displayName} (${lang.id}): ${lang.url}`);
30
+ });
31
+ ```
32
+
33
+ ## Features
34
+
35
+ - ✅ **Type-safe** - Full TypeScript support for all language operations
36
+ - ✅ **Browser-only** - Works in Wix applications where `window.multilingual` is available
37
+ - ✅ **Zero dependencies** - Lightweight proxy implementation
38
+ - ✅ **Silent failure** - Graceful handling of missing dependencies with console warnings
39
+ - ✅ **External site support** - Supports URLs for sites hosted outside Wix
40
+ - ✅ **Comprehensive API** - Full access to language information including URLs and regional formats
41
+
42
+ ## API Reference
43
+
44
+ ### `listSupportedLanguages()`
45
+
46
+ Gets an array of all available languages as defined in ML. Provides an array of all the available languages as defined in ML. Array of Language object.
47
+
48
+ **Returns:** `Language[]` - Array of Language objects, or empty array if not available
49
+
50
+ ```typescript
51
+ const languages = listSupportedLanguages();
52
+ // [
53
+ // {
54
+ // id: "en",
55
+ // displayName: "English",
56
+ // regionalFormat: "en-US",
57
+ // url: "https://mysite.com/en",
58
+ // primary: true
59
+ // },
60
+ // {
61
+ // id: "fr",
62
+ // displayName: "Français",
63
+ // regionalFormat: "fr-FR",
64
+ // url: "https://mysite.com/fr",
65
+ // primary: false
66
+ // }
67
+ // ]
68
+ ```
69
+
70
+ ## Language Type
71
+
72
+ ### Language
73
+
74
+ Represents a language available on the site:
75
+
76
+ ```typescript
77
+ interface Language {
78
+ /**
79
+ * The language identifier (e.g., "en", "fr", "es").
80
+ */
81
+ id: string;
82
+ /**
83
+ * The display name of the language (e.g., "English", "Français", "Español").
84
+ */
85
+ displayName: string;
86
+ /**
87
+ * The regional format identifier (e.g., "en-US", "fr-FR", "es-ES").
88
+ */
89
+ regionalFormat: string;
90
+ /**
91
+ * The URL for the language version of the site. Supports URLs for sites hosted outside Wix.
92
+ * (e.g., "https://mysite.com/en", "https://mysite.com/fr").
93
+ */
94
+ url: string;
95
+ /**
96
+ * Whether this is the primary language for the site.
97
+ */
98
+ primary: boolean;
99
+ }
100
+ ```
101
+
102
+ ## Examples
103
+
104
+ ### Get Primary Language
105
+
106
+ ```typescript
107
+ import { listSupportedLanguages } from "@wix/multilingual";
108
+
109
+ const languages = listSupportedLanguages();
110
+ const primaryLanguage = languages.find(lang => lang.primary);
111
+
112
+ if (primaryLanguage) {
113
+ console.log(`Primary language: ${primaryLanguage.displayName}`);
114
+ console.log(`URL: ${primaryLanguage.url}`);
115
+ }
116
+ ```
117
+
118
+ ### Build Language Switcher
119
+
120
+ ```typescript
121
+ import { listSupportedLanguages } from "@wix/multilingual";
122
+
123
+ const languages = listSupportedLanguages();
124
+
125
+ // Create language switcher dropdown
126
+ const languageSwitcher = languages.map(lang => ({
127
+ label: lang.displayName,
128
+ value: lang.id,
129
+ url: lang.url,
130
+ isPrimary: lang.primary,
131
+ }));
132
+
133
+ // Use in your UI component
134
+ languageSwitcher.forEach(lang => {
135
+ console.log(`${lang.label} - ${lang.url}`);
136
+ });
137
+ ```
138
+
139
+ ### Support External Sites
140
+
141
+ ```typescript
142
+ import { listSupportedLanguages } from "@wix/multilingual";
143
+
144
+ const languages = listSupportedLanguages();
145
+
146
+ // Works with both Wix-hosted and externally-hosted sites
147
+ languages.forEach(lang => {
148
+ // lang.url can be:
149
+ // - "https://mysite.com/en" (external site)
150
+ // - "https://www.wixsite.com/mysite/en" (Wix-hosted)
151
+ console.log(`Switch to ${lang.displayName}: ${lang.url}`);
152
+ });
153
+ ```
154
+
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @wix/multilingual - Wix Multilingual SDK
3
+ *
4
+ * This package provides a type-safe interface for accessing available languages
5
+ * by proxying to the browser's window.multilingual methods.
6
+ */
7
+ import type { Language } from "./types.js";
8
+ /**
9
+ * Gets an array of all available languages as defined in ML.
10
+ *
11
+ * Provides an array of all the available languages as defined in ML. Array of Language object.
12
+ * Supports URLs for sites hosted outside Wix.
13
+ *
14
+ * @returns Array of Language objects
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import { listSupportedLanguages } from '@wix/site';
19
+ *
20
+ * const languages = listSupportedLanguages();
21
+ * languages.forEach(lang => {
22
+ * console.log(`${lang.displayName} (${lang.id}): ${lang.URL}`);
23
+ * });
24
+ *
25
+ * // Find primary language
26
+ * const primaryLanguage = languages.find(lang => lang.primary);
27
+ * if (primaryLanguage) {
28
+ * console.log('Primary language:', primaryLanguage.displayName);
29
+ * }
30
+ * ```
31
+ */
32
+ export { listSupportedLanguages } from "./multilingual.js";
33
+ export type { Language };
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAO,mBAAmB,CAAC;AAG5D,YAAY,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ /**
3
+ * @wix/multilingual - Wix Multilingual SDK
4
+ *
5
+ * This package provides a type-safe interface for accessing available languages
6
+ * by proxying to the browser's window.multilingual methods.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.listSupportedLanguages = void 0;
10
+ /**
11
+ * Gets an array of all available languages as defined in ML.
12
+ *
13
+ * Provides an array of all the available languages as defined in ML. Array of Language object.
14
+ * Supports URLs for sites hosted outside Wix.
15
+ *
16
+ * @returns Array of Language objects
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { listSupportedLanguages } from '@wix/site';
21
+ *
22
+ * const languages = listSupportedLanguages();
23
+ * languages.forEach(lang => {
24
+ * console.log(`${lang.displayName} (${lang.id}): ${lang.URL}`);
25
+ * });
26
+ *
27
+ * // Find primary language
28
+ * const primaryLanguage = languages.find(lang => lang.primary);
29
+ * if (primaryLanguage) {
30
+ * console.log('Primary language:', primaryLanguage.displayName);
31
+ * }
32
+ * ```
33
+ */
34
+ var multilingual_js_1 = require("./multilingual.js");
35
+ Object.defineProperty(exports, "listSupportedLanguages", { enumerable: true, get: function () { return multilingual_js_1.listSupportedLanguages; } });
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAIH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qDAA4D;AAAnD,yHAAA,sBAAsB,OAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const languagesDisplayNames: Record<string, string>;
2
+ //# sourceMappingURL=languages-display-names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages-display-names.d.ts","sourceRoot":"","sources":["../../src/languages-display-names.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAqLxD,CAAC"}
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.languagesDisplayNames = void 0;
4
+ exports.languagesDisplayNames = {
5
+ "cs": "Čeština",
6
+ "da": "Dansk",
7
+ "de": "Deutsch",
8
+ "en": "English",
9
+ "es": "Español",
10
+ "fr": "Français",
11
+ "hi": "हिन्दी",
12
+ "id": "Bahasa Indonesia",
13
+ "it": "Italiano",
14
+ "ja": "日本語",
15
+ "ko": "한국어",
16
+ "nl": "Nederlands",
17
+ "no": "Norsk",
18
+ "pl": "Polski",
19
+ "pt": "Português",
20
+ "ru": "Русский",
21
+ "sv": "Svenska",
22
+ "th": "ไทย",
23
+ "tr": "Türkçe",
24
+ "uk": "Українська",
25
+ "vi": "Tiếng Việt",
26
+ "zh": "繁體中文",
27
+ "sq": "Shqip",
28
+ "am": "አማርኛ",
29
+ "ar": "العربية",
30
+ "hy": "Հայերեն",
31
+ "az": "Azərbaycan dili",
32
+ "eu": "Euskara",
33
+ "be": "Беларуская",
34
+ "bn": "বাংলা",
35
+ "bs": "Bosanski",
36
+ "bg": "Български",
37
+ "ca": "Català",
38
+ "ny": "ChiCheŵa",
39
+ "co": "Corsu",
40
+ "hr": "Hrvatski",
41
+ "et": "Eesti",
42
+ "fj": "Vosa Vakaviti",
43
+ "fi": "Suomi",
44
+ "ga": "Gaeilge",
45
+ "gl": "Galego",
46
+ "ka": "ქართული",
47
+ "el": "Ελληνικά",
48
+ "gu": "ગુજરાતી",
49
+ "ht": "Kreyòl Ayisyen",
50
+ "ha": "Hausa",
51
+ "he": "עברית",
52
+ "hu": "Magyar",
53
+ "is": "Íslenska",
54
+ "ig": "Igbo",
55
+ "kn": "ಕನ್ನಡ",
56
+ "kk": "Қазақ тілі",
57
+ "km": "ភាសាខ្មែរ",
58
+ "ku": "Kurdî",
59
+ "ky": "Кыргызча",
60
+ "lb": "Lëtzebuergesch",
61
+ "lo": "ລາວ",
62
+ "la": "Latina",
63
+ "lv": "Latviešu",
64
+ "lt": "Lietuvių",
65
+ "mk": "Македонски",
66
+ "mg": "Malagasy",
67
+ "ms": "Bahasa Melayu",
68
+ "ml": "മലയാളം",
69
+ "mt": "Malti",
70
+ "mn": "Монгол",
71
+ "ne": "नेपाली",
72
+ "ps": "پښتو",
73
+ "fa": "فارسی",
74
+ "ro": "Română",
75
+ "sm": "Gagana Samoa",
76
+ "sr": "Српски",
77
+ "sn": "Shona",
78
+ "sd": "سنڌي",
79
+ "si": "සිංහල",
80
+ "sk": "Slovenčina",
81
+ "sl": "Slovenščina",
82
+ "so": "Soomaaliga",
83
+ "su": "Basa Sunda",
84
+ "sw": "Kiswahili",
85
+ "tl": "Filipino",
86
+ "tg": "Тоҷикӣ",
87
+ "ta": "தமிழ்",
88
+ "te": "తెలుగు",
89
+ "tk": "Türkmen",
90
+ "ur": "اردو",
91
+ "uz": "O'zbek",
92
+ "cy": "Cymraeg",
93
+ "xh": "isiXhosa",
94
+ "yi": "ייִדיש",
95
+ "yo": "Yorùbá",
96
+ "zu": "isiZulu",
97
+ "kl": "Kalaallisut",
98
+ "fo": "Føroyskt",
99
+ "ln": "Lingála",
100
+ "mi": "Māori",
101
+ "mr": "मराठी",
102
+ "my": "မြန်မာ",
103
+ "se": "Sámegiella",
104
+ "ug": "ئۇيغۇرچە",
105
+ "qu": "Runa Simi",
106
+ "aa": "Afar",
107
+ "ab": "Аҧсуа",
108
+ "ae": "Avestan",
109
+ "ak": "Akan",
110
+ "an": "Aragonés",
111
+ "as": "অসমীয়া",
112
+ "av": "Авар",
113
+ "ay": "Aymar aru",
114
+ "ba": "Башҡортса",
115
+ "bh": "भोजपुरी",
116
+ "bi": "Bislama",
117
+ "bm": "Bamanankan",
118
+ "bo": "བོད་སྐད་",
119
+ "br": "Brezhoneg",
120
+ "ce": "Нохчийн",
121
+ "ch": "Chamoru",
122
+ "cr": "ᓀᐦᐃᔭᐍᐏᐣ",
123
+ "cu": "Црькъвьнословѣньскъ",
124
+ "cv": "Чӑвашла",
125
+ "dv": "ދިވެހިބަސް",
126
+ "dz": "རྫོང་ཁ",
127
+ "ee": "Eʋegbe",
128
+ "eo": "Esperanto",
129
+ "ff": "Fulah",
130
+ "fy": "Frysk",
131
+ "gd": "Gàidhlig",
132
+ "gn": "Avañe'ẽ",
133
+ "gv": "Gaelg",
134
+ "ho": "Hiri Motu",
135
+ "hz": "Otjiherero",
136
+ "ia": "Interlingua",
137
+ "ie": "Interlingue",
138
+ "ii": "ꆈꌠꉙ",
139
+ "ik": "Iñupiaq",
140
+ "io": "Ido",
141
+ "iu": "ᐃᓄᒃᑎᑐᑦ",
142
+ "jv": "Basa Jawa",
143
+ "ki": "Gikuyu",
144
+ "kr": "Kanuri",
145
+ "ks": "کٲشُر",
146
+ "kw": "Kernewek",
147
+ "lg": "Luganda",
148
+ "li": "Limburgs",
149
+ "lu": "Tshiluba",
150
+ "mh": "Kajin M̧ajeļ",
151
+ "na": "Dorerin Naoero",
152
+ "nb": "Norsk Bokmål",
153
+ "nd": "isiNdebele",
154
+ "ng": "Oshiwambo",
155
+ "nn": "Norsk Nynorsk",
156
+ "nr": "isiNdebele (South)",
157
+ "nv": "Diné Bizaad",
158
+ "oc": "Occitan",
159
+ "oj": "Anishinaabemowin",
160
+ "om": "Afaan Oromoo",
161
+ "or": "ଓଡ଼ିଆ",
162
+ "os": "Ирон",
163
+ "pa": "ਪੰਜਾਬੀ",
164
+ "pi": "𑀅𑀯𑀢",
165
+ "rm": "Rumantsch",
166
+ "rn": "Ikirundi",
167
+ "rw": "Kinyarwanda",
168
+ "sa": "संस्कृतम्",
169
+ "sc": "Sardu",
170
+ "sg": "Sängö",
171
+ "ss": "SiSwati",
172
+ "st": "Sesotho",
173
+ "ti": "ትግርኛ",
174
+ "tn": "Setswana",
175
+ "to": "Faka Tonga",
176
+ "ts": "Xitsonga",
177
+ "tt": "Татарча",
178
+ "tw": "Twi",
179
+ "ty": "Reo Tahiti",
180
+ "ve": "Tshivenḓa",
181
+ "vo": "Volapük",
182
+ "wa": "Walon",
183
+ "wo": "Wolof",
184
+ "za": "Saɯ cueŋƅ"
185
+ };
186
+ //# sourceMappingURL=languages-display-names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages-display-names.js","sourceRoot":"","sources":["../../src/languages-display-names.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { GlobalThisSupportedLanguage, VeloGlobalsSiteLanguage, Language } from "./types.js";
2
+ /**
3
+ * Gets an array of all available languages as defined in ML.
4
+ *
5
+ * Provides an array of all the available languages as defined in ML. Array of Language object.
6
+ * Supports URLs for sites hosted outside Wix.
7
+ *
8
+ * @returns Array of Language objects, or empty array if not available
9
+ *
10
+ * @example Get available languages
11
+ * ```typescript
12
+ * import { listSupportedLanguages } from '@wix/site';
13
+ *
14
+ * const languages = listSupportedLanguages();
15
+ * console.log('Available languages:', languages);
16
+ * // [
17
+ * // {
18
+ * // id: "en",
19
+ * // displayName: "English",
20
+ * // regionalFormat: "en-US",
21
+ * // URL: "https://mysite.com/en",
22
+ * // primary: true
23
+ * // },
24
+ * // {
25
+ * // id: "fr",
26
+ * // displayName: "Français",
27
+ * // regionalFormat: "fr-FR",
28
+ * // URL: "https://mysite.com/fr",
29
+ * // primary: false
30
+ * // }
31
+ * // ]
32
+ * ```
33
+ */
34
+ export declare function listSupportedLanguages(): Language[];
35
+ export declare function buildDisplayName(language: VeloGlobalsSiteLanguage | GlobalThisSupportedLanguage): string | undefined;
36
+ export declare function buildUrlForLanguage(language: VeloGlobalsSiteLanguage | GlobalThisSupportedLanguage, cleanUrl: string): string | undefined;
37
+ //# sourceMappingURL=multilingual.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multilingual.d.ts","sourceRoot":"","sources":["../../src/multilingual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,QAAQ,EAET,MAAM,YAAY,CAAC;AAMpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,sBAAsB,IAAI,QAAQ,EAAE,CASnD;AAoED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,2BAA2B,GAAG,MAAM,GAAG,SAAS,CAapH;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,2BAA2B,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA0BzI"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listSupportedLanguages = listSupportedLanguages;
4
+ exports.buildDisplayName = buildDisplayName;
5
+ exports.buildUrlForLanguage = buildUrlForLanguage;
6
+ const types_js_1 = require("./types.js");
7
+ const languages_display_names_js_1 = require("./languages-display-names.js");
8
+ const headless_localization_utils_1 = require("@wix/headless-localization-utils");
9
+ /**
10
+ * Gets an array of all available languages as defined in ML.
11
+ *
12
+ * Provides an array of all the available languages as defined in ML. Array of Language object.
13
+ * Supports URLs for sites hosted outside Wix.
14
+ *
15
+ * @returns Array of Language objects, or empty array if not available
16
+ *
17
+ * @example Get available languages
18
+ * ```typescript
19
+ * import { listSupportedLanguages } from '@wix/site';
20
+ *
21
+ * const languages = listSupportedLanguages();
22
+ * console.log('Available languages:', languages);
23
+ * // [
24
+ * // {
25
+ * // id: "en",
26
+ * // displayName: "English",
27
+ * // regionalFormat: "en-US",
28
+ * // URL: "https://mysite.com/en",
29
+ * // primary: true
30
+ * // },
31
+ * // {
32
+ * // id: "fr",
33
+ * // displayName: "Français",
34
+ * // regionalFormat: "fr-FR",
35
+ * // URL: "https://mysite.com/fr",
36
+ * // primary: false
37
+ * // }
38
+ * // ]
39
+ * ```
40
+ */
41
+ function listSupportedLanguages() {
42
+ const multilingualObject = getMultilingualObject();
43
+ if (!multilingualObject) {
44
+ return [];
45
+ }
46
+ const languages = getLanguages(multilingualObject);
47
+ return languages;
48
+ }
49
+ function getMultilingualObject() {
50
+ const maybeMultilingualVeloObject =
51
+ // @ts-expect-error - ignoring globals type error
52
+ typeof globals !== "undefined"
53
+ ? // @ts-expect-error - ignoring globals type error
54
+ globals?.$ns?.["wix-window"]?.multilingual
55
+ : undefined;
56
+ const maybeMultilingualWindowObject = typeof window !== "undefined" ? window?.essentials?.multilingual : undefined;
57
+ return (maybeMultilingualVeloObject ?? maybeMultilingualWindowObject ?? globalThis?.__wix_site_metadata__?.multilingual);
58
+ }
59
+ function getLanguages(multilingualObject) {
60
+ try {
61
+ // GlobalThisSupportedLanguage
62
+ if (multilingualObject?.supportedLanguages?.length) {
63
+ const supportedLanguages = multilingualObject.supportedLanguages;
64
+ const availableLanguageCodes = supportedLanguages.map(lang => lang.languageCode).filter(Boolean);
65
+ const cleanUrl = cleanCurrentUrl(availableLanguageCodes);
66
+ return supportedLanguages.map((language) => {
67
+ return {
68
+ id: language.languageCode,
69
+ displayName: buildDisplayName(language),
70
+ regionalFormat: [
71
+ language.locale?.languageCode,
72
+ language.locale?.country,
73
+ ]
74
+ .filter(Boolean)
75
+ .join("-"),
76
+ url: buildUrlForLanguage(language, cleanUrl),
77
+ primary: language.isPrimary,
78
+ };
79
+ });
80
+ }
81
+ // VeloGlobalsSiteLanguage
82
+ else if (multilingualObject?.siteLanguages?.length) {
83
+ const siteLanguages = multilingualObject.siteLanguages;
84
+ const availableLanguageCodes = siteLanguages.map(lang => lang.languageCode).filter(Boolean);
85
+ const cleanUrl = cleanCurrentUrl(availableLanguageCodes);
86
+ return siteLanguages.map((language) => {
87
+ return {
88
+ id: language.languageCode,
89
+ displayName: buildDisplayName(language),
90
+ regionalFormat: language.locale,
91
+ url: buildUrlForLanguage(language, cleanUrl),
92
+ primary: language.isPrimaryLanguage,
93
+ };
94
+ });
95
+ }
96
+ }
97
+ catch (error) {
98
+ console.warn("[Multilingual Manager] listSupportedLanguages failed", error);
99
+ return [];
100
+ }
101
+ console.warn("[Multilingual Manager] listSupportedLanguages is not available");
102
+ return [];
103
+ }
104
+ function buildDisplayName(language) {
105
+ const staticDisplayName = languages_display_names_js_1.languagesDisplayNames[language.languageCode];
106
+ if (staticDisplayName) {
107
+ return staticDisplayName;
108
+ }
109
+ const dynamicDisplayName = language.name ?? language.countryCode;
110
+ if (dynamicDisplayName) {
111
+ return dynamicDisplayName;
112
+ }
113
+ return undefined;
114
+ }
115
+ function buildUrlForLanguage(language, cleanUrl) {
116
+ // If language already has a URL, or we don't have the necessary data, return as is
117
+ if (language.url || typeof window === "undefined" || !window.location.href || !language.resolutionMethod) {
118
+ return language.url;
119
+ }
120
+ const targetLangCode = language.languageCode;
121
+ if (!targetLangCode) {
122
+ return undefined;
123
+ }
124
+ try {
125
+ return (0, headless_localization_utils_1.applyLanguageToUrl)(cleanUrl, {
126
+ languageCode: language.languageCode,
127
+ countryCode: language.countryCode,
128
+ resolutionMethod: toResolutionMethodEnum(language.resolutionMethod),
129
+ locale: {
130
+ languageCode: language.languageCode,
131
+ country: language.countryCode,
132
+ }
133
+ });
134
+ }
135
+ catch (error) {
136
+ console.warn("[Multilingual Manager] buildUrlForLanguage failed", error);
137
+ return undefined;
138
+ }
139
+ }
140
+ function toResolutionMethodEnum(resolutionMethod) {
141
+ switch (resolutionMethod) {
142
+ case "QUERY_PARAM":
143
+ case "QueryParam":
144
+ return types_js_1.ResolutionMethod.QUERY_PARAM;
145
+ case "SUBDOMAIN":
146
+ case "Subdomain":
147
+ return types_js_1.ResolutionMethod.SUBDOMAIN;
148
+ case "SUBDIRECTORY":
149
+ case "Subdirectory":
150
+ return types_js_1.ResolutionMethod.SUBDIRECTORY;
151
+ default:
152
+ return undefined;
153
+ }
154
+ }
155
+ function cleanCurrentUrl(supportedLanguageCodes) {
156
+ const currentUrl = typeof window !== "undefined" && window.location?.href ? window.location.href : "";
157
+ try {
158
+ return (0, headless_localization_utils_1.clearLanguageFromUrl)(currentUrl, supportedLanguageCodes);
159
+ }
160
+ catch (error) {
161
+ // If clearLanguageFromUrl fails (e.g., invalid URL), just return the current URL
162
+ console.warn("[Multilingual Manager] cleanCurrentUrl failed", error);
163
+ return currentUrl;
164
+ }
165
+ }
166
+ //# sourceMappingURL=multilingual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multilingual.js","sourceRoot":"","sources":["../../src/multilingual.ts"],"names":[],"mappings":"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"}