@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
104 lines • 14 kB
JavaScript
import { LOCALE_ID, NgModule } from '@angular/core';
import { MissingTranslationHandler, TranslateService as NgxTranslateService, TranslateCompiler, TranslateFakeCompiler, TranslateParser, TranslateStore, USE_DEFAULT_LANG, USE_STORE, USE_EXTEND, DEFAULT_LANGUAGE, TranslateLoader } from '@ngx-translate/core';
import { OptionsService } from '../common/options.service';
import { AppStateService } from '../common/ui-state.service';
import { LANGUAGES } from './languages';
import { LOCALE_PATH } from './locale.path';
import { MissingTranslationCustomHandler } from './missing-translation-custom.handler';
import { MESSAGES_CORE_I18N } from './pattern-messages.data';
import { MESSAGES_DATAHUB_I18N } from './datahub.pattern-messages.data';
import { hookPatternMessages } from './patterns-message.hook';
import { TranslateParserCustom } from './translate.parser';
import { C8yTranslateModule } from './c8y-translate.module';
import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
import { of } from 'rxjs';
import * as i0 from "@angular/core";
/**
* The @angular/common/locales folder in node_modules contains files with names created based on RFC 3066bis.
* https://www.w3.org/International/articles/bcp47/
*
* Same mapping also in devkit: packages\devkit\src\webpack\config\translation.ts
* TODO: unify and move to a common place e.g. @c8y/options once this not only includes types
*/
const angularLocalesLanguageMap = {
en: 'en-GB',
'en-EN': 'en-GB',
'en-US': 'en',
'ja-JP': 'ja',
'zh-CN': 'zh',
'zh-TW': 'zh',
'pt-BR': 'pt'
};
export function localePathFactory(options) {
return options.localePath;
}
export function languagesFactory(options) {
return options.languages;
}
export function localeId(appStateService) {
return {
get lang() {
return getAngularLocalesLanguageString(appStateService.state.lang);
},
toLowerCase() {
return this.lang.toLowerCase();
},
toString() {
return this.lang;
}
};
}
export function getAngularLocalesLanguageString(language = 'en') {
const key = language;
if (angularLocalesLanguageMap[key]) {
return angularLocalesLanguageMap[key];
}
return language;
}
/**
* The angular module definition for i18n (translation).
* @exports I18nModule
*/
export class I18nModule {
static providers() {
return [
{ provide: LOCALE_ID, useFactory: localeId, deps: [AppStateService] },
hookPatternMessages(MESSAGES_CORE_I18N),
hookPatternMessages(MESSAGES_DATAHUB_I18N),
{ provide: LOCALE_PATH, useFactory: localePathFactory, deps: [OptionsService] },
{ provide: LANGUAGES, useFactory: languagesFactory, deps: [OptionsService] },
// Extracted from projects/ngx-translate/core/src/public_api.ts
{
provide: TranslateLoader,
// just a dummy TranslateLoader implementation. The actual translations are loaded by TranslationLoaderService.
useFactory: () => ({ getTranslation: () => of({}) })
},
{ provide: TranslateCompiler, useClass: TranslateFakeCompiler },
{ provide: TranslateParser, useClass: TranslateParserCustom },
{ provide: MissingTranslationHandler, useClass: MissingTranslationCustomHandler },
TranslateStore,
NgxTranslateService,
{ provide: USE_STORE, useValue: undefined },
{ provide: USE_DEFAULT_LANG, useValue: undefined },
{ provide: USE_EXTEND, useValue: false },
{ provide: DEFAULT_LANGUAGE, useValue: undefined }
];
}
static forRoot() {
return {
ngModule: I18nModule,
providers: I18nModule.providers()
};
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: I18nModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: I18nModule, imports: [BsDatepickerModule], exports: [C8yTranslateModule] }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: I18nModule, imports: [BsDatepickerModule, C8yTranslateModule] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: I18nModule, decorators: [{
type: NgModule,
args: [{
exports: [C8yTranslateModule],
imports: [BsDatepickerModule]
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2kxOG4vaTE4bi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBdUIsUUFBUSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsZ0JBQWdCLElBQUksbUJBQW1CLEVBQ3ZDLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsZUFBZSxFQUNmLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNoQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRTFCOzs7Ozs7R0FNRztBQUNILE1B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QUU7U0FDbEMsQ0FBQztJQUNKLENBQUM7K0dBL0JVLFVBQVU7Z0hBQVYsVUFBVSxZQUZYLGtCQUFrQixhQURsQixrQkFBa0I7Z0hBR2pCLFVBQVUsWUFGWCxrQkFBa0IsRUFEbEIsa0JBQWtCOzs0RkFHakIsVUFBVTtrQkFKdEIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDN0IsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTE9DQUxFX0lELCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1pc3NpbmdUcmFuc2xhdGlvbkhhbmRsZXIsXG4gIFRyYW5zbGF0ZVNlcnZpY2UgYXMgTmd4VHJhbnNsYXRlU2VydmljZSxcbiAgVHJhbnNsYXRlQ29tcGlsZXIsXG4gIFRyYW5zbGF0ZUZha2VDb21waWxlcixcbiAgVHJhbnNsYXRlUGFyc2VyLFxuICBUcmFuc2xhdGVTdG9yZSxcbiAgVVNFX0RFRkFVTFRfTEFORyxcbiAgVVNFX1NUT1JFLFxuICBVU0VfRVhURU5ELFxuICBERUZBVUxUX0xBTkdVQUdFLFxuICBUcmFuc2xhdGVMb2FkZXJcbn0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBPcHRpb25zU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9vcHRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3VpLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTEFOR1VBR0VTIH0gZnJvbSAnLi9sYW5ndWFnZXMnO1xuaW1wb3J0IHsgTE9DQUxFX1BBVEggfSBmcm9tICcuL2xvY2FsZS5wYXRoJztcbmltcG9ydCB7IE1pc3NpbmdUcmFuc2xhdGlvbkN1c3RvbUhhbmRsZXIgfSBmcm9tICcuL21pc3NpbmctdHJhbnNsYXRpb24tY3VzdG9tLmhhbmRsZXInO1xuaW1wb3J0IHsgTUVTU0FHRVNfQ09SRV9JMThOIH0gZnJvbSAnLi9wYXR0ZXJuLW1lc3NhZ2VzLmRhdGEnO1xuaW1wb3J0IHsgTUVTU0FHRVNfREFUQUhVQl9JMThOIH0gZnJvbSAnLi9kYXRhaHViLnBhdHRlcm4tbWVzc2FnZXMuZGF0YSc7XG5pbXBvcnQgeyBob29rUGF0dGVybk1lc3NhZ2VzIH0gZnJvbSAnLi9wYXR0ZXJucy1tZXNzYWdlLmhvb2snO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGFyc2VyQ3VzdG9tIH0gZnJvbSAnLi90cmFuc2xhdGUucGFyc2VyJztcbmltcG9ydCB7IEM4eVRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJy4vYzh5LXRyYW5zbGF0ZS5tb2R1bGUnO1xuaW1wb3J0IHsgQnNEYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogVGhlIEBhbmd1bGFyL2NvbW1vbi9sb2NhbGVzIGZvbGRlciBpbiBub2RlX21vZHVsZXMgY29udGFpbnMgZmlsZXMgd2l0aCBuYW1lcyBjcmVhdGVkIGJhc2VkIG9uIFJGQyAzMDY2YmlzLlxuICogaHR0cHM6Ly93d3cudzMub3JnL0ludGVybmF0aW9uYWwvYXJ0aWNsZXMvYmNwNDcvXG4gKlxuICogU2FtZSBtYXBwaW5nIGFsc28gaW4gZGV2a2l0OiBwYWNrYWdlc1xcZGV2a2l0XFxzcmNcXHdlYnBhY2tcXGNvbmZpZ1xcdHJhbnNsYXRpb24udHNcbiAqIFRPRE86IHVuaWZ5IGFuZCBtb3ZlIHRvIGEgY29tbW9uIHBsYWNlIGUuZy4gQGM4eS9vcHRpb25zIG9uY2UgdGhpcyBub3Qgb25seSBpbmNsdWRlcyB0eXBlc1xuICovXG5jb25zdCBhbmd1bGFyTG9jYWxlc0xhbmd1YWdlTWFwID0ge1xuICBlbjogJ2VuLUdCJyxcbiAgJ2VuLUVOJzogJ2VuLUdCJyxcbiAgJ2VuLVVTJzogJ2VuJyxcbiAgJ2phLUpQJzogJ2phJyxcbiAgJ3poLUNOJzogJ3poJyxcbiAgJ3poLVRXJzogJ3poJyxcbiAgJ3B0LUJSJzogJ3B0J1xufSBhcyBjb25zdDtcblxuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsZVBhdGhGYWN0b3J5KG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlKSB7XG4gIHJldHVybiBvcHRpb25zLmxvY2FsZVBhdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYW5ndWFnZXNGYWN0b3J5KG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlKSB7XG4gIHJldHVybiBvcHRpb25zLmxhbmd1YWdlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsZUlkKGFwcFN0YXRlU2VydmljZTogQXBwU3RhdGVTZXJ2aWNlKSB7XG4gIHJldHVybiB7XG4gICAgZ2V0IGxhbmcoKSB7XG4gICAgICByZXR1cm4gZ2V0QW5ndWxhckxvY2FsZXNMYW5ndWFnZVN0cmluZyhhcHBTdGF0ZVNlcnZpY2Uuc3RhdGUubGFuZyk7XG4gICAgfSxcbiAgICB0b0xvd2VyQ2FzZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmcudG9Mb3dlckNhc2UoKTtcbiAgICB9LFxuICAgIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZztcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbmd1bGFyTG9jYWxlc0xhbmd1YWdlU3RyaW5nKGxhbmd1YWdlID0gJ2VuJyk6IHN0cmluZyB7XG4gIGNvbnN0IGtleSA9IGxhbmd1YWdlIGFzIGtleW9mIHR5cGVvZiBhbmd1bGFyTG9jYWxlc0xhbmd1YWdlTWFwO1xuICBpZiAoYW5ndWxhckxvY2FsZXNMYW5ndWFnZU1hcFtrZXldKSB7XG4gICAgcmV0dXJuIGFuZ3VsYXJMb2NhbGVzTGFuZ3VhZ2VNYXBba2V5XTtcbiAgfVxuICByZXR1cm4gbGFuZ3VhZ2U7XG59XG5cbi8qKlxuICogVGhlIGFuZ3VsYXIgbW9kdWxlIGRlZmluaXRpb24gZm9yIGkxOG4gKHRyYW5zbGF0aW9uKS5cbiAqIEBleHBvcnRzIEkxOG5Nb2R1bGVcbiAqL1xuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW0M4eVRyYW5zbGF0ZU1vZHVsZV0sXG4gIGltcG9ydHM6IFtCc0RhdGVwaWNrZXJNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIEkxOG5Nb2R1bGUge1xuICBzdGF0aWMgcHJvdmlkZXJzKCk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7IHByb3ZpZGU6IExPQ0FMRV9JRCwgdXNlRmFjdG9yeTogbG9jYWxlSWQsIGRlcHM6IFtBcHBTdGF0ZVNlcnZpY2VdIH0sXG4gICAgICBob29rUGF0dGVybk1lc3NhZ2VzKE1FU1NBR0VTX0NPUkVfSTE4TiksXG4gICAgICBob29rUGF0dGVybk1lc3NhZ2VzKE1FU1NBR0VTX0RBVEFIVUJfSTE4TiksXG4gICAgICB7IHByb3ZpZGU6IExPQ0FMRV9QQVRILCB1c2VGYWN0b3J5OiBsb2NhbGVQYXRoRmFjdG9yeSwgZGVwczogW09wdGlvbnNTZXJ2aWNlXSB9LFxuICAgICAgeyBwcm92aWRlOiBMQU5HVUFHRVMsIHVzZUZhY3Rvcnk6IGxhbmd1YWdlc0ZhY3RvcnksIGRlcHM6IFtPcHRpb25zU2VydmljZV0gfSxcblxuICAgICAgLy8gRXh0cmFjdGVkIGZyb20gcHJvamVjdHMvbmd4LXRyYW5zbGF0ZS9jb3JlL3NyYy9wdWJsaWNfYXBpLnRzXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IFRyYW5zbGF0ZUxvYWRlcixcbiAgICAgICAgLy8ganVzdCBhIGR1bW15IFRyYW5zbGF0ZUxvYWRlciBpbXBsZW1lbnRhdGlvbi4gVGhlIGFjdHVhbCB0cmFuc2xhdGlvbnMgYXJlIGxvYWRlZCBieSBUcmFuc2xhdGlvbkxvYWRlclNlcnZpY2UuXG4gICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+ICh7IGdldFRyYW5zbGF0aW9uOiAoKSA9PiBvZih7fSkgfSkgYXMgVHJhbnNsYXRlTG9hZGVyXG4gICAgICB9LFxuICAgICAgeyBwcm92aWRlOiBUcmFuc2xhdGVDb21waWxlciwgdXNlQ2xhc3M6IFRyYW5zbGF0ZUZha2VDb21waWxlciB9LFxuICAgICAgeyBwcm92aWRlOiBUcmFuc2xhdGVQYXJzZXIsIHVzZUNsYXNzOiBUcmFuc2xhdGVQYXJzZXJDdXN0b20gfSxcbiAgICAgIHsgcHJvdmlkZTogTWlzc2luZ1RyYW5zbGF0aW9uSGFuZGxlciwgdXNlQ2xhc3M6IE1pc3NpbmdUcmFuc2xhdGlvbkN1c3RvbUhhbmRsZXIgfSxcbiAgICAgIFRyYW5zbGF0ZVN0b3JlLFxuICAgICAgTmd4VHJhbnNsYXRlU2VydmljZSxcbiAgICAgIHsgcHJvdmlkZTogVVNFX1NUT1JFLCB1c2VWYWx1ZTogdW5kZWZpbmVkIH0sXG4gICAgICB7IHByb3ZpZGU6IFVTRV9ERUZBVUxUX0xBTkcsIHVzZVZhbHVlOiB1bmRlZmluZWQgfSxcbiAgICAgIHsgcHJvdmlkZTogVVNFX0VYVEVORCwgdXNlVmFsdWU6IGZhbHNlIH0sXG4gICAgICB7IHByb3ZpZGU6IERFRkFVTFRfTEFOR1VBR0UsIHVzZVZhbHVlOiB1bmRlZmluZWQgfVxuICAgIF07XG4gIH1cbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxJMThuTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBJMThuTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBJMThuTW9kdWxlLnByb3ZpZGVycygpXG4gICAgfTtcbiAgfVxufVxuIl19