@spartacus/core
Version:
Spartacus - the core framework
52 lines • 7.21 kB
JavaScript
import { Injectable, isDevMode } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "./config/i18n-config";
export class TranslationChunkService {
constructor(config) {
this.config = config;
this.duplicates = {};
this.chunks = {};
this.KEY_SEPARATOR = '.';
const chunks = (config.i18n && config.i18n.chunks) || {};
Object.keys(chunks).forEach((chunk) => {
chunks[chunk].forEach((key) => {
if (this.chunks.hasOwnProperty(key)) {
if (!this.duplicates[key]) {
this.duplicates[key] = [this.chunks[key]];
}
this.duplicates[key].push(chunk);
}
else {
this.chunks[key] = chunk;
}
});
});
if (Object.keys(this.duplicates).length > 0 && isDevMode()) {
this.warnDuplicates(this.duplicates);
}
}
getChunkNameForKey(key) {
const mainKey = (key || '').split(this.KEY_SEPARATOR)[0];
const chunk = this.chunks && this.chunks[mainKey];
if (!chunk) {
return mainKey; // fallback to main key as a chunk
}
return chunk;
}
warnDuplicates(items) {
const dupes = [];
Object.keys(items).forEach((key) => {
dupes.push(`* '${key}' found in chunks: ${items[key].join(', ')}. Used '${this.chunks[key]}.${key}'.`);
});
console.warn(`Duplicated keys has been found in the config of i18n chunks:\n${dupes.join('\n')}`);
}
}
TranslationChunkService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: TranslationChunkService, deps: [{ token: i1.I18nConfig }], target: i0.ɵɵFactoryTarget.Injectable });
TranslationChunkService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: TranslationChunkService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: TranslationChunkService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: function () { return [{ type: i1.I18nConfig }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tY2h1bmsuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2kxOG4vdHJhbnNsYXRpb24tY2h1bmsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTXRELE1BQU0sT0FBTyx1QkFBdUI7SUFHbEMsWUFBc0IsTUFBa0I7UUFBbEIsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUY5QixlQUFVLEdBQWdDLEVBQUUsQ0FBQztRQUM3QyxXQUFNLEdBQThCLEVBQUUsQ0FBQztRQW9COUIsa0JBQWEsR0FBRyxHQUFHLENBQUM7UUFsQnJDLE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6RCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDNUIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7cUJBQzNDO29CQUNELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNsQztxQkFBTTtvQkFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztpQkFDMUI7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsRUFBRSxFQUFFO1lBQzFELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUlELGtCQUFrQixDQUFDLEdBQVc7UUFDNUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbEQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sT0FBTyxDQUFDLENBQUMsa0NBQWtDO1NBQ25EO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQWtDO1FBQ3ZELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pDLEtBQUssQ0FBQyxJQUFJLENBQ1IsTUFBTSxHQUFHLHNCQUFzQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDakIsSUFBSSxHQUFHLElBQUksQ0FDWixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsSUFBSSxDQUNWLGlFQUFpRSxLQUFLLENBQUMsSUFBSSxDQUN6RSxJQUFJLENBQ0wsRUFBRSxDQUNKLENBQUM7SUFDSixDQUFDOztvSEFoRFUsdUJBQXVCO3dIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJMThuQ29uZmlnIH0gZnJvbSAnLi9jb25maWcvaTE4bi1jb25maWcnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRpb25DaHVua1NlcnZpY2Uge1xuICBwcm90ZWN0ZWQgZHVwbGljYXRlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge307XG4gIHByb3RlY3RlZCBjaHVua3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNvbmZpZzogSTE4bkNvbmZpZykge1xuICAgIGNvbnN0IGNodW5rcyA9IChjb25maWcuaTE4biAmJiBjb25maWcuaTE4bi5jaHVua3MpIHx8IHt9O1xuICAgIE9iamVjdC5rZXlzKGNodW5rcykuZm9yRWFjaCgoY2h1bmspID0+IHtcbiAgICAgIGNodW5rc1tjaHVua10uZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNodW5rcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmR1cGxpY2F0ZXNba2V5XSkge1xuICAgICAgICAgICAgdGhpcy5kdXBsaWNhdGVzW2tleV0gPSBbdGhpcy5jaHVua3Nba2V5XV07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZHVwbGljYXRlc1trZXldLnB1c2goY2h1bmspO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY2h1bmtzW2tleV0gPSBjaHVuaztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZHVwbGljYXRlcykubGVuZ3RoID4gMCAmJiBpc0Rldk1vZGUoKSkge1xuICAgICAgdGhpcy53YXJuRHVwbGljYXRlcyh0aGlzLmR1cGxpY2F0ZXMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBLRVlfU0VQQVJBVE9SID0gJy4nO1xuXG4gIGdldENodW5rTmFtZUZvcktleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWFpbktleSA9IChrZXkgfHwgJycpLnNwbGl0KHRoaXMuS0VZX1NFUEFSQVRPUilbMF07XG4gICAgY29uc3QgY2h1bmsgPSB0aGlzLmNodW5rcyAmJiB0aGlzLmNodW5rc1ttYWluS2V5XTtcblxuICAgIGlmICghY2h1bmspIHtcbiAgICAgIHJldHVybiBtYWluS2V5OyAvLyBmYWxsYmFjayB0byBtYWluIGtleSBhcyBhIGNodW5rXG4gICAgfVxuICAgIHJldHVybiBjaHVuaztcbiAgfVxuXG4gIHByaXZhdGUgd2FybkR1cGxpY2F0ZXMoaXRlbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSk6IHZvaWQge1xuICAgIGNvbnN0IGR1cGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIE9iamVjdC5rZXlzKGl0ZW1zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGR1cGVzLnB1c2goXG4gICAgICAgIGAqICcke2tleX0nIGZvdW5kIGluIGNodW5rczogJHtpdGVtc1trZXldLmpvaW4oJywgJyl9LiBVc2VkICcke1xuICAgICAgICAgIHRoaXMuY2h1bmtzW2tleV1cbiAgICAgICAgfS4ke2tleX0nLmBcbiAgICAgICk7XG4gICAgfSk7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgYER1cGxpY2F0ZWQga2V5cyBoYXMgYmVlbiBmb3VuZCBpbiB0aGUgY29uZmlnIG9mIGkxOG4gY2h1bmtzOlxcbiR7ZHVwZXMuam9pbihcbiAgICAgICAgJ1xcbidcbiAgICAgICl9YFxuICAgICk7XG4gIH1cbn1cbiJdfQ==