UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

65 lines 10.6 kB
import { Injectable } from '@angular/core'; import { PatternMessagesService } from './pattern-messages.service'; import { TranslateParser } from '@ngx-translate/core'; import * as i0 from "@angular/core"; import * as i1 from "@ngx-translate/core"; import * as i2 from "./pattern-messages.service"; export class MissingTranslationCustomHandler { constructor(parser, patternMessagesService) { this.parser = parser; this.patternMessagesService = patternMessagesService; this.cache = new Map(); } handle(params) { const { key: messageKey, interpolateParams, translateService } = params; this.translateService = translateService; let translation = this.getFromCache(messageKey, interpolateParams); if (!translation) { const patternMessageTranslation = this.getPatternMessageTranslation(messageKey, interpolateParams); if (patternMessageTranslation) { translation = patternMessageTranslation; } else { translation = this.parser.interpolate(messageKey, interpolateParams); } translation = this.removeContextIndicators(translation); this.addToCache(messageKey, interpolateParams, translation); } return translation; } getFromCache(messageKey, interpolateParams) { const { currentLang } = this.translateService; const currentCache = this.cache.get(currentLang) || new Map(); const cacheKey = this.getCacheKey(messageKey, interpolateParams); return currentCache.get(cacheKey); } addToCache(messageKey, interpolateParams, translation) { const { currentLang } = this.translateService; const currentCache = this.cache.get(currentLang) || new Map(); const cacheKey = this.getCacheKey(messageKey, interpolateParams); currentCache.set(cacheKey, translation); this.cache.set(currentLang, currentCache); } getCacheKey(messageKey, interpolateParams) { return interpolateParams ? `${messageKey} ${JSON.stringify(interpolateParams)}` : messageKey; } getPatternMessageTranslation(messageKey, interpolateParams) { const shouldTryPatternMessages = !interpolateParams || !interpolateParams.noPatternMessages; if (shouldTryPatternMessages) { if (!this.patternMessagesService.translateService) { this.patternMessagesService.translateService = this.translateService; } return this.patternMessagesService.translate(messageKey); } return undefined; } removeContextIndicators(translation) { return translation.replace(/`[^`]*`/g, ''); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MissingTranslationCustomHandler, deps: [{ token: i1.TranslateParser }, { token: i2.PatternMessagesService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MissingTranslationCustomHandler }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MissingTranslationCustomHandler, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i1.TranslateParser }, { type: i2.PatternMessagesService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzc2luZy10cmFuc2xhdGlvbi1jdXN0b20uaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvaTE4bi9taXNzaW5nLXRyYW5zbGF0aW9uLWN1c3RvbS5oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUdMLGVBQWUsRUFFaEIsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQUc3QixNQUFNLE9BQU8sK0JBQStCO0lBSTFDLFlBQ1UsTUFBdUIsRUFDdkIsc0JBQThDO1FBRDlDLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQ3ZCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFKeEQsVUFBSyxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO0lBSzVDLENBQUM7SUFFSixNQUFNLENBQUMsTUFBdUM7UUFDNUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFDeEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBRXpDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFFbkUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUNqRSxVQUFVLEVBQ1YsaUJBQWlCLENBQ2xCLENBQUM7WUFDRixJQUFJLHlCQUF5QixFQUFFLENBQUM7Z0JBQzlCLFdBQVcsR0FBRyx5QkFBeUIsQ0FBQztZQUMxQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQ3ZFLENBQUM7WUFFRCxXQUFXLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRXhELElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRU8sWUFBWSxDQUFDLFVBQWtCLEVBQUUsaUJBQXlCO1FBQ2hFLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDOUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFDOUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUNqRSxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLFVBQVUsQ0FBQyxVQUFrQixFQUFFLGlCQUF5QixFQUFFLFdBQW1CO1FBQ25GLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDOUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFDOUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUNqRSxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLFdBQVcsQ0FBQyxVQUFrQixFQUFFLGlCQUF5QjtRQUMvRCxPQUFPLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQy9GLENBQUM7SUFFTyw0QkFBNEIsQ0FBQyxVQUFrQixFQUFFLGlCQUF5QjtRQUNoRixNQUFNLHdCQUF3QixHQUM1QixDQUFDLGlCQUFpQixJQUFJLENBQUUsaUJBQXlCLENBQUMsaUJBQWlCLENBQUM7UUFFdEUsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUN2RSxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sdUJBQXVCLENBQUMsV0FBbUI7UUFDakQsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDOytHQXJFVSwrQkFBK0I7bUhBQS9CLCtCQUErQjs7NEZBQS9CLCtCQUErQjtrQkFEM0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBhdHRlcm5NZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuL3BhdHRlcm4tbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQge1xuICBNaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyLFxuICBNaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyUGFyYW1zLFxuICBUcmFuc2xhdGVQYXJzZXIsXG4gIFRyYW5zbGF0ZVNlcnZpY2Vcbn0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNaXNzaW5nVHJhbnNsYXRpb25DdXN0b21IYW5kbGVyIGltcGxlbWVudHMgTWlzc2luZ1RyYW5zbGF0aW9uSGFuZGxlciB7XG4gIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2U7XG4gIGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIHN0cmluZz4+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwYXJzZXI6IFRyYW5zbGF0ZVBhcnNlcixcbiAgICBwcml2YXRlIHBhdHRlcm5NZXNzYWdlc1NlcnZpY2U6IFBhdHRlcm5NZXNzYWdlc1NlcnZpY2VcbiAgKSB7fVxuXG4gIGhhbmRsZShwYXJhbXM6IE1pc3NpbmdUcmFuc2xhdGlvbkhhbmRsZXJQYXJhbXMpIHtcbiAgICBjb25zdCB7IGtleTogbWVzc2FnZUtleSwgaW50ZXJwb2xhdGVQYXJhbXMsIHRyYW5zbGF0ZVNlcnZpY2UgfSA9IHBhcmFtcztcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgPSB0cmFuc2xhdGVTZXJ2aWNlO1xuXG4gICAgbGV0IHRyYW5zbGF0aW9uID0gdGhpcy5nZXRGcm9tQ2FjaGUobWVzc2FnZUtleSwgaW50ZXJwb2xhdGVQYXJhbXMpO1xuXG4gICAgaWYgKCF0cmFuc2xhdGlvbikge1xuICAgICAgY29uc3QgcGF0dGVybk1lc3NhZ2VUcmFuc2xhdGlvbiA9IHRoaXMuZ2V0UGF0dGVybk1lc3NhZ2VUcmFuc2xhdGlvbihcbiAgICAgICAgbWVzc2FnZUtleSxcbiAgICAgICAgaW50ZXJwb2xhdGVQYXJhbXNcbiAgICAgICk7XG4gICAgICBpZiAocGF0dGVybk1lc3NhZ2VUcmFuc2xhdGlvbikge1xuICAgICAgICB0cmFuc2xhdGlvbiA9IHBhdHRlcm5NZXNzYWdlVHJhbnNsYXRpb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmFuc2xhdGlvbiA9IHRoaXMucGFyc2VyLmludGVycG9sYXRlKG1lc3NhZ2VLZXksIGludGVycG9sYXRlUGFyYW1zKTtcbiAgICAgIH1cblxuICAgICAgdHJhbnNsYXRpb24gPSB0aGlzLnJlbW92ZUNvbnRleHRJbmRpY2F0b3JzKHRyYW5zbGF0aW9uKTtcblxuICAgICAgdGhpcy5hZGRUb0NhY2hlKG1lc3NhZ2VLZXksIGludGVycG9sYXRlUGFyYW1zLCB0cmFuc2xhdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyYW5zbGF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGcm9tQ2FjaGUobWVzc2FnZUtleTogc3RyaW5nLCBpbnRlcnBvbGF0ZVBhcmFtczogb2JqZWN0KTogc3RyaW5nIHtcbiAgICBjb25zdCB7IGN1cnJlbnRMYW5nIH0gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2U7XG4gICAgY29uc3QgY3VycmVudENhY2hlID0gdGhpcy5jYWNoZS5nZXQoY3VycmVudExhbmcpIHx8IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgY29uc3QgY2FjaGVLZXkgPSB0aGlzLmdldENhY2hlS2V5KG1lc3NhZ2VLZXksIGludGVycG9sYXRlUGFyYW1zKTtcbiAgICByZXR1cm4gY3VycmVudENhY2hlLmdldChjYWNoZUtleSk7XG4gIH1cblxuICBwcml2YXRlIGFkZFRvQ2FjaGUobWVzc2FnZUtleTogc3RyaW5nLCBpbnRlcnBvbGF0ZVBhcmFtczogb2JqZWN0LCB0cmFuc2xhdGlvbjogc3RyaW5nKSB7XG4gICAgY29uc3QgeyBjdXJyZW50TGFuZyB9ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlO1xuICAgIGNvbnN0IGN1cnJlbnRDYWNoZSA9IHRoaXMuY2FjaGUuZ2V0KGN1cnJlbnRMYW5nKSB8fCBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gdGhpcy5nZXRDYWNoZUtleShtZXNzYWdlS2V5LCBpbnRlcnBvbGF0ZVBhcmFtcyk7XG4gICAgY3VycmVudENhY2hlLnNldChjYWNoZUtleSwgdHJhbnNsYXRpb24pO1xuICAgIHRoaXMuY2FjaGUuc2V0KGN1cnJlbnRMYW5nLCBjdXJyZW50Q2FjaGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYWNoZUtleShtZXNzYWdlS2V5OiBzdHJpbmcsIGludGVycG9sYXRlUGFyYW1zOiBvYmplY3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbnRlcnBvbGF0ZVBhcmFtcyA/IGAke21lc3NhZ2VLZXl9ICR7SlNPTi5zdHJpbmdpZnkoaW50ZXJwb2xhdGVQYXJhbXMpfWAgOiBtZXNzYWdlS2V5O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXR0ZXJuTWVzc2FnZVRyYW5zbGF0aW9uKG1lc3NhZ2VLZXk6IHN0cmluZywgaW50ZXJwb2xhdGVQYXJhbXM6IG9iamVjdCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2hvdWxkVHJ5UGF0dGVybk1lc3NhZ2VzID1cbiAgICAgICFpbnRlcnBvbGF0ZVBhcmFtcyB8fCAhKGludGVycG9sYXRlUGFyYW1zIGFzIGFueSkubm9QYXR0ZXJuTWVzc2FnZXM7XG5cbiAgICBpZiAoc2hvdWxkVHJ5UGF0dGVybk1lc3NhZ2VzKSB7XG4gICAgICBpZiAoIXRoaXMucGF0dGVybk1lc3NhZ2VzU2VydmljZS50cmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMucGF0dGVybk1lc3NhZ2VzU2VydmljZS50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucGF0dGVybk1lc3NhZ2VzU2VydmljZS50cmFuc2xhdGUobWVzc2FnZUtleSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQ29udGV4dEluZGljYXRvcnModHJhbnNsYXRpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRyYW5zbGF0aW9uLnJlcGxhY2UoL2BbXmBdKmAvZywgJycpO1xuICB9XG59XG4iXX0=