@libs-ui/utils 0.2.355-3 → 0.2.355-5
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/esm2022/language.mjs +16 -4
- package/fesm2022/libs-ui-utils.mjs +15 -3
- package/fesm2022/libs-ui-utils.mjs.map +1 -1
- package/language.d.ts +4 -2
- package/package.json +2 -2
package/esm2022/language.mjs
CHANGED
|
@@ -26,8 +26,14 @@ export class UtilsLanguageConstants {
|
|
|
26
26
|
static CEB = 'ceb'; // Tiếng Cebuano (Philippines)
|
|
27
27
|
static JV = 'jv'; // Tiếng Java (Indonesia)
|
|
28
28
|
static SU = 'su'; // Tiếng Sundanese (Indonesia)
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
static defaultLang = () => {
|
|
30
|
+
const browserLang = 'navigator' in window ? navigator.language || UtilsLanguageConstants.EN : UtilsLanguageConstants.EN;
|
|
31
|
+
const lang = browserLang.split('-')[0] || UtilsLanguageConstants.EN;
|
|
32
|
+
if (UtilsLanguageConstants.isSupported(lang)) {
|
|
33
|
+
return lang;
|
|
34
|
+
}
|
|
35
|
+
return UtilsLanguageConstants.EN;
|
|
36
|
+
};
|
|
31
37
|
// Danh sách các ngôn ngữ được hỗ trợ
|
|
32
38
|
static supportedLanguages = new Set([
|
|
33
39
|
UtilsLanguageConstants.VI,
|
|
@@ -58,13 +64,19 @@ export class UtilsLanguageConstants {
|
|
|
58
64
|
UtilsLanguageConstants.JV,
|
|
59
65
|
UtilsLanguageConstants.SU,
|
|
60
66
|
]);
|
|
67
|
+
static setSupportedLanguages(languages) {
|
|
68
|
+
if (languages.length === 0) {
|
|
69
|
+
throw new Error('Languages is required');
|
|
70
|
+
}
|
|
71
|
+
this.supportedLanguages = new Set(languages);
|
|
72
|
+
}
|
|
61
73
|
/**
|
|
62
74
|
* Kiểm tra xem ngôn ngữ đầu vào có được hỗ trợ không
|
|
63
75
|
* @param lang Mã ngôn ngữ cần kiểm tra
|
|
64
76
|
* @returns True nếu được hỗ trợ, False nếu không
|
|
65
77
|
*/
|
|
66
78
|
static isSupported(lang) {
|
|
67
|
-
return
|
|
79
|
+
return this.supportedLanguages.has(lang);
|
|
68
80
|
}
|
|
69
81
|
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9sYW5ndWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sc0JBQXNCO0lBQzFCLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsYUFBYTtJQUMvQixNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFlBQVk7SUFDOUIsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxhQUFhO0lBQy9CLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsWUFBWTtJQUM5QixNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLG9CQUFvQjtJQUN0QyxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLHlCQUF5QjtJQUMzQyxNQUFNLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLHlCQUF5QjtJQUNqRCxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLGFBQWE7SUFDL0IsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxZQUFZO0lBQzlCLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsWUFBWTtJQUM5QixNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVU7SUFDNUIsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxtQkFBbUI7SUFDckMsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxhQUFhO0lBQy9CLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsa0JBQWtCO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsaUJBQWlCO0lBQ25DLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsY0FBYztJ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O0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBWTtRQUNwQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRZUEVfTEFOR1VBR0VfU1VQUE9SVCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgVXRpbHNMYW5ndWFnZUNvbnN0YW50cyB7XG4gIHB1YmxpYyBzdGF0aWMgVkkgPSAndmknOyAvLyBUaeG6v25nIFZp4buHdFxuICBwdWJsaWMgc3RhdGljIEVOID0gJ2VuJzsgLy8gVGnhur9uZyBBbmhcbiAgcHVibGljIHN0YXRpYyBGUiA9ICdmcic7IC8vIFRp4bq/bmcgUGjDoXBcbiAgcHVibGljIHN0YXRpYyBERSA9ICdkZSc7IC8vIFRp4bq/bmcgxJDhu6ljXG4gIHB1YmxpYyBzdGF0aWMgRVMgPSAnZXMnOyAvLyBUaeG6v25nIFTDonkgQmFuIE5oYVxuICBwdWJsaWMgc3RhdGljIFpIID0gJ3poJzsgLy8gVGnhur9uZyBUcnVuZyAoR2nhuqNuIHRo4buDKVxuICBwdWJsaWMgc3RhdGljIFpIX1RXID0gJ3poLVRXJzsgLy8gVGnhur9uZyBUcnVuZyAoUGjhu5NuIHRo4buDKVxuICBwdWJsaWMgc3RhdGljIEpBID0gJ2phJzsgLy8gVGnhur9uZyBOaOG6rXRcbiAgcHVibGljIHN0YXRpYyBLTyA9ICdrbyc7IC8vIFRp4bq/bmcgSMOgblxuICBwdWJsaWMgc3RhdGljIFJVID0gJ3J1JzsgLy8gVGnhur9uZyBOZ2FcbiAgcHVibGljIHN0YXRpYyBJVCA9ICdpdCc7IC8vIFRp4bq/bmcgw51cbiAgcHVibGljIHN0YXRpYyBQVCA9ICdwdCc7IC8vIFRp4bq/bmcgQuG7kyDEkMOgbyBOaGFcbiAgcHVibGljIHN0YXRpYyBUSCA9ICd0aCc7IC8vIFRp4bq/bmcgVGjDoWlcbiAgcHVibGljIHN0YXRpYyBJRCA9ICdpZCc7IC8vIFRp4bq/bmcgSW5kb25lc2lhXG4gIHB1YmxpYyBzdGF0aWMgTVMgPSAnbXMnOyAvLyBUaeG6v25nIE1hbGF5c2lhXG4gIHB1YmxpYyBzdGF0aWMgQVIgPSAnYXInOyAvLyBUaeG6v25nIOG6oiBS4bqtcFxuICBwdWJsaWMgc3RhdGljIEhJID0gJ2hpJzsgLy8gVGnhur9uZyBIaW5kaVxuICBwdWJsaWMgc3RhdGljIEJOID0gJ2JuJzsgLy8gVGnhur9uZyBCZW5nYWxcbiAgcHVibGljIHN0YXRpYyBUUiA9ICd0cic7IC8vIFRp4bq/bmcgVGjhu5UgTmjEqSBL4buzXG4gIHB1YmxpYyBzdGF0aWMgTkwgPSAnbmwnOyAvLyBUaeG6v25nIEjDoCBMYW5cbiAgcHVibGljIHN0YXRpYyBLTSA9ICdrbSc7IC8vIFRp4bq/bmcgS2htZXIgKENhbXB1Y2hpYSlcbiAgcHVibGljIHN0YXRpYyBMTyA9ICdsbyc7IC8vIFRp4bq/bmcgTMOgb1xuICBwdWJsaWMgc3RhdGljIE1ZID0gJ215JzsgLy8gVGnhur9uZyBNaeG6v24gxJBp4buHbiAoTXlhbm1hcilcbiAgcHVibGljIHN0YXRpYyBUTCA9ICd0bCc7IC8vIFRp4bq/bmcgVGFnYWxvZyAoUGhpbGlwcGluZXMpXG4gIHB1YmxpYyBzdGF0aWMgQ0VCID0gJ2NlYic7IC8vIFRp4bq/bmcgQ2VidWFubyAoUGhpbGlwcGluZXMpXG4gIHB1YmxpYyBzdGF0aWMgSlYgPSAnanYnOyAvLyBUaeG6v25nIEphdmEgKEluZG9uZXNpYSlcbiAgcHVibGljIHN0YXRpYyBTVSA9ICdzdSc7IC8vIFRp4bq/bmcgU3VuZGFuZXNlIChJbmRvbmVzaWEpXG5cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0TGFuZyA9ICgpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IGJyb3dzZXJMYW5nID0gJ25hdmlnYXRvcicgaW4gd2luZG93ID8gbmF2aWdhdG9yLmxhbmd1YWdlIHx8IFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuRU4gOiBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLkVOO1xuICAgIGNvbnN0IGxhbmcgPSBicm93c2VyTGFuZy5zcGxpdCgnLScpWzBdIHx8IFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuRU47XG4gICAgaWYgKFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuaXNTdXBwb3J0ZWQobGFuZykpIHtcbiAgICAgIHJldHVybiBsYW5nIGFzIFRZUEVfTEFOR1VBR0VfU1VQUE9SVDtcbiAgICB9XG4gICAgcmV0dXJuIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuRU4gYXMgVFlQRV9MQU5HVUFHRV9TVVBQT1JUO1xuICB9O1xuXG4gIC8vIERhbmggc8OhY2ggY8OhYyBuZ8O0biBuZ+G7ryDEkcaw4bujYyBo4buXIHRy4bujXG4gIHByaXZhdGUgc3RhdGljIHN1cHBvcnRlZExhbmd1YWdlcyA9IG5ldyBTZXQoW1xuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuVkksXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5FTixcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLkZSLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuREUsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5FUyxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLlpILFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuWkhfVFcsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5KQSxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLktPLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuUlUsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5JVCxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLlBULFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuVEgsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5JRCxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLk1TLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuQVIsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5ISSxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLkJOLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuVFIsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5OTCxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLktNLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuTE8sXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5NWSxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLlRMLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuQ0VCLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuSlYsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5TVSxcbiAgXSk7XG5cbiAgcHVibGljIHN0YXRpYyBzZXRTdXBwb3J0ZWRMYW5ndWFnZXMobGFuZ3VhZ2VzOiBBcnJheTxUWVBFX0xBTkdVQUdFX1NVUFBPUlQ+KSB7XG4gICAgaWYgKGxhbmd1YWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTGFuZ3VhZ2VzIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIHRoaXMuc3VwcG9ydGVkTGFuZ3VhZ2VzID0gbmV3IFNldChsYW5ndWFnZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEtp4buDbSB0cmEgeGVtIG5nw7RuIG5n4buvIMSR4bqndSB2w6BvIGPDsyDEkcaw4bujYyBo4buXIHRy4bujIGtow7RuZ1xuICAgKiBAcGFyYW0gbGFuZyBNw6MgbmfDtG4gbmfhu68gY+G6p24ga2nhu4NtIHRyYVxuICAgKiBAcmV0dXJucyBUcnVlIG7hur91IMSRxrDhu6NjIGjhu5cgdHLhu6MsIEZhbHNlIG7hur91IGtow7RuZ1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc1N1cHBvcnRlZChsYW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdXBwb3J0ZWRMYW5ndWFnZXMuaGFzKGxhbmcpO1xuICB9XG59XG4iXX0=
|
|
@@ -429,8 +429,14 @@ class UtilsLanguageConstants {
|
|
|
429
429
|
static CEB = 'ceb'; // Tiếng Cebuano (Philippines)
|
|
430
430
|
static JV = 'jv'; // Tiếng Java (Indonesia)
|
|
431
431
|
static SU = 'su'; // Tiếng Sundanese (Indonesia)
|
|
432
|
-
|
|
433
|
-
|
|
432
|
+
static defaultLang = () => {
|
|
433
|
+
const browserLang = 'navigator' in window ? navigator.language || UtilsLanguageConstants.EN : UtilsLanguageConstants.EN;
|
|
434
|
+
const lang = browserLang.split('-')[0] || UtilsLanguageConstants.EN;
|
|
435
|
+
if (UtilsLanguageConstants.isSupported(lang)) {
|
|
436
|
+
return lang;
|
|
437
|
+
}
|
|
438
|
+
return UtilsLanguageConstants.EN;
|
|
439
|
+
};
|
|
434
440
|
// Danh sách các ngôn ngữ được hỗ trợ
|
|
435
441
|
static supportedLanguages = new Set([
|
|
436
442
|
UtilsLanguageConstants.VI,
|
|
@@ -461,13 +467,19 @@ class UtilsLanguageConstants {
|
|
|
461
467
|
UtilsLanguageConstants.JV,
|
|
462
468
|
UtilsLanguageConstants.SU,
|
|
463
469
|
]);
|
|
470
|
+
static setSupportedLanguages(languages) {
|
|
471
|
+
if (languages.length === 0) {
|
|
472
|
+
throw new Error('Languages is required');
|
|
473
|
+
}
|
|
474
|
+
this.supportedLanguages = new Set(languages);
|
|
475
|
+
}
|
|
464
476
|
/**
|
|
465
477
|
* Kiểm tra xem ngôn ngữ đầu vào có được hỗ trợ không
|
|
466
478
|
* @param lang Mã ngôn ngữ cần kiểm tra
|
|
467
479
|
* @returns True nếu được hỗ trợ, False nếu không
|
|
468
480
|
*/
|
|
469
481
|
static isSupported(lang) {
|
|
470
|
-
return
|
|
482
|
+
return this.supportedLanguages.has(lang);
|
|
471
483
|
}
|
|
472
484
|
}
|
|
473
485
|
|