diff --git a/web/src/i18n/en.ts b/web/src/i18n/en.ts
index 8b387b463..1e77090d0 100644
--- a/web/src/i18n/en.ts
+++ b/web/src/i18n/en.ts
@@ -170,8 +170,10 @@ export const en: Translations = {
noSkills: "No skills found. Skills are loaded from ~/.hermes/skills/",
noSkillsMatch: "No skills match your search or filter.",
skillCount: "{count} skill{s}",
+ resultCount: "{count} result{s}",
noDescription: "No description available.",
toolsets: "Toolsets",
+ toolsetLabel: "{name} toolset",
noToolsetsMatch: "No toolsets match the search.",
setupNeeded: "Setup needed",
disabledForCli: "Disabled for CLI",
diff --git a/web/src/i18n/types.ts b/web/src/i18n/types.ts
index 86b21c405..6a7341ebe 100644
--- a/web/src/i18n/types.ts
+++ b/web/src/i18n/types.ts
@@ -178,8 +178,10 @@ export interface Translations {
noSkills: string;
noSkillsMatch: string;
skillCount: string;
+ resultCount: string;
noDescription: string;
toolsets: string;
+ toolsetLabel: string;
noToolsetsMatch: string;
setupNeeded: string;
disabledForCli: string;
diff --git a/web/src/i18n/zh.ts b/web/src/i18n/zh.ts
index 5138cae05..66f506935 100644
--- a/web/src/i18n/zh.ts
+++ b/web/src/i18n/zh.ts
@@ -170,8 +170,10 @@ export const zh: Translations = {
noSkills: "未找到技能。技能从 ~/.hermes/skills/ 加载",
noSkillsMatch: "没有匹配的技能。",
skillCount: "{count} 个技能",
+ resultCount: "{count} 个结果",
noDescription: "暂无描述。",
toolsets: "工具集",
+ toolsetLabel: "{name} 工具集",
noToolsetsMatch: "没有匹配的工具集。",
setupNeeded: "需要配置",
disabledForCli: "CLI 已禁用",
diff --git a/web/src/pages/SkillsPage.tsx b/web/src/pages/SkillsPage.tsx
index 98ab08d13..3fc462b10 100644
--- a/web/src/pages/SkillsPage.tsx
+++ b/web/src/pages/SkillsPage.tsx
@@ -162,7 +162,7 @@ export default function SkillsPage() {
return a[0].localeCompare(b[0]);
})
.map(([key, count]) => ({ key, name: prettyCategory(key === "__none__" ? null : key, t.common.general), count }));
- }, [skills]);
+ }, [skills, t]);
const enabledCount = skills.filter((s) => s.enabled).length;
@@ -292,7 +292,7 @@ export default function SkillsPage() {
{t.skills.title}
- {searchMatchedSkills.length} result{searchMatchedSkills.length !== 1 ? "s" : ""}
+ {t.skills.resultCount.replace("{count}", String(searchMatchedSkills.length)).replace("{s}", searchMatchedSkills.length !== 1 ? "s" : "")}
@@ -405,7 +405,7 @@ export default function SkillsPage() {
)}
{ts.tools.length === 0 && (
- {ts.enabled ? `${ts.name} toolset` : t.skills.disabledForCli}
+ {ts.enabled ? t.skills.toolsetLabel.replace("{name}", ts.name) : t.skills.disabledForCli}
)}