@ogs-gmbh/ngx-translate
Version:
A lightweight, REST-based Angular i18n library designed for seamless internationalization with minimal setup. It supports dynamic language switching & flexible translation management via RESTful APIs.
65 lines • 11.8 kB
JavaScript
import { ScopeNotDefinedError } from "../errors/scope-not-defined.error";
import { TranslationNotDefinedError } from "../errors/translation-not-defined.error";
export const parseMultiScopedFile = (multiScopedFile) => {
const splittedMultiScopedFile = [];
const globalScopedFile = {};
Object.keys(multiScopedFile).forEach((key) => {
const currentItem = multiScopedFile[key];
if (!(currentItem !== undefined && !Array.isArray(currentItem)))
return;
if (typeof currentItem === "object") {
return void splittedMultiScopedFile.push({
scopeName: key,
file: currentItem
});
}
globalScopedFile[key] = currentItem;
});
splittedMultiScopedFile.push({
scopeName: null,
file: globalScopedFile
});
return splittedMultiScopedFile;
};
export const splitMultiScopedFile = (multiScopedFile) => {
const scopedFile = [];
const globalScopedFile = {};
Object.keys(multiScopedFile).forEach((key) => {
const currentItem = multiScopedFile[key];
if (!(currentItem !== undefined && !Array.isArray(currentItem)))
return;
if (typeof currentItem === "object")
return void scopedFile.push(currentItem);
globalScopedFile[key] = currentItem;
});
scopedFile.push(globalScopedFile);
return scopedFile;
};
export const findScopeInMultiScopedFile = (multiScopedFile, scopeName) => {
if (scopeName === null) {
const newScopedFile = {};
Object.keys(multiScopedFile).forEach((key) => {
const currentItem = multiScopedFile[key];
if (!(currentItem !== undefined && typeof currentItem !== "object" && !Array.isArray(currentItem)))
return;
newScopedFile[key] = currentItem;
});
return newScopedFile;
}
const scopedFile = multiScopedFile[scopeName];
if (scopedFile === undefined)
throw new ScopeNotDefinedError(false, scopeName);
return scopedFile;
};
export const parseMultiScopedFileByScope = (multiScopedFile, scopeName) => {
if (Array.isArray(scopeName))
return scopeName.map((_scopeName) => findScopeInMultiScopedFile(multiScopedFile, _scopeName));
return [findScopeInMultiScopedFile(multiScopedFile, scopeName)];
};
export const findTokenInScopedFiles = (scopedFiles, token) => {
const foundScopedFile = scopedFiles.find((scopedFile) => Object.keys(scopedFile).includes(token));
if (foundScopedFile === undefined)
throw new TranslationNotDefinedError(token);
return foundScopedFile;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL2ZpbGUudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQU9yRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLGVBQWdDLEVBQTBCLEVBQUU7SUFDL0YsTUFBTSx1QkFBdUIsR0FBMkIsRUFBRSxDQUFDO0lBQzNELE1BQU0sZ0JBQWdCLEdBQTJCLEVBQUUsQ0FBQztJQUVwRCxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBUSxFQUFFO1FBQ3pELE1BQU0sV0FBVyxHQUEyQixlQUFlLENBQUUsR0FBRyxDQUFFLENBQUM7UUFFbkUsSUFBSSxDQUFDLENBQUMsV0FBVyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0QsT0FBTztRQUVULElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEMsT0FBTyxLQUFLLHVCQUF1QixDQUFDLElBQUksQ0FBQztnQkFDdkMsU0FBUyxFQUFFLEdBQUc7Z0JBQ2QsSUFBSSxFQUFFLFdBQVc7YUFDbEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELGdCQUFnQixDQUFFLEdBQUcsQ0FBRSxHQUFHLFdBQVcsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNILHVCQUF1QixDQUFDLElBQUksQ0FBQztRQUMzQixTQUFTLEVBQUUsSUFBSTtRQUNmLElBQUksRUFBRSxnQkFBZ0I7S0FDdkIsQ0FBQyxDQUFDO0lBRUgsT0FBTyx1QkFBdUIsQ0FBQztBQUNqQyxDQUFDLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxv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ZXMsIFNjb3BlZEZpbGUgfSBmcm9tIFwiLi4vdHlwZXMvc3RvcmUudHlwZVwiO1xuaW1wb3J0IHsgU2NvcGVOb3REZWZpbmVkRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzL3Njb3BlLW5vdC1kZWZpbmVkLmVycm9yXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGlvbk5vdERlZmluZWRFcnJvciB9IGZyb20gXCIuLi9lcnJvcnMvdHJhbnNsYXRpb24tbm90LWRlZmluZWQuZXJyb3JcIjtcblxuLyoqXG4gKiBQYXJzZSBhIG11bHRpIHNjb3BlZCBmaWxlIGJ5IHRoZSBkZWZpbmVkIHNjb3Blc1xuICogQHBhcmFtIHtNdWx0aVNjb3BlZEZpbGV9IG11bHRpU2NvcGVkRmlsZSAtIFRoZSBtdWx0aSBzY29wZWQgZmlsZSwgdGhhdCBzaG91bGQgYmUgcGFyc2VkXG4gKiBAcmV0dXJucyB7UGFyc2VkTXVsdGlTY29wZWRGaWxlc30gLSBBIHBhcnRpYWwgc2NvcGVkIGZpbGUgZm9yIHByb2Nlc3NpbmcgaXQgZnVydGhlclxuICovXG5leHBvcnQgY29uc3QgcGFyc2VNdWx0aVNjb3BlZEZpbGUgPSAobXVsdGlTY29wZWRGaWxlOiBNdWx0aVNjb3BlZEZpbGUpOiBQYXJzZWRNdWx0aVNjb3BlZEZpbGVzID0+IHtcbiAgY29uc3Qgc3BsaXR0ZWRNdWx0aVNjb3BlZEZpbGU6IFBhcnNlZE11bHRpU2NvcGVkRmlsZXMgPSBbXTtcbiAgY29uc3QgZ2xvYmFsU2NvcGVkRmlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIE9iamVjdC5rZXlzKG11bHRpU2NvcGVkRmlsZSkuZm9yRWFjaCgoa2V5OiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICBjb25zdCBjdXJyZW50SXRlbTogU2NvcGVkRmlsZSB8IHVuZGVmaW5lZCA9IG11bHRpU2NvcGVkRmlsZVsga2V5IF07XG5cbiAgICBpZiAoIShjdXJyZW50SXRlbSAhPT0gdW5kZWZpbmVkICYmICFBcnJheS5pc0FycmF5KGN1cnJlbnRJdGVtKSkpXG4gICAgICByZXR1cm47XG5cbiAgICBpZiAodHlwZW9mIGN1cnJlbnRJdGVtID09PSBcIm9iamVjdFwiKSB7XG4gICAgICByZXR1cm4gdm9pZCBzcGxpdHRlZE11bHRpU2NvcGVkRmlsZS5wdXNoKHtcbiAgICAgICAgc2NvcGVOYW1lOiBrZXksXG4gICAgICAgIGZpbGU6IGN1cnJlbnRJdGVtXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBnbG9iYWxTY29wZWRGaWxlWyBrZXkgXSA9IGN1cnJlbnRJdGVtO1xuICB9KTtcbiAgc3BsaXR0ZWRNdWx0aVNjb3BlZEZpbGUucHVzaCh7XG4gICAgc2NvcGVOYW1lOiBudWxsLFxuICAgIGZpbGU6IGdsb2JhbFNjb3BlZEZpbGVcbiAgfSk7XG5cbiAgcmV0dXJuIHNwbGl0dGVkTXVsdGlTY29wZWRGaWxlO1xufTtcbmV4cG9ydCBjb25zdCBzcGxpdE11bHRpU2NvcGVkRmlsZSA9IChtdWx0aVNjb3BlZEZpbGU6IE11bHRpU2NvcGVkRmlsZSk6IFNjb3BlZEZpbGVbXSA9PiB7XG4gIGNvbnN0IHNjb3BlZEZpbGU6IFNjb3BlZEZpbGVbXSA9IFtdO1xuICBjb25zdCBnbG9iYWxTY29wZWRGaWxlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgT2JqZWN0LmtleXMobXVsdGlTY29wZWRGaWxlKS5mb3JFYWNoKChrZXk6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRJdGVtOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB8IHVuZGVmaW5lZCA9IG11bHRpU2NvcGVkRmlsZVsga2V5IF07XG5cbiAgICBpZiAoIShjdXJyZW50SXRlbSAhPT0gdW5kZWZpbmVkICYmICFBcnJheS5pc0FycmF5KGN1cnJlbnRJdGVtKSkpXG4gICAgICByZXR1cm47XG5cbiAgICBpZiAodHlwZW9mIGN1cnJlbnRJdGVtID09PSBcIm9iamVjdFwiKVxuICAgICAgcmV0dXJuIHZvaWQgc2NvcGVkRmlsZS5wdXNoKGN1cnJlbnRJdGVtKTtcblxuICAgIGdsb2JhbFNjb3BlZEZpbGVbIGtleSBdID0gY3VycmVudEl0ZW07XG4gIH0pO1xuICBzY29wZWRGaWxlLnB1c2goZ2xvYmFsU2NvcGVkRmlsZSk7XG5cbiAgcmV0dXJuIHNjb3BlZEZpbGU7XG59O1xuLyoqXG4gKiBGaW5kIGEgc2NvcGUgaW5zaWRlIGEgbXVsdGkgc2NvcGVkIGZpbGVcXFxuICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBzY29wZSBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgb3V0IG9mIHRoZSBtdWx0aSBzY29wZWQgZmlsZVxuICogQHBhcmFtIHtNdWx0aVNjb3BlZEZpbGV9IG11bHRpU2NvcGVkRmlsZSAtIFRoZSBtdWx0aSBzY29wZWQgZmlsZSwgdGhhdCBzaG91bGQgaW5jbHVkZSB0aGUgc2NvcGVcbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gc2NvcGVOYW1lIC0gVGhlIHNjb3BlIG5hbWUsIHRoYXQnbGwgYmUgc2VhcmNoZWRcbiAqIEByZXR1cm5zIHtTY29wZWRGaWxlfSAtIFRoZSBmb3VuZCBzY29wZWQgZmlsZVxuICovXG5leHBvcnQgY29uc3QgZmluZFNjb3BlSW5NdWx0aVNjb3BlZEZpbGUgPSAobXVsdGlTY29wZWRGaWxlOiBNdWx0aVNjb3BlZEZpbGUsIHNjb3BlTmFtZTogc3RyaW5nIHwgbnVsbCk6IFNjb3BlZEZpbGUgPT4ge1xuICAvLyBGaWx0ZXIgYWxsIG5vdC1uZXN0ZWQgZWxlbWVudHMgdG8gcmVwcmVzZW50IHRoZSBnbG9iYWwgc2NvcGUuXG4gIGlmIChzY29wZU5hbWUgPT09IG51bGwpIHtcbiAgICBjb25zdCBuZXdTY29wZWRGaWxlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICBPYmplY3Qua2V5cyhtdWx0aVNjb3BlZEZpbGUpLmZvckVhY2goKGtleTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50SXRlbTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gfCB1bmRlZmluZWQgPSBtdWx0aVNjb3BlZEZpbGVbIGtleSBdO1xuXG4gICAgICBpZiAoIShjdXJyZW50SXRlbSAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBjdXJyZW50SXRlbSAhPT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheShjdXJyZW50SXRlbSkpKVxuICAgICAgICByZXR1cm47XG5cbiAgICAgIG5ld1Njb3BlZEZpbGVbIGtleSBdID0gY3VycmVudEl0ZW07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3U2NvcGVkRmlsZTtcbiAgfVxuXG4gIC8vIEdldCB0aGUgc3BlY2lmaWMgc2NvcGVkIGZpbGVcbiAgY29uc3Qgc2NvcGVkRmlsZTogU2NvcGVkRmlsZSB8IHVuZGVmaW5lZCA9IG11bHRpU2NvcGVkRmlsZVsgc2NvcGVOYW1lIF07XG5cbiAgaWYgKHNjb3BlZEZpbGUgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IFNjb3BlTm90RGVmaW5lZEVycm9yKGZhbHNlLCBzY29wZU5hbWUpO1xuXG4gIHJldHVybiBzY29wZWRGaWxlO1xufTtcbi8qKlxuICogUGFyc2UgYSBtdWx0aSBzY29wZWQgZmlsZVxuICogQHBhcmFtIHtNdWx0aVNjb3BlZEZpbGV9IG11bHRpU2NvcGVkRmlsZSAtIFRoZSBtdWx0aSBzY29wZWQgZmlsZSwgdGhhdCdsbCBiZSBwYXJzZWRcbiAqIEBwYXJhbSB7c3RyaW5nW10gfCBzdHJpbmd9IHNjb3BlTmFtZSAtIFRoZSBzY29wZSBuYW1lLCB0aGF0J2xsIGJlIHJlc29sdmVkXG4gKiBAcmV0dXJucyB7U2NvcGVkRmlsZVtdfSAtIEFsbCBzY29wZWQgZmlsZXMsIHRoYXQgbWF0Y2ggdGhlIHNjb3BlIG5hbWVcbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlTXVsdGlTY29wZWRGaWxlQnlTY29wZSA9IChtdWx0aVNjb3BlZEZpbGU6IE11bHRpU2NvcGVkRmlsZSwgc2NvcGVOYW1lOiBzdHJpbmdbXSB8IHN0cmluZyk6IFNjb3BlZEZpbGVbXSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KHNjb3BlTmFtZSkpXG4gICAgcmV0dXJuIHNjb3BlTmFtZS5tYXAoKF9zY29wZU5hbWU6IHN0cmluZyk6IFNjb3BlZEZpbGUgPT4gZmluZFNjb3BlSW5NdWx0aVNjb3BlZEZpbGUobXVsdGlTY29wZWRGaWxlLCBfc2NvcGVOYW1lKSk7XG5cblxuICByZXR1cm4gWyBmaW5kU2NvcGVJbk11bHRpU2NvcGVkRmlsZShtdWx0aVNjb3BlZEZpbGUsIHNjb3BlTmFtZSkgXTtcbn07XG5leHBvcnQgY29uc3QgZmluZFRva2VuSW5TY29wZWRGaWxlcyA9IChzY29wZWRGaWxlczogcmVhZG9ubHkgU2NvcGVkRmlsZVtdLCB0b2tlbjogc3RyaW5nKTogU2NvcGVkRmlsZSA9PiB7XG4gIGNvbnN0IGZvdW5kU2NvcGVkRmlsZTogU2NvcGVkRmlsZSB8IHVuZGVmaW5lZCA9IHNjb3BlZEZpbGVzLmZpbmQoKHNjb3BlZEZpbGU6IFNjb3BlZEZpbGUpOiBib29sZWFuID0+IE9iamVjdC5rZXlzKHNjb3BlZEZpbGUpLmluY2x1ZGVzKHRva2VuKSk7XG5cbiAgaWYgKGZvdW5kU2NvcGVkRmlsZSA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgVHJhbnNsYXRpb25Ob3REZWZpbmVkRXJyb3IodG9rZW4pO1xuXG4gIHJldHVybiBmb3VuZFNjb3BlZEZpbGU7XG59O1xuXG4iXX0=