EmboFlow/apps/web/src/runtime/i18n.test.ts
2026-03-30 03:02:44 +08:00

45 lines
1.6 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
import { localizeNodeDefinition, translate } from "./i18n.tsx";
test("translate returns chinese and english labels for shared frontend keys", () => {
assert.equal(translate("en", "navProjects"), "Projects");
assert.equal(translate("zh", "navProjects"), "项目");
assert.equal(translate("en", "templateSaved"), "Saved template");
assert.equal(translate("zh", "templateSaved"), "已保存模板");
assert.equal(translate("en", "navWorkflows"), "Workflows");
assert.equal(translate("zh", "navWorkflows"), "工作流");
assert.equal(translate("en", "navNodes"), "Nodes");
assert.equal(translate("zh", "navNodes"), "节点");
assert.equal(
translate("en", "invalidConnectionCycle"),
"This edge would create a cycle.",
);
assert.equal(
translate("zh", "dragNodeToCanvas"),
"将节点拖放到这里即可在画布中创建。",
);
assert.equal(
translate("en", "workflowCreatedName", { count: 3 }),
"Delivery Normalize 3",
);
assert.equal(
translate("zh", "workflowCreatedName", { count: 3 }),
"交付标准化 3",
);
});
test("localize built-in node definitions into chinese labels", () => {
const localized = localizeNodeDefinition("zh", {
id: "validate-structure",
name: "Validate Structure",
description: "Validate required directories and metadata files.",
category: "Inspect",
});
assert.equal(localized.name, "校验目录结构");
assert.equal(localized.category, "检查");
assert.match(localized.description ?? "", /元数据/);
});