@lingo.dev/_spec 0.24.2
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/README.md +19 -0
- package/build/index.cjs +496 -0
- package/build/index.d.cts +396 -0
- package/build/index.d.ts +396 -0
- package/build/index.mjs +496 -0
- package/package.json +33 -0
package/README.md
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# Lingo.dev Spec
|
2
|
+
|
3
|
+
A utility package for Lingo.dev.
|
4
|
+
|
5
|
+
### Installation
|
6
|
+
|
7
|
+
```bash
|
8
|
+
npm i lingo.dev
|
9
|
+
```
|
10
|
+
|
11
|
+
### Usage
|
12
|
+
|
13
|
+
```
|
14
|
+
import {} from 'lingo.dev/spec';
|
15
|
+
```
|
16
|
+
|
17
|
+
### Documentation
|
18
|
+
|
19
|
+
[Documentation](https://lingo.dev/go/docs)
|
package/build/index.cjs
ADDED
@@ -0,0 +1,496 @@
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/locales.ts
|
2
|
+
var _zod = require('zod'); var _zod2 = _interopRequireDefault(_zod);
|
3
|
+
var localeMap = {
|
4
|
+
// Urdu (Pakistan)
|
5
|
+
ur: ["ur-PK"],
|
6
|
+
// Vietnamese (Vietnam)
|
7
|
+
vi: ["vi-VN"],
|
8
|
+
// Turkish (Turkey)
|
9
|
+
tr: ["tr-TR"],
|
10
|
+
// Tamil (India)
|
11
|
+
ta: ["ta-IN"],
|
12
|
+
// Serbian
|
13
|
+
sr: [
|
14
|
+
"sr-RS",
|
15
|
+
// Serbian (Latin)
|
16
|
+
"sr-Latn-RS",
|
17
|
+
// Serbian (Latin)
|
18
|
+
"sr-Cyrl-RS"
|
19
|
+
// Serbian (Cyrillic)
|
20
|
+
],
|
21
|
+
// Hungarian (Hungary)
|
22
|
+
hu: ["hu-HU"],
|
23
|
+
// Hebrew (Israel)
|
24
|
+
he: ["he-IL"],
|
25
|
+
// Estonian (Estonia)
|
26
|
+
et: ["et-EE"],
|
27
|
+
// Greek (Greece)
|
28
|
+
el: ["el-GR"],
|
29
|
+
// Danish (Denmark)
|
30
|
+
da: ["da-DK"],
|
31
|
+
// Azerbaijani (Azerbaijan)
|
32
|
+
az: ["az-AZ"],
|
33
|
+
// Thai (Thailand)
|
34
|
+
th: ["th-TH"],
|
35
|
+
// Swedish (Sweden)
|
36
|
+
sv: ["sv-SE"],
|
37
|
+
// English
|
38
|
+
en: [
|
39
|
+
"en-US",
|
40
|
+
// United States
|
41
|
+
"en-GB",
|
42
|
+
// United Kingdom
|
43
|
+
"en-AU",
|
44
|
+
// Australia
|
45
|
+
"en-CA"
|
46
|
+
// Canada
|
47
|
+
],
|
48
|
+
// Spanish
|
49
|
+
es: [
|
50
|
+
"es-ES",
|
51
|
+
// Spain
|
52
|
+
"es-419",
|
53
|
+
// Latin America
|
54
|
+
"es-MX",
|
55
|
+
// Mexico
|
56
|
+
"es-AR"
|
57
|
+
// Argentina
|
58
|
+
],
|
59
|
+
// French
|
60
|
+
fr: [
|
61
|
+
"fr-FR",
|
62
|
+
// France
|
63
|
+
"fr-CA",
|
64
|
+
// Canada
|
65
|
+
"fr-BE"
|
66
|
+
// Belgium
|
67
|
+
],
|
68
|
+
// Catalan (Spain)
|
69
|
+
ca: ["ca-ES"],
|
70
|
+
// Japanese (Japan)
|
71
|
+
ja: ["ja-JP"],
|
72
|
+
// German
|
73
|
+
de: [
|
74
|
+
"de-DE",
|
75
|
+
// Germany
|
76
|
+
"de-AT",
|
77
|
+
// Austria
|
78
|
+
"de-CH"
|
79
|
+
// Switzerland
|
80
|
+
],
|
81
|
+
// Portuguese
|
82
|
+
pt: [
|
83
|
+
"pt-PT",
|
84
|
+
// Portugal
|
85
|
+
"pt-BR"
|
86
|
+
// Brazil
|
87
|
+
],
|
88
|
+
// Italian
|
89
|
+
it: [
|
90
|
+
"it-IT",
|
91
|
+
// Italy
|
92
|
+
"it-CH"
|
93
|
+
// Switzerland
|
94
|
+
],
|
95
|
+
// Russian
|
96
|
+
ru: [
|
97
|
+
"ru-RU",
|
98
|
+
// Russia
|
99
|
+
"ru-BY"
|
100
|
+
// Belarus
|
101
|
+
],
|
102
|
+
// Ukrainian (Ukraine)
|
103
|
+
uk: ["uk-UA"],
|
104
|
+
// Belarusian (Belarus)
|
105
|
+
be: ["be-BY"],
|
106
|
+
// Hindi (India)
|
107
|
+
hi: ["hi-IN"],
|
108
|
+
// Chinese
|
109
|
+
zh: [
|
110
|
+
"zh-CN",
|
111
|
+
// Simplified Chinese (China)
|
112
|
+
"zh-TW",
|
113
|
+
// Traditional Chinese (Taiwan)
|
114
|
+
"zh-HK",
|
115
|
+
// Traditional Chinese (Hong Kong)
|
116
|
+
"zh-Hans",
|
117
|
+
// Simplified Chinese
|
118
|
+
"zh-Hant",
|
119
|
+
// Traditional Chinese
|
120
|
+
"zh-Hant-HK",
|
121
|
+
// Traditional Chinese (Hong Kong)
|
122
|
+
"zh-Hant-TW",
|
123
|
+
// Traditional Chinese (Taiwan)
|
124
|
+
"zh-Hant-CN",
|
125
|
+
// Traditional Chinese (China)
|
126
|
+
"zh-Hans-HK",
|
127
|
+
// Simplified Chinese (Hong Kong)
|
128
|
+
"zh-Hans-TW",
|
129
|
+
// Simplified Chinese (China)
|
130
|
+
"zh-Hans-CN"
|
131
|
+
// Simplified Chinese (China)
|
132
|
+
],
|
133
|
+
// Korean (South Korea)
|
134
|
+
ko: ["ko-KR"],
|
135
|
+
// Arabic
|
136
|
+
ar: [
|
137
|
+
"ar-EG",
|
138
|
+
// Egypt
|
139
|
+
"ar-SA",
|
140
|
+
// Saudi Arabia
|
141
|
+
"ar-AE",
|
142
|
+
// United Arab Emirates
|
143
|
+
"ar-MA"
|
144
|
+
// Morocco
|
145
|
+
],
|
146
|
+
// Bulgarian (Bulgaria)
|
147
|
+
bg: ["bg-BG"],
|
148
|
+
// Czech (Czech Republic)
|
149
|
+
cs: ["cs-CZ"],
|
150
|
+
// Dutch
|
151
|
+
nl: [
|
152
|
+
"nl-NL",
|
153
|
+
// Netherlands
|
154
|
+
"nl-BE"
|
155
|
+
// Belgium
|
156
|
+
],
|
157
|
+
// Polish (Poland)
|
158
|
+
pl: ["pl-PL"],
|
159
|
+
// Indonesian (Indonesia)
|
160
|
+
id: ["id-ID"],
|
161
|
+
// Malay (Malaysia)
|
162
|
+
ms: ["ms-MY"],
|
163
|
+
// Finnish (Finland)
|
164
|
+
fi: ["fi-FI"],
|
165
|
+
// Basque (Spain)
|
166
|
+
eu: ["eu-ES"],
|
167
|
+
// Croatian (Croatia)
|
168
|
+
hr: ["hr-HR"],
|
169
|
+
// Hebrew (Israel) - alternative code
|
170
|
+
iw: ["iw-IL"],
|
171
|
+
// Khmer (Cambodia)
|
172
|
+
km: ["km-KH"],
|
173
|
+
// Latvian (Latvia)
|
174
|
+
lv: ["lv-LV"],
|
175
|
+
// Lithuanian (Lithuania)
|
176
|
+
lt: ["lt-LT"],
|
177
|
+
// Norwegian (Norway)
|
178
|
+
no: ["no-NO"],
|
179
|
+
// Romanian (Romania)
|
180
|
+
ro: ["ro-RO"],
|
181
|
+
// Slovak (Slovakia)
|
182
|
+
sk: ["sk-SK"],
|
183
|
+
// Swahili
|
184
|
+
sw: [
|
185
|
+
"sw-TZ",
|
186
|
+
// Tanzania
|
187
|
+
"sw-KE"
|
188
|
+
// Kenya
|
189
|
+
],
|
190
|
+
// Persian (Iran)
|
191
|
+
fa: ["fa-IR"],
|
192
|
+
// Filipino (Philippines)
|
193
|
+
fil: ["fil-PH"],
|
194
|
+
// Punjabi
|
195
|
+
pa: [
|
196
|
+
"pa-IN",
|
197
|
+
// India
|
198
|
+
"pa-PK"
|
199
|
+
// Pakistan
|
200
|
+
],
|
201
|
+
// Bengali
|
202
|
+
bn: [
|
203
|
+
"bn-BD",
|
204
|
+
// Bangladesh
|
205
|
+
"bn-IN"
|
206
|
+
// India
|
207
|
+
],
|
208
|
+
// Irish (Ireland)
|
209
|
+
ga: ["ga-IE"],
|
210
|
+
// Maltese (Malta)
|
211
|
+
mt: ["mt-MT"],
|
212
|
+
// Slovenian (Slovenia)
|
213
|
+
sl: ["sl-SI"],
|
214
|
+
// Albanian (Albania)
|
215
|
+
sq: ["sq-AL"],
|
216
|
+
// Bavarian (Germany)
|
217
|
+
bar: ["bar-DE"],
|
218
|
+
// Neapolitan (Italy)
|
219
|
+
nap: ["nap-IT"],
|
220
|
+
// Afrikaans (South Africa)
|
221
|
+
af: ["af-ZA"],
|
222
|
+
// Somali (Somalia)
|
223
|
+
so: ["so-SO"],
|
224
|
+
// Tigrinya (Ethiopia)
|
225
|
+
ti: ["ti-ET"],
|
226
|
+
// Standard Moroccan Tamazight (Morocco)
|
227
|
+
zgh: ["zgh-MA"],
|
228
|
+
// Tagalog (Philippines)
|
229
|
+
tl: ["tl-PH"],
|
230
|
+
// Telugu (India)
|
231
|
+
te: ["te-IN"]
|
232
|
+
};
|
233
|
+
var localeCodesShort = Object.keys(localeMap);
|
234
|
+
var localeCodesFull = Object.values(localeMap).flat();
|
235
|
+
var localeCodesFullUnderscore = localeCodesFull.map((value) => value.replace("-", "_"));
|
236
|
+
var localeCodesFullExplicitRegion = localeCodesFull.map((value) => {
|
237
|
+
const chunks = value.split("-");
|
238
|
+
const result = [chunks[0], "-r", chunks.slice(1).join("-")].join("");
|
239
|
+
return result;
|
240
|
+
});
|
241
|
+
var localeCodes = [
|
242
|
+
...localeCodesShort,
|
243
|
+
...localeCodesFull,
|
244
|
+
...localeCodesFullUnderscore,
|
245
|
+
...localeCodesFullExplicitRegion
|
246
|
+
];
|
247
|
+
var localeCodeSchema = _zod2.default.string().refine((value) => localeCodes.includes(value), {
|
248
|
+
message: "Invalid locale code"
|
249
|
+
});
|
250
|
+
var resolveLocaleCode = (value) => {
|
251
|
+
const existingFullLocaleCode = Object.values(localeMap).flat().includes(value);
|
252
|
+
if (existingFullLocaleCode) {
|
253
|
+
return value;
|
254
|
+
}
|
255
|
+
const existingShortLocaleCode = Object.keys(localeMap).includes(value);
|
256
|
+
if (existingShortLocaleCode) {
|
257
|
+
const correspondingFullLocales = localeMap[value];
|
258
|
+
const fallbackFullLocale = correspondingFullLocales[0];
|
259
|
+
return fallbackFullLocale;
|
260
|
+
}
|
261
|
+
throw new Error(`Invalid locale code: ${value}`);
|
262
|
+
};
|
263
|
+
var getAlternativeLocaleCodes = (locale) => {
|
264
|
+
if (locale.includes("-")) {
|
265
|
+
return [locale.replace(/-/g, "_")];
|
266
|
+
} else if (locale.includes("_")) {
|
267
|
+
return [locale.replace(/_/g, "-")];
|
268
|
+
} else {
|
269
|
+
return [];
|
270
|
+
}
|
271
|
+
};
|
272
|
+
var getLocaleCodeDelimiter = (locale) => {
|
273
|
+
if (locale.includes("_")) {
|
274
|
+
return "_";
|
275
|
+
} else if (locale.includes("-")) {
|
276
|
+
return "-";
|
277
|
+
} else {
|
278
|
+
return null;
|
279
|
+
}
|
280
|
+
};
|
281
|
+
var resolveOverridenLocale = (locale, delimiter) => {
|
282
|
+
if (!delimiter) {
|
283
|
+
return locale;
|
284
|
+
}
|
285
|
+
const currentDelimiter = getLocaleCodeDelimiter(locale);
|
286
|
+
if (!currentDelimiter) {
|
287
|
+
return locale;
|
288
|
+
}
|
289
|
+
return locale.replace(currentDelimiter, delimiter);
|
290
|
+
};
|
291
|
+
|
292
|
+
// src/formats.ts
|
293
|
+
|
294
|
+
var bucketTypes = [
|
295
|
+
"android",
|
296
|
+
"csv",
|
297
|
+
"flutter",
|
298
|
+
"html",
|
299
|
+
"json",
|
300
|
+
"markdown",
|
301
|
+
"xcode-strings",
|
302
|
+
"xcode-stringsdict",
|
303
|
+
"xcode-xcstrings",
|
304
|
+
"yaml",
|
305
|
+
"yaml-root-key",
|
306
|
+
"properties",
|
307
|
+
"po",
|
308
|
+
"xliff",
|
309
|
+
"xml",
|
310
|
+
"srt",
|
311
|
+
"dato",
|
312
|
+
"compiler",
|
313
|
+
"vtt"
|
314
|
+
];
|
315
|
+
var bucketTypeSchema = _zod2.default.enum(bucketTypes);
|
316
|
+
|
317
|
+
// src/config.ts
|
318
|
+
|
319
|
+
var localeSchema = _zod2.default.object({
|
320
|
+
source: localeCodeSchema,
|
321
|
+
targets: _zod2.default.array(localeCodeSchema)
|
322
|
+
});
|
323
|
+
var createConfigDefinition = (definition) => definition;
|
324
|
+
var extendConfigDefinition = (definition, params) => {
|
325
|
+
const schema = params.createSchema(definition.schema);
|
326
|
+
const defaultValue = params.createDefaultValue(definition.defaultValue);
|
327
|
+
const upgrader = (config) => params.createUpgrader(config, schema, defaultValue);
|
328
|
+
return createConfigDefinition({
|
329
|
+
schema,
|
330
|
+
defaultValue,
|
331
|
+
parse: (rawConfig) => {
|
332
|
+
const safeResult = schema.safeParse(rawConfig);
|
333
|
+
if (safeResult.success) {
|
334
|
+
return safeResult.data;
|
335
|
+
}
|
336
|
+
const localeErrors = safeResult.error.errors.filter((issue) => issue.message.includes("Invalid locale code")).map((issue) => {
|
337
|
+
let unsupportedLocale = "";
|
338
|
+
const path = issue.path;
|
339
|
+
const config = rawConfig;
|
340
|
+
if (config.locale) {
|
341
|
+
unsupportedLocale = path.reduce((acc, key) => {
|
342
|
+
if (acc && typeof acc === "object" && key in acc) {
|
343
|
+
return acc[key];
|
344
|
+
}
|
345
|
+
return acc;
|
346
|
+
}, config.locale);
|
347
|
+
}
|
348
|
+
return `Unsupported locale: ${unsupportedLocale}`;
|
349
|
+
});
|
350
|
+
if (localeErrors.length > 0) {
|
351
|
+
throw new Error(`
|
352
|
+
${localeErrors.join("\n")}`);
|
353
|
+
}
|
354
|
+
const baseConfig = definition.parse(rawConfig);
|
355
|
+
const result = upgrader(baseConfig);
|
356
|
+
return result;
|
357
|
+
}
|
358
|
+
});
|
359
|
+
};
|
360
|
+
var configV0Schema = _zod2.default.object({
|
361
|
+
version: _zod2.default.number().default(0)
|
362
|
+
});
|
363
|
+
var configV0Definition = createConfigDefinition({
|
364
|
+
schema: configV0Schema,
|
365
|
+
defaultValue: { version: 0 },
|
366
|
+
parse: (rawConfig) => {
|
367
|
+
return configV0Schema.parse(rawConfig);
|
368
|
+
}
|
369
|
+
});
|
370
|
+
var configV1Definition = extendConfigDefinition(configV0Definition, {
|
371
|
+
createSchema: (baseSchema) => baseSchema.extend({
|
372
|
+
locale: localeSchema,
|
373
|
+
buckets: _zod2.default.record(_zod2.default.string(), bucketTypeSchema).default({}).optional()
|
374
|
+
}),
|
375
|
+
createDefaultValue: () => ({
|
376
|
+
version: 1,
|
377
|
+
locale: {
|
378
|
+
source: "en",
|
379
|
+
targets: ["es"]
|
380
|
+
},
|
381
|
+
buckets: {}
|
382
|
+
}),
|
383
|
+
createUpgrader: () => ({
|
384
|
+
version: 1,
|
385
|
+
locale: {
|
386
|
+
source: "en",
|
387
|
+
targets: ["es"]
|
388
|
+
},
|
389
|
+
buckets: {}
|
390
|
+
})
|
391
|
+
});
|
392
|
+
var configV1_1Definition = extendConfigDefinition(configV1Definition, {
|
393
|
+
createSchema: (baseSchema) => baseSchema.extend({
|
394
|
+
buckets: _zod2.default.record(
|
395
|
+
bucketTypeSchema,
|
396
|
+
_zod2.default.object({
|
397
|
+
include: _zod2.default.array(_zod2.default.string()).default([]),
|
398
|
+
exclude: _zod2.default.array(_zod2.default.string()).default([]).optional()
|
399
|
+
})
|
400
|
+
).default({})
|
401
|
+
}),
|
402
|
+
createDefaultValue: (baseDefaultValue) => ({
|
403
|
+
...baseDefaultValue,
|
404
|
+
version: 1.1,
|
405
|
+
buckets: {}
|
406
|
+
}),
|
407
|
+
createUpgrader: (oldConfig, schema) => {
|
408
|
+
const upgradedConfig = {
|
409
|
+
...oldConfig,
|
410
|
+
version: 1.1,
|
411
|
+
buckets: {}
|
412
|
+
};
|
413
|
+
if (oldConfig.buckets) {
|
414
|
+
for (const [bucketPath, bucketType] of Object.entries(oldConfig.buckets)) {
|
415
|
+
if (!upgradedConfig.buckets[bucketType]) {
|
416
|
+
upgradedConfig.buckets[bucketType] = {
|
417
|
+
include: []
|
418
|
+
};
|
419
|
+
}
|
420
|
+
_optionalChain([upgradedConfig, 'access', _ => _.buckets, 'access', _2 => _2[bucketType], 'optionalAccess', _3 => _3.include, 'access', _4 => _4.push, 'call', _5 => _5(bucketPath)]);
|
421
|
+
}
|
422
|
+
}
|
423
|
+
return upgradedConfig;
|
424
|
+
}
|
425
|
+
});
|
426
|
+
var configV1_2Definition = extendConfigDefinition(configV1_1Definition, {
|
427
|
+
createSchema: (baseSchema) => baseSchema.extend({
|
428
|
+
locale: localeSchema.extend({
|
429
|
+
extraSource: localeCodeSchema.optional()
|
430
|
+
})
|
431
|
+
}),
|
432
|
+
createDefaultValue: (baseDefaultValue) => ({
|
433
|
+
...baseDefaultValue,
|
434
|
+
version: 1.2
|
435
|
+
}),
|
436
|
+
createUpgrader: (oldConfig) => ({
|
437
|
+
...oldConfig,
|
438
|
+
version: 1.2
|
439
|
+
})
|
440
|
+
});
|
441
|
+
var bucketItemSchema = _zod2.default.object({
|
442
|
+
path: _zod2.default.string(),
|
443
|
+
delimiter: _zod2.default.union([_zod2.default.literal("-"), _zod2.default.literal("_"), _zod2.default.literal(null)]).optional()
|
444
|
+
});
|
445
|
+
var configV1_3Definition = extendConfigDefinition(configV1_2Definition, {
|
446
|
+
createSchema: (baseSchema) => baseSchema.extend({
|
447
|
+
buckets: _zod2.default.record(
|
448
|
+
bucketTypeSchema,
|
449
|
+
_zod2.default.object({
|
450
|
+
include: _zod2.default.array(_zod2.default.union([_zod2.default.string(), bucketItemSchema])).default([]),
|
451
|
+
exclude: _zod2.default.array(_zod2.default.union([_zod2.default.string(), bucketItemSchema])).default([]).optional()
|
452
|
+
})
|
453
|
+
).default({})
|
454
|
+
}),
|
455
|
+
createDefaultValue: (baseDefaultValue) => ({
|
456
|
+
...baseDefaultValue,
|
457
|
+
version: 1.3
|
458
|
+
}),
|
459
|
+
createUpgrader: (oldConfig) => ({
|
460
|
+
...oldConfig,
|
461
|
+
version: 1.3
|
462
|
+
})
|
463
|
+
});
|
464
|
+
var LATEST_CONFIG_DEFINITION = configV1_3Definition;
|
465
|
+
function parseI18nConfig(rawConfig) {
|
466
|
+
try {
|
467
|
+
const result = LATEST_CONFIG_DEFINITION.parse(rawConfig);
|
468
|
+
return result;
|
469
|
+
} catch (error) {
|
470
|
+
throw new Error(`Failed to parse config: ${error.message}`);
|
471
|
+
}
|
472
|
+
}
|
473
|
+
var defaultConfig = LATEST_CONFIG_DEFINITION.defaultValue;
|
474
|
+
|
475
|
+
|
476
|
+
|
477
|
+
|
478
|
+
|
479
|
+
|
480
|
+
|
481
|
+
|
482
|
+
|
483
|
+
|
484
|
+
|
485
|
+
|
486
|
+
|
487
|
+
|
488
|
+
|
489
|
+
|
490
|
+
|
491
|
+
|
492
|
+
|
493
|
+
|
494
|
+
|
495
|
+
|
496
|
+
exports.bucketItemSchema = bucketItemSchema; exports.bucketTypeSchema = bucketTypeSchema; exports.bucketTypes = bucketTypes; exports.configV0Definition = configV0Definition; exports.configV1Definition = configV1Definition; exports.configV1_1Definition = configV1_1Definition; exports.configV1_2Definition = configV1_2Definition; exports.configV1_3Definition = configV1_3Definition; exports.defaultConfig = defaultConfig; exports.getAlternativeLocaleCodes = getAlternativeLocaleCodes; exports.getLocaleCodeDelimiter = getLocaleCodeDelimiter; exports.localeCodeSchema = localeCodeSchema; exports.localeCodes = localeCodes; exports.localeCodesFull = localeCodesFull; exports.localeCodesFullExplicitRegion = localeCodesFullExplicitRegion; exports.localeCodesFullUnderscore = localeCodesFullUnderscore; exports.localeCodesShort = localeCodesShort; exports.localeSchema = localeSchema; exports.parseI18nConfig = parseI18nConfig; exports.resolveLocaleCode = resolveLocaleCode; exports.resolveOverridenLocale = resolveOverridenLocale;
|