@xmanrui/dsh-im 1.5.0 → 2.0.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 (80) hide show
  1. package/README.en.md +16 -4
  2. package/README.md +16 -4
  3. package/lib/index.js +208 -178
  4. package/package.json +1 -1
  5. package/plugin-src/host/index.mjs +2 -0
  6. package/src/channels/dingtalk/config-store.mjs +5 -3
  7. package/src/channels/dingtalk/dingtalk-api.mjs +2 -1
  8. package/src/channels/dingtalk/dingtalk-bridge.mjs +45 -40
  9. package/src/channels/dingtalk/dingtalk-card-stream.mjs +3 -1
  10. package/src/channels/dingtalk/dingtalk-controller.mjs +24 -23
  11. package/src/channels/dingtalk/dingtalk-runtime.mjs +4 -3
  12. package/src/channels/dingtalk/state-store.mjs +3 -1
  13. package/src/channels/discord/config-store.mjs +2 -1
  14. package/src/channels/discord/discord-api.mjs +25 -1
  15. package/src/channels/discord/discord-runtime.mjs +237 -11
  16. package/src/channels/feishu/bridge.mjs +131 -123
  17. package/src/channels/feishu/feishu-cards.mjs +62 -54
  18. package/src/channels/feishu/feishu-channel.mjs +5 -4
  19. package/src/channels/feishu/feishu-runtime.mjs +10 -9
  20. package/src/channels/feishu/message-utils.mjs +4 -3
  21. package/src/channels/office/office-job-executor.mjs +15 -14
  22. package/src/channels/office/office-runtime.mjs +6 -5
  23. package/src/channels/qq/config-store.mjs +3 -1
  24. package/src/channels/qq/markdown-reply.mjs +4 -2
  25. package/src/channels/qq/qq-bridge.mjs +57 -52
  26. package/src/channels/qq/qq-controller.mjs +17 -16
  27. package/src/channels/qq/qq-runtime.mjs +3 -2
  28. package/src/channels/shared/agent-preset.mjs +3 -1
  29. package/src/channels/shared/compact-command.mjs +15 -14
  30. package/src/channels/shared/connection-test.mjs +6 -4
  31. package/src/channels/shared/control-command.mjs +13 -11
  32. package/src/channels/shared/editable-message-stream.mjs +4 -2
  33. package/src/channels/shared/harness-approval.mjs +23 -21
  34. package/src/channels/shared/harness-client.mjs +3 -2
  35. package/src/channels/shared/harness-question.mjs +8 -6
  36. package/src/channels/shared/i18n-en/dingtalk.mjs +52 -0
  37. package/src/channels/shared/i18n-en/discord.mjs +8 -0
  38. package/src/channels/shared/i18n-en/feishu.mjs +217 -0
  39. package/src/channels/shared/i18n-en/office.mjs +23 -0
  40. package/src/channels/shared/i18n-en/qq.mjs +54 -0
  41. package/src/channels/shared/i18n-en/shared-a.mjs +91 -0
  42. package/src/channels/shared/i18n-en/shared-b.mjs +215 -0
  43. package/src/channels/shared/i18n-en/shared-c.mjs +99 -0
  44. package/src/channels/shared/i18n-en/slack.mjs +27 -0
  45. package/src/channels/shared/i18n-en/telegram.mjs +21 -0
  46. package/src/channels/shared/i18n-en/wecom.mjs +38 -0
  47. package/src/channels/shared/i18n-en/weixin.mjs +80 -0
  48. package/src/channels/shared/i18n-en/whatsapp.mjs +17 -0
  49. package/src/channels/shared/i18n-en.mjs +35 -0
  50. package/src/channels/shared/i18n.mjs +35 -0
  51. package/src/channels/shared/image-prompt.mjs +17 -15
  52. package/src/channels/shared/inbound-file.mjs +5 -3
  53. package/src/channels/shared/model-command.mjs +35 -31
  54. package/src/channels/shared/preset-command.mjs +41 -38
  55. package/src/channels/shared/semantic/artifact-delivery.mjs +1 -1
  56. package/src/channels/shared/semantic/delivery.mjs +38 -0
  57. package/src/channels/shared/text-harness-bridge.mjs +130 -63
  58. package/src/channels/shared/token-bot-controller.mjs +32 -11
  59. package/src/channels/shared/workspace-command.mjs +69 -58
  60. package/src/channels/slack/config-store.mjs +3 -1
  61. package/src/channels/slack/slack-api.mjs +6 -5
  62. package/src/channels/slack/slack-controller.mjs +10 -9
  63. package/src/channels/slack/slack-runtime.mjs +16 -4
  64. package/src/channels/telegram/config-store.mjs +2 -1
  65. package/src/channels/telegram/telegram-api.mjs +72 -6
  66. package/src/channels/telegram/telegram-rich-message.mjs +147 -0
  67. package/src/channels/telegram/telegram-runtime.mjs +373 -5
  68. package/src/channels/wecom/config-store.mjs +3 -1
  69. package/src/channels/wecom/wecom-bridge.mjs +59 -55
  70. package/src/channels/wecom/wecom-controller.mjs +20 -19
  71. package/src/channels/wecom/wecom-runtime.mjs +2 -1
  72. package/src/channels/weixin/config-store.mjs +2 -1
  73. package/src/channels/weixin/weixin-bridge.mjs +50 -49
  74. package/src/channels/weixin/weixin-controller.mjs +22 -21
  75. package/src/channels/weixin/weixin-runtime.mjs +3 -2
  76. package/src/channels/whatsapp/config-store.mjs +3 -1
  77. package/src/channels/whatsapp/whatsapp-bridge.mjs +3 -1
  78. package/src/channels/whatsapp/whatsapp-controller.mjs +15 -14
  79. package/src/channels/whatsapp/whatsapp-runtime.mjs +5 -4
  80. package/src/channels/whatsapp/whatsapp-web-session.mjs +3 -1
