@tilde-nlp/ngx-translate 9.1.37 → 9.1.39

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.
@@ -295,6 +295,8 @@ const i18n_de = {
295
295
  "E_413102_TITLE": "Fehler beim Hochladen der Datei",
296
296
  "E_413102": "Die hochgeladene Datei ist zu groß",
297
297
  "E_400103": "Übersetzung entsprechend des Inhalts gefiltert",
298
+ "E_429_TITLE": "Tilde MT ist stark nachgefragt.",
299
+ "E_429": "Wir bearbeiten aktuell eine sehr hohe Anzahl an Anfragen. Vielen Dank für Ihre Geduld!",
298
300
  "TRANSLATION_FAILED_TITLE": "Übersetzung fehlgeschlagen",
299
301
  "TRANSLATION_FAILED": "Ein unerwarteter Fehler ist aufgetreten.",
300
302
  "TRANSLATION_FAILED_SUPPORT": " Falls das Problem weiterhin besteht, wenden Sie sich an den <a href=\"mailto:{{email}}\"><strong>Support</strong></a>.",
@@ -733,6 +735,8 @@ const i18n_en = {
733
735
  "E_413102_TITLE": "Uploading file error",
734
736
  "E_413102": "Uploaded file is too large",
735
737
  "E_400103": "Translation filtered due to content",
738
+ "E_429_TITLE": "Tilde MT is in high demand.",
739
+ "E_429": "We’re handling a high volume of requests right now. Thank you for your patience!",
736
740
  "TRANSLATION_FAILED_TITLE": "Translation failed",
737
741
  "TRANSLATION_FAILED": "An unexpected error occurred.",
738
742
  "TRANSLATION_FAILED_SUPPORT": " If the problem continues, contact <a href=\"mailto:{{email}}\"><strong>support</strong></a>.",
@@ -1417,6 +1421,8 @@ const i18n_et = {
1417
1421
  "E_23_SUPPORT": " Võtke ühendust <a href=\"mailto:{{email}}\"><strong>kasutajatoega</strong></a>.",
1418
1422
  "E_41": "Esitatud on tundmatu terminikorpuse ID. Terminikorpus peab olema seotud masintõlkemootoriga",
1419
1423
  "E_504": "Toimingu ajalõpp.",
1424
+ "E_429_TITLE": "Tilde MT järele on suur nõudlus.",
1425
+ "E_429": "Tegeleme praegu suure hulga päringutega. Täname teid kannatlikkuse eest!",
1420
1426
  "UANUTHORIZED_401": "Teil pole masintõlke kasutamise luba.",
1421
1427
  "UANUTHORIZED_401_SUPPORT": " Võtke ühendust <a href=\"mailto:{{email}}\"><strong> toega</strong></a>.",
1422
1428
  "E_UNKNOWN_FILE_TYPE": "Tundmatu failitüüp.",
@@ -2517,6 +2523,8 @@ const i18n_lt = {
2517
2523
  "E_UNAUTHORIZED": "Dokumento vertimas atmestas.",
2518
2524
  "E_11": "Pasiektas dienos vertimo limitas.",
2519
2525
  "E_11_SUPPORT": " Jei norite padidinti dienos limitą, kreipkitės į <a href=\"mailto:{{email}}\"><strong>palaikymo tarnybą</strong></a>.",
2526
+ "E_429_TITLE": "„Tilde MT“ paklausa smarkiai išaugusi.",
2527
+ "E_429": "Šiuo metu apdorojame labai daug užklausų. Dėkojame už kantrybę",
2520
2528
  "FILE_TRANSLATION_SUBSTATUS": {
2521
2529
  "BAD_FILE_ERROR_TITLE": "Nepavyko išversti failo",
2522
2530
  "BAD_FILE_ERROR": "Failas sugadintas ir jo negalima išversti. Patikrinkite failą ir bandykite dar kartą.",
@@ -3032,6 +3040,8 @@ const i18n_lv = {
3032
3040
  "E_413102_TITLE": "Faila augšupielādes kļūda",
3033
3041
  "E_413102": "Augšupielādētais fails ir pārāk liels",
3034
3042
  "E_400103": "Tulkojums ir filtrēts satura dēļ",
3043
+ "E_429_TITLE": "Ļoti daudzi vēlas izmantot Tilde MT!",
3044
+ "E_429": "Šobrīd apstrādājam ļoti daudz pieprasījumu. Paldies par pacietību!",
3035
3045
  "FILE_TRANSLATION_LIMITS": {
3036
3046
  "E_429001_TITLE": "Sasniegts failu tulkošanas ierobežojums",
3037
3047
  "E_429001": "Esat sasniedzis savu {{quotaFileLimit}} iztulkoto failu mēneša ierobežojumu. Lai turpinātu failu tulkošanu, <a href='{{pricingUrl}}' target='_blank'>jauniniet plānu</a>."
@@ -3620,6 +3630,8 @@ const i18n_pl = {
3620
3630
  "E_23_SUPPORT": " Skontaktuj się z <a href=\"mailto:{{email}}\"><strong>działem wsparcia</strong></a>.",
3621
3631
  "E_41": "Podano nieznane ID korpusu terminów. Korpus terminów musi być połączony z silnikiem tłumaczenia maszynowego",
3622
3632
  "E_504": "Czynność przekroczyła limit czasu.",
3633
+ "E_429_TITLE": "Tilde MT cieszy się dużym zainteresowaniem.",
3634
+ "E_429": "Obecnie mamy zwiększoną liczbę zapytań. Dziękujemy za cierpliwość!",
3623
3635
  "UANUTHORIZED_401": "Nie masz uprawnień do korzystania z tłumaczenia maszynowego.",
3624
3636
  "UANUTHORIZED_401_SUPPORT": " Skontaktuj się ze<a href=\"mailto:{{email}}\"><strong> wsparciem</strong></a>.",
3625
3637
  "E_UNKNOWN_FILE_TYPE": "Nieznany typ pliku.",
@@ -8506,6 +8518,7 @@ class TldTranslateTextService {
8506
8518
  return this.targetParagraphs.map(line => line.originalText).join("\n");
8507
8519
  }
8508
8520
  _onClear = new Subject();
8521
+ displayedMessageCodes = [];
8509
8522
  previousText;
8510
8523
  previousDetectedLang;
8511
8524
  urlToTranslate;
@@ -8533,6 +8546,7 @@ class TldTranslateTextService {
8533
8546
  standbyEngineNotificationErrorKey = '21';
8534
8547
  standbySystemRetranslationTimeout = 3000;
8535
8548
  engineTermCollectionNotFoundErrorKey = '404201';
8549
+ tooManyRequestsErrorKey = '429';
8536
8550
  /** Whether progress indicator should be shown. This value must be set to true only if configured time has passed. */
8537
8551
  _shouldShowProgressIndicator = false;
8538
8552
  get shouldShowProgressIndicator() { return this._shouldShowProgressIndicator; }
@@ -8744,6 +8758,12 @@ class TldTranslateTextService {
8744
8758
  }, this.standbySystemRetranslationTimeout);
8745
8759
  throw err;
8746
8760
  }
8761
+ else if (error?.error?.code === this.tooManyRequestsErrorKey) {
8762
+ if (!this.displayedMessageCodes.includes('ERRORS.E_429')) {
8763
+ this.alertsService.warning('ERRORS.E_429', {});
8764
+ this.displayedMessageCodes.push('ERRORS.E_429');
8765
+ }
8766
+ }
8747
8767
  else if (error?.error?.code == this.engineTermCollectionNotFoundErrorKey) {
8748
8768
  this.alertsService.error('ERRORS.E_404201', err);
8749
8769
  }
@@ -8877,6 +8897,7 @@ class TldTranslateTextService {
8877
8897
  ...item,
8878
8898
  dictionaryDomainUrl: urls[i],
8879
8899
  sourceLabel: isTermPortalCollection ? this.translate.instant('TERM_PORTAL_NAME') : null,
8900
+ isTermPortalCollection
8880
8901
  };
8881
8902
  const termSummary = termWithSource.languageSummaries?.find((summary) => summary.lang === this.activeData.targetLanguage);
8882
8903
  if (termSummary) {
@@ -9098,13 +9119,13 @@ class TldDictionaryComponent {
9098
9119
  set dictionary(data) {
9099
9120
  this.groupDictionariesByDomain(data);
9100
9121
  }
9101
- dictionaryGroups = {};
9122
+ dictionaryGroups = [];
9102
9123
  groupDictionariesByDomain(data) {
9103
9124
  if (!data?.length) {
9104
9125
  this.dictionaryGroups = null;
9105
9126
  return;
9106
9127
  }
9107
- this.dictionaryGroups = data.reduce((acc, dictionary) => {
9128
+ const groups = data.reduce((acc, dictionary) => {
9108
9129
  const domain = dictionary.sourceLabel ?? dictionary.dictionaryDomainUrl;
9109
9130
  if (!acc[domain]) {
9110
9131
  acc[domain] = [];
@@ -9112,13 +9133,23 @@ class TldDictionaryComponent {
9112
9133
  acc[domain].push(dictionary);
9113
9134
  return acc;
9114
9135
  }, {});
9136
+ this.dictionaryGroups = Object.keys(groups)
9137
+ .map((key) => ({
9138
+ key: key,
9139
+ value: groups[key],
9140
+ }))
9141
+ .sort((a, b) => {
9142
+ const aIsTermPortal = a.value.some((d) => d.isTermPortalCollection);
9143
+ const bIsTermPortal = b.value.some((d) => d.isTermPortalCollection);
9144
+ return Number(bIsTermPortal) - Number(aIsTermPortal);
9145
+ });
9115
9146
  }
9116
9147
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TldDictionaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9117
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: TldDictionaryComponent, isStandalone: false, selector: "tld-dictionary", inputs: { dictionary: "dictionary" }, ngImport: i0, template: "<div *ngFor=\"let domain of dictionaryGroups | keyvalue\">\r\n\t<div fxFlex fxLayout=\"column\" class=\"dictionary-area\">\r\n\t\t<div fxFlex fxLayout=\"column\">\r\n\t\t\t<p class=\"dictionary-source\">{{ 'DICTIONARY.SOURCE' | translate: { src: domain.key | titlecase } }}</p>\r\n\r\n\t\t\t<div *ngFor=\"let dictionary of domain.value\" class=\"dictionary-target-wrapper\">\r\n\t\t\t\t<a [href]=\"dictionary.collectionUrl\" target=\"_blank\" class=\"dictionary-target-word\">{{ dictionary.targetWord }}</a>\r\n\r\n\t\t\t\t<div class=\"dictionary-word-source\">{{ dictionary.termSource }}</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", styles: [".dictionary-area{margin-top:1rem}.dictionary-source{font-size:1rem}.dictionary-source{font-weight:600}.dictionary-target-wrapper{margin-bottom:.75rem}.dictionary-target-word{font-size:1rem;font-weight:500;text-decoration:underline;color:inherit}.dictionary-word-source{font-size:.75rem;font-style:italic;color:var(--primary);margin-top:.25rem}\n"], dependencies: [{ kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "pipe", type: i3$1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i3$1.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
9148
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: TldDictionaryComponent, isStandalone: false, selector: "tld-dictionary", inputs: { dictionary: "dictionary" }, ngImport: i0, template: "<div *ngFor=\"let domain of dictionaryGroups\">\r\n\t<div fxFlex fxLayout=\"column\" class=\"dictionary-area\">\r\n\t\t<div fxFlex fxLayout=\"column\">\r\n\t\t\t<p class=\"dictionary-source\">\r\n\t\t\t\t{{ \"DICTIONARY.SOURCE\" | translate: { src: domain.key | titlecase } }}\r\n\t\t\t</p>\r\n\r\n\t\t\t<div *ngFor=\"let dictionary of domain.value\" class=\"dictionary-target-wrapper\">\r\n\t\t\t\t<a [href]=\"dictionary.collectionUrl\" target=\"_blank\" class=\"dictionary-target-word\">\r\n\t\t\t\t\t{{ dictionary.targetWord }}\r\n\t\t\t\t</a>\r\n\r\n\t\t\t\t<div class=\"dictionary-word-source\">{{ dictionary.termSource }}</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", styles: [".dictionary-area{margin-top:1rem}.dictionary-source{font-size:1rem}.dictionary-source{font-weight:600}.dictionary-target-wrapper{margin-bottom:.75rem}.dictionary-target-word{font-size:1rem;font-weight:500;text-decoration:underline;color:inherit}.dictionary-word-source{font-size:.75rem;font-style:italic;color:var(--primary);margin-top:.25rem}\n"], dependencies: [{ kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "pipe", type: i3$1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
9118
9149
  }
9119
9150
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TldDictionaryComponent, decorators: [{
9120
9151
  type: Component,
9121
- args: [{ selector: 'tld-dictionary', standalone: false, template: "<div *ngFor=\"let domain of dictionaryGroups | keyvalue\">\r\n\t<div fxFlex fxLayout=\"column\" class=\"dictionary-area\">\r\n\t\t<div fxFlex fxLayout=\"column\">\r\n\t\t\t<p class=\"dictionary-source\">{{ 'DICTIONARY.SOURCE' | translate: { src: domain.key | titlecase } }}</p>\r\n\r\n\t\t\t<div *ngFor=\"let dictionary of domain.value\" class=\"dictionary-target-wrapper\">\r\n\t\t\t\t<a [href]=\"dictionary.collectionUrl\" target=\"_blank\" class=\"dictionary-target-word\">{{ dictionary.targetWord }}</a>\r\n\r\n\t\t\t\t<div class=\"dictionary-word-source\">{{ dictionary.termSource }}</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", styles: [".dictionary-area{margin-top:1rem}.dictionary-source{font-size:1rem}.dictionary-source{font-weight:600}.dictionary-target-wrapper{margin-bottom:.75rem}.dictionary-target-word{font-size:1rem;font-weight:500;text-decoration:underline;color:inherit}.dictionary-word-source{font-size:.75rem;font-style:italic;color:var(--primary);margin-top:.25rem}\n"] }]
9152
+ args: [{ selector: 'tld-dictionary', standalone: false, template: "<div *ngFor=\"let domain of dictionaryGroups\">\r\n\t<div fxFlex fxLayout=\"column\" class=\"dictionary-area\">\r\n\t\t<div fxFlex fxLayout=\"column\">\r\n\t\t\t<p class=\"dictionary-source\">\r\n\t\t\t\t{{ \"DICTIONARY.SOURCE\" | translate: { src: domain.key | titlecase } }}\r\n\t\t\t</p>\r\n\r\n\t\t\t<div *ngFor=\"let dictionary of domain.value\" class=\"dictionary-target-wrapper\">\r\n\t\t\t\t<a [href]=\"dictionary.collectionUrl\" target=\"_blank\" class=\"dictionary-target-word\">\r\n\t\t\t\t\t{{ dictionary.targetWord }}\r\n\t\t\t\t</a>\r\n\r\n\t\t\t\t<div class=\"dictionary-word-source\">{{ dictionary.termSource }}</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", styles: [".dictionary-area{margin-top:1rem}.dictionary-source{font-size:1rem}.dictionary-source{font-weight:600}.dictionary-target-wrapper{margin-bottom:.75rem}.dictionary-target-word{font-size:1rem;font-weight:500;text-decoration:underline;color:inherit}.dictionary-word-source{font-size:.75rem;font-style:italic;color:var(--primary);margin-top:.25rem}\n"] }]
9122
9153
  }], propDecorators: { dictionary: [{
9123
9154
  type: Input
9124
9155
  }] } });