@osovitny/anatoly 3.16.12 → 3.16.14

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.
@@ -31,6 +31,8 @@ export class LocalizationService {
31
31
  //i10n
32
32
  supportedLanguages = ['en', 'ru', 'es'];
33
33
  defaultLanguage = 'en';
34
+ //Events
35
+ onLangChange = null;
34
36
  constructor(translate) {
35
37
  this.translate = translate;
36
38
  this.setSupportedLanguages(this.supportedLanguages);
@@ -50,11 +52,26 @@ export class LocalizationService {
50
52
  const lang = browserLang.match(/en|ru|es/) ? browserLang : this.defaultLanguage;
51
53
  //dates
52
54
  this.dateFnsLocale = { locale: enUS };
55
+ //Events
56
+ this.onLangChange = this.translate.onLangChange.subscribe((event) => {
57
+ console.log('Lang Changed');
58
+ });
53
59
  return lang;
54
60
  }
61
+ //Languages
62
+ setSupportedLanguages(languages) {
63
+ this.translate.addLangs(languages);
64
+ }
65
+ setDefaultLanguage(lang) {
66
+ this.translate.setDefaultLang(lang);
67
+ }
68
+ setLanguage(language) {
69
+ this.translate.use(language);
70
+ }
55
71
  getBrowserLanguage() {
56
72
  return this.translate.getBrowserLang();
57
73
  }
74
+ //Dates
58
75
  getDatefnsLocale() {
59
76
  let dfnLocale;
60
77
  switch (this.getBrowserLanguage()) {
@@ -66,15 +83,7 @@ export class LocalizationService {
66
83
  }
67
84
  return dfnLocale;
68
85
  }
69
- setDefaultLanguage(lang) {
70
- this.translate.setDefaultLang(lang);
71
- }
72
- setSupportedLanguages(languages) {
73
- this.translate.addLangs(languages);
74
- }
75
- updateLanguage(language) {
76
- this.translate.use(language);
77
- }
86
+ //getLocalized...
78
87
  getLocalizedValue(key, params) {
79
88
  const value = this.translate.instant(key);
80
89
  if (!params || params.length === 0) {
@@ -188,4 +197,4 @@ export class LocalizationService {
188
197
  providedIn: 'root'
189
198
  }]
190
199
  }], function () { return [{ type: i1.TranslateService }]; }, null); })();
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixNQUFNO0FBQ04sT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxVQUFVO0FBQ1YsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsZ0RBQWdEO0FBQ2hELDBEQUEwRDtBQUMxRCxPQUFPLElBQUksTUFBTSx1QkFBdUIsQ0FBQztBQUV6QyxLQUFLO0FBQ0wsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFLOUMsTUFBTSxPQUFPLG1CQUFtQjtJQU9WO0lBTnBCLGFBQWEsQ0FBTTtJQUVuQixNQUFNO0lBQ04sa0JBQWtCLEdBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFFdkIsWUFBb0IsU0FBMkI7UUFBM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDN0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLE1BQU0sQ0FBQyxHQUFXLEVBQUUsSUFBSTtRQUM5QixPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFVBQVUsS0FBSyxFQUFFLE1BQU07WUFDcEQsT0FBTyxP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UHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDA1IE1heSAyMDIwXHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuLy9Ob2RlXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuLy9EYXRlIGZuc1xyXG5pbXBvcnQgeyBmb3JtYXQsIGlzVmFsaWQsIGZvcm1hdERpc3RhbmNlVG9Ob3csIGZvcm1hdERpc3RhbmNlIH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5pbXBvcnQgeyB1dGNUb1pvbmVkVGltZSB9IGZyb20gJ2RhdGUtZm5zLXR6JztcclxuXHJcbi8vIFZhZGltT1M6IElFMTEtZml4LiBET04nVCBjaGFuZ2UgbmV4dCBpbXBvcnRzIVxyXG4vLyBSZWFzb246IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9pc3N1ZXMvNjY2XHJcbmltcG9ydCBlblVTIGZyb20gJ2RhdGUtZm5zL2xvY2FsZS9lbi1VUyc7XHJcblxyXG4vL0FwcFxyXG5pbXBvcnQgeyBDb252ZXJ0IH0gZnJvbSAnLi4vY29udmVydHMvY29udmVydCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGl6YXRpb25TZXJ2aWNlIHtcclxuICBkYXRlRm5zTG9jYWxlOiBhbnk7XHJcblxyXG4gIC8vaTEwblxyXG4gIHN1cHBvcnRlZExhbmd1YWdlczogYW55ID0gWydlbicsICdydScsICdlcyddO1xyXG4gIGRlZmF1bHRMYW5ndWFnZSA9ICdlbic7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLnNldFN1cHBvcnRlZExhbmd1YWdlcyh0aGlzLnN1cHBvcnRlZExhbmd1YWdlcyk7XHJcbiAgICB0aGlzLnNldERlZmF1bHRMYW5ndWFnZSh0aGlzLmRlZmF1bHRMYW5ndWFnZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdChzdHI6IHN0cmluZywgYXJncykge1xyXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC97KFxcZCspfS9nLCBmdW5jdGlvbiAobWF0Y2gsIG51bWJlcikge1xyXG4gICAgICByZXR1cm4gdHlwZW9mIGFyZ3NbbnVtYmVyXSAhPSAndW5kZWZpbmVkJ1xyXG4gICAgICAgID8gYXJnc1tudW1iZXJdXHJcbiAgICAgICAgOiBtYXRjaFxyXG4gICAgICAgIDtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIGNvbmZpZ3VyZVNldHRpbmdzKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IHN0cmluZyB7XHJcbiAgICAvL2kxMG5cclxuICAgIGNvbnN0IGJyb3dzZXJMYW5nID0gdHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCk7XHJcbiAgICBjb25zdCBsYW5nID0gYnJvd3NlckxhbmcubWF0Y2goL2VufHJ1fGVzLykgPyBicm93c2VyTGFuZyA6IHRoaXMuZGVmYXVsdExhbmd1YWdlO1xyXG5cclxuICAgIC8vZGF0ZXNcclxuICAgIHRoaXMuZGF0ZUZuc0xvY2FsZSA9IHsgbG9jYWxlOiBlblVTIH07XHJcblxyXG4gICAgcmV0dXJuIGxhbmc7XHJcbiAgfVxyXG5cclxuICBnZXRCcm93c2VyTGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXRCcm93c2VyTGFuZygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF0ZWZuc0xvY2FsZSgpOiBhbnkge1xyXG4gICAgbGV0IGRmbkxvY2FsZTogYW55O1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5nZXRCcm93c2VyTGFuZ3VhZ2UoKSkge1xyXG4gICAgICBjYXNlICdlbic6XHJcbiAgICAgICAgZGZuTG9jYWxlID0geyBsb2NhbGU6IGVuVVMgfTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgZGZuTG9jYWxlID0geyBsb2NhbGU6IGVuVVMgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGZuTG9jYWxlO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdExhbmd1YWdlKGxhbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcobGFuZyk7XHJcbiAgfVxyXG5cclxuICBzZXRTdXBwb3J0ZWRMYW5ndWFnZXMobGFuZ3VhZ2VzOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2xhdGUuYWRkTGFuZ3MobGFuZ3VhZ2VzKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUxhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLnVzZShsYW5ndWFnZSk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGl6ZWRWYWx1ZShrZXk6IHN0cmluZywgcGFyYW1zPzogYW55W10pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGtleSk7XHJcblxyXG4gICAgaWYgKCFwYXJhbXMgfHwgcGFyYW1zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0KHZhbHVlLCBwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9jYWxpemVkRGF0ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoaXNWYWxpZChuZXcgRGF0ZShrZXkpKSkge1xyXG4gICAgICByZXR1cm4gZm9ybWF0KG5ldyBEYXRlKGtleSksICdkZC5NTS55eXl5JywgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJJbnZhbGlkIERhdGVcIjtcclxuICB9XHJcblxyXG4gIGdldExvY2FsaXplZERhdGVUaW1lKGtleTogc3RyaW5nKSB7XHJcbiAgICBsZXQgZGF0ZVZhbHVlID0gbmV3IERhdGUoa2V5KTtcclxuICAgIGlmIChpc1ZhbGlkKGRhdGVWYWx1ZSkpIHtcclxuICAgICAgbGV0IGxvY2FsRGF0ZSA9IENvbnZlcnQudG9Mb2NhbGl6ZWREYXRlVGltZShkYXRlVmFsdWUpO1xyXG4gICAgICByZXR1cm4gZm9ybWF0KGxvY2FsRGF0ZSwgJ2RkLk1NLnl5eXkgSEg6bW0nLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIkludmFsaWQgRGF0ZVwiO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9jYWxpemVkRGlzdGFuY2VJbldvcmRzKGVuZGVkRGF0ZTogc3RyaW5nLCBzdGFydGVkRGF0ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChpc1ZhbGlkKG5ldyBEYXRlKGVuZGVkRGF0ZSkpICYmIGlzVmFsaWQobmV3IERhdGUoc3RhcnRlZERhdGUpKSkge1xyXG4gICAgICByZXR1cm4gZm9ybWF0RGlzdGFuY2UobmV3IERhdGUoZW5kZWREYXRlKSwgbmV3IERhdGUoc3RhcnRlZERhdGUpLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIkludmFsaWQgRGF0ZVwiO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9jYWxpemVkRGlzdGFuY2VUb05vd0luV29yZHMoZGF0ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChpc1ZhbGlkKG5ldyBEYXRlKGRhdGUpKSkge1xyXG4gICAgICByZXR1cm4gZm9ybWF0RGlzdGFuY2VUb05vdyhuZXcgRGF0ZShkYXRlKSwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJJbnZhbGlkIERhdGVcIjtcclxuICB9XHJcblxyXG4gIC8vVVRDIE9wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBnZXRVVENUb0xvY2FsaXplZERhdGUoa2V5OiBzdHJpbmcpIHtcclxuICAgIGxldCBicm93c2VyVGltZVpvbmUgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmU7XHJcblxyXG4gICAgaWYgKGtleSkge1xyXG4gICAgICBpZiAoa2V5LmluZGV4T2YoXCJUXCIpID09IC0xKSB7XHJcbiAgICAgICAga2V5ID0ga2V5LnJlcGxhY2UoXCIgXCIsIFwiVFwiKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoa2V5LmluZGV4T2YoXCJaXCIpID09IC0xKSB7XHJcbiAgICAgICAga2V5ID0ga2V5ICsgXCJaXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoYnJvd3NlclRpbWVab25lKSB7XHJcbiAgICAgIGxldCBsb2NhbERhdGVUaW1lID0gdXRjVG9ab25lZFRpbWUoa2V5LCBicm93c2VyVGltZVpvbmUpO1xyXG4gICAgICByZXR1cm4gZm9ybWF0KGxvY2FsRGF0ZVRpbWUsICdkZC5NTS55eXl5JywgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gZm9ybWF0KG5ldyBEYXRlKGtleSksICdkZC5NTS55eXl5JywgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFVUQ1RvTG9jYWxpemVkRGF0ZVRpbWUoa2V5OiBzdHJpbmcpIHtcclxuICAgIGxldCBicm93c2VyVGltZVpvbmUgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmU7XHJcblxyXG4gICAgaWYgKGtleSkge1xyXG4gICAgICBpZiAoa2V5LmluZGV4T2YoXCJUXCIpID09IC0xKSB7XHJcbiAgICAgICAga2V5ID0ga2V5LnJlcGxhY2UoXCIgXCIsIFwiVFwiKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoa2V5LmluZGV4T2YoXCJaXCIpID09IC0xKSB7XHJcbiAgICAgICAga2V5ID0ga2V5ICsgXCJaXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoYnJvd3NlclRpbWVab25lKSB7XHJcbiAgICAgIGxldCBsb2NhbERhdGVUaW1lID0gdXRjVG9ab25lZFRpbWUoa2V5LCBicm93c2VyVGltZVpvbmUpO1xyXG4gICAgICByZXR1cm4gZm9ybWF0KGxvY2FsRGF0ZVRpbWUsICdkZC5NTS55eXl5IEhIOm1tJywgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gZm9ybWF0KG5ldyBEYXRlKGtleSksICdkZC5NTS55eXl5IEhIOm1tJywgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vaHR0cHM6Ly9kYXRlLWZucy5vcmcvdjEuMzAuMS9kb2NzL2Rpc3RhbmNlSW5Xb3Jkc1xyXG4gIGdldFVUQ1RvTG9jYWxpemVkRGlzdGFuY2VUb05vd0luV29yZHMoZGF0ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGRhdGUgPSB0aGlzLnNhZmVVdGNUb1pvbmVkVGltZShkYXRlKTtcclxuXHJcbiAgICBpZiAoaXNWYWxpZChuZXcgRGF0ZShkYXRlKSkpIHtcclxuICAgICAgcmV0dXJuIGZvcm1hdERpc3RhbmNlVG9Ob3cobmV3IERhdGUoZGF0ZSksIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2FmZVV0Y1RvWm9uZWRUaW1lKGRhdGUpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdCA9IGRhdGU7XHJcblxyXG4gICAgdHJ5XHJcbiAgICB7XHJcbiAgICAgIGlmIChkYXRlKSB7XHJcbiAgICAgICAgaWYgKGRhdGUuaW5kZXhPZihcIlRcIikgPT0gLTEpIHtcclxuICAgICAgICAgIGRhdGUgPSBkYXRlLnJlcGxhY2UoXCIgXCIsIFwiVFwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChkYXRlLmluZGV4T2YoXCJaXCIpID09IC0xKSB7XHJcbiAgICAgICAgICBkYXRlID0gZGF0ZSArIFwiWlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGJyb3dzZXJUaW1lWm9uZSA9IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTtcclxuICAgICAgaWYgKGJyb3dzZXJUaW1lWm9uZSkge1xyXG4gICAgICAgIHJlc3VsdCA9IHV0Y1RvWm9uZWRUaW1lKGRhdGUsIGJyb3dzZXJUaW1lWm9uZSkudG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXN1bHQgPSBuZXcgRGF0ZShkYXRlKS50b1N0cmluZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaFxyXG4gICAge1xyXG4gICAgICBpZiAoZGF0ZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiVVRDIHRvIExvY2FsIGNvbnZlcnNpb24gZmFpbGVkIGZvciA6XCIgKyBkYXRlLnRvU3RyaW5nKCkpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxufVxyXG5cclxuIl19
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixNQUFNO0FBQ04sT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxVQUFVO0FBQ1YsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsZ0RBQWdEO0FBQ2hELDBEQUEwRDtBQUMxRCxPQUFPLElBQUksTUFBTSx1QkFBdUIsQ0FBQztBQUV6QyxLQUFLO0FBQ0wsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFLOUMsTUFBTSxPQUFPLG1CQUFtQjtJQVVWO0lBVHBCLGFBQWEsQ0FBTTtJQUVuQixNQUFNO0lBQ04sa0JBQWtCLEdBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFFdkIsUUFBUTtJQUNBLFlBQVksR0FBaUIsSUFBSSxDQUFDO0lBRTFDLFlBQW9CLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzdDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTyxNQUFNLENBQUMsR0FBVyxFQUFFLElBQUk7UUFDOUIsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUs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c0MsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTthQUN0RTtTQUNGO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs2RUEzTVUsbUJBQW1CO2dFQUFuQixtQkFBbUIsV0FBbkIsbUJBQW1CLG1CQUZsQixNQUFNOzt1RkFFUCxtQkFBbUI7Y0FIL0IsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDA1IE1heSAyMDIwXHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuLy9Ob2RlXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UsIExhbmdDaGFuZ2VFdmVudCB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuLy9EYXRlIGZuc1xyXG5pbXBvcnQgeyBmb3JtYXQsIGlzVmFsaWQsIGZvcm1hdERpc3RhbmNlVG9Ob3csIGZvcm1hdERpc3RhbmNlIH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5pbXBvcnQgeyB1dGNUb1pvbmVkVGltZSB9IGZyb20gJ2RhdGUtZm5zLXR6JztcclxuXHJcbi8vIFZhZGltT1M6IElFMTEtZml4LiBET04nVCBjaGFuZ2UgbmV4dCBpbXBvcnRzIVxyXG4vLyBSZWFzb246IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9pc3N1ZXMvNjY2XHJcbmltcG9ydCBlblVTIGZyb20gJ2RhdGUtZm5zL2xvY2FsZS9lbi1VUyc7XHJcblxyXG4vL0FwcFxyXG5pbXBvcnQgeyBDb252ZXJ0IH0gZnJvbSAnLi4vY29udmVydHMvY29udmVydCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGl6YXRpb25TZXJ2aWNlIHtcclxuICBkYXRlRm5zTG9jYWxlOiBhbnk7XHJcblxyXG4gIC8vaTEwblxyXG4gIHN1cHBvcnRlZExhbmd1YWdlczogYW55ID0gWydlbicsICdydScsICdlcyddO1xyXG4gIGRlZmF1bHRMYW5ndWFnZSA9ICdlbic7XHJcblxyXG4gIC8vRXZlbnRzXHJcbiAgcHJpdmF0ZSBvbkxhbmdDaGFuZ2U6IFN1YnNjcmlwdGlvbiA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLnNldFN1cHBvcnRlZExhbmd1YWdlcyh0aGlzLnN1cHBvcnRlZExhbmd1YWdlcyk7XHJcbiAgICB0aGlzLnNldERlZmF1bHRMYW5ndWFnZSh0aGlzLmRlZmF1bHRMYW5ndWFnZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdChzdHI6IHN0cmluZywgYXJncykge1xyXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC97KFxcZCspfS9nLCBmdW5jdGlvbiAobWF0Y2gsIG51bWJlcikge1xyXG4gICAgICByZXR1cm4gdHlwZW9mIGFyZ3NbbnVtYmVyXSAhPSAndW5kZWZpbmVkJ1xyXG4gICAgICAgID8gYXJnc1tudW1iZXJdXHJcbiAgICAgICAgOiBtYXRjaFxyXG4gICAgICAgIDtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIGNvbmZpZ3VyZVNldHRpbmdzKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IHN0cmluZyB7XHJcbiAgICAvL2kxMG5cclxuICAgIGNvbnN0IGJyb3dzZXJMYW5nID0gdHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCk7XHJcbiAgICBjb25zdCBsYW5nID0gYnJvd3NlckxhbmcubWF0Y2goL2VufHJ1fGVzLykgPyBicm93c2VyTGFuZyA6IHRoaXMuZGVmYXVsdExhbmd1YWdlO1xyXG5cclxuICAgIC8vZGF0ZXNcclxuICAgIHRoaXMuZGF0ZUZuc0xvY2FsZSA9IHsgbG9jYWxlOiBlblVTIH07XHJcblxyXG4gICAgLy9FdmVudHNcclxuICAgIHRoaXMub25MYW5nQ2hhbmdlID0gdGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQ6IExhbmdDaGFuZ2VFdmVudCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZygnTGFuZyBDaGFuZ2VkJyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbGFuZztcclxuICB9XHJcblxyXG4gIC8vTGFuZ3VhZ2VzXHJcbiAgc2V0U3VwcG9ydGVkTGFuZ3VhZ2VzKGxhbmd1YWdlczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLmFkZExhbmdzKGxhbmd1YWdlcyk7XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0TGFuZ3VhZ2UobGFuZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5zZXREZWZhdWx0TGFuZyhsYW5nKTtcclxuICB9XHJcblxyXG4gIHNldExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLnVzZShsYW5ndWFnZSk7XHJcbiAgfVxyXG5cclxuICBnZXRCcm93c2VyTGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXRCcm93c2VyTGFuZygpO1xyXG4gIH1cclxuXHJcbiAgLy9EYXRlc1xyXG4gIGdldERhdGVmbnNMb2NhbGUoKTogYW55IHtcclxuICAgIGxldCBkZm5Mb2NhbGU6IGFueTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuZ2V0QnJvd3Nlckxhbmd1YWdlKCkpIHtcclxuICAgICAgY2FzZSAnZW4nOlxyXG4gICAgICAgIGRmbkxvY2FsZSA9IHsgbG9jYWxlOiBlblVTIH07XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGRmbkxvY2FsZSA9IHsgbG9jYWxlOiBlblVTIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRmbkxvY2FsZTtcclxuICB9XHJcblxyXG4gIC8vZ2V0TG9jYWxpemVkLi4uXHJcbiAgZ2V0TG9jYWxpemVkVmFsdWUoa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueVtdKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChrZXkpO1xyXG5cclxuICAgIGlmICghcGFyYW1zIHx8IHBhcmFtcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmZvcm1hdCh2YWx1ZSwgcGFyYW1zKTtcclxuICB9XHJcblxyXG4gIGdldExvY2FsaXplZERhdGUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKGlzVmFsaWQobmV3IERhdGUoa2V5KSkpIHtcclxuICAgICAgcmV0dXJuIGZvcm1hdChuZXcgRGF0ZShrZXkpLCAnZGQuTU0ueXl5eScsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGl6ZWREYXRlVGltZShrZXk6IHN0cmluZykge1xyXG4gICAgbGV0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKGtleSk7XHJcbiAgICBpZiAoaXNWYWxpZChkYXRlVmFsdWUpKSB7XHJcbiAgICAgIGxldCBsb2NhbERhdGUgPSBDb252ZXJ0LnRvTG9jYWxpemVkRGF0ZVRpbWUoZGF0ZVZhbHVlKTtcclxuICAgICAgcmV0dXJuIGZvcm1hdChsb2NhbERhdGUsICdkZC5NTS55eXl5IEhIOm1tJywgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJJbnZhbGlkIERhdGVcIjtcclxuICB9XHJcblxyXG4gIGdldExvY2FsaXplZERpc3RhbmNlSW5Xb3JkcyhlbmRlZERhdGU6IHN0cmluZywgc3RhcnRlZERhdGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoaXNWYWxpZChuZXcgRGF0ZShlbmRlZERhdGUpKSAmJiBpc1ZhbGlkKG5ldyBEYXRlKHN0YXJ0ZWREYXRlKSkpIHtcclxuICAgICAgcmV0dXJuIGZvcm1hdERpc3RhbmNlKG5ldyBEYXRlKGVuZGVkRGF0ZSksIG5ldyBEYXRlKHN0YXJ0ZWREYXRlKSwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJJbnZhbGlkIERhdGVcIjtcclxuICB9XHJcblxyXG4gIGdldExvY2FsaXplZERpc3RhbmNlVG9Ob3dJbldvcmRzKGRhdGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoaXNWYWxpZChuZXcgRGF0ZShkYXRlKSkpIHtcclxuICAgICAgcmV0dXJuIGZvcm1hdERpc3RhbmNlVG9Ob3cobmV3IERhdGUoZGF0ZSksIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgfVxyXG5cclxuICAvL1VUQyBPcGVyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgZ2V0VVRDVG9Mb2NhbGl6ZWREYXRlKGtleTogc3RyaW5nKSB7XHJcbiAgICBsZXQgYnJvd3NlclRpbWVab25lID0gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xyXG5cclxuICAgIGlmIChrZXkpIHtcclxuICAgICAgaWYgKGtleS5pbmRleE9mKFwiVFwiKSA9PSAtMSkge1xyXG4gICAgICAgIGtleSA9IGtleS5yZXBsYWNlKFwiIFwiLCBcIlRcIik7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGtleS5pbmRleE9mKFwiWlwiKSA9PSAtMSkge1xyXG4gICAgICAgIGtleSA9IGtleSArIFwiWlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGJyb3dzZXJUaW1lWm9uZSkge1xyXG4gICAgICBsZXQgbG9jYWxEYXRlVGltZSA9IHV0Y1RvWm9uZWRUaW1lKGtleSwgYnJvd3NlclRpbWVab25lKTtcclxuICAgICAgcmV0dXJuIGZvcm1hdChsb2NhbERhdGVUaW1lLCAnZGQuTU0ueXl5eScsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZvcm1hdChuZXcgRGF0ZShrZXkpLCAnZGQuTU0ueXl5eScsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRVVENUb0xvY2FsaXplZERhdGVUaW1lKGtleTogc3RyaW5nKSB7XHJcbiAgICBsZXQgYnJvd3NlclRpbWVab25lID0gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xyXG5cclxuICAgIGlmIChrZXkpIHtcclxuICAgICAgaWYgKGtleS5pbmRleE9mKFwiVFwiKSA9PSAtMSkge1xyXG4gICAgICAgIGtleSA9IGtleS5yZXBsYWNlKFwiIFwiLCBcIlRcIik7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGtleS5pbmRleE9mKFwiWlwiKSA9PSAtMSkge1xyXG4gICAgICAgIGtleSA9IGtleSArIFwiWlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGJyb3dzZXJUaW1lWm9uZSkge1xyXG4gICAgICBsZXQgbG9jYWxEYXRlVGltZSA9IHV0Y1RvWm9uZWRUaW1lKGtleSwgYnJvd3NlclRpbWVab25lKTtcclxuICAgICAgcmV0dXJuIGZvcm1hdChsb2NhbERhdGVUaW1lLCAnZGQuTU0ueXl5eSBISDptbScsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZvcm1hdChuZXcgRGF0ZShrZXkpLCAnZGQuTU0ueXl5eSBISDptbScsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL2h0dHBzOi8vZGF0ZS1mbnMub3JnL3YxLjMwLjEvZG9jcy9kaXN0YW5jZUluV29yZHNcclxuICBnZXRVVENUb0xvY2FsaXplZERpc3RhbmNlVG9Ob3dJbldvcmRzKGRhdGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBkYXRlID0gdGhpcy5zYWZlVXRjVG9ab25lZFRpbWUoZGF0ZSk7XHJcblxyXG4gICAgaWYgKGlzVmFsaWQobmV3IERhdGUoZGF0ZSkpKSB7XHJcbiAgICAgIHJldHVybiBmb3JtYXREaXN0YW5jZVRvTm93KG5ldyBEYXRlKGRhdGUpLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIkludmFsaWQgRGF0ZVwiO1xyXG4gIH1cclxuXHJcbiAgc2FmZVV0Y1RvWm9uZWRUaW1lKGRhdGUpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdCA9IGRhdGU7XHJcblxyXG4gICAgdHJ5XHJcbiAgICB7XHJcbiAgICAgIGlmIChkYXRlKSB7XHJcbiAgICAgICAgaWYgKGRhdGUuaW5kZXhPZihcIlRcIikgPT0gLTEpIHtcclxuICAgICAgICAgIGRhdGUgPSBkYXRlLnJlcGxhY2UoXCIgXCIsIFwiVFwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChkYXRlLmluZGV4T2YoXCJaXCIpID09IC0xKSB7XHJcbiAgICAgICAgICBkYXRlID0gZGF0ZSArIFwiWlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGJyb3dzZXJUaW1lWm9uZSA9IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTtcclxuICAgICAgaWYgKGJyb3dzZXJUaW1lWm9uZSkge1xyXG4gICAgICAgIHJlc3VsdCA9IHV0Y1RvWm9uZWRUaW1lKGRhdGUsIGJyb3dzZXJUaW1lWm9uZSkudG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXN1bHQgPSBuZXcgRGF0ZShkYXRlKS50b1N0cmluZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaFxyXG4gICAge1xyXG4gICAgICBpZiAoZGF0ZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiVVRDIHRvIExvY2FsIGNvbnZlcnNpb24gZmFpbGVkIGZvciA6XCIgKyBkYXRlLnRvU3RyaW5nKCkpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxufVxyXG5cclxuIl19
@@ -489,6 +489,8 @@ class LocalizationService {
489
489
  //i10n
490
490
  supportedLanguages = ['en', 'ru', 'es'];
491
491
  defaultLanguage = 'en';
492
+ //Events
493
+ onLangChange = null;
492
494
  constructor(translate) {
493
495
  this.translate = translate;
494
496
  this.setSupportedLanguages(this.supportedLanguages);
@@ -508,11 +510,26 @@ class LocalizationService {
508
510
  const lang = browserLang.match(/en|ru|es/) ? browserLang : this.defaultLanguage;
509
511
  //dates
510
512
  this.dateFnsLocale = { locale: enUS };
513
+ //Events
514
+ this.onLangChange = this.translate.onLangChange.subscribe((event) => {
515
+ console.log('Lang Changed');
516
+ });
511
517
  return lang;
512
518
  }
519
+ //Languages
520
+ setSupportedLanguages(languages) {
521
+ this.translate.addLangs(languages);
522
+ }
523
+ setDefaultLanguage(lang) {
524
+ this.translate.setDefaultLang(lang);
525
+ }
526
+ setLanguage(language) {
527
+ this.translate.use(language);
528
+ }
513
529
  getBrowserLanguage() {
514
530
  return this.translate.getBrowserLang();
515
531
  }
532
+ //Dates
516
533
  getDatefnsLocale() {
517
534
  let dfnLocale;
518
535
  switch (this.getBrowserLanguage()) {
@@ -524,15 +541,7 @@ class LocalizationService {
524
541
  }
525
542
  return dfnLocale;
526
543
  }
527
- setDefaultLanguage(lang) {
528
- this.translate.setDefaultLang(lang);
529
- }
530
- setSupportedLanguages(languages) {
531
- this.translate.addLangs(languages);
532
- }
533
- updateLanguage(language) {
534
- this.translate.use(language);
535
- }
544
+ //getLocalized...
536
545
  getLocalizedValue(key, params) {
537
546
  const value = this.translate.instant(key);
538
547
  if (!params || params.length === 0) {