@@ -0,0 +1,91 @@
1
+ // English translations (shared-a area). Keys are exact Chinese literals passed to t().
2
+ export default {
3
+ '这个问题已在其他客户端处理,无需再次回答。':
4
+ 'This question has already been answered from another client; no further reply is needed.',
5
+ '任务已完成。': 'Task completed.',
6
+ '结果文件': 'result file',
7
+ '结果文件「{name}」的发送结果未能确认,请先检查聊天内是否已收到,不要立即重试。':
8
+ 'The delivery result of the result file "{name}" could not be confirmed. Please check whether it already arrived in the chat before retrying.',
9
+ '结果文件「{name}」已生成,但 Slack 应用缺少 files:write 权限。请更新 Manifest、重新安装应用并重新连接机器人后重试。':
10
+ 'The result file "{name}" was generated, but the Slack app is missing the files:write permission. Please update the Manifest, reinstall the app, reconnect the bot, and try again.',
11
+ '结果文件「{name}」已生成,但机器人缺少 Discord 的 Send Messages、Attach Files 或 Read Message History 权限。':
12
+ 'The result file "{name}" was generated, but the bot is missing the Discord Send Messages, Attach Files, or Read Message History permission.',
13
+ '结果文件「{name}」已生成,但 Telegram 不允许机器人在当前聊天发送文档,请检查聊天权限。':
14
+ 'The result file "{name}" was generated, but Telegram does not allow the bot to send documents in this chat. Please check the chat permissions.',
15
+ '结果文件「{name}」已生成,但当前机器人没有文件发送权限,请检查渠道权限。':
16
+ 'The result file "{name}" was generated, but the bot does not have permission to send files. Please check the channel permissions.',
17
+ '结果文件「{name}」超过当前渠道大小上限,未发送。':
18
+ 'The result file "{name}" exceeds the size limit of this channel and was not sent.',
19
+ '结果文件「{name}」为空,未发送。':
20
+ 'The result file "{name}" is empty and was not sent.',
21
+ '结果文件「{name}」暂时无法读取或准备发送,请确认文件仍可访问后重试。':
22
+ 'The result file "{name}" cannot be read or prepared for sending right now. Please make sure the file is still accessible and try again.',
23
+ '结果文件「{name}」暂时被当前渠道限流,未能发送,请稍后重试。':
24
+ 'The result file "{name}" was temporarily rate-limited by this channel and could not be sent. Please try again later.',
25
+ '结果文件「{name}」已生成,但当前渠道拒绝了该文件或文件消息。':
26
+ 'The result file "{name}" was generated, but this channel rejected the file or file message.',
27
+ '结果文件「{name}」已生成,但当前渠道暂时未能发送,请稍后重试。':
28
+ 'The result file "{name}" was generated, but this channel could not send it right now. Please try again later.',
29
+ '消息处理失败,请稍后重试。': 'Failed to process the message. Please try again later.',
30
+ '{label}机器人': '{label} bot',
31
+ '目前支持文字和图片消息。': 'Only text and image messages are supported at the moment.',
32
+ '目前支持文字、图片和文件消息。':
33
+ 'Only text, image, and file messages are supported at the moment.',
34
+ '目前支持文字、图片、文件和语音转写消息。':
35
+ 'Only text, image, file, and voice-transcription messages are supported at the moment.',
36
+ '目前支持文字、图片、文件,以及微信已转成文字的语音消息。':
37
+ 'Only text, image, file, and voice messages already transcribed to text by WeChat are supported at the moment.',
38
+ '直接发送文字或图片即可继续当前会话。': 'Send text or an image directly to continue the current session.',
39
+ '直接发送文字、图片或文件即可继续当前会话。':
40
+ 'Send text, an image, or a file directly to continue the current session.',
41
+ '直接发送文字、图片、文件或带文字识别结果的语音即可继续当前会话。':
42
+ 'Send text, an image, a file, or a voice message already transcribed to text to continue the current session.',
43
+ '{label}机器人已连接 DeepSeek Harness。': 'The {label} bot is connected to DeepSeek Harness.',
44
+ '/new 开启一个全新会话': '/new Start a brand-new session',
45
+ '/compact 压缩当前会话的较早上下文': '/compact Compact the earlier context of the current session',
46
+ '/workspace 工作区绝对路径 切换工作区': '/workspace <absolute workspace path> Switch workspace',
47
+ '/workspacelist 列出工作区绝对路径': '/workspacelist List absolute workspace paths',
48
+ '/sessionlist [工作区序号或绝对路径] 列出会话 ID 和标题':
49
+ '/sessionlist [workspace index or absolute path] List session IDs and titles',
50
+ '/session Session ID 或当前工作区序号 将当前聊天绑定到指定会话':
51
+ '/session <Session ID or workspace index> Bind this chat to the specified session',
52
+ '/models 按序号列出所有可用模型': '/models List all available models by index',
53
+ '/model [序号或完整模型ID] 查看或切换当前会话模型':
54
+ '/model [index or full model ID] Show or switch the model of the current session',
55
+ '示例:先发 /models,再发 /model 2': 'Example: send /models first, then /model 2',
56
+ '/presetlist 按序号列出可用 Agent Preset': '/presetlist List available Agent Presets by index',
57
+ '/preset [序号或完整ID] 查看或设置当前机器人 Agent Preset':
58
+ '/preset [index or full ID] Show or set the Agent Preset of this bot',
59
+ '纯数字 ID:/preset id:<ID>': 'Numeric-only ID: /preset id:<ID>',
60
+ '/preset --default 跟随 Host 默认': '/preset --default Follow the Host default',
61
+ '/stop 停止当前任务': '/stop Stop the current task',
62
+ '/steer 补充指令 纠偏当前任务': '/steer <additional instruction> Steer the current task',
63
+ '/status 检查连接状态': '/status Check the connection status',
64
+ '/help 显示本帮助': '/help Show this help',
65
+ '{label}机器人与 DeepSeek Harness 连接正常。':
66
+ 'The {label} bot is connected to DeepSeek Harness and working normally.',
67
+ '{label}机器人凭据缺失,请移除后重新接入。':
68
+ '{label} bot credentials are missing. Remove the bot and connect it again.',
69
+ '{label}连接未就绪,插件会自动重试。':
70
+ 'The {label} connection is not ready yet. The plugin will retry automatically.',
71
+ '{label}机器人已接入,消息连接暂未就绪。':
72
+ 'The {label} bot is connected, but its message connection is not ready yet.',
73
+ '{label}连接仍未就绪,请稍后重试。':
74
+ 'The {label} connection is still not ready. Please try again later.',
75
+ '{label}机器人尚未连接': 'The {label} bot is not connected yet',
76
+ '{name}({id})': '{name} ({id})',
77
+ '{label}{connectionLabel}运行正常': 'The {label}{connectionLabel} is running normally',
78
+ '{label}连接未就绪,插件会自动重试':
79
+ 'The {label} connection is not ready. The plugin will retry automatically',
80
+ '{label}连接当前离线': 'The {label} connection is currently offline',
81
+ '已开启新会话。请发送你的问题。': 'A new session has started. Please send your question.',
82
+ '正在使用{name}…': 'Using {name}…',
83
+ '已停止。': 'Stopped.',
84
+ '请用文字回答当前问题。': 'Please answer the current question with text.',
85
+ '{label}交互问题发送失败。': 'Failed to send the {label} interaction question.',
86
+ '回答提交失败。': 'Failed to submit the answer.',
87
+ '回答提交失败,请重新发送当前问题的答案。':
88
+ 'Failed to submit the answer. Please resend your answer to the current question.',
89
+ '检测到这个 Session 中遗留的待回答问题,已安全取消并继续处理你刚才的消息。':
90
+ 'A pending question left over in this Session was detected. It has been safely cancelled, and your latest message is being processed.',
91
+ };
@@ -0,0 +1,215 @@
1
+ // English translations (shared-b area). Keys are exact Chinese literals passed to t().
2
+ export default {
3
+ // workspace-command.mjs
4
+ '用法:/session Session ID 或当前工作区序号(/session N)':
5
+ 'Usage: /session Session ID or the session index in the current Workspace (/session N)',
6
+ '用法:\n/sessionlist 列出当前工作区会话\n/sessionlist 工作区序号 按 /workspacelist 序号列出会话\n/sessionlist 工作区绝对路径 列出指定工作区会话':
7
+ 'Usage:\n/sessionlist List Sessions in the current Workspace\n/sessionlist Workspace index List Sessions by /workspacelist index\n/sessionlist Workspace absolute path List Sessions in the given Workspace',
8
+ '工作区必须是绝对路径。\n{usage}': 'The Workspace must be an absolute path.\n{usage}',
9
+ '工作区路径包含不支持的字符或长度超过限制。\n{usage}':
10
+ 'The Workspace path contains unsupported characters or exceeds the length limit.\n{usage}',
11
+ '工作区路径不存在。\n{usage}': 'The Workspace path does not exist.\n{usage}',
12
+ '工作区路径必须指向一个目录。\n{usage}': 'The Workspace path must point to a directory.\n{usage}',
13
+ '用法:/workspacelist': 'Usage: /workspacelist',
14
+ '当前机器人暂不支持列出工作区。': 'This bot does not support listing Workspaces yet.',
15
+ '当前 Harness Host 上没有仍然存在的已登记工作区。':
16
+ 'No registered Workspaces still exist on the current Harness Host.',
17
+ '当前 Harness Host 上存在的工作区({count}):':
18
+ 'Workspaces on the current Harness Host ({count}):',
19
+ '(当前)': '(current)',
20
+ '切换用法:/workspace 工作区绝对路径': 'To switch: /workspace Workspace absolute path',
21
+ '查看会话:/sessionlist 工作区序号或绝对路径':
22
+ 'To view Sessions: /sessionlist Workspace index or absolute path',
23
+ '机器人正在移除或已重新接入,无法列出原会话的工作区。':
24
+ 'The bot is being removed or has been reconnected; cannot list Workspaces of the original Session.',
25
+ '暂时无法获取工作区列表,请稍后重试。':
26
+ 'Unable to get the Workspace list right now; please try again later.',
27
+ '当前机器人没有可用的工作区。': 'This bot has no available Workspace.',
28
+ '当前机器人暂不支持按序号选择工作区。':
29
+ 'This bot does not support selecting a Workspace by index yet.',
30
+ '工作区序号不存在,请先执行 /workspacelist。':
31
+ 'The Workspace index does not exist; please run /workspacelist first.',
32
+ '今天 {time}': 'Today {time}',
33
+ '昨天 {time}': 'Yesterday {time}',
34
+ '前天 {time}': 'The day before yesterday {time}',
35
+ '{month}月{day}日 {time}': '{month}/{day} {time}',
36
+ '{year}年{month}月{day}日': '{year}-{month}-{day}',
37
+ '标题暂不可用': 'Title unavailable',
38
+ '暂无标题': 'No title',
39
+ '(已归档)': '(archived)',
40
+ '工作区:{workspace}\n该工作区暂无会话。': 'Workspace: {workspace}\nThis Workspace has no Sessions yet.',
41
+ '工作区:{workspace}': 'Workspace: {workspace}',
42
+ '会话({count}):': 'Sessions ({count}):',
43
+ '绑定用法:/session Session ID 或当前工作区序号(/session N)':
44
+ 'To bind: /session Session ID or the Session index in the current Workspace (/session N)',
45
+ '绑定用法:/session Session ID\n提示:/session N 只按机器人当前工作区的序号绑定。':
46
+ "To bind: /session Session ID\nNote: /session N binds by index within the bot's current Workspace only.",
47
+ '当前机器人暂不支持列出工作区会话。':
48
+ 'This bot does not support listing Workspace Sessions yet.',
49
+ '机器人正在移除或已重新接入,无法列出原会话的工作区会话。':
50
+ 'The bot is being removed or has been reconnected; cannot list Workspace Sessions of the original Session.',
51
+ '暂时无法获取工作区会话列表,请稍后重试。':
52
+ 'Unable to get the Workspace Session list right now; please try again later.',
53
+ 'Session ID 格式无效。\n{usage}': 'Invalid Session ID format.\n{usage}',
54
+ '未找到该会话,请先执行 /sessionlist 确认 Session ID。':
55
+ 'Session not found; please run /sessionlist to confirm the Session ID.',
56
+ '子代理会话不能绑定到机器人对话,请选择普通会话。':
57
+ 'Sub-agent Sessions cannot be bound to a bot conversation; please choose a regular Session.',
58
+ '该会话的工作区归属不明确,暂时无法绑定。':
59
+ "The Session's Workspace ownership is ambiguous; cannot bind it right now.",
60
+ '暂时无法读取该会话的信息,请稍后重试。':
61
+ 'Unable to read the Session info right now; please try again later.',
62
+ '机器人正在移除或已重新接入,无法绑定原对话的会话。':
63
+ 'The bot is being removed or has been reconnected; cannot bind the Session of the original conversation.',
64
+ '工作区或会话状态已发生变化,请重试。':
65
+ 'The Workspace or Session state has changed; please try again.',
66
+ '暂时无法绑定会话,请稍后重试。': 'Unable to bind the Session right now; please try again later.',
67
+ '当前机器人暂不支持按序号绑定,请使用 /session Session ID。':
68
+ 'This bot does not support binding by index yet; please use /session Session ID.',
69
+ '会话序号不存在,请先执行 /sessionlist 查看序号。':
70
+ 'The Session index does not exist; please run /sessionlist to see the indexes.',
71
+ '暂时无法获取会话列表,请稍后重试。':
72
+ 'Unable to get the Session list right now; please try again later.',
73
+ '当前机器人暂不支持绑定已有会话。':
74
+ 'This bot does not support binding existing Sessions yet.',
75
+ '当前消息缺少可绑定的会话上下文。':
76
+ 'The current message lacks a conversation context to bind to.',
77
+ '当前聊天已绑定会话:': 'This chat is now bound to the Session:',
78
+ '标题:{title}': 'Title: {title}',
79
+ '归档:{archived}': 'Archived: {archived}',
80
+ '是': 'Yes',
81
+ '否': 'No',
82
+ '用法:/workspace 工作区绝对路径': 'Usage: /workspace Workspace absolute path',
83
+ '当前机器人暂不支持切换工作区。': 'This bot does not support switching Workspaces yet.',
84
+ '工作区已切换为:{workspace}': 'Workspace switched to: {workspace}',
85
+ '{message}\n用法:/workspace 工作区绝对路径': '{message}\nUsage: /workspace Workspace absolute path',
86
+ '机器人正在移除或已重新接入,无法切换原会话的工作区。':
87
+ 'The bot is being removed or has been reconnected; cannot switch the Workspace of the original Session.',
88
+
89
+ // preset-command.mjs
90
+ '用法:/presetlist(不带参数)': 'Usage: /presetlist (no arguments)',
91
+ '用法:\n/preset 查看当前设置\n/preset <序号> 按最近一次 /presetlist 的序号选择\n/preset <ID> 按 Agent Preset ID 选择\n/preset id:<纯数字 ID> 选择纯数字 ID\n/preset --default 跟随 Host 默认':
92
+ 'Usage:\n/preset Show current settings\n/preset <index> Select by index from the latest /presetlist\n/preset <ID> Select by Agent Preset ID\n/preset id:<numeric ID> Select a purely numeric ID\n/preset --default Follow the Host default',
93
+ '未设置或当前不可用': 'Not set or currently unavailable',
94
+ '{id}(当前不可用)': '{id} (currently unavailable)',
95
+ '跟随 Host 默认:{preset}': 'Following Host default: {preset}',
96
+ '跟随 Host 默认(Host 默认当前不可用)': 'Following Host default (Host default currently unavailable)',
97
+ '{id}(已不可用)': '{id} (no longer available)',
98
+ '当前机器人用于新会话的 Agent Preset:': 'Agent Preset this bot uses for new Sessions:',
99
+ '已有会话不会受此设置影响。': 'Existing Sessions are not affected by this setting.',
100
+ '查看可用项:/presetlist': 'See available options: /presetlist',
101
+ '恢复跟随 Host 默认:/preset --default': 'Restore following Host default: /preset --default',
102
+ 'Host 默认:{preset}': 'Host default: {preset}',
103
+ '可用 Agent Preset({count}):': 'Available Agent Presets ({count}):',
104
+ '当前没有可用 Agent Preset。': 'No Agent Presets are currently available.',
105
+ 'Host 默认': 'Host default',
106
+ '当前选择': 'current selection',
107
+ '当前生效': 'currently in effect',
108
+ '选择:/preset <序号或 ID>': 'To select: /preset <index or ID>',
109
+ '当前机器人用于新会话的 Agent Preset 已设置为:':
110
+ 'The Agent Preset this bot uses for new Sessions is now set to:',
111
+ '已有会话不变。若当前聊天已有会话,请先发送 /new,再发送普通消息,才会使用新设置创建会话。':
112
+ 'Existing Sessions are unchanged. If this chat already has a Session, send /new first, then a regular message, to create a Session with the new setting.',
113
+ 'Agent Preset 序号无效,请先执行 /presetlist。':
114
+ 'Invalid Agent Preset index; please run /presetlist first.',
115
+ '请先执行 /presetlist,再按列表序号选择 Agent Preset。':
116
+ 'Please run /presetlist first, then select an Agent Preset by list index.',
117
+ 'Agent Preset 序号不存在,请重新执行 /presetlist。':
118
+ 'The Agent Preset index does not exist; please run /presetlist again.',
119
+ 'Agent Preset ID 格式无效。\n{usage}': 'Invalid Agent Preset ID format.\n{usage}',
120
+ 'Agent Preset 不存在或当前不可用,请重新执行 /presetlist。':
121
+ 'The Agent Preset does not exist or is currently unavailable; please run /presetlist again.',
122
+ '工作区或机器人状态已发生变化,请重试。':
123
+ 'The Workspace or bot state has changed; please try again.',
124
+ '获取 Agent Preset 列表已取消。': 'Fetching the Agent Preset list was cancelled.',
125
+ '获取 Agent Preset 设置已取消。': 'Fetching the Agent Preset settings was cancelled.',
126
+ 'Agent Preset 修改已取消。': 'The Agent Preset change was cancelled.',
127
+ '暂时无法获取 Agent Preset 列表,请稍后重试。':
128
+ 'Unable to get the Agent Preset list right now; please try again later.',
129
+ '暂时无法获取 Agent Preset 设置,请稍后重试。':
130
+ 'Unable to get the Agent Preset settings right now; please try again later.',
131
+ 'Agent Preset 修改失败,请稍后重试。': 'Failed to change the Agent Preset; please try again later.',
132
+ 'Agent Preset 命令仅支持纯文字,请移除图片后重试。':
133
+ 'Agent Preset commands support text only; please remove images and try again.',
134
+
135
+ // model-command.mjs
136
+ '用法:/model <序号> 或 /model <provider>/<model>': 'Usage: /model <index> or /model <provider>/<model>',
137
+ '用法:/models(不带参数)': 'Usage: /models (no arguments)',
138
+ '模型序号无效:{input}': 'Invalid model index: {input}',
139
+ '请发送 /models 查看并输入有效的正整数序号。':
140
+ 'Please send /models to view the list and enter a valid positive integer index.',
141
+ '可用模型:': 'Available models:',
142
+ '当前没有可用模型。': 'No models are currently available.',
143
+ '以下模型提供方暂时不可用:': 'The following model providers are temporarily unavailable:',
144
+ '切换模型:/model <序号>': 'To switch models: /model <index>',
145
+ '当前模型:': 'Current model:',
146
+ '查看全部模型:/models': 'See all models: /models',
147
+ '当前聊天还没有会话。': 'This chat has no Session yet.',
148
+ '查看模型:/models': 'View models: /models',
149
+ '选择模型:/model <序号>': 'Select a model: /model <index>',
150
+ '当前任务正在运行,请等待完成或先发送 /stop。':
151
+ 'A task is currently running; please wait for it to finish or send /stop first.',
152
+ '当前聊天绑定的会话已不存在,请重试。':
153
+ 'The Session bound to this chat no longer exists; please try again.',
154
+ '无法切换到该模型。模型当前不可用,或不支持当前会话中的图片。':
155
+ 'Cannot switch to that model. It is currently unavailable, or does not support the images in this Session.',
156
+ '当前聊天绑定的会话已发生变化,请重试。':
157
+ 'The Session bound to this chat has changed; please try again.',
158
+ '获取模型列表已取消。': 'Fetching the model list was cancelled.',
159
+ '模型切换已取消。': 'The model switch was cancelled.',
160
+ '暂时无法获取模型列表,请稍后重试。':
161
+ 'Unable to get the model list right now; please try again later.',
162
+ '模型切换失败,请稍后重试。': 'Failed to switch the model; please try again later.',
163
+ '模型命令仅支持纯文字,请移除图片后重试。':
164
+ 'Model commands support text only; please remove images and try again.',
165
+ '当前任务正在等待你的回答或审批。': 'The current task is waiting for your answer or approval.',
166
+ '请先处理当前请求,或者发送 /stop 停止任务。':
167
+ 'Please handle the current request first, or send /stop to stop the task.',
168
+ '没有找到模型:{model}': 'Model not found: {model}',
169
+ '请发送 /models 查看可用模型。': 'Please send /models to view available models.',
170
+ '模型已切换为:\n{model}\n\n后续消息将使用该模型。':
171
+ 'Model switched to:\n{model}\n\nSubsequent messages will use this model.',
172
+
173
+ // compact-command.mjs
174
+ '用法:/compact(不带参数)': 'Usage: /compact (no arguments)',
175
+ '暂无可压缩的历史记录。': 'No compactable history yet.',
176
+ '当前会话正在生成回复或执行压缩,请稍后重试。':
177
+ 'The current Session is generating a reply or compacting; please try again later.',
178
+ '上下文压缩已取消。': 'Context compaction was cancelled.',
179
+ '压缩期间会话历史发生变化,本次未修改会话,请重试。':
180
+ 'The Session history changed during compaction; the Session was not modified this time, please try again.',
181
+ '未能生成有效的压缩摘要,本次未修改会话。':
182
+ 'Could not produce a useful compaction summary; the Session was not modified this time.',
183
+ '上下文压缩未正常完成,部分会话历史可能已变化,请检查会话后再重试。':
184
+ 'Context compaction did not finish cleanly; some Session history may have changed. Please inspect the Session before retrying.',
185
+ '上下文已压缩,但会话保存失败。': 'Context was compacted, but saving the Session failed.',
186
+ '已压缩 {count} 条历史记录(约 {tokens} 个 token)。':
187
+ 'Compacted {count} history items (~{tokens} tokens).',
188
+ '上下文压缩完成。': 'Context compaction completed.',
189
+ '上下文压缩失败。': 'Context compaction failed.',
190
+ '当前聊天绑定的会话已不存在,请发送新消息开启会话。':
191
+ 'The Session bound to this chat no longer exists; please send a new message to start a Session.',
192
+ '当前会话正在生成回复,请稍后重试。':
193
+ 'The current Session is generating a reply; please try again later.',
194
+ '当前 Harness 暂不支持从机器人执行上下文压缩。':
195
+ 'The current Harness does not support running context compaction from a bot yet.',
196
+ '上下文压缩失败,请稍后重试。': 'Context compaction failed; please try again later.',
197
+ '当前机器人没有可用的会话状态。': 'This bot has no available Session state.',
198
+ '当前聊天还没有可压缩的会话,请先发送一条消息。':
199
+ 'This chat has no Session to compact yet; please send a message first.',
200
+ '当前机器人暂不支持上下文压缩。': 'This bot does not support context compaction yet.',
201
+ '当前 Harness 未注册 /compact 命令,请确认上下文压缩组件已启用。':
202
+ 'The current Harness has not registered the /compact command; please make sure the context compaction component is enabled.',
203
+
204
+ // control-command.mjs
205
+ '用法:/stop(不带参数)': 'Usage: /stop (no arguments)',
206
+ '用法:/steer <补充指令>': 'Usage: /steer <additional instruction>',
207
+ '控制命令仅支持纯文字,请移除图片后重试。':
208
+ 'Control commands support text only; please remove images and try again.',
209
+ '当前聊天没有正在运行的任务。': 'This chat has no running task.',
210
+ '已请求停止当前任务。': 'Stop requested for the current task.',
211
+ '当前聊天没有正在运行的任务,请直接发送普通消息。':
212
+ 'This chat has no running task; just send a regular message.',
213
+ '已提交补充指令,Agent 会在下一步读取。':
214
+ 'Additional instruction submitted; the Agent will read it at the next step.',
215
+ };
@@ -0,0 +1,99 @@
1
+ // English translations (shared-c area). Keys are exact Chinese literals passed to t().
2
+ export default {
3
+ // harness-approval.mjs
4
+ '请精准回复「批准」或「拒绝」(也支持:同意 / 不同意 / yes / no)。':
5
+ 'Please reply exactly with 「批准」 (approve) or 「拒绝」 (reject). Also accepted: 同意 / 不同意 / yes / no.',
6
+ '请先完成当前问题,再精准回复「批准」或「拒绝」。':
7
+ 'Please finish the current question first, then reply exactly with 「批准」 (approve) or 「拒绝」 (reject).',
8
+ '该审批已处理,无需再次回复。':
9
+ 'This approval has already been handled; no need to reply again.',
10
+ 'DeepSeek Harness 需要你的审批:':
11
+ 'DeepSeek Harness needs your approval:',
12
+ '工具:{tool}': 'Tool: {tool}',
13
+ '操作参数:': 'Operation parameters:',
14
+ '原因:{reason}': 'Reason: {reason}',
15
+ '群聊中请 @机器人 后发送审批决定。':
16
+ 'In group chats, please @ the bot before sending your approval decision.',
17
+ '只有发起当前任务的用户可以处理这条审批。':
18
+ 'Only the user who started the current task can handle this approval.',
19
+ '审批决定正在提交,请稍候。':
20
+ 'Your approval decision is being submitted; please wait.',
21
+ '已批准,仅对本次操作有效。':
22
+ 'Approved — valid for this operation only.',
23
+ '已拒绝此次操作。': 'This operation was rejected.',
24
+ '无法完整展示这次操作,已安全拒绝此次审批。':
25
+ 'The operation could not be displayed in full, so this approval was safely rejected.',
26
+ '审批提交失败,请重新回复「批准」或「拒绝」。':
27
+ 'Failed to submit the approval; please reply with 「批准」 (approve) or 「拒绝」 (reject) again.',
28
+
29
+ // harness-question.mjs
30
+ 'DeepSeek Harness 需要你补充信息{progress}:':
31
+ 'DeepSeek Harness needs more information{progress}:',
32
+ '请输入你的回答。': 'Please enter your answer.',
33
+ '请回复选项序号或文字;多选用逗号分隔,也可补充其他内容。':
34
+ 'Reply with option numbers or text; separate multiple choices with commas, or add anything else.',
35
+ '请回复一个选项序号或文字,也可直接输入其他答案。':
36
+ 'Reply with an option number or its text, or type your own answer directly.',
37
+ '请直接回复你的答案。': 'Please reply with your answer directly.',
38
+ '群聊中请 @机器人 后发送答案。':
39
+ 'In group chats, please @ the bot before sending your answer.',
40
+
41
+ // image-prompt.mjs
42
+ '当前模型不支持图片,请用 /models 查看可用模型,再用 /model <序号> 切换后重发。':
43
+ 'The current model does not support images. Use /models to list available models, switch with /model <number>, then resend.',
44
+ '图片超过宿主允许的大小,请压缩后重试。':
45
+ 'The image exceeds the size allowed by the host; compress it and try again.',
46
+ '图片分辨率过高,请压缩后重试。':
47
+ 'The image resolution is too high; compress it and try again.',
48
+ '图片内容无效或格式不受支持,请重新发送。':
49
+ 'The image content is invalid or its format is unsupported; please resend it.',
50
+ '未能读取图片内容,请重新发送。':
51
+ 'Could not read the image content; please resend it.',
52
+ '图片格式与实际内容不一致,请重新发送。':
53
+ 'The image format does not match its actual content; please resend it.',
54
+ '一次发送的图片数量超过宿主限制,请减少后重试。':
55
+ 'The number of images sent at once exceeds the host limit; send fewer and try again.',
56
+ '图片总大小超过宿主限制,请减少图片或压缩后重试。':
57
+ 'The total image size exceeds the host limit; send fewer images or compress them and try again.',
58
+ '图片下载地址发生了重定向,暂时无法读取。':
59
+ 'The image download URL redirected and cannot be read right now.',
60
+ '图片下载失败(HTTP {status}),请重新发送后再试。':
61
+ 'Image download failed (HTTP {status}); please resend it and try again.',
62
+ '图片超过 5 MB,请压缩后重试。':
63
+ 'The image is larger than 5 MB; compress it and try again.',
64
+ '一次最多只能处理 {maxImages} 张图片。':
65
+ 'At most {maxImages} images can be processed at once.',
66
+ '一次发送的图片总大小过大,请减少图片数量或压缩后重试。':
67
+ 'The total size of the images sent is too large; send fewer images or compress them and try again.',
68
+ '图片下载失败,请重新发送后再试。':
69
+ 'Image download failed; please resend it and try again.',
70
+ '暂不支持该图片格式,请发送 JPEG、PNG、WebP 或 GIF 图片。':
71
+ 'This image format is not supported yet; please send a JPEG, PNG, WebP, or GIF image.',
72
+
73
+ // connection-test.mjs
74
+ '✅ DeepSeek Harness 连接测试成功':
75
+ '✅ DeepSeek Harness connection test succeeded',
76
+ '这条消息由插件页面中的“{name}”机器人卡片发出。':
77
+ 'This message was sent from the "{name}" bot card on the plugin page.',
78
+ '{channelLabel}尚未收到可用于测试的私聊消息。':
79
+ 'The {channelLabel} has not received a direct message that can be used for testing yet.',
80
+ '机器人': 'bot',
81
+
82
+ // editable-message-stream.mjs / harness-client.mjs / progress text
83
+ '正在处理…': 'Processing…',
84
+ '处理完成。': 'Processing complete.',
85
+ '工具': 'tool',
86
+ '正在整理结果…': 'Gathering results…',
87
+ '_正在搜索网络并整理信息…_': '_Searching the web and gathering information…_',
88
+ '_正在使用 {name}…_': '_Using {name}…_',
89
+
90
+ // image-prompt.mjs
91
+ '请分析这张图片。': 'Analyze this image.',
92
+
93
+ // inbound-file.mjs
94
+ '文件接收失败,请重新发送后再试。': 'File reception failed. Please resend it.',
95
+ '文件下载失败,请重新发送后再试。': 'File download failed. Please resend it.',
96
+
97
+ // agent-preset.mjs
98
+ 'Agent Preset 无效。': 'Invalid Agent Preset.',
99
+ };
@@ -0,0 +1,27 @@
1
+ // English translations (slack area). Keys are exact Chinese literals passed to t().
2
+ export default {
3
+ 'Slack机器人': 'Slack bot',
4
+ 'Slack机器人凭据缺失,请移除后重新接入。':
5
+ 'Slack bot credentials are missing. Remove the bot and connect it again.',
6
+ 'Slack Socket Mode 连接未就绪,插件会自动重试。':
7
+ 'The Slack Socket Mode connection is not ready yet. The plugin will retry automatically.',
8
+ 'Slack机器人已接入,Socket Mode 连接暂未就绪。':
9
+ 'The Slack bot is connected, but the Socket Mode connection is not ready yet.',
10
+ 'Slack Socket Mode 连接仍未就绪,请检查两个 Token。':
11
+ 'The Slack Socket Mode connection is still not ready. Check both tokens.',
12
+ 'Slack机器人尚未连接': 'The Slack bot is not connected yet',
13
+ 'Slack Socket Mode 长连接运行正常':
14
+ 'The Slack Socket Mode long-lived connection is running normally',
15
+ 'Slack连接未就绪,插件会自动重试':
16
+ 'The Slack connection is not ready. The plugin will retry automatically',
17
+ 'Slack连接当前离线': 'The Slack connection is currently offline',
18
+
19
+ 'Slack 未授权机器人读取该文件。请为应用添加 files:read 后重新安装,再重新发送图片。':
20
+ 'Slack has not granted the bot access to this file. Add the files:read scope to the app, reinstall it, then send the image again.',
21
+ 'Slack Bot Token 必须以 xoxb- 开头。': 'The Slack Bot Token must start with xoxb-.',
22
+ 'Slack App Token 必须以 xapp- 开头。': 'The Slack App Token must start with xapp-.',
23
+ 'Slack Bot Token 没有返回完整的机器人身份。':
24
+ 'The Slack Bot Token did not return a complete bot identity.',
25
+ 'Slack App Token 无法创建 Socket Mode 连接,请确认已启用 Socket Mode 和 connections:write。':
26
+ 'The Slack App Token could not create a Socket Mode connection. Make sure Socket Mode and connections:write are enabled.',
27
+ };
@@ -0,0 +1,21 @@
1
+ // English translations (telegram area). Keys are exact Chinese literals passed to t().
2
+ export default {
3
+ '开启一个全新会话': 'Start a brand-new Session',
4
+ '压缩当前会话的较早上下文': 'Compact the earlier context of the current Session',
5
+ '切换工作区': 'Switch Workspace',
6
+ '列出工作区绝对路径': 'List Workspace absolute paths',
7
+ '列出会话 ID 和标题': 'List Session IDs and titles',
8
+ '将当前聊天绑定到指定会话': 'Bind the current chat to a specific Session',
9
+ '按序号列出所有可用模型': 'List all available models by number',
10
+ '查看或切换当前会话模型': 'View or switch the model of the current Session',
11
+ '列出可用 Agent Preset': 'List available Agent Presets',
12
+ '查看或设置新会话 Agent Preset': 'View or set the Agent Preset for new Sessions',
13
+ '停止当前任务': 'Stop the current task',
14
+ '纠偏当前任务': 'Steer the current task',
15
+ '检查连接状态': 'Check connection status',
16
+ '显示帮助': 'Show help',
17
+ '该 Telegram 机器人已配置 Webhook,请先在原服务中移除 Webhook 后重试。':
18
+ 'This Telegram bot already has a Webhook configured. Remove the Webhook from the original service and try again.',
19
+ 'Telegram机器人': 'Telegram Bot',
20
+ ' Bot API 长轮询': ' Bot API long polling',
21
+ };
@@ -0,0 +1,38 @@
1
+ // English translations (wecom area). Keys are exact Chinese literals passed to t().
2
+ export default {
3
+ // Help text (wecom-bridge.mjs)
4
+ '企业微信机器人已连接 DeepSeek Harness。': 'The Enterprise WeChat bot is connected to DeepSeek Harness.',
5
+
6
+ // Bot replies and status text (wecom-bridge.mjs)
7
+
8
+ '当前待处理图片较多,请稍后重新发送。': 'Too many images are pending. Please send them again later.',
9
+
10
+ '结果文件「{name}」已生成,但企业微信智能机器人缺少素材上传或文件消息能力,请检查机器人权限。': 'The result file "{name}" was generated, but the Enterprise WeChat bot lacks media upload or file message capability. Please check the bot permissions.',
11
+ '结果文件「{name}」超过当前企业微信机器人可发送的文件大小,未发送。': 'The result file "{name}" exceeds the file size this Enterprise WeChat bot can send and was not sent.',
12
+ '结果文件「{name}」为空,企业微信不允许发送空文件。': 'The result file "{name}" is empty. Enterprise WeChat does not allow sending empty files.',
13
+ '结果文件「{name}」暂时被企业微信限流,未能发送,请稍后重试。': 'The result file "{name}" was rate-limited by Enterprise WeChat and could not be sent. Please try again later.',
14
+ '结果文件「{name}」已生成,但企业微信拒绝了该文件或文件消息。': 'The result file "{name}" was generated, but Enterprise WeChat rejected the file or file message.',
15
+ '结果文件「{name}」已生成,但暂时未能通过企业微信发送,请稍后重试。': 'The result file "{name}" was generated but could not be sent via Enterprise WeChat right now. Please try again later.',
16
+ '任务已完成,但没有生成可显示的文本。': 'The task completed, but no displayable text was generated.',
17
+ '目前支持文字、图片和语音转写消息。': 'Currently only text, images, and voice transcription messages are supported.',
18
+ '企业微信机器人与 DeepSeek Harness 连接正常。': 'The connection between the Enterprise WeChat bot and DeepSeek Harness is working.',
19
+ '正在思考中…': 'Thinking…',
20
+ '企业微信交互问题发送失败。': 'Failed to send the Enterprise WeChat interaction question.',
21
+
22
+ // Provisioning, status, and errors (wecom-controller.mjs)
23
+ '企业微信机器人凭据缺失,请移除后重新扫码。': 'The Enterprise WeChat bot credentials are missing. Please remove the bot and scan the QR code again.',
24
+ '企业微信连接未就绪,插件会自动重试。': 'The Enterprise WeChat connection is not ready. The plugin will retry automatically.',
25
+ '扫码绑定已取消。': 'QR code binding has been cancelled.',
26
+ '无法生成企业微信二维码,请稍后重试。': 'Unable to generate the Enterprise WeChat QR code. Please try again later.',
27
+ '企业微信二维码已过期,请重新生成。': 'The Enterprise WeChat QR code has expired. Please generate a new one.',
28
+ '企业微信机器人已绑定,消息连接暂未就绪。': 'The Enterprise WeChat bot is bound, but the message connection is not ready yet.',
29
+ '企业微信连接仍未就绪,请稍后重试。': 'The Enterprise WeChat connection is still not ready. Please try again later.',
30
+ '企业微信扫码没有完成,请重新生成二维码。': 'The Enterprise WeChat QR scan was not completed. Please generate a new QR code.',
31
+ '企业微信扫码服务暂时不可用,请重新生成二维码。': 'The Enterprise WeChat QR service is temporarily unavailable. Please generate a new QR code.',
32
+ '企业微信已授权,但无法安全保存接入配置。': 'Enterprise WeChat authorization succeeded, but the connection configuration could not be saved safely.',
33
+ '企业微信机器人': 'Enterprise WeChat bot',
34
+ '企业微信机器人({botId})': 'Enterprise WeChat bot ({botId})',
35
+ '企业微信 WebSocket 长连接运行正常': 'The Enterprise WeChat WebSocket long connection is running normally',
36
+ '企业微信连接未就绪,插件会自动重试': 'The Enterprise WeChat connection is not ready. The plugin will retry automatically',
37
+ '企业微信连接当前离线': 'The Enterprise WeChat connection is currently offline',
38
+ };
@@ -0,0 +1,80 @@
1
+ // English translations (weixin area). Keys are exact Chinese literals passed to t().
2
+ export default {
3
+ // weixin-bridge.mjs
4
+ '微信已连接 DeepSeek Harness。': 'WeChat is connected to DeepSeek Harness.',
5
+ '结果文件「{name}」已生成,但微信机器人当前没有文件消息发送权限,请检查机器人文件消息能力。': 'The result file "{name}" was generated, but the WeChat bot currently has no permission to send file messages. Please check the bot\'s file messaging capability.',
6
+ '结果文件「{name}」超过当前微信会话可发送的文件大小,未发送。': 'The result file "{name}" exceeds the file size limit of the current WeChat conversation and was not sent.',
7
+ '结果文件「{name}」暂时被微信限流,未能发送,请稍后重试。': 'The result file "{name}" was temporarily rate-limited by WeChat and was not sent. Please try again later.',
8
+ '结果文件「{name}」已生成,但微信拒绝了该文件消息。': 'The result file "{name}" was generated, but WeChat rejected the file message.',
9
+ '结果文件「{name}」已生成,但暂时未能通过微信发送,请稍后重试。': 'The result file "{name}" was generated but could not be sent via WeChat right now. Please try again later.',
10
+ '目前支持文字、图片,以及微信已转成文字的语音消息。': 'Currently supports text, images, and voice messages that WeChat has converted to text.',
11
+ '微信与 DeepSeek Harness 连接正常。': 'WeChat is connected to DeepSeek Harness normally.',
12
+ '微信交互问题发送失败。': 'Failed to send the WeChat interaction question.',
13
+
14
+ // weixin-controller.mjs
15
+ '微信已授权,但无法读取现有登录凭据。请检查 DSH 凭据存储。': 'WeChat was authorized, but the existing login credential could not be read. Please check the DSH credential store.',
16
+ '微信已授权,但登录凭据无法写入 DSH 凭据存储。请检查凭据存储是否可写。': 'WeChat was authorized, but the login credential could not be written to the DSH credential store. Please check that the credential store is writable.',
17
+ '微信已授权,但账号配置无法写入本机。请检查 DSH_HOME 目录权限。': 'WeChat was authorized, but the account configuration could not be written locally. Please check the DSH_HOME directory permissions.',
18
+ '微信已授权,但无法初始化账号状态或工作区。请检查 DSH_HOME 和工作区目录。': 'WeChat was authorized, but the account state or workspace could not be initialized. Please check DSH_HOME and the workspace directories.',
19
+ '微信已授权,但插件无法连接本机 Harness。请检查 dsh web 地址和端口。': 'WeChat was authorized, but the plugin could not connect to the local Harness. Please check the dsh web address and port.',
20
+ '微信已授权,但 Harness 健康检查超时。请确认 dsh web 未阻塞。': 'WeChat was authorized, but the Harness health check timed out. Please confirm dsh web is not blocked.',
21
+ '微信已授权,但 Harness 健康检查需要身份认证。请检查代理、网关或自定义鉴权配置。': 'WeChat was authorized, but the Harness health check requires authentication. Please check proxy, gateway, or custom auth configuration.',
22
+ '微信已授权,但本机 Harness 请求被代理要求认证。请让回环地址绕过代理,并检查 NO_PROXY 配置。': 'WeChat was authorized, but the local Harness request was challenged for proxy authentication. Please bypass the proxy for loopback addresses and check the NO_PROXY configuration.',
23
+ '微信已授权,但 Harness 异常拒绝了回环地址的健康检查。请检查 HTTP 代理、Harness 源码版本和构建产物。': 'WeChat was authorized, but Harness unexpectedly rejected the health check from a loopback address. Please check the HTTP proxy, Harness source version, and build artifacts.',
24
+ '微信已授权,但 Harness 的 Host 信任检查拒绝了非回环地址请求。请检查 harnessBaseUrl 与 trustedHosts 配置。': 'WeChat was authorized, but the Harness Host trust check rejected a non-loopback request. Please check the harnessBaseUrl and trustedHosts configuration.',
25
+ '微信已授权,但健康检查收到了非 Harness 标准的 403 拒绝响应。请检查代理或网关配置。': 'WeChat was authorized, but the health check received a non-standard Harness 403 rejection. Please check the proxy or gateway configuration.',
26
+ '微信已授权,但找不到 Harness 健康检查接口。请确认 Harness 与插件版本兼容。': 'WeChat was authorized, but the Harness health check endpoint was not found. Please confirm the Harness and plugin versions are compatible.',
27
+ '微信已授权,但 Harness 健康检查返回服务错误。请查看 dsh web 日志。': 'WeChat was authorized, but the Harness health check returned a server error. Please check the dsh web logs.',
28
+ '微信已授权,但 Harness 返回了无法识别的响应。请确认 Harness 与插件版本兼容。': 'WeChat was authorized, but Harness returned an unrecognized response. Please confirm the Harness and plugin versions are compatible.',
29
+ '微信已授权,但 Harness 拒绝了健康检查请求。请查看 dsh web 日志。': 'WeChat was authorized, but Harness rejected the health check request. Please check the dsh web logs.',
30
+ '微信已授权,但 Harness 健康检查发生未知错误。请查看 dsh web 日志。': 'WeChat was authorized, but the Harness health check failed with an unknown error. Please check the dsh web logs.',
31
+ '微信已授权,但消息连接初始化失败。请查看 dsh web 日志后重试。': 'WeChat was authorized, but the message connection failed to initialize. Please check the dsh web logs and try again.',
32
+ '微信已授权,但激活过程中发生未知错误。请查看 dsh web 日志。': 'WeChat was authorized, but an unknown error occurred during activation. Please check the dsh web logs.',
33
+ '登录凭据缺失,请移除账号后重新扫码。': 'The login credential is missing. Please remove the account and scan the QR code again.',
34
+ '微信连接未就绪,插件会自动重试。': 'The WeChat connection is not ready; the plugin will retry automatically.',
35
+ '微信连接未就绪,插件会自动重试': 'The WeChat connection is not ready; the plugin will retry automatically',
36
+ '无法生成微信二维码,请稍后重试。': 'Unable to generate the WeChat QR code. Please try again later.',
37
+ '微信连接仍未就绪,请稍后重试。': 'The WeChat connection is still not ready. Please try again later.',
38
+ '微信机器人': 'WeChat Bot',
39
+ '微信机器人({name})': 'WeChat Bot ({name})',
40
+ '微信消息长轮询运行正常': 'WeChat message long-polling is running normally',
41
+ '微信连接当前离线': 'The WeChat connection is currently offline',
42
+ '配对码多次错误,请重新生成二维码。': 'The pairing code was entered incorrectly too many times. Please generate a new QR code.',
43
+ '该微信账号已绑定,但本机没有可恢复的凭据。': 'This WeChat account is already bound, but no recoverable credential exists on this machine.',
44
+ '微信授权成功,但返回的账号凭据不完整。': 'WeChat authorization succeeded, but the returned account credential is incomplete.',
45
+
46
+ // weixin-runtime.mjs
47
+ '微信登录凭据已失效,请移除账号后重新扫码。': 'The WeChat login credential has expired. Please remove the account and scan the QR code again.',
48
+ '微信消息同步请求被拒绝。': 'The WeChat message sync request was rejected.',
49
+
50
+ // weixin-api.mjs
51
+ '微信图片的加密密钥无效。': 'The encryption key of the WeChat image is invalid.',
52
+ '微信图片的加密数据无效。': 'The encrypted data of the WeChat image is invalid.',
53
+ '微信图片解密失败。': 'Failed to decrypt the WeChat image.',
54
+ '微信图片没有可用的下载地址。': 'The WeChat image has no usable download URL.',
55
+ '微信图片的下载地址无效。': 'The download URL of the WeChat image is invalid.',
56
+ '微信图片的下载地址不受信任。': 'The download URL of the WeChat image is not trusted.',
57
+ '微信服务返回了无效的连接地址。': 'The WeChat service returned an invalid connection URL.',
58
+ '微信服务返回了不受信任的连接地址。': 'The WeChat service returned an untrusted connection URL.',
59
+ '微信服务没有返回扫码地址。': 'The WeChat service did not return a QR-code URL.',
60
+ '微信服务返回了无效的扫码地址。': 'The WeChat service returned an invalid QR-code URL.',
61
+ '微信服务返回了不受信任的扫码地址。': 'The WeChat service returned an untrusted QR-code URL.',
62
+ '微信服务返回了无效的文件上传地址。': 'The WeChat service returned an invalid file upload URL.',
63
+ '微信服务返回了不受信任的文件上传地址。': 'The WeChat service returned an untrusted file upload URL.',
64
+ '微信服务没有返回文件上传地址。': 'The WeChat service did not return a file upload URL.',
65
+ '微信文件上传被拒绝(HTTP {status})。': 'The WeChat file upload was rejected (HTTP {status}).',
66
+ '微信文件上传失败(HTTP {status})。': 'The WeChat file upload failed (HTTP {status}).',
67
+ '微信文件上传响应缺少下载参数。': 'The WeChat file upload response is missing the download parameter.',
68
+ '微信文件上传失败。': 'The WeChat file upload failed.',
69
+ '拒绝访问不受信任的微信服务地址。': 'Refusing to access an untrusted WeChat service URL.',
70
+ '微信服务请求失败(HTTP {status})。': 'The WeChat service request failed (HTTP {status}).',
71
+ '微信服务返回了无法解析的响应。': 'The WeChat service returned an unparseable response.',
72
+ '微信服务请求超时。': 'The WeChat service request timed out.',
73
+ '暂时无法访问微信服务。': 'The WeChat service is temporarily unreachable.',
74
+ '微信服务返回了无法识别的扫码状态。': 'The WeChat service returned an unrecognized QR-code status.',
75
+ '微信服务没有返回二维码令牌。': 'The WeChat service did not return a QR-code token.',
76
+ '微信服务拒绝了回复消息。': 'The WeChat service rejected the reply message.',
77
+ '微信服务拒绝了文件上传请求。': 'The WeChat service rejected the file upload request.',
78
+ '微信服务拒绝了文件消息。': 'The WeChat service rejected the file message.',
79
+ '微信账号连接启动失败。': 'Failed to start the WeChat account connection.',
80
+ };
@@ -0,0 +1,17 @@
1
+ // English translations (whatsapp area). Keys are exact Chinese literals passed to t().
2
+ export default {
3
+ 'WhatsApp 关联设备已失效,请移除后重新扫码。': 'The WhatsApp linked device is no longer valid. Remove it and scan the QR code again.',
4
+ 'WhatsApp 连接未就绪,插件会自动重试。': 'The WhatsApp connection is not ready yet; the plugin will retry automatically.',
5
+ 'WhatsApp 连接仍未就绪,请稍后重试。': 'The WhatsApp connection is still not ready. Please try again later.',
6
+ 'WhatsApp机器人尚未连接': 'The WhatsApp bot is not connected yet',
7
+ 'WhatsApp机器人': 'WhatsApp bot',
8
+ 'WhatsApp Web 关联设备运行正常': 'The WhatsApp Web linked device is working normally',
9
+ 'WhatsApp 连接未就绪': 'The WhatsApp connection is not ready',
10
+ 'WhatsApp 连接当前离线': 'The WhatsApp connection is currently offline',
11
+ 'WhatsApp 已绑定,消息连接暂未就绪。': 'WhatsApp is linked, but the messaging connection is not ready yet.',
12
+ 'WhatsApp 已扫码,但无法保存关联设备。': 'The QR code was scanned, but the linked device could not be saved.',
13
+ '无法连接 WhatsApp,请重新生成二维码。': 'Unable to connect to WhatsApp. Please generate a new QR code.',
14
+
15
+ 'WhatsApp账号': 'WhatsApp account',
16
+ ' Web 关联设备': ' Web linked device',
17
+ };