@singleton-i18n/angular-client
Version:
Singleton client code for Angular 10.
30 lines • 4.25 kB
JavaScript
/*
* Copyright 2019-2021 VMware, Inc.
* SPDX-License-Identifier: EPL-2.0
*/
export class LocalizedComponent {
translate(key, ...args) {
const self = this;
const mixinData = self.__proto__.mixinData;
const english = mixinData.L10nSourceMap[key];
const i18nConfig = mixinData && mixinData.Namespace;
if (!english) {
return `!!NO ENGLISH for ${key}!!`;
}
let l10nKey = mixinData.L10nKey + '.' + key;
// Support LocalizedComponent usage in isolated mode.
// Get the namespace based on the i18n configuration to form the final key.
if (i18nConfig) {
l10nKey = this.l10nService.getLongKey(i18nConfig, l10nKey);
}
let translation;
const onTranslation = (locale) => {
if (locale === this.l10nService.currentLocale) {
translation = this.l10nService.translate(l10nKey, english, args);
}
};
this.l10nService.current.subscribe(onTranslation);
return translation;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemVkLWNvbXBvbmVudC5taXhpbi5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ybGlnZW5nL1Byb2plY3RzL0Rldm9wcy9DbGllbnRfQW5ndWxhcl9HaXRIdWJfTnBtanMvdmlwL2NpL3B1YjJvcmcvQ2xpZW50X0FuZ3VsYXJfR2l0SHViX05wbWpzL3NpbmdsZXRvbi9wcm9qZWN0cy9hbmd1bGFyLWNsaWVudC8iLCJzb3VyY2VzIjpbInNyYy9sb2NhbGl6ZWQtY29tcG9uZW50Lm1peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUlILE1BQU0sT0FBTyxrQkFBa0I7SUFHM0IsU0FBUyxDQUFDLEdBQVcsRUFBRSxHQUFHLElBQVc7UUFDakMsTUFBTSxJQUFJLEdBQVEsSUFBVyxDQUFDO1FBQzlCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBZ0IsQ0FBQztRQUNsRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sVUFBVSxHQUFHLFNBQVMsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQ3BELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixPQUFPLG9CQUFvQixHQUFHLElBQUksQ0FBQztTQUN0QztRQUNELElBQUksT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUM1QyxxREFBcUQ7UUFDckQsMkVBQTJFO1FBQzNFLElBQUksVUFBVSxFQUFFO1lBQ1osT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM5RDtRQUNELElBQUksV0FBbUIsQ0FBQztRQUN4QixNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFO1lBQ3JDLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFO2dCQUMzQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNwRTtRQUNMLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTktMjAyMSBWTXdhcmUsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHsgTDEwblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2wxMG4uc2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBMb2NhbGl6ZWRDb21wb25lbnQge1xuICAgIGwxMG5TZXJ2aWNlOiBMMTBuU2VydmljZTtcblxuICAgIHRyYW5zbGF0ZShrZXk6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBzZWxmOiBhbnkgPSB0aGlzIGFzIGFueTtcbiAgICAgICAgY29uc3QgbWl4aW5EYXRhID0gc2VsZi5fX3Byb3RvX18ubWl4aW5EYXRhIGFzIGFueTtcbiAgICAgICAgY29uc3QgZW5nbGlzaCA9IG1peGluRGF0YS5MMTBuU291cmNlTWFwW2tleV07XG4gICAgICAgIGNvbnN0IGkxOG5Db25maWcgPSBtaXhpbkRhdGEgJiYgbWl4aW5EYXRhLk5hbWVzcGFjZTtcbiAgICAgICAgaWYgKCFlbmdsaXNoKSB7XG4gICAgICAgICAgICByZXR1cm4gYCEhTk8gRU5HTElTSCBmb3IgJHtrZXl9ISFgO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsMTBuS2V5ID0gbWl4aW5EYXRhLkwxMG5LZXkgKyAnLicgKyBrZXk7XG4gICAgICAgIC8vIFN1cHBvcnQgTG9jYWxpemVkQ29tcG9uZW50IHVzYWdlIGluIGlzb2xhdGVkIG1vZGUuXG4gICAgICAgIC8vIEdldCB0aGUgbmFtZXNwYWNlIGJhc2VkIG9uIHRoZSBpMThuIGNvbmZpZ3VyYXRpb24gdG8gZm9ybSB0aGUgZmluYWwga2V5LlxuICAgICAgICBpZiAoaTE4bkNvbmZpZykge1xuICAgICAgICAgICAgbDEwbktleSA9IHRoaXMubDEwblNlcnZpY2UuZ2V0TG9uZ0tleShpMThuQ29uZmlnLCBsMTBuS2V5KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdHJhbnNsYXRpb246IHN0cmluZztcbiAgICAgICAgY29uc3Qgb25UcmFuc2xhdGlvbiA9IChsb2NhbGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaWYgKGxvY2FsZSA9PT0gdGhpcy5sMTBuU2VydmljZS5jdXJyZW50TG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRpb24gPSB0aGlzLmwxMG5TZXJ2aWNlLnRyYW5zbGF0ZShsMTBuS2V5LCBlbmdsaXNoLCBhcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5sMTBuU2VydmljZS5jdXJyZW50LnN1YnNjcmliZShvblRyYW5zbGF0aW9uKTtcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uO1xuICAgIH1cbn1cbiJdfQ==