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 | 1x 9x 9x 1x 9x 9x 9x 9x 9x 9x 9x | /**
* Copyright (c) Siemens 2016 - 2025
* SPDX-License-Identifier: MIT
*/
import { inject } from '@angular/core';
import { TranslatableString } from '@siemens/element-translate-ng/translate-types';
import { globalScope } from './global.scope';
import { SiTranslatableService } from './si-translatable.service';
import { injectSiTranslateService } from './si-translate.inject';
// an alternative implementation for $localize meant to be used for translation frameworks other than @angular/localize
const $localize = (strings: TemplateStringsArray, ...expressions: string[]): TranslatableString => {
Iif (strings.length !== 1) {
throw new Error(
'$localize calls using @siemens/element-translate-ng do not support parameter interpolation'
);
}
return strings[0];
};
/**
* Always wrap `$localize` calls in this function within element components.
* It may patch the global $localize based on the current translation framework.
*
* This function requires an `InjectionContext.`
*
* @internal
*
* @example
* ```ts
* class MyComponent {
* readonly myText = t(() => $localize`:@@my-text:This is a default text`);
* }
* ```
*/
export const t = (localizeWrapperFunction: () => string): TranslatableString => {
let localizeString: string;
Iif (injectSiTranslateService().prevent$LocalizeInit) {
localizeString = localizeWrapperFunction();
} else {
const $localizeBackup = globalScope.$localize;
globalScope.$localize = $localize;
localizeString = localizeWrapperFunction();
globalScope.$localize = $localizeBackup;
}
const [, key, value] = /:.*?@@(.*?):(.*)/.exec(localizeString)!;
return inject(SiTranslatableService).resolveText(key, value);
};
|