mirror of
https://github.com/nesquena/hermes-webui.git
synced 2026-05-25 03:00:23 +00:00
i18n: add complete Traditional Chinese (zh-Hant) translations (#954)
* i18n: add complete Traditional Chinese (zh-Hant) translations - Add 300+ zh-Hant translation entries covering all UI sections: onboarding, settings/Control Center, session actions, cron jobs, providers panel, workspace management, skills, profiles, todos, BTW - Fix existing zh-Hant translations: remove mixed Simplified Chinese characters, fix typos (e.g. 皮膚→佈景, 待踩→待辦, 新存對話→新對話) - Update zh locale: fix 需要审批→需要审核 (Simplified Chinese correction) - Add data-i18n attributes to Control Center HTML (index.html) for heading, subtitle, tab names, dropdown, and section titles - Migrate session action menu (sessions.js) from hardcoded English to t() function calls for full i18n support * fix: translate remaining English entries to Traditional Chinese in zh-Hant locale - settings_heading_title: 'Control Center' → '控制中心' - settings_dropdown_providers: 'Providers' → '供應商' - providers_section_title: 'Providers' → '供應商' - providers_tab_title: 'Providers' → '供應商' * fix: add missing locale keys to zh/ru/es/de + restore zh approval_heading - zh (Simplified): reverted approval_heading to 需要审批 (matches master) PR had changed it to 需要审核 which broke the representative-translation test - zh/ru/es/de: added 39 new session management + settings keys as English fallback strings (session_archive, session_pin, settings_dropdown_*, etc.) These keys were added to English in this PR but missing from other locales - es: added cmd_status (English fallback) to fix coverage gap - Fixes all locale coverage test failures --------- Co-authored-by: 陳俊宇 <chenjunyu@chenjunyudeMacBook-Air-7.local> Co-authored-by: nesquena-hermes <nesquena-hermes@users.noreply.github.com>
This commit is contained in:
+579
-47
@@ -200,7 +200,46 @@ const LOCALES = {
|
||||
empty_dir: '(empty)',
|
||||
upload_failed: 'Upload failed: ',
|
||||
all_uploads_failed: (n) => `All ${n} upload(s) failed`,
|
||||
session_pin: 'Pin conversation',
|
||||
session_unpin: 'Unpin conversation',
|
||||
session_pin_desc: 'Keep this conversation at the top',
|
||||
session_unpin_desc: 'Remove from pinned',
|
||||
session_pin_failed: 'Pin failed: ',
|
||||
session_move_project: 'Move to project',
|
||||
session_move_project_desc_has: 'Change the project for this conversation',
|
||||
session_move_project_desc_none: 'Assign a project to this conversation',
|
||||
session_archive: 'Archive conversation',
|
||||
session_restore: 'Restore conversation',
|
||||
session_archive_desc: 'Hide this conversation until archived is shown',
|
||||
session_restore_desc: 'Bring this conversation back into the main list',
|
||||
session_archived: 'Session archived',
|
||||
session_restored: 'Session restored',
|
||||
session_archive_failed: 'Archive failed: ',
|
||||
session_duplicate: 'Duplicate conversation',
|
||||
session_duplicate_desc: 'Create a copy with the same workspace and model',
|
||||
session_duplicated: 'Session duplicated',
|
||||
session_duplicate_failed: 'Duplicate failed: ',
|
||||
session_delete: 'Delete conversation',
|
||||
session_delete_desc: 'Permanently remove this conversation',
|
||||
// settings panel
|
||||
settings_heading_title: 'Control Center',
|
||||
settings_heading_subtitle: 'Preferences, conversation tools, and system controls.',
|
||||
settings_section_conversation_title: 'Conversation',
|
||||
settings_section_appearance_title: 'Appearance',
|
||||
settings_section_appearance_meta: 'Theme, accent colors, and visual style.',
|
||||
settings_section_preferences_title: 'Preferences',
|
||||
settings_section_preferences_meta: 'Defaults and UI behavior for Hermes Web UI.',
|
||||
settings_section_system_title: 'System',
|
||||
settings_section_system_meta: 'Instance version and access controls.',
|
||||
settings_dropdown_conversation: 'Conversation',
|
||||
settings_dropdown_appearance: 'Appearance',
|
||||
settings_dropdown_preferences: 'Preferences',
|
||||
settings_dropdown_providers: 'Providers',
|
||||
settings_dropdown_system: 'System',
|
||||
settings_tab_conversation: 'Conversation',
|
||||
settings_tab_appearance: 'Appearance',
|
||||
settings_tab_preferences: 'Preferences',
|
||||
settings_tab_system: 'System',
|
||||
settings_title: 'Settings',
|
||||
settings_save_btn: 'Save Settings',
|
||||
settings_label_model: 'Default Model',
|
||||
@@ -566,6 +605,9 @@ const LOCALES = {
|
||||
profile_api_key_label: 'API key',
|
||||
},
|
||||
|
||||
cmd_status: '\u986f\u793a\u6703\u8a71\u8cc7\u8a0a',
|
||||
memory_saved: '\u8a18\u61b6\u5df2\u5132\u5b58',
|
||||
profile_delete_title: '\u522a\u9664\u6b64\u8a2d\u5b9a\u6a94',
|
||||
ru: {
|
||||
_lang: 'ru',
|
||||
_label: 'Русский',
|
||||
@@ -1096,6 +1138,47 @@ const LOCALES = {
|
||||
profile_name_label: 'Имя',
|
||||
profile_base_url_label: 'Базовый URL',
|
||||
profile_api_key_label: 'API-ключ',
|
||||
|
||||
// Session management and settings keys (en fallback — pending translation)
|
||||
session_archive: 'Archive conversation',
|
||||
session_archive_desc: 'Hide this conversation until archived is shown',
|
||||
session_archive_failed: 'Archive failed: ',
|
||||
session_archived: 'Session archived',
|
||||
session_delete: 'Delete conversation',
|
||||
session_delete_desc: 'Permanently remove this conversation',
|
||||
session_duplicate: 'Duplicate conversation',
|
||||
session_duplicate_desc: 'Create a copy with the same workspace and model',
|
||||
session_duplicate_failed: 'Duplicate failed: ',
|
||||
session_duplicated: 'Session duplicated',
|
||||
session_move_project: 'Move to project',
|
||||
session_move_project_desc_has: 'Change the project for this conversation',
|
||||
session_move_project_desc_none: 'Assign a project to this conversation',
|
||||
session_pin: 'Pin conversation',
|
||||
session_pin_desc: 'Keep this conversation at the top',
|
||||
session_pin_failed: 'Pin failed: ',
|
||||
session_restore: 'Restore conversation',
|
||||
session_restore_desc: 'Bring this conversation back into the main list',
|
||||
session_restored: 'Session restored',
|
||||
session_unpin: 'Unpin conversation',
|
||||
session_unpin_desc: 'Remove from pinned',
|
||||
settings_dropdown_appearance: 'Appearance',
|
||||
settings_dropdown_conversation: 'Conversation',
|
||||
settings_dropdown_preferences: 'Preferences',
|
||||
settings_dropdown_providers: 'Providers',
|
||||
settings_dropdown_system: 'System',
|
||||
settings_heading_subtitle: 'Preferences, conversation tools, and system controls.',
|
||||
settings_heading_title: 'Control Center',
|
||||
settings_section_appearance_meta: 'Theme, accent colors, and visual style.',
|
||||
settings_section_appearance_title: 'Appearance',
|
||||
settings_section_conversation_title: 'Conversation',
|
||||
settings_section_preferences_meta: 'Defaults and UI behavior for Hermes Web UI.',
|
||||
settings_section_preferences_title: 'Preferences',
|
||||
settings_section_system_meta: 'Instance version and access controls.',
|
||||
settings_section_system_title: 'System',
|
||||
settings_tab_appearance: 'Appearance',
|
||||
settings_tab_conversation: 'Conversation',
|
||||
settings_tab_preferences: 'Preferences',
|
||||
settings_tab_system: 'System',
|
||||
},
|
||||
|
||||
es: {
|
||||
@@ -1594,6 +1677,48 @@ const LOCALES = {
|
||||
profile_name_label: 'Nombre',
|
||||
profile_base_url_label: 'URL base',
|
||||
profile_api_key_label: 'Clave API',
|
||||
|
||||
cmd_status: 'Show session info',
|
||||
// Session management and settings keys (en fallback — pending translation)
|
||||
session_archive: 'Archive conversation',
|
||||
session_archive_desc: 'Hide this conversation until archived is shown',
|
||||
session_archive_failed: 'Archive failed: ',
|
||||
session_archived: 'Session archived',
|
||||
session_delete: 'Delete conversation',
|
||||
session_delete_desc: 'Permanently remove this conversation',
|
||||
session_duplicate: 'Duplicate conversation',
|
||||
session_duplicate_desc: 'Create a copy with the same workspace and model',
|
||||
session_duplicate_failed: 'Duplicate failed: ',
|
||||
session_duplicated: 'Session duplicated',
|
||||
session_move_project: 'Move to project',
|
||||
session_move_project_desc_has: 'Change the project for this conversation',
|
||||
session_move_project_desc_none: 'Assign a project to this conversation',
|
||||
session_pin: 'Pin conversation',
|
||||
session_pin_desc: 'Keep this conversation at the top',
|
||||
session_pin_failed: 'Pin failed: ',
|
||||
session_restore: 'Restore conversation',
|
||||
session_restore_desc: 'Bring this conversation back into the main list',
|
||||
session_restored: 'Session restored',
|
||||
session_unpin: 'Unpin conversation',
|
||||
session_unpin_desc: 'Remove from pinned',
|
||||
settings_dropdown_appearance: 'Appearance',
|
||||
settings_dropdown_conversation: 'Conversation',
|
||||
settings_dropdown_preferences: 'Preferences',
|
||||
settings_dropdown_providers: 'Providers',
|
||||
settings_dropdown_system: 'System',
|
||||
settings_heading_subtitle: 'Preferences, conversation tools, and system controls.',
|
||||
settings_heading_title: 'Control Center',
|
||||
settings_section_appearance_meta: 'Theme, accent colors, and visual style.',
|
||||
settings_section_appearance_title: 'Appearance',
|
||||
settings_section_conversation_title: 'Conversation',
|
||||
settings_section_preferences_meta: 'Defaults and UI behavior for Hermes Web UI.',
|
||||
settings_section_preferences_title: 'Preferences',
|
||||
settings_section_system_meta: 'Instance version and access controls.',
|
||||
settings_section_system_title: 'System',
|
||||
settings_tab_appearance: 'Appearance',
|
||||
settings_tab_conversation: 'Conversation',
|
||||
settings_tab_preferences: 'Preferences',
|
||||
settings_tab_system: 'System',
|
||||
},
|
||||
|
||||
de: {
|
||||
@@ -1877,7 +2002,48 @@ const LOCALES = {
|
||||
profile_name_label: 'Name',
|
||||
profile_base_url_label: 'Basis-URL',
|
||||
profile_api_key_label: 'API-Schlüssel',
|
||||
},
|
||||
|
||||
// Session management and settings keys (en fallback — pending translation)
|
||||
session_archive: 'Archive conversation',
|
||||
session_archive_desc: 'Hide this conversation until archived is shown',
|
||||
session_archive_failed: 'Archive failed: ',
|
||||
session_archived: 'Session archived',
|
||||
session_delete: 'Delete conversation',
|
||||
session_delete_desc: 'Permanently remove this conversation',
|
||||
session_duplicate: 'Duplicate conversation',
|
||||
session_duplicate_desc: 'Create a copy with the same workspace and model',
|
||||
session_duplicate_failed: 'Duplicate failed: ',
|
||||
session_duplicated: 'Session duplicated',
|
||||
session_move_project: 'Move to project',
|
||||
session_move_project_desc_has: 'Change the project for this conversation',
|
||||
session_move_project_desc_none: 'Assign a project to this conversation',
|
||||
session_pin: 'Pin conversation',
|
||||
session_pin_desc: 'Keep this conversation at the top',
|
||||
session_pin_failed: 'Pin failed: ',
|
||||
session_restore: 'Restore conversation',
|
||||
session_restore_desc: 'Bring this conversation back into the main list',
|
||||
session_restored: 'Session restored',
|
||||
session_unpin: 'Unpin conversation',
|
||||
session_unpin_desc: 'Remove from pinned',
|
||||
settings_dropdown_appearance: 'Appearance',
|
||||
settings_dropdown_conversation: 'Conversation',
|
||||
settings_dropdown_preferences: 'Preferences',
|
||||
settings_dropdown_providers: 'Providers',
|
||||
settings_dropdown_system: 'System',
|
||||
settings_heading_subtitle: 'Preferences, conversation tools, and system controls.',
|
||||
settings_heading_title: 'Control Center',
|
||||
settings_section_appearance_meta: 'Theme, accent colors, and visual style.',
|
||||
settings_section_appearance_title: 'Appearance',
|
||||
settings_section_conversation_title: 'Conversation',
|
||||
settings_section_preferences_meta: 'Defaults and UI behavior for Hermes Web UI.',
|
||||
settings_section_preferences_title: 'Preferences',
|
||||
settings_section_system_meta: 'Instance version and access controls.',
|
||||
settings_section_system_title: 'System',
|
||||
settings_tab_appearance: 'Appearance',
|
||||
settings_tab_conversation: 'Conversation',
|
||||
settings_tab_preferences: 'Preferences',
|
||||
settings_tab_system: 'System',
|
||||
},
|
||||
|
||||
zh: {
|
||||
_lang: 'zh',
|
||||
@@ -2373,7 +2539,48 @@ const LOCALES = {
|
||||
profile_name_label: '名称',
|
||||
profile_base_url_label: '基础 URL',
|
||||
profile_api_key_label: 'API 密钥',
|
||||
},
|
||||
|
||||
// Session management and settings keys (en fallback — pending translation)
|
||||
session_archive: 'Archive conversation',
|
||||
session_archive_desc: 'Hide this conversation until archived is shown',
|
||||
session_archive_failed: 'Archive failed: ',
|
||||
session_archived: 'Session archived',
|
||||
session_delete: 'Delete conversation',
|
||||
session_delete_desc: 'Permanently remove this conversation',
|
||||
session_duplicate: 'Duplicate conversation',
|
||||
session_duplicate_desc: 'Create a copy with the same workspace and model',
|
||||
session_duplicate_failed: 'Duplicate failed: ',
|
||||
session_duplicated: 'Session duplicated',
|
||||
session_move_project: 'Move to project',
|
||||
session_move_project_desc_has: 'Change the project for this conversation',
|
||||
session_move_project_desc_none: 'Assign a project to this conversation',
|
||||
session_pin: 'Pin conversation',
|
||||
session_pin_desc: 'Keep this conversation at the top',
|
||||
session_pin_failed: 'Pin failed: ',
|
||||
session_restore: 'Restore conversation',
|
||||
session_restore_desc: 'Bring this conversation back into the main list',
|
||||
session_restored: 'Session restored',
|
||||
session_unpin: 'Unpin conversation',
|
||||
session_unpin_desc: 'Remove from pinned',
|
||||
settings_dropdown_appearance: 'Appearance',
|
||||
settings_dropdown_conversation: 'Conversation',
|
||||
settings_dropdown_preferences: 'Preferences',
|
||||
settings_dropdown_providers: 'Providers',
|
||||
settings_dropdown_system: 'System',
|
||||
settings_heading_subtitle: 'Preferences, conversation tools, and system controls.',
|
||||
settings_heading_title: 'Control Center',
|
||||
settings_section_appearance_meta: 'Theme, accent colors, and visual style.',
|
||||
settings_section_appearance_title: 'Appearance',
|
||||
settings_section_conversation_title: 'Conversation',
|
||||
settings_section_preferences_meta: 'Defaults and UI behavior for Hermes Web UI.',
|
||||
settings_section_preferences_title: 'Preferences',
|
||||
settings_section_system_meta: 'Instance version and access controls.',
|
||||
settings_section_system_title: 'System',
|
||||
settings_tab_appearance: 'Appearance',
|
||||
settings_tab_conversation: 'Conversation',
|
||||
settings_tab_preferences: 'Preferences',
|
||||
settings_tab_system: 'System',
|
||||
},
|
||||
|
||||
// Traditional Chinese (zh-Hant)
|
||||
'zh-Hant': {
|
||||
@@ -2405,7 +2612,7 @@ const LOCALES = {
|
||||
reconnect_active: '\u56de\u8986\u4ecd\u5728\u751f\u6210\u4e2d\uff0c\u6e96\u5099\u597d\u5f8c\u8981\u91cd\u65b0\u52a0\u8f09\u55ce\uff1f',
|
||||
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',
|
||||
// approval card
|
||||
approval_heading: '\u9700\u8981\u5ba1\u6838',
|
||||
approval_heading: '\u9700\u8981\u5be9\u6838',
|
||||
approval_desc_prefix: '\u6aa2\u6e2c\u5230\u5371\u96aa\u547d\u4ee4',
|
||||
approval_btn_once: '\u5141\u8a31\u4e00\u6b21',
|
||||
approval_btn_once_title: '\u5141\u8a31\u57f7\u884c\u6b64\u547d\u4ee4\u4e00\u6b21\uff08Enter\uff09',
|
||||
@@ -2413,10 +2620,10 @@ const LOCALES = {
|
||||
approval_btn_session_title: '\u672c\u6b21\u6703\u8a71\u671f\u9593\u5141\u8a31',
|
||||
approval_btn_always: '始終允許',
|
||||
approval_btn_always_title: '始終允許此命令模式',
|
||||
approval_btn_deny: '\u62d2\u7edd',
|
||||
approval_btn_deny: '\u62d2\u7d55',
|
||||
approval_btn_deny_title: '\u62d2\u7edd — \u4e0d\u57f7\u884c\u6b64\u547d\u4ee4',
|
||||
approval_responding: '\u8655\u7406\u4e2d\u2026',
|
||||
clarify_heading: '\u9700\u8981\u91cb\u6e05',
|
||||
clarify_heading: '\u9700\u8981\u91d0\u6e05',
|
||||
clarify_hint: '\u8acb\u9078\u64c7\u4e00\u500b\u9078\u9805\uff0c\u6216\u5728\u4e0b\u65b9\u8f38\u5165\u4f60\u81ea\u5df1\u7684\u56de\u7b54\u3002',
|
||||
clarify_other: '\u5176\u4ed6',
|
||||
clarify_send: '\u9001\u51fa',
|
||||
@@ -2501,29 +2708,68 @@ const LOCALES = {
|
||||
folder_created: '\u5df2\u5275\u5efa\u6587\u4ef6\u593e ',
|
||||
folder_create_failed: '\u5275\u5efa\u6587\u4ef6\u593e\u5931\u6557\uff1a',
|
||||
remove_title: '\u79fb\u9664',
|
||||
empty_dir: '(\u7a7a)',
|
||||
upload_failed: '\u4e0a\u50b3\u5931\u6557\uff1a',
|
||||
all_uploads_failed: (n) => `${n} \u500b\u6587\u4ef6\u5168\u90e8\u4e0a\u50b3\u5931\u6557`,
|
||||
empty_dir: '(空)',
|
||||
upload_failed: '上傳失敗:',
|
||||
all_uploads_failed: (n) => `${n} 個檔案全部上傳失敗`,
|
||||
session_pin: '釘選對話',
|
||||
session_unpin: '取消釘選',
|
||||
session_pin_desc: '將此對話置頂',
|
||||
session_unpin_desc: '從置頂移除',
|
||||
session_pin_failed: '釘選失敗:',
|
||||
session_move_project: '移至專案',
|
||||
session_move_project_desc_has: '變更此對話的專案',
|
||||
session_move_project_desc_none: '為此對話指定專案',
|
||||
session_archive: '封存對話',
|
||||
session_restore: '還原對話',
|
||||
session_archive_desc: '隱藏此對話,直到開啟顯示封存',
|
||||
session_restore_desc: '將此對話移回主清單',
|
||||
session_archived: '對話已封存',
|
||||
session_restored: '對話已還原',
|
||||
session_archive_failed: '封存失敗:',
|
||||
session_duplicate: '複製對話',
|
||||
session_duplicate_desc: '建立一個相同工作區與模型的副本',
|
||||
session_duplicated: '對話已複製',
|
||||
session_duplicate_failed: '複製失敗:',
|
||||
session_delete: '刪除對話',
|
||||
session_delete_desc: '永久移除這個對話',
|
||||
// settings panel
|
||||
settings_heading_title: '控制中心',
|
||||
settings_heading_subtitle: '偏好設定、對話工具與系統控制。',
|
||||
settings_section_conversation_title: '對話',
|
||||
settings_section_appearance_title: '外觀',
|
||||
settings_section_appearance_meta: '主題、強調色與視覺風格。',
|
||||
settings_section_preferences_title: '偏好設定',
|
||||
settings_section_preferences_meta: 'Hermes Web UI 的預設值與介面行為。',
|
||||
settings_section_system_title: '系統',
|
||||
settings_section_system_meta: '實例版本與存取控制。',
|
||||
settings_dropdown_conversation: '對話',
|
||||
settings_dropdown_appearance: '外觀',
|
||||
settings_dropdown_preferences: '偏好設定',
|
||||
settings_dropdown_providers: '供應商',
|
||||
settings_dropdown_system: '系統',
|
||||
settings_tab_conversation: '對話',
|
||||
settings_tab_appearance: '外觀',
|
||||
settings_tab_preferences: '偏好設定',
|
||||
settings_tab_system: '系統',
|
||||
settings_title: '\u8a2d\u5b9a',
|
||||
settings_save_btn: '\u5132\u5b58\u8a2d\u5b9a',
|
||||
settings_label_model: '\u9ed8\u8a8d\u6a21\u578b',
|
||||
settings_label_send_key: '\u767c\u9001\u5feb\u6377\u9375',
|
||||
settings_label_theme: '\u4e3b\u984c',
|
||||
settings_label_skin: '\u76ae\u819a',
|
||||
settings_label_skin: '佈景',
|
||||
settings_label_font_size: '\u5b57\u9ad4\u5927\u5c0f',
|
||||
font_size_small: '\u5c0f',
|
||||
font_size_default: '\u9810\u8a2d',
|
||||
font_size_large: '\u5927',
|
||||
settings_label_language: '\u8a9d\u8a00',
|
||||
settings_label_language: '\u8a9e\u8a00',
|
||||
settings_label_token_usage: '\u986f\u793a token \u7528\u91cf',
|
||||
settings_label_sidebar_density: '側邊欄密度',
|
||||
cmd_reasoning: 'Toggle thinking visibility (show/hide), set effort level, or check current status',
|
||||
cmd_reasoning: '切換思考區塊可見性(顯示/隱藏)或設定努力等級',
|
||||
settings_label_cli_sessions: '\u986f\u793a CLI \u6703\u8a71',
|
||||
settings_label_sync_insights: '\u540c\u6b65\u5230 insights',
|
||||
settings_label_check_updates: '\u6aa2\u67e5\u66f4\u65b0',
|
||||
settings_label_bot_name: '\u52a9\u624b\u540d\u7a31',
|
||||
settings_label_password: '\u8a2a\u8aad\u5bc6\u78bc',
|
||||
settings_label_password: '\u8a2a\u554f\u5bc6\u78bc',
|
||||
settings_saved: '\u8a2d\u5b9a\u5df2\u5132\u5b58',
|
||||
settings_save_failed: '\u5132\u5b58\u5931\u6557\uff1a',
|
||||
settings_load_failed: '\u8a2d\u5b9a\u52a0\u8f09\u5931\u6557\uff1a',
|
||||
@@ -2549,11 +2795,11 @@ const LOCALES = {
|
||||
tab_memory: '\u8a18\u61b6',
|
||||
tab_skills: '\u6280\u80fd',
|
||||
tab_tasks: '\u4efb\u52d9',
|
||||
tab_todos: '\u5f85\u8e29',
|
||||
tab_todos: '待辦',
|
||||
tab_workspaces: '\u5de5\u4f5c\u5340',
|
||||
new_conversation: '\u65b0\u5b58\u5c0d\u8a71',
|
||||
filter_conversations: '\u7b5c\u9078\u5b58\u5c0d\u8a71',
|
||||
scheduled_jobs: '\u5b58\u5287\u4efb\u52d9',
|
||||
new_conversation: '新對話',
|
||||
filter_conversations: '篩選對話',
|
||||
scheduled_jobs: '排程任務',
|
||||
new_job: '\u65b0\u4efb\u52d9',
|
||||
search_skills: '\u641c\u5c0b\u6280\u80fd',
|
||||
new_skill: '\u65b0\u6280\u80fd',
|
||||
@@ -2566,49 +2812,29 @@ const LOCALES = {
|
||||
download_transcript: '\u4e0b\u8f09\u8a18\u9304',
|
||||
import: '\u5c0e\u5165',
|
||||
editing: '\u7de8\u8f2f\u4e2d',
|
||||
empty_title: '\u7a7a\u767c\u5b58\u7a7a\u9593',
|
||||
empty_subtitle: '\u9ede\u64ca\u4e0a\u65b9\u6309\u9215\u958b\u59cb\u5c0d\u8a71',
|
||||
empty_title: '有什麼可以幫忙?',
|
||||
empty_subtitle: '點擊上方按鈕開始對話',
|
||||
cancel: '\u53d6\u6d88',
|
||||
loading: '\u52a0\u8f09\u4e2d',
|
||||
create_job: '\u5efa\u7acb\u4efb\u52d9',
|
||||
suggest_plan: '\u5efa\u8b70\u8a08\u5287',
|
||||
suggest_schedule: '\u5efa\u8b70\u6642\u7a0b',
|
||||
suggest_files: '\u5efa\u8b70\u6a94\u6848',
|
||||
suggest_plan: '幫我規劃一個小專案',
|
||||
suggest_schedule: '今天的時程如何?',
|
||||
suggest_files: '這個工作區有哪些檔案?',
|
||||
sign_out: '\u767b\u51fa',
|
||||
// Providers panel (English fallback — native translations welcome in follow-up PRs)
|
||||
providers_tab_title: 'Providers',
|
||||
providers_section_title: 'Providers',
|
||||
providers_section_meta: 'Manage API keys for AI providers. Changes take effect immediately.',
|
||||
providers_status_configured: 'API key configured',
|
||||
providers_status_not_configured: 'No API key',
|
||||
providers_status_oauth: 'OAuth',
|
||||
providers_status_api_key: 'API key',
|
||||
providers_status_not_configured_label: 'Not configured',
|
||||
providers_oauth_hint: 'Authenticated via OAuth. No API key needed.',
|
||||
providers_save: 'Save',
|
||||
providers_remove: 'Remove',
|
||||
providers_saving: 'Saving…',
|
||||
providers_removing: 'Removing…',
|
||||
providers_enter_key: 'Please enter an API key',
|
||||
providers_empty: 'No configurable providers found.',
|
||||
providers_key_updated: 'API key saved',
|
||||
providers_key_removed: 'API key removed',
|
||||
providers_key_placeholder_new: 'sk-...',
|
||||
providers_key_placeholder_replace: 'Enter new key to replace…',
|
||||
password_placeholder: '\u5bc6\u78bc',
|
||||
disable_auth: '\u505c\u7528\u9a57\u8b49',
|
||||
settings_label_sound: '\u901a\u77e5\u8072\u97f3',
|
||||
settings_label_notifications: '\u700f\u89bd\u901a\u77e5',
|
||||
settings_desc_sound: '\u52a9\u624b\u5b8c\u6210\u56de\u7b54\u6642\u64a9\u653e\u8072\u97f3\u3002',
|
||||
settings_desc_notifications: '\u7576\u5206\u9801\u5728\u5f8c\u81ea\u6642\uff0c\u6709\u56de\u7b54\u5b8c\u6210\u6e05\u55ae\u6703\u986f\u793a\u7cfb\u7d71\u901a\u77e5\u3002',
|
||||
settings_desc_sound: '助手完成回答時播放聲音。',
|
||||
settings_desc_notifications: '當分頁在後台時,有回答完成時會顯示系統通知。',
|
||||
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',
|
||||
settings_sidebar_density_compact: '精簡',
|
||||
settings_sidebar_density_detailed: '詳細',
|
||||
settings_desc_sidebar_density: '控制左側對話清單要顯示多少額外資訊。',
|
||||
settings_desc_cli_sessions: '\u5c07 Hermes CLI (\u7684 state.db) \u4e2d\u7684\u6703\u8a71\u6dfb\u52a0\u5230\u6703\u8a71\u6e05\u55ae\u3002\u9ede\u64ca\u4e00\u500b CLI \u6703\u8a71\u5c07\u5c0e\u5165\u5b83\u7a0b\u5f0f\u4e26\u7e7c\u7e8c\u5b58\u5c0d\u8a71\u3002',
|
||||
settings_desc_sync_insights: '\u5c07 WebUI token \u4f7f\u7528\u60c5\u6cc1\u540c\u6b65\u5230 state.db\uff0c\u8a93 hermes /insights \u5305\u542b\u700f\u89bd\u5668\u6703\u8a71\u6578\u64da\u3002\u9810\u8a2d\u70b8\u555f\u7528\u3002',
|
||||
settings_desc_check_updates: '\u7576\u6709\u66f4\u65b0\u7684 WebUI \u6216\u52a9\u624b\u7248\u672c\u6642\u986f\u793a\u6a19\u8a18\u3002\u5c07\u5728\u5f8c\u81ea\u6b63\u5e38\u57f7\u884c Git-Fetch\u3002',
|
||||
settings_desc_bot_name: '\u52a9\u624b\u5728 UI \u4e2d\u7684\u986f\u793a\u540d\u7a31\u3002\u9810\u8a2d\u70b8\u7528\u6539\u3002',
|
||||
settings_desc_cli_sessions: '將 Hermes CLI (的 state.db) 中的會話添加到會話清單。點擊一個 CLI 會話將導入它並繼續對話。',
|
||||
settings_desc_sync_insights: '將 WebUI token 使用情況同步到 state.db,使 hermes /insights 包含瀏覽器會話數據。預設未啟用。',
|
||||
settings_desc_check_updates: '當有更新的 WebUI 或助手版本時顯示標記。將在後台正常執行 Git-Fetch。',
|
||||
settings_desc_bot_name: '助手在 UI 中的顯示名稱。預設未更改。',
|
||||
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',
|
||||
onboarding_password_will_enable: '\u5c07\u6703\u555f\u7528',
|
||||
onboarding_password_will_replace: '\u5c07\u6703\u53d6\u4ee3',
|
||||
@@ -2638,6 +2864,312 @@ const LOCALES = {
|
||||
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',
|
||||
workspace_renamed: '\u5de5\u4f5c\u5340\u5df2\u91cd\u65b0\u547d\u540d',
|
||||
cron_name_placeholder: '\u9078\u586b',
|
||||
active_conversation_meta: (n) => `${n} 則訊息`,
|
||||
all_uploads_failed: (n) => `${n} 個上傳失敗`,
|
||||
cron_job_name_placeholder: '\u4efb\u52d9\u540d\u7a31',
|
||||
cron_prompt_placeholder: '\u63d0\u793a\u8a5e',
|
||||
cron_schedule_placeholder: '\u6392\u7a0b',
|
||||
delete_confirm: (name) => `刪除「${name}」?`,
|
||||
downloading: (filename) => `正在下載 ${filename}…`,
|
||||
n_messages: (n) => `${n} 則訊息`,
|
||||
onboarding_api_key_help_prefix: '\u900f\u904e\u4ee5\u4e0b\u65b9\u5f0f\u5132\u5b58\u70ba Hermes .env \u6a94\u6848\u4e2d\u7684\u6a5f\u5bc6',
|
||||
onboarding_api_key_label: 'API \u91d1\u9470',
|
||||
onboarding_api_key_placeholder: '\u7559\u7a7a\u4ee5\u4fdd\u7559\u5df2\u5132\u5b58\u7684\u91d1\u9470',
|
||||
onboarding_back: '\u4e0a\u4e00\u6b65',
|
||||
onboarding_badge: '\u9996\u6b21\u57f7\u884c',
|
||||
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',
|
||||
onboarding_base_url_label: '\u57fa\u790e URL',
|
||||
onboarding_base_url_placeholder: 'https://your-endpoint.example/v1',
|
||||
onboarding_check_agent: 'Hermes Agent',
|
||||
onboarding_check_agent_missing: '\u907a\u5931\u6216\u50c5\u90e8\u5206\u53ef\u7528',
|
||||
onboarding_check_agent_ready: '\u5df2\u5075\u6e2c\u5230\u4e26\u53ef\u4f9b\u532f\u5165',
|
||||
onboarding_check_password: '\u5bc6\u78bc',
|
||||
onboarding_check_password_disabled: '\u5c1a\u672a\u555f\u7528',
|
||||
onboarding_check_password_enabled: '\u5df2\u555f\u7528',
|
||||
onboarding_check_provider: '\u63d0\u4f9b\u8005\u914d\u7f6e',
|
||||
onboarding_check_provider_partial: '\u5df2\u5132\u5b58\u4f46\u672a\u5b8c\u6210',
|
||||
onboarding_check_provider_pending: '\u9700\u8981\u9a57\u8b49',
|
||||
onboarding_check_provider_ready: '\u53ef\u958b\u59cb\u804a\u5929',
|
||||
onboarding_complete: '\u521d\u59cb\u8a2d\u5b9a\u5b8c\u6210',
|
||||
onboarding_config_file: '\u8a2d\u5b9a\u6a94\uff1a',
|
||||
onboarding_continue: '\u7e7c\u7e8c',
|
||||
onboarding_current_provider: '\u76ee\u524d\u914d\u7f6e\uff1a',
|
||||
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',
|
||||
onboarding_custom_model_placeholder: 'your_model_name',
|
||||
onboarding_env_file: '.env \u6a94\u6848\uff1a',
|
||||
onboarding_error_base_url_required: '\u81ea\u8a02\u7aef\u9ede\u9700\u8981\u57fa\u790e URL\u3002',
|
||||
onboarding_error_choose_model: '\u8acb\u5148\u9078\u64c7\u6a21\u578b\u518d\u7e7c\u7e8c\u3002',
|
||||
onboarding_error_choose_workspace: '\u8acb\u5148\u9078\u64c7\u5de5\u4f5c\u5340\u518d\u7e7c\u7e8c\u3002',
|
||||
onboarding_error_model_required: '\u9700\u8981\u6a21\u578b\u3002',
|
||||
onboarding_error_provider_required: '\u8acb\u5148\u9078\u64c7\u8a2d\u5b9a\u6a21\u5f0f\u518d\u7e7c\u7e8c\u3002',
|
||||
onboarding_error_workspace_required: '\u9700\u8981\u5de5\u4f5c\u5340\u3002',
|
||||
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',
|
||||
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',
|
||||
onboarding_missing_imports: '\u7f3a\u5c11\u7684\u532f\u5165\uff1a',
|
||||
onboarding_model_label: '\u9810\u8a2d\u6a21\u578b',
|
||||
onboarding_not_set: '\u672a\u8a2d\u5b9a',
|
||||
onboarding_notice_finish: '\u60a8\u4e4b\u5f8c\u53ef\u4ee5\u96a8\u6642\u56de\u5230\u8a2d\u5b9a\u9801\u9762\u8b8a\u66f4\u9019\u4e9b\u503c\u3002',
|
||||
onboarding_notice_password_enabled: '\u5bc6\u78bc\u5df2\u8a2d\u5b9a\u3002\u50c5\u5728\u9700\u8981\u53d6\u4ee3\u6642\u8f38\u5165\u65b0\u5bc6\u78bc\u3002',
|
||||
onboarding_notice_password_recommended: '\u9078\u586b\uff0c\u4f46\u5efa\u8b70\u5728\u975e localhost \u74b0\u5883\u4f7f\u7528\u3002',
|
||||
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',
|
||||
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',
|
||||
onboarding_notice_system_ready: 'Hermes Agent \u53ef\u5f9e Web UI \u5b58\u53d6\u3002',
|
||||
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',
|
||||
onboarding_notice_workspace: '\u9019\u4e9b\u503c\u4f7f\u7528\u8207\u4e00\u822c\u61c9\u7528\u7a0b\u5f0f\u76f8\u540c\u7684\u8a2d\u5b9a API\u3002',
|
||||
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',
|
||||
onboarding_oauth_provider_not_ready_title: 'OAuth \u63d0\u4f9b\u8005\u5c1a\u672a\u6388\u6b0a',
|
||||
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',
|
||||
onboarding_oauth_provider_ready_title: '\u63d0\u4f9b\u8005\u5df2\u6388\u6b0a',
|
||||
onboarding_oauth_switch_hint: '\u6216\u9078\u64c7\u4e0b\u65b9\u5176\u4ed6\u63d0\u4f9b\u8005\u4ee5\u5207\u63db\u5230 API \u91d1\u9470\u8a2d\u5b9a\uff1a',
|
||||
onboarding_open: '\u958b\u555f Hermes',
|
||||
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',
|
||||
onboarding_password_label: '\u5bc6\u78bc\uff08\u9078\u586b\uff09',
|
||||
onboarding_password_placeholder: '\u7559\u7a7a\u4ee5\u8df3\u904e',
|
||||
onboarding_password_remains_disabled: '\u5c07\u4fdd\u6301\u505c\u7528',
|
||||
onboarding_password_skipped: '\u66ab\u6642\u8df3\u904e',
|
||||
onboarding_password_will_enable: '\u5c07\u555f\u7528',
|
||||
onboarding_password_will_replace: '\u5c07\u53d6\u4ee3',
|
||||
onboarding_provider_label: '\u8a2d\u5b9a\u6a21\u5f0f',
|
||||
onboarding_quick_setup_badge: '\u5feb\u901f\u8a2d\u5b9a',
|
||||
onboarding_skip: '\u8df3\u904e\u8a2d\u5b9a',
|
||||
onboarding_skipped: '\u5df2\u8df3\u904e\u8a2d\u5b9a \u2014 \u4f7f\u7528\u73fe\u6709\u914d\u7f6e\u3002',
|
||||
onboarding_step_finish_desc: '\u6aa2\u8996\u8a2d\u5b9a\u4e26\u9032\u5165\u61c9\u7528\u7a0b\u5f0f\u3002',
|
||||
onboarding_step_finish_title: '\u5b8c\u6210',
|
||||
onboarding_step_password_desc: '\u5206\u4eab\u524d\u4fdd\u8b77 Web UI\u3002',
|
||||
onboarding_step_password_title: '\u9078\u586b\u5bc6\u78bc',
|
||||
onboarding_step_setup_desc: '\u5132\u5b58\u6700\u5c0f\u53ef\u7528\u7684 Hermes \u63d0\u4f9b\u8005\u914d\u7f6e\u3002',
|
||||
onboarding_step_setup_title: '\u63d0\u4f9b\u8005\u8a2d\u5b9a',
|
||||
onboarding_step_system_desc: '\u9a57\u8b49 Hermes Agent \u8207\u914d\u7f6e\u53ef\u898b\u6027\u3002',
|
||||
onboarding_step_system_title: '\u7cfb\u7d71\u6aa2\u67e5',
|
||||
onboarding_step_workspace_desc: '\u70ba\u65b0\u6703\u8a71\u9078\u64c7\u9810\u8a2d\u503c\u3002',
|
||||
onboarding_step_workspace_title: '\u5de5\u4f5c\u5340\u8207\u6a21\u578b',
|
||||
onboarding_title: '\u6b61\u8fce\u4f7f\u7528 Hermes Web UI',
|
||||
onboarding_unknown: '\u672a\u77e5',
|
||||
onboarding_workspace_help: '\u9078\u64c7 Hermes \u5728\u8a2d\u5b9a\u5b8c\u6210\u5f8c\u7528\u65bc\u65b0\u804a\u5929\u5ba4\u7684\u6a21\u578b\u3002',
|
||||
onboarding_workspace_label: '\u5de5\u4f5c\u5340',
|
||||
onboarding_workspace_or_path: '\u6216\u8f38\u5165\u5de5\u4f5c\u5340\u8def\u5f91',
|
||||
onboarding_workspace_placeholder: '/home/you/workspace',
|
||||
project_name_prompt: '\u5c08\u6848\u540d\u7a31\uff1a',
|
||||
provider_mismatch_warning: (provider) => `提供者不符:會話使用 ${provider}`,
|
||||
session_meta_messages: (n) => `${n} 則訊息`,
|
||||
settings_label_model: '\u9810\u8a2d\u6a21\u578b',
|
||||
skill_created: '\u6280\u80fd\u5df2\u5efa\u7acb',
|
||||
skill_file_load_failed: '\u8f09\u5165\u6a94\u6848\u5931\u6557\uff1a',
|
||||
skill_load_failed: '\u8f09\u5165\u6280\u80fd\u5931\u6557\uff1a',
|
||||
skill_name_required: '\u9700\u8981\u6280\u80fd\u540d\u7a31',
|
||||
skill_updated: '\u6280\u80fd\u5df2\u66f4\u65b0',
|
||||
skills_no_match: '\u627e\u4e0d\u5230\u7b26\u5408\u7684\u6280\u80fd\u3002',
|
||||
slash_skill_badge: '\u6280\u80fd',
|
||||
slash_skill_desc: '\u547c\u53eb\u6b64\u6280\u80fd',
|
||||
title_change_hint: '\u4f7f\u7528 /title <\u65b0\u540d\u7a31> \u91cd\u65b0\u547d\u540d\u3002',
|
||||
title_current: '\u76ee\u524d\u6a19\u984c',
|
||||
title_set: '\u6a19\u984c\u5df2\u8a2d\u70ba',
|
||||
todos_no_active: '\u6b64\u6703\u8a71\u4e2d\u7121\u6d3b\u8e8d\u4efb\u52d9\u6e05\u55ae\u3002',
|
||||
upload_failed: '\u4e0a\u50b3\u5931\u6557\uff1a',
|
||||
active_conversation_none: '\u672a\u9078\u53d6\u6d3b\u8e8d\u6703\u8a71\u3002',
|
||||
add: '\u65b0\u589e',
|
||||
add_failed: '\u65b0\u589e\u5931\u6557\uff1a',
|
||||
auth_disabled: '\u9a57\u8b49\u5df2\u505c\u7528 \u2014 \u5bc6\u78bc\u4fdd\u8b77\u5df2\u95dc\u9589',
|
||||
cancel_unavailable: '\u7121\u6cd5\u53d6\u6d88\u3002',
|
||||
clear_conversation_message: '\u6e05\u9664\u6240\u6709\u8a0a\u606f\uff1f\u6b64\u64cd\u4f5c\u7121\u6cd5\u5fa9\u539f\u3002',
|
||||
clear_conversation_title: '\u6e05\u9664\u5c0d\u8a71',
|
||||
clear_failed: '\u6e05\u9664\u5931\u6557\uff1a',
|
||||
content_required: '\u9700\u8981\u5167\u5bb9',
|
||||
create_failed: '\u5efa\u7acb\u5931\u6557\uff1a',
|
||||
delete_failed: '\u522a\u9664\u5931\u6557\uff1a',
|
||||
disable: '\u505c\u7528',
|
||||
disable_auth: '\u505c\u7528\u9a57\u8b49',
|
||||
disable_auth_confirm_message: '\u4efb\u4f55\u4eba\u90fd\u53ef\u4ee5\u5b58\u53d6\u6b64\u5be6\u4f8b\u3002',
|
||||
disable_auth_confirm_title: '\u505c\u7528\u5bc6\u78bc\u4fdd\u8b77',
|
||||
disable_auth_failed: '\u505c\u7528\u9a57\u8b49\u5931\u6557\uff1a',
|
||||
discard_file_edits_message: '\u5207\u63db\u5de5\u4f5c\u5340\u5c07\u653e\u68c4\u672a\u5132\u5b58\u7684\u9810\u89bd\u8b8a\u66f4\u3002',
|
||||
discard_file_edits_title: '\u653e\u68c4\u6a94\u6848\u7de8\u8f2f\uff1f',
|
||||
dismiss: '\u95dc\u9589',
|
||||
edit: '\u7de8\u8f2f',
|
||||
error_prefix: '\u932f\u8aa4\uff1a',
|
||||
linked_files: '\u95dc\u806f\u6a94\u6848',
|
||||
manage_profiles: '\u7ba1\u7406\u8a2d\u5b9a\u6a94',
|
||||
memory_notes_label: '\u8a18\u61b6\uff08\u5099\u8a3b\uff09',
|
||||
model_custom_label: '\u81ea\u8a02\u6a21\u578b ID',
|
||||
model_custom_placeholder: '\u4f8b\u5982 openai/gpt-5.4',
|
||||
model_search_no_results: '\u627e\u4e0d\u5230\u6a21\u578b',
|
||||
model_search_placeholder: '\u641c\u5c0b\u6a21\u578b\u2026',
|
||||
my_notes: '\u6211\u7684\u5099\u8a3b',
|
||||
name_required: '\u9700\u8981\u540d\u7a31',
|
||||
never: '\u5f9e\u4e0d',
|
||||
no_active_session: '\u7121\u6d3b\u8e8d\u6703\u8a71',
|
||||
no_active_task: '\u7121\u57f7\u884c\u4e2d\u7684\u4efb\u52d9\u53ef\u505c\u6b62\u3002',
|
||||
no_notes_yet: '\u5c1a\u7121\u5099\u8a3b\u3002',
|
||||
no_profile_yet: '\u5c1a\u7121\u8a2d\u5b9a\u6a94\u3002',
|
||||
not_available: '\u7121',
|
||||
profile_active: '\u555f\u7528\u4e2d',
|
||||
profile_api_key_placeholder: 'API \u91d1\u9470\uff08\u9078\u586b\uff09',
|
||||
profile_api_keys_configured: 'API \u91d1\u9470\u5df2\u8a2d\u5b9a',
|
||||
profile_base_url_placeholder: '\u57fa\u672c URL\uff08\u9078\u586b\uff0c\u4f8b\u5982 http://localhost:11434\uff09',
|
||||
profile_base_url_rule: '\u57fa\u672c URL \u5fc5\u9808\u4ee5 http:// \u6216 https:// \u958b\u982d',
|
||||
profile_clone_label: '\u5f9e\u555f\u7528\u4e2d\u7684\u8a2d\u5b9a\u6a94\u8907\u88fd\u914d\u7f6e',
|
||||
profile_created: (name) => `設定檔 ${name} 已建立`,
|
||||
profile_default_label: '\uff08\u9810\u8a2d\uff09',
|
||||
profile_delete_confirm_title: (name) => `刪除設定檔「${name}」?`,
|
||||
profile_deleted: (name) => `設定檔 ${name} 已刪除`,
|
||||
profile_gateway_running: 'Gateway \u57f7\u884c\u4e2d',
|
||||
profile_gateway_stopped: 'Gateway \u5df2\u505c\u6b62',
|
||||
profile_name_placeholder: '\u8a2d\u5b9a\u6a94\u540d\u7a31\uff08\u5c0f\u5beb\u5b57\u6bcd\u3001\u6578\u5b57\u3001\u9023\u5b57\u865f\uff09',
|
||||
profile_name_rule: '\u50c5\u9650\u5c0f\u5beb\u5b57\u6bcd\u3001\u6578\u5b57\u3001\u9023\u5b57\u865f\u548c\u5e95\u7dda',
|
||||
profile_no_configuration: '\u7121\u914d\u7f6e',
|
||||
profile_skill_count: (n) => `${n} 個技能`,
|
||||
profile_switch_title: '\u5207\u63db\u5230\u6b64\u8a2d\u5b9a\u6a94',
|
||||
profile_switched: (name) => `已切換到 ${name}`,
|
||||
profile_switched_new_conversation: (name) => `已切換到 ${name}(新會話)`,
|
||||
profile_use: '\u4f7f\u7528',
|
||||
profiles_busy_switch: 'Agent \u57f7\u884c\u4e2d\u7121\u6cd5\u5207\u63db\u8a2d\u5b9a\u6a94',
|
||||
profiles_load_failed: '\u8f09\u5165\u8a2d\u5b9a\u6a94\u5931\u6557',
|
||||
profiles_no_profiles: '\u627e\u4e0d\u5230\u8a2d\u5b9a\u6a94\u3002',
|
||||
remove: '\u79fb\u9664',
|
||||
remove_failed: '\u79fb\u9664\u5931\u6557\uff1a',
|
||||
rename_failed: '\u91cd\u65b0\u547d\u540d\u5931\u6557\uff1a',
|
||||
retry_failed: '\u91cd\u8a66\u5931\u6557\uff1a',
|
||||
save: '\u5132\u5b58',
|
||||
save_failed: '\u5132\u5b58\u5931\u6557\uff1a',
|
||||
session_time_bucket_last_week: '\u4e0a\u9031',
|
||||
session_time_bucket_older: '\u66f4\u65e9',
|
||||
session_time_bucket_this_week: '\u672c\u9031',
|
||||
session_time_bucket_today: '\u4eca\u5929',
|
||||
session_time_bucket_yesterday: '\u6628\u5929',
|
||||
session_time_days_ago: (d) => `${d} 天前`,
|
||||
session_time_hours_ago: (h) => `${h} 小時前`,
|
||||
session_time_just_now: '\u525b\u525b',
|
||||
session_time_last_week: '\u4e0a\u9031',
|
||||
session_time_minutes_ago: (m) => `${m} 分鐘前`,
|
||||
session_time_unknown: '\u672a\u77e5',
|
||||
settings_unsaved_changes: '\u60a8\u6709\u672a\u5132\u5b58\u7684\u8b8a\u66f4\u3002',
|
||||
sign_out_failed: '\u767b\u51fa\u5931\u6557\uff1a',
|
||||
stream_stopped: '\u56de\u61c9\u5df2\u505c\u6b62\u3002',
|
||||
switch_failed: '\u5207\u63db\u5931\u6557\uff1a',
|
||||
undid_messages_suffix: '\u5247\u8a0a\u606f\u3002',
|
||||
undid_n_messages: '\u5df2\u79fb\u9664',
|
||||
undo_exchange: '\u5fa9\u539f\u6700\u5f8c\u4e00\u8f2a',
|
||||
undo_failed: '\u5fa9\u539f\u5931\u6557\uff1a',
|
||||
user_profile: '\u4f7f\u7528\u8005\u8a2d\u5b9a\u6a94',
|
||||
view: '\u6aa2\u8996',
|
||||
workspace_add_path_placeholder: '\u65b0\u589e\u5de5\u4f5c\u5340\u8def\u5f91\uff08\u4f8b\u5982 /Users/you/project\uff09',
|
||||
workspace_added: '\u5de5\u4f5c\u5340\u5df2\u65b0\u589e',
|
||||
workspace_already_saved: '\u5de5\u4f5c\u5340\u5df2\u5132\u5b58 \u2014 \u5f9e\u6e05\u55ae\u4e2d\u9078\u53d6',
|
||||
workspace_busy_switch: 'Agent \u57f7\u884c\u4e2d\u7121\u6cd5\u5207\u63db\u5de5\u4f5c\u5340',
|
||||
workspace_choose_path: '\u9078\u64c7\u5de5\u4f5c\u5340\u8def\u5f91',
|
||||
workspace_choose_path_meta: '\u65b0\u589e\u9a57\u8b49\u904e\u7684\u8def\u5f91\u4e26\u5207\u63db\u6b64\u6703\u8a71',
|
||||
workspace_manage: '\u7ba1\u7406\u5de5\u4f5c\u5340',
|
||||
workspace_manage_meta: '\u958b\u555f Spaces \u9762\u677f',
|
||||
workspace_not_added: '\u5de5\u4f5c\u5340\u672a\u65b0\u589e',
|
||||
workspace_paths_validated_hint: '\u8def\u5f91\u6703\u5148\u9a57\u8b49\u662f\u5426\u5b58\u5728\u518d\u5132\u5b58\u3002',
|
||||
workspace_remove_confirm_message: (name) => `移除工作區「${name}」?`,
|
||||
workspace_remove_confirm_title: '\u79fb\u9664\u5de5\u4f5c\u5340',
|
||||
workspace_removed: '\u5de5\u4f5c\u5340\u5df2\u79fb\u9664',
|
||||
workspace_switch_prompt_confirm: '\u5207\u63db',
|
||||
workspace_switch_prompt_message: '\u8f38\u5165\u5de5\u4f5c\u5340\u7684\u7d55\u5c0d\u8def\u5f91\u4ee5\u65b0\u589e\u4e26\u5207\u63db\u6b64\u6703\u8a71\u3002',
|
||||
workspace_switch_prompt_placeholder: '/Users/you/project',
|
||||
workspace_switch_prompt_title: '\u5207\u63db\u5de5\u4f5c\u5340',
|
||||
workspace_switched_to: (name) => `已切換到 ${name}`,
|
||||
workspace_use: '\u4f7f\u7528',
|
||||
workspace_use_title: '\u5728\u7576\u524d\u6703\u8a71\u4e2d\u4f7f\u7528',
|
||||
bg_complete: '\u80cc\u666f\u4efb\u52d9\u5b8c\u6210',
|
||||
bg_error_multi: (n) => `${n} 個背景任務失敗`,
|
||||
cmd_status: '顯示會話資訊',
|
||||
memory_saved: '記憶已儲存',
|
||||
profile_delete_title: '刪除此設定檔',
|
||||
bg_error_single: (n) => `${n} 個背景任務失敗`,
|
||||
bg_failed: '\u80cc\u666f\u4efb\u52d9\u5931\u6557\uff1a',
|
||||
bg_label: '\u80cc\u666f\u7d50\u679c\uff1a',
|
||||
bg_no_answer: '\uff08\u7121\u56de\u61c9\uff09',
|
||||
bg_running: '\u80cc\u666f\u57f7\u884c\u4e2d\u2026',
|
||||
btw_asking: '\u6b63\u5728\u8a62\u554f\u9644\u5e36\u554f\u984c\u2026',
|
||||
btw_done: '\u9644\u5e36\u554f\u984c\u5df2\u56de\u7b54',
|
||||
btw_failed: '\u9644\u5e36\u554f\u984c\u5931\u6557\uff1a',
|
||||
btw_label: '\u9644\u5e36\u554f\u984c \u2014 \u4e0d\u5728\u6b77\u53f2\u8a18\u9304\u4e2d',
|
||||
btw_no_answer: '\u672a\u6536\u5230\u56de\u61c9\u3002',
|
||||
cmd_background: '\u5728\u80cc\u666f\u57f7\u884c\u63d0\u793a\u8a5e',
|
||||
cmd_background_usage: '/background <\u63d0\u793a\u8a5e> \u2014 \u5e73\u884c\u57f7\u884c\u4e0d\u963b\u585e',
|
||||
cmd_btw: '\u63d0\u51fa\u9644\u5e36\u554f\u984c\uff08\u66ab\u6642\u6027\uff09',
|
||||
cmd_btw_usage: '/btw <\u554f\u984c> \u2014 \u4f7f\u7528\u7576\u524d\u6703\u8a71\u80cc\u666f\u63d0\u554f',
|
||||
cmd_compact: '\u58d3\u7e2e\u5c0d\u8a71\u4e0a\u4e0b\u6587',
|
||||
cmd_retry: '\u91cd\u65b0\u767c\u9001\u6700\u5f8c\u4e00\u689d\u8a0a\u606f',
|
||||
cmd_stop: '\u505c\u6b62\u7576\u524d\u56de\u61c9',
|
||||
cmd_title: '\u53d6\u5f97\u6216\u8a2d\u5b9a\u6703\u8a71\u6a19\u984c',
|
||||
cmd_undo: '\u79fb\u9664\u6700\u5f8c\u4e00\u8f2a\u5c0d\u8a71',
|
||||
cmd_voice: '\u5207\u63db\u9ea5\u514b\u98a8\u8f38\u5165',
|
||||
cmd_voice_use_mic: '\u9ede\u64ca\u7de8\u8f2f\u5668\u4e2d\u7684\u9ea5\u514b\u98a8\u6309\u9215\u3002',
|
||||
cmd_webui_only_session: '\u6b64\u6307\u4ee4\u4e0d\u9069\u7528\u65bc CLI \u532f\u5165\u7684\u6703\u8a71\u3002',
|
||||
cron_all_runs: '\u6240\u6709\u57f7\u884c',
|
||||
cron_completion_status: (n) => `${n} 次完成`,
|
||||
cron_delete_confirm_message: '\u6b64\u64cd\u4f5c\u7121\u6cd5\u5fa9\u539f\u3002',
|
||||
cron_delete_confirm_title: '\u522a\u9664\u6392\u7a0b\u4efb\u52d9',
|
||||
cron_hide_runs: '\u96b1\u85cf\u57f7\u884c\u8a18\u9304',
|
||||
cron_job_created: '\u6392\u7a0b\u4efb\u52d9\u5df2\u5efa\u7acb',
|
||||
cron_job_deleted: '\u6392\u7a0b\u4efb\u52d9\u5df2\u522a\u9664',
|
||||
cron_job_name_placeholder: '\u4efb\u52d9\u540d\u7a31',
|
||||
cron_job_paused: '\u6392\u7a0b\u4efb\u52d9\u5df2\u66ab\u505c',
|
||||
cron_job_resumed: '\u6392\u7a0b\u4efb\u52d9\u5df2\u6062\u5fa9',
|
||||
cron_job_triggered: '\u6392\u7a0b\u4efb\u52d9\u5df2\u89f8\u767c',
|
||||
cron_job_updated: '\u6392\u7a0b\u4efb\u52d9\u5df2\u66f4\u65b0',
|
||||
cron_last: '\u4e0a\u6b21',
|
||||
cron_last_output: '\u6700\u5f8c\u8f38\u51fa',
|
||||
cron_next: '\u4e0b\u6b21',
|
||||
cron_no_jobs: '\u627e\u4e0d\u5230\u6392\u7a0b\u4efb\u52d9\u3002',
|
||||
cron_no_runs_yet: '\uff08\u5c1a\u7121\u57f7\u884c\u8a18\u9304\uff09',
|
||||
cron_pause: '\u66ab\u505c',
|
||||
cron_prompt_placeholder: '\u63d0\u793a\u8a5e',
|
||||
cron_prompt_required: '\u9700\u8981\u63d0\u793a\u8a5e',
|
||||
cron_resume: '\u6062\u5fa9',
|
||||
cron_run_now: '\u7acb\u5373\u57f7\u884c',
|
||||
cron_schedule_placeholder: '\u6392\u7a0b',
|
||||
cron_schedule_required: '\u9700\u8981\u6392\u7a0b',
|
||||
cron_schedule_required_example: '\u9700\u8981\u6392\u7a0b\uff08\u4f8b\u5982 "0 9 * * *" \u6216 "every 1h"\uff09',
|
||||
cron_status_active: '\u6d3b\u8e8d\u4e2d',
|
||||
cron_status_error: '\u932f\u8aa4',
|
||||
cron_status_off: '\u672a\u555f\u7528',
|
||||
cron_status_paused: '\u5df2\u66ab\u505c',
|
||||
providers_empty: '\u627e\u4e0d\u5230\u53ef\u8a2d\u5b9a\u7684\u63d0\u4f9b\u8005\u3002',
|
||||
providers_enter_key: '\u8acb\u8f38\u5165 API \u91d1\u9470',
|
||||
providers_key_placeholder_new: 'sk-...',
|
||||
providers_key_placeholder_replace: '\u8f38\u5165\u65b0\u91d1\u9470\u4ee5\u53d6\u4ee3\u2026',
|
||||
providers_key_removed: 'API \u91d1\u9470\u5df2\u79fb\u9664',
|
||||
providers_key_updated: 'API \u91d1\u9470\u5df2\u5132\u5b58',
|
||||
providers_oauth_hint: '\u5df2\u900f\u904e OAuth \u9a57\u8b49\u3002\u7121\u9700 API \u91d1\u9470\u3002',
|
||||
providers_remove: '\u79fb\u9664',
|
||||
providers_removing: '\u79fb\u9664\u4e2d\u2026',
|
||||
providers_save: '\u5132\u5b58',
|
||||
providers_saving: '\u5132\u5b58\u4e2d\u2026',
|
||||
providers_section_meta: '管理 AI 提供者的 API 金鑰。變更會立即生效。',
|
||||
providers_section_title: '供應商',
|
||||
providers_status_api_key: 'API 金鑰',
|
||||
providers_status_configured: 'API \u91d1\u9470\u5df2\u8a2d\u5b9a',
|
||||
providers_status_not_configured: '\u7121 API \u91d1\u9470',
|
||||
providers_status_not_configured_label: '\u672a\u8a2d\u5b9a',
|
||||
providers_status_oauth: 'OAuth',
|
||||
providers_tab_title: '供應商',
|
||||
status_agent_running: 'Agent 執行中',
|
||||
status_completed: '\u5df2\u5b8c\u6210',
|
||||
status_failed: '\u5931\u6557',
|
||||
status_heading: '\u6703\u8a71\u72c0\u614b',
|
||||
status_load_failed: '\u8f09\u5165\u72c0\u614b\u5931\u6557\uff1a',
|
||||
status_messages: '\u8a0a\u606f\u6578',
|
||||
status_model: '\u6a21\u578b',
|
||||
status_no: '\u5426',
|
||||
status_personality: '\u4eba\u8a2d',
|
||||
status_session_id: '\u6703\u8a71 ID',
|
||||
status_title: '\u6a19\u984c',
|
||||
status_workspace: '\u5de5\u4f5c\u5340',
|
||||
status_yes: '\u662f',
|
||||
usage_default_model: '\u9810\u8a2d',
|
||||
usage_estimated_cost: '\u9810\u4f30\u8cbb\u7528',
|
||||
usage_heading: 'Token \u7528\u91cf',
|
||||
usage_input_tokens: '\u8f38\u5165 Token',
|
||||
usage_load_failed: '\u8f09\u5165\u7528\u91cf\u5931\u6557\uff1a',
|
||||
usage_output_tokens: '\u8f38\u51fa Token',
|
||||
usage_personality_none: '\u7121',
|
||||
usage_settings_tip: '\u6ce8\u610f\uff1a\u8cbb\u7528\u70ba\u9810\u4f30\u503c\u3002',
|
||||
usage_total: '\u7e3d Token \u6578',
|
||||
usage_unknown: '\u672a\u77e5',
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
+8
-8
@@ -510,8 +510,8 @@
|
||||
<div class="settings-pane active" id="settingsPaneConversation">
|
||||
<div class="settings-section-head">
|
||||
<div>
|
||||
<div class="settings-section-title">Conversation</div>
|
||||
<div class="settings-section-meta" id="hermesSessionMeta">No active conversation selected.</div>
|
||||
<div class="settings-section-title" data-i18n="settings_section_conversation_title">Conversation</div>
|
||||
<div class="settings-section-meta" id="hermesSessionMeta" data-i18n="active_conversation_none">No active conversation selected.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hermes-action-grid">
|
||||
@@ -525,8 +525,8 @@
|
||||
<div class="settings-pane" id="settingsPaneAppearance">
|
||||
<div class="settings-section-head">
|
||||
<div>
|
||||
<div class="settings-section-title">Appearance</div>
|
||||
<div class="settings-section-meta">Theme, accent colors, and visual style.</div>
|
||||
<div class="settings-section-title" data-i18n="settings_section_appearance_title">Appearance</div>
|
||||
<div class="settings-section-meta" data-i18n="settings_section_appearance_meta">Theme, accent colors, and visual style.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="settings-field">
|
||||
@@ -588,8 +588,8 @@
|
||||
<div class="settings-pane" id="settingsPanePreferences">
|
||||
<div class="settings-section-head">
|
||||
<div>
|
||||
<div class="settings-section-title">Preferences</div>
|
||||
<div class="settings-section-meta">Defaults and UI behavior for Hermes Web UI.</div>
|
||||
<div class="settings-section-title" data-i18n="settings_section_preferences_title">Preferences</div>
|
||||
<div class="settings-section-meta" data-i18n="settings_section_preferences_meta">Defaults and UI behavior for Hermes Web UI.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="settings-field">
|
||||
@@ -681,8 +681,8 @@
|
||||
<div class="settings-pane" id="settingsPaneSystem">
|
||||
<div class="settings-section-head">
|
||||
<div>
|
||||
<div class="settings-section-title">System</div>
|
||||
<div class="settings-section-meta">Instance version and access controls.</div>
|
||||
<div class="settings-section-title" data-i18n="settings_section_system_title">System</div>
|
||||
<div class="settings-section-meta" data-i18n="settings_section_system_meta">Instance version and access controls.</div>
|
||||
</div>
|
||||
<span class="settings-version-badge">—</span>
|
||||
</div>
|
||||
|
||||
+15
-15
@@ -355,8 +355,8 @@ function _openSessionActionMenu(session, anchorEl){
|
||||
const menu=document.createElement('div');
|
||||
menu.className='session-action-menu open';
|
||||
menu.appendChild(_buildSessionAction(
|
||||
session.pinned?'Unpin conversation':'Pin conversation',
|
||||
session.pinned?'Remove from pinned':'Keep this conversation at the top',
|
||||
session.pinned?t('session_unpin'):t('session_pin'),
|
||||
session.pinned?t('session_unpin_desc'):t('session_pin_desc'),
|
||||
session.pinned?ICONS.pin:ICONS.unpin,
|
||||
async()=>{
|
||||
closeSessionActionMenu();
|
||||
@@ -366,13 +366,13 @@ function _openSessionActionMenu(session, anchorEl){
|
||||
session.pinned=newPinned;
|
||||
if(S.session&&S.session.session_id===session.session_id) S.session.pinned=newPinned;
|
||||
renderSessionList();
|
||||
}catch(err){showToast('Pin failed: '+err.message);}
|
||||
}catch(err){showToast(t('session_pin_failed')+err.message);}
|
||||
},
|
||||
session.pinned?'is-active':''
|
||||
));
|
||||
menu.appendChild(_buildSessionAction(
|
||||
'Move to project',
|
||||
session.project_id?'Change the project for this conversation':'Assign a project to this conversation',
|
||||
t('session_move_project'),
|
||||
session.project_id?t('session_move_project_desc_has'):t('session_move_project_desc_none'),
|
||||
ICONS.folder,
|
||||
async()=>{
|
||||
closeSessionActionMenu();
|
||||
@@ -380,8 +380,8 @@ function _openSessionActionMenu(session, anchorEl){
|
||||
}
|
||||
));
|
||||
menu.appendChild(_buildSessionAction(
|
||||
session.archived?'Restore conversation':'Archive conversation',
|
||||
session.archived?'Bring this conversation back into the main list':'Hide this conversation until archived is shown',
|
||||
session.archived?t('session_restore'):t('session_archive'),
|
||||
session.archived?t('session_restore_desc'):t('session_archive_desc'),
|
||||
session.archived?ICONS.unarchive:ICONS.archive,
|
||||
async()=>{
|
||||
closeSessionActionMenu();
|
||||
@@ -390,13 +390,13 @@ function _openSessionActionMenu(session, anchorEl){
|
||||
session.archived=!session.archived;
|
||||
if(S.session&&S.session.session_id===session.session_id) S.session.archived=session.archived;
|
||||
await renderSessionList();
|
||||
showToast(session.archived?'Session archived':'Session restored');
|
||||
}catch(err){showToast('Archive failed: '+err.message);}
|
||||
showToast(session.archived?t('session_archived'):t('session_restored'));
|
||||
}catch(err){showToast(t('session_archive_failed')+err.message);}
|
||||
}
|
||||
));
|
||||
menu.appendChild(_buildSessionAction(
|
||||
'Duplicate conversation',
|
||||
'Create a copy with the same workspace and model',
|
||||
t('session_duplicate'),
|
||||
t('session_duplicate_desc'),
|
||||
ICONS.dup,
|
||||
async()=>{
|
||||
closeSessionActionMenu();
|
||||
@@ -406,14 +406,14 @@ function _openSessionActionMenu(session, anchorEl){
|
||||
await api('/api/session/rename',{method:'POST',body:JSON.stringify({session_id:res.session.session_id,title:(session.title||'Untitled')+' (copy)'})});
|
||||
await loadSession(res.session.session_id);
|
||||
await renderSessionList();
|
||||
showToast('Session duplicated');
|
||||
showToast(t('session_duplicated'));
|
||||
}
|
||||
}catch(err){showToast('Duplicate failed: '+err.message);}
|
||||
}catch(err){showToast(t('session_duplicate_failed')+err.message);}
|
||||
}
|
||||
));
|
||||
menu.appendChild(_buildSessionAction(
|
||||
'Delete conversation',
|
||||
'Permanently remove this conversation',
|
||||
t('session_delete'),
|
||||
t('session_delete_desc'),
|
||||
ICONS.trash,
|
||||
async()=>{
|
||||
closeSessionActionMenu();
|
||||
|
||||
Reference in New Issue
Block a user