UNPKG

@voerkai18n/cli

Version:

命令行工具,用来初始化/提取/编译/自动翻译等工具链

54 lines (40 loc) 1.43 kB
const { t } = require("../../i18n"); const path = require("node:path"); const logsets = require("logsets"); const glob = require("fast-glob"); const { readFile } = require("flex-tools/fs/nodefs"); const { compileMessages } = require("./messages"); const { compileParagraphs } = require("./paragraphs"); const { generateIdMap } = require("./idMap"); const { getDir } = require("@voerkai18n/utils"); async function mergeTranslatedMessages(){ const { tasks, langDir } = this const messagesDir = getDir(path.join(langDir,"translates","messages")) tasks const files = await glob(["*.json","!*.bak.*.json"],{ cwd : messagesDir, absolute: true }) const messages = {} for(let file of files){ const content = await readFile(file, { encoding: "utf-8" }) Object.assign(messages,JSON.parse(content,null,4)) } return messages } /** * @param {import("@voerkai18n/utils").VoerkaI18nProjectContext} ctx */ async function compile(ctx){ const { langRelDir } = ctx logsets.header(t("开始编译语言包: {}"),langRelDir) const allMessages = await mergeTranslatedMessages.call(ctx) ctx.tasks = logsets.tasklist({grouped:true}) await compileMessages.call(ctx,allMessages) await generateIdMap.call(ctx,allMessages) await compileParagraphs.call(ctx) ctx.tasks.done() } module.exports = { compile }