diff --git a/src/i18n/zh-CN.ts b/src/i18n/zh-CN.ts index 7afc2e3..bcf6673 100644 --- a/src/i18n/zh-CN.ts +++ b/src/i18n/zh-CN.ts @@ -815,11 +815,11 @@ export const zhCN: TranslationSchema = { modelHint: "尝试 deepseek-v4-flash 或 deepseek-v4-pro — 运行 /models 获取实时列表", modelUsage: "用法:/model ({hint})", modelNotInCatalog: - "model → {id} (⚠ 不在获取的目录中:{list}。如果这是错误的,下次调用将返回 400 — 运行 /models 刷新。)", - modelSet: "model → {id}", - presetAuto: "preset → auto (v4-flash → v4-pro 在困难轮次切换 · 默认)", - presetFlash: "preset → flash (始终使用 v4-flash · 最便宜 · /pro 仍可临时提升一轮)", - presetPro: "preset → pro (始终使用 v4-pro · 约 3 倍 flash · 用于困难的多轮工作)", + "模型 → {id} (⚠ 不在获取的目录中:{list}。如果这是错误的,下次调用将返回 400 — 运行 /models 刷新。)", + modelSet: "模型 → {id}", + presetAuto: "预设 → auto (deepseek-v4-flash → deepseek-v4-pro 在困难轮次切换 · 默认)", + presetFlash: "预设 → flash (始终使用 deepseek-v4-flash · 最便宜 · /pro 仍可临时提升一轮)", + presetPro: "预设 → pro (始终使用 deepseek-v4-pro · 约 3 倍 flash · 用于困难的多轮工作)", presetUsage: "用法:/preset ", proNothingArmed: "未启用 — /pro 不带参数将为下一轮启用 pro", proDisarmed: "▸ /pro 已解除 — 下一轮回退到当前预设", diff --git a/tests/carbon-productization.test.ts b/tests/carbon-productization.test.ts index 3ec9e37..206fb4d 100644 --- a/tests/carbon-productization.test.ts +++ b/tests/carbon-productization.test.ts @@ -59,6 +59,18 @@ describe("Carbon broad Reasonix import", () => { expect(t("mcpLifecycle.failedSetupHint")).toContain("`carboncode setup`"); }); + test("zh-CN slash model feedback uses localized labels", () => { + setLanguageRuntime("zh-CN"); + + expect(t("handlers.model.modelSet", { id: "deepseek-v4-flash" })).toContain("模型 →"); + expect(t("handlers.model.modelNotInCatalog", { id: "x", list: "a, b" })).toContain("模型 →"); + expect(t("handlers.model.presetAuto")).toContain("预设 → auto"); + expect(t("handlers.model.presetFlash")).toContain("预设 → flash"); + expect(t("handlers.model.presetPro")).toContain("预设 → pro"); + expect(t("handlers.model.presetAuto")).toContain("deepseek-v4-flash"); + expect(t("handlers.model.presetAuto")).toContain("deepseek-v4-pro"); + }); + test("protocol-facing runtime identities are Carbon-branded", () => { const acp = readFileSync(resolve("src/cli/commands/acp.ts"), "utf8"); const mcpClient = readFileSync(resolve("src/mcp/client.ts"), "utf8");