UNPKG

@lingui/cli

Version:

Lingui CLI to extract messages, compile catalogs, and manage translation workflows

34 lines (33 loc) 1.7 kB
import { resolveTemplatePath } from "./resolveTemplatePath.js"; import { styleText } from "node:util"; import { resolveCatalogPath } from "./resolveCatalogPath.js"; import { mergeCatalog } from "../api/catalog/mergeCatalog.js"; import { printStats } from "../api/stats.js"; import { cleanObsolete, order } from "../api/catalog.js"; function cleanAndSort(catalog, clean, orderBy) { if (clean) { catalog = cleanObsolete(catalog); } return order(orderBy, catalog); } export async function writeCatalogs(params) { const { entryPoint, outputPattern, linguiConfig, locales, overwrite, format, clean, messages, } = params; const stat = {}; for (const locale of locales) { const catalogOutput = resolveCatalogPath(outputPattern, entryPoint, linguiConfig.rootDir, locale, format.getCatalogExtension()); const catalog = mergeCatalog(await format.read(catalogOutput, locale), messages, locale === linguiConfig.sourceLocale, { overwrite }); await format.write(catalogOutput, cleanAndSort(catalog, clean, linguiConfig.orderBy), locale); stat[locale] = catalog; } return { statMessage: printStats(linguiConfig, stat).toString(), }; } export async function writeTemplate(params) { const { entryPoint, outputPattern, linguiConfig, format, clean, messages } = params; const catalogOutput = resolveTemplatePath(entryPoint, outputPattern, linguiConfig.rootDir, format.getTemplateExtension()); await format.write(catalogOutput, cleanAndSort(messages, clean, linguiConfig.orderBy), undefined); return { statMessage: `${styleText("bold", String(Object.keys(messages).length))} message(s) extracted`, }; }