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