Skip to content

Commit e1e49b9

Browse files
renovate[bot]spliffone
authored andcommitted
chore(deps): update dependency @ngx-translate/core to v17
1 parent 81829af commit e1e49b9

File tree

11 files changed

+50
-32
lines changed

11 files changed

+50
-32
lines changed

package-lock.json

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
"@angular/router": "20.0.6",
9292
"@ngx-formly/bootstrap": "^6.2.2",
9393
"@ngx-formly/core": "^6.2.2",
94-
"@ngx-translate/core": "16.0.4",
94+
"@ngx-translate/core": "^17.0.0",
9595
"@siemens/ngx-datatable": "^24.0.0",
9696
"echarts": "5.6.0",
9797
"flag-icons": "7.5.0",

projects/dashboards-demo/src/app/app.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ export class AppComponent implements OnInit {
6060
}
6161

6262
ngOnInit(): void {
63-
this.translate.setDefaultLang('en');
63+
this.translate.setFallbackLang('en');
6464
this.translate.use(this.translate.getBrowserLang() ?? 'en');
6565
}
6666

projects/dashboards-ng/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"peerDependencies": {
2121
"@angular/common": "20",
2222
"@angular/core": "20",
23-
"@ngx-translate/core": "15 - 16",
23+
"@ngx-translate/core": "15 - 17",
2424
"@siemens/element-ng": "47.8.0",
2525
"@siemens/element-theme": "47.8.0",
2626
"gridstack": "^11.1.0"

projects/element-ng/localization/si-locale.service.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import { TestBed } from '@angular/core/testing';
66
import { TranslateModule, TranslateService } from '@ngx-translate/core';
77
import { SiTranslateNgxTModule } from '@siemens/element-translate-ng/ngx-translate';
8-
import { Observable, of } from 'rxjs';
8+
import { Observable, of, take } from 'rxjs';
99

1010
import { SiLocaleStore } from './si-locale-store';
1111
import { SI_LOCALE_CONFIG, SiLocaleConfig, SiLocaleService } from './si-locale.service';
@@ -232,7 +232,7 @@ describe('SiLocaleService', () => {
232232
fail();
233233
}
234234
});
235-
translate.onLangChange.subscribe(() => {
235+
translate.onLangChange.pipe(take(1)).subscribe(() => {
236236
translate.use('de');
237237
});
238238
});

