@bitseek/hermes-webui 0.1.0-beta.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/package.json +2 -2
  2. package/vendor/agent-frontend-shell/.bitseek-source.json +2 -2
  3. package/vendor/agent-frontend-shell/CHANGELOG.md +178 -1
  4. package/vendor/agent-frontend-shell/CONTRIBUTORS.md +5 -5
  5. package/vendor/agent-frontend-shell/api/agent_health.py +134 -0
  6. package/vendor/agent-frontend-shell/api/config.py +145 -104
  7. package/vendor/agent-frontend-shell/api/gateway_chat.py +56 -12
  8. package/vendor/agent-frontend-shell/api/helpers.py +4 -2
  9. package/vendor/agent-frontend-shell/api/models.py +202 -20
  10. package/vendor/agent-frontend-shell/api/paths.py +77 -0
  11. package/vendor/agent-frontend-shell/api/plugins.py +185 -0
  12. package/vendor/agent-frontend-shell/api/profiles.py +95 -16
  13. package/vendor/agent-frontend-shell/api/routes.py +831 -30
  14. package/vendor/agent-frontend-shell/api/run_journal.py +1 -0
  15. package/vendor/agent-frontend-shell/api/state_sync.py +5 -4
  16. package/vendor/agent-frontend-shell/api/streaming.py +211 -56
  17. package/vendor/agent-frontend-shell/api/todo_state.py +122 -0
  18. package/vendor/agent-frontend-shell/api/updates.py +30 -3
  19. package/vendor/agent-frontend-shell/api/upload.py +251 -18
  20. package/vendor/agent-frontend-shell/api/workspace.py +323 -65
  21. package/vendor/agent-frontend-shell/bitseek_docs/BitSeek_Claw_Operation_Manual_EN.docx +0 -0
  22. package/vendor/agent-frontend-shell/bitseek_docs/BitSeek_Claw_Operation_Manual_ZH.docx +0 -0
  23. package/vendor/agent-frontend-shell/bitseek_docs/en/00-Installation.md +174 -0
  24. package/vendor/agent-frontend-shell/bitseek_docs/en/01-Overview.md +128 -0
  25. package/vendor/agent-frontend-shell/bitseek_docs/en/02-Page-Operations.md +461 -0
  26. package/vendor/agent-frontend-shell/bitseek_docs/en/README.md +61 -0
  27. package/vendor/agent-frontend-shell/bitseek_docs/en/images/ai-colleagues.png +0 -0
  28. package/vendor/agent-frontend-shell/bitseek_docs/en/images/chat-area.png +0 -0
  29. package/vendor/agent-frontend-shell/bitseek_docs/en/images/kanban.png +0 -0
  30. package/vendor/agent-frontend-shell/bitseek_docs/en/images/main-page.png +0 -0
  31. package/vendor/agent-frontend-shell/bitseek_docs/en/images/memory-notes.png +0 -0
  32. package/vendor/agent-frontend-shell/bitseek_docs/en/images/memory-overview.png +0 -0
  33. package/vendor/agent-frontend-shell/bitseek_docs/en/images/memory-profile.png +0 -0
  34. package/vendor/agent-frontend-shell/bitseek_docs/en/images/memory-soul.png +0 -0
  35. package/vendor/agent-frontend-shell/bitseek_docs/en/images/memory.png +0 -0
  36. package/vendor/agent-frontend-shell/bitseek_docs/en/images/navigation-bar.png +0 -0
  37. package/vendor/agent-frontend-shell/bitseek_docs/en/images/settings-appearance.png +0 -0
  38. package/vendor/agent-frontend-shell/bitseek_docs/en/images/settings-conversation.png +0 -0
  39. package/vendor/agent-frontend-shell/bitseek_docs/en/images/settings-overview.png +0 -0
  40. package/vendor/agent-frontend-shell/bitseek_docs/en/images/settings-plugins.png +0 -0
  41. package/vendor/agent-frontend-shell/bitseek_docs/en/images/settings-preferences.png +0 -0
  42. package/vendor/agent-frontend-shell/bitseek_docs/en/images/settings-providers.png +0 -0
  43. package/vendor/agent-frontend-shell/bitseek_docs/en/images/settings-system.png +0 -0
  44. package/vendor/agent-frontend-shell/bitseek_docs/en/images/settings.png +0 -0
  45. package/vendor/agent-frontend-shell/bitseek_docs/en/images/sidebar.png +0 -0
  46. package/vendor/agent-frontend-shell/bitseek_docs/en/images/skills.png +0 -0
  47. package/vendor/agent-frontend-shell/bitseek_docs/en/images/tasks.png +0 -0
  48. package/vendor/agent-frontend-shell/bitseek_docs/en/images/workspace-panel.png +0 -0
  49. package/vendor/agent-frontend-shell/bitseek_docs/md_to_docx.py +351 -0
  50. package/vendor/agent-frontend-shell/bitseek_docs/zh/00-/345/256/211/350/243/205/345/220/257/345/212/250.md +174 -0
  51. package/vendor/agent-frontend-shell/bitseek_docs/zh/01-/346/225/264/344/275/223/346/246/202/350/247/210.md +128 -0
  52. package/vendor/agent-frontend-shell/bitseek_docs/zh/02-/351/241/265/351/235/242/346/223/215/344/275/234.md +463 -0
  53. package/vendor/agent-frontend-shell/bitseek_docs/zh/README.md +61 -0
  54. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/ai-colleagues.png +0 -0
  55. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/chat-area.png +0 -0
  56. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/kanban.png +0 -0
  57. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/main-page.png +0 -0
  58. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/memory-notes.png +0 -0
  59. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/memory-overview.png +0 -0
  60. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/memory-profile.png +0 -0
  61. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/memory-soul.png +0 -0
  62. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/memory.png +0 -0
  63. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/navigation-bar.png +0 -0
  64. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/settings-appearance.png +0 -0
  65. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/settings-conversation.png +0 -0
  66. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/settings-overview.png +0 -0
  67. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/settings-plugins.png +0 -0
  68. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/settings-preferences.png +0 -0
  69. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/settings-providers.png +0 -0
  70. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/settings-system.png +0 -0
  71. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/settings.png +0 -0
  72. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/sidebar.png +0 -0
  73. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/skills.png +0 -0
  74. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/tasks.png +0 -0
  75. package/vendor/agent-frontend-shell/bitseek_docs/zh/images/workspace-panel.png +0 -0
  76. package/vendor/agent-frontend-shell/build-release.sh +62 -0
  77. package/vendor/agent-frontend-shell/ctl.sh +1 -0
  78. package/vendor/agent-frontend-shell/docker-compose.local.yml +33 -0
  79. package/vendor/agent-frontend-shell/docker-compose.yml +8 -0
  80. package/vendor/agent-frontend-shell/docker_init.bash +1 -0
  81. package/vendor/agent-frontend-shell/docs/rfcs/hermes-run-adapter-contract.md +74 -15
  82. package/vendor/agent-frontend-shell/extensions/common/index.css +6 -0
  83. package/vendor/agent-frontend-shell/extensions/manifest.json +6 -0
  84. package/vendor/agent-frontend-shell/extensions/pages/ai-teammates/page.js +60 -14
  85. package/vendor/agent-frontend-shell/readme-simple.md +103 -0
  86. package/vendor/agent-frontend-shell/requirements.txt +5 -0
  87. package/vendor/agent-frontend-shell/server.py +7 -0
  88. package/vendor/agent-frontend-shell/static/boot.js +53 -1
  89. package/vendor/agent-frontend-shell/static/commands.js +20 -10
  90. package/vendor/agent-frontend-shell/static/i18n.js +1142 -1016
  91. package/vendor/agent-frontend-shell/static/index.html +13 -3
  92. package/vendor/agent-frontend-shell/static/messages.js +48 -3
  93. package/vendor/agent-frontend-shell/static/panels.js +199 -30
  94. package/vendor/agent-frontend-shell/static/sessions.js +249 -39
  95. package/vendor/agent-frontend-shell/static/style.css +46 -2
  96. package/vendor/agent-frontend-shell/static/ui.js +323 -79
  97. package/vendor/agent-frontend-shell/static/workspace.js +185 -7
  98. package/vendor/agent-frontend-shell/README-CUSTOM.md +0 -76
  99. package/vendor/agent-frontend-shell/docker-compose.custom.yml +0 -26
