iac-code 0.1.0__py3-none-any.whl
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.
- iac_code/__init__.py +2 -0
- iac_code/acp/__init__.py +97 -0
- iac_code/acp/convert.py +423 -0
- iac_code/acp/http_sse.py +448 -0
- iac_code/acp/mcp.py +54 -0
- iac_code/acp/metrics.py +71 -0
- iac_code/acp/server.py +662 -0
- iac_code/acp/session.py +446 -0
- iac_code/acp/slash_registry.py +125 -0
- iac_code/acp/state.py +99 -0
- iac_code/acp/tools.py +112 -0
- iac_code/acp/types.py +13 -0
- iac_code/acp/version.py +26 -0
- iac_code/agent/__init__.py +19 -0
- iac_code/agent/agent_loop.py +640 -0
- iac_code/agent/agent_tool.py +269 -0
- iac_code/agent/agent_types.py +87 -0
- iac_code/agent/message.py +153 -0
- iac_code/agent/system_prompt.py +313 -0
- iac_code/cli/__init__.py +3 -0
- iac_code/cli/headless.py +114 -0
- iac_code/cli/main.py +246 -0
- iac_code/cli/output_formats.py +125 -0
- iac_code/commands/__init__.py +93 -0
- iac_code/commands/auth.py +1055 -0
- iac_code/commands/clear.py +34 -0
- iac_code/commands/compact.py +43 -0
- iac_code/commands/debug.py +45 -0
- iac_code/commands/effort.py +116 -0
- iac_code/commands/exit.py +10 -0
- iac_code/commands/help.py +49 -0
- iac_code/commands/model.py +130 -0
- iac_code/commands/registry.py +245 -0
- iac_code/commands/resume.py +49 -0
- iac_code/commands/tasks.py +41 -0
- iac_code/config.py +304 -0
- iac_code/i18n/__init__.py +141 -0
- iac_code/i18n/locales/zh/LC_MESSAGES/messages.po +1355 -0
- iac_code/memory/__init__.py +1 -0
- iac_code/memory/memory_manager.py +92 -0
- iac_code/memory/memory_tools.py +88 -0
- iac_code/providers/__init__.py +1 -0
- iac_code/providers/anthropic_provider.py +284 -0
- iac_code/providers/base.py +128 -0
- iac_code/providers/dashscope_provider.py +47 -0
- iac_code/providers/deepseek_provider.py +36 -0
- iac_code/providers/manager.py +399 -0
- iac_code/providers/openai_provider.py +344 -0
- iac_code/providers/retry.py +58 -0
- iac_code/providers/stream_watchdog.py +47 -0
- iac_code/providers/thinking.py +164 -0
- iac_code/services/__init__.py +1 -0
- iac_code/services/agent_factory.py +127 -0
- iac_code/services/cloud_credentials.py +22 -0
- iac_code/services/context_manager.py +221 -0
- iac_code/services/providers/__init__.py +1 -0
- iac_code/services/providers/aliyun.py +232 -0
- iac_code/services/session_index.py +281 -0
- iac_code/services/session_storage.py +245 -0
- iac_code/services/telemetry/__init__.py +66 -0
- iac_code/services/telemetry/attributes.py +84 -0
- iac_code/services/telemetry/client.py +330 -0
- iac_code/services/telemetry/config.py +76 -0
- iac_code/services/telemetry/constants.py +75 -0
- iac_code/services/telemetry/content_serializer.py +124 -0
- iac_code/services/telemetry/events.py +42 -0
- iac_code/services/telemetry/fallback.py +59 -0
- iac_code/services/telemetry/identity.py +73 -0
- iac_code/services/telemetry/metrics.py +62 -0
- iac_code/services/telemetry/names.py +199 -0
- iac_code/services/telemetry/sanitize.py +88 -0
- iac_code/services/telemetry/sink.py +67 -0
- iac_code/services/telemetry/tracing.py +38 -0
- iac_code/services/telemetry/types.py +13 -0
- iac_code/services/token_budget.py +54 -0
- iac_code/services/token_counter.py +76 -0
- iac_code/skills/__init__.py +1 -0
- iac_code/skills/bundled/__init__.py +94 -0
- iac_code/skills/bundled/iac_aliyun/SKILL.md +192 -0
- iac_code/skills/bundled/iac_aliyun/__init__.py +16 -0
- iac_code/skills/bundled/iac_aliyun/references/cloud-products/ecs.md +167 -0
- iac_code/skills/bundled/iac_aliyun/references/cloud-products/oss.md +69 -0
- iac_code/skills/bundled/iac_aliyun/references/cloud-products/rds.md +95 -0
- iac_code/skills/bundled/iac_aliyun/references/cloud-products/redis.md +100 -0
- iac_code/skills/bundled/iac_aliyun/references/cloud-products/slb.md +60 -0
- iac_code/skills/bundled/iac_aliyun/references/cloud-products/vpc.md +54 -0
- iac_code/skills/bundled/iac_aliyun/references/ros-template.md +155 -0
- iac_code/skills/bundled/iac_aliyun/references/template-parameters.md +206 -0
- iac_code/skills/bundled/iac_aliyun/references/terraform-template.md +101 -0
- iac_code/skills/bundled/iac_aliyun/scripts/tf2ros.py +77 -0
- iac_code/skills/bundled/simplify.py +28 -0
- iac_code/skills/discovery.py +136 -0
- iac_code/skills/frontmatter.py +119 -0
- iac_code/skills/listing.py +92 -0
- iac_code/skills/loader.py +42 -0
- iac_code/skills/processor.py +81 -0
- iac_code/skills/renderer.py +157 -0
- iac_code/skills/skill_definition.py +82 -0
- iac_code/skills/skill_tool.py +261 -0
- iac_code/state/__init__.py +5 -0
- iac_code/state/app_state.py +122 -0
- iac_code/tasks/__init__.py +1 -0
- iac_code/tasks/notification_queue.py +28 -0
- iac_code/tasks/task_state.py +66 -0
- iac_code/tasks/task_tools.py +114 -0
- iac_code/tools/__init__.py +8 -0
- iac_code/tools/base.py +226 -0
- iac_code/tools/bash.py +133 -0
- iac_code/tools/cloud/__init__.py +0 -0
- iac_code/tools/cloud/aliyun/__init__.py +0 -0
- iac_code/tools/cloud/aliyun/aliyun_api.py +510 -0
- iac_code/tools/cloud/aliyun/aliyun_doc_search.py +145 -0
- iac_code/tools/cloud/aliyun/endpoints.yml +343 -0
- iac_code/tools/cloud/aliyun/ros_client.py +56 -0
- iac_code/tools/cloud/aliyun/ros_stack.py +633 -0
- iac_code/tools/cloud/aliyun/ros_stack_instances.py +247 -0
- iac_code/tools/cloud/base_api.py +162 -0
- iac_code/tools/cloud/base_stack.py +242 -0
- iac_code/tools/cloud/registry.py +20 -0
- iac_code/tools/cloud/types.py +105 -0
- iac_code/tools/edit_file.py +121 -0
- iac_code/tools/glob.py +103 -0
- iac_code/tools/grep.py +254 -0
- iac_code/tools/list_files.py +104 -0
- iac_code/tools/read_file.py +127 -0
- iac_code/tools/result_storage.py +39 -0
- iac_code/tools/tool_executor.py +165 -0
- iac_code/tools/web_fetch.py +177 -0
- iac_code/tools/write_file.py +88 -0
- iac_code/types/__init__.py +40 -0
- iac_code/types/permissions.py +26 -0
- iac_code/types/skill_source.py +11 -0
- iac_code/types/stream_events.py +227 -0
- iac_code/ui/__init__.py +5 -0
- iac_code/ui/banner.py +110 -0
- iac_code/ui/components/__init__.py +0 -0
- iac_code/ui/components/dialog.py +142 -0
- iac_code/ui/components/divider.py +20 -0
- iac_code/ui/components/fuzzy_picker.py +308 -0
- iac_code/ui/components/progress_bar.py +54 -0
- iac_code/ui/components/search_box.py +165 -0
- iac_code/ui/components/select.py +319 -0
- iac_code/ui/components/status_icon.py +42 -0
- iac_code/ui/components/tabs.py +128 -0
- iac_code/ui/core/__init__.py +0 -0
- iac_code/ui/core/in_place_render.py +129 -0
- iac_code/ui/core/input_history.py +118 -0
- iac_code/ui/core/key_event.py +41 -0
- iac_code/ui/core/prompt_input.py +507 -0
- iac_code/ui/core/raw_input.py +302 -0
- iac_code/ui/core/screen.py +80 -0
- iac_code/ui/dialogs/__init__.py +0 -0
- iac_code/ui/dialogs/global_search.py +178 -0
- iac_code/ui/dialogs/history_search.py +100 -0
- iac_code/ui/dialogs/model_picker.py +280 -0
- iac_code/ui/dialogs/quick_open.py +108 -0
- iac_code/ui/dialogs/resume_picker.py +749 -0
- iac_code/ui/keybindings/__init__.py +0 -0
- iac_code/ui/keybindings/manager.py +124 -0
- iac_code/ui/renderer.py +1535 -0
- iac_code/ui/repl.py +772 -0
- iac_code/ui/spinner.py +112 -0
- iac_code/ui/suggestions/__init__.py +0 -0
- iac_code/ui/suggestions/aggregator.py +171 -0
- iac_code/ui/suggestions/command_provider.py +43 -0
- iac_code/ui/suggestions/directory_provider.py +95 -0
- iac_code/ui/suggestions/file_provider.py +121 -0
- iac_code/ui/suggestions/shell_history_provider.py +108 -0
- iac_code/ui/suggestions/token_extractor.py +77 -0
- iac_code/ui/suggestions/types.py +45 -0
- iac_code/ui/transcript_view.py +199 -0
- iac_code/utils/__init__.py +0 -0
- iac_code/utils/background_housekeeping.py +53 -0
- iac_code/utils/cleanup.py +68 -0
- iac_code/utils/json_utils.py +60 -0
- iac_code/utils/log.py +150 -0
- iac_code/utils/project_paths.py +74 -0
- iac_code/utils/tool_input_parser.py +62 -0
- iac_code-0.1.0.dist-info/LICENSE +201 -0
- iac_code-0.1.0.dist-info/METADATA +64 -0
- iac_code-0.1.0.dist-info/RECORD +184 -0
- iac_code-0.1.0.dist-info/WHEEL +5 -0
- iac_code-0.1.0.dist-info/entry_points.txt +2 -0
- iac_code-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,1355 @@
|
|
|
1
|
+
# Chinese translations for iac-code.
|
|
2
|
+
# Copyright (C) 2026
|
|
3
|
+
# This file is distributed under the same license as the iac-code package.
|
|
4
|
+
#
|
|
5
|
+
msgid ""
|
|
6
|
+
msgstr ""
|
|
7
|
+
"Project-Id-Version: iac-code 0.1.0\n"
|
|
8
|
+
"Report-Msgid-Bugs-To: \n"
|
|
9
|
+
"POT-Creation-Date: 2026-05-12 16:23+0800\n"
|
|
10
|
+
"PO-Revision-Date: 2026-04-02 00:00+0000\n"
|
|
11
|
+
"Last-Translator: \n"
|
|
12
|
+
"Language: zh\n"
|
|
13
|
+
"Language-Team: Chinese\n"
|
|
14
|
+
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
15
|
+
"MIME-Version: 1.0\n"
|
|
16
|
+
"Content-Type: text/plain; charset=utf-8\n"
|
|
17
|
+
"Content-Transfer-Encoding: 8bit\n"
|
|
18
|
+
"Generated-By: Babel 2.18.0\n"
|
|
19
|
+
|
|
20
|
+
#: src/iac_code/acp/slash_registry.py:44
|
|
21
|
+
#, python-brace-format
|
|
22
|
+
msgid ""
|
|
23
|
+
"Command '/{cmd_name}' is not supported over ACP. Supported commands: "
|
|
24
|
+
"{supported}"
|
|
25
|
+
msgstr "命令 '/{cmd_name}' 不支持通过 ACP 使用。支持的命令:{supported}"
|
|
26
|
+
|
|
27
|
+
#: src/iac_code/acp/slash_registry.py:56
|
|
28
|
+
#, python-brace-format
|
|
29
|
+
msgid "Command '/{cmd_name}' handler not implemented."
|
|
30
|
+
msgstr "命令 '/{cmd_name}' 的处理器尚未实现。"
|
|
31
|
+
|
|
32
|
+
#: src/iac_code/acp/slash_registry.py:68
|
|
33
|
+
#, python-brace-format
|
|
34
|
+
msgid "Compaction failed: {error}"
|
|
35
|
+
msgstr "压缩失败:{error}"
|
|
36
|
+
|
|
37
|
+
#: src/iac_code/acp/slash_registry.py:71 src/iac_code/commands/compact.py:24
|
|
38
|
+
msgid "Nothing to compact: conversation is empty."
|
|
39
|
+
msgstr "无内容可压缩:对话为空。"
|
|
40
|
+
|
|
41
|
+
#: src/iac_code/acp/slash_registry.py:74 src/iac_code/commands/compact.py:27
|
|
42
|
+
#, python-brace-format
|
|
43
|
+
msgid ""
|
|
44
|
+
"Conversation too short to compact: all messages are within the recent "
|
|
45
|
+
"{turns}-turn preservation window."
|
|
46
|
+
msgstr "对话过短,无需压缩:所有消息都在最近 {turns} 轮保留窗口内。"
|
|
47
|
+
|
|
48
|
+
#: src/iac_code/acp/slash_registry.py:78 src/iac_code/commands/compact.py:30
|
|
49
|
+
msgid "Compaction failed. See logs for details."
|
|
50
|
+
msgstr "压缩失败,详情请查看日志。"
|
|
51
|
+
|
|
52
|
+
#: src/iac_code/acp/slash_registry.py:83
|
|
53
|
+
#, python-brace-format
|
|
54
|
+
msgid ""
|
|
55
|
+
"Context compacted: {original} → {compacted} tokens ({percent} reduction)."
|
|
56
|
+
" Context usage: {usage}"
|
|
57
|
+
msgstr "上下文已压缩:{original} → {compacted} tokens(减少 {percent})。上下文用量:{usage}"
|
|
58
|
+
|
|
59
|
+
#: src/iac_code/acp/slash_registry.py:97
|
|
60
|
+
#, python-brace-format
|
|
61
|
+
msgid "Clear failed: {error}"
|
|
62
|
+
msgstr "清除失败:{error}"
|
|
63
|
+
|
|
64
|
+
#: src/iac_code/acp/slash_registry.py:98
|
|
65
|
+
msgid "Conversation history cleared."
|
|
66
|
+
msgstr "对话历史已清除。"
|
|
67
|
+
|
|
68
|
+
#: src/iac_code/acp/slash_registry.py:114 src/iac_code/commands/debug.py:34
|
|
69
|
+
#, python-brace-format
|
|
70
|
+
msgid "Debug logging is on. Log file: {path}"
|
|
71
|
+
msgstr "调试日志已启用。日志文件:{path}"
|
|
72
|
+
|
|
73
|
+
#: src/iac_code/acp/slash_registry.py:115 src/iac_code/commands/debug.py:35
|
|
74
|
+
msgid "Debug logging is off."
|
|
75
|
+
msgstr "调试日志已关闭。"
|
|
76
|
+
|
|
77
|
+
#: src/iac_code/acp/slash_registry.py:119 src/iac_code/commands/debug.py:39
|
|
78
|
+
#, python-brace-format
|
|
79
|
+
msgid "Debug logging enabled. Log file: {path}"
|
|
80
|
+
msgstr "调试日志已启用。日志文件:{path}"
|
|
81
|
+
|
|
82
|
+
#: src/iac_code/acp/slash_registry.py:123 src/iac_code/commands/debug.py:43
|
|
83
|
+
msgid "Debug logging disabled."
|
|
84
|
+
msgstr "调试日志已关闭。"
|
|
85
|
+
|
|
86
|
+
#: src/iac_code/acp/slash_registry.py:125 src/iac_code/commands/debug.py:45
|
|
87
|
+
msgid "Usage: /debug [on|off]"
|
|
88
|
+
msgstr "用法:/debug [on|off]"
|
|
89
|
+
|
|
90
|
+
#: src/iac_code/agent/agent_tool.py:250
|
|
91
|
+
#, python-brace-format
|
|
92
|
+
msgid "Done ({tool_count} tool uses · {token_display} tokens)"
|
|
93
|
+
msgstr "完成({tool_count} 次工具调用 · {token_display} tokens)"
|
|
94
|
+
|
|
95
|
+
#: src/iac_code/agent/agent_tool.py:260
|
|
96
|
+
msgid "Explore"
|
|
97
|
+
msgstr "探索"
|
|
98
|
+
|
|
99
|
+
#: src/iac_code/agent/agent_tool.py:261
|
|
100
|
+
msgid "Plan"
|
|
101
|
+
msgstr "规划"
|
|
102
|
+
|
|
103
|
+
#: src/iac_code/agent/agent_tool.py:262 src/iac_code/agent/agent_tool.py:263
|
|
104
|
+
#: src/iac_code/agent/agent_tool.py:264
|
|
105
|
+
msgid "Agent"
|
|
106
|
+
msgstr "智能体"
|
|
107
|
+
|
|
108
|
+
#: src/iac_code/cli/main.py:22 src/iac_code/commands/help.py:26
|
|
109
|
+
msgid "AI-powered infrastructure orchestration tool"
|
|
110
|
+
msgstr "AI 驱动的基础设施编排工具"
|
|
111
|
+
|
|
112
|
+
#: src/iac_code/cli/main.py:33
|
|
113
|
+
msgid "LLM model to use"
|
|
114
|
+
msgstr "使用的 LLM 模型"
|
|
115
|
+
|
|
116
|
+
#: src/iac_code/cli/main.py:34
|
|
117
|
+
msgid "Non-interactive mode: run a single prompt and exit"
|
|
118
|
+
msgstr "非交互模式:运行单个提示并退出"
|
|
119
|
+
|
|
120
|
+
#: src/iac_code/cli/main.py:35
|
|
121
|
+
msgid "Output format: text, json, stream-json"
|
|
122
|
+
msgstr "输出格式:text、json、stream-json"
|
|
123
|
+
|
|
124
|
+
#: src/iac_code/cli/main.py:36
|
|
125
|
+
msgid "Maximum agent turns in headless mode"
|
|
126
|
+
msgstr "无头模式下最大智能体轮次"
|
|
127
|
+
|
|
128
|
+
#: src/iac_code/cli/main.py:37 src/iac_code/cli/main.py:232
|
|
129
|
+
msgid "Enable debug logging"
|
|
130
|
+
msgstr "启用调试日志"
|
|
131
|
+
|
|
132
|
+
#: src/iac_code/cli/main.py:38
|
|
133
|
+
msgid "Show version and exit"
|
|
134
|
+
msgstr "显示版本号并退出"
|
|
135
|
+
|
|
136
|
+
#: src/iac_code/cli/main.py:39
|
|
137
|
+
msgid "Resume a session by ID"
|
|
138
|
+
msgstr "通过 ID 恢复会话"
|
|
139
|
+
|
|
140
|
+
#: src/iac_code/cli/main.py:40
|
|
141
|
+
msgid "Resume the most recent session"
|
|
142
|
+
msgstr "恢复最近一次会话"
|
|
143
|
+
|
|
144
|
+
#: src/iac_code/cli/main.py:47 src/iac_code/i18n/__init__.py:54
|
|
145
|
+
msgid "Install completion for the current shell."
|
|
146
|
+
msgstr "为当前 shell 安装自动补全。"
|
|
147
|
+
|
|
148
|
+
#: src/iac_code/cli/main.py:55 src/iac_code/i18n/__init__.py:55
|
|
149
|
+
msgid ""
|
|
150
|
+
"Show completion for the current shell, to copy it or customize the "
|
|
151
|
+
"installation."
|
|
152
|
+
msgstr "显示当前 shell 的自动补全脚本,可复制或自定义安装。"
|
|
153
|
+
|
|
154
|
+
#: src/iac_code/cli/main.py:69
|
|
155
|
+
msgid "Error: --resume and --continue cannot be used together."
|
|
156
|
+
msgstr "错误:--resume 和 --continue 不能同时使用。"
|
|
157
|
+
|
|
158
|
+
#: src/iac_code/cli/main.py:227
|
|
159
|
+
msgid "Run iac-code as an ACP server."
|
|
160
|
+
msgstr "将 iac-code 作为 ACP 服务器运行。"
|
|
161
|
+
|
|
162
|
+
#: src/iac_code/cli/main.py:229
|
|
163
|
+
msgid "Transport type: stdio or http"
|
|
164
|
+
msgstr "传输类型:stdio 或 http"
|
|
165
|
+
|
|
166
|
+
#: src/iac_code/cli/main.py:230
|
|
167
|
+
msgid "HTTP server port"
|
|
168
|
+
msgstr "HTTP 服务器端口"
|
|
169
|
+
|
|
170
|
+
#: src/iac_code/cli/main.py:231
|
|
171
|
+
msgid "HTTP server host"
|
|
172
|
+
msgstr "HTTP 服务器主机"
|
|
173
|
+
|
|
174
|
+
#: src/iac_code/commands/__init__.py:22
|
|
175
|
+
msgid "Show available commands"
|
|
176
|
+
msgstr "显示可用命令"
|
|
177
|
+
|
|
178
|
+
#: src/iac_code/commands/__init__.py:30
|
|
179
|
+
msgid "Clear conversation history"
|
|
180
|
+
msgstr "清除对话历史"
|
|
181
|
+
|
|
182
|
+
#: src/iac_code/commands/__init__.py:37
|
|
183
|
+
msgid "Show or switch model"
|
|
184
|
+
msgstr "显示或切换模型"
|
|
185
|
+
|
|
186
|
+
#: src/iac_code/commands/__init__.py:45
|
|
187
|
+
msgid "Show or switch thinking effort"
|
|
188
|
+
msgstr "显示或切换思考强度"
|
|
189
|
+
|
|
190
|
+
#: src/iac_code/commands/__init__.py:53
|
|
191
|
+
msgid "Compact conversation context"
|
|
192
|
+
msgstr "压缩对话上下文"
|
|
193
|
+
|
|
194
|
+
#: src/iac_code/commands/__init__.py:55
|
|
195
|
+
msgid "Compacting conversation"
|
|
196
|
+
msgstr "正在压缩对话"
|
|
197
|
+
|
|
198
|
+
#: src/iac_code/commands/__init__.py:61
|
|
199
|
+
msgid "Exit the application"
|
|
200
|
+
msgstr "退出应用程序"
|
|
201
|
+
|
|
202
|
+
#: src/iac_code/commands/__init__.py:69
|
|
203
|
+
msgid "Authenticate with LLM provider"
|
|
204
|
+
msgstr "配置 LLM 提供商认证"
|
|
205
|
+
|
|
206
|
+
#: src/iac_code/commands/__init__.py:77
|
|
207
|
+
msgid "Toggle debug logging"
|
|
208
|
+
msgstr "切换调试日志开关"
|
|
209
|
+
|
|
210
|
+
#: src/iac_code/commands/__init__.py:85
|
|
211
|
+
msgid "Resume a previous session"
|
|
212
|
+
msgstr "恢复之前的会话"
|
|
213
|
+
|
|
214
|
+
#: src/iac_code/commands/__init__.py:87
|
|
215
|
+
msgid "[conversation id or search term]"
|
|
216
|
+
msgstr "[会话 ID 或搜索词]"
|
|
217
|
+
|
|
218
|
+
#: src/iac_code/commands/auth.py:304 src/iac_code/commands/auth.py:817
|
|
219
|
+
#: src/iac_code/ui/core/prompt_input.py:373
|
|
220
|
+
msgid "Navigate"
|
|
221
|
+
msgstr "导航"
|
|
222
|
+
|
|
223
|
+
#: src/iac_code/commands/auth.py:304 src/iac_code/commands/auth.py:426
|
|
224
|
+
#: src/iac_code/commands/auth.py:460 src/iac_code/commands/auth.py:467
|
|
225
|
+
#: src/iac_code/commands/auth.py:491 src/iac_code/commands/auth.py:817
|
|
226
|
+
#: src/iac_code/commands/auth.py:1007 src/iac_code/ui/core/prompt_input.py:373
|
|
227
|
+
msgid "Confirm"
|
|
228
|
+
msgstr "确认"
|
|
229
|
+
|
|
230
|
+
#: src/iac_code/commands/auth.py:304 src/iac_code/commands/auth.py:424
|
|
231
|
+
#: src/iac_code/commands/auth.py:426 src/iac_code/commands/auth.py:460
|
|
232
|
+
#: src/iac_code/commands/auth.py:467 src/iac_code/commands/auth.py:491
|
|
233
|
+
#: src/iac_code/commands/auth.py:817 src/iac_code/commands/auth.py:902
|
|
234
|
+
#: src/iac_code/commands/auth.py:1007
|
|
235
|
+
msgid "Back"
|
|
236
|
+
msgstr "返回"
|
|
237
|
+
|
|
238
|
+
#: src/iac_code/commands/auth.py:424
|
|
239
|
+
msgid "Keep"
|
|
240
|
+
msgstr "保留"
|
|
241
|
+
|
|
242
|
+
#: src/iac_code/commands/auth.py:424
|
|
243
|
+
msgid "Re-enter"
|
|
244
|
+
msgstr "重新输入"
|
|
245
|
+
|
|
246
|
+
#: src/iac_code/commands/auth.py:566 src/iac_code/commands/auth.py:667
|
|
247
|
+
msgid " (current)"
|
|
248
|
+
msgstr " (当前)"
|
|
249
|
+
|
|
250
|
+
#: src/iac_code/commands/auth.py:569
|
|
251
|
+
msgid "Custom model..."
|
|
252
|
+
msgstr "自定义模型..."
|
|
253
|
+
|
|
254
|
+
#: src/iac_code/commands/auth.py:572
|
|
255
|
+
#, python-brace-format
|
|
256
|
+
msgid "Select model for {provider}"
|
|
257
|
+
msgstr "为 {provider} 选择模型"
|
|
258
|
+
|
|
259
|
+
#: src/iac_code/commands/auth.py:574
|
|
260
|
+
msgid "Select model"
|
|
261
|
+
msgstr "选择模型"
|
|
262
|
+
|
|
263
|
+
#: src/iac_code/commands/auth.py:582
|
|
264
|
+
msgid "Enter custom model name: "
|
|
265
|
+
msgstr "输入自定义模型名称:"
|
|
266
|
+
|
|
267
|
+
#: src/iac_code/commands/auth.py:608
|
|
268
|
+
msgid "Error: console not available"
|
|
269
|
+
msgstr "错误:控制台不可用"
|
|
270
|
+
|
|
271
|
+
#: src/iac_code/commands/auth.py:635
|
|
272
|
+
msgid "Configure LLM Provider"
|
|
273
|
+
msgstr "配置 LLM 提供商"
|
|
274
|
+
|
|
275
|
+
#: src/iac_code/commands/auth.py:636
|
|
276
|
+
msgid "Configure IaC Cloud Service"
|
|
277
|
+
msgstr "配置 IaC 云服务"
|
|
278
|
+
|
|
279
|
+
#: src/iac_code/commands/auth.py:638
|
|
280
|
+
msgid "Select configuration type"
|
|
281
|
+
msgstr "选择配置类型"
|
|
282
|
+
|
|
283
|
+
#: src/iac_code/commands/auth.py:640 src/iac_code/commands/auth.py:694
|
|
284
|
+
#: src/iac_code/commands/auth.py:709 src/iac_code/commands/auth.py:770
|
|
285
|
+
#: src/iac_code/commands/auth.py:943 src/iac_code/commands/auth.py:984
|
|
286
|
+
msgid "Auth cancelled"
|
|
287
|
+
msgstr "认证已取消"
|
|
288
|
+
|
|
289
|
+
#: src/iac_code/commands/auth.py:676
|
|
290
|
+
msgid "Select provider"
|
|
291
|
+
msgstr "选择提供商"
|
|
292
|
+
|
|
293
|
+
#: src/iac_code/commands/auth.py:687
|
|
294
|
+
#, python-brace-format
|
|
295
|
+
msgid "Configure {provider}"
|
|
296
|
+
msgstr "配置 {provider}"
|
|
297
|
+
|
|
298
|
+
#: src/iac_code/commands/auth.py:702
|
|
299
|
+
#, python-brace-format
|
|
300
|
+
msgid "Enter API key for {provider}"
|
|
301
|
+
msgstr "为 {provider} 输入 API 密钥"
|
|
302
|
+
|
|
303
|
+
#: src/iac_code/commands/auth.py:742
|
|
304
|
+
#, python-brace-format
|
|
305
|
+
msgid "{status}: {provider} / {model}"
|
|
306
|
+
msgstr "{status}:{provider} / {model}"
|
|
307
|
+
|
|
308
|
+
#: src/iac_code/commands/auth.py:743
|
|
309
|
+
msgid "Configured"
|
|
310
|
+
msgstr "已配置"
|
|
311
|
+
|
|
312
|
+
#: src/iac_code/commands/auth.py:752
|
|
313
|
+
msgid "Alibaba Cloud"
|
|
314
|
+
msgstr "阿里云"
|
|
315
|
+
|
|
316
|
+
#: src/iac_code/commands/auth.py:761
|
|
317
|
+
msgid "Select Cloud Provider"
|
|
318
|
+
msgstr "选择云服务商"
|
|
319
|
+
|
|
320
|
+
#: src/iac_code/commands/auth.py:777
|
|
321
|
+
msgid "Credential"
|
|
322
|
+
msgstr "凭证"
|
|
323
|
+
|
|
324
|
+
#: src/iac_code/commands/auth.py:778 src/iac_code/commands/auth.py:875
|
|
325
|
+
#: src/iac_code/commands/auth.py:980 src/iac_code/ui/renderer.py:417
|
|
326
|
+
msgid "Region"
|
|
327
|
+
msgstr "地域"
|
|
328
|
+
|
|
329
|
+
#: src/iac_code/commands/auth.py:780
|
|
330
|
+
msgid "Configure Alibaba Cloud"
|
|
331
|
+
msgstr "配置阿里云"
|
|
332
|
+
|
|
333
|
+
#: src/iac_code/commands/auth.py:863
|
|
334
|
+
msgid "Current configuration"
|
|
335
|
+
msgstr "当前配置"
|
|
336
|
+
|
|
337
|
+
#: src/iac_code/commands/auth.py:865
|
|
338
|
+
msgid "Mode"
|
|
339
|
+
msgstr "模式"
|
|
340
|
+
|
|
341
|
+
#: src/iac_code/commands/auth.py:872
|
|
342
|
+
msgid "(not set)"
|
|
343
|
+
msgstr "(未设置)"
|
|
344
|
+
|
|
345
|
+
#: src/iac_code/commands/auth.py:889
|
|
346
|
+
msgid "Configure Alibaba Cloud credentials"
|
|
347
|
+
msgstr "配置阿里云凭证"
|
|
348
|
+
|
|
349
|
+
#: src/iac_code/commands/auth.py:902
|
|
350
|
+
msgid "Reconfigure credential"
|
|
351
|
+
msgstr "重新配置凭证"
|
|
352
|
+
|
|
353
|
+
#: src/iac_code/commands/auth.py:915
|
|
354
|
+
msgid "Select credential type"
|
|
355
|
+
msgstr "选择凭证类型"
|
|
356
|
+
|
|
357
|
+
#: src/iac_code/commands/auth.py:965
|
|
358
|
+
msgid "Configured: Alibaba Cloud credentials saved to ~/.iac-code"
|
|
359
|
+
msgstr "已配置:阿里云凭证已保存到 ~/.iac-code"
|
|
360
|
+
|
|
361
|
+
#: src/iac_code/commands/auth.py:972
|
|
362
|
+
msgid "Configure Alibaba Cloud region"
|
|
363
|
+
msgstr "配置阿里云地域"
|
|
364
|
+
|
|
365
|
+
#: src/iac_code/commands/auth.py:998
|
|
366
|
+
msgid "Configured: Alibaba Cloud region saved to ~/.iac-code"
|
|
367
|
+
msgstr "已配置:阿里云地域已保存到 ~/.iac-code"
|
|
368
|
+
|
|
369
|
+
#: src/iac_code/commands/compact.py:12
|
|
370
|
+
msgid "Compact command requires a context."
|
|
371
|
+
msgstr "压缩命令需要上下文。"
|
|
372
|
+
|
|
373
|
+
#: src/iac_code/commands/compact.py:16
|
|
374
|
+
msgid "No active REPL."
|
|
375
|
+
msgstr "没有活动的 REPL。"
|
|
376
|
+
|
|
377
|
+
#: src/iac_code/commands/compact.py:20
|
|
378
|
+
msgid "No active agent loop."
|
|
379
|
+
msgstr "没有活动的智能体循环。"
|
|
380
|
+
|
|
381
|
+
#: src/iac_code/commands/compact.py:35
|
|
382
|
+
#, python-brace-format
|
|
383
|
+
msgid ""
|
|
384
|
+
"Context compacted: {original} → {compacted} tokens ({percent_display} "
|
|
385
|
+
"reduction). Context usage: {usage_display}"
|
|
386
|
+
msgstr ""
|
|
387
|
+
"上下文已压缩:{original} → {compacted} tokens(减少 "
|
|
388
|
+
"{percent_display})。上下文用量:{usage_display}"
|
|
389
|
+
|
|
390
|
+
#: src/iac_code/commands/debug.py:21
|
|
391
|
+
msgid "Debug command requires a context."
|
|
392
|
+
msgstr "调试命令需要上下文。"
|
|
393
|
+
|
|
394
|
+
#: src/iac_code/commands/debug.py:26
|
|
395
|
+
msgid "No active session."
|
|
396
|
+
msgstr "没有活动的会话。"
|
|
397
|
+
|
|
398
|
+
#: src/iac_code/commands/effort.py:54 src/iac_code/commands/model.py:82
|
|
399
|
+
#: src/iac_code/commands/model.py:86
|
|
400
|
+
msgid "No configured providers. Run /auth first."
|
|
401
|
+
msgstr "没有已配置的提供商。请先运行 /auth。"
|
|
402
|
+
|
|
403
|
+
#: src/iac_code/commands/effort.py:58
|
|
404
|
+
msgid "No model selected. Run /model first."
|
|
405
|
+
msgstr "没有选择模型。请先运行 /model。"
|
|
406
|
+
|
|
407
|
+
#: src/iac_code/commands/effort.py:66
|
|
408
|
+
#, python-brace-format
|
|
409
|
+
msgid "Model {model} does not support effort."
|
|
410
|
+
msgstr "模型 {model} 不支持调整思考强度。"
|
|
411
|
+
|
|
412
|
+
#: src/iac_code/commands/effort.py:80
|
|
413
|
+
#, python-brace-format
|
|
414
|
+
msgid "Invalid effort. Allowed: {labels}"
|
|
415
|
+
msgstr "非法的思考强度。允许的值:{labels}"
|
|
416
|
+
|
|
417
|
+
#: src/iac_code/commands/effort.py:85
|
|
418
|
+
#, python-brace-format
|
|
419
|
+
msgid "Current effort: {effort}"
|
|
420
|
+
msgstr "当前思考强度:{effort}"
|
|
421
|
+
|
|
422
|
+
#: src/iac_code/commands/effort.py:94
|
|
423
|
+
#, python-brace-format
|
|
424
|
+
msgid "Select effort for {model}"
|
|
425
|
+
msgstr "为 {model} 选择思考强度"
|
|
426
|
+
|
|
427
|
+
#: src/iac_code/commands/effort.py:103 src/iac_code/commands/effort.py:107
|
|
428
|
+
#, python-brace-format
|
|
429
|
+
msgid "Kept effort as {effort}"
|
|
430
|
+
msgstr "已保持思考强度为 {effort}"
|
|
431
|
+
|
|
432
|
+
#: src/iac_code/commands/effort.py:116
|
|
433
|
+
#, python-brace-format
|
|
434
|
+
msgid "Effort switched to: {effort}"
|
|
435
|
+
msgstr "思考强度已切换为:{effort}"
|
|
436
|
+
|
|
437
|
+
#: src/iac_code/commands/help.py:29
|
|
438
|
+
msgid "Commands:"
|
|
439
|
+
msgstr "命令:"
|
|
440
|
+
|
|
441
|
+
#: src/iac_code/commands/help.py:36
|
|
442
|
+
msgid "Shortcuts:"
|
|
443
|
+
msgstr "快捷键:"
|
|
444
|
+
|
|
445
|
+
#: src/iac_code/commands/help.py:39
|
|
446
|
+
msgid "Send message"
|
|
447
|
+
msgstr "发送消息"
|
|
448
|
+
|
|
449
|
+
#: src/iac_code/commands/help.py:40
|
|
450
|
+
msgid "New line"
|
|
451
|
+
msgstr "换行"
|
|
452
|
+
|
|
453
|
+
#: src/iac_code/commands/help.py:41
|
|
454
|
+
msgid "Show command suggestions"
|
|
455
|
+
msgstr "显示命令建议"
|
|
456
|
+
|
|
457
|
+
#: src/iac_code/commands/help.py:42
|
|
458
|
+
msgid "Exit"
|
|
459
|
+
msgstr "退出"
|
|
460
|
+
|
|
461
|
+
#: src/iac_code/commands/model.py:75 src/iac_code/commands/model.py:130
|
|
462
|
+
#, python-brace-format
|
|
463
|
+
msgid "Model switched to: {model}"
|
|
464
|
+
msgstr "模型已切换为:{model}"
|
|
465
|
+
|
|
466
|
+
#: src/iac_code/commands/model.py:79
|
|
467
|
+
#, python-brace-format
|
|
468
|
+
msgid "Current model: {model}"
|
|
469
|
+
msgstr "当前模型:{model}"
|
|
470
|
+
|
|
471
|
+
#: src/iac_code/commands/model.py:105
|
|
472
|
+
#, python-brace-format
|
|
473
|
+
msgid "Kept model as {model}"
|
|
474
|
+
msgstr "保持模型为 {model}"
|
|
475
|
+
|
|
476
|
+
#: src/iac_code/commands/resume.py:21
|
|
477
|
+
msgid "Resume is only available in interactive mode."
|
|
478
|
+
msgstr "/resume 仅在交互模式下可用。"
|
|
479
|
+
|
|
480
|
+
#: src/iac_code/commands/resume.py:27
|
|
481
|
+
msgid "Resume is unavailable: session index not initialised."
|
|
482
|
+
msgstr "无法恢复:会话索引未初始化。"
|
|
483
|
+
|
|
484
|
+
#: src/iac_code/commands/resume.py:32
|
|
485
|
+
#, python-brace-format
|
|
486
|
+
msgid "Session not found: {arg}"
|
|
487
|
+
msgstr "未找到会话:{arg}"
|
|
488
|
+
|
|
489
|
+
#: src/iac_code/commands/resume.py:47
|
|
490
|
+
msgid "Resume cancelled"
|
|
491
|
+
msgstr "已取消恢复"
|
|
492
|
+
|
|
493
|
+
# Typer/Click built-in strings
|
|
494
|
+
#: src/iac_code/i18n/__init__.py:50
|
|
495
|
+
msgid "Options"
|
|
496
|
+
msgstr "选项"
|
|
497
|
+
|
|
498
|
+
#: src/iac_code/i18n/__init__.py:51
|
|
499
|
+
msgid "Commands"
|
|
500
|
+
msgstr "命令"
|
|
501
|
+
|
|
502
|
+
#: src/iac_code/i18n/__init__.py:52
|
|
503
|
+
msgid "Arguments"
|
|
504
|
+
msgstr "参数"
|
|
505
|
+
|
|
506
|
+
#: src/iac_code/i18n/__init__.py:53
|
|
507
|
+
msgid "Show this message and exit."
|
|
508
|
+
msgstr "显示此帮助信息并退出。"
|
|
509
|
+
|
|
510
|
+
#: src/iac_code/i18n/__init__.py:56
|
|
511
|
+
#, python-brace-format
|
|
512
|
+
msgid "default: {default}"
|
|
513
|
+
msgstr "默认值: {default}"
|
|
514
|
+
|
|
515
|
+
#: src/iac_code/i18n/__init__.py:57
|
|
516
|
+
msgid "required"
|
|
517
|
+
msgstr "必填"
|
|
518
|
+
|
|
519
|
+
#: src/iac_code/i18n/__init__.py:58
|
|
520
|
+
#, python-brace-format
|
|
521
|
+
msgid "env var: {var}"
|
|
522
|
+
msgstr "环境变量: {var}"
|
|
523
|
+
|
|
524
|
+
#: src/iac_code/i18n/__init__.py:59
|
|
525
|
+
msgid "(dynamic)"
|
|
526
|
+
msgstr "(动态)"
|
|
527
|
+
|
|
528
|
+
#: src/iac_code/i18n/__init__.py:60
|
|
529
|
+
msgid "Aborted!"
|
|
530
|
+
msgstr "已中止!"
|
|
531
|
+
|
|
532
|
+
#: src/iac_code/providers/openai_provider.py:263
|
|
533
|
+
#, python-brace-format
|
|
534
|
+
msgid ""
|
|
535
|
+
"API returned no data. Please check that your API Base URL is correct "
|
|
536
|
+
"(current: {base_url}). Many OpenAI-compatible endpoints require a /v1 "
|
|
537
|
+
"suffix (e.g. {base_url}/v1)."
|
|
538
|
+
msgstr ""
|
|
539
|
+
"API 未返回数据。请检查您的 API Base URL 是否正确(当前:{base_url})。许多 OpenAI 兼容端点需要 /v1 "
|
|
540
|
+
"后缀(如 {base_url}/v1)。"
|
|
541
|
+
|
|
542
|
+
#: src/iac_code/providers/openai_provider.py:307
|
|
543
|
+
#, python-brace-format
|
|
544
|
+
msgid ""
|
|
545
|
+
"API returned an invalid response. Please check that your API Base URL is "
|
|
546
|
+
"correct (current: {base_url}). Many OpenAI-compatible endpoints require a"
|
|
547
|
+
" /v1 suffix (e.g. {base_url}/v1)."
|
|
548
|
+
msgstr ""
|
|
549
|
+
"API 返回了无效响应。请检查您的 API Base URL 是否正确(当前:{base_url})。许多 OpenAI 兼容端点需要 /v1 "
|
|
550
|
+
"后缀(如 {base_url}/v1)。"
|
|
551
|
+
|
|
552
|
+
#: src/iac_code/skills/skill_tool.py:130
|
|
553
|
+
#, python-brace-format
|
|
554
|
+
msgid "Skill '{name}' loaded (inline)."
|
|
555
|
+
msgstr "技能 '{name}' 已加载(内联)。"
|
|
556
|
+
|
|
557
|
+
#: src/iac_code/skills/skill_tool.py:214
|
|
558
|
+
msgid "Skill"
|
|
559
|
+
msgstr "技能"
|
|
560
|
+
|
|
561
|
+
#: src/iac_code/skills/bundled/simplify.py:25
|
|
562
|
+
msgid ""
|
|
563
|
+
"Review changed code for reuse, quality, and efficiency, then fix issues "
|
|
564
|
+
"found."
|
|
565
|
+
msgstr "审查变更的代码的可复用性、质量和效率,然后修复发现的问题。"
|
|
566
|
+
|
|
567
|
+
#: src/iac_code/tools/bash.py:107
|
|
568
|
+
#, python-brace-format
|
|
569
|
+
msgid "{count} more lines"
|
|
570
|
+
msgstr "还有 {count} 行"
|
|
571
|
+
|
|
572
|
+
#: src/iac_code/tools/bash.py:115
|
|
573
|
+
msgid "Bash"
|
|
574
|
+
msgstr "Bash"
|
|
575
|
+
|
|
576
|
+
#: src/iac_code/tools/bash.py:121
|
|
577
|
+
#, python-brace-format
|
|
578
|
+
msgid "Running {cmd}"
|
|
579
|
+
msgstr "正在运行 {cmd}"
|
|
580
|
+
|
|
581
|
+
#: src/iac_code/tools/bash.py:122
|
|
582
|
+
msgid "Running command..."
|
|
583
|
+
msgstr "正在运行命令..."
|
|
584
|
+
|
|
585
|
+
#: src/iac_code/tools/edit_file.py:112
|
|
586
|
+
msgid "Create"
|
|
587
|
+
msgstr "创建"
|
|
588
|
+
|
|
589
|
+
#: src/iac_code/tools/edit_file.py:113
|
|
590
|
+
msgid "Update"
|
|
591
|
+
msgstr "更新"
|
|
592
|
+
|
|
593
|
+
#: src/iac_code/tools/edit_file.py:117
|
|
594
|
+
#, python-brace-format
|
|
595
|
+
msgid "Editing {path}"
|
|
596
|
+
msgstr "正在编辑 {path}"
|
|
597
|
+
|
|
598
|
+
#: src/iac_code/tools/edit_file.py:118
|
|
599
|
+
msgid "Editing file..."
|
|
600
|
+
msgstr "正在编辑文件..."
|
|
601
|
+
|
|
602
|
+
#: src/iac_code/tools/glob.py:85 src/iac_code/tools/grep.py:236
|
|
603
|
+
msgid "Found 0 files"
|
|
604
|
+
msgstr "找到 0 个文件"
|
|
605
|
+
|
|
606
|
+
#: src/iac_code/tools/glob.py:88 src/iac_code/tools/grep.py:239
|
|
607
|
+
#, python-brace-format
|
|
608
|
+
msgid "Found {count} files"
|
|
609
|
+
msgstr "找到 {count} 个文件"
|
|
610
|
+
|
|
611
|
+
#: src/iac_code/tools/glob.py:94 src/iac_code/tools/grep.py:245
|
|
612
|
+
msgid "Search"
|
|
613
|
+
msgstr "搜索"
|
|
614
|
+
|
|
615
|
+
#: src/iac_code/tools/glob.py:99
|
|
616
|
+
#, python-brace-format
|
|
617
|
+
msgid "Searching {pattern}"
|
|
618
|
+
msgstr "正在搜索 {pattern}"
|
|
619
|
+
|
|
620
|
+
#: src/iac_code/tools/glob.py:100
|
|
621
|
+
msgid "Searching files..."
|
|
622
|
+
msgstr "正在搜索文件..."
|
|
623
|
+
|
|
624
|
+
#: src/iac_code/tools/grep.py:250
|
|
625
|
+
#, python-brace-format
|
|
626
|
+
msgid "Searching for {pattern}"
|
|
627
|
+
msgstr "正在搜索 {pattern}"
|
|
628
|
+
|
|
629
|
+
#: src/iac_code/tools/grep.py:251
|
|
630
|
+
msgid "Searching content..."
|
|
631
|
+
msgstr "正在搜索内容..."
|
|
632
|
+
|
|
633
|
+
#: src/iac_code/tools/list_files.py:81
|
|
634
|
+
#, python-brace-format
|
|
635
|
+
msgid "Found {count} items"
|
|
636
|
+
msgstr "找到 {count} 个项目"
|
|
637
|
+
|
|
638
|
+
#: src/iac_code/tools/list_files.py:87
|
|
639
|
+
msgid "List"
|
|
640
|
+
msgstr "列表"
|
|
641
|
+
|
|
642
|
+
#: src/iac_code/tools/list_files.py:91
|
|
643
|
+
#, python-brace-format
|
|
644
|
+
msgid "Listing {path}"
|
|
645
|
+
msgstr "正在列出 {path}"
|
|
646
|
+
|
|
647
|
+
#: src/iac_code/tools/list_files.py:92
|
|
648
|
+
msgid "Listing files..."
|
|
649
|
+
msgstr "正在列出文件..."
|
|
650
|
+
|
|
651
|
+
#: src/iac_code/tools/read_file.py:116
|
|
652
|
+
#, python-brace-format
|
|
653
|
+
msgid "Read {total} lines"
|
|
654
|
+
msgstr "读取了 {total} 行"
|
|
655
|
+
|
|
656
|
+
#: src/iac_code/tools/read_file.py:119
|
|
657
|
+
msgid "Read"
|
|
658
|
+
msgstr "读取"
|
|
659
|
+
|
|
660
|
+
#: src/iac_code/tools/read_file.py:123
|
|
661
|
+
#, python-brace-format
|
|
662
|
+
msgid "Reading {path}"
|
|
663
|
+
msgstr "正在读取 {path}"
|
|
664
|
+
|
|
665
|
+
#: src/iac_code/tools/read_file.py:124
|
|
666
|
+
msgid "Reading file..."
|
|
667
|
+
msgstr "正在读取文件..."
|
|
668
|
+
|
|
669
|
+
#: src/iac_code/tools/web_fetch.py:94
|
|
670
|
+
msgid "URL cannot be empty."
|
|
671
|
+
msgstr "URL 不能为空。"
|
|
672
|
+
|
|
673
|
+
#: src/iac_code/tools/web_fetch.py:100
|
|
674
|
+
#, python-brace-format
|
|
675
|
+
msgid "Invalid URL: missing scheme (e.g. http:// or https://). Got: {url}"
|
|
676
|
+
msgstr "无效 URL:缺少协议(如 http:// 或 https://)。当前:{url}"
|
|
677
|
+
|
|
678
|
+
#: src/iac_code/tools/web_fetch.py:103
|
|
679
|
+
#, python-brace-format
|
|
680
|
+
msgid "Invalid URL: missing host/netloc. Got: {url}"
|
|
681
|
+
msgstr "无效 URL:缺少主机地址。当前:{url}"
|
|
682
|
+
|
|
683
|
+
#: src/iac_code/tools/web_fetch.py:129
|
|
684
|
+
#, python-brace-format
|
|
685
|
+
msgid "HTTP error {status}: {url}"
|
|
686
|
+
msgstr "HTTP 错误 {status}:{url}"
|
|
687
|
+
|
|
688
|
+
#: src/iac_code/tools/web_fetch.py:131
|
|
689
|
+
#, python-brace-format
|
|
690
|
+
msgid "Failed to fetch {url}: {error}"
|
|
691
|
+
msgstr "获取 {url} 失败:{error}"
|
|
692
|
+
|
|
693
|
+
#: src/iac_code/tools/web_fetch.py:133
|
|
694
|
+
#, python-brace-format
|
|
695
|
+
msgid "Unexpected error fetching {url}: {error}"
|
|
696
|
+
msgstr "获取 {url} 时发生意外错误:{error}"
|
|
697
|
+
|
|
698
|
+
#: src/iac_code/tools/web_fetch.py:147
|
|
699
|
+
#, python-brace-format
|
|
700
|
+
msgid "Fetched {chars} chars, {lines} lines"
|
|
701
|
+
msgstr "获取了 {chars} 个字符,{lines} 行"
|
|
702
|
+
|
|
703
|
+
#: src/iac_code/tools/web_fetch.py:159
|
|
704
|
+
msgid "Fetch"
|
|
705
|
+
msgstr "获取"
|
|
706
|
+
|
|
707
|
+
#: src/iac_code/tools/web_fetch.py:165
|
|
708
|
+
#, python-brace-format
|
|
709
|
+
msgid "Fetching {url}"
|
|
710
|
+
msgstr "正在获取 {url}"
|
|
711
|
+
|
|
712
|
+
#: src/iac_code/tools/web_fetch.py:166
|
|
713
|
+
msgid "Fetching web page..."
|
|
714
|
+
msgstr "正在获取网页..."
|
|
715
|
+
|
|
716
|
+
#: src/iac_code/tools/write_file.py:63
|
|
717
|
+
#, python-brace-format
|
|
718
|
+
msgid "Successfully wrote {lines} lines to {path}"
|
|
719
|
+
msgstr "成功写入 {lines} 行到 {path}"
|
|
720
|
+
|
|
721
|
+
#: src/iac_code/tools/write_file.py:77
|
|
722
|
+
msgid "Write"
|
|
723
|
+
msgstr "写入"
|
|
724
|
+
|
|
725
|
+
#: src/iac_code/tools/write_file.py:81
|
|
726
|
+
#, python-brace-format
|
|
727
|
+
msgid "Writing {path}"
|
|
728
|
+
msgstr "正在写入 {path}"
|
|
729
|
+
|
|
730
|
+
#: src/iac_code/tools/write_file.py:82
|
|
731
|
+
msgid "Writing file..."
|
|
732
|
+
msgstr "正在写入文件..."
|
|
733
|
+
|
|
734
|
+
#: src/iac_code/tools/cloud/base_api.py:92
|
|
735
|
+
msgid "CloudAPI"
|
|
736
|
+
msgstr "云API"
|
|
737
|
+
|
|
738
|
+
#: src/iac_code/tools/cloud/base_api.py:116
|
|
739
|
+
#, python-brace-format
|
|
740
|
+
msgid "Calling {action}..."
|
|
741
|
+
msgstr "正在调用 {action}..."
|
|
742
|
+
|
|
743
|
+
#: src/iac_code/tools/cloud/aliyun/aliyun_api.py:373
|
|
744
|
+
#: src/iac_code/tools/cloud/base_api.py:123
|
|
745
|
+
msgid "Call succeeded"
|
|
746
|
+
msgstr "调用成功"
|
|
747
|
+
|
|
748
|
+
#: src/iac_code/tools/cloud/base_api.py:144
|
|
749
|
+
#, python-brace-format
|
|
750
|
+
msgid "Received response ({count} lines)"
|
|
751
|
+
msgstr "收到响应({count} 行)"
|
|
752
|
+
|
|
753
|
+
#: src/iac_code/tools/cloud/base_stack.py:133
|
|
754
|
+
msgid "CloudStack"
|
|
755
|
+
msgstr "云资源栈"
|
|
756
|
+
|
|
757
|
+
#: src/iac_code/tools/cloud/aliyun/ros_stack_instances.py:117
|
|
758
|
+
#: src/iac_code/tools/cloud/base_stack.py:150
|
|
759
|
+
#, python-brace-format
|
|
760
|
+
msgid "Running {action}..."
|
|
761
|
+
msgstr "正在运行 {action}..."
|
|
762
|
+
|
|
763
|
+
#: src/iac_code/tools/cloud/types.py:8
|
|
764
|
+
msgid "CREATE_IN_PROGRESS"
|
|
765
|
+
msgstr "创建中"
|
|
766
|
+
|
|
767
|
+
#: src/iac_code/tools/cloud/types.py:9
|
|
768
|
+
msgid "CREATE_FAILED"
|
|
769
|
+
msgstr "创建失败"
|
|
770
|
+
|
|
771
|
+
#: src/iac_code/tools/cloud/types.py:10
|
|
772
|
+
msgid "CREATE_COMPLETE"
|
|
773
|
+
msgstr "创建完成"
|
|
774
|
+
|
|
775
|
+
#: src/iac_code/tools/cloud/types.py:11
|
|
776
|
+
msgid "UPDATE_IN_PROGRESS"
|
|
777
|
+
msgstr "更新中"
|
|
778
|
+
|
|
779
|
+
#: src/iac_code/tools/cloud/types.py:12
|
|
780
|
+
msgid "UPDATE_FAILED"
|
|
781
|
+
msgstr "更新失败"
|
|
782
|
+
|
|
783
|
+
#: src/iac_code/tools/cloud/types.py:13
|
|
784
|
+
msgid "UPDATE_COMPLETE"
|
|
785
|
+
msgstr "更新完成"
|
|
786
|
+
|
|
787
|
+
#: src/iac_code/tools/cloud/types.py:14
|
|
788
|
+
msgid "DELETE_IN_PROGRESS"
|
|
789
|
+
msgstr "删除中"
|
|
790
|
+
|
|
791
|
+
#: src/iac_code/tools/cloud/types.py:15
|
|
792
|
+
msgid "DELETE_FAILED"
|
|
793
|
+
msgstr "删除失败"
|
|
794
|
+
|
|
795
|
+
#: src/iac_code/tools/cloud/types.py:16
|
|
796
|
+
msgid "DELETE_COMPLETE"
|
|
797
|
+
msgstr "删除完成"
|
|
798
|
+
|
|
799
|
+
#: src/iac_code/tools/cloud/types.py:17
|
|
800
|
+
msgid "CREATE_ROLLBACK_IN_PROGRESS"
|
|
801
|
+
msgstr "创建回滚中"
|
|
802
|
+
|
|
803
|
+
#: src/iac_code/tools/cloud/types.py:18
|
|
804
|
+
msgid "CREATE_ROLLBACK_FAILED"
|
|
805
|
+
msgstr "创建回滚失败"
|
|
806
|
+
|
|
807
|
+
#: src/iac_code/tools/cloud/types.py:19
|
|
808
|
+
msgid "CREATE_ROLLBACK_COMPLETE"
|
|
809
|
+
msgstr "创建回滚完成"
|
|
810
|
+
|
|
811
|
+
#: src/iac_code/tools/cloud/types.py:20
|
|
812
|
+
msgid "ROLLBACK_IN_PROGRESS"
|
|
813
|
+
msgstr "回滚中"
|
|
814
|
+
|
|
815
|
+
#: src/iac_code/tools/cloud/types.py:21
|
|
816
|
+
msgid "ROLLBACK_FAILED"
|
|
817
|
+
msgstr "回滚失败"
|
|
818
|
+
|
|
819
|
+
#: src/iac_code/tools/cloud/types.py:22
|
|
820
|
+
msgid "ROLLBACK_COMPLETE"
|
|
821
|
+
msgstr "回滚完成"
|
|
822
|
+
|
|
823
|
+
#: src/iac_code/tools/cloud/types.py:23
|
|
824
|
+
msgid "CHECK_IN_PROGRESS"
|
|
825
|
+
msgstr "检查中"
|
|
826
|
+
|
|
827
|
+
#: src/iac_code/tools/cloud/types.py:24
|
|
828
|
+
msgid "CHECK_FAILED"
|
|
829
|
+
msgstr "检查失败"
|
|
830
|
+
|
|
831
|
+
#: src/iac_code/tools/cloud/types.py:25
|
|
832
|
+
msgid "CHECK_COMPLETE"
|
|
833
|
+
msgstr "检查完成"
|
|
834
|
+
|
|
835
|
+
#: src/iac_code/tools/cloud/types.py:26
|
|
836
|
+
msgid "REVIEW_IN_PROGRESS"
|
|
837
|
+
msgstr "审查中"
|
|
838
|
+
|
|
839
|
+
#: src/iac_code/tools/cloud/types.py:27
|
|
840
|
+
msgid "IMPORT_CREATE_IN_PROGRESS"
|
|
841
|
+
msgstr "导入创建中"
|
|
842
|
+
|
|
843
|
+
#: src/iac_code/tools/cloud/types.py:28
|
|
844
|
+
msgid "IMPORT_CREATE_FAILED"
|
|
845
|
+
msgstr "导入创建失败"
|
|
846
|
+
|
|
847
|
+
#: src/iac_code/tools/cloud/types.py:29
|
|
848
|
+
msgid "IMPORT_CREATE_COMPLETE"
|
|
849
|
+
msgstr "导入创建完成"
|
|
850
|
+
|
|
851
|
+
#: src/iac_code/tools/cloud/types.py:30
|
|
852
|
+
msgid "IMPORT_CREATE_ROLLBACK_IN_PROGRESS"
|
|
853
|
+
msgstr "导入创建回滚中"
|
|
854
|
+
|
|
855
|
+
#: src/iac_code/tools/cloud/types.py:31
|
|
856
|
+
msgid "IMPORT_CREATE_ROLLBACK_FAILED"
|
|
857
|
+
msgstr "导入创建回滚失败"
|
|
858
|
+
|
|
859
|
+
#: src/iac_code/tools/cloud/types.py:32
|
|
860
|
+
msgid "IMPORT_CREATE_ROLLBACK_COMPLETE"
|
|
861
|
+
msgstr "导入创建回滚完成"
|
|
862
|
+
|
|
863
|
+
#: src/iac_code/tools/cloud/types.py:33
|
|
864
|
+
msgid "IMPORT_UPDATE_IN_PROGRESS"
|
|
865
|
+
msgstr "导入更新中"
|
|
866
|
+
|
|
867
|
+
#: src/iac_code/tools/cloud/types.py:34
|
|
868
|
+
msgid "IMPORT_UPDATE_FAILED"
|
|
869
|
+
msgstr "导入更新失败"
|
|
870
|
+
|
|
871
|
+
#: src/iac_code/tools/cloud/types.py:35
|
|
872
|
+
msgid "IMPORT_UPDATE_COMPLETE"
|
|
873
|
+
msgstr "导入更新完成"
|
|
874
|
+
|
|
875
|
+
#: src/iac_code/tools/cloud/types.py:36
|
|
876
|
+
msgid "IMPORT_UPDATE_ROLLBACK_IN_PROGRESS"
|
|
877
|
+
msgstr "导入更新回滚中"
|
|
878
|
+
|
|
879
|
+
#: src/iac_code/tools/cloud/types.py:37
|
|
880
|
+
msgid "IMPORT_UPDATE_ROLLBACK_FAILED"
|
|
881
|
+
msgstr "导入更新回滚失败"
|
|
882
|
+
|
|
883
|
+
#: src/iac_code/tools/cloud/types.py:38
|
|
884
|
+
msgid "IMPORT_UPDATE_ROLLBACK_COMPLETE"
|
|
885
|
+
msgstr "导入更新回滚完成"
|
|
886
|
+
|
|
887
|
+
#: src/iac_code/tools/cloud/types.py:40
|
|
888
|
+
msgid "INIT_COMPLETE"
|
|
889
|
+
msgstr "初始化完成"
|
|
890
|
+
|
|
891
|
+
#: src/iac_code/tools/cloud/types.py:41
|
|
892
|
+
msgid "IMPORT_IN_PROGRESS"
|
|
893
|
+
msgstr "导入中"
|
|
894
|
+
|
|
895
|
+
#: src/iac_code/tools/cloud/types.py:42
|
|
896
|
+
msgid "IMPORT_COMPLETE"
|
|
897
|
+
msgstr "导入完成"
|
|
898
|
+
|
|
899
|
+
#: src/iac_code/tools/cloud/types.py:43
|
|
900
|
+
msgid "IMPORT_FAILED"
|
|
901
|
+
msgstr "导入失败"
|
|
902
|
+
|
|
903
|
+
#: src/iac_code/tools/cloud/aliyun/aliyun_api.py:165
|
|
904
|
+
msgid "Aliyun API"
|
|
905
|
+
msgstr "阿里云 API"
|
|
906
|
+
|
|
907
|
+
#: src/iac_code/tools/cloud/aliyun/aliyun_api.py:372
|
|
908
|
+
#, python-brace-format
|
|
909
|
+
msgid "Call succeeded (RequestId: {request_id})"
|
|
910
|
+
msgstr "调用成功(RequestId: {request_id})"
|
|
911
|
+
|
|
912
|
+
#: src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py:57
|
|
913
|
+
msgid "DocSearch"
|
|
914
|
+
msgstr "文档搜索"
|
|
915
|
+
|
|
916
|
+
#: src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py:70
|
|
917
|
+
#, python-brace-format
|
|
918
|
+
msgid "Searching docs for {keywords}..."
|
|
919
|
+
msgstr "正在搜索 {keywords} 的文档..."
|
|
920
|
+
|
|
921
|
+
#: src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py:71
|
|
922
|
+
msgid "Searching docs..."
|
|
923
|
+
msgstr "正在搜索文档..."
|
|
924
|
+
|
|
925
|
+
#: src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py:76
|
|
926
|
+
msgid "keywords cannot be empty."
|
|
927
|
+
msgstr "关键词不能为空。"
|
|
928
|
+
|
|
929
|
+
#: src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py:96
|
|
930
|
+
#, python-brace-format
|
|
931
|
+
msgid "HTTP error {status} when searching docs."
|
|
932
|
+
msgstr "搜索文档时发生 HTTP 错误 {status}。"
|
|
933
|
+
|
|
934
|
+
#: src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py:98
|
|
935
|
+
#, python-brace-format
|
|
936
|
+
msgid "Failed to search docs: {error}"
|
|
937
|
+
msgstr "搜索文档失败:{error}"
|
|
938
|
+
|
|
939
|
+
#: src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py:103
|
|
940
|
+
msgid "Failed to parse search response as JSON."
|
|
941
|
+
msgstr "无法将搜索响应解析为 JSON。"
|
|
942
|
+
|
|
943
|
+
#: src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py:106
|
|
944
|
+
msgid "Search API returned failure."
|
|
945
|
+
msgstr "搜索 API 返回失败。"
|
|
946
|
+
|
|
947
|
+
#: src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py:125
|
|
948
|
+
msgid "No documents found"
|
|
949
|
+
msgstr "未找到文档"
|
|
950
|
+
|
|
951
|
+
#: src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py:126
|
|
952
|
+
#, python-brace-format
|
|
953
|
+
msgid "No documents found for keywords: {keywords}"
|
|
954
|
+
msgstr "未找到关键词为 {keywords} 的文档"
|
|
955
|
+
|
|
956
|
+
#: src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py:141
|
|
957
|
+
#, python-brace-format
|
|
958
|
+
msgid "Found {count} documents (total {total})"
|
|
959
|
+
msgstr "找到 {count} 篇文档(共 {total} 篇)"
|
|
960
|
+
|
|
961
|
+
#: src/iac_code/tools/cloud/aliyun/aliyun_doc_search.py:143
|
|
962
|
+
msgid "Use web_fetch tool to read full document content if needed."
|
|
963
|
+
msgstr "如需要,请使用 web_fetch 工具读取完整文档内容。"
|
|
964
|
+
|
|
965
|
+
#: src/iac_code/tools/cloud/aliyun/ros_stack.py:139
|
|
966
|
+
msgid "ROS Stack"
|
|
967
|
+
msgstr "ROS 资源栈"
|
|
968
|
+
|
|
969
|
+
#: src/iac_code/tools/cloud/aliyun/ros_stack_instances.py:100
|
|
970
|
+
msgid "CloudStackInstances"
|
|
971
|
+
msgstr "云资源栈实例"
|
|
972
|
+
|
|
973
|
+
#: src/iac_code/ui/banner.py:38
|
|
974
|
+
msgid "DashScope"
|
|
975
|
+
msgstr "阿里云百炼"
|
|
976
|
+
|
|
977
|
+
#: src/iac_code/ui/banner.py:39
|
|
978
|
+
msgid "DashScope Token Plan"
|
|
979
|
+
msgstr "阿里云百炼 Token Plan"
|
|
980
|
+
|
|
981
|
+
#: src/iac_code/ui/banner.py:40
|
|
982
|
+
msgid "OpenAI"
|
|
983
|
+
msgstr "OpenAI"
|
|
984
|
+
|
|
985
|
+
#: src/iac_code/ui/banner.py:41
|
|
986
|
+
msgid "Anthropic"
|
|
987
|
+
msgstr "Anthropic"
|
|
988
|
+
|
|
989
|
+
#: src/iac_code/ui/banner.py:42
|
|
990
|
+
msgid "DeepSeek"
|
|
991
|
+
msgstr "DeepSeek"
|
|
992
|
+
|
|
993
|
+
#: src/iac_code/ui/banner.py:43
|
|
994
|
+
msgid "OpenAPI Compatible"
|
|
995
|
+
msgstr "OpenAPI 兼容"
|
|
996
|
+
|
|
997
|
+
#: src/iac_code/ui/banner.py:67
|
|
998
|
+
msgid "Your AI-powered Infrastructure as Code assistant"
|
|
999
|
+
msgstr "您的 AI 驱动的基础设施即代码助手"
|
|
1000
|
+
|
|
1001
|
+
#: src/iac_code/ui/banner.py:91
|
|
1002
|
+
msgid "Welcome back"
|
|
1003
|
+
msgstr "欢迎回来"
|
|
1004
|
+
|
|
1005
|
+
#: src/iac_code/ui/banner.py:97
|
|
1006
|
+
msgid "Session"
|
|
1007
|
+
msgstr "会话"
|
|
1008
|
+
|
|
1009
|
+
#: src/iac_code/ui/banner.py:107
|
|
1010
|
+
msgid "Debug mode"
|
|
1011
|
+
msgstr "调试模式"
|
|
1012
|
+
|
|
1013
|
+
#: src/iac_code/ui/banner.py:108
|
|
1014
|
+
msgid "Log file"
|
|
1015
|
+
msgstr "日志文件"
|
|
1016
|
+
|
|
1017
|
+
#: src/iac_code/ui/renderer.py:350 src/iac_code/ui/renderer.py:620
|
|
1018
|
+
#: src/iac_code/ui/renderer.py:1335
|
|
1019
|
+
#, python-brace-format
|
|
1020
|
+
msgid "Thought for {seconds:.1f}s"
|
|
1021
|
+
msgstr "思考完成(耗时 {seconds:.1f}s)"
|
|
1022
|
+
|
|
1023
|
+
#: src/iac_code/ui/renderer.py:366 src/iac_code/ui/renderer.py:652
|
|
1024
|
+
#: src/iac_code/ui/renderer.py:1356
|
|
1025
|
+
msgid "(ctrl+o to expand)"
|
|
1026
|
+
msgstr "(ctrl+o 展开)"
|
|
1027
|
+
|
|
1028
|
+
#: src/iac_code/ui/renderer.py:393
|
|
1029
|
+
msgid "Resource"
|
|
1030
|
+
msgstr "资源"
|
|
1031
|
+
|
|
1032
|
+
#: src/iac_code/ui/renderer.py:394
|
|
1033
|
+
msgid "Type"
|
|
1034
|
+
msgstr "类型"
|
|
1035
|
+
|
|
1036
|
+
#: src/iac_code/ui/renderer.py:395 src/iac_code/ui/renderer.py:418
|
|
1037
|
+
msgid "Status"
|
|
1038
|
+
msgstr "状态"
|
|
1039
|
+
|
|
1040
|
+
#: src/iac_code/ui/renderer.py:416
|
|
1041
|
+
msgid "Account ID"
|
|
1042
|
+
msgstr "账号 ID"
|
|
1043
|
+
|
|
1044
|
+
#: src/iac_code/ui/renderer.py:494
|
|
1045
|
+
#, python-brace-format
|
|
1046
|
+
msgid "Done ({child_count} tool uses{token_info}{elapsed})"
|
|
1047
|
+
msgstr "完成({child_count} 次工具调用{token_info}{elapsed})"
|
|
1048
|
+
|
|
1049
|
+
#: src/iac_code/ui/renderer.py:524
|
|
1050
|
+
#, python-brace-format
|
|
1051
|
+
msgid "+ {count} more tool uses (ctrl+o to expand)"
|
|
1052
|
+
msgstr "+ {count} 个工具调用 (ctrl+o 展开)"
|
|
1053
|
+
|
|
1054
|
+
#: src/iac_code/ui/renderer.py:1122
|
|
1055
|
+
#, python-brace-format
|
|
1056
|
+
msgid "Context auto-compacted: {original} → {compacted} tokens"
|
|
1057
|
+
msgstr "上下文自动压缩:{original} → {compacted} tokens"
|
|
1058
|
+
|
|
1059
|
+
#: src/iac_code/ui/renderer.py:1199
|
|
1060
|
+
msgid "Operation cancelled."
|
|
1061
|
+
msgstr "操作已取消。"
|
|
1062
|
+
|
|
1063
|
+
#: src/iac_code/ui/renderer.py:1204
|
|
1064
|
+
msgid "No API key configured."
|
|
1065
|
+
msgstr "尚未配置 API 密钥。"
|
|
1066
|
+
|
|
1067
|
+
#: src/iac_code/ui/renderer.py:1204
|
|
1068
|
+
msgid "Please run /auth to set up your LLM provider and API key."
|
|
1069
|
+
msgstr "请运行 /auth 设置您的 LLM 提供商和 API 密钥。"
|
|
1070
|
+
|
|
1071
|
+
#: src/iac_code/ui/renderer.py:1208
|
|
1072
|
+
#, python-brace-format
|
|
1073
|
+
msgid "Error: {error}"
|
|
1074
|
+
msgstr "错误:{error}"
|
|
1075
|
+
|
|
1076
|
+
#: src/iac_code/ui/renderer.py:1276
|
|
1077
|
+
msgid "Allow this action?"
|
|
1078
|
+
msgstr "是否允许执行此操作?"
|
|
1079
|
+
|
|
1080
|
+
#: src/iac_code/ui/renderer.py:1279
|
|
1081
|
+
msgid "Yes, allow once"
|
|
1082
|
+
msgstr "是,仅本次允许"
|
|
1083
|
+
|
|
1084
|
+
#: src/iac_code/ui/renderer.py:1280
|
|
1085
|
+
msgid "Yes, allow always for this tool"
|
|
1086
|
+
msgstr "是,始终允许此工具"
|
|
1087
|
+
|
|
1088
|
+
#: src/iac_code/ui/renderer.py:1281
|
|
1089
|
+
msgid "No, reject once"
|
|
1090
|
+
msgstr "否,仅本次拒绝"
|
|
1091
|
+
|
|
1092
|
+
#: src/iac_code/ui/renderer.py:1281
|
|
1093
|
+
msgid "default"
|
|
1094
|
+
msgstr "默认"
|
|
1095
|
+
|
|
1096
|
+
#: src/iac_code/ui/renderer.py:1282
|
|
1097
|
+
msgid "No, always reject this tool"
|
|
1098
|
+
msgstr "否,始终拒绝此工具"
|
|
1099
|
+
|
|
1100
|
+
#: src/iac_code/ui/repl.py:311
|
|
1101
|
+
msgid "Press Ctrl+C again to exit."
|
|
1102
|
+
msgstr "再次按 Ctrl+C 退出。"
|
|
1103
|
+
|
|
1104
|
+
#: src/iac_code/ui/repl.py:327
|
|
1105
|
+
msgid "Interrupted."
|
|
1106
|
+
msgstr "已中断。"
|
|
1107
|
+
|
|
1108
|
+
#: src/iac_code/ui/repl.py:364
|
|
1109
|
+
msgid "Goodbye!"
|
|
1110
|
+
msgstr "再见!"
|
|
1111
|
+
|
|
1112
|
+
#: src/iac_code/ui/repl.py:365
|
|
1113
|
+
msgid "Resume this session with:"
|
|
1114
|
+
msgstr "恢复此会话请运行:"
|
|
1115
|
+
|
|
1116
|
+
#: src/iac_code/ui/repl.py:447
|
|
1117
|
+
#, python-brace-format
|
|
1118
|
+
msgid "Unknown command: /{name}. Type /help for available commands."
|
|
1119
|
+
msgstr "未知命令:/{name}。输入 /help 查看可用命令。"
|
|
1120
|
+
|
|
1121
|
+
#: src/iac_code/ui/repl.py:471 src/iac_code/ui/repl.py:503
|
|
1122
|
+
#, python-brace-format
|
|
1123
|
+
msgid "Command error: {error}"
|
|
1124
|
+
msgstr "命令错误:{error}"
|
|
1125
|
+
|
|
1126
|
+
#: src/iac_code/ui/repl.py:478
|
|
1127
|
+
#, python-brace-format
|
|
1128
|
+
msgid "Command has no handler: {name}"
|
|
1129
|
+
msgstr "命令没有处理器:{name}"
|
|
1130
|
+
|
|
1131
|
+
#: src/iac_code/ui/repl.py:628
|
|
1132
|
+
#, python-brace-format
|
|
1133
|
+
msgid "Session not found: {session_id}"
|
|
1134
|
+
msgstr "会话不存在:{session_id}"
|
|
1135
|
+
|
|
1136
|
+
#: src/iac_code/ui/repl.py:647
|
|
1137
|
+
#, python-brace-format
|
|
1138
|
+
msgid ""
|
|
1139
|
+
"This session belongs to a different directory.\n"
|
|
1140
|
+
"To resume, run:\n"
|
|
1141
|
+
" {cmd}"
|
|
1142
|
+
msgstr ""
|
|
1143
|
+
"该会话属于另一个目录。\n"
|
|
1144
|
+
"请运行以下命令恢复:\n"
|
|
1145
|
+
" {cmd}"
|
|
1146
|
+
|
|
1147
|
+
#: src/iac_code/ui/repl.py:686
|
|
1148
|
+
msgid "This conversation is from a different directory."
|
|
1149
|
+
msgstr "该会话来自另一个目录。"
|
|
1150
|
+
|
|
1151
|
+
#: src/iac_code/ui/repl.py:688
|
|
1152
|
+
msgid "To resume, run:"
|
|
1153
|
+
msgstr "请运行以下命令恢复:"
|
|
1154
|
+
|
|
1155
|
+
#: src/iac_code/ui/repl.py:693
|
|
1156
|
+
msgid "(Command copied to clipboard)"
|
|
1157
|
+
msgstr "(命令已复制到剪贴板)"
|
|
1158
|
+
|
|
1159
|
+
#: src/iac_code/ui/spinner.py:53
|
|
1160
|
+
msgid "Thinking"
|
|
1161
|
+
msgstr "思考中"
|
|
1162
|
+
|
|
1163
|
+
#: src/iac_code/ui/spinner.py:54
|
|
1164
|
+
msgid "Processing"
|
|
1165
|
+
msgstr "处理中"
|
|
1166
|
+
|
|
1167
|
+
#: src/iac_code/ui/spinner.py:55
|
|
1168
|
+
msgid "Working"
|
|
1169
|
+
msgstr "工作中"
|
|
1170
|
+
|
|
1171
|
+
#: src/iac_code/ui/spinner.py:64
|
|
1172
|
+
msgid "Thought"
|
|
1173
|
+
msgstr "已思考"
|
|
1174
|
+
|
|
1175
|
+
#: src/iac_code/ui/spinner.py:65
|
|
1176
|
+
msgid "Processed"
|
|
1177
|
+
msgstr "已处理"
|
|
1178
|
+
|
|
1179
|
+
#: src/iac_code/ui/spinner.py:66
|
|
1180
|
+
msgid "Worked"
|
|
1181
|
+
msgstr "已完成"
|
|
1182
|
+
|
|
1183
|
+
#: src/iac_code/ui/transcript_view.py:158
|
|
1184
|
+
msgid "Prompt:"
|
|
1185
|
+
msgstr "提示词:"
|
|
1186
|
+
|
|
1187
|
+
#: src/iac_code/ui/transcript_view.py:186
|
|
1188
|
+
msgid "Showing transcript · ctrl+o to toggle"
|
|
1189
|
+
msgstr "显示完整记录 · 按 ctrl+o 切换"
|
|
1190
|
+
|
|
1191
|
+
#: src/iac_code/ui/components/fuzzy_picker.py:120
|
|
1192
|
+
msgid "No matches found"
|
|
1193
|
+
msgstr "未找到匹配项"
|
|
1194
|
+
|
|
1195
|
+
#: src/iac_code/ui/core/prompt_input.py:373
|
|
1196
|
+
msgid "Fill"
|
|
1197
|
+
msgstr "填充"
|
|
1198
|
+
|
|
1199
|
+
#: src/iac_code/ui/core/prompt_input.py:373
|
|
1200
|
+
msgid "Dismiss"
|
|
1201
|
+
msgstr "关闭"
|
|
1202
|
+
|
|
1203
|
+
#: src/iac_code/ui/dialogs/global_search.py:54
|
|
1204
|
+
msgid "No matching content"
|
|
1205
|
+
msgstr "没有匹配的内容"
|
|
1206
|
+
|
|
1207
|
+
#: src/iac_code/ui/dialogs/global_search.py:60
|
|
1208
|
+
msgid "Search in Files"
|
|
1209
|
+
msgstr "在文件中搜索"
|
|
1210
|
+
|
|
1211
|
+
#: src/iac_code/ui/dialogs/global_search.py:61
|
|
1212
|
+
msgid "Type to search content..."
|
|
1213
|
+
msgstr "输入以搜索内容..."
|
|
1214
|
+
|
|
1215
|
+
#: src/iac_code/ui/dialogs/global_search.py:62
|
|
1216
|
+
msgid "Enter search query"
|
|
1217
|
+
msgstr "输入搜索查询"
|
|
1218
|
+
|
|
1219
|
+
#: src/iac_code/ui/dialogs/history_search.py:55
|
|
1220
|
+
msgid "Search Conversation History"
|
|
1221
|
+
msgstr "搜索对话历史"
|
|
1222
|
+
|
|
1223
|
+
#: src/iac_code/ui/dialogs/history_search.py:56
|
|
1224
|
+
msgid "Type to search..."
|
|
1225
|
+
msgstr "输入以搜索..."
|
|
1226
|
+
|
|
1227
|
+
#: src/iac_code/ui/dialogs/history_search.py:57
|
|
1228
|
+
msgid "No conversation history"
|
|
1229
|
+
msgstr "没有对话历史"
|
|
1230
|
+
|
|
1231
|
+
#: src/iac_code/ui/dialogs/history_search.py:98
|
|
1232
|
+
msgid "Message Preview"
|
|
1233
|
+
msgstr "消息预览"
|
|
1234
|
+
|
|
1235
|
+
#: src/iac_code/ui/dialogs/quick_open.py:58
|
|
1236
|
+
msgid "Open File"
|
|
1237
|
+
msgstr "打开文件"
|
|
1238
|
+
|
|
1239
|
+
#: src/iac_code/ui/dialogs/quick_open.py:59
|
|
1240
|
+
msgid "Type to search files..."
|
|
1241
|
+
msgstr "输入以搜索文件..."
|
|
1242
|
+
|
|
1243
|
+
#: src/iac_code/ui/dialogs/quick_open.py:60
|
|
1244
|
+
msgid "No matching files"
|
|
1245
|
+
msgstr "没有匹配的文件"
|
|
1246
|
+
|
|
1247
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:114
|
|
1248
|
+
msgid "Search..."
|
|
1249
|
+
msgstr "搜索…"
|
|
1250
|
+
|
|
1251
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:359
|
|
1252
|
+
msgid "Resume Session"
|
|
1253
|
+
msgstr "恢复会话"
|
|
1254
|
+
|
|
1255
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:369
|
|
1256
|
+
msgid "No sessions found"
|
|
1257
|
+
msgstr "未找到会话"
|
|
1258
|
+
|
|
1259
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:427
|
|
1260
|
+
msgid "show current dir"
|
|
1261
|
+
msgstr "显示当前目录"
|
|
1262
|
+
|
|
1263
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:429
|
|
1264
|
+
msgid "show all projects"
|
|
1265
|
+
msgstr "显示所有项目"
|
|
1266
|
+
|
|
1267
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:432
|
|
1268
|
+
msgid "show all branches"
|
|
1269
|
+
msgstr "显示所有分支"
|
|
1270
|
+
|
|
1271
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:434
|
|
1272
|
+
msgid "only show current branch"
|
|
1273
|
+
msgstr "仅显示当前分支"
|
|
1274
|
+
|
|
1275
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:435
|
|
1276
|
+
msgid "preview"
|
|
1277
|
+
msgstr "预览"
|
|
1278
|
+
|
|
1279
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:436
|
|
1280
|
+
msgid "Type to search"
|
|
1281
|
+
msgstr "输入以搜索"
|
|
1282
|
+
|
|
1283
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:437
|
|
1284
|
+
msgid "cancel"
|
|
1285
|
+
msgstr "取消"
|
|
1286
|
+
|
|
1287
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:552
|
|
1288
|
+
#, python-brace-format
|
|
1289
|
+
msgid "{n} more line{s}"
|
|
1290
|
+
msgstr "还有 {n} 行"
|
|
1291
|
+
|
|
1292
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:566
|
|
1293
|
+
#, python-brace-format
|
|
1294
|
+
msgid "{n} message{s}"
|
|
1295
|
+
msgstr "{n} 条消息"
|
|
1296
|
+
|
|
1297
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:580
|
|
1298
|
+
msgid "resume"
|
|
1299
|
+
msgstr "恢复"
|
|
1300
|
+
|
|
1301
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:584
|
|
1302
|
+
msgid "back"
|
|
1303
|
+
msgstr "返回"
|
|
1304
|
+
|
|
1305
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:589
|
|
1306
|
+
msgid "scroll"
|
|
1307
|
+
msgstr "滚动"
|
|
1308
|
+
|
|
1309
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:608
|
|
1310
|
+
msgid "(empty session)"
|
|
1311
|
+
msgstr "(空会话)"
|
|
1312
|
+
|
|
1313
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:728
|
|
1314
|
+
msgid "just now"
|
|
1315
|
+
msgstr "刚刚"
|
|
1316
|
+
|
|
1317
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:731
|
|
1318
|
+
#, python-brace-format
|
|
1319
|
+
msgid "{n} minute{s} ago"
|
|
1320
|
+
msgstr "{n} 分钟前"
|
|
1321
|
+
|
|
1322
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:734
|
|
1323
|
+
#, python-brace-format
|
|
1324
|
+
msgid "{n} hour{s} ago"
|
|
1325
|
+
msgstr "{n} 小时前"
|
|
1326
|
+
|
|
1327
|
+
#: src/iac_code/ui/dialogs/resume_picker.py:736
|
|
1328
|
+
#, python-brace-format
|
|
1329
|
+
msgid "{n} day{s} ago"
|
|
1330
|
+
msgstr "{n} 天前"
|
|
1331
|
+
|
|
1332
|
+
#~ msgid "toggle preview"
|
|
1333
|
+
#~ msgstr "切换预览"
|
|
1334
|
+
|
|
1335
|
+
#~ msgid "Preview"
|
|
1336
|
+
#~ msgstr "预览"
|
|
1337
|
+
|
|
1338
|
+
#~ msgid "{n} more line{s}"
|
|
1339
|
+
#~ msgstr "还有 {n} 行"
|
|
1340
|
+
|
|
1341
|
+
#~ msgid "back"
|
|
1342
|
+
#~ msgstr "返回"
|
|
1343
|
+
|
|
1344
|
+
#~ msgid "scroll"
|
|
1345
|
+
#~ msgstr "滚动"
|
|
1346
|
+
|
|
1347
|
+
#~ msgid "(empty)"
|
|
1348
|
+
#~ msgstr "(空)"
|
|
1349
|
+
|
|
1350
|
+
#~ msgid "back to list"
|
|
1351
|
+
#~ msgstr "返回列表"
|
|
1352
|
+
|
|
1353
|
+
#~ msgid "Choose [1-4]: "
|
|
1354
|
+
#~ msgstr "请选择 [1-4]: "
|
|
1355
|
+
|