@intlayer/chokidar
Version:
Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.
49 lines • 1.48 kB
JavaScript
import {
deepTransformNode,
NodeType
} from "@intlayer/core";
const filterTranlationsPlugin = (locales, fallback = void 0) => ({
id: "filter-translations-plugin",
canHandle: (node) => typeof node === "object" && node?.nodeType === NodeType.Translation,
transform: (node, props, deepTransformNode2) => {
const translationMap = node.translation;
const localesArray = Array.isArray(locales) ? locales : [locales];
const isSingleLocale = localesArray.length === 1;
if (isSingleLocale) {
let content = translationMap[localesArray[0]];
if (typeof content === "undefined" && fallback) {
content = translationMap[fallback];
}
return deepTransformNode2(content, props);
}
const filteredTranslationMap = Object.fromEntries(
Object.entries(translationMap).filter(
([key]) => locales.includes(key)
)
);
return {
...node,
translation: deepTransformNode2(filteredTranslationMap, {
...props,
keyPath: [
...props.keyPath,
{ type: NodeType.Object, key: NodeType.Translation }
]
})
};
}
});
const getFilteredLocalesContent = (node, locale, nodeProps, fallback) => {
const plugins = [
filterTranlationsPlugin(locale, fallback),
...nodeProps.plugins ?? []
];
return deepTransformNode(node, {
...nodeProps,
plugins
});
};
export {
getFilteredLocalesContent
};
//# sourceMappingURL=getFilteredLocalesContent.mjs.map