projects/element-ng/localization/si-locale.service.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,10 @@ export class SiLocaleService {
132132
// If a user changes the language on the translate service directly,
133133
// we synchronize the change again.
134134
this.translate.translationChange.subscribe(() => {
135-
this.locale = this.translate.currentLanguage;
135+
const current = this.translate.currentLanguage;
136+
if (current) {
137+
this.locale = current;
138+
}
136139
});
137140

138141
if (this.config.fallbackEnabled) {

projects/element-ng/phone-number/si-phone-number-input.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ export class SiPhoneNumberInputComponent
340340
private getCountryName(countryCode: string): string {
341341
// This auto translates the given country name to the selected locale language
342342
return (
343-
new Intl.DisplayNames([this.translate.currentLanguage], { type: 'region' }).of(
343+
new Intl.DisplayNames([this.translate.currentLanguage ?? 'en'], { type: 'region' }).of(
344344
countryCode.toUpperCase()
345345
) ?? ''
346346
);

projects/element-translate-ng/ngx-translate/si-translate-ngxt.service-builder.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: MIT
44
*/
55
import { Injectable, Injector } from '@angular/core';
6-
import { TranslateService } from '@ngx-translate/core';
6+
import { TranslateParser, TranslateService } from '@ngx-translate/core';
77
import {
88
SiTranslateService,
99
SiTranslateServiceBuilder
@@ -24,10 +24,11 @@ export class SiTranslateNgxTServiceBuilder extends SiTranslateServiceBuilder {
2424
buildService(injector: Injector): SiTranslateService {
2525
// Get instance of NGX Translate via injector instance of the current scope (see isolated mode)
2626
const ngxTranslateService = injector.get(TranslateService);
27+
const parser = injector.get(TranslateParser);
2728

2829
let ngxTServiceWrapper = this.serviceCache.get(ngxTranslateService);
2930
if (!ngxTServiceWrapper) {
30-
ngxTServiceWrapper = new SiTranslateNgxTService(ngxTranslateService);
31+
ngxTServiceWrapper = new SiTranslateNgxTService(ngxTranslateService, parser);
3132
this.serviceCache.set(ngxTranslateService, ngxTServiceWrapper);
3233
}
3334

projects/element-translate-ng/ngx-translate/si-translate-ngxt.service.ts

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@
44
*/
55
import { Injectable } from '@angular/core';
66
import {
7-
MissingTranslationHandler,
87
MissingTranslationHandlerParams,
9-
TranslateService
8+
TranslateParser,
9+
TranslateService,
10+
Translation
1011
} from '@ngx-translate/core';
1112
import { SiTranslateService, TranslationResult } from '@siemens/element-translate-ng/translate';
1213
import { merge, Observable, of } from 'rxjs';
1314
import { map } from 'rxjs/operators';
1415

16+
interface MissingTranslationHandler {
17+
handle: (params: MissingTranslationHandlerParams) => Translation | Observable<Translation>;
18+
}
19+
1520
/**
1621
* {@link SiTranslateService} wrapper around ngx-translate
1722
*
@@ -20,16 +25,19 @@ import { map } from 'rxjs/operators';
2025
@Injectable()
2126
export class SiTranslateNgxTService extends SiTranslateService {
2227
private ngxTranslateService: TranslateService;
28+
private parser: TranslateParser;
2329
private defaultTranslations: Record<string, string> = {};
2430
private originalMissingHandler: MissingTranslationHandler;
2531

2632
// eslint-disable-next-line @angular-eslint/prefer-inject
27-
constructor(ngxTranslateService: TranslateService) {
33+
constructor(ngxTranslateService: TranslateService, parser: TranslateParser) {
2834
super();
2935
this.ngxTranslateService = ngxTranslateService;
30-
this.originalMissingHandler = ngxTranslateService.missingTranslationHandler;
31-
ngxTranslateService.missingTranslationHandler = {
32-
handle: params => this.handleMissingTranslation(params)
36+
this.parser = parser;
37+
this.originalMissingHandler = (ngxTranslateService as any)
38+
.missingTranslationHandler as MissingTranslationHandler;
39+
(ngxTranslateService as any).missingTranslationHandler = {
40+
handle: (params: MissingTranslationHandlerParams) => this.handleMissingTranslation(params)
3341
};
3442

3543
this.translationChange$ = merge(
@@ -38,11 +46,12 @@ export class SiTranslateNgxTService extends SiTranslateService {
3846
).pipe(map(() => {}));
3947
}
4048

41-
override get currentLanguage(): string {
49+
override get currentLanguage(): string | undefined {
50+
// eslint-disable-next-line @typescript-eslint/no-deprecated
4251
return this.ngxTranslateService.currentLang;
4352
}
4453

45-
override get availableLanguages(): string[] {
54+
override get availableLanguages(): readonly string[] {
4655
return this.ngxTranslateService.getLangs();
4756
}
4857

@@ -56,11 +65,13 @@ export class SiTranslateNgxTService extends SiTranslateService {
5665
}
5766

5867
override getDefaultLanguage(): string {
59-
return this.ngxTranslateService.getDefaultLang();
68+
// eslint-disable-next-line @typescript-eslint/no-deprecated
69+
return this.ngxTranslateService.getDefaultLang() ?? 'en';
6070
}
6171

6272
override setDefaultLanguage(lang: string): void {
6373
this.setDocumentLanguage(lang);
74+
// eslint-disable-next-line @typescript-eslint/no-deprecated
6475
this.ngxTranslateService.setDefaultLang(lang);
6576
}
6677

@@ -99,11 +110,14 @@ export class SiTranslateNgxTService extends SiTranslateService {
99110
}
100111

101112
private handleMissingTranslation(params: MissingTranslationHandlerParams): string {
102-
return (
103-
params.translateService.parser.interpolate(
104-
this.defaultTranslations[params.key],
105-
params.interpolateParams
106-
) ?? this.originalMissingHandler.handle(params)
113+
const result =
114+
this.parser.interpolate(this.defaultTranslations[params.key], params.interpolateParams) ??
115+
this.originalMissingHandler.handle(params);
116+
if (typeof result === 'string') {
117+
return result;
118+
}
119+
throw new Error(
120+
`Invalid result type of missing translation handler: ${typeof result} ${result}`
107121
);
108122
}
109123
}

projects/element-translate-ng/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"peerDependencies": {
2424
"@angular/common": "20",
2525
"@angular/core": "20",
26-
"@ngx-translate/core": "15 - 16"
26+
"@ngx-translate/core": "15 - 17"
2727
},
2828
"peerDependenciesMeta": {
2929
"@ngx-translate/core": {

0 commit comments

Comments
 (0)