@svelstack/translator 0.9.4 → 0.9.6
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/dist/index.js +32 -4
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -310,11 +310,21 @@ var Translator = class {
|
|
|
310
310
|
* @type {Record<string, Record<string, string>> | undefined}
|
|
311
311
|
*/
|
|
312
312
|
translations = void 0;
|
|
313
|
+
/**
|
|
314
|
+
* @private
|
|
315
|
+
* @type {Record<string, Record<string, string>> | undefined}
|
|
316
|
+
*/
|
|
317
|
+
fallbackTranslations = void 0;
|
|
313
318
|
/**
|
|
314
319
|
* @private
|
|
315
320
|
* @type {Promise<any> | undefined}
|
|
316
321
|
*/
|
|
317
322
|
_promise = void 0;
|
|
323
|
+
/**
|
|
324
|
+
* @private
|
|
325
|
+
* @type {Promise<any> | undefined}
|
|
326
|
+
*/
|
|
327
|
+
_fallbackPromise = void 0;
|
|
318
328
|
/**
|
|
319
329
|
* @private
|
|
320
330
|
* @type {string}
|
|
@@ -351,6 +361,9 @@ var Translator = class {
|
|
|
351
361
|
]);
|
|
352
362
|
}
|
|
353
363
|
this.load(this._language);
|
|
364
|
+
if (this._language !== this.options.fallbackLanguage) {
|
|
365
|
+
this.loadFallback();
|
|
366
|
+
}
|
|
354
367
|
}
|
|
355
368
|
/**
|
|
356
369
|
* Changes the current language and reloads translations.
|
|
@@ -362,6 +375,7 @@ var Translator = class {
|
|
|
362
375
|
if (this._language !== val) {
|
|
363
376
|
await this.load(val);
|
|
364
377
|
this._language = val;
|
|
378
|
+
this.changed();
|
|
365
379
|
}
|
|
366
380
|
}
|
|
367
381
|
/**
|
|
@@ -376,7 +390,7 @@ var Translator = class {
|
|
|
376
390
|
* @returns {Promise<void>} Resolves when loading is complete.
|
|
377
391
|
*/
|
|
378
392
|
async wait() {
|
|
379
|
-
await this._promise;
|
|
393
|
+
await Promise.all([this._promise, this._fallbackPromise]);
|
|
380
394
|
}
|
|
381
395
|
/**
|
|
382
396
|
* Translates a key within a given domain using optional parameters.
|
|
@@ -386,11 +400,11 @@ var Translator = class {
|
|
|
386
400
|
* @returns {string} The translated string, or a fallback if not found.
|
|
387
401
|
*/
|
|
388
402
|
trans(domain, key, parameters) {
|
|
389
|
-
var _a;
|
|
403
|
+
var _a, _b, _c;
|
|
390
404
|
if (this.translations === void 0) {
|
|
391
405
|
return "";
|
|
392
406
|
}
|
|
393
|
-
const translation = (_a = this.translations[domain]) == null ? void 0 : _a[key];
|
|
407
|
+
const translation = ((_a = this.translations[domain]) == null ? void 0 : _a[key]) ?? ((_c = (_b = this.fallbackTranslations) == null ? void 0 : _b[domain]) == null ? void 0 : _c[key]);
|
|
394
408
|
if (translation === void 0) {
|
|
395
409
|
return `${domain}.${key}`;
|
|
396
410
|
}
|
|
@@ -420,7 +434,21 @@ var Translator = class {
|
|
|
420
434
|
} else {
|
|
421
435
|
this.translations = dictionary;
|
|
422
436
|
}
|
|
423
|
-
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Loads fallback translations.
|
|
440
|
+
* @private
|
|
441
|
+
* @returns {Promise<void>} Resolves when the fallback translations are loaded.
|
|
442
|
+
*/
|
|
443
|
+
async loadFallback() {
|
|
444
|
+
const fallbackDictionary = this.options.dictionaries[this.options.fallbackLanguage];
|
|
445
|
+
if (typeof fallbackDictionary === "function") {
|
|
446
|
+
const promise = this._fallbackPromise = fallbackDictionary();
|
|
447
|
+
this.fallbackTranslations = await promise;
|
|
448
|
+
this._fallbackPromise = void 0;
|
|
449
|
+
} else {
|
|
450
|
+
this.fallbackTranslations = fallbackDictionary;
|
|
451
|
+
}
|
|
424
452
|
}
|
|
425
453
|
/**
|
|
426
454
|
* Determines the appropriate language to use.
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@svelstack/translator",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.6",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"build": "tsup && npm run prepack",
|
|
6
6
|
"prepack": "publint",
|
|
7
7
|
"check": "tsc --noEmit",
|
|
8
|
-
"test": "vitest"
|
|
8
|
+
"test": "vitest run",
|
|
9
|
+
"test:watch": "vitest"
|
|
9
10
|
},
|
|
10
11
|
"type": "module",
|
|
11
12
|
"main": "./dist/index.js",
|