@@ -427,6 +427,11 @@ const LOCALES = {
427
427
  path_copy_failed: 'Failed to copy path: ',
428
428
  session_rename: 'Rename conversation',
429
429
  session_rename_desc: 'Edit the title of this conversation',
430
+ session_title_regenerate: 'Regenerate title',
431
+ session_title_regenerate_desc: 'Ask Hermes to generate a fresh title from the conversation',
432
+ session_title_regenerating: 'Regenerating title…',
433
+ session_title_regenerated: (title) => `Title regenerated: ${title}`,
434
+ session_title_regenerate_failed: 'Regenerate title failed: ',
430
435
  session_copy_link: 'Copy conversation link',
431
436
  session_copy_link_desc: 'Copy a direct link to this conversation',
432
437
  session_link_copied: 'Conversation link copied to clipboard',
@@ -446,6 +451,8 @@ const LOCALES = {
446
451
  empty_dir: '(empty)',
447
452
  upload_failed: 'Upload failed: ',
448
453
  upload_too_large: (maxMb, fileMb) => `File is too large (${fileMb} MB). Maximum upload size is ${maxMb} MB.`,
454
+ uploading: 'Uploading…',
455
+ uploaded: 'Uploaded',
449
456
  all_uploads_failed: (n) => `All ${n} upload(s) failed`,
450
457
  archive_extracted: (n, c) => `Extracted ${n} file(s) from ${c} archive(s)`,
451
458
  session_pin: 'Pin conversation',
@@ -546,6 +553,7 @@ const LOCALES = {
546
553
  settings_tab_preferences: 'Preferences',
547
554
  settings_tab_plugins: 'Plugins',
548
555
  settings_plugins_title: 'Plugins',
556
+ plugins_enable_toggle: 'Enable',
549
557
  settings_plugins_meta: 'View installed Hermes plugins and the lifecycle hooks they register. This panel is read-only.',
550
558
  settings_plugins_empty: 'No Hermes plugins are currently visible. Install or enable plugins from the Hermes CLI/config to see them here.',
551
559
  plugins_unnamed: 'Unnamed plugin',
@@ -844,6 +852,8 @@ const LOCALES = {
844
852
  settings_desc_tts_voice: "Preferred voice. Populated from your browser's available voices.",
845
853
  settings_label_tts_rate: 'Speech rate',
846
854
  settings_label_tts_pitch: 'Speech pitch',
855
+ settings_label_tts_engine: 'TTS Engine',
856
+ settings_desc_tts_engine: 'Choose speech engine. Edge TTS uses Microsoft neural voices via the server.',
847
857
  settings_label_notifications: 'Browser notifications',
848
858
  settings_desc_notifications: 'Show a system notification when a response completes while the app is in the background.',
849
859
  settings_desc_token_usage: 'Displays input/output token count below each assistant reply. Also toggled with /usage.',
@@ -1292,6 +1302,7 @@ const LOCALES = {
1292
1302
  media_audio_label: 'Audio',
1293
1303
  media_svg_label: 'Diagram',
1294
1304
  media_video_label: 'Video',
1305
+ media_download: 'Download',
1295
1306
  csv_loading: 'Loading CSV',
1296
1307
  csv_too_large: 'CSV file too large for inline rendering',
1297
1308
  csv_no_data: 'CSV file has insufficient data to render as table',
@@ -1747,6 +1758,11 @@ const LOCALES = {
1747
1758
  path_copy_failed: 'Copia percorso fallita: ',
1748
1759
  session_rename: 'Rinomina conversazione',
1749
1760
  session_rename_desc: 'Modifica il titolo di questa conversazione',
1761
+ session_title_regenerate: 'Rigenera titolo',
1762
+ session_title_regenerate_desc: 'Chiedi a Hermes di generare un nuovo titolo dalla conversazione',
1763
+ session_title_regenerating: 'Rigenerazione del titolo…',
1764
+ session_title_regenerated: (title) => `Titolo rigenerato: ${title}`,
1765
+ session_title_regenerate_failed: 'Rigenerazione del titolo non riuscita: ',
1750
1766
  session_copy_link: 'Copia link conversazione',
1751
1767
  session_copy_link_desc: 'Copia un link diretto a questa conversazione',
1752
1768
  session_link_copied: 'Link conversazione copiato negli appunti',
@@ -1766,6 +1782,8 @@ const LOCALES = {
1766
1782
  empty_dir: '(vuota)',
1767
1783
  upload_failed: 'Upload fallito: ',
1768
1784
  upload_too_large: (maxMb, fileMb) => `File troppo grande (${fileMb} MB). La dimensione massima è ${maxMb} MB.`,
1785
+ uploading: 'Caricamento…',
1786
+ uploaded: 'Caricato',
1769
1787
  all_uploads_failed: (n) => `Tutti gli ${n} upload sono falliti`,
1770
1788
  archive_extracted: (n, c) => `Estratti ${n} file da ${c} archivio/i`,
1771
1789
  session_pin: 'Fissa conversazione',
@@ -1866,6 +1884,7 @@ const LOCALES = {
1866
1884
  settings_tab_preferences: 'Preferenze',
1867
1885
  settings_tab_plugins: 'Plugin',
1868
1886
  settings_plugins_title: 'Plugins', // TODO: translate
1887
+ plugins_enable_toggle: 'Abilita',
1869
1888
  settings_plugins_meta: 'View installed Hermes plugins and the lifecycle hooks they register. This panel is read-only.', // TODO: translate
1870
1889
  settings_plugins_empty: 'No Hermes plugins are currently visible. Install or enable plugins from the Hermes CLI/config to see them here.', // TODO: translate
1871
1890
  plugins_unnamed: 'Unnamed plugin', // TODO: translate
@@ -2156,6 +2175,8 @@ const LOCALES = {
2156
2175
  settings_desc_tts_voice: 'Voce preferita. Popolata dalle voci disponibili nel browser.',
2157
2176
  settings_label_tts_rate: 'Velocità voce',
2158
2177
  settings_label_tts_pitch: 'Tono voce',
2178
+ settings_label_tts_engine: 'Motore TTS',
2179
+ settings_desc_tts_engine: 'Scegli il motore vocale. Edge TTS utilizza le voci neurali Microsoft tramite il server.',
2159
2180
  settings_label_notifications: 'Notifiche browser',
2160
2181
  settings_desc_notifications: 'Mostra una notifica di sistema quando una risposta termina mentre l\'app è in background.',
2161
2182
  settings_desc_token_usage: 'Mostra il conteggio token input/output sotto ogni risposta dell\'assistente. Attivabile anche con /usage.',
@@ -2604,6 +2625,7 @@ const LOCALES = {
2604
2625
  media_audio_label: 'Audio',
2605
2626
  media_svg_label: 'Diagramma',
2606
2627
  media_video_label: 'Video',
2628
+ media_download: 'Scarica',
2607
2629
  csv_loading: 'Caricamento CSV',
2608
2630
  csv_too_large: 'File CSV troppo grande per il rendering inline',
2609
2631
  csv_no_data: 'Il file CSV ha dati insufficienti per il rendering come tabella',
@@ -3059,6 +3081,11 @@ const LOCALES = {
3059
3081
  path_copy_failed: 'パスのコピーに失敗しました: ',
3060
3082
  session_rename: '会話の名前を変更',
3061
3083
  session_rename_desc: 'この会話のタイトルを編集',
3084
+ session_title_regenerate: 'タイトルを再生成',
3085
+ session_title_regenerate_desc: '会話から新しいタイトルを生成するよう Hermes に依頼します',
3086
+ session_title_regenerating: 'タイトルを再生成中…',
3087
+ session_title_regenerated: (title) => `タイトルを再生成しました: ${title}`,
3088
+ session_title_regenerate_failed: 'タイトルの再生成に失敗しました: ',
3062
3089
  session_copy_link: '会話リンクをコピー',
3063
3090
  session_copy_link_desc: 'この会話への直接リンクをコピー',
3064
3091
  session_link_copied: '会話リンクをクリップボードにコピーしました',
@@ -3078,6 +3105,8 @@ const LOCALES = {
3078
3105
  empty_dir: '(空)',
3079
3106
  upload_failed: 'アップロード失敗: ',
3080
3107
  upload_too_large: (maxMb, fileMb) => `ファイルが大きすぎます (${fileMb} MB)。最大アップロードサイズは ${maxMb} MB です。`,
3108
+ uploading: 'アップロード中…',
3109
+ uploaded: 'アップロード完了',
3081
3110
  all_uploads_failed: (n) => `${n} 件のアップロードがすべて失敗しました`,
3082
3111
  archive_extracted: (n, c) => `${c} 個のアーカイブから ${n} 件のファイルを展開しました`,
3083
3112
  session_pin: '会話をピン留め',
@@ -3178,6 +3207,7 @@ const LOCALES = {
3178
3207
  settings_tab_preferences: '環境設定',
3179
3208
  settings_tab_plugins: 'プラグイン',
3180
3209
  settings_plugins_title: 'Plugins', // TODO: translate
3210
+ plugins_enable_toggle: '有効化',
3181
3211
  settings_plugins_meta: 'View installed Hermes plugins and the lifecycle hooks they register. This panel is read-only.', // TODO: translate
3182
3212
  settings_plugins_empty: 'No Hermes plugins are currently visible. Install or enable plugins from the Hermes CLI/config to see them here.', // TODO: translate
3183
3213
  plugins_unnamed: 'Unnamed plugin', // TODO: translate
@@ -3473,6 +3503,8 @@ const LOCALES = {
3473
3503
  settings_desc_tts_voice: '優先する声。ブラウザで利用可能な声から選択されます。',
3474
3504
  settings_label_tts_rate: '読み上げ速度',
3475
3505
  settings_label_tts_pitch: '読み上げピッチ',
3506
+ settings_label_tts_engine: 'TTSエンジン',
3507
+ settings_desc_tts_engine: '音声エンジンを選択してください。Edge TTSはサーバー経由でMicrosoftのニューラル音声を使用します。',
3476
3508
  settings_label_notifications: 'ブラウザ通知',
3477
3509
  settings_desc_notifications: 'アプリがバックグラウンドの間に応答が完了したらシステム通知を表示します。',
3478
3510
  settings_desc_token_usage: 'アシスタント応答の下に入力/出力トークン数を表示します。/usage でも切替可能。',
@@ -3921,6 +3953,7 @@ const LOCALES = {
3921
3953
  media_audio_label: '音声',
3922
3954
  media_svg_label: '図',
3923
3955
  media_video_label: '動画',
3956
+ media_download: 'ダウンロード',
3924
3957
  csv_loading: 'CSV を読み込み中',
3925
3958
  csv_too_large: 'CSV ファイルが大きすぎてインライン表示できません',
3926
3959
  csv_no_data: 'CSV ファイルのデータが不足しているためテーブル表示できません',
@@ -4296,6 +4329,11 @@ const LOCALES = {
4296
4329
  path_copy_failed: 'Не удалось скопировать путь: ',
4297
4330
  session_rename: 'Переименовать беседу',
4298
4331
  session_rename_desc: 'Изменить название этой беседы',
4332
+ session_title_regenerate: 'Сгенерировать название заново',
4333
+ session_title_regenerate_desc: 'Попросить Hermes сгенерировать новое название на основе беседы',
4334
+ session_title_regenerating: 'Повторная генерация названия…',
4335
+ session_title_regenerated: (title) => `Название сгенерировано заново: ${title}`,
4336
+ session_title_regenerate_failed: 'Не удалось сгенерировать название заново: ',
4299
4337
  session_copy_link: 'Скопировать ссылку на беседу',
4300
4338
  session_copy_link_desc: 'Скопировать прямую ссылку на эту беседу',
4301
4339
  session_link_copied: 'Ссылка на беседу скопирована в буфер обмена',
@@ -4315,6 +4353,8 @@ const LOCALES = {
4315
4353
  empty_dir: '(пусто)',
4316
4354
  upload_failed: 'Не удалось загрузить: ',
4317
4355
  upload_too_large: (maxMb, fileMb) => `Файл слишком большой (${fileMb} МБ). Максимальный размер загрузки: ${maxMb} МБ.`,
4356
+ uploading: 'Загрузка…',
4357
+ uploaded: 'Загружено',
4318
4358
  all_uploads_failed: (n) => `Не удалось загрузить все ${n} файлов`,
4319
4359
  archive_extracted: (n, c) => `Извлечено ${n} файл(ов) из ${c} архив(ов)`,
4320
4360
  settings_title: 'Настройки',
@@ -5060,6 +5100,7 @@ const LOCALES = {
5060
5100
  settings_tab_preferences: 'Preferences',
5061
5101
  settings_tab_plugins: 'Плагины',
5062
5102
  settings_plugins_title: 'Plugins', // TODO: translate
5103
+ plugins_enable_toggle: 'Включить',
5063
5104
  settings_plugins_meta: 'View installed Hermes plugins and the lifecycle hooks they register. This panel is read-only.', // TODO: translate
5064
5105
  settings_plugins_empty: 'No Hermes plugins are currently visible. Install or enable plugins from the Hermes CLI/config to see them here.', // TODO: translate
5065
5106
  plugins_unnamed: 'Unnamed plugin', // TODO: translate
@@ -5110,6 +5151,7 @@ const LOCALES = {
5110
5151
  media_audio_label: 'Аудио',
5111
5152
  media_svg_label: 'Диаграмма',
5112
5153
  media_video_label: 'Видео',
5154
+ media_download: 'Скачать',
5113
5155
  csv_loading: 'Загрузка CSV',
5114
5156
  csv_too_large: 'CSV-файл слишком большой для встроенного отображения',
5115
5157
  csv_no_data: 'Недостаточно данных в CSV-файле',
@@ -5152,6 +5194,8 @@ const LOCALES = {
5152
5194
  settings_desc_tts_voice: 'Выберите голос для синтеза речи',
5153
5195
  settings_label_tts_rate: 'Скорость речи',
5154
5196
  settings_label_tts_pitch: 'Тон речи',
5197
+ settings_label_tts_engine: 'Движок TTS',
5198
+ settings_desc_tts_engine: 'Выберите движок синтеза речи. Edge TTS использует нейронные голоса Microsoft через сервер.',
5155
5199
 
5156
5200
  checkpoint_date: 'Date', // TODO: translate
5157
5201
  checkpoint_diff_files_changed: (n) => `${n} file${n === 1 ? '' : 's'} changed`, // TODO: translate
@@ -5525,6 +5569,11 @@ const LOCALES = {
5525
5569
  path_copy_failed: 'Error al copiar la ruta: ',
5526
5570
  session_rename: 'Renombrar conversación',
5527
5571
  session_rename_desc: 'Editar el título de esta conversación',
5572
+ session_title_regenerate: 'Regenerar título',
5573
+ session_title_regenerate_desc: 'Pide a Hermes que genere un título nuevo a partir de la conversación',
5574
+ session_title_regenerating: 'Regenerando título…',
5575
+ session_title_regenerated: (title) => `Título regenerado: ${title}`,
5576
+ session_title_regenerate_failed: 'Error al regenerar el título: ',
5528
5577
  session_copy_link: 'Copiar enlace de conversación',
5529
5578
  session_copy_link_desc: 'Copia un enlace directo a esta conversación',
5530
5579
  session_link_copied: 'Enlace de conversación copiado al portapapeles',
@@ -5543,6 +5592,8 @@ const LOCALES = {
5543
5592
  empty_dir: '(vacío)',
5544
5593
  upload_failed: 'Error al subir: ',
5545
5594
  upload_too_large: (maxMb, fileMb) => `El archivo es demasiado grande (${fileMb} MB). El tamaño máximo de subida es ${maxMb} MB.`,
5595
+ uploading: 'Subiendo…',
5596
+ uploaded: 'Subido',
5546
5597
  all_uploads_failed: (n) => `Fallaron las ${n} subida(s)`,
5547
5598
  archive_extracted: (n, c) => `${n} archivo(s) extraído(s) de ${c} archivo(s) comprimido(s)`,
5548
5599
  // settings panel
@@ -6297,6 +6348,7 @@ const LOCALES = {
6297
6348
  settings_tab_preferences: 'Preferences',
6298
6349
  settings_tab_plugins: 'Plugins',
6299
6350
  settings_plugins_title: 'Plugins', // TODO: translate
6351
+ plugins_enable_toggle: 'Activar',
6300
6352
  settings_plugins_meta: 'View installed Hermes plugins and the lifecycle hooks they register. This panel is read-only.', // TODO: translate
6301
6353
  settings_plugins_empty: 'No Hermes plugins are currently visible. Install or enable plugins from the Hermes CLI/config to see them here.', // TODO: translate
6302
6354
  plugins_unnamed: 'Unnamed plugin', // TODO: translate
@@ -6347,6 +6399,7 @@ const LOCALES = {
6347
6399
  media_audio_label: 'Audio',
6348
6400
  media_svg_label: 'Diagrama',
6349
6401
  media_video_label: 'Vídeo',
6402
+ media_download: 'Descargar',
6350
6403
  csv_loading: 'Cargando CSV',
6351
6404
  csv_too_large: 'Archivo CSV demasiado grande para mostrar en línea',
6352
6405
  csv_no_data: 'El archivo CSV no tiene suficientes datos para mostrar como tabla',
@@ -6389,6 +6442,8 @@ const LOCALES = {
6389
6442
  settings_desc_tts_voice: 'Seleccionar voz para síntesis de voz',
6390
6443
  settings_label_tts_rate: 'Velocidad de voz',
6391
6444
  settings_label_tts_pitch: 'Tono de voz',
6445
+ settings_label_tts_engine: 'Motor TTS',
6446
+ settings_desc_tts_engine: 'Elija el motor de voz. Edge TTS utiliza voces neuronales de Microsoft a través del servidor.',
6392
6447
  checkpoint_date: 'Date', // TODO: translate
6393
6448
  checkpoint_diff_files_changed: (n) => `${n} file${n === 1 ? '' : 's'} changed`, // TODO: translate
6394
6449
  checkpoint_diff_no_changes: 'No differences found between this checkpoint and the current workspace.', // TODO: translate
@@ -6758,6 +6813,11 @@ const LOCALES = {
6758
6813
  path_copy_failed: 'Pfad konnte nicht kopiert werden: ',
6759
6814
  session_rename: 'Unterhaltung umbenennen',
6760
6815
  session_rename_desc: 'Titel dieser Unterhaltung bearbeiten',
6816
+ session_title_regenerate: 'Titel neu generieren',
6817
+ session_title_regenerate_desc: 'Hermes bitten, einen neuen Titel aus der Unterhaltung zu generieren',
6818
+ session_title_regenerating: 'Titel wird neu generiert…',
6819
+ session_title_regenerated: (title) => `Titel neu generiert: ${title}`,
6820
+ session_title_regenerate_failed: 'Titel neu generieren fehlgeschlagen: ',
6761
6821
  session_copy_link: 'Unterhaltungslink kopieren',
6762
6822
  session_copy_link_desc: 'Direkten Link zu dieser Unterhaltung kopieren',
6763
6823
  session_link_copied: 'Unterhaltungslink in die Zwischenablage kopiert',
@@ -6777,6 +6837,8 @@ const LOCALES = {
6777
6837
  empty_dir: '(leer)',
6778
6838
  upload_failed: 'Upload fehlgeschlagen: ',
6779
6839
  upload_too_large: (maxMb, fileMb) => `Datei ist zu groß (${fileMb} MB). Die maximale Uploadgröße beträgt ${maxMb} MB.`,
6840
+ uploading: 'Wird hochgeladen…',
6841
+ uploaded: 'Hochgeladen',
6780
6842
  all_uploads_failed: (n) => `Alle ${n} Upload(s) fehlgeschlagen`,
6781
6843
  // settings panel
6782
6844
  settings_title: 'Einstellungen',
@@ -7250,6 +7312,7 @@ const LOCALES = {
7250
7312
  settings_tab_preferences: 'Preferences',
7251
7313
  settings_tab_plugins: 'Plugins',
7252
7314
  settings_plugins_title: 'Plugins', // TODO: translate
7315
+ plugins_enable_toggle: 'Aktivieren',
7253
7316
  settings_plugins_meta: 'View installed Hermes plugins and the lifecycle hooks they register. This panel is read-only.', // TODO: translate
7254
7317
  settings_plugins_empty: 'No Hermes plugins are currently visible. Install or enable plugins from the Hermes CLI/config to see them here.', // TODO: translate
7255
7318
  plugins_unnamed: 'Unnamed plugin', // TODO: translate
@@ -7598,6 +7661,7 @@ const LOCALES = {
7598
7661
  media_audio_label: 'Audio',
7599
7662
  media_svg_label: 'Diagramm',
7600
7663
  media_video_label: 'Video',
7664
+ media_download: 'Herunterladen',
7601
7665
  csv_loading: 'CSV wird geladen',
7602
7666
  csv_too_large: 'CSV-Datei zu groß für Inline-Anzeige',
7603
7667
  csv_no_data: 'CSV-Datei enthält nicht genügend Daten',
@@ -7640,6 +7704,8 @@ const LOCALES = {
7640
7704
  settings_desc_tts_voice: 'Stimme für Sprachsynthese auswählen',
7641
7705
  settings_label_tts_rate: 'Sprechgeschwindigkeit',
7642
7706
  settings_label_tts_pitch: 'Tonhöhe',
7707
+ settings_label_tts_engine: 'TTS-Engine',
7708
+ settings_desc_tts_engine: 'Sprach-Engine auswählen. Edge TTS verwendet Microsoft Neural Voices über den Server.',
7643
7709
 
7644
7710
  checkpoint_date: 'Date', // TODO: translate
7645
7711
  checkpoint_diff_files_changed: (n) => `${n} file${n === 1 ? '' : 's'} changed`, // TODO: translate
@@ -7963,6 +8029,7 @@ const LOCALES = {
7963
8029
  settings_busy_input_mode_interrupt: '中断当前轮次',
7964
8030
  settings_busy_input_mode_steer: '引导(中间修正)',
7965
8031
  settings_plugins_title: '插件',
8032
+ plugins_enable_toggle: '启用',
7966
8033
  settings_plugins_meta: '查看已安装的 Hermes 插件及其注册的生命周期挂钩。此面板为只读。',
7967
8034
  settings_plugins_empty: '当前没有可见的 Hermes 插件。通过 Hermes CLI/配置文件安装或启用插件后即可在此查看。',
7968
8035
  plugins_unnamed: '未命名插件',
@@ -8043,6 +8110,11 @@ const LOCALES = {
8043
8110
  path_copy_failed: '\u590d\u5236\u8def\u5f84\u5931\u8d25\uff1a',
8044
8111
  session_rename: '\u91cd\u547d\u540d\u5bf9\u8bdd',
8045
8112
  session_rename_desc: '\u7f16\u8f91\u6b64\u5bf9\u8bdd\u7684\u6807\u9898',
8113
+ session_title_regenerate: '\u91cd\u65b0\u751f\u6210\u6807\u9898',
8114
+ session_title_regenerate_desc: '\u8ba9 Hermes \u6839\u636e\u5bf9\u8bdd\u751f\u6210\u65b0\u7684\u6807\u9898',
8115
+ session_title_regenerating: '\u6b63\u5728\u91cd\u65b0\u751f\u6210\u6807\u9898\u2026',
8116
+ session_title_regenerated: (title) => `\u6807\u9898\u5df2\u91cd\u65b0\u751f\u6210\uff1a${title}`,
8117
+ session_title_regenerate_failed: '\u91cd\u65b0\u751f\u6210\u6807\u9898\u5931\u8d25\uff1a',
8046
8118
  session_copy_link: '复制对话链接',
8047
8119
  session_copy_link_desc: '复制此对话的直接链接',
8048
8120
  session_link_copied: '对话链接已复制到剪贴板',
@@ -8062,6 +8134,8 @@ const LOCALES = {
8062
8134
  empty_dir: '(空)',
8063
8135
  upload_failed: '上传失败:',
8064
8136
  upload_too_large: (maxMb, fileMb) => `\u6587\u4ef6\u8fc7\u5927\uff08${fileMb} MB\uff09\u3002\u6700\u5927\u4e0a\u4f20\u5927\u5c0f\u4e3a ${maxMb} MB\u3002`,
8137
+ uploading: '上传中…',
8138
+ uploaded: '已上传',
8065
8139
  all_uploads_failed: (n) => `${n} 个文件全部上传失败`,
8066
8140
  // settings panel
8067
8141
  settings_title: '设置',
@@ -8854,6 +8928,7 @@ const LOCALES = {
8854
8928
  media_audio_label: '音频',
8855
8929
  media_svg_label: '图表',
8856
8930
  media_video_label: '视频',
8931
+ media_download: '下载',
8857
8932
  csv_loading: '加载 CSV',
8858
8933
  csv_too_large: 'CSV 文件过大,无法内联渲染',
8859
8934
  csv_no_data: 'CSV 文件数据不足,无法渲染为表格',
@@ -8886,6 +8961,8 @@ const LOCALES = {
8886
8961
  settings_desc_tts_voice: '选择语音合成声音',
8887
8962
  settings_label_tts_rate: '语速',
8888
8963
  settings_label_tts_pitch: '音调',
8964
+ settings_label_tts_engine: 'TTS 引擎',
8965
+ settings_desc_tts_engine: '选择语音引擎。Edge TTS 通过服务器使用微软神经语音。',
8889
8966
  checkpoint_date: '日期',
8890
8967
  checkpoint_diff_files_changed: (n) => `${n} file${n === 1 ? '' : 's'} changed`, // TODO: translate
8891
8968
  checkpoint_diff_no_changes: '此检查点与当前工作区之间无差异。',
@@ -8954,39 +9031,60 @@ const LOCALES = {
8954
9031
 
8955
9032
  // Traditional Chinese (zh-Hant)
8956
9033
  'zh-Hant': {
9034
+
9035
+ offline_title: '連線中斷',
9036
+ offline_browser_detail: '瀏覽器回報此裝置目前離線。',
9037
+ offline_network_detail: 'Hermes 目前無法從這個瀏覽器連上。',
9038
+ offline_autorefresh: 'Hermes 重新連線後,系統會自動重新整理此頁面。',
9039
+ offline_check_now: '立即檢查',
9040
+ offline_checking: '正在檢查…',
9041
+ offline_stream_waiting: '連線中斷。等待重新整理…',
8957
9042
  _lang: 'zh-Hant',
8958
- _label: '\u7e41\u9ad4\u4e2d\u6587',
9043
+ _label: '繁體中文',
8959
9044
  _speech: 'zh-TW',
8960
9045
  // boot.js
8961
- cancelling: '\u6b63\u5728\u53d6\u6d88...',
8962
- cancel_failed: '\u53d6\u6d88\u5931\u6557\uff1a',
8963
- mic_denied: '\u9ea6\u514b\u98a8\u8a2a\u554f\u88ab\u62d2\u7d75\uff0c\u8acb\u6aa2\u67e5\u700f\u89bd\u5668\u6b0a\u9650\u3002',
8964
- mic_no_speech: '\u6c92\u6709\u6aa2\u6e2c\u5230\u8a71\u97f3\uff0c\u8acb\u518d\u5617\u4e00\u6b21\u3002',
8965
- mic_network: '\u8a71\u97f3\u8b58\u5225\u76ee\u524d\u4e0d\u53ef\u7528\u3002',
8966
- mic_error: '\u8a71\u97f3\u8f38\u5165\u51fa\u932f\uff1a',
8967
- session_imported: '\u6703\u8a71\u5df2\u5c0e\u5165',
8968
- import_failed: '\u5c0e\u5165\u5931\u6557\uff1a',
8969
- import_invalid_json: 'JSON \u7121\u6548',
8970
- image_pasted: '\u5df2\u7c98\u8cbc\u5716\u7247\uff1a',
9046
+ cancelling: '正在取消……',
9047
+ cancel_failed: '取消失敗:',
9048
+ mic_denied: '麥克風存取遭拒。請檢查瀏覽器權限。',
9049
+ mic_no_speech: '未偵測到語音。請再試一次。',
9050
+ mic_network: '語音辨識無法使用。',
9051
+ mic_error: '語音輸入錯誤:',
9052
+ // Composer voice buttons (#1488 — distinct labels for dictation vs voice mode)
9053
+ voice_dictate: '聽寫',
9054
+ voice_dictate_active: '停止聽寫',
9055
+ voice_recording_active: '停止錄音',
9056
+ voice_mode_toggle: '語音模式',
9057
+ voice_mode_toggle_active: '離開語音模式',
9058
+ // Turn-based voice mode (#1333)
9059
+ voice_listening: '正在聆聽…',
9060
+ voice_speaking: '正在說話…',
9061
+ voice_thinking: '正在思考…',
9062
+ voice_error: '此瀏覽器不支援語音功能',
9063
+ voice_mode_active: '語音模式已開啟',
9064
+ voice_mode_off: '語音模式已關閉',
9065
+ session_imported: '已匯入對話',
9066
+ import_failed: '匯入失敗:',
9067
+ import_invalid_json: '無效的 JSON',
9068
+ image_pasted: '已貼上圖片:',
8971
9069
  // messages.js
8972
- edit_message: '\u7de8\u8f2f\u8a0a\u606f',
8973
- regenerate: '\u91cd\u65b0\u751f\u6210\u56de\u8986',
8974
- copy: '\u8907\u88fd',
8975
- copied: '\u5df2\u8907\u88fd',
8976
- copy_failed: '\u8907\u88fd\u5931\u6557',
9070
+ edit_message: '編輯訊息',
9071
+ regenerate: '重新產生回覆',
9072
+ copy: '複製',
9073
+ copied: '已複製!',
9074
+ copy_failed: '複製失敗',
8977
9075
  selected_text_reply: '用所選內容回覆',
8978
- selected_text_reply_title: '將所選聊天文字作為引用上下文附加',
9076
+ selected_text_reply_title: '將所選聊天文字附加為引用脈絡',
8979
9077
  selected_text_reply_appended: '已將所選文字加入輸入框',
8980
9078
 
8981
9079
  diff_loading: '載入 diff',
8982
9080
  diff_error: '無法載入 patch 檔案',
8983
- diff_too_large: 'Patch 檔案過大,無法內聯顯示',
9081
+ diff_too_large: 'Patch 檔案太大,無法直接顯示',
8984
9082
  tree_view: '樹狀',
8985
9083
  raw_view: '原始',
8986
9084
  parse_failed_note: '解析失敗',
8987
- you: '\u4f60',
9085
+ you: '',
8988
9086
  mcp_servers_title: 'MCP 伺服器',
8989
- mcp_servers_desc: '管理 config.yaml 中設定的 MCP 伺服器。',
9087
+ mcp_servers_desc: '檢視 config.yaml 中設定的 MCP 伺服器。',
8990
9088
  mcp_no_servers: '未設定 MCP 伺服器。',
8991
9089
  mcp_add_server: '+ 新增伺服器',
8992
9090
  mcp_field_name: '伺服器名稱',
@@ -9007,209 +9105,374 @@ const LOCALES = {
9007
9105
  mcp_deleted: 'MCP 伺服器已刪除。',
9008
9106
  mcp_delete_failed: '刪除 MCP 伺服器失敗。',
9009
9107
  mcp_load_failed: '載入 MCP 伺服器失敗。',
9010
- mcp_restart_hint: 'Server changes are read-only here for now. Edit config.yaml and restart Hermes for changes to take effect.',
9011
- mcp_toggle_followup: 'Enable/disable controls are intentionally deferred until MCP reload semantics are explicit.',
9012
- mcp_status_active: 'Active',
9013
- mcp_status_configured: 'Configured',
9014
- mcp_status_disabled: 'Disabled',
9015
- mcp_status_invalid_config: 'Invalid config',
9016
- mcp_status_unknown: 'Unknown',
9017
- mcp_tool_count: '{0} tools',
9018
- mcp_enabled_yes: 'Enabled',
9019
- mcp_enabled_no: 'Disabled',
9020
- mcp_enable_server: 'Enable this MCP server',
9021
- mcp_disable_server: 'Disable this MCP server',
9022
- mcp_enabled_toast: (name) => `MCP server "${name}" enabled.`,
9023
- mcp_disabled_toast: (name) => `MCP server "${name}" disabled.`,
9024
- mcp_toggle_failed: 'Failed to update MCP server.',
9025
- mcp_tools_title: 'MCP Tools',
9026
- mcp_tools_desc: 'Search known tools across active MCP servers.',
9027
- mcp_tools_search_placeholder: 'Search tools by name, server, or description…',
9028
- mcp_tools_no_tools: 'No MCP tools are available from the active runtime inventory.',
9029
- mcp_tools_no_matches: 'No MCP tools match your search.',
9030
- mcp_tools_load_failed: 'Failed to load MCP tools.',
9031
- mcp_tools_schema_empty: 'No schema parameters.',
9032
- mcp_tools_runtime_note: 'Tool inventory only uses already-known active MCP runtime data; the WebUI does not start or probe servers.',
9033
- mcp_tools_summary_no_matches: (query,total) => `No MCP tools matching “${query}” (${total} total MCP tools).`,
9034
- mcp_tools_summary_none: 'No MCP tools to show.',
9035
- mcp_tools_summary_matching: (query) => ` matching “${query}”`,
9036
- mcp_tools_summary_total_note: (total) => ` (${total} total MCP tools)`,
9037
- mcp_tools_summary_showing: (start,end,filtered,searchNote,totalNote,page,pages) => `Showing ${start}-${end} of ${filtered} MCP tools${searchNote}${totalNote}. Page ${page} of ${pages}.`,
9038
- mcp_tools_page_size_prefix: 'Show',
9039
- mcp_tools_page_size_suffix: 'per page',
9040
- mcp_tools_per_page_aria: 'MCP tools per page',
9041
- mcp_tools_inactive_configured_servers: (servers) => `Configured but inactive in this WebUI runtime: ${servers}.`,
9042
- mcp_tools_pagination_label: 'MCP tools pagination',
9043
- mcp_tools_previous_page: '‹ Prev',
9044
- mcp_tools_previous_page_aria: 'Previous MCP tools page',
9045
- mcp_tools_next_page: 'Next ›',
9046
- mcp_tools_next_page_aria: 'Next MCP tools page',
9047
- thinking: '\u601d\u8003\u904e\u7a0b',
9048
- expand_all: '\u5168\u90e8\u5c55\u958b',
9049
- collapse_all: '\u5168\u90e8\u6298\u758a',
9050
- edit_failed: '\u7de8\u8f2f\u5931\u6557\uff1a',
9051
- regen_failed: '\u91cd\u65b0\u751f\u6210\u5931\u6557\uff1a',
9052
- reconnect_active: '\u56de\u8986\u4ecd\u5728\u751f\u6210\u4e2d\uff0c\u6e96\u5099\u597d\u5f8c\u8981\u91cd\u65b0\u52a0\u8f09\u55ce\uff1f',
9053
- reconnect_finished: '\u4f60\u96e2\u958b\u6642\u6709\u56de\u8986\u6b63\u5728\u751f\u6210\uff0c\u8a0a\u606f\u5167\u5bb9\u53ef\u80fd\u5df2\u7d93\u66f4\u65b0\u3002',
9108
+ mcp_restart_hint: '伺服器變更目前在此為唯讀。請編輯 config.yaml 並重新啟動 Hermes,讓變更生效。',
9109
+ mcp_toggle_followup: '啟用/停用控制項會等到 MCP 重新載入語意明確後再加入。',
9110
+ mcp_status_active: '作用中',
9111
+ mcp_status_configured: '已設定',
9112
+ mcp_status_disabled: '已停用',
9113
+ mcp_status_invalid_config: '設定無效',
9114
+ mcp_status_unknown: '未知',
9115
+ mcp_tool_count: '{0} 個工具',
9116
+ mcp_enabled_yes: '已啟用',
9117
+ mcp_enabled_no: '已停用',
9118
+ mcp_enable_server: '啟用此 MCP 伺服器',
9119
+ mcp_disable_server: '停用此 MCP 伺服器',
9120
+ mcp_enabled_toast: (name) => `MCP 伺服器「${name}」已啟用。`,
9121
+ mcp_disabled_toast: (name) => `MCP 伺服器「${name}」已停用。`,
9122
+ mcp_toggle_failed: '更新 MCP 伺服器失敗。',
9123
+ mcp_tools_title: 'MCP 工具',
9124
+ mcp_tools_desc: '搜尋作用中 MCP 伺服器中的已知工具。',
9125
+ mcp_tools_search_placeholder: '依名稱、伺服器或描述搜尋工具…',
9126
+ mcp_tools_no_tools: '作用中 runtime inventory 沒有可用的 MCP 工具。',
9127
+ mcp_tools_no_matches: '沒有符合搜尋條件的 MCP 工具。',
9128
+ mcp_tools_load_failed: '載入 MCP 工具失敗。',
9129
+ mcp_tools_schema_empty: '沒有 schema 參數。',
9130
+ mcp_tools_runtime_note: '工具清單只使用已知且作用中的 MCP runtime 資料;WebUI 不會啟動或探測伺服器。',
9131
+ mcp_tools_summary_no_matches: (query,total) => `沒有符合「${query}」的 MCP 工具(共 ${total} MCP 工具)。`,
9132
+ mcp_tools_summary_none: '沒有可顯示的 MCP 工具。',
9133
+ mcp_tools_summary_matching: (query) => `,符合「${query}」`,
9134
+ mcp_tools_summary_total_note: (total) => `(共 ${total} MCP 工具)`,
9135
+ mcp_tools_summary_showing: (start,end,filtered,searchNote,totalNote,page,pages) => `顯示第 ${start}-${end} 個,共 ${filtered} MCP 工具${searchNote}${totalNote}。第 ${page} / ${pages} 頁。`,
9136
+ mcp_tools_page_size_prefix: '每頁顯示',
9137
+ mcp_tools_page_size_suffix: '',
9138
+ mcp_tools_per_page_aria: '每頁 MCP 工具數量',
9139
+ mcp_tools_inactive_configured_servers: (servers) => `已設定但未在此 WebUI runtime 中作用:${servers}。`,
9140
+ mcp_tools_pagination_label: 'MCP 工具分頁',
9141
+ mcp_tools_previous_page: '‹ 上一頁',
9142
+ mcp_tools_previous_page_aria: '上一頁 MCP 工具',
9143
+ mcp_tools_next_page: '下一頁 ›',
9144
+ mcp_tools_next_page_aria: '下一頁 MCP 工具',
9145
+ // PDF preview (#480)
9146
+ pdf_loading: '正在載入 PDF {0}…',
9147
+ pdf_too_large: 'PDF 太大,無法直接預覽',
9148
+ pdf_no_pages: 'PDF 沒有頁面',
9149
+ pdf_error: 'PDF 預覽轉譯失敗',
9150
+ pdf_download: '下載 PDF',
9151
+ // HTML sandbox preview (#482)
9152
+ html_loading: '正在載入 HTML 預覽…',
9153
+ html_too_large: 'HTML 太大,無法直接預覽',
9154
+ html_error: 'HTML 預覽轉譯失敗',
9155
+ html_open_full: '開啟完整頁面',
9156
+ html_sandbox_label: 'HTML 預覽(沙盒)',
9157
+ thinking: '思考中',
9158
+ expand_all: '全部展開',
9159
+ collapse_all: '全部收合',
9160
+ edit_failed: '編輯失敗:',
9161
+ regen_failed: '重新產生失敗:',
9162
+ reconnect_active: '回覆仍在產生中。完成後要重新載入嗎?',
9163
+ reconnect_finished: '離開時仍有回覆正在處理。訊息可能已經更新。',
9054
9164
  // approval card
9055
- approval_heading: '\u9700\u8981\u5be9\u6838',
9056
- approval_desc_prefix: '\u6aa2\u6e2c\u5230\u5371\u96aa\u547d\u4ee4',
9057
- approval_btn_once: '\u5141\u8a31\u4e00\u6b21',
9058
- approval_btn_once_title: '\u5141\u8a31\u57f7\u884c\u6b64\u547d\u4ee4\u4e00\u6b21\uff08Enter\uff09',
9059
- approval_btn_session: '\u672c\u6b21\u5141\u8a31',
9060
- approval_btn_session_title: '\u672c\u6b21\u6703\u8a71\u671f\u9593\u5141\u8a31',
9061
- approval_btn_always: '始終允許',
9062
- approval_btn_always_title: '始終允許此命令模式',
9063
- approval_btn_deny: '\u62d2\u7d55',
9064
- approval_btn_deny_title: '\u62d2\u7edd — \u4e0d\u57f7\u884c\u6b64\u547d\u4ee4',
9065
- approval_responding: '\u8655\u7406\u4e2d\u2026',
9066
- clarify_heading: '\u9700\u8981\u91d0\u6e05',
9067
- clarify_hint: '\u8acb\u9078\u64c7\u4e00\u500b\u9078\u9805\uff0c\u6216\u5728\u4e0b\u65b9\u8f38\u5165\u4f60\u81ea\u5df1\u7684\u56de\u7b54\u3002',
9068
- clarify_other: '\u5176\u4ed6',
9069
- clarify_send: '\u9001\u51fa',
9070
- clarify_input_placeholder: '\u8f38\u5165\u4f60\u7684\u56de\u7b54\u2026',
9071
- clarify_responding: '\u8655\u7406\u4e2d\u2026',
9072
- untitled: '\u672a\u547d\u540d',
9073
- n_messages: (n) => `${n} \u689d\u8a0a\u606f`,
9074
- load_older_messages: ' 向上捲動或點擊以載入較早的訊息',
9165
+ approval_heading: '需要核准',
9166
+ approval_desc_prefix: '偵測到危險命令',
9167
+ approval_btn_once: '允許一次',
9168
+ approval_btn_once_title: '允許這一道命令(Enter)',
9169
+ approval_btn_session: '允許本次對話',
9170
+ approval_btn_session_title: '允許本次對話工作階段',
9171
+ approval_btn_always: '一律允許',
9172
+ approval_btn_always_title: '一律允許這個命令模式',
9173
+ approval_btn_deny: '拒絕',
9174
+ approval_btn_deny_title: '拒絕,不要執行這道命令',
9175
+ approval_responding: '正在回應……',
9176
+ clarify_heading: '需要釐清',
9177
+ clarify_hint: '請選擇一個選項,或在下方輸入回答。',
9178
+ clarify_other: '其他',
9179
+ clarify_send: '送出',
9180
+ clarify_input_placeholder: '輸入回答…',
9181
+ clarify_responding: '處理中…',
9182
+ session_attention_approval: (n) => n === 1 ? '核准' : `${n} 項核准`,
9183
+ session_attention_clarify: (n) => n === 1 ? '問題' : `${n} 個問題`,
9184
+ session_attention_generic: (n) => n === 1 ? '待處理' : `${n} 個事項`,
9185
+ session_attention_approval_title: '等待權限決定',
9186
+ session_attention_clarify_title: '等待回覆',
9187
+ session_attention_generic_title: '等待使用者操作',
9188
+ n_messages: (n) => `${n} 則訊息`,
9189
+ load_older_messages: '↑ 向上捲動或點選以載入較早的訊息',
9075
9190
  session_jump_start: '開頭',
9076
- session_jump_start_label: '跳至會話開頭',
9191
+ session_jump_start_label: '跳至對話開頭',
9077
9192
  session_jump_end: '結尾',
9078
- session_jump_end_label: '跳至會話結尾',
9193
+ session_jump_end_label: '跳至對話結尾',
9079
9194
  jump_to_question: '回到問題',
9080
9195
  jump_to_question_label: '跳至這則回答對應的問題',
9081
- model_unavailable: '\uff08\u4e0d\u53ef\u7528\uff09',
9082
- model_unavailable_title: '\u6b64\u6a21\u578b\u5df2\u7d93\u4e0d\u5728\u7576\u524d provider \u5217\u8868\u4e2d',
9083
- provider_mismatch_warning: (m,p)=>`\"${m}\" \u53ef\u80fd\u7121\u6cd5\u5728\u7576\u524d\u914d\u7f6e\u7684\u63d0\u4f9b\u8005 (${p}) \u4e0b\u904b\u4f5c\u3002\u5c1a\u9001\uff0c\u6216\u5728\u7d42\u7aef\u57f7\u884c \`hermes model\` \u5207\u63db\u3002`,
9084
- provider_mismatch_label: '\u63d0\u4f9b\u8005\u4e0d\u76f8\u7b26',
9196
+ queued_label: '回應後傳送',
9197
+ queued_count: (n) => n === 1 ? '1 已排隊' : `${n} 已排隊`,
9198
+ queued_cancel: '取消排隊訊息',
9199
+ model_unavailable: '(無法使用)',
9200
+ model_unavailable_title: '這個模型已不在目前的供應商清單中',
9201
+ provider_mismatch_warning: (m,p)=>`「${m}」可能無法搭配已設定的供應商(${p})使用。仍要送出,或在終端機執行 \`hermes model\` 來切換。`,
9202
+ provider_mismatch_label: '供應商不相符',
9085
9203
  gateway_auth_label: 'Gateway 驗證失敗',
9086
- model_not_found_label: '\u672a\u627e\u5230\u6a21\u578b',
9204
+ model_not_found_label: '未找到模型',
9205
+ model_custom_label: '自訂模型 ID',
9206
+ model_custom_placeholder: '例如 openai/gpt-5.4',
9207
+ model_search_placeholder: '搜尋模型…',
9208
+ model_search_no_results: '找不到模型',
9209
+ model_group_configured: '已設定',
9210
+ ws_search_placeholder: '搜尋工作區…',
9211
+ ws_no_results: '找不到工作區',
9212
+ workspace_new_worktree_conversation: '在 worktree 中新增對話',
9213
+ workspace_new_worktree_conversation_meta: '為此工作區建立隔離的 git worktree。',
9214
+ workspace_worktree_created: '已建立 worktree 對話',
9215
+ workspace_worktree_failed: '建立 worktree 失敗:',
9216
+ session_worktree_badge: 'Worktree',
9217
+ model_scope_advisory: '從下一則訊息起適用於此對話。',
9218
+ model_scope_toast: '從下一則訊息起適用於此對話。',
9087
9219
  // commands.js
9088
- cmd_help: '\u67e5\u770b\u53ef\u7528\u547d\u4ee4',
9089
- cmd_clear: '\u6e05\u7a7a\u7576\u524d\u5c0d\u8a71\u8a0a\u606f',
9090
- cmd_compress: '\u624b\u52d5\u58d3\u7e2e\u5c0d\u8a71\u4e0a\u4e0b\u6587\uff08\u7528\u6cd5\uff1a/compress [\u4e3b\u984c]\uff09',
9091
- ctx_compress_hint: '\u58d3\u7e2e\u4e0a\u4e0b\u6587\u4ee5\u91cb\u653e\u7a7a\u9593 →',
9092
- ctx_compress_action: '\u26a0 \u7acb\u5373\u58d3\u7e2e\u4ee5\u91cb\u653e\u4e0a\u4e0b\u6587',
9093
- cmd_compact_alias: '\u820a\u5225\u540d\uff1a/compress',
9094
- cmd_model: '\u5207\u63db\u6a21\u578b\uff08\u4f8b\u5982 /model gpt-4o\uff09',
9095
- cmd_workspace: '\u6309\u540d\u7a31\u5207\u63db\u5de5\u4f5c\u5340',
9096
- cmd_terminal: '\u6253\u958b\u5de5\u4f5c\u5340 Terminal',
9097
- cmd_new: '\u65b0\u5efa\u804a\u5929\u6703\u8a71',
9098
- cmd_usage: '\u5207\u63db token \u7528\u91cf\u986f\u793a',
9099
- cmd_theme: '\u5207\u63db\u5916\u89c0\uff08\u4e3b\u984c\uff1asystem/dark/light\uff0c\u76ae\u819a\uff1adefault/ares/mono/slate/poseidon/sisyphus/charizard/sienna/catppuccin/nous/geist-contrast\uff09',
9100
- cmd_personality: '\u5207\u63db Agent \u4eba\u8a2d',
9101
- cmd_skills: '\u5217\u51fa\u53ef\u7528\u7684 Hermes \u6280\u80fd',
9102
- available_commands: '\u53ef\u7528\u547d\u4ee4\uff1a',
9103
- type_slash: '\u8f38\u5165 / \u53ef\u67e5\u770b\u547d\u4ee4',
9104
- conversation_cleared: '\u5c0d\u8a71\u5df2\u6e05\u7a7a',
9105
- command_label: '\u547d\u4ee4',
9106
- context_compaction_label: '\u4e0a\u4e0b\u6587\u58d3\u7e2e',
9107
- preserved_task_list_label: '\u4fdd\u7559\u7684\u4efb\u52d9\u6e05\u55ae',
9108
- reference_only_label: '\u50c5\u4f9b\u53c3\u8003',
9109
- model_usage: '\u7528\u6cd5\uff1a/model <name>',
9110
- no_model_match: '\u6c92\u6709\u5339\u914d\u201c',
9111
- switched_to: '\u5df2\u5207\u63db\u5230 ',
9112
- workspace_usage: '\u7528\u6cd5\uff1a/workspace <name>',
9113
- no_workspace_match: '\u6c92\u6709\u5339\u914d\u201c',
9114
- switched_workspace: '\u5df2\u5207\u63db\u5de5\u4f5c\u5340\uff1a',
9115
- workspace_switch_failed: '\u5de5\u4f5c\u5340\u5207\u63db\u5931\u6557\uff1a',
9116
- new_session: '\u5df2\u65b0\u5efa\u6703\u8a71',
9220
+ cmd_clear: '清除對話訊息',
9221
+ cmd_help: '列出可用命令',
9222
+ cmd_compress: '手動壓縮對話脈絡(用法:/compress [主題]',
9223
+ ctx_compress_hint: '壓縮脈絡以釋放空間 →',
9224
+ ctx_compress_action: ' 立即壓縮以釋放脈絡',
9225
+ cmd_compact_alias: '舊別名:/compress',
9226
+ cmd_model: '切換模型(例如 /model gpt-4o',
9227
+ cmd_workspace: '依名稱切換工作區',
9228
+ cmd_terminal: '開啟工作區 Terminal',
9229
+ cmd_new: '開始新的聊天對話',
9230
+ cmd_usage: '開啟或關閉 token 用量顯示',
9231
+ cmd_theme: '切換外觀(主題:system/dark/light,skin:default/ares/mono/slate/poseidon/sisyphus/charizard/sienna/catppuccin/nous/geist-contrast',
9232
+ cmd_personality: '切換 Agent 角色',
9233
+ cmd_skills: '列出可用的 Hermes 技能',
9234
+ available_commands: '可用命令:',
9235
+ type_slash: '輸入 / 檢視命令',
9236
+ conversation_cleared: '已清除對話',
9237
+ command_label: '命令',
9238
+ context_compaction_label: '脈絡壓縮',
9239
+ retrieval_context_label: '已索引的脈絡',
9240
+ retrieval_context_preview: '較早的訊息已儲存,可透過脈絡工具擷取',
9241
+ preserved_task_list_label: '保留的任務清單',
9242
+ reference_only_label: '僅供參考',
9243
+ model_usage: '用法:/model <name>',
9244
+ no_model_match: '沒有符合的模型:',
9245
+ switched_to: '已切換到 ',
9246
+ workspace_usage: '用法:/workspace <name>',
9247
+ no_workspace_match: '沒有符合的工作區:',
9248
+ switched_workspace: '已切換至工作區:',
9249
+ workspace_switch_failed: '工作區切換失敗:',
9250
+ new_session: '已建立新對話',
9117
9251
  new_session_creating: '正在建立新對話…',
9118
- compressing: '\u6b63\u5728\u8981\u6c42\u58d3\u7e2e\u4e0a\u4e0b\u6587...',
9119
- compress_running_label: '\u58d3\u7e2e\u4e2d',
9120
- compress_complete_label: '\u58d3\u7e2e\u5b8c\u6210',
9121
- auto_compress_label: '\u81ea\u52d5\u58d3\u7e2e',
9122
- compress_failed_label: '\u58d3\u7e2e\u5931\u6557',
9123
- focus_label: '\u4e3b\u984c',
9124
- token_usage_on: 'Token \u7528\u91cf\u986f\u793a\u5df2\u958b\u555f',
9125
- token_usage_off: 'Token \u7528\u91cf\u986f\u793a\u5df2\u95dc\u9589',
9252
+ compressing: '正在要求壓縮脈絡……',
9253
+ compress_running_label: '壓縮中',
9254
+ compress_complete_label: '壓縮完成',
9255
+ auto_compress_label: '自動壓縮',
9256
+ compress_failed_label: '壓縮失敗',
9257
+ focus_label: '主題',
9258
+ token_usage_on: 'Token 用量顯示已開啟',
9259
+ token_usage_off: 'Token 用量顯示已關閉',
9126
9260
  usage_cache_hit_detail: '快取:{0}% 命中(讀取 {1} / 寫入 {2})',
9127
9261
  usage_cached_percent: '{0}% 已快取',
9128
- theme_usage: '\u7528\u6cd5\uff1a/theme ',
9129
- theme_set: '\u4e3b\u984c\uff1a',
9130
- no_active_session: '\u7576\u524d\u6c92\u6709\u6d3b\u52d5\u6703\u8a71',
9262
+ theme_usage: '用法:/theme ',
9263
+ theme_set: '主題:',
9264
+ no_active_session: '沒有使用中的對話',
9265
+ cmd_queue: '將訊息加入下一輪的佇列',
9266
+ cmd_goal: '設定或檢視持久目標',
9267
+ goal_evaluating_progress: '正在評估目標進度…',
9268
+ goal_working_toward: '正在朝目標執行…',
9269
+ goal_continuing_toast: '正在繼續目標…',
9270
+ goal_status_none: '沒有使用中的目標。請使用 /goal <text> 設定。',
9271
+ goal_status_active: (turns, max_turns, goal) => `⊙ 目標(進行中,${turns}/${max_turns} 回合):${goal}`,
9272
+ goal_status_paused: (turns, max_turns, reason, goal) => `⏸ 目標(已暫停,${turns}/${max_turns}${reason ? `,${reason}` : ''}):${goal}`,
9273
+ goal_status_done: (turns, max_turns, goal) => `✓ 目標完成(${turns}/${max_turns}):${goal}`,
9274
+ goal_set: (turns, goal) => `⊙ 已設定目標(${turns} 回合預算):${goal}`,
9275
+ goal_paused: (goal) => `⏸ 目標已暫停:${goal}`,
9276
+ goal_resumed: (goal) => `▶ 目標已恢復:${goal}`,
9277
+ goal_cleared: '目標已清除。',
9278
+ goal_no_goal: '沒有使用中的目標。',
9279
+ goal_achieved: (reason) => `✓ 目標已達成:${reason}`,
9280
+ goal_paused_budget_exhausted: (turns, max_turns) => `⏸ 目標已暫停,已使用 ${turns}/${max_turns} 回合。使用 /goal resume 繼續,或使用 /goal clear 停止。`,
9281
+ goal_continuing: (turns, max_turns, reason) => `↻ 繼續目標(${turns}/${max_turns}):${reason}`,
9282
+ cmd_interrupt: '取消目前回合並傳送新訊息',
9283
+ cmd_steer: '在回合進行中注入修正,不中斷 Agent',
9284
+ cmd_queue_no_msg: '用法:/queue <訊息>',
9285
+ cmd_queue_not_busy: '沒有活動任務 — 直接傳送即可',
9286
+ cmd_queue_confirm: '訊息已加入佇列',
9287
+ cmd_interrupt_no_msg: '用法:/interrupt <訊息>',
9288
+ cmd_interrupt_confirm: '已中斷,正在傳送新訊息',
9289
+ cmd_steer_no_msg: '用法:/steer <訊息>',
9290
+ cmd_steer_fallback: 'Steer 不可用 — 已加入下一輪佇列',
9291
+ cmd_steer_delivered: 'Steer 已送達,Agent 會在下一個工具結果中看到',
9292
+ steer_leftover_queued: 'Steer 已加入下一輪佇列',
9293
+ busy_steer_fallback: 'Steer 不可用 — 已加入下一輪佇列',
9294
+ busy_interrupt_confirm: '已中斷,正在傳送新訊息',
9295
+ settings_label_busy_input_mode: '忙碌輸入模式',
9296
+ settings_desc_busy_input_mode: '控制 Agent 執行時送出訊息的行為。佇列會等待;中斷會取消並重新開始;Steer 會中途注入修正且不中斷(Agent 或串流無法使用時會退回佇列)。',
9297
+ settings_label_fade_text_effect: '文字淡入效果',
9298
+ settings_desc_fade_text_effect: '在助理回覆時讓新串流輸出的詞語淡入顯示。類似 OpenWebUI;為獲得最佳效能預設關閉。',
9299
+ settings_busy_input_mode_queue: '加入佇列',
9300
+ settings_busy_input_mode_interrupt: '中斷目前回合',
9301
+ settings_busy_input_mode_steer: 'Steer(中途修正)',
9131
9302
 
9303
+ slash_skill_badge: '技能',
9304
+ slash_skill_desc: '叫用此技能',
9305
+ cmd_stop: '停止目前回應',
9306
+ cmd_title: '取得或設定對話標題',
9307
+ cmd_retry: '重新送出上一則訊息',
9308
+ cmd_undo: '移除上一組問答',
9309
+ cmd_btw: '提出旁支問題(暫時)',
9310
+ cmd_btw_usage: '/btw <question> — 使用對話脈絡提出旁支問題',
9311
+ cmd_background: '在背景執行提示詞',
9312
+ cmd_background_usage: '/background <prompt> — 平行執行,不阻塞目前工作',
9313
+ cmd_branch: '將此對話分支成新的對話',
9314
+ cmd_branch_usage: '/branch [name] — 分支對話(可選擇命名)',
9315
+ branch_forked: '已分支成新的對話',
9316
+ branch_failed: '分支失敗:',
9317
+ fork_from_here: '從這裡分支',
9318
+ forked_from: '分支來源',
9319
+ subagent_children: '子 Agent 對話',
9320
+ btw_asking: '正在詢問旁支問題…',
9321
+ btw_label: '旁支問題,不會寫入記錄',
9322
+ btw_done: '旁支問題已回答',
9323
+ btw_no_answer: '未收到回答。',
9324
+ btw_failed: '旁支問題失敗:',
9325
+ bg_running: '正在背景執行…',
9326
+ bg_complete: '背景任務已完成',
9327
+ bg_label: '背景結果:',
9328
+ bg_no_answer: '(沒有回答)',
9329
+ bg_failed: '背景任務失敗:',
9330
+ undo_exchange: '復原上一組問答',
9331
+ cmd_status: '顯示對話資訊',
9332
+ cmd_voice: '切換麥克風輸入',
9333
+ stream_stopped: '回應已停止。',
9334
+ no_active_task: '沒有可停止的使用中任務。',
9335
+ cancel_unavailable: '無法取消。',
9336
+ retry_failed: '重試失敗:',
9337
+ undo_failed: '復原失敗:',
9338
+ undid_n_messages: '已移除',
9339
+ undid_messages_suffix: '則訊息。',
9340
+ status_heading: '對話狀態',
9341
+ status_session_id: '對話 ID',
9342
+ status_title: '標題',
9343
+ status_model: '模型',
9344
+ status_provider: '供應商',
9345
+ status_workspace: '工作區',
9346
+ status_personality: '角色',
9347
+ status_messages: '訊息',
9348
+ status_agent_running: 'Agent 執行中',
9349
+ status_profile: '個人資料',
9350
+ status_hermes_home: 'Hermes 主目錄',
9351
+ status_started: '開始時間',
9352
+ status_updated: '已更新',
9353
+ status_tokens: 'Token',
9354
+ status_ephemeral: '暫時快照,未儲存到對話記錄。',
9355
+ status_no_tokens: '未使用 Token',
9356
+ status_unknown: '未知',
9357
+ status_yes: '是',
9358
+ status_no: '否',
9359
+ status_load_failed: '載入狀態失敗:',
9360
+ title_current: '目前標題',
9361
+ title_change_hint: '使用 `/title <new name>` 重新命名。',
9362
+ title_set: '標題已設定為',
9363
+ cmd_webui_only_session: '此命令無法用於從 CLI 匯入的對話。',
9364
+ cmd_voice_use_mic: '請點選輸入框中的麥克風按鈕。',
9365
+ usage_heading: 'Token 用量',
9366
+ usage_default_model: '預設',
9367
+ usage_unknown: '未知',
9368
+ usage_input_tokens: '輸入 Token',
9369
+ usage_output_tokens: '輸出 Token',
9370
+ usage_total: 'Token 總計',
9371
+ usage_estimated_cost: '估計成本',
9372
+ usage_settings_tip: '注意:成本估計僅供參考。',
9373
+ usage_load_failed: '載入用量失敗:',
9374
+ usage_personality_none: '無',
9375
+ // Session toolsets (#493)
9376
+ session_toolsets: '對話工具集',
9377
+ session_toolsets_desc: '限制此對話可用的工具(留空即使用全域設定)',
9378
+ session_toolsets_global: '全域(預設)',
9379
+ session_toolsets_custom: '自訂',
9380
+ session_toolsets_placeholder: 'tool1, tool2, …',
9381
+ session_toolsets_apply: '套用',
9382
+ session_toolsets_clear: '清除(使用全域)',
9383
+ session_toolsets_applied: '工具集已更新',
9384
+ session_toolsets_cleared: '工具集已清除,改用全域設定',
9385
+ session_toolsets_failed: '更新工具集失敗:',
9386
+ untitled: '未命名',
9387
+ no_personalities: '找不到角色(可新增至 ~/.hermes/personalities/)',
9388
+ available_personalities: '可用角色:',
9389
+ personality_switch_hint: '\n\n使用 `/personality <name>` 切換,或使用 `/personality none` 清除。',
9390
+ personalities_load_failed: '載入角色失敗',
9391
+ personality_cleared: '已清除角色',
9392
+ personality_set: '角色:',
9393
+ failed_colon: '失敗:',
9394
+ // ui.js
9395
+ no_workspace: '沒有工作區',
9396
+ terminal_open_title: '開啟工作區 Terminal',
9397
+ terminal_no_workspace_title: '請先選擇工作區再開啟 Terminal',
9398
+ terminal_title: 'Terminal',
9399
+ terminal_clear: '清空',
9400
+ terminal_copy_output: '複製輸出',
9401
+ terminal_restart: '重新啟動',
9402
+ terminal_collapse: '收合',
9403
+ terminal_expand: '展開',
9404
+ terminal_close: '關閉',
9405
+ terminal_input_placeholder: '輸入命令……',
9406
+ terminal_start_failed: 'Terminal 啟動失敗:',
9407
+ terminal_input_failed: 'Terminal 輸入失敗:',
9408
+ terminal_copy_failed: '複製失敗:',
9409
+ terminal_error: 'Terminal 錯誤',
9132
9410
  workspace_empty_no_path: '未選擇工作區。請在 設定 → 工作區 中設定工作區以瀏覽檔案。',
9133
9411
  workspace_empty_dir: '此工作區為空。',
9134
9412
  workspace_show_hidden_files: '顯示隱藏檔案',
9135
- workspace_show_hidden_files_desc: 'Include .DS_Store, .git, node_modules, and other hidden / system files in the file tree.',
9136
- workspace_hidden_files_visible: 'hidden visible',
9137
- workspace_hidden_files_visible_title: 'Hidden files are visible — click for options',
9138
- workspace_options: 'Workspace options',
9139
- no_personalities: '\u6c92\u6709\u627e\u5230\u4eba\u8a2d\uff08\u53ef\u6dfb\u52a0\u5230 ~/.hermes/personalities/\uff09',
9140
- available_personalities: '\u53ef\u7528\u4eba\u8a2d\uff1a',
9141
- personality_switch_hint: '\n\n\u4f7f\u7528 `/personality <name>` \u5207\u63db\uff0c\u6216\u7528 `/personality none` \u6e05\u7a7a\u3002',
9142
- personalities_load_failed: '\u52a0\u8f7d\u4eba\u8a2d\u5931\u6557',
9143
- personality_cleared: '\u4eba\u8a2d\u5df2\u6e05\u7a7a',
9144
- personality_set: '\u7576\u524d\u4eba\u8a2d\uff1a',
9145
- failed_colon: '\u5931\u6557\uff1a',
9146
- // ui.js
9147
- no_workspace: '\u672a\u9078\u64c7\u5de5\u4f5c\u5340',
9148
- terminal_open_title: '\u6253\u958b\u5de5\u4f5c\u5340 Terminal',
9149
- terminal_no_workspace_title: '\u8acb\u5148\u9078\u64c7\u5de5\u4f5c\u5340\u518d\u6253\u958b Terminal',
9150
- terminal_title: 'Terminal',
9151
- terminal_clear: '\u6e05\u7a7a',
9152
- terminal_copy_output: '\u8907\u88fd\u8f38\u51fa',
9153
- terminal_restart: '\u91cd\u555f',
9154
- terminal_collapse: '\u6536\u5408',
9155
- terminal_expand: '\u5c55\u958b',
9156
- terminal_close: '\u95dc\u9589',
9157
- terminal_input_placeholder: '\u8f38\u5165\u547d\u4ee4...',
9158
- terminal_start_failed: 'Terminal \u555f\u52d5\u5931\u6557\uff1a',
9159
- terminal_input_failed: 'Terminal \u8f38\u5165\u5931\u6557\uff1a',
9160
- terminal_copy_failed: '\u8907\u88fd\u5931\u6557\uff1a',
9161
- terminal_error: 'Terminal \u932f\u8aa4',
9413
+ workspace_show_hidden_files_desc: '在檔案樹中包含 .DS_Store、.gitnode_modules 與其他隱藏/系統檔案。',
9414
+ workspace_hidden_files_visible: '顯示隱藏檔',
9415
+ workspace_hidden_files_visible_title: '隱藏檔已顯示,點選可檢視選項',
9416
+ workspace_options: '工作區選項',
9162
9417
  // workspace.js
9163
- unsaved_confirm: '\u9810\u89bd\u5340\u6709\u672a\u5132\u5b58\u4fee\u6539\uff0c\u8981\u653e\u68c4\u66f4\u6539\u5e76\u7e7c\u7e8c\u8df3\u8ee2\u55ce\uff1f',
9164
- save: '\u5132\u5b58',
9165
- edit: '\u7de8\u8f2f',
9166
- save_title: '\u5132\u5b58\u4fee\u6539',
9167
- edit_title: '\u7de8\u8f2f\u6b64\u6587\u4ef6',
9168
- saved: '\u5df2\u5132\u5b58',
9169
- save_failed: '\u5132\u5b58\u5931\u6557\uff1a',
9170
- image_load_failed: '\u5716\u7247\u52a0\u8f09\u5931\u6557',
9171
- file_open_failed: '\u7121\u6cd5\u6253\u958b\u6587\u4ef6',
9172
- downloading: (name) => `\u6b63\u5728\u4e0b\u8f09 ${name}...`,
9173
- double_click_rename: '\u96d9\u64ca\u91cd\u547d\u540d',
9174
- session_rename_failed_no_row: 'Could not start rename — row not found.',
9175
- renamed_to: '\u5df2\u91cd\u547d\u540d\u70ba ',
9176
- rename_failed: '\u91cd\u547d\u540d\u5931\u6557\uff1a',
9177
- delete_title: '\u522a\u9664',
9178
- delete_confirm: (name) => `\u8981\u522a\u9664 ${name} \u55ce\uff1f`,
9179
- delete_dir_confirm: (name) => `刪除資料夾 "${name}" 及其所有內容?`,
9418
+ unsaved_confirm: '預覽中有未儲存的變更。要捨棄並前往其他位置嗎?',
9419
+ save: '儲存',
9420
+ edit: '編輯',
9421
+ save_title: '儲存變更',
9422
+ edit_title: '編輯這個檔案',
9423
+ saved: '已儲存',
9424
+ save_failed: '儲存失敗:',
9425
+ image_load_failed: '無法載入圖片',
9426
+ file_open_failed: '無法開啟檔案',
9427
+ downloading: (name) => `正在下載 ${name}…`,
9428
+ double_click_rename: '按兩下即可重新命名',
9429
+ session_rename_failed_no_row: '無法開始重新命名,找不到資料列。',
9430
+ renamed_to: '已重新命名為 ',
9431
+ rename_failed: '重新命名失敗:',
9432
+ delete_title: '刪除',
9433
+ delete_confirm: (name) => `要刪除 ${name} 嗎?`,
9434
+ delete_dir_confirm: (name) => `刪除資料夾「${name}」及其所有內容?`,
9180
9435
  rename_title: '重新命名',
9181
- rename_prompt: '新名稱:',
9182
- deleted: '\u5df2\u522a\u9664 ',
9183
- delete_failed: '\u522a\u9664\u5931\u6557\uff1a',
9184
- reveal_in_finder: '\u5728\u6a94\u6848\u7ba1\u7406\u54e1\u4e2d\u986f\u793a',
9185
- reveal_failed: '\u986f\u793a\u5931\u6557\uff1a',
9186
- copy_file_path: '\u8907\u88fd\u6a94\u6848\u8def\u5f91',
9187
- open_in_vscode: '在VS Code中開啟',
9188
- open_in_vscode_failed: '在VS Code中開啟失敗:',
9189
- download_folder: 'Download Folder', // TODO: translate
9190
- path_copied: '\u6a94\u6848\u8def\u5f91\u5df2\u8907\u88fd\u5230\u526a\u8cbc\u7c3f',
9191
- path_copy_failed: '\u8907\u88fd\u8def\u5f91\u5931\u6557\uff1a',
9192
- session_rename: '\u91cd\u65b0\u547d\u540d\u5c0d\u8a71',
9193
- session_rename_desc: '\u7de8\u8f2f\u6b64\u5c0d\u8a71\u7684\u6a19\u984c',
9436
+ rename_prompt: '新名稱:',
9437
+ deleted: '已刪除 ',
9438
+ delete_failed: '刪除失敗:',
9439
+ reveal_in_finder: '在檔案管理員中顯示',
9440
+ reveal_failed: '顯示失敗:',
9441
+ copy_file_path: '複製檔案路徑',
9442
+ open_in_vscode: '在 VS Code 中開啟',
9443
+ open_in_vscode_failed: '在 VS Code 中開啟失敗:',
9444
+ download_folder: '下載資料夾',
9445
+ path_copied: '檔案路徑已複製到剪貼簿',
9446
+ path_copy_failed: '複製路徑失敗:',
9447
+ session_rename: '重新命名對話',
9448
+ session_rename_desc: '編輯此對話的標題',
9449
+ session_title_regenerate: '重新產生標題',
9450
+ session_title_regenerate_desc: '請 Hermes 依對話產生新的標題',
9451
+ session_title_regenerating: '正在重新產生標題…',
9452
+ session_title_regenerated: (title) => `標題已重新產生:${title}`,
9453
+ session_title_regenerate_failed: '重新產生標題失敗:',
9194
9454
  session_copy_link: '複製對話連結',
9195
9455
  session_copy_link_desc: '複製此對話的直接連結',
9196
9456
  session_link_copied: '對話連結已複製到剪貼簿',
9197
9457
  session_link_copy_failed: '無法複製對話連結:',
9198
- new_file_prompt: '\u65b0\u6587\u4ef6\u540d\uff08\u4f8b\u5982 notes.md\uff09\uff1a',
9199
- created: '\u5df2\u5275\u5efa ',
9200
- create_failed: '\u5275\u5efa\u5931\u6557\uff1a',
9201
- new_folder_prompt: '\u65b0\u6587\u4ef6\u593e\u540d\u7a31\uff1a',
9202
- folder_created: '\u5df2\u5275\u5efa\u6587\u4ef6\u593e ',
9203
- folder_create_failed: '\u5275\u5efa\u6587\u4ef6\u593e\u5931\u6557\uff1a',
9204
- workspace_auto_create_folder: '\u8cc7\u6599\u593e\u4e0d\u5b58\u5728\u6642\u5247\u5efa\u7acb',
9205
- folder_add_as_space_btn: '\u65b0\u589e\u70ba\u5de5\u4f5c\u5340',
9206
- folder_add_as_space_msg: '\u662f\u5426\u5c07\u6b64\u8cc7\u6599\u593e\u65b0\u589e\u70ba\u5de5\u4f5c\u5340\uff1f',
9207
- folder_add_as_space_title: '\u65b0\u589e\u70ba\u5de5\u4f5c\u5340\uff1f',
9208
- remove_title: '\u79fb\u9664',
9209
- empty_dir: '(空)',
9458
+ new_file_prompt: '新檔案名稱(例如 notes.md):',
9459
+ created: '已建立 ',
9460
+ create_failed: '建立失敗:',
9461
+ new_folder_prompt: '新資料夾名稱:',
9462
+ folder_created: '已建立資料夾 ',
9463
+ folder_create_failed: '建立資料夾失敗:',
9464
+ workspace_auto_create_folder: '資料夾不存在時自動建立',
9465
+ folder_add_as_space_btn: '新增為空間',
9466
+ folder_add_as_space_msg: '要將此資料夾新增為工作區清單中的新空間嗎?',
9467
+ folder_add_as_space_title: '要新增為空間嗎?',
9468
+ remove_title: '移除',
9469
+ empty_dir: '(空)',
9210
9470
  upload_failed: '上傳失敗:',
9211
9471
  upload_too_large: (maxMb, fileMb) => `檔案過大(${fileMb} MB)。最大上傳大小為 ${maxMb} MB。`,
9212
- all_uploads_failed: (n) => `${n} 個檔案全部上傳失敗`,
9472
+ uploading: '上傳中…',
9473
+ uploaded: '已上傳',
9474
+ all_uploads_failed: (n) => `全部 ${n} 個上傳都失敗`,
9475
+ archive_extracted: (n, c) => `從 ${c} 個壓縮包中解壓縮了 ${n} 個檔案`,
9213
9476
  session_pin: '釘選對話',
9214
9477
  session_unpin: '取消釘選',
9215
9478
  session_pin_desc: '將此對話置頂',
@@ -9219,23 +9482,23 @@ const LOCALES = {
9219
9482
  session_move_project_desc_has: '變更此對話的專案',
9220
9483
  session_move_project_desc_none: '為此對話指定專案',
9221
9484
  session_archive: '封存對話',
9222
- session_hide_external: '從列表中隱藏',
9485
+ session_hide_external: '從清單中隱藏',
9223
9486
  session_restore: '還原對話',
9224
9487
  session_archive_desc: '隱藏此對話,直到開啟顯示封存',
9225
9488
  session_archive_worktree_desc: '隱藏此對話;保留磁碟上的 worktree',
9226
- session_hide_external_desc: '從 WebUI 列表中隱藏此匯入的對話,不刪除原始歷史記錄。',
9489
+ session_hide_external_desc: '從 WebUI 清單中隱藏此匯入的對話,不刪除原始歷史記錄。',
9227
9490
  session_restore_desc: '將此對話移回主清單',
9228
9491
  session_archived: '對話已封存',
9229
9492
  session_archived_worktree: '對話已封存。Worktree 仍保留在磁碟上。',
9230
- session_hidden: '已從列表中隱藏對話',
9493
+ session_hidden: '已從清單中隱藏對話',
9231
9494
  session_restored: '對話已還原',
9232
9495
  session_archive_failed: '封存失敗:',
9233
9496
  session_duplicate: '複製對話',
9234
9497
  session_duplicate_desc: '建立一個相同工作區與模型的副本',
9235
9498
  session_duplicated: '對話已複製',
9236
9499
  session_duplicate_failed: '複製失敗:',
9237
- session_stop_response: 'Stop response',
9238
- session_stop_response_desc: 'Cancel the running response for this conversation',
9500
+ session_stop_response: '停止回應',
9501
+ session_stop_response_desc: '取消此對話中正在執行的回應',
9239
9502
  session_delete: '刪除對話',
9240
9503
  session_delete_desc: '永久移除這個對話',
9241
9504
  session_delete_confirm: '刪除此對話?',
@@ -9256,20 +9519,20 @@ const LOCALES = {
9256
9519
  session_worktree_remove_unsafe_blocked: '請先處理本機變更或未推送提交,再刪除此 worktree。',
9257
9520
  session_worktree_remove_dirty_warning: '⚠️ 此 worktree 有未提交的變更,將被永久刪除。',
9258
9521
  session_worktree_remove_untracked_warning: (count) => `${count} 個未追蹤檔案將被永久刪除。`,
9259
- session_worktree_remove_ahead_warning: (ahead) => `${ahead} 個未推送的提交將丟失。`,
9522
+ session_worktree_remove_ahead_warning: (ahead) => `${ahead} 個未推送的提交會遺失。`,
9260
9523
  session_select_mode: '選取',
9261
- session_select_mode_desc: '選取會話以批次管理',
9524
+ session_select_mode_desc: '選取對話以批次管理',
9262
9525
  session_select_all: '全選',
9263
9526
  session_deselect_all: '取消全選',
9264
9527
  session_selected_count: '已選 {0} 個',
9265
9528
  session_batch_archive: '封存',
9266
9529
  session_batch_delete: '刪除',
9267
9530
  session_batch_move: '移至專案',
9268
- session_batch_delete_confirm: '刪除 {0} 個會話?',
9269
- session_batch_archive_confirm: '封存 {0} 個會話?',
9270
- session_batch_delete_worktree_confirm: '刪除 {0} 個會話?其中 {1} 個 worktree 會話會把 worktree 目錄保留在磁碟上。',
9271
- session_batch_archive_worktree_confirm: '封存 {0} 個會話?其中 {1} 個 worktree 會話會把 worktree 目錄保留在磁碟上。',
9272
- session_no_selection: '未選取任何會話',
9531
+ session_batch_delete_confirm: '要刪除 {0} 個對話嗎?',
9532
+ session_batch_archive_confirm: '要封存 {0} 個對話嗎?',
9533
+ session_batch_delete_worktree_confirm: '要刪除 {0} 個對話嗎?其中 {1} 個 worktree 對話會把 worktree 目錄保留在磁碟上。',
9534
+ session_batch_archive_worktree_confirm: '要封存 {0} 個對話嗎?其中 {1} 個 worktree 對話會把 worktree 目錄保留在磁碟上。',
9535
+ session_no_selection: '未選取任何對話',
9273
9536
  // settings panel
9274
9537
  settings_heading_title: '控制中心',
9275
9538
  settings_heading_subtitle: '偏好設定、對話工具與系統控制。',
@@ -9279,25 +9542,25 @@ const LOCALES = {
9279
9542
  settings_section_preferences_title: '偏好設定',
9280
9543
  settings_section_preferences_meta: 'Hermes Web UI 的預設值與介面行為。',
9281
9544
  settings_section_system_title: '系統',
9282
- settings_section_system_meta: '實例版本與存取控制。',
9545
+ settings_section_system_meta: '執行個體版本與存取控制。',
9283
9546
  settings_check_now: '立即檢查',
9284
- settings_checking: '檢查中\u2026',
9285
- settings_up_to_date: '已是最新 \u2713',
9547
+ settings_checking: '檢查中…',
9548
+ settings_up_to_date: '已是最新 ',
9286
9549
  settings_updates_available: '有 {count} 個更新可用',
9287
- settings_updates_disabled: '更新檢查已禁用',
9550
+ settings_updates_disabled: '更新檢查已停用',
9288
9551
  settings_update_check_failed: '更新檢查失敗',
9289
- settings_label_workspace_panel_open: '預設保持工作區面板開啓',
9290
- settings_desc_workspace_panel_open: '啟用後,工作區/檔案瀏覽器面板會在每次新會話時自動開啓。您仍可隨時手動關閉。',
9291
- settings_label_session_jump_buttons: '顯示會話跳轉按鈕',
9292
- settings_desc_session_jump_buttons: '閱讀較長會話歷史時顯示浮動的開頭與結尾按鈕。',
9552
+ settings_label_workspace_panel_open: '預設保持工作區面板開啟',
9553
+ settings_desc_workspace_panel_open: '啟用後,工作區/檔案瀏覽器面板會在每次新對話時自動開啟。仍可隨時手動關閉。',
9554
+ settings_label_session_jump_buttons: '顯示對話跳轉按鈕',
9555
+ settings_desc_session_jump_buttons: '閱讀較長對話記錄時,顯示浮動的開頭與結尾按鈕。',
9293
9556
 
9294
9557
  settings_label_session_endless_scroll: '向上捲動時載入較早訊息',
9295
9558
 
9296
9559
  settings_desc_session_endless_scroll: '啟用後,向上捲動時會自動載入較早訊息。停用時請使用載入較早訊息按鈕。',
9297
9560
 
9298
9561
  settings_label_tab_visibility: '側邊欄標籤',
9299
- settings_desc_tab_visibility: '選擇在側邊欄和導航列中顯示哪些標籤。聊天和設定始終可見。',
9300
- open_in_browser: '在瀏覽器中開啓',
9562
+ settings_desc_tab_visibility: '選擇在側邊欄和導覽列中顯示哪些標籤。聊天和設定始終可見。',
9563
+ open_in_browser: '在瀏覽器中開啟',
9301
9564
  settings_dropdown_conversation: '對話',
9302
9565
  settings_dropdown_appearance: '外觀',
9303
9566
  settings_dropdown_preferences: '偏好設定',
@@ -9308,99 +9571,95 @@ const LOCALES = {
9308
9571
  settings_tab_preferences: '偏好設定',
9309
9572
  settings_tab_plugins: '外掛',
9310
9573
  settings_plugins_title: '外掛',
9311
- settings_plugins_meta: '檢視已安裝的 Hermes 外掛及其註冊的生命週期鉤子。此面板為唯讀。',
9574
+ plugins_enable_toggle: '啟用',
9575
+ settings_plugins_meta: '檢視已安裝的 Hermes 外掛及其註冊的生命週期掛鉤。此面板為唯讀。',
9312
9576
  settings_plugins_empty: '目前沒有可見的 Hermes 外掛。透過 Hermes CLI/設定檔安裝或啟用外掛後即可在此檢視。',
9313
9577
  plugins_unnamed: '未命名外掛',
9314
9578
  plugins_no_description: '未提供描述。',
9315
- plugins_no_hooks: '未註冊生命週期鉤子',
9316
- plugins_registered_hooks: '已註冊的鉤子',
9579
+ plugins_no_hooks: '未註冊生命週期掛鉤',
9580
+ plugins_registered_hooks: '已註冊的掛鉤',
9317
9581
  plugins_enabled: '已啟用',
9318
9582
  plugins_disabled: '已停用',
9319
9583
  plugins_active_provider: '啟用中(提供者)',
9320
- plugins_provider_no_hooks: '提供者外掛 無代理可見鉤子',
9584
+ plugins_provider_no_hooks: '供應商外掛,沒有 Agent 可見的掛鉤',
9321
9585
  plugins_load_failed: '載入外掛失敗:',
9322
9586
  settings_tab_system: '系統',
9323
- settings_title: '\u8a2d\u5b9a',
9324
- settings_save_btn: '\u5132\u5b58\u8a2d\u5b9a',
9325
- settings_label_model: '\u9ed8\u8a8d\u6a21\u578b',
9326
- settings_desc_model: '\u7528\u65bc\u65b0\u6703\u8a71\u3002\u73fe\u6709\u6703\u8a71\u6703\u4fdd\u7559\u5404\u81ea\u9078\u5b9a\u7684\u6a21\u578b\u3002',
9327
- settings_label_auxiliary_models: '\u8f14\u52a9\u6a21\u578b',
9328
- settings_desc_auxiliary_models: '\u8996\u89ba\u5206\u6790\u3001\u4e0a\u4e0b\u6587\u58d3\u7e2e\u3001\u6a19\u984c\u7522\u751f\u7b49\u8f14\u52a9\u4efb\u52d9\u7684\u8def\u7531\u3002\u300c\u81ea\u52d5\u300d\u8868\u793a\u4f7f\u7528\u4e3b\u804a\u5929\u6a21\u578b\u3002',
9329
- settings_btn_reset_aux_models: '\u5168\u90e8\u91cd\u7f6e\u70ba\u81ea\u52d5',
9330
- settings_btn_apply_aux_models: '\u61c9\u7528\u8b8a\u66f4',
9331
- settings_aux_provider_auto: '\u4f7f\u7528\u4e3b\u6a21\u578b',
9332
- settings_aux_model_auto: '\u81ea\u52d5\uff08\u4f7f\u7528\u63d0\u4f9b\u5546\u9810\u8a2d\uff09',
9333
- settings_aux_model_custom: '\u81ea\u8a02\u6a21\u578b\u2026',
9334
- settings_aux_model_custom_prompt: '\u8f38\u5165\u6a21\u578b ID\uff1a',
9335
- settings_aux_loading: '\u6b63\u5728\u8f09\u5165\u8f14\u52a9\u6a21\u578b\u2026',
9336
- settings_aux_load_failed: '\u7121\u6cd5\u8f09\u5165\u8f14\u52a9\u6a21\u578b\u8a2d\u5b9a\uff0c\u8acb\u78ba\u4fdd Agent API \u53ef\u7528\u3002',
9337
- settings_aux_reset_confirm_title: '\u91cd\u7f6e\u8f14\u52a9\u6a21\u578b\uff1f',
9338
- settings_aux_reset_confirm_msg: '\u9019\u5c07\u628a\u6240\u6709\u8f14\u52a9\u4efb\u52d9\u8a2d\u5b9a\u70ba\u81ea\u52d5\uff08\u4f7f\u7528\u4e3b\u6a21\u578b\uff09\u3002',
9339
- settings_aux_reset_done: '\u8f14\u52a9\u6a21\u578b\u5df2\u91cd\u7f6e\u70ba\u81ea\u52d5',
9340
- settings_aux_save_failed: '\u8f14\u52a9\u6a21\u578b\u5132\u5b58\u5931\u6557',
9341
- settings_aux_saved: '\u8f14\u52a9\u6a21\u578b\u5df2\u66f4\u65b0',
9342
- settings_aux_no_changes: '\u6c92\u6709\u9700\u8981\u61c9\u7528\u7684\u8b8a\u66f4',
9343
- settings_label_send_key: '\u767c\u9001\u5feb\u6377\u9375',
9344
- settings_label_theme: '\u4e3b\u984c',
9587
+ settings_title: '設定',
9588
+ settings_save_btn: '儲存設定',
9589
+ settings_label_model: '預設模型',
9590
+ settings_desc_model: '用於新對話。現有對話會保留各自選定的模型。',
9591
+ settings_label_auxiliary_models: '輔助模型',
9592
+ settings_desc_auxiliary_models: '視覺分析、脈絡壓縮、標題產生等輔助任務的路由。「自動」表示使用主要聊天模型。',
9593
+ settings_btn_reset_aux_models: '全部重置為自動',
9594
+ settings_btn_apply_aux_models: '應用變更',
9595
+ settings_aux_provider_auto: '使用主模型',
9596
+ settings_aux_model_auto: '自動(使用供應商預設值)',
9597
+ settings_aux_model_custom: '自訂模型…',
9598
+ settings_aux_model_custom_prompt: '輸入模型 ID',
9599
+ settings_aux_loading: '正在載入輔助模型…',
9600
+ settings_aux_load_failed: '無法載入輔助模型設定,請確保 Agent API 可用。',
9601
+ settings_aux_reset_confirm_title: '重置輔助模型?',
9602
+ settings_aux_reset_confirm_msg: '這將把所有輔助任務設定為自動(使用主模型)。',
9603
+ settings_aux_reset_done: '輔助模型已重置為自動',
9604
+ settings_aux_save_failed: '輔助模型儲存失敗',
9605
+ settings_aux_saved: '輔助模型已更新',
9606
+ settings_aux_no_changes: '沒有需要應用的變更',
9607
+ settings_label_send_key: '送出按鍵',
9608
+ settings_label_theme: '主題',
9345
9609
  settings_label_skin: '佈景',
9346
- settings_label_font_size: '\u5b57\u9ad4\u5927\u5c0f',
9347
- font_size_small: '\u5c0f',
9348
- font_size_default: '\u9810\u8a2d',
9349
- font_size_large: '\u5927',
9350
- font_size_xlarge: '\u8d85\u5927',
9351
- settings_autosave_saving: '\u5132\u5b58\u4e2d…',
9352
- settings_autosave_saved: '\u5df2\u5132\u5b58',
9353
- settings_autosave_failed: '\u5132\u5b58\u5931\u6557',
9354
- settings_autosave_retry: '\u91cd\u8a66',
9355
- settings_label_language: '\u8a9e\u8a00',
9610
+ settings_label_font_size: '字型大小',
9611
+ font_size_small: '',
9612
+ font_size_default: '預設',
9613
+ font_size_large: '',
9614
+ font_size_xlarge: '超大',
9615
+ settings_autosave_saving: '儲存中…',
9616
+ settings_autosave_saved: '已儲存',
9617
+ settings_autosave_failed: '儲存失敗',
9618
+ settings_autosave_retry: '重試',
9619
+ settings_label_language: '語言',
9356
9620
  settings_label_quota_chip: '在編輯器中顯示供應商配額標籤',
9357
9621
  settings_desc_quota_chip: '在編輯器底部顯示剩餘配額指示器(如 OpenRouter 點數餘額)。預設關閉。啟用時僅在寬螢幕(≥1400px)顯示,以保持筆記型電腦和標準桌面螢幕上編輯器的整潔。',
9358
- settings_label_hide_suggestions: 'Hide new-chat suggestions',
9359
- settings_desc_hide_suggestions: 'Hide the three default suggestion buttons on the empty new-chat screen to avoid accidental taps.',
9360
- settings_label_token_usage: '\u986f\u793a token \u7528\u91cf',
9622
+ settings_label_hide_suggestions: '隱藏新聊天建議',
9623
+ settings_desc_hide_suggestions: '隱藏空白新聊天畫面上的三個預設建議按鈕,避免誤觸。',
9624
+ settings_label_token_usage: '顯示 token 用量',
9361
9625
  settings_label_sidebar_density: '側邊欄密度',
9362
- cmd_reasoning: '切換思考區塊可見性(顯示/隱藏)或設定努力等級',
9363
- settings_label_external_sessions: '顯示外部會話',
9626
+ cmd_reasoning: '切換思考內容可見性(顯示/隱藏)、設定推理強度,或檢查目前狀態',
9627
+ settings_label_external_sessions: '顯示外部對話',
9364
9628
  settings_label_previous_messaging_sessions: '顯示以前的訊息對話',
9365
- settings_label_sync_insights: '\u540c\u6b65\u5230 insights',
9366
- settings_label_check_updates: '\u6aa2\u67e5\u66f4\u65b0',
9367
- settings_label_ignore_agent_updates: 'Ignore Agent updates',
9368
- settings_label_whats_new_summary: "Summarize What's New with AI",
9369
- settings_label_bot_name: '預設助手名稱',
9370
- settings_label_password: '\u8a2a\u554f\u5bc6\u78bc',
9371
- settings_saved: '\u8a2d\u5b9a\u5df2\u5132\u5b58',
9372
- settings_save_failed: '\u5132\u5b58\u5931\u6557\uff1a',
9373
- settings_load_failed: '\u8a2d\u5b9a\u52a0\u8f09\u5931\u6557\uff1a',
9374
- archive_extracted: (n, c) => `\u5f9e ${c} \u500b\u58d3\u7e2e\u5305\u4e2d\u89e3\u58d3\u7e2e\u4e86 ${n} \u500b\u6a94\u6848`,
9375
- settings_saved_pw: '\u8a2d\u5b9a\u5df2\u5132\u5b58\uff0c\u5bc6\u78bc\u4fdd\u8b77\u5df2\u555f\u7528\uff0c\u7576\u524d\u700f\u89bd\u5668\u6703\u4fdd\u6301\u767b\u5165',
9376
- settings_saved_pw_updated: '\u8a2d\u5b9a\u5df2\u5132\u5b58\uff0c\u5bc6\u78bc\u5df2\u66f4\u65b0',
9377
- // login page
9378
- login_title: '\u767b\u5f55',
9379
- login_subtitle: '\u8f38\u5165\u5bc6\u78bc\u7e7c\u7e8c\u4f7f\u7528',
9380
- login_placeholder: '\u5bc6\u78bc',
9381
- login_btn: '\u767b\u5f55',
9382
- login_invalid_pw: '\u5bc6\u78bc\u932f\u8aa4',
9383
- login_conn_failed: '\u9023\u63a5\u5931\u6557',
9384
- // missing keys from English
9629
+ settings_label_sync_insights: '同步至 insights',
9630
+ settings_label_check_updates: '檢查更新',
9631
+ settings_label_ignore_agent_updates: '忽略 Agent 更新',
9632
+ settings_label_whats_new_summary: '使用 AI 摘要新版內容',
9633
+ settings_label_bot_name: '助理名稱',
9634
+ settings_label_password: '存取密碼',
9635
+ settings_saved: '設定已儲存',
9636
+ settings_save_failed: '儲存失敗:',
9637
+ settings_load_failed: '載入設定失敗:',
9638
+ settings_saved_pw: '設定已儲存,密碼保護已啟用,此瀏覽器會維持登入狀態',
9639
+ settings_saved_pw_updated: '設定已儲存,密碼已更新',
9640
+ // login page (used server-side via /api/i18n/login endpoint)
9641
+ login_title: '登入',
9642
+ login_subtitle: '輸入密碼繼續使用',
9643
+ login_placeholder: '密碼',
9644
+ login_btn: '登入',
9645
+ login_invalid_pw: '密碼錯誤',
9646
+ login_conn_failed: '連線失敗',
9385
9647
  dialog_confirm_title: '確認操作',
9386
- dialog_prompt_title: '輸入內容',
9648
+ dialog_prompt_title: '輸入值',
9387
9649
  dialog_confirm_btn: '確認',
9388
- discard: '放棄',
9389
- clear: '清空',
9650
+ discard: '捨棄',
9651
+ clear: '清除',
9390
9652
  create: '建立',
9391
9653
  remove: '移除',
9392
9654
  project_name_prompt: '專案名稱:',
9393
- tab_chat: '\u804a\u5929',
9394
- tab_memory: '\u8a18\u61b6',
9395
- tab_skills: '\u6280\u80fd',
9396
- tab_tasks: '\u4efb\u52d9',
9397
- tab_todos: '待辦',
9398
- tab_insights: '統計',
9399
- tab_dashboard: 'Hermes 儀表板',
9400
- dashboard_loopback_warning: '儀表板在伺服器上僅限 loopback 存取。請從伺服器本機瀏覽,或使用 --host 0.0.0.0 重新啟動(不安全)。',
9401
- tab_logs: 'Logs',
9402
- tab_workspaces: '\u5de5\u4f5c\u5340',
9403
- tab_kanban: 'Kanban',
9655
+ // Sidebar & Tabs
9656
+ tab_chat: '聊天',
9657
+ tab_tasks: '任務',
9658
+ tab_skills: '技能',
9659
+ tab_memory: '記憶',
9660
+ tab_workspaces: '工作區',
9661
+ tab_profiles: '設定檔',
9662
+ tab_kanban: '看板',
9404
9663
  kanban_board: '看板',
9405
9664
  kanban_visible_tasks: '{0} 個可見任務',
9406
9665
  kanban_search_tasks: '搜尋任務',
@@ -9435,561 +9694,249 @@ const LOCALES = {
9435
9694
  kanban_description: '描述',
9436
9695
  kanban_description_placeholder: '選填 — 需要完成的事項、驗收標準、連結',
9437
9696
  kanban_status: '狀態',
9438
- kanban_status_original_hint: '實際狀態:{0}。此對話框僅支援編輯 Triage/Todo/Ready。',
9439
9697
  kanban_assignee: '指派對象',
9440
9698
  kanban_assignee_placeholder: '選填 — 個人資料或名稱',
9441
9699
  kanban_tenant: '租戶',
9442
- kanban_tenant_placeholder: '預設',
9700
+ kanban_tenant_placeholder: '選填,專案或團隊 slug',
9443
9701
  kanban_priority: '優先順序',
9444
9702
  kanban_priority_hint: '數字越大越先執行。預設為 0。',
9445
9703
  kanban_title_required: '標題為必填。',
9446
9704
  kanban_new_task: '新任務',
9705
+ kanban_edit_task: '編輯任務',
9706
+ kanban_status_original_hint: '實際狀態:{0}。此對話框僅支援編輯 Triage/Todo/Ready。',
9707
+ kanban_run_dispatcher: '執行調度器',
9708
+ kanban_run_dispatcher_confirm: '將認領此看板的 Ready 任務並產生工作子程序(每次點選最多 8 個)。是否繼續?',
9709
+ kanban_assignee_profiles_label: 'Hermes 設定檔',
9710
+ kanban_assignee_other_label: '其他(CLI 通道 / 已刪除的設定檔)',
9711
+ kanban_assignee_unassigned: '— 未指派(不會自動執行)—',
9712
+ kanban_ready_needs_assignee: '已選擇「未指派」+「Ready」。調度器將跳過此任務。再次送出以確認,或選擇一個設定檔。',
9713
+ kanban_dispatch_preview_prefix: '預覽:',
9714
+ kanban_dispatch_run_prefix: '已調度:',
9715
+ kanban_dispatch_spawned: '已啟動',
9716
+ kanban_dispatch_promoted: '已提升',
9717
+ kanban_dispatch_reclaimed: '已收回',
9718
+ kanban_dispatch_skipped_unassigned: '跳過(未指派)',
9719
+ kanban_dispatch_skipped_nonspawnable: '跳過(未知設定檔)',
9720
+ kanban_dispatch_auto_blocked: '自動封鎖',
9721
+ kanban_dispatch_timed_out: '逾時',
9722
+ kanban_dispatch_crashed: '當機',
9447
9723
  kanban_add_comment: '新增留言',
9448
- kanban_only_mine: '僅顯示我的',
9449
- kanban_bulk_action: '批次操作',
9724
+ kanban_only_mine: '只看我的',
9725
+ kanban_bulk_action: '批次動作',
9450
9726
  kanban_nudge_dispatcher: '預覽調度器',
9451
9727
  kanban_stats: '統計',
9452
- kanban_worker_log: '工作者日誌',
9728
+ kanban_worker_log: 'Worker 記錄',
9453
9729
  kanban_block: '封鎖',
9454
9730
  kanban_unblock: '解除封鎖',
9455
- kanban_back_to_board: '返回看板',
9456
- kanban_lanes_by_profile: '按設定檔分泳道',
9457
- kanban_new_board: '新看板…',
9731
+ kanban_back_to_board: '回到看板',
9732
+ kanban_lanes_by_profile: '依設定檔分欄',
9733
+ kanban_new_board: '新增看板…',
9458
9734
  kanban_rename_board: '重新命名目前看板…',
9459
9735
  kanban_archive_board: '封存目前看板…',
9460
- kanban_archive_board_confirm: '封存看板「{name}」?任務仍保留在磁碟上,可從 kanban/boards/_archived/ 復原。',
9736
+ kanban_archive_board_confirm: '封存看板「{name}」?任務仍會保留在磁碟上,且可從 kanban/boards/_archived/ 還原看板。',
9461
9737
  kanban_board_archived: '看板已封存',
9462
9738
  kanban_board_name: '名稱',
9463
- kanban_board_slug: '代號(小寫、連字號)',
9739
+ kanban_board_slug: 'Slug(小寫、連字號)',
9464
9740
  kanban_board_description: '描述(選填)',
9465
- kanban_board_icon: '圖示(表情符號,選填)',
9741
+ kanban_board_icon: '圖示(emoji,選填)',
9466
9742
  kanban_board_color: '顏色(選填)',
9467
9743
  kanban_board_name_required: '名稱為必填',
9468
- kanban_board_slug_required: '代號為必填',
9744
+ kanban_board_slug_required: 'Slug 為必填',
9469
9745
  kanban_card_complete: '完成',
9470
9746
  kanban_card_archive: '封存',
9471
9747
  kanban_unassigned: '未指派',
9472
9748
  kanban_status_archived: '已封存',
9473
- kanban_edit_task: '編輯任務',
9474
- kanban_run_dispatcher: '執行調度器',
9475
- kanban_run_dispatcher_confirm: '將認領此看板的 Ready 任務並產生工作子程序(每次點擊最多 8 個)。是否繼續?',
9476
- kanban_assignee_profiles_label: 'Hermes 設定檔',
9477
- kanban_assignee_other_label: '其他(CLI 通道 / 已刪除的設定檔)',
9478
- kanban_assignee_unassigned: '— 未指派(不會自動執行)—',
9479
- kanban_ready_needs_assignee: '您選擇了「未指派」+「Ready」。調度器將跳過此任務。再次送出以確認,或選擇一個設定檔。',
9480
- kanban_dispatch_preview_prefix: '預覽:',
9481
- kanban_dispatch_run_prefix: '已調度:',
9482
- kanban_dispatch_spawned: '已啟動',
9483
- kanban_dispatch_promoted: '已提升',
9484
- kanban_dispatch_reclaimed: '已收回',
9485
- kanban_dispatch_skipped_unassigned: '跳過(未指派)',
9486
- kanban_dispatch_skipped_nonspawnable: '跳過(未知設定檔)',
9487
- kanban_dispatch_auto_blocked: '自動封鎖',
9488
- kanban_dispatch_timed_out: '逾時',
9489
- kanban_dispatch_crashed: '崩潰',
9749
+ tab_todos: '待辦',
9750
+ tab_insights: '統計',
9751
+ tab_dashboard: 'Hermes 儀表板',
9752
+ dashboard_loopback_warning: '儀表板在伺服器上僅限 loopback 存取。請從伺服器本機瀏覽,或使用 --host 0.0.0.0 重新啟動(不安全)。',
9753
+ tab_logs: '記錄',
9754
+ tab_settings: '設定',
9755
+ new_conversation: '新增對話',
9756
+ filter_conversations: '篩選對話……',
9757
+ session_time_unknown: '未知',
9758
+ session_time_minutes_ago: (m) => `${m}分`,
9759
+ session_time_hours_ago: (h) => `${h}小時`,
9760
+ session_time_days_ago: (d) => `${d}天`,
9761
+ session_time_last_week: '1週',
9762
+ session_time_bucket_today: '今天',
9763
+ session_time_bucket_yesterday: '昨天',
9764
+ session_time_bucket_this_week: '本週',
9765
+ session_time_bucket_last_week: '上週',
9766
+ session_time_bucket_older: '更早',
9767
+ scheduled_jobs: '排程工作',
9768
+ new_job: '新任務',
9769
+ loading: '載入中……',
9770
+ search_skills: '搜尋技能……',
9771
+ new_skill: '新技能',
9772
+ personal_memory: '個人記憶',
9773
+ current_task_list: '目前任務清單',
9774
+ // Logs
9775
+ logs_title: '記錄',
9776
+ logs_file: '記錄檔',
9777
+ logs_tail: '追蹤記錄',
9778
+ logs_auto_refresh: '自動重新整理',
9779
+ logs_wrap: '自動換行',
9780
+ logs_copy_all: '複製全部',
9781
+ logs_empty: '沒有記錄可顯示。',
9782
+ logs_loading: '正在載入記錄…',
9783
+ logs_load_failed: '載入記錄失敗:',
9784
+ logs_status_idle: '請選擇記錄檔以檢視最近幾行。',
9785
+ logs_no_mtime: '修改時間未知',
9786
+ logs_truncated_hint: '正在顯示大型記錄檔的尾端;較早的位元組已略過,以限制記憶體用量。',
9787
+ logs_copied: '已複製記錄',
9490
9788
  logs_severity: '嚴重性',
9491
9789
  logs_severity_all: '全部',
9492
9790
  logs_severity_errors: '錯誤',
9493
9791
  logs_severity_warnings: '警告+',
9494
9792
  logs_filter_active: '已顯示(篩選器已啟用)',
9495
- new_conversation: '新對話',
9496
- filter_conversations: '篩選對話',
9497
- scheduled_jobs: '排程任務',
9498
- new_job: '\u65b0\u4efb\u52d9',
9499
- search_skills: '\u641c\u5c0b\u6280\u80fd',
9500
- new_skill: '\u65b0\u6280\u80fd',
9501
- save_skill: '\u5132\u5b58\u6280\u80fd',
9502
- personal_memory: '\u500b\u4eba\u8a18\u61b6',
9503
- current_task_list: '\u76ee\u524d\u4efb\u52d9\u6e05\u55ae',
9793
+
9794
+ // Insights
9795
+ insights_title: '用量分析',
9796
+ insights_sessions: '對話',
9797
+ insights_messages: '訊息',
9798
+ insights_tokens: 'Token',
9799
+ insights_cost: '估計成本',
9800
+ insights_no_cost: 'N/A',
9801
+ insights_models: '模型',
9802
+ insights_activity_by_day: '每日活動',
9803
+ insights_activity_by_hour: '每小時活動',
9804
+ insights_peak_hour: '高峰:{hour}',
9805
+ insights_token_breakdown: 'Token 明細',
9806
+ insights_input_tokens: '輸入',
9807
+ insights_output_tokens: '輸出',
9808
+ insights_total: '總計',
9809
+ insights_daily_tokens: '每日 Token',
9810
+ insights_model_name: '模型',
9811
+ insights_model_sessions: '對話',
9812
+ insights_model_tokens: 'Token',
9813
+ insights_model_cost: '成本',
9814
+ insights_model_share: '占比',
9815
+ insights_no_usage_data: '尚無用量資料',
9816
+ insights_footer: '顯示最近 {days} 天的資料',
9817
+ insights_skill_usage_title: '技能使用情況',
9818
+ insights_skill_usage_sub: '工具呼叫頻率',
9819
+ insights_skill_usage_total: '呼叫總數',
9820
+ insights_skill_usage_skills_used: '已使用技能',
9821
+ insights_skill_usage_no_data: '尚無技能使用資料',
9822
+ insights_skill_usage_no_data_hint: '在對話中使用技能後,資料會顯示在這裡。',
9823
+ insights_skill_usage_footer: '資料來源:~/.hermes/skills/',
9824
+ insights_skill_usage_col_skill: '技能',
9825
+ insights_skill_usage_col_uses: '使用次數',
9826
+ insights_skill_usage_col_views: '檢視次數',
9827
+ insights_skill_usage_col_share: '使用占比',
9828
+ insights_skill_usage_col_patches: 'Patch',
9829
+ workspace_desc: '新增工作區,並為對話切換工作區。',
9504
9830
  session_meta_messages: (n) => `${n} 則訊息`,
9505
9831
  session_meta_children: (n) => `${n} 則子`,
9832
+ // Softened label: avoids exposing the technical internal term
9833
+ // 'segment' in the default visible badge. User-facing copy remains
9834
+ // translatable for locales that prefer a different wording. (#2155)
9506
9835
  session_meta_segments: (n) => `${n} 段`,
9507
- session_lineage_toggle_hint: '{0} — 較早的上下文輪次已摺疊在這裡。點擊可顯示或隱藏。',
9508
- session_lineage_static_hint: '{0} — 較早的上下文輪次已摺疊在這裡。',
9509
- session_child_toggle_hint: '{0} — 從此工作階段衍生的子對話。點擊可顯示或隱藏。',
9836
+ session_lineage_toggle_hint: '{0} — 較早的脈絡回合已摺疊在這裡。點選可顯示或隱藏。',
9837
+ session_lineage_static_hint: '{0} — 較早的脈絡回合已摺疊在這裡。',
9838
+ session_child_toggle_hint: '{0} — 從此對話衍生的子對話。點選可顯示或隱藏。',
9510
9839
  session_readonly_title_hint: '唯讀匯入工作階段 — {0}',
9511
9840
  session_lineage_segment_untitled: '未命名段',
9512
9841
  session_lineage_segment_open: '開啟脈絡段',
9513
- new_profile: '\u65b0\u914d\u7f6e\u6a94',
9514
- transcript: '\u8a18\u9304',
9515
- download_transcript: '\u4e0b\u8f09\u8a18\u9304',
9516
- import: '\u5c0e\u5165',
9842
+ new_profile: '新增設定檔',
9843
+ transcript: '對話記錄',
9844
+ download_transcript: '下載為 Markdown',
9845
+ import: '匯入',
9517
9846
  export_session_json: 'JSON',
9518
- export_session_json_tooltip: '\u5c07\u6703\u8a71\u5b8c\u6574\u532f\u51fa\u70ba JSON',
9519
- import_session_json_tooltip: '\u5f9e JSON \u532f\u5165\u6703\u8a71',
9520
- clear_conversation_btn_tooltip: '\u6e05\u7a7a\u6b64\u6703\u8a71\u4e2d\u7684\u6240\u6709\u8a0a\u606f',
9521
- editing: '\u7de8\u8f2f\u4e2d',
9522
- empty_title: '有什麼可以幫忙?',
9523
- empty_subtitle: '點擊上方按鈕開始對話',
9524
- cancel: '\u53d6\u6d88',
9525
- loading: '\u52a0\u8f09\u4e2d',
9526
- create_job: '\u5efa\u7acb\u4efb\u52d9',
9527
- suggest_plan: '幫我規劃一個小專案',
9528
- suggest_schedule: '今天的時程如何?',
9529
- suggest_files: '這個工作區有哪些檔案?',
9530
- sign_out: '\u767b\u51fa',
9531
- settings_label_shutdown: '\u505c\u6b62 Hermes WebUI \u4f3a\u670d\u5668',
9532
- settings_desc_shutdown: '\u6b63\u5e38\u505c\u6b62\u672c\u5730\u7684 WebUI \u4f3a\u670d\u5668\u3002\u5982\u679c\u4f60\u900f\u904e <code>./ctl.sh start</code> \u555f\u52d5\uff0c\u4e26\u5e0c\u671b\u4e0d\u5207\u63db\u5230\u7d42\u7aef\u5c31\u505c\u6b62\uff0c\u9019\u5f88\u6709\u7528\u3002\u8981\u518d\u6b21\u9032\u5165 WebUI\uff0c\u9700\u8981\u91cd\u65b0\u555f\u52d5\u4f3a\u670d\u5668\uff08<code>./ctl.sh start</code> \u6216\u539f\u751f\u61c9\u7528\u7a0b\u5f0f\uff09\u3002',
9533
- settings_btn_shutdown: '\u505c\u6b62\u4f3a\u670d\u5668',
9534
- settings_shutdown_confirm_title: '\u505c\u6b62 Hermes WebUI',
9535
- settings_shutdown_confirm_message: '\u505c\u6b62 Hermes WebUI \u4f3a\u670d\u5668\uff1f',
9536
- settings_shutdown_confirm_btn: '\u505c\u6b62',
9537
- settings_shutdown_stopped_message: '\u4f3a\u670d\u5668\u5df2\u505c\u6b62\u3002\u4f60\u53ef\u4ee5\u95dc\u9589\u9019\u500b\u5206\u9801\u3002',
9538
- password_placeholder: '\u5bc6\u78bc',
9539
- password_env_var_locked: '\u76ee\u524d\u5df2\u8a2d\u5b9a HERMES_WEBUI_PASSWORD \u74b0\u5883\u8b8a\u6578\u4e14\u512a\u5148\u751f\u6548\u3002\u8acb\u53d6\u6d88\u8a2d\u5b9a\u4e26\u91cd\u65b0\u555f\u52d5\u4f3a\u670d\u5668\uff0c\u624d\u80fd\u5728\u6b64\u7ba1\u7406\u5bc6\u78bc\u3002',
9540
- password_env_var_locked_placeholder: '\u5df2\u9396\u5b9a\uff1a\u5df2\u8a2d\u5b9a HERMES_WEBUI_PASSWORD \u74b0\u5883\u8b8a\u6578',
9541
- disable_auth: '\u505c\u7528\u9a57\u8b49',
9847
+ export_session_json_tooltip: '將對話完整匯出為 JSON',
9848
+ import_session_json_tooltip: ' JSON 匯入對話',
9849
+ clear_conversation_btn_tooltip: '清空此對話中的所有訊息',
9850
+ // Settings detail
9542
9851
  settings_label_rtl: '從右到左聊天版面',
9543
9852
  settings_desc_rtl: '為阿拉伯語或希伯來語等語言翻轉聊天訊息和編輯器輸入的對齊方式。僅影響聊天區域 — 側邊欄和其他面板保持從左到右。',
9544
- settings_label_sound: '\u901a\u77e5\u8072\u97f3',
9545
- settings_label_notifications: '\u700f\u89bd\u901a\u77e5',
9546
- settings_desc_sound: '助手完成回答時播放聲音。',
9547
- settings_desc_notifications: '當分頁在後台時,有回答完成時會顯示系統通知。',
9548
- settings_desc_token_usage: '\u5728\u52a9\u624b\u6bcf\u6b21\u56de\u7b54\u4e0b\u65b9\u986f\u793a Input/Output token \u6578\u91cf\u3002\u4e5f\u53ef\u4ee5\u7528 /usage \u5207\u63db\u3002',
9853
+ settings_label_sound: '通知聲音',
9854
+ settings_desc_sound: '助理完成回覆時播放音效。',
9855
+ // TTS (#499)
9856
+ tts_listen: '收聽',
9857
+ tts_not_supported: '語音合成無法使用',
9858
+ settings_label_tts: '回覆語音合成',
9859
+ settings_desc_tts: '在每則助理訊息上顯示喇叭按鈕,使用瀏覽器語音合成功能朗讀內容。',
9860
+ settings_label_tts_auto_read: '自動朗讀回覆',
9861
+ settings_desc_tts_auto_read: '每則新的助理回覆完成時自動朗讀。開始輸入時會暫停。',
9862
+ // Composer voice-mode pref (#1488)
9863
+ settings_label_voice_mode: '免持語音模式按鈕',
9864
+ settings_desc_voice_mode: '在聽寫麥克風旁顯示語音模式按鈕(音訊波形)。可自然說話,Hermes 會在停頓後自動送出並朗讀回覆。需要同時支援語音辨識與 TTS 的瀏覽器。',
9865
+ settings_label_raw_audio: '傳送原始音訊,而不是先轉寫',
9866
+ settings_desc_raw_audio: '錄製並將原始音訊檔傳送給 Agent,而不是先轉成文字。Agent 接著可以轉寫音訊,或處理原始音訊(情緒、背景噪音、自訂 STT)。行為類似 Telegram 語音訊息。',
9867
+ voice_send_raw: '傳送原始音訊',
9868
+ voice_raw_attached: '已附加音訊。請按 [送出] 或繼續輸入。',
9869
+ settings_label_tts_voice: '語音',
9870
+ settings_desc_tts_voice: '偏好的語音。系統會從瀏覽器可用的語音中填入。',
9871
+ settings_label_tts_rate: '語速',
9872
+ settings_label_tts_pitch: '音調',
9873
+ settings_label_tts_engine: 'TTS 引擎',
9874
+ settings_desc_tts_engine: '選擇語音引擎。Edge TTS 會透過伺服器使用 Microsoft 神經語音。',
9875
+ settings_label_notifications: '瀏覽器通知',
9876
+ settings_desc_notifications: '分頁在背景中時,回覆完成後顯示系統通知。',
9877
+ settings_desc_token_usage: '在每則助理回覆下方顯示輸入/輸出 token 數量。也可以使用 /usage 切換。',
9878
+ settings_label_api_redact: '在 API 回應中遮蔽敏感資料',
9879
+ settings_desc_api_redact: '自行託管使用者可以為了透明度停用此功能(不建議在共用執行個體中停用)。',
9549
9880
  settings_sidebar_density_compact: '精簡',
9550
9881
  settings_sidebar_density_detailed: '詳細',
9551
9882
  settings_desc_sidebar_density: '控制左側對話清單要顯示多少額外資訊。',
9552
- settings_label_auto_title_refresh: '\u81ea\u9002\u61c9\u6a19\u984c\u66f4\u65b0',
9553
- settings_auto_title_refresh_off: '\u95dc\u9589',
9554
- settings_auto_title_refresh_5: '\u6bcf 5 \u8f2a\u5c0d\u8a71',
9555
- settings_auto_title_refresh_10: '\u6bcf 10 \u8f2a\u5c0d\u8a71',
9556
- settings_auto_title_refresh_20: '\u6bcf 20 \u8f2a\u5c0d\u8a71',
9557
- settings_desc_auto_title_refresh: '\u57fa\u65bc\u6700\u65b0\u5c0d\u8a71\u81ea\u52d5\u91cd\u65b0\u751f\u6210\u6703\u8a71\u6a19\u984c\uff0c\u4f7f\u5176\u968f\u5c0d\u8a71\u767c\u5c55\u4fdd\u6301\u76f8\u95dc\u3002\u9700\u8981\u914d\u7f6e LLM \u6a19\u984c\u751f\u6210\u6a21\u578b\u3002',
9558
- settings_desc_external_sessions: '在會話列表中顯示來自 CLI、Telegram、Discord、Slack 等管道的對話。點擊可導入並繼續對話。',
9883
+ settings_label_auto_title_refresh: '自動調整標題更新',
9884
+ settings_auto_title_refresh_off: '關閉',
9885
+ settings_auto_title_refresh_5: ' 5 輪對話',
9886
+ settings_auto_title_refresh_10: ' 10 輪對話',
9887
+ settings_auto_title_refresh_20: ' 20 輪對話',
9888
+ settings_desc_auto_title_refresh: '根據最新對話自動重新產生對話標題,讓標題隨對話發展保持相關。需要設定 LLM 標題產生模型。',
9889
+ settings_desc_external_sessions: '在對話清單中顯示來自 CLI、Telegram、Discord、Slack 等管道的對話。點選即可匯入並繼續對話。',
9559
9890
  settings_desc_previous_messaging_sessions: '顯示被 reset 或 compression 替換的較舊的 Discord、Telegram、Slack 和 Weixin 對話。',
9560
- settings_desc_sync_insights: '將 WebUI token 使用情況同步到 state.db,使 hermes /insights 包含瀏覽器會話數據。預設未啟用。',
9561
- settings_desc_check_updates: '當有更新的 WebUI 或助手版本時顯示標記。將在後台正常執行 Git-Fetch。',
9562
- settings_desc_ignore_agent_updates: 'Keep WebUI update checks on, but hide Agent update notices and skip Agent update fetches.',
9563
- settings_desc_whats_new_summary: "Changes the What's New action from opening the raw diff first to generating a short, human-readable summary. The regular diff comparison stays available after the summary.",
9564
- settings_desc_bot_name: '僅用於預設個人檔案。其他個人檔案會使用各自的名稱。',
9565
- settings_desc_password: '\u8a2d\u5b9a WebUI \u767b\u5165\u5bc6\u78bc\u3002\u5047\u5982\u5df2\u8a2d\u7f6e\uff0c\u6bcf\u6b21\u52a0\u8f09\u90fd\u9700\u8981\u767b\u5165\u3002',
9566
- onboarding_password_will_enable: '\u5c07\u6703\u555f\u7528',
9567
- onboarding_password_will_replace: '\u5c07\u6703\u53d6\u4ee3',
9568
- onboarding_password_keep_existing: '\u4fdd\u7559\u76ee\u524d\u5bc6\u78bc',
9569
- onboarding_password_remains_disabled: '\u6703\u7e7c\u7e8c\u4fdd\u6301\u95dc\u9589',
9570
- // boot.js
9571
- cancelling: '\u6b63\u5728\u53d6\u6d88...',
9572
- cancel_failed: '\u53d6\u6d88\u5931\u6557\uff1a',
9573
- mic_denied: '\u9ea6\u514b\u98a8\u8a2a\u554f\u88ab\u62d2\u7d75\uff0c\u8acb\u6aa2\u67e5\u700f\u89bd\u5668\u6b0a\u9650\u3002',
9574
- mic_no_speech: '\u6c92\u6709\u6aa2\u6e2c\u5230\u8a71\u97f3\uff0c\u8acb\u518d\u5617\u4e00\u6b21\u3002',
9575
- mic_network: '\u8a71\u97f3\u8b58\u5225\u76ee\u524d\u4e0d\u53ef\u7528\u3002',
9576
- mic_error: '\u8a71\u97f3\u8f38\u5165\u51fa\u932f\uff1a',
9577
- session_imported: '\u6703\u8a71\u5df2\u5c0e\u5165',
9578
- import_failed: '\u5c0e\u5165\u5931\u6557\uff1a',
9579
- import_invalid_json: 'JSON \u7121\u6548',
9580
- image_pasted: '\u5df2\u7c98\u8cbc\u5716\u7247\uff1a',
9581
- // messages.js
9582
- edit_message: '\u7de8\u8f2f\u8a0a\u606f',
9583
- regenerate: '\u91cd\u65b0\u751f\u6210\u56de\u8986',
9584
- copy: '\u8907\u88fd',
9585
- copied: '\u5df2\u8907\u88fd',
9586
- // ui.js
9587
- workspace_desc: '\u8acb\u9078\u64c7\u5de5\u4f5c\u5340\uff0c\u6216\u8f09\u5165\u65b0\u540d\u7a31\u5beb\u4e00\u500b',
9588
- tab_profiles: '\u914d\u7f6e',
9589
- tab_settings: '\u8a2d\u5b9a',
9590
- profile_delete_confirm_message: '\u6b64\u914d\u7f6e\u6a94\u7684\u6240\u6709\u6703\u8a71\u3001\u8a2d\u5b9a\u3001\u6280\u80fd\u548c\u8a18\u61b6\u5c07\u88ab\u6c38\u4e45\u522a\u9664\u3002\u6b64\u64cd\u4f5c\u7121\u6cd5\u64a4\u92b7\u3002',
9591
- workspace_renamed: '\u5de5\u4f5c\u5340\u5df2\u91cd\u65b0\u547d\u540d',
9592
- cron_name_placeholder: '\u9078\u586b',
9593
- active_conversation_meta: (n) => `${n} 則訊息`,
9594
- all_uploads_failed: (n) => `${n} 個上傳失敗`,
9595
- cron_job_name_placeholder: '\u4efb\u52d9\u540d\u7a31',
9596
- cron_prompt_placeholder: '\u63d0\u793a\u8a5e',
9597
- cron_schedule_placeholder: '\u6392\u7a0b',
9598
- delete_confirm: (name) => `刪除「${name}」?`,
9599
- downloading: (filename) => `正在下載 ${filename}…`,
9600
- n_messages: (n) => `${n} 則訊息`,
9601
- load_older_messages: '↑ 向上捲動或點擊以載入較早的訊息',
9602
- session_jump_start: '開頭',
9603
- session_jump_start_label: '跳至會話開頭',
9604
- session_jump_end: '結尾',
9605
- session_jump_end_label: '跳至會話結尾',
9606
- jump_to_question: '回到問題',
9607
- jump_to_question_label: '跳至這則回答對應的問題',
9608
- onboarding_api_key_help_prefix: '\u900f\u904e\u4ee5\u4e0b\u65b9\u5f0f\u5132\u5b58\u70ba Hermes .env \u6a94\u6848\u4e2d\u7684\u6a5f\u5bc6',
9609
- onboarding_api_key_label: 'API \u91d1\u9470',
9610
- onboarding_api_key_placeholder: '\u7559\u7a7a\u4ee5\u4fdd\u7559\u5df2\u5132\u5b58\u7684\u91d1\u9470',
9611
- onboarding_api_key_label_optional: 'API key (optional)', // TODO: translate
9612
- onboarding_api_key_placeholder_optional: 'Leave blank for keyless servers', // TODO: translate
9613
- onboarding_api_key_help_keyless: 'Most LM Studio / Ollama / vLLM installs run keyless — leave this blank if your server doesn\'t require authentication. Use the Test connection button to verify.', // TODO: translate
9614
- onboarding_back: '\u4e0a\u4e00\u6b65',
9615
- onboarding_badge: '\u9996\u6b21\u57f7\u884c',
9616
- onboarding_base_url_help: '\u7528\u65bc OpenAI \u76f8\u5bb9\u8def\u7531\u5668\u3001\u81ea\u67b6\u4f3a\u670d\u5668\u3001LiteLLM\u3001Ollama\u3001LM Studio\u3001vLLM \u7b49\u7aef\u9ede\u3002',
9617
- onboarding_base_url_label: '\u57fa\u790e URL',
9618
- onboarding_base_url_placeholder: 'https://your-endpoint.example/v1',
9619
- onboarding_check_agent: 'Hermes Agent',
9620
- onboarding_check_agent_missing: '\u907a\u5931\u6216\u50c5\u90e8\u5206\u53ef\u7528',
9621
- onboarding_check_agent_ready: '\u5df2\u5075\u6e2c\u5230\u4e26\u53ef\u4f9b\u532f\u5165',
9622
- onboarding_check_password: '\u5bc6\u78bc',
9623
- onboarding_check_password_disabled: '\u5c1a\u672a\u555f\u7528',
9624
- onboarding_check_password_enabled: '\u5df2\u555f\u7528',
9625
- onboarding_check_provider: '\u63d0\u4f9b\u8005\u914d\u7f6e',
9626
- onboarding_check_provider_partial: '\u5df2\u5132\u5b58\u4f46\u672a\u5b8c\u6210',
9627
- onboarding_check_provider_pending: '\u9700\u8981\u9a57\u8b49',
9628
- onboarding_check_provider_ready: '\u53ef\u958b\u59cb\u804a\u5929',
9629
- onboarding_complete: '\u521d\u59cb\u8a2d\u5b9a\u5b8c\u6210',
9630
- onboarding_config_file: '\u8a2d\u5b9a\u6a94\uff1a',
9631
- onboarding_continue: '\u7e7c\u7e8c',
9632
- onboarding_current_provider: '\u76ee\u524d\u914d\u7f6e\uff1a',
9633
- onboarding_custom_model_help: '\u5c0d\u65bc\u81ea\u8a02\u7aef\u9ede\uff0c\u8acb\u6307\u5b9a\u60a8\u7684\u4f3a\u670d\u5668\u9810\u671f\u7684\u6a21\u578b ID\u3002',
9634
- onboarding_custom_model_placeholder: 'your_model_name',
9635
- onboarding_env_file: '.env \u6a94\u6848\uff1a',
9636
- onboarding_error_base_url_required: '\u81ea\u8a02\u7aef\u9ede\u9700\u8981\u57fa\u790e URL\u3002',
9637
- onboarding_probe_test_button: 'Test connection', // TODO: translate
9638
- onboarding_probe_probing: 'Testing connection…', // TODO: translate
9639
- onboarding_probe_ok: 'Connected. {n} model(s) available.', // TODO: translate
9640
- onboarding_probe_error_generic: 'Could not reach the configured base URL.', // TODO: translate
9641
- onboarding_probe_error_invalid_url: 'Base URL must start with http:// or https://.', // TODO: translate
9642
- onboarding_probe_error_dns: 'Could not resolve the host. Check the URL or use the host\'s IP address.', // TODO: translate
9643
- onboarding_probe_error_connect_refused: 'Connection refused — the server may not be running on that address. From inside Docker, try the host IP instead of localhost.', // TODO: translate
9644
- onboarding_probe_error_timeout: 'The endpoint did not respond in time. Check that the server is running and the URL is correct.', // TODO: translate
9645
- onboarding_probe_error_http_4xx: 'The endpoint returned a client error. Check authentication and the URL path (typically ends in /v1).', // TODO: translate
9646
- onboarding_probe_error_http_5xx: 'The endpoint returned a server error. Check the LM Studio / Ollama server logs.', // TODO: translate
9647
- onboarding_probe_error_parse: 'The endpoint did not return a model list in the expected shape. Verify the URL points to the OpenAI-compatible API root.', // TODO: translate
9648
- onboarding_probe_error_unreachable: 'Could not reach the configured base URL.', // TODO: translate
9649
- onboarding_error_probe_failed: 'Could not validate the configured base URL.', // TODO: translate
9650
- onboarding_error_choose_model: '\u8acb\u5148\u9078\u64c7\u6a21\u578b\u518d\u7e7c\u7e8c\u3002',
9651
- onboarding_error_choose_workspace: '\u8acb\u5148\u9078\u64c7\u5de5\u4f5c\u5340\u518d\u7e7c\u7e8c\u3002',
9652
- onboarding_error_model_required: '\u9700\u8981\u6a21\u578b\u3002',
9653
- onboarding_error_provider_required: '\u8acb\u5148\u9078\u64c7\u8a2d\u5b9a\u6a21\u5f0f\u518d\u7e7c\u7e8c\u3002',
9654
- onboarding_error_workspace_required: '\u9700\u8981\u5de5\u4f5c\u5340\u3002',
9655
- onboarding_finish_help: '\u5b8c\u6210\u5f8c\uff0c<code>onboarding_completed</code> \u5c07\u5132\u5b58\u5728\u8a2d\u5b9a\u4e2d\uff0c\u60a8\u5c07\u9032\u5165\u6b63\u5e38\u61c9\u7528\u7a0b\u5f0f\u3002',
9656
- onboarding_lead: '\u5feb\u901f\u9010\u6b65\u8a2d\u5b9a\uff1a\u6aa2\u67e5 Hermes\u3001\u5132\u5b58\u63d0\u4f9b\u8005\u914d\u7f6e\u3001\u9078\u64c7\u5de5\u4f5c\u5340\u8207\u6a21\u578b\uff0c\u4e26\u53ef\u9078\u64c7\u52a0\u5165\u5bc6\u78bc\u4fdd\u8b77\u3002',
9657
- onboarding_missing_imports: '\u7f3a\u5c11\u7684\u532f\u5165\uff1a',
9658
- onboarding_model_label: '\u9810\u8a2d\u6a21\u578b',
9659
- onboarding_not_set: '\u672a\u8a2d\u5b9a',
9660
- onboarding_notice_finish: '\u60a8\u4e4b\u5f8c\u53ef\u4ee5\u96a8\u6642\u56de\u5230\u8a2d\u5b9a\u9801\u9762\u8b8a\u66f4\u9019\u4e9b\u503c\u3002',
9661
- onboarding_notice_password_enabled: '\u5bc6\u78bc\u5df2\u8a2d\u5b9a\u3002\u50c5\u5728\u9700\u8981\u53d6\u4ee3\u6642\u8f38\u5165\u65b0\u5bc6\u78bc\u3002',
9662
- onboarding_notice_password_recommended: '\u9078\u586b\uff0c\u4f46\u5efa\u8b70\u5728\u975e localhost \u74b0\u5883\u4f7f\u7528\u3002',
9663
- onboarding_notice_setup_already_ready: '\u5df2\u5075\u6e2c\u5230\u53ef\u7528\u7684 Hermes \u63d0\u4f9b\u8005\u914d\u7f6e\u3002\u60a8\u53ef\u4ee5\u4fdd\u7559\u6216\u5728\u6b64\u53d6\u4ee3\u3002',
9664
- onboarding_notice_setup_required: '\u5728\u6b64\u9078\u64c7\u5feb\u901f\u63d0\u4f9b\u8005\u8a2d\u5b9a\u8def\u5f91\u3002\u9032\u968e OAuth \u8a2d\u5b9a\u4ecd\u8acb\u4f7f\u7528 Hermes CLI\u3002',
9665
- onboarding_notice_system_ready: 'Hermes Agent \u53ef\u5f9e Web UI \u5b58\u53d6\u3002',
9666
- onboarding_notice_system_unavailable: 'Hermes Agent \u5c1a\u672a\u5b8c\u5168\u53ef\u7528\u3002\u5f15\u5c0e\u7a0b\u5f0f\u53ef\u80fd\u5b89\u88dd\u5b83\uff0c\u4f46\u63d0\u4f9b\u8005\u8a2d\u5b9a\u53ef\u80fd\u4ecd\u9700\u7d42\u7aef\u6a5f\u3002',
9667
- onboarding_notice_workspace: '\u9019\u4e9b\u503c\u4f7f\u7528\u8207\u4e00\u822c\u61c9\u7528\u7a0b\u5f0f\u76f8\u540c\u7684\u8a2d\u5b9a API\u3002',
9668
- onboarding_oauth_provider_not_ready_body: '\u6b64\u5be6\u4f8b\u8a2d\u5b9a\u4f7f\u7528 <strong>{provider}</strong>\uff0c\u5b83\u4f7f\u7528 OAuth \u800c\u975e API \u91d1\u9470\u3002\u8acb\u5728\u7d42\u7aef\u6a5f\u4e2d\u57f7\u884c <code>hermes auth</code> \u6216 <code>hermes model</code> \u9032\u884c\u6388\u6b0a\uff0c\u7136\u5f8c\u91cd\u65b0\u6574\u7406 Web UI\u3002',
9669
- onboarding_oauth_provider_not_ready_title: 'OAuth \u63d0\u4f9b\u8005\u5c1a\u672a\u6388\u6b0a',
9670
- onboarding_oauth_provider_ready_body: '\u6b64\u5be6\u4f8b\u8a2d\u5b9a\u4f7f\u7528\u900f\u904e Hermes CLI \u914d\u7f6e\u7684 OAuth \u63d0\u4f9b\u8005\uff08<strong>{provider}</strong>\uff09\u3002\u7121\u9700 API \u91d1\u9470 \u2014 \u6309\u7e7c\u7e8c\u5b8c\u6210\u8a2d\u5b9a\u3002',
9671
- onboarding_oauth_provider_ready_title: '\u63d0\u4f9b\u8005\u5df2\u6388\u6b0a',
9672
- onboarding_oauth_switch_hint: '\u6216\u9078\u64c7\u4e0b\u65b9\u5176\u4ed6\u63d0\u4f9b\u8005\u4ee5\u5207\u63db\u5230 API \u91d1\u9470\u8a2d\u5b9a\uff1a',
9673
- onboarding_open: '\u958b\u555f Hermes',
9674
- onboarding_password_help: '\u5bc6\u78bc\u900f\u904e\u73fe\u6709\u8a2d\u5b9a API \u5132\u5b58\uff0c\u4e26\u5728\u4f3a\u670d\u5668\u7aef\u9032\u884c\u96dc\u6e4a\u8655\u7406\u3002',
9675
- onboarding_password_label: '\u5bc6\u78bc\uff08\u9078\u586b\uff09',
9676
- onboarding_password_placeholder: '\u7559\u7a7a\u4ee5\u8df3\u904e',
9677
- onboarding_password_remains_disabled: '\u5c07\u4fdd\u6301\u505c\u7528',
9678
- onboarding_password_skipped: '\u66ab\u6642\u8df3\u904e',
9679
- onboarding_password_will_enable: '\u5c07\u555f\u7528',
9680
- onboarding_password_will_replace: '\u5c07\u53d6\u4ee3',
9681
- onboarding_provider_label: '\u8a2d\u5b9a\u6a21\u5f0f',
9682
- onboarding_quick_setup_badge: '\u5feb\u901f\u8a2d\u5b9a',
9683
- oauth_login_codex: 'Login with Codex (ChatGPT)', // TODO: translate
9684
- oauth_codex_step1: 'Step 1: Visit this URL and enter the code', // TODO: translate
9685
- oauth_codex_step2: 'Step 2: Enter this code on the page', // TODO: translate
9686
- oauth_codex_polling: 'Waiting for authorization...', // TODO: translate
9687
- oauth_codex_success: 'Codex OAuth login successful!', // TODO: translate
9688
- oauth_codex_error: 'OAuth login failed', // TODO: translate
9689
- oauth_codex_expired: 'Code expired, please try again', // TODO: translate
9690
- provider_category_easy_start: '\u5feb\u901f\u958b\u59cb',
9691
- provider_category_self_hosted: '\u672c\u5730 / \u958b\u6e90',
9692
- provider_category_specialized: '\u5c08\u696d\u670d\u52d9',
9693
- onboarding_skip: '\u8df3\u904e\u8a2d\u5b9a',
9694
- onboarding_skipped: '\u5df2\u8df3\u904e\u8a2d\u5b9a \u2014 \u4f7f\u7528\u73fe\u6709\u914d\u7f6e\u3002',
9695
- onboarding_step_finish_desc: '\u6aa2\u8996\u8a2d\u5b9a\u4e26\u9032\u5165\u61c9\u7528\u7a0b\u5f0f\u3002',
9696
- onboarding_step_finish_title: '\u5b8c\u6210',
9697
- onboarding_step_password_desc: '\u5206\u4eab\u524d\u4fdd\u8b77 Web UI\u3002',
9698
- onboarding_step_password_title: '\u9078\u586b\u5bc6\u78bc',
9699
- onboarding_step_setup_desc: '\u5132\u5b58\u6700\u5c0f\u53ef\u7528\u7684 Hermes \u63d0\u4f9b\u8005\u914d\u7f6e\u3002',
9700
- onboarding_step_setup_title: '\u63d0\u4f9b\u8005\u8a2d\u5b9a',
9701
- onboarding_step_system_desc: '\u9a57\u8b49 Hermes Agent \u8207\u914d\u7f6e\u53ef\u898b\u6027\u3002',
9702
- onboarding_step_system_title: '\u7cfb\u7d71\u6aa2\u67e5',
9703
- onboarding_step_workspace_desc: '\u70ba\u65b0\u6703\u8a71\u9078\u64c7\u9810\u8a2d\u503c\u3002',
9704
- onboarding_step_workspace_title: '\u5de5\u4f5c\u5340\u8207\u6a21\u578b',
9705
- onboarding_title: '\u6b61\u8fce\u4f7f\u7528 Hermes Web UI',
9706
- onboarding_unknown: '\u672a\u77e5',
9707
- onboarding_workspace_help: '\u9078\u64c7 Hermes \u5728\u8a2d\u5b9a\u5b8c\u6210\u5f8c\u7528\u65bc\u65b0\u804a\u5929\u5ba4\u7684\u6a21\u578b\u3002',
9708
- onboarding_workspace_label: '\u5de5\u4f5c\u5340',
9709
- onboarding_workspace_or_path: '\u6216\u8f38\u5165\u5de5\u4f5c\u5340\u8def\u5f91',
9710
- onboarding_workspace_placeholder: '/home/you/workspace',
9711
- project_name_prompt: '\u5c08\u6848\u540d\u7a31\uff1a',
9712
- provider_mismatch_warning: (provider) => `提供者不符:會話使用 ${provider}`,
9713
- session_meta_messages: (n) => `${n} 則訊息`,
9714
- session_meta_children: (n) => `${n} 則子`,
9715
- session_meta_segments: (n) => `${n} 段`,
9716
- session_lineage_segment_untitled: '未命名段',
9717
- session_lineage_segment_open: '開啟脈絡段',
9718
- skill_created: '\u6280\u80fd\u5df2\u5efa\u7acb',
9719
- skill_file_load_failed: '\u8f09\u5165\u6a94\u6848\u5931\u6557\uff1a',
9720
- skill_load_failed: '\u8f09\u5165\u6280\u80fd\u5931\u6557\uff1a',
9721
- skill_name_required: '\u9700\u8981\u6280\u80fd\u540d\u7a31',
9722
- skill_updated: '\u6280\u80fd\u5df2\u66f4\u65b0',
9723
- skills_no_match: '\u627e\u4e0d\u5230\u7b26\u5408\u7684\u6280\u80fd\u3002',
9724
- slash_skill_badge: '\u6280\u80fd',
9725
- slash_skill_desc: '\u547c\u53eb\u6b64\u6280\u80fd',
9726
- title_change_hint: '\u4f7f\u7528 /title <\u65b0\u540d\u7a31> \u91cd\u65b0\u547d\u540d\u3002',
9727
- title_current: '\u76ee\u524d\u6a19\u984c',
9728
- title_set: '\u6a19\u984c\u5df2\u8a2d\u70ba',
9729
- todos_no_active: '\u6b64\u6703\u8a71\u4e2d\u7121\u6d3b\u8e8d\u4efb\u52d9\u6e05\u55ae\u3002',
9730
- upload_failed: '\u4e0a\u50b3\u5931\u6557\uff1a',
9731
- upload_too_large: (maxMb, fileMb) => `\u6a94\u6848\u904e\u5927\uff08${fileMb} MB\uff09\u3002\u6700\u5927\u4e0a\u50b3\u5927\u5c0f\u70ba ${maxMb} MB\u3002`,
9732
- active_conversation_none: '\u672a\u9078\u53d6\u6d3b\u8e8d\u6703\u8a71\u3002',
9733
- add: '\u65b0\u589e',
9734
- add_failed: '\u65b0\u589e\u5931\u6557\uff1a',
9735
- auth_disabled: '\u9a57\u8b49\u5df2\u505c\u7528 \u2014 \u5bc6\u78bc\u4fdd\u8b77\u5df2\u95dc\u9589',
9736
- cancel_unavailable: '\u7121\u6cd5\u53d6\u6d88\u3002',
9737
- clear_conversation_message: '\u6e05\u9664\u6240\u6709\u8a0a\u606f\uff1f\u6b64\u64cd\u4f5c\u7121\u6cd5\u5fa9\u539f\u3002',
9738
- clear_conversation_title: '\u6e05\u9664\u5c0d\u8a71',
9739
- clear_failed: '\u6e05\u9664\u5931\u6557\uff1a',
9740
- content_required: '\u9700\u8981\u5167\u5bb9',
9741
- create_failed: '\u5efa\u7acb\u5931\u6557\uff1a',
9742
- delete_failed: '\u522a\u9664\u5931\u6557\uff1a',
9743
- disable: '\u505c\u7528',
9744
- disable_auth: '\u505c\u7528\u9a57\u8b49',
9745
- disable_auth_confirm_message: '\u4efb\u4f55\u4eba\u90fd\u53ef\u4ee5\u5b58\u53d6\u6b64\u5be6\u4f8b\u3002',
9746
- disable_auth_confirm_title: '\u505c\u7528\u5bc6\u78bc\u4fdd\u8b77',
9747
- disable_auth_failed: '\u505c\u7528\u9a57\u8b49\u5931\u6557\uff1a',
9748
- discard_file_edits_message: '\u5207\u63db\u5de5\u4f5c\u5340\u5c07\u653e\u68c4\u672a\u5132\u5b58\u7684\u9810\u89bd\u8b8a\u66f4\u3002',
9749
- discard_file_edits_title: '\u653e\u68c4\u6a94\u6848\u7de8\u8f2f\uff1f',
9750
- dismiss: '\u95dc\u9589',
9751
- edit: '\u7de8\u8f2f',
9752
- error_prefix: '\u932f\u8aa4\uff1a',
9753
- default: 'default',
9754
- search: 'Search',
9755
- linked_files: '\u95dc\u806f\u6a94\u6848',
9756
- manage_profiles: '\u7ba1\u7406\u8a2d\u5b9a\u6a94',
9757
- memory_notes_label: '\u8a18\u61b6\uff08\u5099\u8a3b\uff09',
9758
- model_custom_label: '\u81ea\u8a02\u6a21\u578b ID',
9759
- model_custom_placeholder: '\u4f8b\u5982 openai/gpt-5.4',
9760
- model_search_no_results: '\u627e\u4e0d\u5230\u6a21\u578b',
9761
- model_group_configured: '已設定',
9762
- ws_search_placeholder: '搜尋工作區…',
9763
- ws_no_results: '找不到工作區',
9764
- model_search_placeholder: '\u641c\u5c0b\u6a21\u578b\u2026',
9765
- session_toolsets: 'Session Toolsets', // TODO: translate
9766
- session_toolsets_desc: 'Restrict available tools for this session (blank = use global config)', // TODO: translate
9767
- session_toolsets_global: 'Global (default)', // TODO: translate
9768
- session_toolsets_custom: 'Custom', // TODO: translate
9769
- session_toolsets_placeholder: 'tool1, tool2, \u2026', // TODO: translate
9770
- session_toolsets_apply: 'Apply', // TODO: translate
9771
- session_toolsets_clear: 'Clear (use global)', // TODO: translate
9772
- session_toolsets_applied: 'Toolsets updated', // TODO: translate
9773
- session_toolsets_cleared: 'Toolsets cleared — using global config', // TODO: translate
9774
- session_toolsets_failed: 'Failed to update toolsets: ', // TODO: translate
9775
- model_scope_advisory: '\u5f9e\u4e0b\u4e00\u5247\u8a0a\u606f\u8d77\u9069\u7528\u65bc\u6b64\u6703\u8a71\u3002',
9776
- model_scope_toast: '\u5f9e\u4e0b\u4e00\u5247\u8a0a\u606f\u8d77\u9069\u7528\u65bc\u6b64\u6703\u8a71\u3002',
9777
- my_notes: '\u6211\u7684\u5099\u8a3b',
9778
- name_required: '\u9700\u8981\u540d\u7a31',
9779
- never: '\u5f9e\u4e0d',
9780
- no_active_session: '\u7121\u6d3b\u8e8d\u6703\u8a71',
9781
- cmd_queue: '\u5c07\u8a0a\u606f\u52a0\u5165\u4e0b\u4e00\u8f2a\u7684\u4f47\u5217',
9782
- cmd_goal: '設定或查看持久目標',
9783
- goal_evaluating_progress: 'Evaluating goal progress…',
9784
- goal_working_toward: 'Working toward goal…',
9785
- goal_continuing_toast: 'Continuing toward goal…',
9786
- goal_status_none: 'No active goal. Set one with /goal <text>.',
9787
- goal_status_active: (turns, max_turns, goal) => `⊙ Goal (active, ${turns}/${max_turns} turns): ${goal}`,
9788
- goal_status_paused: (turns, max_turns, reason, goal) => `⏸ Goal (paused, ${turns}/${max_turns}${reason ? `, ${reason}` : ''}): ${goal}`,
9789
- goal_status_done: (turns, max_turns, goal) => `✓ Goal done (${turns}/${max_turns}): ${goal}`,
9790
- goal_set: (turns, goal) => `⊙ Goal set (${turns}-turn budget): ${goal}`,
9791
- goal_paused: (goal) => `⏸ Goal paused: ${goal}`,
9792
- goal_resumed: (goal) => `▶ Goal resumed: ${goal}`,
9793
- goal_cleared: 'Goal cleared.',
9794
- goal_no_goal: 'No active goal.',
9795
- goal_achieved: (reason) => `✓ Goal achieved: ${reason}`,
9796
- goal_paused_budget_exhausted: (turns, max_turns) => `⏸ Goal paused — ${turns}/${max_turns} turns used. Use /goal resume to keep going, or /goal clear to stop.`,
9797
- goal_continuing: (turns, max_turns, reason) => `↻ Continuing toward goal (${turns}/${max_turns}): ${reason}`,
9798
- cmd_interrupt: '\u53d6\u6d88\u7576\u524d\u56de\u5408\u4e26\u767c\u9001\u65b0\u8a0a\u606f',
9799
- cmd_steer: '\u5728\u56de\u5408\u9032\u884c\u4e2d\u6ce8\u5165\u7d3a\u6b63\uff0c\u4e0d\u4e2d\u65b7\u4ee3\u7406',
9800
- cmd_queue_no_msg: '\u7528\u6cd5\uff1a/queue <\u8a0a\u606f>',
9801
- cmd_queue_not_busy: '\u6c92\u6709\u6d3b\u52d5\u4efb\u52d9 \u2014 \u76f4\u63a5\u767c\u9001\u5373\u53ef',
9802
- cmd_queue_confirm: '\u8a0a\u606f\u5df2\u52a0\u5165\u4f47\u5217',
9803
- cmd_interrupt_no_msg: '\u7528\u6cd5\uff1a/interrupt <\u8a0a\u606f>',
9804
- cmd_interrupt_confirm: '\u5df2\u4e2d\u65ad \u2014 \u6b63\u5728\u767c\u9001\u65b0\u8a0a\u606f',
9805
- cmd_steer_no_msg: '\u7528\u6cd5\uff1a/steer <\u8a0a\u606f>',
9806
- cmd_steer_fallback: 'Steer \u4e0d\u53ef\u7528 \u2014 \u5df2\u52a0\u5165\u4e0b\u4e00\u8f2a\u4f47\u5217',
9807
- cmd_steer_delivered: 'Steer \u5df2\u9001\u9054 \u2014 \u4ee3\u7406\u5c07\u5728\u4e0b\u4e00\u500b\u5de5\u5177\u7d50\u679c\u4e2d\u770b\u5230',
9808
- steer_leftover_queued: 'Steer \u5df2\u52a0\u5165\u4e0b\u4e00\u8f2a\u4f47\u5217',
9809
- busy_steer_fallback: 'Steer \u4e0d\u53ef\u7528 \u2014 \u5df2\u52a0\u5165\u4e0b\u4e00\u8f2a\u4f47\u5217',
9810
- busy_interrupt_confirm: '\u5df2\u4e2d\u65ad \u2014 \u6b63\u5728\u767c\u9001\u65b0\u8a0a\u606f',
9811
- settings_label_busy_input_mode: '\u5fd9\u788c\u8f38\u5165\u6a21\u5f0f',
9812
- settings_desc_busy_input_mode: '\u63a7\u5236\u5728\u4ee3\u7406\u904b\u884c\u6642\u767c\u9001\u8a0a\u606f\u7684\u884c\u70ba\u3002\u4f47\u5217\u7b49\u5f85\uff1b\u4e2d\u65b7\u53d6\u6d88\u4e26\u91cd\u65b0\u958b\u59cb\uff1bSteer\u4e2d\u9014\u6ce8\u5165\u7d3a\u6b63\uff0c\u4e0d\u4e2d\u65b7\u3002',
9813
- settings_label_fade_text_effect: '文字淡入效果',
9814
- settings_desc_fade_text_effect: '在助理回覆時讓新串流輸出的詞語淡入顯示。類似 OpenWebUI;為獲得最佳效能預設關閉。',
9815
- settings_busy_input_mode_queue: '\u52a0\u5165\u4f47\u5217',
9816
- settings_busy_input_mode_interrupt: '\u4e2d\u65ad\u7576\u524d\u56de\u5408',
9817
- settings_busy_input_mode_steer: 'Steer\uff08\u4e2d\u9014\u7d3a\u6b63\uff09',
9818
- no_active_task: '\u7121\u57f7\u884c\u4e2d\u7684\u4efb\u52d9\u53ef\u505c\u6b62\u3002',
9819
- no_notes_yet: '\u5c1a\u7121\u5099\u8a3b\u3002',
9820
- no_profile_yet: '\u5c1a\u7121\u8a2d\u5b9a\u6a94\u3002',
9821
- agent_soul: '智能體靈魂',
9822
- no_soul_yet: '尚無靈魂定義。',
9823
- external_notes_sources: '第三方筆記',
9824
- external_notes_empty: '尚未看到任何筆記或知識 MCP 來源。設定 Joplin、Obsidian、Notion、llm-wiki 或其他筆記伺服器後,會顯示在這裡。',
9825
- external_notes_auto_recall_hint: '自動會話召回維持不變;這個抽屜只顯示已設定的來源,以及可用的讀取/搜尋工具。',
9826
- external_notes_no_tools: '此來源目前沒有可見的讀取/搜尋工具。',
9827
- external_notes_tool_count: (count) => `${count} 個筆記工具可用`,
9828
- external_notes_configured_hint: '此已設定來源應提供工具名稱;當 WebUI 執行階段提供即時 schema 時會顯示在這裡。',
9829
- external_notes_recent_ai: 'AI 最近使用',
9830
- external_notes_auto: 'auto',
9831
- external_notes_recent_ai_reason: '自動召回',
9832
- external_notes_search_placeholder: '搜尋筆記…',
9833
- external_notes_search_empty: '搜尋已設定的筆記來源後,可在這裡預覽筆記。',
9834
- not_available: '\u7121',
9835
- profile_active: '\u555f\u7528\u4e2d',
9836
- profile_api_key_placeholder: 'API \u91d1\u9470\uff08\u9078\u586b\uff09',
9837
- profile_api_keys_configured: 'API \u91d1\u9470\u5df2\u8a2d\u5b9a',
9838
- profile_base_url_placeholder: '\u57fa\u672c URL\uff08\u9078\u586b\uff0c\u4f8b\u5982 http://localhost:11434\uff09',
9839
- profile_base_url_rule: '\u57fa\u672c URL \u5fc5\u9808\u4ee5 http:// \u6216 https:// \u958b\u982d',
9840
- profile_clone_label: '\u5f9e\u555f\u7528\u4e2d\u7684\u8a2d\u5b9a\u6a94\u8907\u88fd\u914d\u7f6e',
9841
- profile_model_label: '\u6a21\u578b / \u63d0\u4f9b\u5546',
9842
- profile_model_hint: '\u70ba\u9019\u500b\u65b0\u8a2d\u5b9a\u6a94\u9078\u64c7\u5df2\u8a2d\u5b9a\u7684\u63d0\u4f9b\u5546\u548c\u6a21\u578b\u3002',
9843
- profile_model_use_default: '\u4f7f\u7528\u555f\u7528\u4e2d\u8a2d\u5b9a\u6a94\u7684\u9810\u8a2d\u503c',
9844
- profile_created: (name) => `設定檔 ${name} 已建立`,
9845
- profile_default_label: '\uff08\u9810\u8a2d\uff09',
9846
- profile_delete_confirm_title: (name) => `刪除設定檔「${name}」?`,
9847
- profile_deleted: (name) => `設定檔 ${name} 已刪除`,
9848
- profile_gateway_running: 'Gateway \u57f7\u884c\u4e2d',
9849
- profile_gateway_stopped: 'Gateway \u5df2\u505c\u6b62',
9850
- profile_name_placeholder: '\u8a2d\u5b9a\u6a94\u540d\u7a31\uff08\u5c0f\u5beb\u5b57\u6bcd\u3001\u6578\u5b57\u3001\u9023\u5b57\u865f\uff09',
9851
- profile_name_rule: '\u50c5\u9650\u5c0f\u5beb\u5b57\u6bcd\u3001\u6578\u5b57\u3001\u9023\u5b57\u865f\u548c\u5e95\u7dda',
9852
- profile_no_configuration: '\u7121\u914d\u7f6e',
9853
- profile_skill_count: (n) => `${n} 個技能`,
9854
- profile_switch_title: '\u5207\u63db\u5230\u6b64\u8a2d\u5b9a\u6a94',
9855
- profile_switched: (name) => `已切換到 ${name}`,
9856
- profile_switched_new_conversation: (name) => `已切換到 ${name}(新會話)`,
9857
- profile_use: '\u4f7f\u7528',
9858
- profiles_load_failed: '\u8f09\u5165\u8a2d\u5b9a\u6a94\u5931\u6557',
9859
- profiles_no_profiles: '\u627e\u4e0d\u5230\u8a2d\u5b9a\u6a94\u3002',
9860
- remove: '\u79fb\u9664',
9861
- remove_failed: '\u79fb\u9664\u5931\u6557\uff1a',
9862
- rename_failed: '\u91cd\u65b0\u547d\u540d\u5931\u6557\uff1a',
9863
- retry_failed: '\u91cd\u8a66\u5931\u6557\uff1a',
9864
- save: '\u5132\u5b58',
9865
- save_failed: '\u5132\u5b58\u5931\u6557\uff1a',
9866
- session_time_bucket_last_week: '\u4e0a\u9031',
9867
- session_time_bucket_older: '\u66f4\u65e9',
9868
- session_time_bucket_this_week: '\u672c\u9031',
9869
- session_time_bucket_today: '\u4eca\u5929',
9870
- session_time_bucket_yesterday: '\u6628\u5929',
9871
- session_time_days_ago: (d) => `${d}\u5929`,
9872
- session_time_hours_ago: (h) => `${h}\u5c0f\u6642`,
9873
- session_time_last_week: '1\u9031',
9874
- session_time_minutes_ago: (m) => `${m}\u5206`,
9875
- session_time_unknown: '\u672a\u77e5',
9876
- settings_unsaved_changes: '\u60a8\u6709\u672a\u5132\u5b58\u7684\u8b8a\u66f4\u3002',
9877
- sign_out_failed: '\u767b\u51fa\u5931\u6557\uff1a',
9878
- stream_stopped: '\u56de\u61c9\u5df2\u505c\u6b62\u3002',
9879
- switch_failed: '\u5207\u63db\u5931\u6557\uff1a',
9880
- undid_messages_suffix: '\u5247\u8a0a\u606f\u3002',
9881
- undid_n_messages: '\u5df2\u79fb\u9664',
9882
- undo_exchange: '\u5fa9\u539f\u6700\u5f8c\u4e00\u8f2a',
9883
- undo_failed: '\u5fa9\u539f\u5931\u6557\uff1a',
9884
- user_profile: '\u4f7f\u7528\u8005\u8a2d\u5b9a\u6a94',
9885
- view: '\u6aa2\u8996',
9886
- workspace_add_path_placeholder: '\u65b0\u589e\u5de5\u4f5c\u5340\u8def\u5f91\uff08\u4f8b\u5982 /Users/you/project\uff09',
9887
- workspace_added: '\u5de5\u4f5c\u5340\u5df2\u65b0\u589e',
9888
- workspace_already_saved: '\u5de5\u4f5c\u5340\u5df2\u5132\u5b58 \u2014 \u5f9e\u6e05\u55ae\u4e2d\u9078\u53d6',
9889
- workspace_busy_switch: 'Agent \u57f7\u884c\u4e2d\u7121\u6cd5\u5207\u63db\u5de5\u4f5c\u5340',
9890
- workspace_choose_path: '\u9078\u64c7\u5de5\u4f5c\u5340\u8def\u5f91',
9891
- workspace_choose_path_meta: '\u65b0\u589e\u9a57\u8b49\u904e\u7684\u8def\u5f91\u4e26\u5207\u63db\u6b64\u6703\u8a71',
9892
- workspace_manage: '\u7ba1\u7406\u5de5\u4f5c\u5340',
9893
- workspace_manage_meta: '\u958b\u555f Spaces \u9762\u677f',
9894
- workspace_not_added: '\u5de5\u4f5c\u5340\u672a\u65b0\u589e',
9895
- workspace_paths_validated_hint: '\u8def\u5f91\u6703\u5148\u9a57\u8b49\u662f\u5426\u5b58\u5728\u518d\u5132\u5b58\u3002',
9896
-
9897
- workspace_drag_hint: '拖曳以重新排列',
9898
- workspace_reorder_failed: '重新排列失敗',
9899
- workspace_remove_confirm_message: (name) => `移除工作區「${name}」?`,
9900
- workspace_remove_confirm_title: '\u79fb\u9664\u5de5\u4f5c\u5340',
9901
- workspace_removed: '\u5de5\u4f5c\u5340\u5df2\u79fb\u9664',
9902
- workspace_switch_prompt_confirm: '\u5207\u63db',
9903
- workspace_switch_prompt_message: '\u8f38\u5165\u5de5\u4f5c\u5340\u7684\u7d55\u5c0d\u8def\u5f91\u4ee5\u65b0\u589e\u4e26\u5207\u63db\u6b64\u6703\u8a71\u3002',
9904
- workspace_switch_prompt_placeholder: '/Users/you/project',
9905
- workspace_switch_prompt_title: '\u5207\u63db\u5de5\u4f5c\u5340',
9906
- workspace_switched_to: (name) => `已切換到 ${name}`,
9907
- workspace_use: '\u4f7f\u7528',
9908
- workspace_use_title: '\u5728\u7576\u524d\u6703\u8a71\u4e2d\u4f7f\u7528',
9909
- bg_complete: '\u80cc\u666f\u4efb\u52d9\u5b8c\u6210',
9910
- bg_error_multi: (n) => `${n} 個背景任務失敗`,
9911
- cmd_status: '顯示會話資訊',
9912
- memory_saved: '記憶已儲存',
9913
- profile_delete_title: '刪除此設定檔',
9914
- bg_error_single: (n) => `${n} 個背景任務失敗`,
9915
- bg_failed: '\u80cc\u666f\u4efb\u52d9\u5931\u6557\uff1a',
9916
- bg_label: '\u80cc\u666f\u7d50\u679c\uff1a',
9917
- bg_no_answer: '\uff08\u7121\u56de\u61c9\uff09',
9918
- bg_running: '\u80cc\u666f\u57f7\u884c\u4e2d\u2026',
9919
- btw_asking: '\u6b63\u5728\u8a62\u554f\u9644\u5e36\u554f\u984c\u2026',
9920
- btw_done: '\u9644\u5e36\u554f\u984c\u5df2\u56de\u7b54',
9921
- btw_failed: '\u9644\u5e36\u554f\u984c\u5931\u6557\uff1a',
9922
- btw_label: '\u9644\u5e36\u554f\u984c \u2014 \u4e0d\u5728\u6b77\u53f2\u8a18\u9304\u4e2d',
9923
- btw_no_answer: '\u672a\u6536\u5230\u56de\u61c9\u3002',
9924
- cmd_background: '\u5728\u80cc\u666f\u57f7\u884c\u63d0\u793a\u8a5e',
9925
- cmd_background_usage: '/background <\u63d0\u793a\u8a5e> \u2014 \u5e73\u884c\u57f7\u884c\u4e0d\u963b\u585e',
9926
- cmd_btw: '\u63d0\u51fa\u9644\u5e36\u554f\u984c\uff08\u66ab\u6642\u6027\uff09',
9927
- cmd_btw_usage: '/btw <\u554f\u984c> \u2014 \u4f7f\u7528\u7576\u524d\u6703\u8a71\u80cc\u666f\u63d0\u554f',
9928
- cmd_compact: '\u58d3\u7e2e\u5c0d\u8a71\u4e0a\u4e0b\u6587',
9929
- cmd_retry: '\u91cd\u65b0\u767c\u9001\u6700\u5f8c\u4e00\u689d\u8a0a\u606f',
9930
- cmd_stop: '\u505c\u6b62\u7576\u524d\u56de\u61c9',
9931
- cmd_title: '\u53d6\u5f97\u6216\u8a2d\u5b9a\u6703\u8a71\u6a19\u984c',
9932
- cmd_undo: '\u79fb\u9664\u6700\u5f8c\u4e00\u8f2a\u5c0d\u8a71',
9933
- cmd_voice: '\u5207\u63db\u9ea5\u514b\u98a8\u8f38\u5165',
9934
- cmd_voice_use_mic: '\u9ede\u64ca\u7de8\u8f2f\u5668\u4e2d\u7684\u9ea5\u514b\u98a8\u6309\u9215\u3002',
9935
- cmd_webui_only_session: '\u6b64\u6307\u4ee4\u4e0d\u9069\u7528\u65bc CLI \u532f\u5165\u7684\u6703\u8a71\u3002',
9936
- cron_all_runs: '\u6240\u6709\u57f7\u884c',
9937
- cron_completion_status: (n) => `${n} 次完成`,
9938
- cron_delete_confirm_message: '\u6b64\u64cd\u4f5c\u7121\u6cd5\u5fa9\u539f\u3002',
9939
- cron_delete_confirm_title: '\u522a\u9664\u6392\u7a0b\u4efb\u52d9',
9940
- cron_hide_runs: '\u96b1\u85cf\u57f7\u884c\u8a18\u9304',
9941
- cron_job_created: '\u6392\u7a0b\u4efb\u52d9\u5df2\u5efa\u7acb',
9942
- cron_duplicate: '\u8907\u88fd',
9943
- cron_duplicated: '\u4efb\u52d9\u5df2\u8907\u88fd\uff08\u5df2\u66ab\u505c\uff09',
9944
- cron_job_deleted: '\u6392\u7a0b\u4efb\u52d9\u5df2\u522a\u9664',
9945
- cron_job_name_placeholder: '\u4efb\u52d9\u540d\u7a31',
9946
- cron_job_paused: '\u6392\u7a0b\u4efb\u52d9\u5df2\u66ab\u505c',
9947
- cron_job_resumed: '\u6392\u7a0b\u4efb\u52d9\u5df2\u6062\u5fa9',
9948
- cron_job_triggered: '\u6392\u7a0b\u4efb\u52d9\u5df2\u89f8\u767c',
9949
- cron_job_updated: '\u6392\u7a0b\u4efb\u52d9\u5df2\u66f4\u65b0',
9950
- cron_last: '\u4e0a\u6b21',
9951
- cron_last_output: '\u6700\u5f8c\u8f38\u51fa',
9952
- cron_expand_prompt: '展開提示詞',
9953
- cron_collapse_prompt: '收起提示詞',
9954
- cron_expand_output: '展開輸出',
9955
- cron_collapse_output: '收起輸出',
9956
- cron_view_full_output: 'View full output',
9957
- cron_next: '\u4e0b\u6b21',
9958
- cron_no_jobs: '\u627e\u4e0d\u5230\u6392\u7a0b\u4efb\u52d9\u3002',
9959
- cron_no_runs_yet: '\uff08\u5c1a\u7121\u57f7\u884c\u8a18\u9304\uff09',
9960
- cron_pause: '\u66ab\u505c',
9961
- cron_prompt_placeholder: '\u63d0\u793a\u8a5e',
9962
- cron_prompt_required: '\u9700\u8981\u63d0\u793a\u8a5e',
9963
- cron_resume: '\u6062\u5fa9',
9964
- cron_run_now: '\u7acb\u5373\u57f7\u884c',
9965
- cron_schedule_placeholder: '\u6392\u7a0b',
9966
- cron_schedule_required: '\u9700\u8981\u6392\u7a0b',
9967
- cron_schedule_required_example: '\u9700\u8981\u6392\u7a0b\uff08\u4f8b\u5982 "0 9 * * *" \u6216 "every 1h"\uff09',
9968
- cron_status_active: '已啟用',
9969
- cron_status_running: '\u57f7\u884c\u4e2d\u2026',
9970
- cron_status_error: '\u932f\u8aa4',
9971
- cron_status_off: '\u672a\u555f\u7528',
9972
- cron_status_paused: '\u5df2\u66ab\u505c',
9973
- cron_status_needs_attention: '\u9700\u8981\u8655\u7406',
9974
- cron_attention_desc: '\u9019\u500b\u91cd\u8907\u6392\u7a0b\u4efb\u52d9\u6c92\u6709\u4e0b\u6b21\u57f7\u884c\u6642\u9593\u3002\u6392\u7a0b\u5668\u53ef\u80fd\u7121\u6cd5\u8a08\u7b97\u4e0b\u4e00\u6b21\u57f7\u884c\u3002',
9975
- cron_attention_croniter_hint: 'Gateway \u57f7\u884c\u74b0\u5883\u53ef\u80fd\u7f3a\u5c11 croniter \u5957\u4ef6\u3002\u8acb\u7528\u652f\u63f4 cron \u7684\u74b0\u5883\u91cd\u555f Gateway\uff0c\u7136\u5f8c\u6062\u5fa9\u9019\u500b\u4efb\u52d9\u3002',
9976
- cron_attention_resume: '\u6062\u5fa9\u4e26\u91cd\u65b0\u8a08\u7b97',
9977
- cron_jobs_project: '\u5b9a\u6642\u4efb\u52d9',
9978
- cron_attention_run_once: '\u7acb\u5373\u57f7\u884c\u4e00\u6b21',
9979
- cron_attention_copy_diagnostics: '\u8907\u88fd\u8a3a\u65b7\u8cc7\u8a0a',
9980
- cron_diagnostics_copied: '\u6392\u7a0b\u4efb\u52d9\u8a3a\u65b7\u8cc7\u8a0a\u5df2\u8907\u88fd',
9981
- providers_empty: '\u627e\u4e0d\u5230\u53ef\u8a2d\u5b9a\u7684\u63d0\u4f9b\u8005\u3002',
9982
- providers_enter_key: '\u8acb\u8f38\u5165 API \u91d1\u9470',
9891
+ settings_desc_sync_insights: '將 WebUI token 用量鏡射到 state.db,讓 hermes /insights 納入瀏覽器工作階段資料。預設為關閉。',
9892
+ settings_desc_check_updates: '有較新版 WebUI Agent 時顯示橫幅。系統會定期在背景執行 git fetch。',
9893
+ settings_desc_ignore_agent_updates: '保留 WebUI 更新檢查,但隱藏 Agent 更新通知,並略過 Agent 更新 fetch。',
9894
+ settings_desc_whats_new_summary: ' [新版內容] 動作改為先產生簡短、易讀的摘要,而不是先開啟原始 diff。摘要完成後仍可使用一般 diff 比較。',
9895
+ settings_desc_bot_name: '助理在整個 UI 中顯示的名稱。預設為 Hermes。',
9896
+ settings_desc_password: '輸入新密碼即可設定或變更密碼。留空會保留目前設定。',
9897
+ password_placeholder: '輸入新密碼……',
9898
+ password_env_var_locked: '目前已設定 HERMES_WEBUI_PASSWORD 環境變數且優先生效。請取消設定並重新啟動伺服器,才能在此管理密碼。',
9899
+ password_env_var_locked_placeholder: '已鎖定:已設定 HERMES_WEBUI_PASSWORD 環境變數',
9900
+ disable_auth: '停用驗證',
9901
+ sign_out: '登出',
9902
+ settings_label_shutdown: '停止 Hermes WebUI 伺服器',
9903
+ settings_desc_shutdown: '正常停止本機 WebUI 伺服器。適合透過 <code>./ctl.sh start</code> 啟動,且想要不切換到終端機就停止伺服器的情境。要再次進入 WebUI,需要重新啟動伺服器(<code>./ctl.sh start</code> 或原生應用程式)。',
9904
+ settings_btn_shutdown: '停止伺服器',
9905
+ settings_shutdown_confirm_title: '停止 Hermes WebUI',
9906
+ settings_shutdown_confirm_message: '停止 Hermes WebUI 伺服器?',
9907
+ settings_shutdown_confirm_btn: '停止',
9908
+ settings_shutdown_stopped_message: '伺服器已停止。可以關閉這個分頁。',
9909
+ // Providers panel
9910
+ providers_tab_title: '供應商',
9911
+ providers_section_title: '供應商',
9912
+ providers_section_meta: '管理 AI 提供者的 API 金鑰。變更會立即生效。',
9913
+ providers_status_configured: 'API 金鑰已設定',
9914
+ providers_status_not_configured: '無 API 金鑰',
9915
+ providers_status_oauth: 'OAuth',
9916
+ providers_status_api_key: 'API 金鑰',
9917
+ providers_status_not_configured_label: '未設定',
9918
+ providers_oauth_hint: '已透過 OAuth 驗證。無需 API 金鑰。',
9919
+ providers_oauth_config_yaml_hint: '已透過 config.yaml 設定權證。要更新,請編輯 config.yaml 中的 providers 區段,或執行 hermes auth。',
9920
+ providers_oauth_not_configured_hint: '尚未驗證。請在終端機執行 hermes auth 以設定此提供者。',
9921
+ providers_save: '儲存',
9922
+ providers_refresh_models: '重新整理模型',
9923
+ providers_refreshing: '正在重新整理…',
9924
+ providers_models_refreshed: '模型已重新整理',
9925
+ providers_remove: '移除',
9926
+ providers_saving: '儲存中…',
9927
+ providers_removing: '移除中…',
9928
+ providers_enter_key: '請輸入 API 金鑰',
9929
+ providers_empty: '找不到可設定的提供者。',
9930
+ providers_key_updated: 'API 金鑰已儲存',
9931
+ providers_key_removed: 'API 金鑰已移除',
9983
9932
  providers_key_placeholder_new: 'sk-...',
9984
- providers_key_placeholder_replace: '\u8f38\u5165\u65b0\u91d1\u9470\u4ee5\u53d6\u4ee3\u2026',
9985
- providers_key_removed: 'API \u91d1\u9470\u5df2\u79fb\u9664',
9986
- providers_key_updated: 'API \u91d1\u9470\u5df2\u5132\u5b58',
9933
+ providers_key_placeholder_replace: '輸入新金鑰以取代…',
9987
9934
  provider_quota_title: '目前提供者配額',
9988
9935
  provider_quota_active_provider: '目前提供者',
9989
9936
  provider_quota_last_checked_after_refresh: '重新整理後檢查',
9990
9937
  provider_quota_last_checked: '上次檢查 {0}',
9991
9938
  provider_quota_refresh_usage: '重新整理用量',
9992
- provider_quota_refreshing: '正在重新整理...',
9939
+ provider_quota_refreshing: '正在重新整理……',
9993
9940
  provider_quota_refresh_title: '立即重新整理提供者用量限制',
9994
9941
  provider_quota_refresh_succeeded: '提供者用量已重新整理',
9995
9942
  provider_quota_refresh_failed: '提供者用量重新整理失敗',
@@ -10020,149 +9967,360 @@ const LOCALES = {
10020
9967
  provider_quota_pool_summary_exhausted: '{0} 個已耗盡',
10021
9968
  provider_quota_pool_summary_failed: '{0} 個失敗',
10022
9969
  provider_quota_pool_summary_checked: '已檢查 {0} 個',
10023
- providers_oauth_hint: '\u5df2\u900f\u904e OAuth \u9a57\u8b49\u3002\u7121\u9700 API \u91d1\u9470\u3002',
10024
- providers_oauth_config_yaml_hint: '\u5df2\u900f\u904e config.yaml \u8a2d\u5b9a\u6b0a\u8b49\u3002\u8981\u66f4\u65b0\uff0c\u8acb\u7de8\u8f2f config.yaml \u4e2d\u7684 providers \u5340\u6bb5\uff0c\u6216\u57f7\u884c hermes auth\u3002',
10025
- providers_oauth_not_configured_hint: '\u5c1a\u672a\u9a57\u8b49\u3002\u8acb\u5728\u7d42\u7aef\u6a5f\u57f7\u884c hermes auth \u4ee5\u8a2d\u5b9a\u6b64\u63d0\u4f9b\u8005\u3002',
10026
- providers_remove: '\u79fb\u9664',
10027
- providers_removing: '\u79fb\u9664\u4e2d\u2026',
10028
- providers_save: '\u5132\u5b58',
10029
- providers_refresh_models: 'Refresh models',
10030
- providers_refreshing: 'Refreshing…',
10031
- providers_models_refreshed: 'Models refreshed',
10032
- providers_saving: '\u5132\u5b58\u4e2d\u2026',
10033
- providers_section_meta: '管理 AI 提供者的 API 金鑰。變更會立即生效。',
10034
- providers_section_title: '供應商',
10035
- providers_status_api_key: 'API 金鑰',
10036
- providers_status_configured: 'API \u91d1\u9470\u5df2\u8a2d\u5b9a',
10037
- providers_status_not_configured: '\u7121 API \u91d1\u9470',
10038
- providers_status_not_configured_label: '\u672a\u8a2d\u5b9a',
10039
- providers_status_oauth: 'OAuth',
10040
- providers_tab_title: '供應商',
10041
- status_agent_running: 'Agent 執行中',
10042
- status_profile: '個人資料',
10043
- status_hermes_home: 'Hermes 主目錄',
10044
- status_started: '開始時間',
10045
- status_tokens: 'Token',
10046
- status_updated: '已更新',
10047
- status_ephemeral: '临时快照 — 不会保存到对话历史。',
10048
- status_no_tokens: '未使用 Token',
10049
- status_unknown: '未知',
10050
- status_completed: '\u5df2\u5b8c\u6210',
10051
- status_failed: '\u5931\u6557',
10052
- status_heading: '\u6703\u8a71\u72c0\u614b',
10053
- status_load_failed: '\u8f09\u5165\u72c0\u614b\u5931\u6557\uff1a',
10054
- status_messages: '\u8a0a\u606f\u6578',
10055
- status_model: '\u6a21\u578b',
10056
- status_provider: '供应商',
10057
- status_no: '\u5426',
10058
- status_personality: '\u4eba\u8a2d',
10059
- status_session_id: '\u6703\u8a71 ID',
10060
- status_title: '\u6a19\u984c',
10061
- status_workspace: '\u5de5\u4f5c\u5340',
10062
- status_yes: '\u662f',
10063
- usage_default_model: '\u9810\u8a2d',
10064
- usage_estimated_cost: '\u9810\u4f30\u8cbb\u7528',
10065
- usage_heading: 'Token \u7528\u91cf',
10066
- usage_input_tokens: '\u8f38\u5165 Token',
10067
- usage_load_failed: '\u8f09\u5165\u7528\u91cf\u5931\u6557\uff1a',
10068
- usage_output_tokens: '\u8f38\u51fa Token',
10069
- usage_personality_none: '\u7121',
10070
- usage_settings_tip: '\u6ce8\u610f\uff1a\u8cbb\u7528\u70ba\u9810\u4f30\u503c\u3002',
10071
- usage_total: '\u7e3d Token \u6578',
10072
- usage_unknown: '\u672a\u77e5',
10073
- cmd_yolo: 'YOLO 模式切換',
10074
- yolo_no_session: '無活動工作階段',
10075
- yolo_enabled: ' YOLO 模式已開啟 — 將跳過所有審批',
10076
- yolo_disabled: 'YOLO 模式已關閉',
10077
- cmd_branch:'Fork this conversation into a new session',
10078
- cmd_branch_usage:'/branch [name] — fork conversation (optionally with a name)',
10079
- branch_forked:'Forked into new session',
10080
- branch_failed:'Fork failed: ',
10081
- fork_from_here:'Fork from here',
10082
- forked_from:'Forked from',
10083
- yolo_pill_label: 'YOLO',
10084
- yolo_pill_title_active: 'YOLO 模式激活 — 點擊關閉',
10085
- approval_skip_all: '⚡ 本次工作階段全部跳過',
10086
- approval_skip_all_title: '跳過本次工作階段的所有審批提示',
10087
- // composer action tooltips
10088
- composer_send: '\u50b3\u9001\u8a0a\u606f',
10089
- composer_queue: '\u8a0a\u606f\u52a0\u5165\u4f47\u5217',
10090
- composer_interrupt: '\u4e2d\u65b7\u4e26\u50b3\u9001',
10091
- composer_steer: '\u5f15\u5c0e\u76ee\u524d\u56de\u61c9',
10092
- composer_stop: '\u505c\u6b62\u7522\u751f',
10093
- composer_disabled_clarify: '\u8acb\u56de\u8986\u4e0a\u65b9\u7684\u6f84\u6e05\u8981\u6c42',
10094
- composer_disabled_compression: '\u7b49\u5f85\u58d3\u7e2e\u5b8c\u6210',
10095
- composer_disabled_empty: '\u8acb\u8f38\u5165\u8a0a\u606f\u5f8c\u50b3\u9001',
10096
- composer_mobile_workspace: '工作區',
10097
- composer_mobile_model: '模型',
10098
- composer_mobile_reasoning: '推理',
10099
- composer_mobile_context: '上下文',
10100
- // Queued messages
10101
- queued_label: '回應後發送',
10102
- queued_count: (n) => n === 1 ? '1 已排隊' : `${n} 已排隊`,
10103
- queued_cancel: '取消排隊訊息',
9970
+ cancel: '取消',
9971
+ create_job: '建立工作',
9972
+ save_skill: '儲存技能',
9973
+ editing: '編輯中',
9974
+ // Empty state
9975
+ empty_title: '需要什麼協助?',
9976
+ empty_subtitle: '可以提問、執行命令、瀏覽檔案,或管理排程工作。',
9977
+ suggest_files: '這個工作區有哪些檔案?',
9978
+ suggest_schedule: '今天有哪些行程?',
9979
+ suggest_plan: '協助我規劃一個小專案。',
9980
+ // onboarding
9981
+ onboarding_badge: '首次使用',
9982
+ onboarding_title: '歡迎使用 Hermes Web UI',
9983
+ onboarding_lead: '快速設定精靈會驗證 Hermes、儲存實際的供應商設定、選擇工作區與模型,並可選擇用密碼保護應用程式。',
9984
+ onboarding_back: '上一頁',
9985
+ onboarding_continue: '繼續',
9986
+ onboarding_skip: '跳過設定',
9987
+ onboarding_skipped: '已略過設定,使用現有設定。',
9988
+ onboarding_open: '開啟 Hermes',
9989
+ onboarding_step_system_title: '系統檢查',
9990
+ onboarding_step_system_desc: '驗證 Hermes Agent 與設定可見性。',
9991
+ onboarding_step_setup_title: '供應商設定',
9992
+ onboarding_step_setup_desc: '儲存最低限度的 Hermes 供應商設定。',
9993
+ onboarding_step_workspace_title: '工作區與模型',
9994
+ onboarding_step_workspace_desc: '選擇新工作階段與聊天的預設值。',
9995
+ onboarding_step_password_title: '選用密碼',
9996
+ onboarding_step_password_desc: '分享 Web UI 前先保護它。',
9997
+ onboarding_step_finish_title: '完成',
9998
+ onboarding_step_finish_desc: '檢查設定並進入應用程式。',
9999
+ onboarding_notice_system_ready: 'Hermes Agent 看起來可由 Web UI 存取。',
10000
+ onboarding_notice_system_unavailable: 'Hermes Agent 尚未完全可用。Bootstrap 可以安裝它,但供應商設定可能仍需要使用終端機。',
10001
+ onboarding_check_agent: 'Hermes Agent',
10002
+ onboarding_check_agent_ready: '已偵測到且可匯入',
10003
+ onboarding_check_agent_missing: '缺少或僅能部分匯入',
10004
+ onboarding_check_password: '密碼',
10005
+ onboarding_check_password_enabled: '已啟用',
10006
+ onboarding_check_password_disabled: '尚未啟用',
10007
+ onboarding_check_provider: '供應商設定',
10008
+ onboarding_check_provider_ready: '已可聊天',
10009
+ onboarding_check_provider_partial: '已儲存但不完整',
10010
+ onboarding_check_provider_pending: '需要驗證',
10011
+ onboarding_config_file: '設定檔:',
10012
+ onboarding_env_file: '.env 檔案:',
10013
+ onboarding_unknown: '未知',
10014
+ onboarding_current_provider: '目前設定:',
10015
+ onboarding_missing_imports: '缺少的匯入內容:',
10016
+ onboarding_notice_setup_required: '請在這裡選擇簡易供應商路徑。進階 OAuth 流程目前仍需使用 Hermes CLI 處理。',
10017
+ onboarding_notice_setup_already_ready: '已偵測到可用的 Hermes 供應商設定。可以保留或在這裡替換。',
10018
+ onboarding_oauth_provider_ready_title: '供應商已完成驗證',
10019
+ onboarding_oauth_provider_ready_body: '這個執行個體已設定為使用 Hermes CLI 設定的 OAuth 供應商(<strong>{provider}</strong>)。這裡不需要 API 金鑰,請點選 [繼續] 完成設定。',
10020
+ onboarding_oauth_provider_not_ready_title: 'OAuth 供應商尚未完成驗證',
10021
+ onboarding_oauth_provider_not_ready_body: '這個執行個體已設定為使用 <strong>{provider}</strong>,此供應商使用 OAuth 而不是 API 金鑰。請在終端機執行 <code>hermes auth</code> 或 <code>hermes model</code> 完成驗證,然後重新載入 Web UI。',
10022
+ onboarding_oauth_switch_hint: '或在下方選擇其他供應商,切換為 API 金鑰設定:',
10023
+ oauth_login_codex: '使用 Codex(ChatGPT)登入',
10024
+ oauth_codex_step1: '步驟 1:前往此 URL 並輸入驗證碼',
10025
+ oauth_codex_step2: '步驟 2:在頁面上輸入此驗證碼',
10026
+ oauth_codex_polling: '正在等待授權…',
10027
+ oauth_codex_success: 'Codex OAuth 登入成功!',
10028
+ oauth_codex_error: 'OAuth 登入失敗',
10029
+ oauth_codex_expired: '驗證碼已過期,請再試一次',
10030
+ onboarding_notice_workspace: '這些值會重複使用一般應用程式相同的設定 API。',
10031
+ onboarding_workspace_label: '工作區',
10032
+ onboarding_workspace_or_path: '或輸入工作區路徑',
10033
+ onboarding_workspace_placeholder: '/home/you/workspace',
10034
+ onboarding_provider_label: '設定模式',
10035
+ onboarding_quick_setup_badge: '快速設定',
10036
+ provider_category_easy_start: '快速開始',
10037
+ provider_category_self_hosted: '開源/自行託管',
10038
+ provider_category_specialized: '專業服務',
10039
+ onboarding_api_key_label: 'API 金鑰',
10040
+ onboarding_api_key_placeholder: '留空可保留現有已儲存金鑰',
10041
+ onboarding_api_key_label_optional: 'API 金鑰(選用)',
10042
+ onboarding_api_key_placeholder_optional: '無需金鑰的伺服器可留空',
10043
+ onboarding_api_key_help_keyless: '多數 LM Studio / Ollama / vLLM 安裝不需要金鑰;如果伺服器不需要驗證,請留空。請使用 [測試連線] 按鈕確認。',
10044
+ onboarding_api_key_help_prefix: '系統會使用以下名稱,將它以祕密值形式儲存在 Hermes .env 檔案中',
10045
+ onboarding_base_url_label: 'Base URL',
10046
+ onboarding_base_url_placeholder: 'https://your-endpoint.example/v1',
10047
+ onboarding_base_url_help: '可用於 OpenAI 相容路由器、自行託管伺服器、LiteLLM、Ollama、LM Studio、vLLM 或類似端點。',
10048
+ onboarding_model_label: '預設模型',
10049
+ onboarding_workspace_help: '選擇設定完成後 Hermes 應在新聊天中使用的模型。',
10050
+ onboarding_custom_model_placeholder: 'your-model-name',
10051
+ onboarding_custom_model_help: '自訂端點請輸入伺服器預期的確切模型 ID。',
10052
+ onboarding_notice_password_enabled: '已設定密碼。只有要替換時才需要輸入新密碼。',
10053
+ onboarding_notice_password_recommended: '建議設定密碼,尤其是要將 UI 暴露到 localhost 以外時。',
10054
+ onboarding_password_label: '密碼(選用)',
10055
+ onboarding_password_placeholder: '留空可略過',
10056
+ onboarding_password_help: '密碼會透過既有設定 API 儲存,並在伺服器端雜湊。',
10057
+ onboarding_notice_finish: '之後可以重新開啟 [設定] 變更這些值。',
10058
+ onboarding_not_set: '未設定',
10059
+ onboarding_password_will_enable: '將會啟用',
10060
+ onboarding_password_will_replace: '將取代',
10061
+ onboarding_password_keep_existing: '保留目前密碼',
10062
+ onboarding_password_remains_disabled: '將保持停用',
10063
+ onboarding_password_skipped: '暫時略過',
10064
+ onboarding_finish_help: '完成後會在設定中儲存 <code>onboarding_completed</code>,並進入一般應用程式。',
10065
+ onboarding_error_choose_workspace: '請先選擇工作區再繼續。',
10066
+ onboarding_error_choose_model: '請先選擇模型再繼續。',
10067
+ onboarding_error_provider_required: '請先選擇設定模式再繼續。',
10068
+ onboarding_error_base_url_required: '自訂端點必須提供 Base URL。',
10069
+ onboarding_probe_test_button: '測試連線',
10070
+ onboarding_probe_probing: '正在測試連線…',
10071
+ onboarding_probe_ok: '已連線。共有 {n} 個模型可用。',
10072
+ onboarding_probe_error_generic: '無法連上設定的 Base URL。',
10073
+ onboarding_probe_error_invalid_url: 'Base URL 必須以 http:// 或 https:// 開頭。',
10074
+ onboarding_probe_error_dns: '無法解析主機。請檢查 URL,或改用主機的 IP 位址。',
10075
+ onboarding_probe_error_connect_refused: '連線遭拒;伺服器可能沒有在該位址執行。若在 Docker 內使用,請嘗試以主機 IP 取代 localhost。',
10076
+ onboarding_probe_error_timeout: '端點未及時回應。請確認伺服器正在執行,且 URL 正確。',
10077
+ onboarding_probe_error_http_4xx: '端點回傳請求端錯誤。請檢查驗證資訊與 URL 路徑(通常以 /v1 結尾)。',
10078
+ onboarding_probe_error_http_5xx: '端點回傳伺服器錯誤。請檢查 LM Studio / Ollama 伺服器記錄。',
10079
+ onboarding_probe_error_parse: '端點未回傳預期格式的模型清單。請確認 URL 指向 OpenAI 相容 API 根路徑。',
10080
+ onboarding_probe_error_unreachable: '無法連上設定的 Base URL。',
10081
+ onboarding_error_probe_failed: '無法驗證設定的 Base URL。',
10082
+ onboarding_error_workspace_required: '工作區為必填。',
10083
+ onboarding_error_model_required: '模型為必填。',
10084
+ onboarding_complete: '初始設定已完成',
10104
10085
 
10105
- // Skills
10086
+ // panel/runtime i18n
10087
+ error_prefix: '錯誤:',
10088
+ default: '預設',
10089
+ search: '搜尋',
10090
+ not_available: '無',
10091
+ never: '從不',
10092
+ add: '新增',
10093
+ add_failed: '新增失敗:',
10094
+ remove_failed: '移除失敗:',
10095
+ switch_failed: '切換失敗:',
10096
+ name_required: '需要名稱',
10097
+ content_required: '需要內容',
10098
+ view: '檢視',
10099
+ dismiss: '關閉',
10100
+ disable: '停用',
10101
+ cron_no_jobs: '找不到排程任務。',
10102
+ cron_status_off: '未啟用',
10103
+ cron_status_paused: '已暫停',
10104
+ cron_status_error: '錯誤',
10105
+ cron_status_active: '已啟用',
10106
+ cron_status_running: '執行中…',
10107
+ cron_status_needs_attention: '需要處理',
10108
+ cron_attention_desc: '這個重複排程任務沒有下次執行時間。排程器可能無法計算下一次執行。',
10109
+ cron_attention_croniter_hint: 'Gateway 執行環境可能缺少 croniter 套件。請用支援 cron 的環境重啟 Gateway,然後恢復這個任務。',
10110
+ cron_attention_resume: '恢復並重新計算',
10111
+ cron_jobs_project: '定時任務',
10112
+ cron_attention_run_once: '立即執行一次',
10113
+ cron_attention_copy_diagnostics: '複製診斷資訊',
10114
+ cron_diagnostics_copied: '排程任務診斷資訊已複製',
10115
+ cron_next: '下次',
10116
+ cron_last: '上次',
10117
+ cron_run_now: '立即執行',
10118
+ cron_pause: '暫停',
10119
+ cron_resume: '恢復',
10120
+ cron_job_name_placeholder: '任務名稱',
10121
+ cron_schedule_placeholder: '排程',
10122
+ cron_prompt_placeholder: '提示詞',
10123
+ cron_last_output: '最後輸出',
10124
+ cron_expand_prompt: '展開提示詞',
10125
+ cron_collapse_prompt: '收起提示詞',
10126
+ cron_expand_output: '展開輸出',
10127
+ cron_collapse_output: '收起輸出',
10128
+ cron_view_full_output: '檢視完整輸出',
10129
+ cron_all_runs: '所有執行',
10130
+ cron_hide_runs: '隱藏執行記錄',
10131
+ cron_no_runs_yet: '(尚無執行記錄)',
10132
+ cron_schedule_required_example: '需要排程(例如「0 9 * * *」或「every 1h」)',
10133
+ cron_schedule_required: '需要排程',
10134
+ cron_prompt_required: '需要提示詞',
10135
+ cron_job_created: '排程任務已建立',
10136
+ cron_duplicate: '複製',
10137
+ cron_duplicated: '任務已複製(已暫停)',
10138
+ cron_job_triggered: '排程任務已觸發',
10139
+ cron_job_paused: '排程任務已暫停',
10140
+ cron_job_resumed: '排程任務已恢復',
10141
+ cron_job_updated: '排程任務已更新',
10142
+ cron_delete_confirm_title: '刪除排程任務',
10143
+ cron_delete_confirm_message: '此操作無法復原。',
10144
+ cron_job_deleted: '排程任務已刪除',
10145
+ cron_completion_status: (name, status) => `排程「${name}」${status}`,
10146
+ status_failed: '失敗',
10147
+ status_completed: '已完成',
10148
+ todos_no_active: '此對話中沒有使用中的任務清單。',
10149
+ clear_conversation_title: '清除對話',
10150
+ clear_conversation_message: '清除所有訊息?此操作無法復原。',
10151
+ clear_failed: '清除失敗:',
10152
+ skills_no_match: '找不到符合的技能。',
10153
+ skill_enabled: '技能已啟用',
10154
+ skill_disabled: '技能已停用',
10155
+ skill_toggle_failed: '切換技能狀態失敗:',
10156
+ linked_files: '關聯檔案',
10157
+ skill_load_failed: '載入技能失敗:',
10158
+ skill_file_load_failed: '載入檔案失敗:',
10159
+ skill_name_required: '需要技能名稱',
10160
+ skill_updated: '技能已更新',
10161
+ skill_created: '技能已建立',
10106
10162
  skill_deleted: '技能已刪除',
10107
- skill_delete_confirm: '確定要刪除此技能嗎?',
10108
- skills_empty_title: '尚無技能',
10109
- skills_empty_sub: '安裝技能以擴展代理的能力',
10163
+ skill_delete_confirm: '要刪除技能「{0}」嗎?',
10164
+ skills_empty_title: '選擇技能',
10165
+ skills_empty_sub: '從側邊欄選擇技能以檢視內容,或建立新技能。',
10110
10166
  skills_edit: '編輯',
10111
10167
  skills_delete: '刪除',
10112
- skills_back_to: '返回技能列表',
10113
-
10114
- // Tasks
10115
- tasks_empty_title: '無任務',
10116
- tasks_empty_sub: '管理排程與背景任務',
10117
-
10118
- // Workspaces
10119
- workspaces_empty_title: '尚無工作區',
10120
- workspaces_empty_sub: '設定工作區以組織您的專案',
10121
-
10122
- // Profiles
10123
- profiles_empty_title: '尚無設定檔',
10124
- profiles_empty_sub: '建立設定檔以快速切換環境',
10168
+ skills_back_to: '回到 {0}',
10169
+ tasks_empty_title: '選擇排程任務',
10170
+ tasks_empty_sub: '從側邊欄選擇任務以檢視詳細資料與執行記錄,或建立新任務。',
10171
+ workspaces_empty_title: '選擇工作區',
10172
+ workspaces_empty_sub: '從側邊欄選擇工作區以檢視其檔案與設定,或新增工作區。',
10173
+ profiles_empty_title: '選擇設定檔',
10174
+ profiles_empty_sub: '從側邊欄選擇 Agent 設定檔以檢視並編輯設定,或建立新設定檔。',
10175
+ memory_notes_label: '記憶(備註)',
10176
+ memory_saved: '記憶已儲存',
10177
+ my_notes: '我的備註',
10178
+ user_profile: '使用者設定檔',
10179
+ external_notes_sources: '第三方筆記',
10180
+ external_notes_empty: '尚未看到任何筆記或知識 MCP 來源。設定 Joplin、Obsidian、Notion、llm-wiki 或其他筆記伺服器後,會顯示在這裡。',
10181
+ external_notes_auto_recall_hint: '自動對話召回維持不變;這個抽屜只顯示已設定的來源,以及可用的讀取/搜尋工具。',
10182
+ external_notes_no_tools: '此來源目前沒有可見的讀取/搜尋工具。',
10183
+ external_notes_tool_count: (count) => `${count} 個筆記工具可用`,
10184
+ external_notes_configured_hint: '此已設定來源應提供工具名稱;當 WebUI 執行階段提供即時 schema 時會顯示在這裡。',
10185
+ external_notes_recent_ai: 'AI 最近使用',
10186
+ external_notes_auto: '自動',
10187
+ external_notes_recent_ai_reason: '自動召回',
10188
+ external_notes_search_placeholder: '搜尋筆記…',
10189
+ external_notes_search_empty: '搜尋已設定的筆記來源後,可在這裡預覽筆記。',
10190
+ source_active: '使用中',
10191
+ source_configured: '已設定',
10192
+ no_notes_yet: '尚無備註。',
10193
+ no_profile_yet: '尚無設定檔。',
10194
+ agent_soul: 'Agent 靈魂',
10195
+ no_soul_yet: '尚無靈魂定義。',
10196
+ workspace_choose_path: '選擇工作區路徑',
10197
+ workspace_choose_path_meta: '新增驗證過的路徑並切換此對話',
10198
+ workspace_manage: '管理工作區',
10199
+ workspace_manage_meta: '開啟 Spaces 面板',
10200
+ workspace_use_title: '在目前對話中使用',
10201
+ workspace_use: '使用',
10202
+ workspace_add_path_placeholder: '新增工作區路徑(例如 /home/user/my-project)',
10203
+ workspace_paths_validated_hint: '路徑會先驗證是否存在再儲存。',
10125
10204
 
10126
- // Skill editor
10205
+ workspace_drag_hint: '拖曳以重新排列',
10206
+ workspace_reorder_failed: '重新排列失敗',
10207
+ workspace_added: '工作區已新增',
10208
+ workspace_renamed: '工作區已重新命名',
10209
+ workspace_remove_confirm_title: '移除工作區',
10210
+ workspace_remove_confirm_message: (name) => `移除工作區「${name}」?`,
10211
+ workspace_removed: '工作區已移除',
10212
+ workspace_switch_prompt_title: '切換工作區',
10213
+ workspace_switch_prompt_message: '輸入工作區的絕對路徑以新增並切換此對話。',
10214
+ workspace_switch_prompt_confirm: '切換',
10215
+ workspace_switch_prompt_placeholder: '/Users/you/project',
10216
+ workspace_not_added: '工作區未新增',
10217
+ workspace_already_saved: '工作區已儲存 — 從清單中選取',
10218
+ workspace_busy_switch: 'Agent 執行中無法切換工作區',
10219
+ discard_file_edits_title: '放棄檔案編輯?',
10220
+ discard_file_edits_message: '切換工作區將放棄未儲存的預覽變更。',
10221
+ workspace_switched_to: (name) => `已切換到 ${name}`,
10222
+ profiles_no_profiles: '找不到設定檔。',
10223
+ profile_api_keys_configured: 'API 金鑰已設定',
10224
+ profile_gateway_running: 'Gateway 執行中',
10225
+ profile_gateway_stopped: 'Gateway 已停止',
10226
+ profile_active: '啟用中',
10227
+ profile_no_configuration: '沒有設定',
10228
+ profile_skill_count: (n) => `${n} 個技能`,
10229
+ profile_use: '使用',
10230
+ profile_switch_title: '切換到此設定檔',
10231
+ profile_delete_title: '刪除此設定檔',
10232
+ profile_default_label: '(預設)',
10233
+ profile_name_placeholder: '設定檔名稱(小寫字母、數字、連字號)',
10234
+ profile_clone_label: '從啟用中的設定檔複製設定',
10235
+ profile_model_label: '模型 / 供應商',
10236
+ profile_model_hint: '為這個新設定檔選擇已設定的供應商和模型。',
10237
+ profile_model_use_default: '使用啟用中設定檔的預設值',
10238
+ profile_base_url_placeholder: '基本 URL(選填,例如 http://localhost:11434)',
10239
+ profile_api_key_placeholder: 'API 金鑰(選填)',
10240
+ manage_profiles: '管理設定檔',
10241
+ profiles_load_failed: '載入設定檔失敗',
10242
+ profile_switched_new_conversation: (name) => `已切換至設定檔:${name},並開始新對話`,
10243
+ profile_switched: (name) => `已切換至設定檔:${name}`,
10244
+ profile_name_rule: '僅限小寫字母、數字、連字號和底線',
10245
+ profile_base_url_rule: '基本 URL 必須以 http:// 或 https:// 開頭',
10246
+ profile_created: (name) => `設定檔 ${name} 已建立`,
10247
+ profile_delete_confirm_title: (name) => `刪除設定檔「${name}」?`,
10248
+ profile_delete_confirm_message: '此設定檔的所有對話、設定、技能和記憶將被永久刪除。此操作無法復原。',
10249
+ profile_deleted: (name) => `設定檔 ${name} 已刪除`,
10250
+ active_conversation_none: '未選取使用中的對話。',
10251
+ active_conversation_meta: (title, count) => `${title} · ${count} 則訊息`,
10252
+ settings_unsaved_changes: '有未儲存的變更。',
10253
+ sign_out_failed: '登出失敗:',
10254
+ disable_auth_confirm_title: '停用密碼保護',
10255
+ disable_auth_confirm_message: '任何人都可以存取此執行個體。',
10256
+ auth_disabled: '驗證已停用 — 密碼保護已關閉',
10257
+ disable_auth_failed: '停用驗證失敗:',
10258
+ bg_error_single: (title) => `「${title}」發生錯誤`,
10259
+ bg_error_multi: (count) => `${count} 個對話發生錯誤`,
10260
+ // skill form
10127
10261
  skill_name: '名稱',
10128
10262
  skill_category: '類別',
10129
- skill_category_placeholder: '例如: devops',
10130
- skill_content: '內容',
10131
- skill_content_placeholder: '輸入技能內容...',
10132
- skill_rename_not_supported: '此技能不支援重新命名',
10263
+ skill_category_placeholder: '選填,例如 devops',
10264
+ skill_content: 'SKILL.md 內容',
10265
+ skill_content_placeholder: 'YAML frontmatter + Markdown 內文',
10266
+ skill_rename_not_supported: '不支援重新命名技能。若要重新命名,請建立新技能並刪除舊技能。',
10133
10267
  skill_metadata: '中繼資料',
10134
-
10135
- // Cron labels
10268
+ // cron form
10136
10269
  cron_name_label: '任務名稱',
10270
+ cron_name_placeholder: '選填',
10137
10271
  cron_schedule_label: '排程',
10138
- cron_schedule_hint: "循環任務請用 'every 1h' Cron 表達式。像 '30m' 這樣的裸時長只會執行一次。",
10139
- cron_schedule_once_warning: "像 '30m' 這樣的時長寫法只會執行一次,並在執行後移除。要保留循環任務,請使用 'every 30m'。",
10272
+ cron_schedule_hint: '週期性任務請用「every 1h」或 Cron 表示式。像「30m」這樣的裸時長只會執行一次。',
10273
+ cron_schedule_once_warning: '像「30m」這樣的時長寫法只會執行一次,並在執行後移除。要保留週期性任務,請使用「every 30m」。',
10140
10274
  cron_prompt_label: '提示',
10141
- cron_deliver_label: '發送至',
10142
- cron_deliver_local: '僅本地儲存',
10275
+ cron_deliver_label: '傳送至',
10276
+ cron_deliver_local: '本機(僅儲存輸出)',
10143
10277
  cron_deliver_custom: '自訂推送目標',
10144
10278
  cron_profile_label: '設定檔',
10145
10279
  cron_profile_server_default: '伺服器預設',
10146
10280
  cron_profile_server_default_hint: '執行時使用 WebUI 伺服器預設設定檔。沒有設定檔的既有工作會保留此舊行為。',
10281
+ cron_toast_notifications_label: '完成 toast 通知',
10282
+ cron_toast_notifications_hint: '此排程工作完成時顯示 toast 通知。即使關閉此選項,Tasks 徽章與新執行標記仍會更新。',
10283
+ cron_toast_notifications_enabled: '已啟用',
10284
+ cron_toast_notifications_disabled: '已停用',
10147
10285
  cron_skills_label: '技能',
10148
- cron_skills_placeholder: '選用技能(逗號分隔)',
10149
- cron_skills_edit_hint: '定義要載入的技能',
10150
-
10151
- // Workspace labels
10286
+ cron_skills_placeholder: '新增技能(選填)…',
10287
+ cron_skills_edit_hint: '技能清單建立後無法編輯。',
10288
+ // workspace form
10152
10289
  workspace_name_label: '名稱',
10153
- workspace_name_placeholder: '例如: main-project',
10290
+ workspace_name_placeholder: '選填的顯示名稱',
10154
10291
  workspace_path_label: '路徑',
10155
10292
  workspace_path_required: '工作區路徑為必填',
10156
- workspace_path_readonly: '路徑由環境設定檔決定,無法變更',
10293
+ workspace_path_readonly: '路徑無法變更,只能重新命名。',
10157
10294
  workspace_new_title: '新增工作區',
10158
-
10159
- // Profile labels
10295
+ // profile form
10160
10296
  profile_name_label: '名稱',
10161
10297
  profile_base_url_label: 'Base URL',
10162
10298
  profile_api_key_label: 'API 金鑰',
10299
+ cmd_yolo: '切換 YOLO 模式(略過核准)',
10300
+ yolo_no_session: '無活動工作階段',
10301
+ yolo_enabled: '⚡ YOLO 模式已開啟,將略過所有核准',
10302
+ yolo_disabled: 'YOLO 模式已關閉',
10303
+ yolo_pill_label: 'YOLO',
10304
+ yolo_pill_title_active: 'YOLO 模式已啟用,點選即可關閉',
10305
+ approval_skip_all: '⚡ 本次工作階段全部跳過',
10306
+ approval_skip_all_title: '略過本次工作階段的所有核准提示',
10307
+ // composer action tooltips
10308
+ composer_send: '傳送訊息',
10309
+ composer_queue: '訊息加入佇列',
10310
+ composer_interrupt: '中斷並傳送',
10311
+ composer_steer: '引導目前回應',
10312
+ composer_stop: '停止產生',
10313
+ composer_disabled_clarify: '請回覆上方的澄清要求',
10314
+ composer_disabled_compression: '等待壓縮完成',
10315
+ composer_disabled_empty: '請輸入訊息後傳送',
10316
+ composer_mobile_workspace: '工作區',
10317
+ composer_mobile_model: '模型',
10318
+ composer_mobile_reasoning: '推理',
10319
+ composer_mobile_context: '脈絡',
10163
10320
  media_audio_label: '音訊',
10164
10321
  media_svg_label: '圖表',
10165
10322
  media_video_label: '影片',
10323
+ media_download: '下載',
10166
10324
  csv_loading: '載入 CSV',
10167
10325
  csv_too_large: 'CSV 檔案過大,無法內嵌渲染',
10168
10326
  csv_no_data: 'CSV 檔案資料不足,無法渲染為表格',
@@ -10177,99 +10335,23 @@ const LOCALES = {
10177
10335
  excalidraw_empty: '空圖表',
10178
10336
  excalidraw_render_error: '渲染圖表失敗',
10179
10337
  excalidraw_simplified: '簡化 SVG 預覽 — 與 Excalidraw 畫布不完全相同',
10180
- pdf_loading: '正在載入 PDF {0}…',
10181
- pdf_too_large: 'PDF 檔案過大,無法內嵌預覽',
10182
- pdf_no_pages: '無法渲染 PDF 預覽',
10183
- pdf_error: 'PDF 載入失敗',
10184
- pdf_download: '下載 PDF',
10185
- html_loading: '正在載入 HTML 預覽…',
10186
- html_too_large: 'HTML 檔案過大,無法內嵌預覽',
10187
- html_error: 'HTML 預覽載入失敗',
10188
- html_open_full: '開啟完整頁面',
10189
- html_sandbox_label: 'HTML 預覽',
10190
- // TTS (#499)
10191
- tts_listen: '收聽',
10192
- tts_not_supported: '語音合成無法使用',
10193
- settings_label_tts: '回覆語音合成',
10194
- settings_desc_tts: '在助手訊息上顯示喇叭按鈕',
10195
- settings_label_tts_auto_read: '自動朗讀回覆',
10196
- settings_desc_tts_auto_read: '自動朗讀助手回覆',
10197
- // Composer voice-mode pref (#1488)
10198
- settings_label_voice_mode: 'Hands-free voice mode button', // TODO: translate
10199
- settings_desc_voice_mode: 'Show the voice-mode button (audio waveform) next to the dictation mic. Lets you speak naturally — Hermes auto-sends after a pause and reads replies aloud. Requires a browser that supports both speech recognition and TTS.',
10200
- settings_label_raw_audio: 'Send raw audio instead of transcribing',
10201
- settings_desc_raw_audio: 'Record and send the original audio file to the agent instead of converting it to text first. The agent can then transcribe it or process the raw audio (emotion, background noise, custom STT). Like Telegram\'s voice message behavior.',
10202
- voice_send_raw: 'Send raw audio',
10203
- voice_raw_attached: 'Audio attached. Press Send or type more.', // TODO: translate
10204
- settings_label_tts_voice: '語音',
10205
- settings_desc_tts_voice: '選擇語音合成聲音',
10206
- settings_label_tts_rate: '語速',
10207
- settings_label_tts_pitch: '音調',
10338
+ // ── Checkpoints / Rollback ──
10339
+ checkpoint_title: '檢查點',
10340
+ checkpoint_empty: '此工作區沒有檢查點。',
10341
+ checkpoint_loading: '正在載入檢查點…',
10342
+ checkpoint_error: '載入檢查點失敗',
10343
+ checkpoint_date: '日期',
10344
+ checkpoint_message: '訊息',
10345
+ checkpoint_files: '檔案',
10346
+ checkpoint_view_diff: '檢視差異',
10347
+ checkpoint_restore: '還原',
10348
+ checkpoint_restore_confirm_title: '要還原檢查點嗎?',
10349
+ checkpoint_restore_confirm_message: (ckpt) => `要將工作區還原到檢查點「${ckpt}」嗎?這會用已儲存版本覆寫檔案。此檢查點之後新增的檔案不會被刪除。`,
10350
+ checkpoint_restored: '已還原檢查點',
10351
+ checkpoint_diff_title: '檢查點中的變更',
10352
+ checkpoint_diff_no_changes: '這個檢查點與目前工作區沒有差異。',
10353
+ checkpoint_diff_files_changed: (n) => `已變更 ${n} 個檔案`,
10208
10354
 
10209
- checkpoint_date: 'Date', // TODO: translate
10210
- checkpoint_diff_files_changed: (n) => `${n} file${n === 1 ? '' : 's'} changed`, // TODO: translate
10211
- checkpoint_diff_no_changes: 'No differences found between this checkpoint and the current workspace.', // TODO: translate
10212
- checkpoint_diff_title: 'Changes in checkpoint', // TODO: translate
10213
- checkpoint_empty: 'No checkpoints found for this workspace.', // TODO: translate
10214
- checkpoint_error: 'Failed to load checkpoints', // TODO: translate
10215
- checkpoint_files: 'Files', // TODO: translate
10216
- checkpoint_loading: 'Loading checkpoints…', // TODO: translate
10217
- checkpoint_message: 'Message', // TODO: translate
10218
- checkpoint_restore: 'Restore', // TODO: translate
10219
- checkpoint_restore_confirm_message: (ckpt) => `Restore workspace to checkpoint "${ckpt}"? This will overwrite files with the saved versions. Files added after this checkpoint will not be deleted.`, // TODO: translate
10220
- checkpoint_restore_confirm_title: 'Restore checkpoint?', // TODO: translate
10221
- checkpoint_restored: 'Checkpoint restored', // TODO: translate
10222
- checkpoint_title: 'Checkpoints', // TODO: translate
10223
- checkpoint_view_diff: 'View diff', // TODO: translate
10224
- insights_activity_by_day: 'Activity by Day', // TODO: translate
10225
- insights_activity_by_hour: 'Activity by Hour', // TODO: translate
10226
- insights_cost: 'Estimated Cost', // TODO: translate
10227
- insights_daily_tokens: 'Daily Tokens',
10228
- insights_model_name: 'Model',
10229
- insights_model_sessions: 'Sessions',
10230
- insights_model_tokens: 'Tokens',
10231
- insights_model_cost: 'Cost',
10232
- insights_model_share: 'Share',
10233
- insights_no_usage_data: 'No usage data yet',
10234
- insights_footer: 'Showing data from the last {days} days', // TODO: translate
10235
- insights_skill_usage_title: '技能使用統計',
10236
- insights_skill_usage_sub: '工具調用頻次',
10237
- insights_skill_usage_total: '總調用次數',
10238
- insights_skill_usage_skills_used: '已使用技能',
10239
- insights_skill_usage_no_data: '暫無技能使用數據',
10240
- insights_skill_usage_no_data_hint: '在會話中使用技能後,數據將在此顯示。',
10241
- insights_skill_usage_footer: '數據來源於 ~/.hermes/skills/',
10242
- insights_skill_usage_col_skill: 'Skill', // TODO: translate
10243
- insights_skill_usage_col_uses: 'Uses', // TODO: translate
10244
- insights_skill_usage_col_views: 'Views', // TODO: translate
10245
- insights_skill_usage_col_share: 'Usage %', // TODO: translate
10246
- insights_skill_usage_col_patches: 'Patches', // TODO: translate
10247
- insights_input_tokens: 'Input', // TODO: translate
10248
- insights_messages: 'Messages', // TODO: translate
10249
- insights_models: 'Models', // TODO: translate
10250
- insights_no_cost: 'N/A', // TODO: translate
10251
- insights_output_tokens: 'Output', // TODO: translate
10252
- insights_peak_hour: 'Peak: {hour}', // TODO: translate
10253
- insights_sessions: 'Sessions', // TODO: translate
10254
- insights_title: 'Usage Analytics', // TODO: translate
10255
- insights_token_breakdown: 'Token Breakdown', // TODO: translate
10256
- insights_tokens: 'Tokens', // TODO: translate
10257
- insights_total: 'Total', // TODO: translate
10258
- settings_desc_api_redact: 'Self-hosted users can disable for transparency (not recommended for shared instances).', // TODO: translate
10259
- settings_label_api_redact: 'Redact sensitive data in API responses', // TODO: translate
10260
- voice_error: 'Voice not supported in this browser', // TODO: translate
10261
- voice_listening: 'Listening…', // TODO: translate
10262
- voice_mode_active: 'Voice mode on', // TODO: translate
10263
- voice_mode_off: 'Voice mode off', // TODO: translate
10264
- voice_speaking: 'Speaking…', // TODO: translate
10265
- voice_thinking: 'Thinking…', // TODO: translate
10266
- // Composer voice buttons (#1488)
10267
- voice_dictate: 'Dictate', // TODO: translate
10268
- voice_dictate_active: 'Stop dictation',
10269
- voice_recording_active: '停止錄音', // TODO: translate
10270
- voice_mode_toggle: 'Voice mode', // TODO: translate
10271
- voice_mode_toggle_active: 'Exit voice mode', // TODO: translate
10272
- subagent_children: 'Subagent sessions', // TODO: translate
10273
10355
  },
10274
10356
 
10275
10357
  pt: {
@@ -10582,6 +10664,11 @@ const LOCALES = {
10582
10664
  path_copy_failed: 'Falha ao copiar caminho: ',
10583
10665
  session_rename: 'Renomear conversa',
10584
10666
  session_rename_desc: 'Editar o título desta conversa',
10667
+ session_title_regenerate: 'Regenerar título',
10668
+ session_title_regenerate_desc: 'Peça ao Hermes para gerar um novo título a partir da conversa',
10669
+ session_title_regenerating: 'Regenerando título…',
10670
+ session_title_regenerated: (title) => `Título regenerado: ${title}`,
10671
+ session_title_regenerate_failed: 'Falha ao regenerar o título: ',
10585
10672
  session_copy_link: 'Copiar link da conversa',
10586
10673
  session_copy_link_desc: 'Copia um link direto para esta conversa',
10587
10674
  session_link_copied: 'Link da conversa copiado para a área de transferência',
@@ -10601,6 +10688,8 @@ const LOCALES = {
10601
10688
  empty_dir: '(vazio)',
10602
10689
  upload_failed: 'Falha ao upload: ',
10603
10690
  upload_too_large: (maxMb, fileMb) => `O arquivo é grande demais (${fileMb} MB). O tamanho máximo de upload é ${maxMb} MB.`,
10691
+ uploading: 'Enviando…',
10692
+ uploaded: 'Enviado',
10604
10693
  all_uploads_failed: (n) => `Todos ${n} upload(s) falharam`,
10605
10694
  session_pin: 'Fixar conversa',
10606
10695
  session_unpin: 'Desfixar conversa',
@@ -10696,6 +10785,7 @@ const LOCALES = {
10696
10785
  settings_tab_preferences: 'Preferências',
10697
10786
  settings_tab_plugins: 'Plugins',
10698
10787
  settings_plugins_title: 'Plugins', // TODO: translate
10788
+ plugins_enable_toggle: 'Ativar',
10699
10789
  settings_plugins_meta: 'View installed Hermes plugins and the lifecycle hooks they register. This panel is read-only.', // TODO: translate
10700
10790
  settings_plugins_empty: 'No Hermes plugins are currently visible. Install or enable plugins from the Hermes CLI/config to see them here.', // TODO: translate
10701
10791
  plugins_unnamed: 'Unnamed plugin', // TODO: translate
@@ -11341,6 +11431,8 @@ const LOCALES = {
11341
11431
  settings_desc_tts_voice: 'Selecionar voz para síntese de voz',
11342
11432
  settings_label_tts_rate: 'Velocidade da fala',
11343
11433
  settings_label_tts_pitch: 'Tom da fala',
11434
+ settings_label_tts_engine: 'Motor TTS',
11435
+ settings_desc_tts_engine: 'Escolha o mecanismo de fala. Edge TTS usa vozes neurais da Microsoft através do servidor.',
11344
11436
  checkpoint_date: 'Date', // TODO: translate
11345
11437
  checkpoint_diff_files_changed: (n) => `${n} file${n === 1 ? '' : 's'} changed`, // TODO: translate
11346
11438
  checkpoint_diff_no_changes: 'No differences found between this checkpoint and the current workspace.', // TODO: translate
@@ -11792,6 +11884,11 @@ const LOCALES = {
11792
11884
  path_copy_failed: '경로 복사 실패: ',
11793
11885
  session_rename: '대화 이름 변경',
11794
11886
  session_rename_desc: '이 대화의 제목 편집',
11887
+ session_title_regenerate: '제목 다시 생성',
11888
+ session_title_regenerate_desc: 'Hermes에게 대화에서 새 제목을 생성하도록 요청합니다',
11889
+ session_title_regenerating: '제목 다시 생성 중…',
11890
+ session_title_regenerated: (title) => `제목이 다시 생성됨: ${title}`,
11891
+ session_title_regenerate_failed: '제목 다시 생성 실패: ',
11795
11892
  session_copy_link: '대화 링크 복사',
11796
11893
  session_copy_link_desc: '이 대화로 바로 가는 링크 복사',
11797
11894
  session_link_copied: '대화 링크가 클립보드에 복사되었습니다',
@@ -11812,6 +11909,8 @@ const LOCALES = {
11812
11909
  empty_dir: '(비어 있음)',
11813
11910
  upload_failed: 'Upload failed: ',
11814
11911
  upload_too_large: (maxMb, fileMb) => `File is too large (${fileMb} MB). Maximum upload size is ${maxMb} MB.`,
11912
+ uploading: 'Uploading…',
11913
+ uploaded: 'Uploaded',
11815
11914
  all_uploads_failed: (n) => `All ${n} upload(s) failed`,
11816
11915
  session_pin: 'Pin conversation',
11817
11916
  session_unpin: 'Unpin conversation',
@@ -11911,6 +12010,7 @@ const LOCALES = {
11911
12010
  settings_tab_preferences: '환경설정',
11912
12011
  settings_tab_plugins: '플러그인',
11913
12012
  settings_plugins_title: 'Plugins', // TODO: translate
12013
+ plugins_enable_toggle: '활성화',
11914
12014
  settings_plugins_meta: 'View installed Hermes plugins and the lifecycle hooks they register. This panel is read-only.', // TODO: translate
11915
12015
  settings_plugins_empty: 'No Hermes plugins are currently visible. Install or enable plugins from the Hermes CLI/config to see them here.', // TODO: translate
11916
12016
  plugins_unnamed: 'Unnamed plugin', // TODO: translate
@@ -12607,6 +12707,7 @@ const LOCALES = {
12607
12707
  media_audio_label: '오디오',
12608
12708
  media_svg_label: '다이어그램',
12609
12709
  media_video_label: '비디오',
12710
+ media_download: '다운로드',
12610
12711
  csv_loading: 'CSV 로딩 중',
12611
12712
  csv_too_large: 'CSV 파일이 너무 커서 인라인 렌더링할 수 없습니다',
12612
12713
  csv_no_data: 'CSV 파일에 표시할 데이터가 부족합니다',
@@ -12639,6 +12740,8 @@ const LOCALES = {
12639
12740
  settings_desc_tts_voice: '음성 합성 음성 선택',
12640
12741
  settings_label_tts_rate: '말 속도',
12641
12742
  settings_label_tts_pitch: '말 톤',
12743
+ settings_label_tts_engine: 'TTS 엔진',
12744
+ settings_desc_tts_engine: '음성 엔진을 선택하세요. Edge TTS는 서버를 통해 Microsoft 신경 음성을 사용합니다.',
12642
12745
  checkpoint_date: 'Date', // TODO: translate
12643
12746
  checkpoint_diff_files_changed: (n) => `${n} file${n === 1 ? '' : 's'} changed`, // TODO: translate
12644
12747
  checkpoint_diff_no_changes: 'No differences found between this checkpoint and the current workspace.', // TODO: translate
@@ -12923,6 +13026,7 @@ const LOCALES = {
12923
13026
  theme_usage: 'Utilisation : /theme ',
12924
13027
  theme_set: 'Thème:',
12925
13028
  no_active_session: 'Aucune session active',
13029
+ provider_mismatch_warning: (m,p)=>`«\u00a0${m}\u00a0» pourrait ne pas fonctionner avec votre fournisseur configuré (${p}). Envoyez quand même, ou exécutez \`hermes model\` dans votre terminal pour changer.`,
12926
13030
  cmd_queue: 'Mettre un message en file d\'attente pour le prochain tour',
12927
13031
  cmd_goal: 'Définir ou inspecter un objectif persistant',
12928
13032
  goal_evaluating_progress: 'Évaluer la progression des objectifs…',
@@ -13032,6 +13136,11 @@ const LOCALES = {
13032
13136
  path_copy_failed: 'Échec de la copie du chemin :',
13033
13137
  session_rename: 'Renommer la conversation',
13034
13138
  session_rename_desc: 'Modifier le titre de cette conversation',
13139
+ session_title_regenerate: 'Régénérer le titre',
13140
+ session_title_regenerate_desc: 'Demander à Hermes de générer un nouveau titre à partir de la conversation',
13141
+ session_title_regenerating: 'Régénération du titre…',
13142
+ session_title_regenerated: (title) => `Titre régénéré : ${title}`,
13143
+ session_title_regenerate_failed: 'Échec de la régénération du titre : ',
13035
13144
  session_copy_link: 'Copier le lien de conversation',
13036
13145
  session_copy_link_desc: 'Copier un lien direct vers cette conversation',
13037
13146
  session_link_copied: 'Lien de conversation copié dans le presse-papiers',
@@ -13045,7 +13154,9 @@ const LOCALES = {
13045
13154
  folder_create_failed: 'Échec de la création du dossier :',
13046
13155
  remove_title: 'Retirer',
13047
13156
  empty_dir: '(vide)',
13048
- upload_failed: 'Échec du téléchargement :',
13157
+ upload_failed: 'Échec du téléchargement :',
13158
+ uploading: 'Téléversement…',
13159
+ uploaded: 'Téléversé',
13049
13160
  session_pin: 'Épingler la conversation',
13050
13161
  session_unpin: 'Désépingler la conversation',
13051
13162
  session_pin_desc: 'Gardez cette conversation en haut',
@@ -13140,6 +13251,7 @@ const LOCALES = {
13140
13251
  settings_tab_preferences: 'Préférences',
13141
13252
  settings_tab_plugins: 'Plugins',
13142
13253
  settings_plugins_title: 'Plugins', // TODO: translate
13254
+ plugins_enable_toggle: 'Activer',
13143
13255
  settings_plugins_meta: 'View installed Hermes plugins and the lifecycle hooks they register. This panel is read-only.', // TODO: translate
13144
13256
  settings_plugins_empty: 'No Hermes plugins are currently visible. Install or enable plugins from the Hermes CLI/config to see them here.', // TODO: translate
13145
13257
  plugins_unnamed: 'Unnamed plugin', // TODO: translate
@@ -13397,6 +13509,8 @@ const LOCALES = {
13397
13509
  settings_desc_tts_voice: 'Voix préférée. Rempli à partir des voix disponibles dans votre navigateur.',
13398
13510
  settings_label_tts_rate: 'Taux de parole',
13399
13511
  settings_label_tts_pitch: 'Emplacement du discours',
13512
+ settings_label_tts_engine: 'Moteur TTS',
13513
+ settings_desc_tts_engine: 'Choisissez le moteur de synthèse vocale. Edge TTS utilise les voix neuronales Microsoft via le serveur.',
13400
13514
  settings_label_notifications: 'Notifications du navigateur',
13401
13515
  settings_desc_notifications: 'Afficher une notification système lorsqu\'une réponse est terminée alors que l\'application est en arrière-plan.',
13402
13516
  settings_desc_token_usage: 'Affiche le nombre de jetons d’entrée/sortie sous chaque réponse de l’assistant. Également basculé avec /usage.',
@@ -13822,6 +13936,7 @@ const LOCALES = {
13822
13936
  media_audio_label: 'Audio',
13823
13937
  media_svg_label: 'Diagramme',
13824
13938
  media_video_label: 'Vidéo',
13939
+ media_download: 'Télécharger',
13825
13940
  csv_loading: 'Chargement du fichier CSV',
13826
13941
  csv_too_large: 'Fichier CSV trop volumineux pour le rendu en ligne',
13827
13942
  csv_no_data: 'Le fichier CSV ne contient pas suffisamment de données pour être affiché sous forme de tableau',
@@ -14352,6 +14467,11 @@ const LOCALES = {
14352
14467
  path_copy_failed: 'Yol kopyalanamadı:',
14353
14468
  session_rename: 'Konuşmayı yeniden adlandır',
14354
14469
  session_rename_desc: 'Bu görüşmenin başlığını düzenleyin',
14470
+ session_title_regenerate: 'Başlığı yeniden oluştur',
14471
+ session_title_regenerate_desc: 'Hermes\'ten görüşmeden yeni bir başlık oluşturmasını iste',
14472
+ session_title_regenerating: 'Başlık yeniden oluşturuluyor…',
14473
+ session_title_regenerated: (title) => `Başlık yeniden oluşturuldu: ${title}`,
14474
+ session_title_regenerate_failed: 'Başlık yeniden oluşturma başarısız: ',
14355
14475
  session_copy_link: 'Konuşma bağlantısını kopyala',
14356
14476
  session_copy_link_desc: 'Bu konuşmaya doğrudan bağlantı kopyala',
14357
14477
  session_link_copied: 'Konuşma bağlantısı panoya kopyalandı',
@@ -14372,6 +14492,8 @@ const LOCALES = {
14372
14492
  empty_dir: '(boş)',
14373
14493
  upload_failed: 'Yükleme başarısız oldu:',
14374
14494
  upload_too_large: (maxMb, fileMb) => `Dosya çok büyük (${fileMb} MB). Maksimum yükleme boyutu ${maxMb} MB'tır.`,
14495
+ uploading: 'Yükleniyor…',
14496
+ uploaded: 'Yüklendi',
14375
14497
  all_uploads_failed: (n) => `${n} yüklemenin tümü başarısız oldu`,
14376
14498
  session_pin: 'Görüşmeyi sabitle',
14377
14499
  session_unpin: 'Görüşmenin sabitlemesini kaldır',
@@ -14471,6 +14593,7 @@ const LOCALES = {
14471
14593
  settings_tab_preferences: 'Tercihler',
14472
14594
  settings_tab_plugins: 'Eklentiler',
14473
14595
  settings_plugins_title: 'Eklentiler',
14596
+ plugins_enable_toggle: 'Etkinleştir',
14474
14597
  settings_plugins_meta: 'Yüklü Hermes eklentilerini ve yaşam döngüsü kancalarını görüntüleyin. Bu panel salt okunurdur.',
14475
14598
  settings_plugins_empty: 'Görünür Hermes eklentisi yok. Burada görmek için Hermes CLI/config üzerinden yükleyin veya etkinleştirin.',
14476
14599
  plugins_unnamed: 'Adsız eklenti',
@@ -15165,6 +15288,7 @@ const LOCALES = {
15165
15288
  media_audio_label: 'Ses',
15166
15289
  media_svg_label: 'Diyagram',
15167
15290
  media_video_label: 'Video',
15291
+ media_download: 'İndir',
15168
15292
  csv_loading: 'CSV yükleniyor',
15169
15293
  csv_too_large: 'CSV dosyası satır içi oluşturma için çok büyük',
15170
15294
  csv_no_data: 'CSV dosyasında tablo olarak oluşturmak için yeterli veri yok',
@@ -15197,6 +15321,8 @@ const LOCALES = {
15197
15321
  settings_desc_tts_voice: 'Ses sentezi sesini seçin',
15198
15322
  settings_label_tts_rate: 'Konuşma hızı',
15199
15323
  settings_label_tts_pitch: 'Konuşma perdesi',
15324
+ settings_label_tts_engine: 'TTS Motoru',
15325
+ settings_desc_tts_engine: 'Ses motorunu seçin. Edge TTS, sunucu üzerinden Microsoft sinirsel seslerini kullanır.',
15200
15326
  checkpoint_date: 'Tarih',
15201
15327
  checkpoint_diff_files_changed: (n) => `${n} dosya değişti`,
15202
15328
  checkpoint_diff_no_changes: 'Bu kontrol noktası ile mevcut çalışma alanı arasında fark bulunamadı.',