UNPKG

ngx-translate-multi-http-loader

Version:

A loader for [ngx-translate](https://github.com/ngx-translate/core) that loads translations using http.

30 lines 4.77 kB
import { HttpClient } from '@angular/common/http'; import { deepmerge } from 'deepmerge-ts'; import { forkJoin, of } from 'rxjs'; import { catchError, map } from 'rxjs/operators'; export class MultiTranslateHttpLoader { constructor(_handler, _resourcesPrefix) { this._handler = _handler; this._resourcesPrefix = _resourcesPrefix; } getTranslation(lang) { const requests = this._resourcesPrefix.map((resource) => { let path; if (resource.prefix) path = `${resource.prefix}${lang}${resource.suffix || '.json'}`; else path = `${resource}${lang}.json`; return new HttpClient(this._handler).get(path).pipe(catchError((res) => { if (!resource.optional) { console.group(); console.error('Something went wrong for the following translation file:', path); console.error(res); console.groupEnd(); } return of({}); })); }); return forkJoin(requests).pipe(map((response) => deepmerge(...response))); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktaHR0cC1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tdWx0aS1odHRwLWxvYWRlci9zcmMvbGliL211bHRpLWh0dHAtbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUU5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFRaEQsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUNVLFFBQXFCLEVBQ3JCLGdCQUFtRDtRQURuRCxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUM7SUFDMUQsQ0FBQztJQUVHLGNBQWMsQ0FBQyxJQUFZO1FBQ2hDLE1BQU0sUUFBUSxHQUE4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDakYsSUFBSSxJQUFZLENBQUE7WUFDaEIsSUFBSSxRQUFRLENBQUMsTUFBTTtnQkFBRSxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFBOztnQkFDL0UsSUFBSSxHQUFHLEdBQUcsUUFBUSxHQUFHLElBQUksT0FBTyxDQUFBO1lBRXJDLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ2pELFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUN2QixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUE7b0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQywwREFBMEQsRUFBRSxJQUFJLENBQUMsQ0FBQTtvQkFDL0UsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtvQkFDbEIsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFBO2dCQUNwQixDQUFDO2dCQUNELE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQ2YsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO1FBRUYsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzNFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBCYWNrZW5kLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBUcmFuc2xhdGVMb2FkZXIgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgZGVlcG1lcmdlIH0gZnJvbSAnZGVlcG1lcmdlLXRzJ1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2xhdGlvblJlc291cmNlIHtcbiAgcHJlZml4OiBzdHJpbmdcbiAgc3VmZml4Pzogc3RyaW5nXG4gIG9wdGlvbmFsPzogYm9vbGVhblxufVxuXG5leHBvcnQgY2xhc3MgTXVsdGlUcmFuc2xhdGVIdHRwTG9hZGVyIGltcGxlbWVudHMgVHJhbnNsYXRlTG9hZGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfaGFuZGxlcjogSHR0cEJhY2tlbmQsXG4gICAgcHJpdmF0ZSBfcmVzb3VyY2VzUHJlZml4OiBzdHJpbmdbXSB8IElUcmFuc2xhdGlvblJlc291cmNlW10sXG4gICkge31cblxuICBwdWJsaWMgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCByZXF1ZXN0czogT2JzZXJ2YWJsZTxPYmplY3QgfCB7fT5bXSA9IHRoaXMuX3Jlc291cmNlc1ByZWZpeC5tYXAoKHJlc291cmNlKSA9PiB7XG4gICAgICBsZXQgcGF0aDogc3RyaW5nXG4gICAgICBpZiAocmVzb3VyY2UucHJlZml4KSBwYXRoID0gYCR7cmVzb3VyY2UucHJlZml4fSR7bGFuZ30ke3Jlc291cmNlLnN1ZmZpeCB8fCAnLmpzb24nfWBcbiAgICAgIGVsc2UgcGF0aCA9IGAke3Jlc291cmNlfSR7bGFuZ30uanNvbmBcblxuICAgICAgcmV0dXJuIG5ldyBIdHRwQ2xpZW50KHRoaXMuX2hhbmRsZXIpLmdldChwYXRoKS5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKChyZXMpID0+IHtcbiAgICAgICAgICBpZiAoIXJlc291cmNlLm9wdGlvbmFsKSB7XG4gICAgICAgICAgICBjb25zb2xlLmdyb3VwKClcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NvbWV0aGluZyB3ZW50IHdyb25nIGZvciB0aGUgZm9sbG93aW5nIHRyYW5zbGF0aW9uIGZpbGU6JywgcGF0aClcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzKVxuICAgICAgICAgICAgY29uc29sZS5ncm91cEVuZCgpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBvZih7fSlcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfSlcblxuICAgIHJldHVybiBmb3JrSm9pbihyZXF1ZXN0cykucGlwZShtYXAoKHJlc3BvbnNlKSA9PiBkZWVwbWVyZ2UoLi4ucmVzcG9uc2UpKSlcbiAgfVxufVxuIl19