@libs-ui/utils 0.2.355-2 → 0.2.355-4

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.
@@ -27,7 +27,15 @@ export class UtilsLanguageConstants {
27
27
  static JV = 'jv'; // Tiếng Java (Indonesia)
28
28
  static SU = 'su'; // Tiếng Sundanese (Indonesia)
29
29
  // Ngôn ngữ mặc định
30
- static defaultLang = UtilsLanguageConstants.VI;
30
+ static browserLang = 'navigator' in window ? navigator.language || UtilsLanguageConstants.VI : UtilsLanguageConstants.VI;
31
+ static defaultLang = () => {
32
+ const browserLang = 'navigator' in window ? navigator.language || UtilsLanguageConstants.VI : UtilsLanguageConstants.VI;
33
+ const lang = browserLang.split('-')[0] || UtilsLanguageConstants.VI;
34
+ if (UtilsLanguageConstants.isSupported(lang)) {
35
+ return lang;
36
+ }
37
+ return UtilsLanguageConstants.VI;
38
+ };
31
39
  // Danh sách các ngôn ngữ được hỗ trợ
32
40
  static supportedLanguages = new Set([
33
41
  UtilsLanguageConstants.VI,
@@ -58,13 +66,19 @@ export class UtilsLanguageConstants {
58
66
  UtilsLanguageConstants.JV,
59
67
  UtilsLanguageConstants.SU,
60
68
  ]);
69
+ static setSupportedLanguages(languages) {
70
+ if (languages.length === 0) {
71
+ throw new Error('Languages is required');
72
+ }
73
+ this.supportedLanguages = new Set(languages);
74
+ }
61
75
  /**
62
76
  * Kiểm tra xem ngôn ngữ đầu vào có được hỗ trợ không
63
77
  * @param lang Mã ngôn ngữ cần kiểm tra
64
78
  * @returns True nếu được hỗ trợ, False nếu không
65
79
  */
66
80
  static isSupported(lang) {
67
- return UtilsLanguageConstants.supportedLanguages.has(lang);
81
+ return this.supportedLanguages.has(lang);
68
82
  }
69
83
  }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9sYW5ndWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sc0JBQXNCO0lBQzFCLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsYUFBYTtJQUMvQixNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFlBQVk7SUFDOUIsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxhQUFhO0lBQy9CLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsWUFBWTtJQUM5QixNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLG9CQUFvQjtJQUN0QyxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLHlCQUF5QjtJQUMzQyxNQUFNLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLHlCQUF5QjtJQUNqRCxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLGFBQWE7SUFDL0IsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxZQUFZO0lBQzlCLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsWUFBWTtJQUM5QixNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVU7SUFDNUIsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxtQkFBbUI7SUFDckMsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxhQUFhO0lBQy9CLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsa0JBQWtCO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsaUJBQWlCO0lBQ25DLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsY0FBYztJQUNoQyxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLGNBQWM7SUFDaEMsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxlQUFlO0lBQ2pDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsbUJBQW1CO0lBQ3JDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsZUFBZTtJQUNqQyxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLDBCQUEwQjtJQUM1QyxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFlBQVk7SUFDOUIsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyw0QkFBNEI7SUFDOUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyw4QkFBOEI7SUFDaEQsTUFBTSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyw4QkFBOEI7SUFDbEQsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyx5QkFBeUI7SUFDM0MsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyw4QkFBOEI7SUFFdkQsb0JBQW9CO0lBQ2IsTUFBTSxDQUFDLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7SUFFdEQscUNBQXFDO0lBQzlCLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUN6QyxzQkFBc0IsQ0FBQyxFQUFFO1FBQ3pCLHNCQUFzQixDQUFDLEVBQUU7UUFDekIsc0JBQXNCLENBQUMsRUFBRTtRQUN6QixzQkFBc0IsQ0FBQyxFQUFFO1FBQ3pCLHNCQUFzQixDQUFDLEVBQUU7UUFDekIsc0JBQXNCLENBQUMsRUFBRTtRQUN6QixzQkFBc0IsQ0FBQyxLQUFLO1FBQzVCLHNCQUFzQixDQUFDLEVBQUU7UUFDekIsc0JBQXNCLENBQUMsRUFBRTtRQUN6QixzQkFBc0IsQ0FBQyxFQUFFO1FBQ3pCLHNCQUFzQixDQUFDLEVBQUU7UUFDekIsc0JBQXNCLENBQUMsRUFBRTtRQUN6QixzQkFBc0IsQ0FBQyxFQUFFO1FBQ3pCLHNCQUFzQixDQUFDLEVBQUU7UUFDekIsc0JBQXNCLENBQUMsRUFBRTtRQUN6QixzQkFBc0IsQ0FBQyxFQUFFO1FBQ3pCLHNCQUFzQixDQUFDLEVBQUU7UUFDekIsc0JBQXNCLENBQUMsRUFBRTtRQUN6QixzQkFBc0IsQ0FBQyxFQUFFO1FBQ3pCLHNCQUFzQixDQUFDLEVBQUU7UUFDekIsc0JBQXNCLENBQUMsRUFBRTtRQUN6QixzQkFBc0IsQ0FBQyxFQUFFO1FBQ3pCLHNCQUFzQixDQUFDLEVBQUU7UUFDekIsc0JBQXNCLENBQUMsRUFBRTtRQUN6QixzQkFBc0IsQ0FBQyxHQUFHO1FBQzFCLHNCQUFzQixDQUFDLEVBQUU7UUFDekIsc0JBQXNCLENBQUMsRUFBRTtLQUMxQixDQUFDLENBQUM7SUFFSDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFZO1FBQ3BDLE9BQU8sc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVXRpbHNMYW5ndWFnZUNvbnN0YW50cyB7XG4gIHB1YmxpYyBzdGF0aWMgVkkgPSAndmknOyAvLyBUaeG6v25nIFZp4buHdFxuICBwdWJsaWMgc3RhdGljIEVOID0gJ2VuJzsgLy8gVGnhur9uZyBBbmhcbiAgcHVibGljIHN0YXRpYyBGUiA9ICdmcic7IC8vIFRp4bq/bmcgUGjDoXBcbiAgcHVibGljIHN0YXRpYyBERSA9ICdkZSc7IC8vIFRp4bq/bmcgxJDhu6ljXG4gIHB1YmxpYyBzdGF0aWMgRVMgPSAnZXMnOyAvLyBUaeG6v25nIFTDonkgQmFuIE5oYVxuICBwdWJsaWMgc3RhdGljIFpIID0gJ3poJzsgLy8gVGnhur9uZyBUcnVuZyAoR2nhuqNuIHRo4buDKVxuICBwdWJsaWMgc3RhdGljIFpIX1RXID0gJ3poLVRXJzsgLy8gVGnhur9uZyBUcnVuZyAoUGjhu5NuIHRo4buDKVxuICBwdWJsaWMgc3RhdGljIEpBID0gJ2phJzsgLy8gVGnhur9uZyBOaOG6rXRcbiAgcHVibGljIHN0YXRpYyBLTyA9ICdrbyc7IC8vIFRp4bq/bmcgSMOgblxuICBwdWJsaWMgc3RhdGljIFJVID0gJ3J1JzsgLy8gVGnhur9uZyBOZ2FcbiAgcHVibGljIHN0YXRpYyBJVCA9ICdpdCc7IC8vIFRp4bq/bmcgw51cbiAgcHVibGljIHN0YXRpYyBQVCA9ICdwdCc7IC8vIFRp4bq/bmcgQuG7kyDEkMOgbyBOaGFcbiAgcHVibGljIHN0YXRpYyBUSCA9ICd0aCc7IC8vIFRp4bq/bmcgVGjDoWlcbiAgcHVibGljIHN0YXRpYyBJRCA9ICdpZCc7IC8vIFRp4bq/bmcgSW5kb25lc2lhXG4gIHB1YmxpYyBzdGF0aWMgTVMgPSAnbXMnOyAvLyBUaeG6v25nIE1hbGF5c2lhXG4gIHB1YmxpYyBzdGF0aWMgQVIgPSAnYXInOyAvLyBUaeG6v25nIOG6oiBS4bqtcFxuICBwdWJsaWMgc3RhdGljIEhJID0gJ2hpJzsgLy8gVGnhur9uZyBIaW5kaVxuICBwdWJsaWMgc3RhdGljIEJOID0gJ2JuJzsgLy8gVGnhur9uZyBCZW5nYWxcbiAgcHVibGljIHN0YXRpYyBUUiA9ICd0cic7IC8vIFRp4bq/bmcgVGjhu5UgTmjEqSBL4buzXG4gIHB1YmxpYyBzdGF0aWMgTkwgPSAnbmwnOyAvLyBUaeG6v25nIEjDoCBMYW5cbiAgcHVibGljIHN0YXRpYyBLTSA9ICdrbSc7IC8vIFRp4bq/bmcgS2htZXIgKENhbXB1Y2hpYSlcbiAgcHVibGljIHN0YXRpYyBMTyA9ICdsbyc7IC8vIFRp4bq/bmcgTMOgb1xuICBwdWJsaWMgc3RhdGljIE1ZID0gJ215JzsgLy8gVGnhur9uZyBNaeG6v24gxJBp4buHbiAoTXlhbm1hcilcbiAgcHVibGljIHN0YXRpYyBUTCA9ICd0bCc7IC8vIFRp4bq/bmcgVGFnYWxvZyAoUGhpbGlwcGluZXMpXG4gIHB1YmxpYyBzdGF0aWMgQ0VCID0gJ2NlYic7IC8vIFRp4bq/bmcgQ2VidWFubyAoUGhpbGlwcGluZXMpXG4gIHB1YmxpYyBzdGF0aWMgSlYgPSAnanYnOyAvLyBUaeG6v25nIEphdmEgKEluZG9uZXNpYSlcbiAgcHVibGljIHN0YXRpYyBTVSA9ICdzdSc7IC8vIFRp4bq/bmcgU3VuZGFuZXNlIChJbmRvbmVzaWEpXG5cbiAgLy8gTmfDtG4gbmfhu68gbeG6t2MgxJHhu4tuaFxuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRMYW5nID0gVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5WSTtcblxuICAvLyBEYW5oIHPDoWNoIGPDoWMgbmfDtG4gbmfhu68gxJHGsOG7o2MgaOG7lyB0cuG7o1xuICBwdWJsaWMgc3RhdGljIHN1cHBvcnRlZExhbmd1YWdlcyA9IG5ldyBTZXQoW1xuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuVkksXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5FTixcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLkZSLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuREUsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5FUyxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLlpILFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuWkhfVFcsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5KQSxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLktPLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuUlUsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5JVCxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLlBULFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuVEgsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5JRCxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLk1TLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuQVIsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5ISSxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLkJOLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuVFIsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5OTCxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLktNLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuTE8sXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5NWSxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLlRMLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuQ0VCLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuSlYsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5TVSxcbiAgXSk7XG5cbiAgLyoqXG4gICAqIEtp4buDbSB0cmEgeGVtIG5nw7RuIG5n4buvIMSR4bqndSB2w6BvIGPDsyDEkcaw4bujYyBo4buXIHRy4bujIGtow7RuZ1xuICAgKiBAcGFyYW0gbGFuZyBNw6MgbmfDtG4gbmfhu68gY+G6p24ga2nhu4NtIHRyYVxuICAgKiBAcmV0dXJucyBUcnVlIG7hur91IMSRxrDhu6NjIGjhu5cgdHLhu6MsIEZhbHNlIG7hur91IGtow7RuZ1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc1N1cHBvcnRlZChsYW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5zdXBwb3J0ZWRMYW5ndWFnZXMuaGFzKGxhbmcpO1xuICB9XG59XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9sYW5ndWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sc0JBQXNCO0lBQzFCLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsYUFBYTtJQUMvQixNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFlBQVk7SUFDOUIsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxhQUFhO0lBQy9CLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsWUFBWTtJQUM5QixNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLG9CQUFvQjtJQUN0QyxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLHlCQUF5QjtJQUMzQyxNQUFNLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLHlCQUF5QjtJQUNqRCxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLGFBQWE7SUFDL0IsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxZQUFZO0lBQzlCLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsWUFBWTtJQUM5QixNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVU7SUFDNUIsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxtQkFBbUI7SUFDckMsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxhQUFhO0lBQy9CLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsa0JBQWtCO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsaUJBQWlCO0lBQ25DLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsY0FBYztJ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LEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQVk7UUFDcEMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUWVBFX0xBTkdVQUdFX1NVUFBPUlQgfSBmcm9tICdAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMge1xuICBwdWJsaWMgc3RhdGljIFZJID0gJ3ZpJzsgLy8gVGnhur9uZyBWaeG7h3RcbiAgcHVibGljIHN0YXRpYyBFTiA9ICdlbic7IC8vIFRp4bq/bmcgQW5oXG4gIHB1YmxpYyBzdGF0aWMgRlIgPSAnZnInOyAvLyBUaeG6v25nIFBow6FwXG4gIHB1YmxpYyBzdGF0aWMgREUgPSAnZGUnOyAvLyBUaeG6v25nIMSQ4bupY1xuICBwdWJsaWMgc3RhdGljIEVTID0gJ2VzJzsgLy8gVGnhur9uZyBUw6J5IEJhbiBOaGFcbiAgcHVibGljIHN0YXRpYyBaSCA9ICd6aCc7IC8vIFRp4bq/bmcgVHJ1bmcgKEdp4bqjbiB0aOG7gylcbiAgcHVibGljIHN0YXRpYyBaSF9UVyA9ICd6aC1UVyc7IC8vIFRp4bq/bmcgVHJ1bmcgKFBo4buTbiB0aOG7gylcbiAgcHVibGljIHN0YXRpYyBKQSA9ICdqYSc7IC8vIFRp4bq/bmcgTmjhuq10XG4gIHB1YmxpYyBzdGF0aWMgS08gPSAna28nOyAvLyBUaeG6v25nIEjDoG5cbiAgcHVibGljIHN0YXRpYyBSVSA9ICdydSc7IC8vIFRp4bq/bmcgTmdhXG4gIHB1YmxpYyBzdGF0aWMgSVQgPSAnaXQnOyAvLyBUaeG6v25nIMOdXG4gIHB1YmxpYyBzdGF0aWMgUFQgPSAncHQnOyAvLyBUaeG6v25nIELhu5MgxJDDoG8gTmhhXG4gIHB1YmxpYyBzdGF0aWMgVEggPSAndGgnOyAvLyBUaeG6v25nIFRow6FpXG4gIHB1YmxpYyBzdGF0aWMgSUQgPSAnaWQnOyAvLyBUaeG6v25nIEluZG9uZXNpYVxuICBwdWJsaWMgc3RhdGljIE1TID0gJ21zJzsgLy8gVGnhur9uZyBNYWxheXNpYVxuICBwdWJsaWMgc3RhdGljIEFSID0gJ2FyJzsgLy8gVGnhur9uZyDhuqIgUuG6rXBcbiAgcHVibGljIHN0YXRpYyBISSA9ICdoaSc7IC8vIFRp4bq/bmcgSGluZGlcbiAgcHVibGljIHN0YXRpYyBCTiA9ICdibic7IC8vIFRp4bq/bmcgQmVuZ2FsXG4gIHB1YmxpYyBzdGF0aWMgVFIgPSAndHInOyAvLyBUaeG6v25nIFRo4buVIE5oxKkgS+G7s1xuICBwdWJsaWMgc3RhdGljIE5MID0gJ25sJzsgLy8gVGnhur9uZyBIw6AgTGFuXG4gIHB1YmxpYyBzdGF0aWMgS00gPSAna20nOyAvLyBUaeG6v25nIEtobWVyIChDYW1wdWNoaWEpXG4gIHB1YmxpYyBzdGF0aWMgTE8gPSAnbG8nOyAvLyBUaeG6v25nIEzDoG9cbiAgcHVibGljIHN0YXRpYyBNWSA9ICdteSc7IC8vIFRp4bq/bmcgTWnhur9uIMSQaeG7h24gKE15YW5tYXIpXG4gIHB1YmxpYyBzdGF0aWMgVEwgPSAndGwnOyAvLyBUaeG6v25nIFRhZ2Fsb2cgKFBoaWxpcHBpbmVzKVxuICBwdWJsaWMgc3RhdGljIENFQiA9ICdjZWInOyAvLyBUaeG6v25nIENlYnVhbm8gKFBoaWxpcHBpbmVzKVxuICBwdWJsaWMgc3RhdGljIEpWID0gJ2p2JzsgLy8gVGnhur9uZyBKYXZhIChJbmRvbmVzaWEpXG4gIHB1YmxpYyBzdGF0aWMgU1UgPSAnc3UnOyAvLyBUaeG6v25nIFN1bmRhbmVzZSAoSW5kb25lc2lhKVxuXG4gIC8vIE5nw7RuIG5n4buvIG3hurdjIMSR4buLbmhcbiAgcHVibGljIHN0YXRpYyBicm93c2VyTGFuZyA9ICduYXZpZ2F0b3InIGluIHdpbmRvdyA/IG5hdmlnYXRvci5sYW5ndWFnZSB8fCBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLlZJIDogVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5WSTtcblxuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRMYW5nID0gKCk6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgYnJvd3NlckxhbmcgPSAnbmF2aWdhdG9yJyBpbiB3aW5kb3cgPyBuYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5WSSA6IFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuVkk7XG4gICAgY29uc3QgbGFuZyA9IGJyb3dzZXJMYW5nLnNwbGl0KCctJylbMF0gfHwgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5WSTtcbiAgICBpZiAoVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5pc1N1cHBvcnRlZChsYW5nKSkge1xuICAgICAgcmV0dXJuIGxhbmcgYXMgVFlQRV9MQU5HVUFHRV9TVVBQT1JUO1xuICAgIH1cbiAgICByZXR1cm4gVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5WSSBhcyBUWVBFX0xBTkdVQUdFX1NVUFBPUlQ7XG4gIH07XG5cbiAgLy8gRGFuaCBzw6FjaCBjw6FjIG5nw7RuIG5n4buvIMSRxrDhu6NjIGjhu5cgdHLhu6NcbiAgcHJpdmF0ZSBzdGF0aWMgc3VwcG9ydGVkTGFuZ3VhZ2VzID0gbmV3IFNldChbXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5WSSxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLkVOLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuRlIsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5ERSxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLkVTLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuWkgsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5aSF9UVyxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLkpBLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuS08sXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5SVSxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLklULFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuUFQsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5USCxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLklELFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuTVMsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5BUixcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLkhJLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuQk4sXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5UUixcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLk5MLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuS00sXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5MTyxcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLk1ZLFxuICAgIFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuVEwsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5DRUIsXG4gICAgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5KVixcbiAgICBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLlNVLFxuICBdKTtcblxuICBwdWJsaWMgc3RhdGljIHNldFN1cHBvcnRlZExhbmd1YWdlcyhsYW5ndWFnZXM6IEFycmF5PFRZUEVfTEFOR1VBR0VfU1VQUE9SVD4pIHtcbiAgICBpZiAobGFuZ3VhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdMYW5ndWFnZXMgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgdGhpcy5zdXBwb3J0ZWRMYW5ndWFnZXMgPSBuZXcgU2V0KGxhbmd1YWdlcyk7XG4gIH1cblxuICAvKipcbiAgICogS2nhu4NtIHRyYSB4ZW0gbmfDtG4gbmfhu68gxJHhuqd1IHbDoG8gY8OzIMSRxrDhu6NjIGjhu5cgdHLhu6Mga2jDtG5nXG4gICAqIEBwYXJhbSBsYW5nIE3DoyBuZ8O0biBuZ+G7ryBj4bqnbiBraeG7g20gdHJhXG4gICAqIEByZXR1cm5zIFRydWUgbuG6v3UgxJHGsOG7o2MgaOG7lyB0cuG7oywgRmFsc2UgbuG6v3Uga2jDtG5nXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzU3VwcG9ydGVkKGxhbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN1cHBvcnRlZExhbmd1YWdlcy5oYXMobGFuZyk7XG4gIH1cbn1cbiJdfQ==
@@ -430,7 +430,15 @@ class UtilsLanguageConstants {
430
430
  static JV = 'jv'; // Tiếng Java (Indonesia)
431
431
  static SU = 'su'; // Tiếng Sundanese (Indonesia)
432
432
  // Ngôn ngữ mặc định
433
- static defaultLang = UtilsLanguageConstants.VI;
433
+ static browserLang = 'navigator' in window ? navigator.language || UtilsLanguageConstants.VI : UtilsLanguageConstants.VI;
434
+ static defaultLang = () => {
435
+ const browserLang = 'navigator' in window ? navigator.language || UtilsLanguageConstants.VI : UtilsLanguageConstants.VI;
436
+ const lang = browserLang.split('-')[0] || UtilsLanguageConstants.VI;
437
+ if (UtilsLanguageConstants.isSupported(lang)) {
438
+ return lang;
439
+ }
440
+ return UtilsLanguageConstants.VI;
441
+ };
434
442
  // Danh sách các ngôn ngữ được hỗ trợ
435
443
  static supportedLanguages = new Set([
436
444
  UtilsLanguageConstants.VI,
@@ -461,13 +469,19 @@ class UtilsLanguageConstants {
461
469
  UtilsLanguageConstants.JV,
462
470
  UtilsLanguageConstants.SU,
463
471
  ]);
472
+ static setSupportedLanguages(languages) {
473
+ if (languages.length === 0) {
474
+ throw new Error('Languages is required');
475
+ }
476
+ this.supportedLanguages = new Set(languages);
477
+ }
464
478
  /**
465
479
  * Kiểm tra xem ngôn ngữ đầu vào có được hỗ trợ không
466
480
  * @param lang Mã ngôn ngữ cần kiểm tra
467
481
  * @returns True nếu được hỗ trợ, False nếu không
468
482
  */
469
483
  static isSupported(lang) {
470
- return UtilsLanguageConstants.supportedLanguages.has(lang);
484
+ return this.supportedLanguages.has(lang);
471
485
  }
472
486
  }
473
487