ring-cli 0.2.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.
- ring/__init__.py +12 -0
- ring/__main__.py +6 -0
- ring/cli.py +685 -0
- ring/config.py +276 -0
- ring/focus/__init__.py +65 -0
- ring/focus/applescript.py +34 -0
- ring/focus/base.py +19 -0
- ring/focus/iterm2.py +28 -0
- ring/focus/terminal.py +25 -0
- ring/focus/tmux.py +38 -0
- ring/hook.py +482 -0
- ring/hook_protocol.py +264 -0
- ring/i18n.py +52 -0
- ring/ipc.py +220 -0
- ring/labels.py +50 -0
- ring/locale/en/LC_MESSAGES/ring.mo +0 -0
- ring/locale/en/LC_MESSAGES/ring.po +395 -0
- ring/locale/ring.pot +484 -0
- ring/notify/__init__.py +120 -0
- ring/notify/base.py +37 -0
- ring/notify/command.py +18 -0
- ring/notify/notify_send.py +30 -0
- ring/notify/osascript_notifier.py +32 -0
- ring/notify/terminal_notifier.py +64 -0
- ring/osascript.py +17 -0
- ring/registry.py +851 -0
- ring/sources/__init__.py +94 -0
- ring/sources/base.py +17 -0
- ring/sources/claude_code.py +23 -0
- ring/sources/codex.py +16 -0
- ring/sources/hook_registry.py +16 -0
- ring/tui.py +360 -0
- ring/watcher.py +107 -0
- ring_cli-0.2.0.dist-info/METADATA +334 -0
- ring_cli-0.2.0.dist-info/RECORD +38 -0
- ring_cli-0.2.0.dist-info/WHEEL +4 -0
- ring_cli-0.2.0.dist-info/entry_points.txt +3 -0
- ring_cli-0.2.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
msgid ""
|
|
2
|
+
msgstr ""
|
|
3
|
+
"Project-Id-Version: ring\n"
|
|
4
|
+
"Content-Type: text/plain; charset=UTF-8\n"
|
|
5
|
+
"Language: en\n"
|
|
6
|
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
7
|
+
|
|
8
|
+
# ── 狀態 ──
|
|
9
|
+
msgid "等你"
|
|
10
|
+
msgstr "waiting"
|
|
11
|
+
|
|
12
|
+
msgid "工作中"
|
|
13
|
+
msgstr "working"
|
|
14
|
+
|
|
15
|
+
msgid "跑完停著"
|
|
16
|
+
msgstr "done/idle"
|
|
17
|
+
|
|
18
|
+
msgid "已離場"
|
|
19
|
+
msgstr "ended"
|
|
20
|
+
|
|
21
|
+
# ── header(複數)──
|
|
22
|
+
msgid "{n} 個 session 在場"
|
|
23
|
+
msgid_plural "{n} 個 session 在場"
|
|
24
|
+
msgstr[0] "{n} session on stage"
|
|
25
|
+
msgstr[1] "{n} sessions on stage"
|
|
26
|
+
|
|
27
|
+
msgid "{n} 個 agent process 跑著"
|
|
28
|
+
msgid_plural "{n} 個 agent process 跑著"
|
|
29
|
+
msgstr[0] "{n} agent process running"
|
|
30
|
+
msgstr[1] "{n} agent processes running"
|
|
31
|
+
|
|
32
|
+
msgid "🎤 RiNG — {sess} · {proc}"
|
|
33
|
+
msgstr "🎤 RiNG — {sess} · {proc}"
|
|
34
|
+
|
|
35
|
+
# ── 表格 / 場館 ──
|
|
36
|
+
msgid "圖例"
|
|
37
|
+
msgstr "legend"
|
|
38
|
+
|
|
39
|
+
msgid "(場館目前沒人上台)"
|
|
40
|
+
msgstr "(no one on stage right now)"
|
|
41
|
+
|
|
42
|
+
msgid "狀態"
|
|
43
|
+
msgstr "status"
|
|
44
|
+
|
|
45
|
+
msgid "工具"
|
|
46
|
+
msgstr "tool"
|
|
47
|
+
|
|
48
|
+
msgid "專案"
|
|
49
|
+
msgstr "project"
|
|
50
|
+
|
|
51
|
+
msgid "進度"
|
|
52
|
+
msgstr "progress"
|
|
53
|
+
|
|
54
|
+
msgid "閒置"
|
|
55
|
+
msgstr "idle"
|
|
56
|
+
|
|
57
|
+
msgid "去哪"
|
|
58
|
+
msgstr "go to"
|
|
59
|
+
|
|
60
|
+
msgid "動作"
|
|
61
|
+
msgstr "action"
|
|
62
|
+
|
|
63
|
+
msgid "每 {interval}s 刷新 · Ctrl-C 離場"
|
|
64
|
+
msgstr "refresh every {interval}s · Ctrl-C to leave"
|
|
65
|
+
|
|
66
|
+
# ── CLI ──
|
|
67
|
+
msgid "看所有 agent CLI session 上台。"
|
|
68
|
+
msgstr "Watch all your agent CLI sessions on one stage."
|
|
69
|
+
|
|
70
|
+
msgid "持續刷新"
|
|
71
|
+
msgstr "keep refreshing"
|
|
72
|
+
|
|
73
|
+
msgid "watch 刷新秒數"
|
|
74
|
+
msgstr "watch refresh seconds"
|
|
75
|
+
|
|
76
|
+
msgid "watch 刷新幾格後自動結束(0=無限,預設)"
|
|
77
|
+
msgstr "stop after N frames (0 = forever, default)"
|
|
78
|
+
|
|
79
|
+
msgid "連已離場的 session 也顯示"
|
|
80
|
+
msgstr "also show ended sessions"
|
|
81
|
+
|
|
82
|
+
msgid "顯示顏色圖例(--no-legend 關閉)"
|
|
83
|
+
msgstr "show the color legend (--no-legend to hide)"
|
|
84
|
+
|
|
85
|
+
msgid "語言(如 en / zh-Hant;也吃 config / RING_LANG / LANG)"
|
|
86
|
+
msgstr "language (e.g. en / zh-Hant; also config / RING_LANG / LANG)"
|
|
87
|
+
|
|
88
|
+
# ── TUI 按鍵 ──
|
|
89
|
+
msgid "離場"
|
|
90
|
+
msgstr "leave"
|
|
91
|
+
|
|
92
|
+
msgid "刷新"
|
|
93
|
+
msgstr "refresh"
|
|
94
|
+
|
|
95
|
+
msgid "含已離場"
|
|
96
|
+
msgstr "incl. ended"
|
|
97
|
+
|
|
98
|
+
msgid "跳過去"
|
|
99
|
+
msgstr "jump"
|
|
100
|
+
|
|
101
|
+
msgid "命名"
|
|
102
|
+
msgstr "name"
|
|
103
|
+
|
|
104
|
+
# ── TUI 命名浮層 ──
|
|
105
|
+
msgid "為 {project} 命名(Enter 存、Esc 取消、清空移除)"
|
|
106
|
+
msgstr "Name {project} (Enter to save, Esc to cancel, empty to clear)"
|
|
107
|
+
|
|
108
|
+
msgid "這個 session 在做什麼…"
|
|
109
|
+
msgstr "what is this session doing…"
|
|
110
|
+
|
|
111
|
+
# ── TUI 狀態列 / 通知 ──
|
|
112
|
+
msgid "💡 同專案開了多個 session,裝 hook 跳轉才精準:ring install-hooks"
|
|
113
|
+
msgstr "💡 sessions share a project; install hooks for precise jump: ring install-hooks"
|
|
114
|
+
|
|
115
|
+
msgid "↑/↓ 選一列,Enter 或 Space 跳到那個 session 的終端"
|
|
116
|
+
msgstr "↑/↓ to select, Enter or Space to jump to its terminal"
|
|
117
|
+
|
|
118
|
+
msgid "🔔 {names} 在等你回話"
|
|
119
|
+
msgstr "🔔 {names} waiting for your reply"
|
|
120
|
+
|
|
121
|
+
msgid "(沒有選到 session)"
|
|
122
|
+
msgstr "(no session selected)"
|
|
123
|
+
|
|
124
|
+
msgid "→ {project}({where})"
|
|
125
|
+
msgstr "→ {project} ({where})"
|
|
126
|
+
|
|
127
|
+
msgid "{project}:{msg}"
|
|
128
|
+
msgstr "{project}: {msg}"
|
|
129
|
+
|
|
130
|
+
# ── 跳轉 ──
|
|
131
|
+
msgid "已離場的 session 無法跳轉"
|
|
132
|
+
msgstr "ended sessions cannot be focused"
|
|
133
|
+
|
|
134
|
+
msgid "找不到這個終端分頁(可能已關閉;刷新後若仍存在,請裝 hook 取得更精準狀態)"
|
|
135
|
+
msgstr "terminal tab not found (it may have been closed; if it still appears after refresh, install hooks for more precise state)"
|
|
136
|
+
|
|
137
|
+
msgid "沒有 focuser 接得住(裝 hook,或一個專案只開一個 session 才測得到 tty)"
|
|
138
|
+
msgstr "no focuser handled it (install hooks, or keep one session per project so tty is detectable)"
|
|
139
|
+
|
|
140
|
+
# ── install-hooks ──
|
|
141
|
+
msgid "⚠️ {path} 不是合法 JSON,先處理它再來。"
|
|
142
|
+
msgstr "⚠️ {path} is not valid JSON; fix it first."
|
|
143
|
+
|
|
144
|
+
msgid "✅ RiNG hooks 已經裝過了,沒有變更。({path})"
|
|
145
|
+
msgstr "✅ RiNG hooks already installed; no change. ({path})"
|
|
146
|
+
|
|
147
|
+
msgid "✅ 已註冊 RiNG hooks({events})到 {path}"
|
|
148
|
+
msgstr "✅ Registered RiNG hooks ({events}) into {path}"
|
|
149
|
+
|
|
150
|
+
msgid "重開 Claude Code session 後,🔴 等你狀態就會精準起來。"
|
|
151
|
+
msgstr "Restart your Claude Code sessions and the 🔴 waiting state becomes precise."
|
|
152
|
+
|
|
153
|
+
msgid "重開 Codex session、並在它詢問時「信任」這個 hook,🔴 等你狀態才會精準起來(Codex 不會執行未信任的 hook)。"
|
|
154
|
+
msgstr "Restart your Codex session and \"trust\" this hook when prompted; only then does the 🔴 waiting state become precise (Codex won't run an untrusted hook)."
|
|
155
|
+
|
|
156
|
+
# ── install-hooks:遷移衝突警告 ──
|
|
157
|
+
msgid "⚠️ 偵測到其他工具也掛在 {events}:{cmds}"
|
|
158
|
+
msgstr "⚠️ Other tools are also hooked on {events}: {cmds}"
|
|
159
|
+
|
|
160
|
+
msgid "它們會跟 RiNG 的通知重複觸發;要完全改用 RiNG,建議移除它們。"
|
|
161
|
+
msgstr "They fire alongside RiNG's notifications; to switch fully to RiNG, remove them."
|
|
162
|
+
|
|
163
|
+
# ── remove-hooks ──
|
|
164
|
+
msgid "ℹ️ {path} 不存在,沒有可移除的 hook。"
|
|
165
|
+
msgstr "ℹ️ {path} does not exist; nothing to remove."
|
|
166
|
+
|
|
167
|
+
msgid "ℹ️ 沒有找到 RiNG hook 條目,無需移除。({path})"
|
|
168
|
+
msgstr "ℹ️ No RiNG hook entries found; nothing to remove. ({path})"
|
|
169
|
+
|
|
170
|
+
msgid "✅ 已移除 RiNG hooks({events})從 {path}"
|
|
171
|
+
msgstr "✅ Removed RiNG hooks ({events}) from {path}"
|
|
172
|
+
|
|
173
|
+
# ── notify 文案明確化 ──
|
|
174
|
+
msgid "RiNG · {project} 在等你回話"
|
|
175
|
+
msgstr "RiNG · {project} is waiting for you"
|
|
176
|
+
|
|
177
|
+
msgid "{project} · …/{tail}"
|
|
178
|
+
msgstr "{project} · …/{tail}"
|
|
179
|
+
|
|
180
|
+
msgid "💡 裝 terminal-notifier 可點擊通知直接跳回 session:brew install terminal-notifier"
|
|
181
|
+
msgstr "💡 Install terminal-notifier for click-to-jump notifications: brew install terminal-notifier"
|
|
182
|
+
|
|
183
|
+
# ── TUI IPC 回呼 ──
|
|
184
|
+
msgid "→ 已跳到 {project}(來自通知)"
|
|
185
|
+
msgstr "→ jumped to {project} (from notification)"
|
|
186
|
+
|
|
187
|
+
msgid "那個 session 已不在場"
|
|
188
|
+
msgstr "that session is no longer on stage"
|
|
189
|
+
|
|
190
|
+
# ── config subcommand ──
|
|
191
|
+
msgid "RiNG 設定檔"
|
|
192
|
+
msgstr "RiNG config file"
|
|
193
|
+
|
|
194
|
+
msgid "路徑"
|
|
195
|
+
msgstr "path"
|
|
196
|
+
|
|
197
|
+
msgid "已存在"
|
|
198
|
+
msgstr "exists"
|
|
199
|
+
|
|
200
|
+
msgid "不存在(全部用內建預設)"
|
|
201
|
+
msgstr "missing (using built-in defaults)"
|
|
202
|
+
|
|
203
|
+
msgid "目前生效的設定(← = 你覆寫過的)"
|
|
204
|
+
msgstr "Effective settings (← = overridden by you)"
|
|
205
|
+
|
|
206
|
+
msgid "(內建預設)"
|
|
207
|
+
msgstr "(built-in default)"
|
|
208
|
+
|
|
209
|
+
msgid "用 `ring config set KEY VALUE` 改,或直接編輯上面那個檔;完整選項見 src/ring/config.py 的 docstring。"
|
|
210
|
+
msgstr "Change with `ring config set KEY VALUE`, or edit the file above; see the docstring in src/ring/config.py for all options."
|
|
211
|
+
|
|
212
|
+
msgid "未知的鍵:{key}"
|
|
213
|
+
msgstr "unknown key: {key}"
|
|
214
|
+
|
|
215
|
+
msgid "用法:ring config get KEY"
|
|
216
|
+
msgstr "usage: ring config get KEY"
|
|
217
|
+
|
|
218
|
+
msgid "用法:ring config set KEY VALUE"
|
|
219
|
+
msgstr "usage: ring config set KEY VALUE"
|
|
220
|
+
|
|
221
|
+
msgid "✅ 已設定 {key} = {value}({path})"
|
|
222
|
+
msgstr "✅ Set {key} = {value} ({path})"
|
|
223
|
+
|
|
224
|
+
msgid "註:set 會重寫整個設定檔,原有註解不會保留。"
|
|
225
|
+
msgstr "Note: set rewrites the whole config file; existing comments are not preserved."
|
|
226
|
+
|
|
227
|
+
msgid "未知的 config 動作:{action}(用 get / set,或不帶參數看目前設定)"
|
|
228
|
+
msgstr "unknown config action: {action} (use get / set, or no args to view current settings)"
|
|
229
|
+
|
|
230
|
+
# ── _commands_help ──
|
|
231
|
+
msgid ""
|
|
232
|
+
"\n"
|
|
233
|
+
"commands:\n"
|
|
234
|
+
" hook [PROVIDER] 從 stdin 讀 provider hook payload,寫入 RiNG registry\n"
|
|
235
|
+
" hook --provider PROVIDER 同上,明確指定 provider(例如 codex)\n"
|
|
236
|
+
" install-hooks [--dry-run] 安裝 Claude Code / Codex hooks\n"
|
|
237
|
+
" remove-hooks [--dry-run] 移除 Claude Code / Codex hooks\n"
|
|
238
|
+
" config 顯示設定檔位置與目前生效的設定\n"
|
|
239
|
+
" config get KEY 讀單一設定的目前值\n"
|
|
240
|
+
" config set KEY VALUE 寫入單一設定(會重寫設定檔,不保留註解)\n"
|
|
241
|
+
" focus SESSION_ID 聚焦指定 session;TUI 在跑時會回到 RiNG 並選中該列\n"
|
|
242
|
+
" doctor 顯示環境診斷(唯讀)——hook 安裝狀態、通知後端、focuser 可用性\n"
|
|
243
|
+
msgstr ""
|
|
244
|
+
"\n"
|
|
245
|
+
"commands:\n"
|
|
246
|
+
" hook [PROVIDER] read provider hook payload from stdin, write to RiNG registry\n"
|
|
247
|
+
" hook --provider PROVIDER same, with explicit provider (e.g. codex)\n"
|
|
248
|
+
" install-hooks [--dry-run] install Claude Code / Codex hooks\n"
|
|
249
|
+
" remove-hooks [--dry-run] remove Claude Code / Codex hooks\n"
|
|
250
|
+
" config show config file path and current settings\n"
|
|
251
|
+
" config get KEY read one setting's current value\n"
|
|
252
|
+
" config set KEY VALUE write one setting (rewrites config file, comments lost)\n"
|
|
253
|
+
" focus SESSION_ID focus a session; if TUI is running, returns to RiNG and selects the row\n"
|
|
254
|
+
" doctor show environment diagnosis (read-only) — hook status, notify backend, focuser availability\n"
|
|
255
|
+
|
|
256
|
+
# ── subcommand help ──
|
|
257
|
+
msgid ""
|
|
258
|
+
"usage: ring hook [PROVIDER] [--provider PROVIDER]\n"
|
|
259
|
+
"\n"
|
|
260
|
+
"從 stdin 讀 hook JSON,依 provider 正規化後寫入 RiNG registry。\n"
|
|
261
|
+
msgstr ""
|
|
262
|
+
"usage: ring hook [PROVIDER] [--provider PROVIDER]\n"
|
|
263
|
+
"\n"
|
|
264
|
+
"Read hook JSON from stdin, normalise by provider, and write to RiNG registry.\n"
|
|
265
|
+
|
|
266
|
+
msgid ""
|
|
267
|
+
"usage: ring install-hooks [--dry-run]\n"
|
|
268
|
+
"\n"
|
|
269
|
+
"安裝 Claude Code / Codex hooks。\n"
|
|
270
|
+
msgstr ""
|
|
271
|
+
"usage: ring install-hooks [--dry-run]\n"
|
|
272
|
+
"\n"
|
|
273
|
+
"Install Claude Code / Codex hooks.\n"
|
|
274
|
+
|
|
275
|
+
msgid ""
|
|
276
|
+
"usage: ring remove-hooks [--dry-run]\n"
|
|
277
|
+
"\n"
|
|
278
|
+
"從 Claude Code / Codex hook 設定移除 RiNG 安裝的 hooks。\n"
|
|
279
|
+
msgstr ""
|
|
280
|
+
"usage: ring remove-hooks [--dry-run]\n"
|
|
281
|
+
"\n"
|
|
282
|
+
"Remove RiNG-installed hooks from Claude Code / Codex hook settings.\n"
|
|
283
|
+
|
|
284
|
+
msgid ""
|
|
285
|
+
"usage: ring config [get KEY | set KEY VALUE]\n"
|
|
286
|
+
"\n"
|
|
287
|
+
"不帶參數:顯示設定檔位置(~/.config/ring/config.toml)與目前生效的所有設定。\n"
|
|
288
|
+
" get KEY 印出單一設定的目前值(colors 子鍵用 colors.<name>)。\n"
|
|
289
|
+
" set KEY VALUE 寫入單一設定。注意:會重寫整個設定檔,原有註解不會保留。\n"
|
|
290
|
+
msgstr ""
|
|
291
|
+
"usage: ring config [get KEY | set KEY VALUE]\n"
|
|
292
|
+
"\n"
|
|
293
|
+
"No args: show config file path (~/.config/ring/config.toml) and all current settings.\n"
|
|
294
|
+
" get KEY print the current value of one setting (use colors.<name> for color sub-keys).\n"
|
|
295
|
+
" set KEY VALUE write one setting. Note: rewrites the entire config file; existing comments are lost.\n"
|
|
296
|
+
|
|
297
|
+
msgid ""
|
|
298
|
+
"usage: ring focus SESSION_ID\n"
|
|
299
|
+
"\n"
|
|
300
|
+
"聚焦指定 session;若 RiNG TUI 正在執行,會回到 TUI 並選中該列。\n"
|
|
301
|
+
msgstr ""
|
|
302
|
+
"usage: ring focus SESSION_ID\n"
|
|
303
|
+
"\n"
|
|
304
|
+
"Focus the specified session; if RiNG TUI is running, returns to TUI and selects the row.\n"
|
|
305
|
+
|
|
306
|
+
msgid ""
|
|
307
|
+
"usage: ring doctor\n"
|
|
308
|
+
"\n"
|
|
309
|
+
"唯讀環境診斷:逐節報告 hook 安裝狀態、通知後端可用性、focuser 可用性與設定檔位置。\n"
|
|
310
|
+
"不寫任何檔案、不安裝、不發通知;固定回傳 0。\n"
|
|
311
|
+
msgstr ""
|
|
312
|
+
"usage: ring doctor\n"
|
|
313
|
+
"\n"
|
|
314
|
+
"Read-only environment diagnosis: reports hook install status, notify backend availability,\n"
|
|
315
|
+
"focuser availability, and config file path. Never writes files, installs, or sends notifications.\n"
|
|
316
|
+
"Always returns 0.\n"
|
|
317
|
+
|
|
318
|
+
# ── doctor subcommand strings ──
|
|
319
|
+
msgid "RiNG 環境診斷"
|
|
320
|
+
msgstr "RiNG Environment Diagnosis"
|
|
321
|
+
|
|
322
|
+
msgid "唯讀檢查,不會改動任何設定"
|
|
323
|
+
msgstr "read-only check; no settings will be changed"
|
|
324
|
+
|
|
325
|
+
msgid "Session 來源"
|
|
326
|
+
msgstr "Session Sources"
|
|
327
|
+
|
|
328
|
+
msgid "活著"
|
|
329
|
+
msgstr "alive"
|
|
330
|
+
|
|
331
|
+
msgid "偵測到 {n} 個 session"
|
|
332
|
+
msgstr "detected {n} session(s)"
|
|
333
|
+
|
|
334
|
+
msgid "偵測失敗"
|
|
335
|
+
msgstr "detection failed"
|
|
336
|
+
|
|
337
|
+
msgid "Hook 安裝"
|
|
338
|
+
msgstr "Hook Installation"
|
|
339
|
+
|
|
340
|
+
msgid "已安裝"
|
|
341
|
+
msgstr "installed"
|
|
342
|
+
|
|
343
|
+
msgid "未安裝(執行 ring install-hooks)"
|
|
344
|
+
msgstr "not installed (run ring install-hooks)"
|
|
345
|
+
|
|
346
|
+
msgid "未使用 Codex(zero-config)"
|
|
347
|
+
msgstr "Codex not in use (zero-config)"
|
|
348
|
+
|
|
349
|
+
msgid "通知後端"
|
|
350
|
+
msgstr "Notification Backend"
|
|
351
|
+
|
|
352
|
+
msgid "目前設定"
|
|
353
|
+
msgstr "current setting"
|
|
354
|
+
|
|
355
|
+
msgid "可用"
|
|
356
|
+
msgstr "available"
|
|
357
|
+
|
|
358
|
+
msgid "不可用"
|
|
359
|
+
msgstr "unavailable"
|
|
360
|
+
|
|
361
|
+
msgid "auto 實際選中"
|
|
362
|
+
msgstr "auto selected"
|
|
363
|
+
|
|
364
|
+
msgid "不發通知"
|
|
365
|
+
msgstr "no notification"
|
|
366
|
+
|
|
367
|
+
msgid "backend=none"
|
|
368
|
+
msgstr "backend=none"
|
|
369
|
+
|
|
370
|
+
msgid "agent-hooks 已接手"
|
|
371
|
+
msgstr "agent-hooks is handling it"
|
|
372
|
+
|
|
373
|
+
msgid "全部不可用"
|
|
374
|
+
msgstr "all unavailable"
|
|
375
|
+
|
|
376
|
+
msgid "聚焦終端(focuser)"
|
|
377
|
+
msgstr "Terminal Focuser"
|
|
378
|
+
|
|
379
|
+
msgid "不可用(tmux 不在 PATH)"
|
|
380
|
+
msgstr "unavailable (tmux not in PATH)"
|
|
381
|
+
|
|
382
|
+
msgid "不可用(osascript 不在 PATH)"
|
|
383
|
+
msgstr "unavailable (osascript not in PATH)"
|
|
384
|
+
|
|
385
|
+
msgid "不可用(app 沒在跑)"
|
|
386
|
+
msgstr "unavailable (app not running)"
|
|
387
|
+
|
|
388
|
+
msgid "設定檔"
|
|
389
|
+
msgstr "Config File"
|
|
390
|
+
|
|
391
|
+
msgid "完整生效值請看 `ring config`。"
|
|
392
|
+
msgstr "For all effective values, run `ring config`."
|
|
393
|
+
|
|
394
|
+
msgid "用法:ring doctor"
|
|
395
|
+
msgstr "usage: ring doctor"
|