@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
24 lines • 3.23 kB
JavaScript
import { mapKeys } from 'lodash-es';
/**
* Returns a trimmed translation key.
* If the key contains HTML, it also removes all whitespaces.
* The reason behind it is that by default Angular compiler removes
* whitespaces from adjacent inline elements,
* which prevents ngx-translate from finding a matching entry in the dictionary.
*/
export function trimTranslationKey(key) {
key = key
.replace(/(\r\n|\n|\r)/gm, '')
.replace(/\s{2,}/g, ' ')
.trim();
const containsHTML = /(<([^>]+)>)/i.test(key);
return containsHTML ? key.replace(/\s/g, '') : key;
}
/**
* We want to have translation keys unified, so they don't contain unnecessary spaces and line breaks.
* This way we can dynamically build keys from HTML, and match them to extracted string, that might be HTML as well.
*/
export function getDictionaryWithTrimmedKeys(dictionary) {
return mapKeys(dictionary, (value, key) => trimTranslationKey(key));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2kxOG4vdHJhbnNsYXRpb24tdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBVztJQUM1QyxHQUFHLEdBQUcsR0FBRztTQUNOLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7U0FDN0IsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUM7U0FDdkIsSUFBSSxFQUFFLENBQUM7SUFDVixNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLE9BQU8sWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ3JELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsNEJBQTRCLENBQUMsVUFBa0I7SUFDN0QsT0FBTyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFwS2V5cyB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbi8qKlxuICogUmV0dXJucyBhIHRyaW1tZWQgdHJhbnNsYXRpb24ga2V5LlxuICogSWYgdGhlIGtleSBjb250YWlucyBIVE1MLCBpdCBhbHNvIHJlbW92ZXMgYWxsIHdoaXRlc3BhY2VzLlxuICogVGhlIHJlYXNvbiBiZWhpbmQgaXQgaXMgdGhhdCBieSBkZWZhdWx0IEFuZ3VsYXIgY29tcGlsZXIgcmVtb3Zlc1xuICogd2hpdGVzcGFjZXMgZnJvbSBhZGphY2VudCBpbmxpbmUgZWxlbWVudHMsXG4gKiB3aGljaCBwcmV2ZW50cyBuZ3gtdHJhbnNsYXRlIGZyb20gZmluZGluZyBhIG1hdGNoaW5nIGVudHJ5IGluIHRoZSBkaWN0aW9uYXJ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbVRyYW5zbGF0aW9uS2V5KGtleTogc3RyaW5nKSB7XG4gIGtleSA9IGtleVxuICAgIC5yZXBsYWNlKC8oXFxyXFxufFxcbnxcXHIpL2dtLCAnJylcbiAgICAucmVwbGFjZSgvXFxzezIsfS9nLCAnICcpXG4gICAgLnRyaW0oKTtcbiAgY29uc3QgY29udGFpbnNIVE1MID0gLyg8KFtePl0rKT4pL2kudGVzdChrZXkpO1xuICByZXR1cm4gY29udGFpbnNIVE1MID8ga2V5LnJlcGxhY2UoL1xccy9nLCAnJykgOiBrZXk7XG59XG5cbi8qKlxuICogV2Ugd2FudCB0byBoYXZlIHRyYW5zbGF0aW9uIGtleXMgdW5pZmllZCwgc28gdGhleSBkb24ndCBjb250YWluIHVubmVjZXNzYXJ5IHNwYWNlcyBhbmQgbGluZSBicmVha3MuXG4gKiBUaGlzIHdheSB3ZSBjYW4gZHluYW1pY2FsbHkgYnVpbGQga2V5cyBmcm9tIEhUTUwsIGFuZCBtYXRjaCB0aGVtIHRvIGV4dHJhY3RlZCBzdHJpbmcsIHRoYXQgbWlnaHQgYmUgSFRNTCBhcyB3ZWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGljdGlvbmFyeVdpdGhUcmltbWVkS2V5cyhkaWN0aW9uYXJ5OiBvYmplY3QpIHtcbiAgcmV0dXJuIG1hcEtleXMoZGljdGlvbmFyeSwgKHZhbHVlLCBrZXkpID0+IHRyaW1UcmFuc2xhdGlvbktleShrZXkpKTtcbn1cbiJdfQ==