Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | 1x 16x 16x 16x 16x 16x 4x 16x 2x 3x 2x 18x 18x 2x 1x 1x 7x 1x 6x 3x 1x 2x 9x 1x 8x 4x 4x | /** * Copyright (c) Siemens 2016 - 2025 * SPDX-License-Identifier: MIT */ import { Injectable } from '@angular/core'; import { MissingTranslationHandler, MissingTranslationHandlerParams, TranslateService } from '@ngx-translate/core'; import { SiTranslateService, TranslationResult } from '@siemens/element-translate-ng/translate'; import { merge, Observable, of } from 'rxjs'; import { map } from 'rxjs/operators'; /** * {@link SiTranslateService} wrapper around ngx-translate * * @internal */ @Injectable() export class SiTranslateNgxTService extends SiTranslateService { private ngxTranslateService: TranslateService; private defaultTranslations: Record<string, string> = {}; private originalMissingHandler: MissingTranslationHandler; // eslint-disable-next-line @angular-eslint/prefer-inject constructor(ngxTranslateService: TranslateService) { super(); this.ngxTranslateService = ngxTranslateService; this.originalMissingHandler = ngxTranslateService.missingTranslationHandler; ngxTranslateService.missingTranslationHandler = { handle: params => this.handleMissingTranslation(params) }; this.translationChange$ = merge( this.ngxTranslateService.onTranslationChange, this.ngxTranslateService.onLangChange ).pipe(map(() => {})); } override get currentLanguage(): string { return this.ngxTranslateService.currentLang; } override get availableLanguages(): string[] { return this.ngxTranslateService.getLangs(); } override set availableLanguages(languages: string[]) { this.ngxTranslateService.addLangs(languages); } override setCurrentLanguage(lang: string): Observable<void> { this.setDocumentLanguage(lang); return this.ngxTranslateService.use(lang).pipe(map(() => {})); } override getDefaultLanguage(): string { return this.ngxTranslateService.getDefaultLang(); } override setDefaultLanguage(lang: string): void { this.setDocumentLanguage(lang); this.ngxTranslateService.setDefaultLang(lang); } override translate<T extends string | string[]>( keys: T, params?: Record<string, unknown> ): Observable<TranslationResult<T>> | TranslationResult<T> { if (Array.isArray(keys) && !keys.length) { return of({} as TranslationResult<T>); } return this.ngxTranslateService.stream(keys, params); } override translateAsync<T extends string | string[]>( keys: T, params?: Record<string, unknown> ): Observable<TranslationResult<T>> { if (Array.isArray(keys) && !keys.length) { return of({} as TranslationResult<T>); } return this.ngxTranslateService.stream(keys, params); } override translateSync<T extends string | string[]>( keys: T, params?: Record<string, unknown> ): TranslationResult<T> { if (Array.isArray(keys) && !keys.length) { return {} as TranslationResult<T>; } return this.ngxTranslateService.instant(keys, params); } override setTranslation(key: string, value: string): void { this.defaultTranslations[key] = value; } private handleMissingTranslation(params: MissingTranslationHandlerParams): string { return ( params.translateService.parser.interpolate( this.defaultTranslations[params.key], params.interpolateParams ) ?? this.originalMissingHandler.handle(params) ); } } |