mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-20 15:33:54 +00:00
chore(desktop): i18n strings for tabs, zones, and session menus
This commit is contained in:
parent
369d0eeeff
commit
aff205dcc2
5 changed files with 320 additions and 6 deletions
|
|
@ -190,7 +190,9 @@ export const en: Translations = {
|
|||
unmuteHaptics: 'Unmute haptics',
|
||||
openSettings: 'Open settings',
|
||||
openStarmap: 'Open memory graph',
|
||||
openKeybinds: 'Keyboard shortcuts'
|
||||
openKeybinds: 'Keyboard shortcuts',
|
||||
layoutEditor: 'Layout editor',
|
||||
layoutEditorTitle: 'Layout editor — ⌘-click resets the layout'
|
||||
},
|
||||
|
||||
keybinds: {
|
||||
|
|
@ -221,6 +223,7 @@ export const en: Translations = {
|
|||
'nav.cron': 'Open scheduled jobs',
|
||||
'nav.agents': 'Open agents',
|
||||
'session.new': 'New session',
|
||||
'session.newTab': 'New session tab',
|
||||
'session.newWindow': 'New session in window',
|
||||
'session.next': 'Next session',
|
||||
'session.prev': 'Previous session',
|
||||
|
|
@ -249,7 +252,8 @@ export const en: Translations = {
|
|||
'view.prevTerminal': 'Previous terminal',
|
||||
'view.closeTerminal': 'Close terminal',
|
||||
'view.terminalSelection': 'Send terminal selection to composer',
|
||||
'view.closePreviewTab': 'Close preview tab',
|
||||
'view.closeTab': 'Close tab',
|
||||
'view.reopenTab': 'Reopen closed tab',
|
||||
'view.flipPanes': 'Swap sidebar sides',
|
||||
'appearance.toggleMode': 'Toggle light / dark',
|
||||
'profile.default': 'Switch to default profile',
|
||||
|
|
@ -316,7 +320,22 @@ export const en: Translations = {
|
|||
mcp: 'MCP',
|
||||
archivedChats: 'Archived Chats',
|
||||
about: 'About',
|
||||
notifications: 'Notifications'
|
||||
notifications: 'Notifications',
|
||||
plugins: 'Plugins'
|
||||
},
|
||||
plugins: {
|
||||
title: 'Desktop plugins',
|
||||
blurb:
|
||||
'UI extensions loaded into this app — bundled with the build, or dropped into the desktop-plugins folder (including ones Hermes writes). Disabling unloads a plugin live and survives restarts.',
|
||||
count: n => `${n} installed`,
|
||||
openFolder: 'Open plugins folder',
|
||||
rescan: 'Rescan',
|
||||
reveal: 'Reveal in file manager',
|
||||
enable: 'Enable',
|
||||
disable: 'Disable',
|
||||
failed: 'failed',
|
||||
empty: 'No desktop plugins installed yet.',
|
||||
kinds: { bundled: 'bundled', disk: 'on disk', runtime: 'runtime' }
|
||||
},
|
||||
notifications: {
|
||||
title: 'Notifications',
|
||||
|
|
@ -985,6 +1004,7 @@ export const en: Translations = {
|
|||
goTo: 'Go to',
|
||||
goToSession: 'Go to session',
|
||||
branches: 'Branches',
|
||||
commands: 'Commands',
|
||||
startInBranch: branch => `New conversation in ${branch}`,
|
||||
commandCenter: 'Command Center',
|
||||
appearance: 'Appearance',
|
||||
|
|
@ -1625,6 +1645,9 @@ export const en: Translations = {
|
|||
rename: 'Rename',
|
||||
archive: 'Archive',
|
||||
newWindow: 'New window',
|
||||
hideTabBar: 'Hide tab bar',
|
||||
openInNewTab: 'Open in new tab',
|
||||
openInSplit: 'Open in split',
|
||||
copyIdFailed: 'Could not copy session ID',
|
||||
actionsFor: title => `Actions for ${title}`,
|
||||
sessionActions: 'Session actions',
|
||||
|
|
@ -2280,6 +2303,57 @@ export const en: Translations = {
|
|||
}
|
||||
},
|
||||
|
||||
zones: {
|
||||
showHeader: 'Show header',
|
||||
hideHeader: 'Hide header',
|
||||
minimize: 'Minimize',
|
||||
restore: 'Restore',
|
||||
closeRunningTitle: 'Close running tab?',
|
||||
closeRunningBody: 'This chat is still working (or waiting on your input). Closing the tab hides it — the session keeps its progress and can be reopened from the sidebar.',
|
||||
closeRunningConfirm: 'Close tab',
|
||||
closeOthers: 'Close others',
|
||||
closeToRight: 'Close to the right',
|
||||
closeAll: 'Close all',
|
||||
split: dir => `Split ${dir}`,
|
||||
move: dir => `Move ${dir}`,
|
||||
dirUp: 'up',
|
||||
dirDown: 'down',
|
||||
dirLeft: 'left',
|
||||
dirRight: 'right',
|
||||
stackHere: 'Stack here',
|
||||
moveHere: 'Move here',
|
||||
splitHere: 'Split here',
|
||||
openHere: 'Open here',
|
||||
spanHere: 'Span here',
|
||||
staysHere: 'Stays here',
|
||||
pluginDisabled: pluginId => `Plugin "${pluginId}" disabled`,
|
||||
pluginDisabledBody: 'Re-enable it in Settings → Plugins to bring the pane back.',
|
||||
missingPane: paneId => `missing pane: ${paneId}`,
|
||||
editTitle: 'Layouts',
|
||||
editHint: 'Pick a layout, or drag panes between zones. Right-click a zone to split.',
|
||||
reset: 'Reset',
|
||||
templates: 'Templates',
|
||||
custom: 'Custom',
|
||||
newGridLayout: 'New grid layout',
|
||||
saveCurrentAs: 'Save current arrangement as a template',
|
||||
nameLayoutPlaceholder: 'Name this layout…',
|
||||
deletePreset: name => `Delete ${name}`,
|
||||
zoneEditorTitle: 'Zone editor',
|
||||
editorHintPre: 'click to split · ',
|
||||
editorHintPost: ' flips the line · drag across zones to merge · drag shared edges to resize',
|
||||
templateColumns: 'Columns',
|
||||
templateRows: 'Rows',
|
||||
templateGrid: 'Grid',
|
||||
templatePriority: 'Priority',
|
||||
zoneTag: index => `zone ${index}`,
|
||||
mergeZones: count => `Merge ${count} zones`,
|
||||
customZoneName: count => `Custom ${count}-zone`,
|
||||
layoutNamePlaceholder: fallback => `Layout name (${fallback})`,
|
||||
saveApply: 'Save & apply',
|
||||
notExpressible: 'this arrangement interlocks (pinwheel) — not expressible as nested splits yet',
|
||||
zoneCount: count => `${count} zones`
|
||||
},
|
||||
|
||||
assistant: {
|
||||
thread: {
|
||||
loadingSession: 'Loading session',
|
||||
|
|
|
|||
|
|
@ -2222,6 +2222,54 @@ export const ja = defineLocale({
|
|||
}
|
||||
},
|
||||
|
||||
zones: {
|
||||
showHeader: 'ヘッダーを表示',
|
||||
hideHeader: 'ヘッダーを隠す',
|
||||
minimize: '最小化',
|
||||
restore: '復元',
|
||||
closeOthers: '他を閉じる',
|
||||
closeToRight: '右側を閉じる',
|
||||
closeAll: 'すべて閉じる',
|
||||
split: dir => `${dir}に分割`,
|
||||
move: dir => `${dir}へ移動`,
|
||||
dirUp: '上',
|
||||
dirDown: '下',
|
||||
dirLeft: '左',
|
||||
dirRight: '右',
|
||||
stackHere: 'ここに重ねる',
|
||||
moveHere: 'ここに移動',
|
||||
splitHere: 'ここに分割',
|
||||
openHere: 'ここに開く',
|
||||
spanHere: 'ここにまたがる',
|
||||
staysHere: 'ここにとどまる',
|
||||
pluginDisabled: pluginId => `プラグイン「${pluginId}」を無効化しました`,
|
||||
pluginDisabledBody: '設定 → プラグイン で再有効化するとペインが戻ります。',
|
||||
missingPane: paneId => `ペインが見つかりません: ${paneId}`,
|
||||
editTitle: 'レイアウト',
|
||||
editHint: 'レイアウトを選ぶか、ペインをゾーン間へドラッグ。ゾーンを右クリックで分割。',
|
||||
reset: 'リセット',
|
||||
templates: 'テンプレート',
|
||||
custom: 'カスタム',
|
||||
newGridLayout: '新しいグリッドレイアウト',
|
||||
saveCurrentAs: '現在の配置をテンプレートとして保存',
|
||||
nameLayoutPlaceholder: 'レイアウト名を入力…',
|
||||
deletePreset: name => `${name} を削除`,
|
||||
zoneEditorTitle: 'ゾーンエディター',
|
||||
editorHintPre: 'クリックで分割 · ',
|
||||
editorHintPost: ' で線の向きを反転 · ゾーンをまたいでドラッグで結合 · 共有辺をドラッグでリサイズ',
|
||||
templateColumns: '列',
|
||||
templateRows: '行',
|
||||
templateGrid: 'グリッド',
|
||||
templatePriority: '優先',
|
||||
zoneTag: index => `ゾーン ${index}`,
|
||||
mergeZones: count => `${count} 個のゾーンを結合`,
|
||||
customZoneName: count => `カスタム ${count} ゾーン`,
|
||||
layoutNamePlaceholder: fallback => `レイアウト名(${fallback})`,
|
||||
saveApply: '保存して適用',
|
||||
notExpressible: 'この配置は互いに噛み合っています(風車型)— 入れ子の分割では表現できません',
|
||||
zoneCount: count => `${count} ゾーン`
|
||||
},
|
||||
|
||||
assistant: {
|
||||
thread: {
|
||||
loadingSession: 'セッションを読み込み中',
|
||||
|
|
|
|||
|
|
@ -232,6 +232,8 @@ export interface Translations {
|
|||
openSettings: string
|
||||
openStarmap: string
|
||||
openKeybinds: string
|
||||
layoutEditor: string
|
||||
layoutEditorTitle: string
|
||||
}
|
||||
|
||||
keybinds: {
|
||||
|
|
@ -277,6 +279,20 @@ export interface Translations {
|
|||
archivedChats: string
|
||||
about: string
|
||||
notifications: string
|
||||
plugins: string
|
||||
}
|
||||
plugins: {
|
||||
title: string
|
||||
blurb: string
|
||||
count: (n: number) => string
|
||||
openFolder: string
|
||||
rescan: string
|
||||
reveal: string
|
||||
enable: string
|
||||
disable: string
|
||||
failed: string
|
||||
empty: string
|
||||
kinds: { bundled: string; disk: string; runtime: string }
|
||||
}
|
||||
notifications: {
|
||||
title: string
|
||||
|
|
@ -865,6 +881,7 @@ export interface Translations {
|
|||
goTo: string
|
||||
goToSession: string
|
||||
branches: string
|
||||
commands: string
|
||||
startInBranch: (branch: string) => string
|
||||
commandCenter: string
|
||||
appearance: string
|
||||
|
|
@ -1350,6 +1367,9 @@ export interface Translations {
|
|||
rename: string
|
||||
archive: string
|
||||
newWindow: string
|
||||
hideTabBar: string
|
||||
openInNewTab: string
|
||||
openInSplit: string
|
||||
copyIdFailed: string
|
||||
actionsFor: (title: string) => string
|
||||
sessionActions: string
|
||||
|
|
@ -1908,6 +1928,57 @@ export interface Translations {
|
|||
}
|
||||
}
|
||||
|
||||
zones: {
|
||||
showHeader: string
|
||||
hideHeader: string
|
||||
minimize: string
|
||||
restore: string
|
||||
closeRunningTitle: string
|
||||
closeRunningBody: string
|
||||
closeRunningConfirm: string
|
||||
closeOthers: string
|
||||
closeToRight: string
|
||||
closeAll: string
|
||||
split: (dir: string) => string
|
||||
move: (dir: string) => string
|
||||
dirUp: string
|
||||
dirDown: string
|
||||
dirLeft: string
|
||||
dirRight: string
|
||||
stackHere: string
|
||||
moveHere: string
|
||||
splitHere: string
|
||||
openHere: string
|
||||
spanHere: string
|
||||
staysHere: string
|
||||
pluginDisabled: (pluginId: string) => string
|
||||
pluginDisabledBody: string
|
||||
missingPane: (paneId: string) => string
|
||||
editTitle: string
|
||||
editHint: string
|
||||
reset: string
|
||||
templates: string
|
||||
custom: string
|
||||
newGridLayout: string
|
||||
saveCurrentAs: string
|
||||
nameLayoutPlaceholder: string
|
||||
deletePreset: (name: string) => string
|
||||
zoneEditorTitle: string
|
||||
editorHintPre: string
|
||||
editorHintPost: string
|
||||
templateColumns: string
|
||||
templateRows: string
|
||||
templateGrid: string
|
||||
templatePriority: string
|
||||
zoneTag: (index: number) => string
|
||||
mergeZones: (count: number) => string
|
||||
customZoneName: (count: number) => string
|
||||
layoutNamePlaceholder: (fallback: string) => string
|
||||
saveApply: string
|
||||
notExpressible: string
|
||||
zoneCount: (count: number) => string
|
||||
}
|
||||
|
||||
assistant: {
|
||||
thread: {
|
||||
loadingSession: string
|
||||
|
|
|
|||
|
|
@ -2155,6 +2155,54 @@ export const zhHant = defineLocale({
|
|||
}
|
||||
},
|
||||
|
||||
zones: {
|
||||
showHeader: '顯示標題列',
|
||||
hideHeader: '隱藏標題列',
|
||||
minimize: '最小化',
|
||||
restore: '還原',
|
||||
closeOthers: '關閉其他',
|
||||
closeToRight: '關閉右側',
|
||||
closeAll: '全部關閉',
|
||||
split: dir => `向${dir}分割`,
|
||||
move: dir => `向${dir}移動`,
|
||||
dirUp: '上',
|
||||
dirDown: '下',
|
||||
dirLeft: '左',
|
||||
dirRight: '右',
|
||||
stackHere: '堆疊到此處',
|
||||
moveHere: '移動到此處',
|
||||
splitHere: '在此分割',
|
||||
openHere: '在此開啟',
|
||||
spanHere: '跨越到此處',
|
||||
staysHere: '留在此處',
|
||||
pluginDisabled: pluginId => `外掛「${pluginId}」已停用`,
|
||||
pluginDisabledBody: '在 設定 → 外掛 中重新啟用即可恢復面板。',
|
||||
missingPane: paneId => `缺少面板:${paneId}`,
|
||||
editTitle: '版面配置',
|
||||
editHint: '選擇一個版面配置,或在區域之間拖曳面板。右鍵點擊區域可分割。',
|
||||
reset: '重設',
|
||||
templates: '範本',
|
||||
custom: '自訂',
|
||||
newGridLayout: '新增網格版面',
|
||||
saveCurrentAs: '將目前排列儲存為範本',
|
||||
nameLayoutPlaceholder: '為版面命名…',
|
||||
deletePreset: name => `刪除 ${name}`,
|
||||
zoneEditorTitle: '區域編輯器',
|
||||
editorHintPre: '點擊分割 · ',
|
||||
editorHintPost: ' 翻轉分割線 · 拖曳跨越多個區域可合併 · 拖曳共用邊可調整大小',
|
||||
templateColumns: '欄',
|
||||
templateRows: '列',
|
||||
templateGrid: '網格',
|
||||
templatePriority: '優先',
|
||||
zoneTag: index => `區域 ${index}`,
|
||||
mergeZones: count => `合併 ${count} 個區域`,
|
||||
customZoneName: count => `自訂 ${count} 區`,
|
||||
layoutNamePlaceholder: fallback => `版面名稱(${fallback})`,
|
||||
saveApply: '儲存並套用',
|
||||
notExpressible: '此排列互相咬合(風車形)——暫時無法表示為巢狀分割',
|
||||
zoneCount: count => `${count} 個區域`
|
||||
},
|
||||
|
||||
assistant: {
|
||||
thread: {
|
||||
loadingSession: '正在載入工作階段',
|
||||
|
|
|
|||
|
|
@ -185,7 +185,9 @@ export const zh: Translations = {
|
|||
unmuteHaptics: '开启触感反馈',
|
||||
openSettings: '打开设置',
|
||||
openStarmap: '打开记忆图谱',
|
||||
openKeybinds: '键盘快捷键'
|
||||
openKeybinds: '键盘快捷键',
|
||||
layoutEditor: '布局编辑器',
|
||||
layoutEditorTitle: '布局编辑器 — ⌘ 点击重置布局'
|
||||
},
|
||||
|
||||
keybinds: {
|
||||
|
|
@ -216,6 +218,7 @@ export const zh: Translations = {
|
|||
'nav.cron': '打开定时任务',
|
||||
'nav.agents': '打开智能体',
|
||||
'session.new': '新建会话',
|
||||
'session.newTab': '新建会话标签',
|
||||
'session.newWindow': '在新窗口中新建会话',
|
||||
'session.next': '下一个会话',
|
||||
'session.prev': '上一个会话',
|
||||
|
|
@ -240,7 +243,8 @@ export const zh: Translations = {
|
|||
'view.showFiles': '显示文件浏览器',
|
||||
'view.showTerminal': '显示终端',
|
||||
'view.terminalSelection': '将终端选区发送到输入框',
|
||||
'view.closePreviewTab': '关闭预览标签',
|
||||
'view.closeTab': '关闭标签',
|
||||
'view.reopenTab': '重新打开已关闭的标签',
|
||||
'view.flipPanes': '交换侧边栏位置',
|
||||
'appearance.toggleMode': '切换浅色/深色',
|
||||
'profile.default': '切换到默认配置',
|
||||
|
|
@ -307,7 +311,21 @@ export const zh: Translations = {
|
|||
mcp: 'MCP',
|
||||
archivedChats: '已归档对话',
|
||||
about: '关于',
|
||||
notifications: '通知'
|
||||
notifications: '通知',
|
||||
plugins: '插件'
|
||||
},
|
||||
plugins: {
|
||||
title: '桌面插件',
|
||||
blurb: '加载到此应用中的界面扩展——随构建捆绑,或放入 desktop-plugins 文件夹(包括 Hermes 编写的插件)。禁用会即时卸载插件并在重启后保持。',
|
||||
count: n => `已安装 ${n} 个`,
|
||||
openFolder: '打开插件文件夹',
|
||||
rescan: '重新扫描',
|
||||
reveal: '在文件管理器中显示',
|
||||
enable: '启用',
|
||||
disable: '禁用',
|
||||
failed: '失败',
|
||||
empty: '尚未安装桌面插件。',
|
||||
kinds: { bundled: '内置', disk: '磁盘', runtime: '运行时' }
|
||||
},
|
||||
notifications: {
|
||||
title: '通知',
|
||||
|
|
@ -1166,6 +1184,7 @@ export const zh: Translations = {
|
|||
goTo: '前往',
|
||||
goToSession: '前往会话',
|
||||
branches: '分支',
|
||||
commands: '命令',
|
||||
startInBranch: branch => `在 ${branch} 中开始新对话`,
|
||||
commandCenter: '命令中心',
|
||||
appearance: '外观',
|
||||
|
|
@ -1800,6 +1819,9 @@ export const zh: Translations = {
|
|||
rename: '重命名',
|
||||
archive: '归档',
|
||||
newWindow: '新窗口',
|
||||
hideTabBar: '隐藏标签栏',
|
||||
openInNewTab: '在新标签页中打开',
|
||||
openInSplit: '在分屏中打开',
|
||||
copyIdFailed: '无法复制会话 ID',
|
||||
actionsFor: title => `${title} 的操作`,
|
||||
sessionActions: '会话操作',
|
||||
|
|
@ -2442,6 +2464,57 @@ export const zh: Translations = {
|
|||
}
|
||||
},
|
||||
|
||||
zones: {
|
||||
showHeader: '显示标题栏',
|
||||
hideHeader: '隐藏标题栏',
|
||||
minimize: '最小化',
|
||||
restore: '还原',
|
||||
closeRunningTitle: '关闭正在运行的标签?',
|
||||
closeRunningBody: '此对话仍在运行(或正在等待你的输入)。关闭标签只会隐藏它——会话将保留进度,可从侧边栏重新打开。',
|
||||
closeRunningConfirm: '关闭标签',
|
||||
closeOthers: '关闭其他',
|
||||
closeToRight: '关闭右侧',
|
||||
closeAll: '全部关闭',
|
||||
split: dir => `向${dir}拆分`,
|
||||
move: dir => `向${dir}移动`,
|
||||
dirUp: '上',
|
||||
dirDown: '下',
|
||||
dirLeft: '左',
|
||||
dirRight: '右',
|
||||
stackHere: '堆叠到此处',
|
||||
moveHere: '移动到此处',
|
||||
splitHere: '在此拆分',
|
||||
openHere: '在此打开',
|
||||
spanHere: '跨越到此处',
|
||||
staysHere: '留在此处',
|
||||
pluginDisabled: pluginId => `插件“${pluginId}”已禁用`,
|
||||
pluginDisabledBody: '在 设置 → 插件 中重新启用即可恢复面板。',
|
||||
missingPane: paneId => `缺少面板:${paneId}`,
|
||||
editTitle: '布局',
|
||||
editHint: '选择一个布局,或在区域之间拖动面板。右键点击区域可拆分。',
|
||||
reset: '重置',
|
||||
templates: '模板',
|
||||
custom: '自定义',
|
||||
newGridLayout: '新建网格布局',
|
||||
saveCurrentAs: '将当前排列保存为模板',
|
||||
nameLayoutPlaceholder: '为布局命名…',
|
||||
deletePreset: name => `删除 ${name}`,
|
||||
zoneEditorTitle: '区域编辑器',
|
||||
editorHintPre: '点击拆分 · ',
|
||||
editorHintPost: ' 翻转分割线 · 拖过多个区域可合并 · 拖动共享边可调整大小',
|
||||
templateColumns: '列',
|
||||
templateRows: '行',
|
||||
templateGrid: '网格',
|
||||
templatePriority: '优先',
|
||||
zoneTag: index => `区域 ${index}`,
|
||||
mergeZones: count => `合并 ${count} 个区域`,
|
||||
customZoneName: count => `自定义 ${count} 区`,
|
||||
layoutNamePlaceholder: fallback => `布局名称(${fallback})`,
|
||||
saveApply: '保存并应用',
|
||||
notExpressible: '此排列互相咬合(风车形)——暂无法表示为嵌套拆分',
|
||||
zoneCount: count => `${count} 个区域`
|
||||
},
|
||||
|
||||
assistant: {
|
||||
thread: {
|
||||
loadingSession: '正在加载会话',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue