Skip to content

[Feature] 内置斜杠命令描述国际化(命令面板 compact/name/export/settings 仍为英文) #50

Description

@Q1y1ng

内置斜杠命令描述未国际化(/ 面板全英文)

现象

对话框输入 / 弹出的命令面板里,内置命令的说明全是英文,与界面其余部分的中文不一致。

面板内容由 main 的 slashCommandsForSession() 拼装:

return [
  ...BUILTIN_SLASH_COMMANDS,
  ...templateCommands(session.resourceLoader),
  ...skillCommands(session.resourceLoader),
  ...extensions
];

其中内置 4 条是硬编码英文字符串(out/main/index.js):

const BUILTIN_SLASH_COMMANDS = [
  { name: "compact",  description: "Compress session context",     argumentHint: "[focus]", source: "builtin", supported: true },
  { name: "name",     description: "Set session display name",     argumentHint: "<name>",  source: "builtin", supported: true },
  { name: "export",   description: "Export session (.html/.jsonl)", argumentHint: "[path]", source: "builtin", supported: true },
  { name: "settings", description: "Open settings",                                          source: "builtin", supported: true }
];

为什么扩展侧改不了

  1. 上述数组先于扩展命令拼接,且 slashCommandsForSession() 与 slashCommandsForLoader() 都没有按 name 去重——扩展若重名注册 compact,面板会同时出现两条(一条英文内置 + 一条自定义),比不改更糟。因此无法用扩展「覆盖描述」。
  2. 扩展只能管自己的 registerCommand(name, { description });内置 4 条的 handler 在宿主内部,扩展拿不到委托入口。
  3. skills 那批同理:描述来自各 SKILL.md frontmatter(第三方 npm 包管理,升级即回退)。

建议

方案 A(推荐,彻底):内置命令描述走 i18n 字典,按当前语言取,例如

const BUILTIN_SLASH_COMMANDS = [
  { name: "compact",  description: t("slash.compact"),  ... },
  { name: "name",     description: t("slash.name"),     ... },
  { name: "export",   description: t("slash.export"),   ... },
  { name: "settings", description: t("slash.settings"), ... }
];

宿主已有中英字典(UI 其余部分已中文化),加 4 个 key 即可。

方案 B(顺带):给 slashCommandsForSession() 加一次按 name 去重(后者覆盖或前者优先,明确一个语义)。当前无去重意味着:两个扩展注册同名命令、或扩展与内置同名时,面板会出现重复条目——这本身也是个小 bug。

方案 C(可选):skill:* 条目的描述来自各 SKILL.md,若希望面板也中文,可考虑宿主在 promptTemplates / skills 侧支持一个中英对照(或允许扩展/技能声明 descriptionZh),但优先级低于 A。

验收

  • / 面板中内置命令(compact / name / export / settings)说明随界面语言显示中文
  • 命令面板不再出现同名重复条目

Activity

  1. Jaxton07 commented on Sep 30, 2026

    @Jaxton07
    Owner

    内置 slash 命令国际化已通过 #82 实现,并随 v0.6.2 发布。

    中文界面下,compact、name、export、settings 的名称、说明与参数提示均使用中文,并支持中文名称搜索;切换英文后恢复英文。实际执行标识保持不变,skill、模板及扩展命令保留原始文案。

    第二个验收项「同名命令去重」尚未完全解决,已拆分至 #84 独立跟踪,不将它视为本次已修复的内容。

    本条按国际化诉求已完成关闭。感谢详细的问题分析!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions