usage-cli 0.29.32__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.
Files changed (109) hide show
  1. adapters/__init__.py +5 -0
  2. adapters/agy.py +68 -0
  3. adapters/claude.py +215 -0
  4. adapters/codex.py +209 -0
  5. adapters/rate_limits.py +76 -0
  6. adapters/registry.py +17 -0
  7. adapters/types.py +139 -0
  8. agy_disk_cache.py +135 -0
  9. agy_loader.py +416 -0
  10. agy_quota_probe.py +748 -0
  11. agy_window_keeper.py +185 -0
  12. analyzer/__init__.py +5 -0
  13. analyzer/aggregator.py +139 -0
  14. analyzer/blocks.py +80 -0
  15. analyzer/diagnoser.py +638 -0
  16. analyzer/insights.py +277 -0
  17. analyzer/persona_loader.py +199 -0
  18. analyzer/reporter.py +989 -0
  19. analyzer/subscription.py +108 -0
  20. burn_rate.py +75 -0
  21. cache_quarantine.py +50 -0
  22. codex_disk_cache.py +227 -0
  23. codex_events.py +136 -0
  24. codex_fork_replay.py +111 -0
  25. codex_loader.py +1426 -0
  26. codex_paths.py +20 -0
  27. critter_frames.py +26 -0
  28. discussion_bridge.py +1196 -0
  29. discussion_cli.py +844 -0
  30. discussion_session.py +622 -0
  31. discussion_usage.py +13 -0
  32. discussion_window.py +955 -0
  33. disk_cache_common.py +132 -0
  34. disk_cache_lifecycle.py +39 -0
  35. doctor.py +452 -0
  36. fsevents_watch.py +207 -0
  37. history_disk_cache.py +110 -0
  38. history_loader.py +416 -0
  39. i18n.py +88 -0
  40. jsonl_limits.py +17 -0
  41. jsonl_utils.py +40 -0
  42. login_item.py +154 -0
  43. main.py +387 -0
  44. menubar.py +1201 -0
  45. menubar_actions.py +204 -0
  46. menubar_agy.py +193 -0
  47. menubar_chrome.py +156 -0
  48. menubar_menu.py +169 -0
  49. menubar_notify.py +102 -0
  50. menubar_popover.py +233 -0
  51. menubar_prefs.py +118 -0
  52. menubar_refresh.py +285 -0
  53. menubar_state.py +1200 -0
  54. menubar_title.py +157 -0
  55. menubar_update.py +123 -0
  56. panel_window.py +78 -0
  57. panel_window_state.py +159 -0
  58. panels/__init__.py +186 -0
  59. panels/base.py +83 -0
  60. panels/dynamic_height.py +140 -0
  61. panels/payload.py +178 -0
  62. panels/web_panel.py +513 -0
  63. panels/window_drag.py +56 -0
  64. prefs.py +44 -0
  65. pricing.py +452 -0
  66. project_resolver.py +112 -0
  67. service_status.py +383 -0
  68. session_hooks.py +1154 -0
  69. setup_app.py +171 -0
  70. setup_hook.py +1011 -0
  71. statusline_settings.py +160 -0
  72. talent_market_bridge.py +243 -0
  73. time_utils.py +24 -0
  74. tui.py +288 -0
  75. tui_sprite.py +206 -0
  76. ui/__init__.py +5 -0
  77. ui/html_report.py +923 -0
  78. ui/report_scripts.py +251 -0
  79. ui/report_styles.py +370 -0
  80. ui/tables.py +888 -0
  81. update_checker.py +156 -0
  82. update_gate.py +66 -0
  83. update_release_notes.py +49 -0
  84. usage_cli-0.29.32.data/data/share/usage/i18n.json +2427 -0
  85. usage_cli-0.29.32.dist-info/METADATA +223 -0
  86. usage_cli-0.29.32.dist-info/RECORD +109 -0
  87. usage_cli-0.29.32.dist-info/WHEEL +5 -0
  88. usage_cli-0.29.32.dist-info/entry_points.txt +3 -0
  89. usage_cli-0.29.32.dist-info/licenses/LICENSE +663 -0
  90. usage_cli-0.29.32.dist-info/top_level.txt +80 -0
  91. usage_cli.py +827 -0
  92. usage_client.py +487 -0
  93. usage_diagnosis_snapshot.py +143 -0
  94. usage_dir_sweeper.py +100 -0
  95. usage_lang.py +79 -0
  96. usage_logging.py +75 -0
  97. usage_notifications.py +96 -0
  98. usage_rate.py +97 -0
  99. usage_session_resume.py +913 -0
  100. usage_statusline.py +810 -0
  101. usage_statusline_agy.py +397 -0
  102. usage_statusline_forwarder.py +88 -0
  103. usage_terse_mode.py +223 -0
  104. usage_terse_reminder.py +151 -0
  105. win_login_item.py +53 -0
  106. window_keeper.py +264 -0
  107. windows_watch.py +443 -0
  108. wintray.py +2014 -0
  109. wintray_menu.py +136 -0
@@ -0,0 +1,2427 @@
1
+ {
2
+ "zh-TW": {
3
+ "panel_default_name": "預設",
4
+ "panel_load_error": "面板載入失敗,請回報這個問題:",
5
+ "panel_matrix": "駭客任務",
6
+ "panel_win95": "視窗 95",
7
+ "panel_newspaper": "復古報紙",
8
+ "panel_cloud_observation": "雲圖觀測",
9
+ "panel_aquarium": "午夜水族箱",
10
+ "panel_prism_arcade": "稜鏡街機",
11
+ "panel_stained_glass": "彩繪玻璃",
12
+ "panel_origami": "摺紙",
13
+ "panel_catppuccin": "Catppuccin",
14
+ "panel_black_hole": "黑洞視界",
15
+ "panel_lepidoptera": "蝶類圖鑑",
16
+ "panel_world_cup": "世界盃 2026",
17
+ "panel_talent_market": "AI 人才市場",
18
+ "panel_ai_daily": "AI 更新日報",
19
+ "discussion_window_title": "AI 圓桌討論",
20
+ "discussion_topic_label": "討論問題",
21
+ "discussion_topic_placeholder": "輸入想讓多位 AI 一起討論的問題…",
22
+ "discussion_participants": "參與者",
23
+ "discussion_participant_claude": "Claude",
24
+ "discussion_participant_codex": "Codex",
25
+ "discussion_participant_agy": "Antigravity",
26
+ "discussion_available": "可用",
27
+ "discussion_not_detected": "未偵測到",
28
+ "discussion_moderator": "主持人",
29
+ "discussion_moderator_current": "目前主持人",
30
+ "discussion_moderator_set": "設為主持人",
31
+ "discussion_detect": "重新偵測 AI",
32
+ "discussion_detecting": "偵測 AI 中…",
33
+ "discussion_detect_unavailable": "{count} 個 AI 目前不可用",
34
+ "discussion_section_participants": "參與者與主持人",
35
+ "discussion_section_settings": "討論設定",
36
+ "discussion_section_start": "預估用量與開始",
37
+ "discussion_working_directory": "工作資料夾",
38
+ "discussion_pick_folder": "選擇資料夾",
39
+ "discussion_clear_folder": "清除",
40
+ "discussion_attach_image": "附加圖片",
41
+ "discussion_attachment_remove": "移除附件",
42
+ "discussion_paste_no_image": "剪貼簿中沒有圖片",
43
+ "discussion_drop_not_image": "{name} 不是圖片,已忽略",
44
+ "discussion_drop_too_large": "{name} 超過 20 MB,無法加入",
45
+ "discussion_drop_failed": "圖片讀取失敗",
46
+ "discussion_prompt_attachment_header": "請先讀取以下圖片檔案,再根據畫面內容回答:",
47
+ "discussion_working_directory_none": "未指定(討論不會讀取任何專案)",
48
+ "discussion_working_directory_warning": "已選工作資料夾:AI 能讀取此資料夾內容進行討論(唯讀,不會修改檔案);此資料夾的 AI 設定檔可能生效。",
49
+ "discussion_estimate": "{participants} 位 × {rounds} 輪 + {summary} 次總結 = 最多 {calls} 次 CLI 呼叫",
50
+ "discussion_estimate_tokens": "最多約 {tokens} tokens",
51
+ "discussion_estimate_warning": "約 2 輪的 {multiplier} 倍",
52
+ "discussion_expand_settings": "展開設定",
53
+ "discussion_collapse_settings": "收合設定",
54
+ "discussion_total_rounds": "輪數",
55
+ "discussion_include_summary": "產生總結",
56
+ "discussion_end_on_consensus": "達成共識就提早結束",
57
+ "discussion_guidance_between_rounds": "輪次之間讓我補充",
58
+ "discussion_guidance_placeholder": "輸入要補充或引導的內容(可留空)",
59
+ "discussion_guidance_continue": "繼續討論",
60
+ "discussion_guidance_skip": "略過",
61
+ "discussion_guidance_waiting": "等待你的補充或引導",
62
+ "discussion_model": "模型",
63
+ "discussion_model_default": "預設",
64
+ "discussion_persona": "角色",
65
+ "discussion_persona_neutral": "中立(不指定角色)",
66
+ "discussion_persona_other": "其他",
67
+ "discussion_debate_style": "討論基調",
68
+ "discussion_debate_style_constructive": "建設性找共識",
69
+ "discussion_debate_style_adversarial": "對立挑錯",
70
+ "discussion_debate_style_collaborative": "協作補充",
71
+ "discussion_debate_style_socratic": "追問底層假設",
72
+ "discussion_debate_style_devils_advocate": "魔鬼代言人",
73
+ "discussion_debate_style_constructive_hint": "AI 會先找共同點,再把分歧收斂成可行結論。",
74
+ "discussion_debate_style_adversarial_hint": "AI 會優先找出漏洞、矛盾和站不住腳的推論。",
75
+ "discussion_debate_style_collaborative_hint": "AI 會接續彼此的想法,補上遺漏並一起完善答案。",
76
+ "discussion_debate_style_socratic_hint": "AI 會不斷追問理由與前提,找出答案底下沒說清楚的假設。",
77
+ "discussion_debate_style_devils_advocate_hint": "AI 會刻意站到相反立場,測試看似合理的結論能否經得起反駁。",
78
+ "discussion_start": "開始討論",
79
+ "discussion_start_hint_topic": "請先輸入討論問題",
80
+ "discussion_start_hint_participants": "請至少選一位參與者",
81
+ "discussion_start_hint_running": "討論進行中",
82
+ "discussion_stop": "停止",
83
+ "discussion_clear": "清除討論",
84
+ "discussion_clear_confirm": "再點一次確認清除",
85
+ "discussion_clear_busy": "討論進行中,請先停止",
86
+ "discussion_history": "討論歷程",
87
+ "discussion_history_step1": "1 輸入討論問題",
88
+ "discussion_history_step2": "2 選擇參與者與輪數",
89
+ "discussion_history_step3": "3 按開始討論",
90
+ "discussion_progress_round": "第 {round}/{total} 輪 · {participants} {status}",
91
+ "discussion_progress_summary": "產生總結中 · {moderator}",
92
+ "discussion_summary": "主持人總結",
93
+ "discussion_summary_waiting": "討論完成後,主持人的四段總結會出現在這裡。",
94
+ "discussion_summary_empty": "尚無總結。",
95
+ "discussion_copy": "複製",
96
+ "discussion_copy_failed": "無法複製摘要",
97
+ "discussion_copied": "已複製",
98
+ "discussion_round": "第 {round} 輪",
99
+ "discussion_queued": "排隊中",
100
+ "discussion_thinking": "思考中…",
101
+ "discussion_turn_pending": "等待中",
102
+ "discussion_turn_running": "進行中",
103
+ "discussion_turn_done": "完成",
104
+ "discussion_turn_failed": "失敗",
105
+ "discussion_turn_cancelled": "已取消",
106
+ "discussion_consensus": "共識",
107
+ "discussion_consensus_count_summary": "{total} 位參與者:{agree} 同意、{disagree} 不同意、{alternative} 提出替代方案、{unparsed} 未清楚表態",
108
+ "discussion_consensus_stance_agree": "同意",
109
+ "discussion_consensus_stance_disagree": "不同意",
110
+ "discussion_consensus_stance_alternative": "提出替代方案",
111
+ "discussion_consensus_stance_unparsed": "這則沒有清楚表態",
112
+ "discussion_consensus_early_exit": "第 {round} 輪已達成共識,提早結束",
113
+ "discussion_disagreement": "主要分歧",
114
+ "discussion_recommendation": "建議方案",
115
+ "discussion_risks": "風險與未知",
116
+ "discussion_status_idle": "尚未開始",
117
+ "discussion_status_preparing": "準備中",
118
+ "discussion_status_round1_running": "第一輪進行中",
119
+ "discussion_status_round2_running": "第二輪進行中",
120
+ "discussion_status_summarizing": "主持人整理中",
121
+ "discussion_status_completed": "討論完成",
122
+ "discussion_status_cancelling": "正在停止",
123
+ "discussion_status_cancelled": "已取消",
124
+ "discussion_status_failed": "討論失敗",
125
+ "discussion_tokens": "tokens",
126
+ "discussion_usage_total": "本次討論 · {tokens}",
127
+ "talent_subtitle": "依情境挑選團隊,一鍵安裝進 Claude Code。",
128
+ "talent_search_placeholder": "搜尋團隊",
129
+ "talent_no_results": "搜尋不到符合的團隊",
130
+ "switch_panel": "更換面板",
131
+ "talent_launch": "啟動",
132
+ "talent_back": "返回",
133
+ "talent_restore": "修復",
134
+ "talent_choose_folder": "選擇資料夾",
135
+ "talent_drifted": "已漂移",
136
+ "talent_working": "處理中…",
137
+ "talent_empty": "人才市場元件尚未安裝",
138
+ "talent_empty_hint": "重新打包 .app 後即會帶入 AI 人才市場",
139
+ "launch_at_login": "開機自動啟動",
140
+ "reset_panel_position": "重設面板位置",
141
+ "hide_sections_menu": "隱藏區塊",
142
+ "quota_notifications_menu": "用量提醒通知",
143
+ "window_keeper_menu": "自動啟動 5 小時計時",
144
+ "window_keeper_tooltip": "5 小時額度重置後,自動各送一則極小訊息(Claude 用 Haiku、agy 用 Gemini 3.5 Flash Low),讓下一輪 5 小時立刻開始計時(會消耗極少量額度)",
145
+ "window_keeper_sleep_title": "🐾 自動啟動 5 小時計時已開啟",
146
+ "window_keeper_sleep_body": "已開啟:5 小時額度重置後,自動各送一則極小訊息(Claude 用 Haiku、agy 用 Gemini 3.5 Flash Low),讓下一輪 5 小時立刻開始計時(會消耗極少量額度)。\n\nMac 睡著時會暫停,醒來自動繼續,平常不用管它。\n\n想出門時也讓它跑:\n1. 接上電源,螢幕別闔上\n2. 系統設定 → 搜尋「睡眠」→ 開啟「避免在顯示器關閉時自動進入睡眠」\n3. 找不到?直接跟 Claude Code 說「幫我開啟:避免在顯示器關閉時自動進入睡眠」,讓它帶你設",
147
+ "window_keeper_sleep_body_windows": "已開啟:5 小時額度重置後,自動各送一則極小訊息(Claude 用 Haiku、agy 用 Gemini 3.5 Flash Low),讓下一輪 5 小時立刻開始計時(會消耗極少量額度)。\n\n電腦睡眠時會暫停,喚醒後自動繼續,平常不用管它。\n\n想出門時也讓它跑:\n1. 接上電源\n2. 設定 → 系統 → 電源與電池 → 螢幕與睡眠 → 將「插電時,讓我的裝置進入睡眠」設為「永不」\n3. 找不到?直接跟 Claude Code 說「幫我開啟:插電時裝置永不進入睡眠」,讓它帶你設",
148
+ "notif_warn_title": "🐾 快用完囉",
149
+ "notif_warn_body": "{tool} {scope} 已用 {pct}%,要收尾了嗎?",
150
+ "notif_depleted_title": "🐾 額度用完啦",
151
+ "notif_depleted_body": "{tool} {scope} 額度見底,{reset} 後恢復",
152
+ "notif_restored_title": "🐾 額度回來了",
153
+ "notif_restored_body": "{tool} {scope} 可以繼續衝了 🚀",
154
+ "update_alert_title": "發現新版 {version}",
155
+ "update_btn_download": "前往下載",
156
+ "update_btn_later": "稍後再說",
157
+ "update_btn_skip": "跳過此版本",
158
+ "update_no_new_version": "已是最新版本",
159
+ "check_update": "檢查更新",
160
+ "update_check_failed": "檢查更新失敗",
161
+ "hook_installed_restart": "已安裝完成,請重開 Claude Code 一次",
162
+ "hook_install_failed": "安裝 hook 失敗",
163
+ "hook_install_failed_default": "setup_hook.setup() 回傳失敗",
164
+ "repair_dialog_title": "狀態列設定衝突",
165
+ "repair_dialog_message": "偵測到其他工具佔用了 Claude Code 狀態列。\n要切換成共存模式嗎?usage app 與其他工具可以同時運作。",
166
+ "repair_dialog_repair": "立即修復",
167
+ "repair_dialog_skip": "稍後再說",
168
+ "repair_dialog_never": "不要再問",
169
+ "alert_forwarder_title": "啟用共存模式?",
170
+ "alert_forwarder_body": "偵測到其他 Claude Code 狀態列工具。啟用共存模式後,usage 會透過轉發器與現有工具一起運作。",
171
+ "alert_forwarder_enable": "啟用共存模式",
172
+ "alert_forwarder_keep": "保留現狀",
173
+ "data_stale_hint": "資料來自備援來源,建議檢查設定",
174
+ "status_loading": "載入中",
175
+ "status_synced": "✓ 已同步",
176
+ "status_no_data": "無資料",
177
+ "awaiting_rate_limits": "請對 Claude Code 發送一句訊息以同步配額",
178
+ "hook_broken_not_installed": "⚠ 狀態列沒在更新,請按「設定狀態列」重新安裝",
179
+ "hook_broken_restart": "⚠ 狀態列沒在運作,請重開一次 Claude Code",
180
+ "usage_status_missing": "⚠ 找不到狀態檔,請按「設定狀態列」,再打開一次 Claude Code",
181
+ "usage_status_missing_active": "⚠ 配額資料只能靠終端機的狀態列同步,桌面版/背景工作階段不會觸發,請開一次終端機的 Claude Code 來同步",
182
+ "usage_status_no_quota": "⚠ 狀態檔尚無配額資料,等 Claude Code 再刷新一次 statusLine",
183
+ "status_error": "錯誤 ({message})",
184
+ "rate_text": "速率:{value}",
185
+ "status_text": "狀態:{value}",
186
+ "service_alert": "⚠ {tool} 服務異常:{status}",
187
+ "service_degraded": "效能降級",
188
+ "service_partial_outage": "部分中斷",
189
+ "service_major_outage": "大規模中斷",
190
+ "today_text": "今日:${cost} ({tokens} tokens)",
191
+ "yesterday_text": "昨日:${cost} ({tokens} tokens)",
192
+ "percent_used": "{value}% 已用",
193
+ "reset_in": "重置 {time}",
194
+ "reset_imminent": "即將重置",
195
+ "burn_warning": "⚠ 按目前速度 {empty} 就會用完(重置還要 {reset})",
196
+ "reset_placeholder": "重置 --",
197
+ "duration_days": "{days}天 {hours}小時",
198
+ "duration_hours": "{hours}小時 {minutes}分鐘",
199
+ "duration_minutes": "{minutes}分鐘",
200
+ "group_idle": "閒置",
201
+ "group_normal": "正常",
202
+ "group_active": "活躍",
203
+ "group_heavy": "高負載",
204
+ "claude_name": "Claude Code",
205
+ "codex_name": "Codex",
206
+ "codex_credits": "重置點數 · 餘額 {balance}",
207
+ "codex_credits_unlimited": "重置點數 · 無限",
208
+ "agy_name": "Antigravity",
209
+ "agy_quota_full": "額度全滿",
210
+ "agy_stale_minutes": "約 {minutes} 分鐘前",
211
+ "agy_stale_hours": "約 {hours} 小時前",
212
+ "agy_stale_tooltip": "顯示的是快取舊值。額度直接向官方 API 取得,通常每幾分鐘自動更新;出現舊值代表最近取用失敗(多半是 agy 尚未登入,或網路問題),成功後會自動恢復。",
213
+ "codex_stale_minutes": "約 {minutes} 分鐘前",
214
+ "codex_stale_hours": "約 {hours} 小時前",
215
+ "codex_stale_tooltip": "Claude 有即時回報所以很準;Codex 沒有,usage 只能讀它本機偶爾留下的紀錄,可能比實際略舊。我們刻意不連網去補(連網會多燒你的 token)——繼續在終端機跑 Codex 就會自動更新。",
216
+ "history_load_error_file": "讀不到使用紀錄檔",
217
+ "history_load_error_parse": "使用紀錄格式異常",
218
+ "history_load_error_unknown": "使用紀錄暫時無法讀取",
219
+ "history_load_error_tooltip": "目前顯示的是上次成功讀到的資料,等問題排除後會自動恢復。",
220
+ "projects_title": "專案用量",
221
+ "project_range_1d": "今日",
222
+ "project_range_yesterday": "昨日",
223
+ "project_range_7d": "7 日",
224
+ "project_range_30d": "月",
225
+ "project_range_all": "全部",
226
+ "session_label": "Session",
227
+ "weekly_label": "本週",
228
+ "monthly_label": "本月",
229
+ "projects_empty": "無記錄",
230
+ "refresh_now": "↻ 立即更新",
231
+ "analyze_usage": "報告",
232
+ "analysis_failed": "分析報告產生失敗",
233
+ "install_hook": "設定狀態列",
234
+ "quit": "⏻ 結束",
235
+ "usage_title": "Usage",
236
+ "current_label": "目前",
237
+ "resets_in_days": "重置於 {days}天 {hours}小時後",
238
+ "resets_in_hours": "重置於 {hours}小時 {minutes}分鐘後",
239
+ "resets_in_minutes": "重置於 {minutes}分 {seconds}秒後",
240
+ "resets_in_placeholder": "重置於 --",
241
+ "status_rate_limited": "⚠ 已達速率限制",
242
+ "status_token_unavailable": "⚠ Token 無法使用",
243
+ "status_api_offline": "⚠ API 離線",
244
+ "loading_phrases": "處理中|解析中|檢視中|執行中|施展中|推演中|落實中|構思中|思考中|烘焙中|周旋中|高談中|輕點中|胡言亂語中|運算中|釀造中|鍛造中|忙碌中|計算中|成形中|解題中|動腦中|嬉戲中|重新編織中|引導中|生成中|反芻中|翻攪中|萌芽中|策劃中|Clauding 中|孵化中|搬運中|匯聚中|牧養中|搖擺中|沉思中|鳴叫中|剝殼中|折騰中|奔走中|慢燉中|計算中|發想中|揉合中|調製中|想像中|探勘中|召喚中|孕育中|旋轉中|斟酌中|推斷中|悶燒中|沉思中|律動中|摸索中|烹煮中|具現化中|綜合中|打造中|醃漬中|思索中|創造中|漫遊中|修補中|壓縮中|閒晃中|轉化中|解碼中|斟酌中|展開中|審議中|整備中|拆解中|判定中|冥想中|感受中|脫序中|塗鴉中|遊走中|占卜中|滲濾中|嗡鳴中|動手中|搖晃中|施法中|工作中|收束中",
245
+ "analyze": "分析",
246
+ "cli": "終端",
247
+ "cli_enabled": "終端 ✓",
248
+ "cli_disabled": "終端",
249
+ "statusline_action_failed": "CLI hook 操作失敗",
250
+ "unknown_sort_field": "未知排序欄位: {field},可用: {valid}",
251
+ "no_token_data": "暫無 token 使用資料",
252
+ "loading": "載入資料...",
253
+ "no_data": "暫無資料",
254
+ "no_agent": "未偵測到任何 AI Agent",
255
+ "hook_not_installed": "狀態列尚未設定。請執行:usage setup",
256
+ "detected": "偵測到: {agents}",
257
+ "agent_not_found": "未偵測到 {name}",
258
+ "unknown_cmd": "未知命令: {cmd}",
259
+ "available_cmds": "可用命令: dashboard, daily, weekly, monthly, sessions, report, claude, codex, setup, unsetup, --version",
260
+ "sort_time": "時間",
261
+ "sort_token": "Token",
262
+ "sort_cost": "等效成本",
263
+ "sort_messages": "訊息數",
264
+ "session_title": "最近會話({limit}) [dim](s)排序:[/dim] {label}{arrow} [dim](r)反轉 (+/-)筆數[/dim]",
265
+ "reset_at": "重置於 {time}",
266
+ "rate_per_day": "速率: {rate}/天",
267
+ "cost_label": "等效成本",
268
+ "daily_avg": "日均: {cost}",
269
+ "msg_session": "訊息 {msgs} 則 會話: {sessions}",
270
+ "tab_help_compact": " ←→ jk e匯出 q/ESC離開",
271
+ "tab_help": " ← → 切換 ↑ ↓ 捲動 e 匯出報告 q / ESC 離開",
272
+ "history_overview": "歷史總覽",
273
+ "cost_colon": "等效成本: ",
274
+ "sessions_colon": "會話: ",
275
+ "messages_colon": "訊息: ",
276
+ "days_colon": "天數: ",
277
+ "month_overview": "本月概覽",
278
+ "daily_avg_colon": "日均: ",
279
+ "recent_sessions": "最近十筆會話",
280
+ "col_time": "時間",
281
+ "col_source": "來源",
282
+ "col_project": "專案",
283
+ "col_session_title": "在做什麼",
284
+ "col_model": "模型",
285
+ "col_total_tokens": "總Token",
286
+ "col_cost": "等效成本",
287
+ "col_messages": "訊息",
288
+ "col_date": "日期",
289
+ "col_sessions": "會話",
290
+ "col_week": "週",
291
+ "total_row": "合計",
292
+ "col_month": "月份",
293
+ "col_cache_create": "Cache建立",
294
+ "col_cache_read": "Cache讀取",
295
+ "model_breakdown": "模型分佈",
296
+ "col_ratio": "佔比",
297
+ "session_summary": "最近 {shown} / {total} 個會話",
298
+ "col_duration": "時長",
299
+ "daily_panel_title": "當日資料面板 (P90)",
300
+ "msg_unit": "{n} 則",
301
+ "session_msg": "會話: {sessions} 訊息: {msgs}",
302
+ "rate_per_msg": "速率: {rate}/則",
303
+ "week_token": "本週 Token {tokens}",
304
+ "week_cost": "本週成本",
305
+ "active_panel_title": "目前 5h&7d 資料面板",
306
+ "limit_5h": "5h 限額",
307
+ "time_label": "時間",
308
+ "time_elapsed": "已用 {elapsed}min / 剩餘 {h}h{m:02d}m",
309
+ "rate_per_min": "速率: {rate}/min",
310
+ "model_label": "模型: {model}",
311
+ "msg_count": "訊息 {n} 則",
312
+ "limit_7d": "7d 限額",
313
+ "idle_panel_title": "限額資料面板",
314
+ "report_active_days": "活躍天數",
315
+ "report_agent": "工具",
316
+ "report_cost": "花費",
317
+ "report_duration": "時長",
318
+ "report_empty_models": "這段期間還沒有模型用量",
319
+ "report_empty_projects": "這段期間還沒有專案用量",
320
+ "report_empty_daily": "這段期間還沒有每日用量",
321
+ "report_empty_sessions": "這段期間還沒有可列出的會話",
322
+ "report_footer": "usage · 本機分析 · 資料不離本機",
323
+ "report_generated": "產生時間",
324
+ "report_kpi_active": "活躍日",
325
+ "report_kpi_cost": "燒掉成本",
326
+ "report_kpi_messages": "訊息",
327
+ "report_kpi_productivity": "平均每則訊息",
328
+ "report_kpi_productivity_unit": "Token",
329
+ "report_kpi_sessions": "會話",
330
+ "report_kpi_tokens": "燒掉 Tokens",
331
+ "report_messages": "訊息",
332
+ "report_model": "模型",
333
+ "report_model_section": "主力模型",
334
+ "report_narrative": "過去這段時間你燒了 {tokens} tokens、跨 {projects} 個專案。{peak_date} 是高峰({peak_tokens}/天),主力 LLM 是 {top_model}。",
335
+ "report_period": "區間",
336
+ "report_project": "專案",
337
+ "report_project_section": "專案熱區",
338
+ "report_persona_active_hours": "活躍時段",
339
+ "report_persona_caption": "你最常在 {h1}{h2} 與 AI 協作",
340
+ "report_persona_caption_second": " 和 {h2}",
341
+ "report_persona_empty": "這段期間還沒有足夠資料",
342
+ "report_recent_titles_heading": "最近在做什麼",
343
+ "report_persona_section": "使用習慣",
344
+ "report_rank": "排名",
345
+ "report_session_section": "最燒的 5 段會話",
346
+ "report_contribution_section": "52 週貢獻熱力圖",
347
+ "report_contribution_less": "少",
348
+ "report_contribution_more": "多",
349
+ "report_contribution_current_streak": "目前連續活躍",
350
+ "report_contribution_longest_streak": "最長連續活躍",
351
+ "report_contribution_busiest_day": "最忙的一天",
352
+ "report_contribution_days_unit": "天",
353
+ "report_contribution_cell_title": "{date} · {tokens} tokens",
354
+ "report_contribution_mon": "Mon",
355
+ "report_contribution_wed": "Wed",
356
+ "report_contribution_fri": "Fri",
357
+ "report_contribution_month_1": "1月",
358
+ "report_contribution_month_2": "2月",
359
+ "report_contribution_month_3": "3月",
360
+ "report_contribution_month_4": "4月",
361
+ "report_contribution_month_5": "5月",
362
+ "report_contribution_month_6": "6月",
363
+ "report_contribution_month_7": "7月",
364
+ "report_contribution_month_8": "8月",
365
+ "report_contribution_month_9": "9月",
366
+ "report_contribution_month_10": "10月",
367
+ "report_contribution_month_11": "11月",
368
+ "report_contribution_month_12": "12月",
369
+ "report_wrapped_section": "年度 Wrapped",
370
+ "report_wrapped_year_badge": "{year} Wrapped",
371
+ "report_wrapped_total_tokens": "全年總 Tokens",
372
+ "report_wrapped_total_cost": "全年總成本",
373
+ "report_wrapped_active_days": "活躍天數",
374
+ "report_wrapped_longest_streak": "最長連續",
375
+ "report_wrapped_top_model": "最常用模型",
376
+ "report_wrapped_top_project": "最常用專案",
377
+ "report_wrapped_books_equivalent": "≈ {books} 本書的字量",
378
+ "report_wrapped_beast_phoenix_title": "鳳凰加冕",
379
+ "report_wrapped_beast_phoenix_caption": "今年 Claude 的火力略勝一籌,像把灰燼一口氣吹回天空。",
380
+ "report_wrapped_beast_dragon_title": "巨龍加冕",
381
+ "report_wrapped_beast_dragon_caption": "今年 Codex 的火力更猛,像一條龍一路把工地燒到完工。",
382
+ "project_butler": "接著上次做",
383
+ "project_butler_tooltip": "開新對話時,自動把上次的進度交給 AI,不用再重講一次。",
384
+ "terse_mode_menu": "省 token 模式",
385
+ "terse_mode_tooltip": "開新對話時,自動要求 Claude 回覆更簡短,以節省輸出 token(有裝 Codex 的話也會一起套用);但程式碼、指令、路徑與錯誤訊息不會被縮減。之後你送的每則訊息也會輕聲提醒 Claude 維持精簡。",
386
+ "terse_reminder_instruction": "[精簡模式仍生效:這則回覆保持精簡;程式碼、指令、路徑、錯誤訊息照舊一字不改;安全警示與不可逆操作確認仍要講完整。]",
387
+ "terse_mode_instruction": "(這個對話已開啟「精簡模式」:請在這次對話第一則回覆的最前面提一下這件事——如果你同時收到其他要打招呼的指示(例如進度交接),就把「精簡模式已開啟」自然併入那句招呼裡就好,不要另外多開一句;如果沒有其他招呼可以搭,就自己說一行「🐾 已開啟精簡模式,回覆會盡量簡短,繼續吧!」。從現在起,直到這個對話結束為止,每一則回覆都要遵守這條規則——不會因為對話變長、話題變多就淡忘或恢復正常語氣。允許用短句、片語甚至不成句的斷句表達,不必湊成完整句子;去掉虛詞贅字、客套語、重複鋪陳與不必要的過渡句;用詞挑簡短的(例如「修」不要「針對這個問題實作解決方案」)。不用裝飾性表格或表情符號,也不要旁白工具呼叫的過程。不要自創縮寫(例如「設定」別縮成「設」、「函式」別縮成「函」)——這類縮寫斷詞長度跟完整詞一樣,省不到字數,反而讓讀者要多想一下,直接用完整詞更省事也更清楚。程式碼、指令、檔案路徑、錯誤訊息一個字都不能省略或改寫。遇到安全警示、不可逆操作的確認、或多步驟中省略連接詞會有誤讀風險的情況,這幾種要先恢復完整、講清楚,講完再切回精簡語氣。如果使用者明確要求詳細解說、逐步教學,或情境需要完整推理,仍以使用者當下的要求為準,不要因為這個模式而省略關鍵資訊。)",
388
+ "terse_mode_enabled_msg": "已開啟。以後開新的 Claude Code 對話都會自動要求回覆更精簡(有裝 Codex 的話也會一起套用);程式碼、指令、路徑和錯誤訊息不會被縮減。下次開新對話即生效。",
389
+ "terse_mode_disabled_msg": "已關閉。開新對話時不再自動要求精簡回覆。",
390
+ "resume_enabled_restart": "已開啟。以後開新的 Claude Code 對話,會自動記得這個專案上次做到哪——畫面上不會有提示(這是正常的),但 Claude 已經知道。下次開新對話即生效。",
391
+ "resume_disabled_msg": "已關閉。開新對話時不再自動帶入上次進度。",
392
+ "resume_action_failed": "設定失敗",
393
+ "report_rw_none": "(未記錄)",
394
+ "report_rw_inject_lead": "(這是進度交接。請在這次對話第一則回覆的最前面,先說一行「🐾 已接回上次進度,繼續吧!」,然後別照唸下面的線索,而是像聰明又貼心的搭檔那樣消化它:先判斷使用者最後真正在忙的是什麼(「最近在忙的」是新到舊排列,以最前面那筆為準,別被較舊的帶偏),用一兩句溫暖具體地說他上次做到哪、完成了什麼,再直接給出你判斷最該接著做的下一步——要具體,別反問「要做什麼」。只能根據下面線索講,沒有的別編;若線索太少看不出方向,就坦白說、並列出你看到的幾條線讓他挑。接著正常回應。)\n\n",
395
+ "report_rw_empty": "(請在你這次對話的第一則回覆最前面,說一行「🐾 歡迎回來,這個專案目前沒有要接的進度。」,再正常回應。)",
396
+ "report_rw_prompt": "專案:{project}(最後活動 {when})\n最近在忙的(新→舊):{last_request}\n完成的進度:{commits}\n未完成待辦:{todos}",
397
+ "report_rw_uncommitted": "上次離開時還留著:{branch} 分支有 {count} 個檔案改了還沒提交({files})",
398
+ "report_rw_diagnosis_reminder": "健檢提醒:最近約 {waste_pct}% 浪費在{cause}。跟我說「修」,完整診斷在 {path}。",
399
+ "report_rw_diagnosis_reminder_explain": "健檢提醒:最近約 {waste_pct}% 浪費在{cause}。跟我說「看」,我會讀 {path} 的完整診斷,解釋給你聽並給具體建議。",
400
+ "report_rw_diagnosis_cause_default": "可避免的上下文浪費",
401
+ "report_rw_diagnosis_cause_repeated_reads": "重複讀同一批檔案",
402
+ "report_rw_diagnosis_cause_polluter_dirs": "掃進了產物/依賴資料夾",
403
+ "report_rw_diagnosis_cause_anomaly_session": "單一工作階段異常膨脹",
404
+ "report_rw_diagnosis_cause_noisy_bash": "Bash 輸出過大",
405
+ "report_rw_diagnosis_cause_repeated_bash": "重複跑同一個 Bash 指令",
406
+ "report_sessions": "會話",
407
+ "report_share": "佔比",
408
+ "report_share_button_label": "分享",
409
+ "report_share_close": "關閉",
410
+ "report_share_copied": "已複製到剪貼簿 ✓",
411
+ "report_share_download_csv": "另存一份 .csv",
412
+ "report_share_download_html": "另存一份 .html",
413
+ "report_share_download_png": "另存一份 .png",
414
+ "report_share_file_hint": "可用 AirDrop / Mail / Slack / 訊息 傳給對方,手機電腦都能看",
415
+ "report_share_file_mask_toggle": "隱藏專案名稱",
416
+ "report_share_file_title": "分享一份副本",
417
+ "report_share_modal_title": "分享報告",
418
+ "report_share_path_copied": "路徑已複製 ✓",
419
+ "report_start_time": "開始時間",
420
+ "report_title": "你的 AI 用量回顧",
421
+ "report_insights_section": "洞察",
422
+ "report_insights_quiet": "這期跑得很平穩,沒什麼值得點名的異常。",
423
+ "report_insights_change_up": "本期燒了 {tokens} tokens、{cost_usd},比上期多 {pct}%。",
424
+ "report_insights_spike_v2": "最猛的一天是 {date},{tokens} tokens,是平日的 {mean_multiplier:.2f} 倍。",
425
+ "report_insights_shift_new_project": "{project} 是這期新冒出來的專案,已佔 {pct:.1f}% 用量。",
426
+ "report_insights_shift_model_up": "{model} 的佔比從上期 {prev_pct:.1f}% 升到 {pct:.1f}%,主要燒在 {project}。",
427
+ "report_insights_shift_model_up_plain": "{model} 的佔比從上期 {prev_pct:.1f}% 升到 {pct:.1f}%。",
428
+ "report_insights_action_watch_quota": "本期用量比上期暴增,先盯一下配額水位。",
429
+ "report_insights_action_spike_share": "{date} 一天就燒掉本期 {share}% 的量。",
430
+ "report_tokens": "Tokens",
431
+ "report_trend_compare_down": "本週比上週少 {pct}%。",
432
+ "report_trend_compare_first": "這是本期第一週的數據。",
433
+ "report_trend_compare_flat": "本週跟上週差不多。",
434
+ "report_trend_compare_new": "本週是新出現的用量。",
435
+ "report_trend_compare_up": "本週是上週的 {ratio} 倍。",
436
+ "report_trend_marker_new": "new",
437
+ "report_trend_section": "每週燃燒趨勢",
438
+ "report_chart_other": "其他",
439
+ "report_sub_empty": "未偵測到本地訂閱資訊",
440
+ "report_tools_section": "你的工具",
441
+ "report_sub_since": "訂閱起始",
442
+ "report_sponsor": "No cloud. No tracking. Just yours.",
443
+ "report_unknown": "未知",
444
+ "report_version": "版本",
445
+ "setup_hook_source_missing": "❌ 找不到 hook 原始檔,tried: {tried}",
446
+ "setup_resume_source_missing": "❌ 找不到 resume hook 原始檔,tried: {tried}",
447
+ "setup_terse_source_missing": "❌ 找不到 terse mode hook 原始檔,tried: {tried}",
448
+ "setup_resume_enabled": "✅ 已啟用新對話自動帶入上次進度:{path}",
449
+ "setup_resume_disabled": "已關閉新對話自動帶入上次進度",
450
+ "setup_forwarder_source_missing": "❌ 找不到 forwarder 原始檔,tried: {tried}",
451
+ "setup_windows_python_missing": "❌ 找不到可用的 Python 解譯器。請安裝 Python 3,確認 PATH 中有 python 或 py,然後重新執行 usage setup。",
452
+ "setup_windows_non_ascii_command_path": "❌ Windows 無法安全設定含非 ASCII 路徑的 hook 指令:{path}。請將 Claude 設定檔與 hook 移到只含 ASCII 字元的路徑,再重新執行 usage setup。",
453
+ "setup_legacy_file_remove_failed": "⚠ 無法移除舊檔 {path}: {error}",
454
+ "setup_legacy_settings_not_object": "⚠ {path} 不是 JSON object,略過 migration",
455
+ "setup_legacy_settings_read_failed": "⚠ 無法讀取舊設定做 migration: {error}",
456
+ "setup_legacy_statusline_cleanup_failed": "⚠ 無法清理舊 statusLine: {error}",
457
+ "setup_legacy_backup_migrate_failed": "⚠ 無法搬移舊備份 key: {error}",
458
+ "setup_legacy_settings_write_failed": "⚠ 無法寫回 migration 設定: {error}",
459
+ "setup_legacy_migrated": "ℹ 已從 v0.1.x ({name}) 自動 migrate 到 usage",
460
+ "setup_settings_read_failed": "❌ 無法讀取 {path}: {error}",
461
+ "setup_settings_not_object": "❌ {path} 必須是 JSON object",
462
+ "setup_statusline_backed_up": "ℹ 已備份原有 statusLine 到 settings.{backup_key}.{prev_key}",
463
+ "setup_codex_already_configured": "ℹ Codex status_line 已是 usage 設定,略過",
464
+ "setup_codex_configured": "✓ Codex status_line 已配置",
465
+ "setup_codex_backup_written": "ℹ 原配置已備份到: {path}",
466
+ "setup_codex_restart_required": "ℹ 請重新開啟 Codex 一次",
467
+ "setup_codex_restored": "✓ Codex status_line 已恢復原配置",
468
+ "setup_codex_removed": "✓ Codex status_line 已移除",
469
+ "setup_codex_config_unreadable": "⚠ 無法讀取 ~/.codex/config.toml,略過 Codex 設定",
470
+ "setup_codex_unsetup_foreign": "⚠ Codex status_line 不是 usage 設定的,已保留不動",
471
+ "setup_codex_backup_invalid": "⚠ Codex 備份檔無法讀取,已保留現有設定與備份",
472
+ "terse_codex_hooks_unreadable": "⚠ ~/.codex/hooks.json 無法解析,已中止修改以免覆蓋既有設定",
473
+ "setup_no_agents": "❌ 找不到 Claude Code 或 Codex,請先安裝並執行其中之一",
474
+ "setup_forwarder_installed": "✓ forwarder 已安裝:{path}",
475
+ "setup_hook_installed": "✓ hook 已安裝:{path}",
476
+ "setup_settings_updated": "✓ settings 已更新:{path}",
477
+ "setup_claude_restart_required": "ℹ 請重新開啟 Claude Code 一次(讓它重新讀 settings 並刷新一次 statusLine)",
478
+ "setup_statusline_already_usage": "ℹ statusLine 已是 usage hook,settings 未動",
479
+ "setup_claude_statusline_restored": "✓ 已還原原有 statusLine",
480
+ "setup_claude_statusline_removed": "✓ 已移除 usage statusLine",
481
+ "setup_statusline_not_usage": "ℹ statusLine 不是 usage 安裝的,settings 未動",
482
+ "setup_hook_deleted": "✓ 已刪除 hook:{path}",
483
+ "setup_status_file_deleted": "✓ 已刪除狀態檔:{path}",
484
+ "wintray_unavailable": "Windows 系統匣介面尚未安裝,改用終端機 TUI。",
485
+ "wintray_already_running": "usage 已在執行中;請點系統匣的 usage 圖示開啟面板。"
486
+ },
487
+ "en": {
488
+ "panel_default_name": "Default",
489
+ "panel_load_error": "Panel failed to load. Please report this:",
490
+ "panel_matrix": "Matrix",
491
+ "panel_win95": "Windows 95",
492
+ "panel_newspaper": "Vintage Newspaper",
493
+ "panel_cloud_observation": "Cloud Observation",
494
+ "panel_aquarium": "Midnight Aquarium",
495
+ "panel_prism_arcade": "Prism Arcade",
496
+ "panel_stained_glass": "Stained Glass",
497
+ "panel_origami": "Origami",
498
+ "panel_catppuccin": "Catppuccin",
499
+ "panel_black_hole": "Black Hole",
500
+ "panel_lepidoptera": "Lepidoptera",
501
+ "panel_world_cup": "World Cup 2026",
502
+ "panel_talent_market": "AI Talent Market",
503
+ "panel_ai_daily": "AI Update Daily",
504
+ "discussion_window_title": "AI Council",
505
+ "discussion_topic_label": "Discussion topic",
506
+ "discussion_topic_placeholder": "Enter a question for multiple AIs to discuss…",
507
+ "discussion_participants": "Participants",
508
+ "discussion_participant_claude": "Claude",
509
+ "discussion_participant_codex": "Codex",
510
+ "discussion_participant_agy": "Antigravity",
511
+ "discussion_available": "Available",
512
+ "discussion_not_detected": "Not detected",
513
+ "discussion_moderator": "Moderator",
514
+ "discussion_moderator_current": "Current moderator",
515
+ "discussion_moderator_set": "Set as moderator",
516
+ "discussion_detect": "Detect AIs again",
517
+ "discussion_detecting": "Detecting AIs…",
518
+ "discussion_detect_unavailable": "{count} AI(s) currently unavailable",
519
+ "discussion_section_participants": "Participants and moderator",
520
+ "discussion_section_settings": "Discussion settings",
521
+ "discussion_section_start": "Estimated usage and start",
522
+ "discussion_working_directory": "Working folder",
523
+ "discussion_pick_folder": "Choose folder",
524
+ "discussion_clear_folder": "Clear",
525
+ "discussion_attach_image": "Attach image",
526
+ "discussion_attachment_remove": "Remove attachment",
527
+ "discussion_paste_no_image": "No image in clipboard",
528
+ "discussion_drop_not_image": "{name} is not an image, skipped",
529
+ "discussion_drop_too_large": "{name} exceeds 20 MB and was not added",
530
+ "discussion_drop_failed": "Failed to read the image",
531
+ "discussion_prompt_attachment_header": "Please read the following image files first, then answer based on their contents:",
532
+ "discussion_working_directory_none": "Not selected (the discussion will not read any project)",
533
+ "discussion_working_directory_warning": "A working folder is selected. AI can read its contents for this discussion in read-only mode and will not modify files. AI instruction files in the folder may take effect.",
534
+ "discussion_estimate": "{participants} participants × {rounds} rounds + {summary} summary = up to {calls} CLI calls",
535
+ "discussion_estimate_tokens": "up to about {tokens} tokens",
536
+ "discussion_estimate_warning": "about {multiplier}× the 2-round cost",
537
+ "discussion_expand_settings": "Show settings",
538
+ "discussion_collapse_settings": "Hide settings",
539
+ "discussion_total_rounds": "Rounds",
540
+ "discussion_include_summary": "Generate summary",
541
+ "discussion_end_on_consensus": "End early when consensus is reached",
542
+ "discussion_guidance_between_rounds": "Let me add guidance between rounds",
543
+ "discussion_guidance_placeholder": "Add context or guidance for the next round (optional)",
544
+ "discussion_guidance_continue": "Continue discussion",
545
+ "discussion_guidance_skip": "Skip",
546
+ "discussion_guidance_waiting": "Waiting for your guidance",
547
+ "discussion_model": "Model",
548
+ "discussion_model_default": "Default",
549
+ "discussion_persona": "Role",
550
+ "discussion_persona_neutral": "Neutral (no role)",
551
+ "discussion_persona_other": "Other",
552
+ "discussion_debate_style": "Debate style",
553
+ "discussion_debate_style_constructive": "Constructive consensus",
554
+ "discussion_debate_style_adversarial": "Adversarial critique",
555
+ "discussion_debate_style_collaborative": "Collaborative expansion",
556
+ "discussion_debate_style_socratic": "Socratic inquiry",
557
+ "discussion_debate_style_devils_advocate": "Devil's advocate",
558
+ "discussion_debate_style_constructive_hint": "The AIs will seek common ground first, then turn remaining differences into a practical conclusion.",
559
+ "discussion_debate_style_adversarial_hint": "The AIs will prioritize finding flaws, contradictions, and weak reasoning.",
560
+ "discussion_debate_style_collaborative_hint": "The AIs will build on one another's ideas, fill gaps, and improve the answer together.",
561
+ "discussion_debate_style_socratic_hint": "The AIs will keep asking why and challenge assumptions that the answer leaves unstated.",
562
+ "discussion_debate_style_devils_advocate_hint": "The AIs will deliberately argue the opposite side to test whether a plausible conclusion holds up.",
563
+ "discussion_start": "Start discussion",
564
+ "discussion_start_hint_topic": "Enter a discussion topic first",
565
+ "discussion_start_hint_participants": "Select at least one participant",
566
+ "discussion_start_hint_running": "Discussion in progress",
567
+ "discussion_stop": "Stop",
568
+ "discussion_clear": "Clear discussion",
569
+ "discussion_clear_confirm": "Click again to clear",
570
+ "discussion_clear_busy": "A discussion is running — stop it first",
571
+ "discussion_history": "Discussion history",
572
+ "discussion_history_step1": "1 Enter a discussion topic",
573
+ "discussion_history_step2": "2 Choose participants and rounds",
574
+ "discussion_history_step3": "3 Start the discussion",
575
+ "discussion_progress_round": "Round {round}/{total} · {participants} {status}",
576
+ "discussion_progress_summary": "Generating summary · {moderator}",
577
+ "discussion_summary": "Moderator summary",
578
+ "discussion_summary_waiting": "The moderator’s four-part summary will appear here when the discussion finishes.",
579
+ "discussion_summary_empty": "No summary yet.",
580
+ "discussion_copy": "Copy",
581
+ "discussion_copy_failed": "Could not copy the summary",
582
+ "discussion_copied": "Copied",
583
+ "discussion_round": "Round {round}",
584
+ "discussion_queued": "Queued",
585
+ "discussion_thinking": "Thinking…",
586
+ "discussion_turn_pending": "Waiting",
587
+ "discussion_turn_running": "Running",
588
+ "discussion_turn_done": "Done",
589
+ "discussion_turn_failed": "Failed",
590
+ "discussion_turn_cancelled": "Cancelled",
591
+ "discussion_consensus": "Consensus",
592
+ "discussion_consensus_count_summary": "{total} participants: {agree} agree, {disagree} disagree, {alternative} propose an alternative, {unparsed} give no clear stance",
593
+ "discussion_consensus_stance_agree": "Agrees",
594
+ "discussion_consensus_stance_disagree": "Disagrees",
595
+ "discussion_consensus_stance_alternative": "Proposes an alternative",
596
+ "discussion_consensus_stance_unparsed": "No clear stance in this response",
597
+ "discussion_consensus_early_exit": "Round {round} reached consensus, so the discussion ended early",
598
+ "discussion_disagreement": "Key disagreements",
599
+ "discussion_recommendation": "Recommendation",
600
+ "discussion_risks": "Risks and unknowns",
601
+ "discussion_status_idle": "Ready",
602
+ "discussion_status_preparing": "Preparing",
603
+ "discussion_status_round1_running": "Round 1 in progress",
604
+ "discussion_status_round2_running": "Round 2 in progress",
605
+ "discussion_status_summarizing": "Moderator is summarizing",
606
+ "discussion_status_completed": "Discussion complete",
607
+ "discussion_status_cancelling": "Stopping",
608
+ "discussion_status_cancelled": "Cancelled",
609
+ "discussion_status_failed": "Discussion failed",
610
+ "discussion_tokens": "tokens",
611
+ "discussion_usage_total": "This discussion · {tokens}",
612
+ "talent_subtitle": "Pick a team for the job, install straight into Claude Code.",
613
+ "talent_search_placeholder": "Search teams",
614
+ "talent_no_results": "No matching teams found",
615
+ "switch_panel": "Switch Panel",
616
+ "talent_launch": "Launch",
617
+ "talent_back": "Back",
618
+ "talent_restore": "Restore",
619
+ "talent_choose_folder": "Choose Folder",
620
+ "talent_drifted": "Drifted",
621
+ "talent_working": "Working…",
622
+ "talent_empty": "Talent market component is not installed",
623
+ "talent_empty_hint": "Rebuild the .app to bundle the AI Talent Market",
624
+ "launch_at_login": "Launch at Login",
625
+ "reset_panel_position": "Reset panel position",
626
+ "hide_sections_menu": "Hide Sections",
627
+ "quota_notifications_menu": "Usage Alert Notifications",
628
+ "window_keeper_menu": "Auto-start 5-hour Session",
629
+ "window_keeper_tooltip": "After your 5-hour quotas reset, automatically send one tiny message to each tool (Claude with Haiku, agy with Gemini 3.5 Flash Low) so the next 5-hour sessions start counting right away (uses a tiny bit of quota).",
630
+ "window_keeper_sleep_title": "🐾 Auto-start 5-hour Session is on",
631
+ "window_keeper_sleep_body": "Enabled: after your 5-hour quotas reset, usage automatically sends one tiny message to each tool (Claude with Haiku, agy with Gemini 3.5 Flash Low) so the next 5-hour sessions start counting right away (uses a tiny bit of quota).\n\nIt pauses while your Mac sleeps and resumes on wake — nothing to manage day to day.\n\nTo keep it running while you're away:\n1. Stay plugged in and leave the lid open\n2. System Settings → search \"sleep\" → turn on \"Prevent automatic sleeping when the display is off\"\n3. Can't find it? Just tell Claude Code: \"turn on Prevent automatic sleeping when the display is off\" and let it walk you through",
632
+ "window_keeper_sleep_body_windows": "Enabled: after your 5-hour quotas reset, usage automatically sends one tiny message to each tool (Claude with Haiku, agy with Gemini 3.5 Flash Low) so the next 5-hour sessions start counting right away (uses a tiny bit of quota).\n\nIt pauses while your PC sleeps and resumes on wake — nothing to manage day to day.\n\nTo keep it running while you're away:\n1. Stay plugged in\n2. Settings → System → Power & battery → Screen and sleep → set \"When plugged in, put my device to sleep after\" to \"Never\"\n3. Can't find it? Just tell Claude Code: \"turn on: never sleep while plugged in\" and let it walk you through",
633
+ "notif_warn_title": "🐾 Almost out",
634
+ "notif_warn_body": "{tool} {scope} is {pct}% used. Time to wrap up?",
635
+ "notif_depleted_title": "🐾 Quota is empty",
636
+ "notif_depleted_body": "{tool} {scope} quota is drained. Back after {reset}",
637
+ "notif_restored_title": "🐾 Quota is back",
638
+ "notif_restored_body": "{tool} {scope} is ready to go again 🚀",
639
+ "update_alert_title": "New Version {version} Available",
640
+ "update_btn_download": "Download",
641
+ "update_btn_later": "Later",
642
+ "update_btn_skip": "Skip This Version",
643
+ "update_no_new_version": "You are up to date",
644
+ "check_update": "Check for Updates",
645
+ "update_check_failed": "Update check failed",
646
+ "hook_installed_restart": "Hook installed. Restart Claude Code once.",
647
+ "hook_install_failed": "Hook installation failed",
648
+ "hook_install_failed_default": "setup_hook.setup() returned failure",
649
+ "repair_dialog_title": "Status Line Conflict",
650
+ "repair_dialog_message": "Another tool is using the Claude Code status line.\nSwitch to coexistence mode? usage app can run alongside other tools.",
651
+ "repair_dialog_repair": "Repair Now",
652
+ "repair_dialog_skip": "Later",
653
+ "repair_dialog_never": "Do Not Ask Again",
654
+ "alert_forwarder_title": "Enable coexistence mode?",
655
+ "alert_forwarder_body": "Another Claude Code status line tool was detected. In coexistence mode, usage runs through a forwarder alongside your existing tool.",
656
+ "alert_forwarder_enable": "Enable Coexistence Mode",
657
+ "alert_forwarder_keep": "Keep Current Setup",
658
+ "data_stale_hint": "Data is from a fallback source. Check settings.",
659
+ "status_loading": "Loading",
660
+ "status_synced": "✓ Synced",
661
+ "status_no_data": "No data",
662
+ "awaiting_rate_limits": "Send a message in Claude Code to sync your quota",
663
+ "hook_broken_not_installed": "⚠ Status line is not updating. Click \"Set Up Status Line\" to reinstall it.",
664
+ "hook_broken_restart": "⚠ Status line hook is not running. Restart Claude Code once.",
665
+ "usage_status_missing": "⚠ Status file not found. Click \"Set Up Status Line\", then open Claude Code once.",
666
+ "usage_status_missing_active": "⚠ Quota data only syncs via the terminal status line — the desktop app and headless sessions don't trigger it. Open Claude Code in a terminal once to sync.",
667
+ "usage_status_no_quota": "⚠ Status file has no quota data yet. Wait for Claude Code to refresh statusLine once.",
668
+ "status_error": "Error ({message})",
669
+ "rate_text": "Rate: {value}",
670
+ "status_text": "Status: {value}",
671
+ "service_alert": "⚠ {tool} service issue: {status}",
672
+ "service_degraded": "Degraded performance",
673
+ "service_partial_outage": "Partial outage",
674
+ "service_major_outage": "Major outage",
675
+ "today_text": "Today: ${cost} ({tokens} tokens)",
676
+ "yesterday_text": "Yesterday: ${cost} ({tokens} tokens)",
677
+ "percent_used": "{value}% used",
678
+ "reset_in": "Resets in {time}",
679
+ "reset_imminent": "Reset imminent",
680
+ "burn_warning": "⚠ At current pace, empty in {empty} (resets in {reset})",
681
+ "reset_placeholder": "Resets in --",
682
+ "duration_days": "{days}d {hours}h",
683
+ "duration_hours": "{hours}h {minutes}m",
684
+ "duration_minutes": "{minutes}m",
685
+ "group_idle": "Idle",
686
+ "group_normal": "Normal",
687
+ "group_active": "Active",
688
+ "group_heavy": "Heavy",
689
+ "claude_name": "Claude Code",
690
+ "codex_name": "Codex",
691
+ "codex_credits": "Reset credits · balance {balance}",
692
+ "codex_credits_unlimited": "Reset credits · unlimited",
693
+ "agy_name": "Antigravity",
694
+ "agy_quota_full": "Quota full",
695
+ "agy_stale_minutes": "about {minutes} minutes ago",
696
+ "agy_stale_hours": "about {hours} hours ago",
697
+ "agy_stale_tooltip": "Showing a cached value. Quota is fetched straight from the official API, usually updating every few minutes; an old value means the last fetch failed (often agy isn't signed in, or there's a network issue), and it recovers automatically once a fetch succeeds.",
698
+ "codex_stale_minutes": "about {minutes} minutes ago",
699
+ "codex_stale_hours": "about {hours} hours ago",
700
+ "codex_stale_tooltip": "Claude is accurate because it reports in real time; Codex does not, so usage can only read the local records it leaves occasionally, which may be slightly older than reality. We intentionally do not go online to fill the gap (that would burn more of your tokens) — keep running Codex in the terminal and it will update automatically.",
701
+ "history_load_error_file": "Couldn't read usage files",
702
+ "history_load_error_parse": "Usage data format issue",
703
+ "history_load_error_unknown": "Usage data temporarily unavailable",
704
+ "history_load_error_tooltip": "Showing the last successfully loaded data; this will recover automatically once resolved.",
705
+ "projects_title": "Project Usage",
706
+ "project_range_1d": "Today",
707
+ "project_range_yesterday": "Yesterday",
708
+ "project_range_7d": "7 Days",
709
+ "project_range_30d": "Month",
710
+ "project_range_all": "All Time",
711
+ "session_label": "Session",
712
+ "weekly_label": "Weekly",
713
+ "monthly_label": "Monthly",
714
+ "projects_empty": "No records",
715
+ "refresh_now": "↻ Refresh Now",
716
+ "analyze_usage": "Report",
717
+ "analysis_failed": "Analysis report failed",
718
+ "install_hook": "Set Up Status Line",
719
+ "quit": "⏻ Quit",
720
+ "usage_title": "Usage",
721
+ "current_label": "Current",
722
+ "resets_in_days": "Resets in {days}d {hours}h",
723
+ "resets_in_hours": "Resets in {hours}h {minutes}m",
724
+ "resets_in_minutes": "Resets in {minutes}m {seconds}s",
725
+ "resets_in_placeholder": "Resets in --",
726
+ "status_rate_limited": "⚠ Rate limit reached",
727
+ "status_token_unavailable": "⚠ Token unavailable",
728
+ "status_api_offline": "⚠ API offline",
729
+ "loading_phrases": "Accomplishing|Elucidating|Perusing|Actioning|Enchanting|Philosophising|Actualizing|Envisioning|Pondering|Baking|Finagling|Pontificating|Booping|Flibbertigibbeting|Processing|Brewing|Forging|Puttering|Calculating|Forming|Puzzling|Cerebrating|Frolicking|Reticulating|Channelling|Generating|Ruminating|Churning|Germinating|Scheming|Clauding|Hatching|Schlepping|Coalescing|Herding|Shimmying|Cogitating|Honking|Shucking|Combobulating|Hustling|Simmering|Computing|Ideating|Smooshing|Concocting|Imagining|Spelunking|Conjuring|Incubating|Spinning|Considering|Inferring|Stewing|Contemplating|Jiving|Sussing|Cooking|Manifesting|Synthesizing|Crafting|Marinating|Thinking|Creating|Meandering|Tinkering|Crunching|Moseying|Transmuting|Deciphering|Mulling|Unfurling|Deliberating|Mustering|Unravelling|Determining|Musing|Vibing|Discombobulating|Noodling|Wandering|Divining|Percolating|Whirring|Doing|Wibbling|Wizarding|Working|Wrangling",
730
+ "analyze": "Analyze",
731
+ "cli": "Terminal",
732
+ "cli_enabled": "Terminal ✓",
733
+ "cli_disabled": "Terminal",
734
+ "statusline_action_failed": "CLI hook action failed",
735
+ "unknown_sort_field": "Unknown sort field: {field}, available: {valid}",
736
+ "no_token_data": "No token usage data",
737
+ "loading": "Loading...",
738
+ "no_data": "No data",
739
+ "no_agent": "No AI Agent detected",
740
+ "hook_not_installed": "Status line not configured. Run: usage setup",
741
+ "detected": "Detected: {agents}",
742
+ "agent_not_found": "{name} not detected",
743
+ "unknown_cmd": "Unknown command: {cmd}",
744
+ "available_cmds": "Available commands: dashboard, daily, weekly, monthly, sessions, report, claude, codex, setup, unsetup, --version",
745
+ "sort_time": "Time",
746
+ "sort_token": "Token",
747
+ "sort_cost": "Cost",
748
+ "sort_messages": "Messages",
749
+ "session_title": "Sessions({limit}) [dim](s)Sort:[/dim] {label}{arrow} [dim](r)Reverse (+/-)Count[/dim]",
750
+ "reset_at": "Resets at {time}",
751
+ "rate_per_day": "Rate: {rate}/day",
752
+ "cost_label": "Cost",
753
+ "daily_avg": "Avg: {cost}",
754
+ "msg_session": "Messages {msgs} Sessions: {sessions}",
755
+ "tab_help_compact": " ←→ jk e export q/ESC quit",
756
+ "tab_help": " ← → switch ↑ ↓ scroll e export report q / ESC quit",
757
+ "history_overview": "Overview",
758
+ "cost_colon": "Cost: ",
759
+ "sessions_colon": "Sessions: ",
760
+ "messages_colon": "Messages: ",
761
+ "days_colon": "Days: ",
762
+ "month_overview": "This Month",
763
+ "daily_avg_colon": "Avg: ",
764
+ "recent_sessions": "Recent Sessions",
765
+ "col_time": "Time",
766
+ "col_source": "Source",
767
+ "col_project": "Project",
768
+ "col_session_title": "Topic",
769
+ "col_model": "Model",
770
+ "col_total_tokens": "Tokens",
771
+ "col_cost": "Cost",
772
+ "col_messages": "Msgs",
773
+ "col_date": "Date",
774
+ "col_sessions": "Sessions",
775
+ "col_week": "Week",
776
+ "total_row": "Total",
777
+ "col_month": "Month",
778
+ "col_cache_create": "Cache Create",
779
+ "col_cache_read": "Cache Read",
780
+ "model_breakdown": "Model Distribution",
781
+ "col_ratio": "Ratio",
782
+ "session_summary": "Recent {shown} / {total} sessions",
783
+ "col_duration": "Duration",
784
+ "daily_panel_title": "Daily Panel (P90)",
785
+ "msg_unit": "{n}",
786
+ "session_msg": "Sessions: {sessions} Messages: {msgs}",
787
+ "rate_per_msg": "Rate: {rate}/msg",
788
+ "week_token": "Week Token {tokens}",
789
+ "week_cost": "Week Cost",
790
+ "active_panel_title": "5h & 7d Rate Limits",
791
+ "limit_5h": "5h Limit",
792
+ "time_label": "Time",
793
+ "time_elapsed": "Elapsed {elapsed}min / Remaining {h}h{m:02d}m",
794
+ "rate_per_min": "Rate: {rate}/min",
795
+ "model_label": "Model: {model}",
796
+ "msg_count": "Messages {n}",
797
+ "limit_7d": "7d Limit",
798
+ "idle_panel_title": "Rate Limits",
799
+ "report_active_days": "Active days",
800
+ "report_agent": "Tool",
801
+ "report_cost": "Cost",
802
+ "report_duration": "Duration",
803
+ "report_empty_models": "No model usage in this period",
804
+ "report_empty_projects": "No project usage in this period",
805
+ "report_empty_daily": "No daily usage in this period",
806
+ "report_empty_sessions": "No sessions to list in this period",
807
+ "report_footer": "usage · Local-first analytics · Data stays on device",
808
+ "report_generated": "Generated",
809
+ "report_kpi_active": "Active Days",
810
+ "report_kpi_cost": "Burned Cost",
811
+ "report_kpi_messages": "Messages",
812
+ "report_kpi_productivity": "Avg per Message",
813
+ "report_kpi_productivity_unit": "tokens",
814
+ "report_kpi_sessions": "Sessions",
815
+ "report_kpi_tokens": "Burned Tokens",
816
+ "report_messages": "Messages",
817
+ "report_model": "Model",
818
+ "report_model_section": "Most-used models",
819
+ "report_narrative": "You burned {tokens} tokens across {projects} projects. Peak was {peak_date} ({peak_tokens}/day). Top model: {top_model}.",
820
+ "report_period": "Period",
821
+ "report_project": "Project",
822
+ "report_project_section": "Project hot zones",
823
+ "report_persona_active_hours": "Active hours",
824
+ "report_persona_caption": "You most often collaborate with AI at {h1}{h2}",
825
+ "report_persona_caption_second": " and {h2}",
826
+ "report_persona_empty": "Not enough data in this period yet",
827
+ "report_recent_titles_heading": "What you worked on",
828
+ "report_persona_section": "Usage habits",
829
+ "report_rank": "Rank",
830
+ "report_session_section": "Top 5 burn sessions",
831
+ "report_contribution_section": "52-week contribution heatmap",
832
+ "report_contribution_less": "Less",
833
+ "report_contribution_more": "More",
834
+ "report_contribution_current_streak": "Current streak",
835
+ "report_contribution_longest_streak": "Longest streak",
836
+ "report_contribution_busiest_day": "Busiest day",
837
+ "report_contribution_days_unit": "days",
838
+ "report_contribution_cell_title": "{date} · {tokens} tokens",
839
+ "report_contribution_mon": "Mon",
840
+ "report_contribution_wed": "Wed",
841
+ "report_contribution_fri": "Fri",
842
+ "report_contribution_month_1": "Jan",
843
+ "report_contribution_month_2": "Feb",
844
+ "report_contribution_month_3": "Mar",
845
+ "report_contribution_month_4": "Apr",
846
+ "report_contribution_month_5": "May",
847
+ "report_contribution_month_6": "Jun",
848
+ "report_contribution_month_7": "Jul",
849
+ "report_contribution_month_8": "Aug",
850
+ "report_contribution_month_9": "Sep",
851
+ "report_contribution_month_10": "Oct",
852
+ "report_contribution_month_11": "Nov",
853
+ "report_contribution_month_12": "Dec",
854
+ "report_wrapped_section": "Year Wrapped",
855
+ "report_wrapped_year_badge": "{year} Wrapped",
856
+ "report_wrapped_total_tokens": "Total tokens",
857
+ "report_wrapped_total_cost": "Total cost",
858
+ "report_wrapped_active_days": "Active days",
859
+ "report_wrapped_longest_streak": "Longest streak",
860
+ "report_wrapped_top_model": "Top model",
861
+ "report_wrapped_top_project": "Top project",
862
+ "report_wrapped_books_equivalent": "≈ {books} books worth of words",
863
+ "report_wrapped_beast_phoenix_title": "Phoenix Crowned",
864
+ "report_wrapped_beast_phoenix_caption": "Claude carried slightly more fire this year, like a bird kicking the whole workshop back into the sky.",
865
+ "report_wrapped_beast_dragon_title": "Dragon Crowned",
866
+ "report_wrapped_beast_dragon_caption": "Codex hit harder this year, like a dragon torching a build all the way to done.",
867
+ "project_butler": "Resume Last Session",
868
+ "project_butler_tooltip": "When you open a new session, automatically hand your last progress to the AI — no need to re-explain.",
869
+ "terse_mode_menu": "Token Saver",
870
+ "terse_mode_tooltip": "When you open a new session, automatically ask Claude to reply more briefly to save output tokens (applies to Codex too, if it's installed); code, commands, paths, and error messages stay untouched. A light reminder is also injected after each message you send to keep replies terse.",
871
+ "terse_reminder_instruction": "[Terse mode is still on: keep this reply brief; code, commands, paths, and error messages stay byte-exact; security warnings and irreversible-action confirmations must still be written out in full.]",
872
+ "terse_mode_instruction": "(Terse mode is on for this entire conversation. Mention this at the very start of your first reply — if you're already leading with another greeting (e.g. a resume handoff), fold \"terse mode is on\" into that same line instead of adding a separate one; if there's no other greeting to fold into, say your own line: \"🐾 Terse mode is on — keeping replies short, let's go!\" This applies starting now and lasting until the conversation ends — apply it to every single reply, no matter how long the conversation gets; don't let it fade or drift back to normal verbosity partway through. Drop articles (a/an/the), filler (just/really/basically/actually), pleasantries (sure/certainly/happy to), and hedging. Fragments are fine. Prefer short synonyms (big, not extensive; fix, not \"implement a solution for\"). No decorative tables, emoji, or tool-call narration. Never invent abbreviations (cfg/impl/req/res) — the tokenizer splits them the same as the full word, so nothing is saved and the reader still has to decode it; use the full word instead. Code, commands, file paths, and error messages must stay byte-exact, never trimmed or rewritten. Drop terseness for security warnings, irreversible-action confirmations, and multi-step instructions where a fragment or dropped conjunction risks being misread — write those out in full, then resume terse mode after. If the user explicitly asks for a detailed walkthrough, step-by-step teaching, or the situation needs full reasoning, follow that instead — don't drop essential information just to stay terse.)",
873
+ "terse_mode_enabled_msg": "Enabled. New Claude Code sessions will automatically ask for terser replies (Codex too, if it's installed), while code, commands, paths, and error messages stay untouched. Takes effect the next time you start a session.",
874
+ "terse_mode_disabled_msg": "Disabled. New sessions will no longer auto-request terse replies.",
875
+ "resume_enabled_restart": "Enabled. New Claude Code sessions will automatically know where you left off in this project — you won't see a prompt (that's expected), but Claude will. Takes effect the next time you start a session.",
876
+ "resume_disabled_msg": "Disabled. New sessions will no longer auto-load your last progress.",
877
+ "resume_action_failed": "Action failed",
878
+ "report_rw_none": "(none recorded)",
879
+ "report_rw_inject_lead": "(This is a resume handoff. At the very start of your first reply, lead with one line: \"🐾 Picked up where you left off — let's keep going!\", then, instead of reading the traces below aloud, digest them like a sharp, thoughtful partner: first work out what the user was actually in the middle of (\"Recently working on\" is newest-first, so trust the topmost item and don't get pulled back to older ones); in a sentence or two, warmly and concretely recap where they left off and what got done; then give the single concrete next step you would take — be specific, don't ask \"what should I do\". Use only what is below; invent nothing. If the traces are too thin to tell, say so plainly and list the threads you can see for them to pick. Then respond normally.)\n\n",
880
+ "report_rw_empty": "(At the very start of your first reply in this session, say one line: \"🐾 Welcome back — nothing to pick up on this project yet.\", then respond normally.)",
881
+ "report_rw_prompt": "Project: {project} (last active {when})\nRecently working on (newest first): {last_request}\nProgress made: {commits}\nOpen to-dos: {todos}",
882
+ "report_rw_uncommitted": "Left uncommitted last time: {count} changed file(s) on branch {branch} ({files})",
883
+ "report_rw_diagnosis_reminder": "Health check: about {waste_pct}% waste came from {cause}. Say \"fix it\" and I'll read the full diagnosis at {path}.",
884
+ "report_rw_diagnosis_reminder_explain": "Health check: about {waste_pct}% waste came from {cause}. Say \"show me\" and I'll walk you through the full diagnosis at {path}.",
885
+ "report_rw_diagnosis_cause_default": "avoidable context waste",
886
+ "report_rw_diagnosis_cause_repeated_reads": "re-reading the same files",
887
+ "report_rw_diagnosis_cause_polluter_dirs": "scanning generated or dependency folders",
888
+ "report_rw_diagnosis_cause_anomaly_session": "one oversized session",
889
+ "report_rw_diagnosis_cause_noisy_bash": "oversized Bash output",
890
+ "report_rw_diagnosis_cause_repeated_bash": "re-running the same Bash command",
891
+ "report_sessions": "Sessions",
892
+ "report_share": "Share",
893
+ "report_share_button_label": "Share",
894
+ "report_share_close": "Close",
895
+ "report_share_copied": "Copied to clipboard ✓",
896
+ "report_share_download_csv": "Download .csv",
897
+ "report_share_download_html": "Download .html",
898
+ "report_share_download_png": "Download .png",
899
+ "report_share_file_hint": "Send via AirDrop / Mail / Slack / iMessage — opens in any browser, mobile or desktop",
900
+ "report_share_file_mask_toggle": "Hide project names",
901
+ "report_share_file_title": "Share a copy",
902
+ "report_share_modal_title": "Share report",
903
+ "report_share_path_copied": "Path copied ✓",
904
+ "report_start_time": "Start time",
905
+ "report_title": "Your AI Usage Recap",
906
+ "report_insights_section": "Insights",
907
+ "report_insights_quiet": "This period ran steady — nothing unusual worth calling out.",
908
+ "report_insights_change_up": "This period burned {tokens} tokens and {cost_usd} — up {pct}% vs last period.",
909
+ "report_insights_spike_v2": "Heaviest single day was {date} at {tokens} tokens — {mean_multiplier:.2f}× a normal day.",
910
+ "report_insights_shift_new_project": "{project} is new this period and already {pct:.1f}% of usage.",
911
+ "report_insights_shift_model_up": "{model} climbed from {prev_pct:.1f}% to {pct:.1f}% of usage, mostly on {project}.",
912
+ "report_insights_shift_model_up_plain": "{model} climbed from {prev_pct:.1f}% to {pct:.1f}% of usage.",
913
+ "report_insights_action_watch_quota": "Usage jumped hard vs last period; watch quota headroom.",
914
+ "report_insights_action_spike_share": "{date} alone accounted for {share}% of this period's usage.",
915
+ "report_tokens": "Tokens",
916
+ "report_trend_compare_down": "This week dropped {pct}% vs last week.",
917
+ "report_trend_compare_first": "First week of this period.",
918
+ "report_trend_compare_flat": "Roughly flat vs last week.",
919
+ "report_trend_compare_new": "This week has new usage vs last week.",
920
+ "report_trend_compare_up": "This week is {ratio}× of last week.",
921
+ "report_trend_marker_new": "new",
922
+ "report_trend_section": "Weekly burn trail",
923
+ "report_chart_other": "Other",
924
+ "report_sub_empty": "No local subscription info detected",
925
+ "report_tools_section": "Your tools",
926
+ "report_sub_since": "Subscribed since",
927
+ "report_sponsor": "No cloud. No tracking. Just yours.",
928
+ "report_unknown": "unknown",
929
+ "report_version": "version",
930
+ "setup_hook_source_missing": "❌ Hook source file not found, tried: {tried}",
931
+ "setup_resume_source_missing": "❌ Resume hook source file not found, tried: {tried}",
932
+ "setup_terse_source_missing": "❌ Terse mode hook source file not found, tried: {tried}",
933
+ "setup_resume_enabled": "✅ Enabled auto-loading last progress in new sessions: {path}",
934
+ "setup_resume_disabled": "Disabled auto-loading last progress in new sessions",
935
+ "setup_forwarder_source_missing": "❌ Forwarder source file not found, tried: {tried}",
936
+ "setup_windows_python_missing": "❌ No usable Python interpreter was found. Install Python 3, ensure python or py is on PATH, then rerun usage setup.",
937
+ "setup_windows_non_ascii_command_path": "❌ Windows cannot safely configure a hook command containing a non-ASCII path: {path}. Move the Claude settings and hooks to an ASCII-only path, then rerun usage setup.",
938
+ "setup_legacy_file_remove_failed": "⚠ Could not remove legacy file {path}: {error}",
939
+ "setup_legacy_settings_not_object": "⚠ {path} is not a JSON object; skipping migration",
940
+ "setup_legacy_settings_read_failed": "⚠ Could not read legacy settings for migration: {error}",
941
+ "setup_legacy_statusline_cleanup_failed": "⚠ Could not clean legacy statusLine: {error}",
942
+ "setup_legacy_backup_migrate_failed": "⚠ Could not migrate legacy backup key: {error}",
943
+ "setup_legacy_settings_write_failed": "⚠ Could not write migrated settings: {error}",
944
+ "setup_legacy_migrated": "ℹ Automatically migrated from v0.1.x ({name}) to usage",
945
+ "setup_settings_read_failed": "❌ Could not read {path}: {error}",
946
+ "setup_settings_not_object": "❌ {path} must be a JSON object",
947
+ "setup_statusline_backed_up": "ℹ Backed up existing statusLine to settings.{backup_key}.{prev_key}",
948
+ "setup_codex_already_configured": "ℹ Codex status_line is already configured for usage, skipping",
949
+ "setup_codex_configured": "✓ Codex status_line configured",
950
+ "setup_codex_backup_written": "ℹ Previous config backed up to: {path}",
951
+ "setup_codex_restart_required": "ℹ Restart Codex once",
952
+ "setup_codex_restored": "✓ Codex status_line restored",
953
+ "setup_codex_removed": "✓ Codex status_line removed",
954
+ "setup_codex_config_unreadable": "⚠ Could not read ~/.codex/config.toml, skipping Codex setup",
955
+ "setup_codex_unsetup_foreign": "⚠ Codex status_line was not configured by usage; leaving it unchanged",
956
+ "setup_codex_backup_invalid": "⚠ Could not read the Codex backup; keeping the current config and backup",
957
+ "terse_codex_hooks_unreadable": "⚠ Could not parse ~/.codex/hooks.json; stopped to avoid overwriting existing settings",
958
+ "setup_no_agents": "❌ Claude Code or Codex was not found. Install and run one of them first.",
959
+ "setup_forwarder_installed": "✓ forwarder installed: {path}",
960
+ "setup_hook_installed": "✓ hook installed: {path}",
961
+ "setup_settings_updated": "✓ settings updated: {path}",
962
+ "setup_claude_restart_required": "ℹ Restart Claude Code once so it rereads settings and refreshes statusLine",
963
+ "setup_statusline_already_usage": "ℹ statusLine is already the usage hook; settings unchanged",
964
+ "setup_claude_statusline_restored": "✓ Restored previous statusLine",
965
+ "setup_claude_statusline_removed": "✓ Removed usage statusLine",
966
+ "setup_statusline_not_usage": "ℹ statusLine was not installed by usage; settings unchanged",
967
+ "setup_hook_deleted": "✓ Deleted hook: {path}",
968
+ "setup_status_file_deleted": "✓ Deleted status file: {path}",
969
+ "wintray_unavailable": "The Windows tray interface is not installed; falling back to the terminal TUI.",
970
+ "wintray_already_running": "usage is already running; click the usage tray icon to open the panel."
971
+ },
972
+ "zh-CN": {
973
+ "panel_default_name": "默认",
974
+ "panel_load_error": "面板加载失败,请反馈这个问题:",
975
+ "panel_matrix": "黑客任务",
976
+ "panel_win95": "Windows 95",
977
+ "panel_newspaper": "复古报纸",
978
+ "panel_cloud_observation": "云图观测",
979
+ "panel_aquarium": "午夜水族箱",
980
+ "panel_prism_arcade": "棱镜街机",
981
+ "panel_stained_glass": "彩绘玻璃",
982
+ "panel_origami": "折纸",
983
+ "panel_catppuccin": "Catppuccin",
984
+ "panel_black_hole": "黑洞视界",
985
+ "panel_lepidoptera": "蝶类图鉴",
986
+ "panel_world_cup": "世界杯 2026",
987
+ "panel_talent_market": "AI 人才市场",
988
+ "panel_ai_daily": "AI 更新日报",
989
+ "discussion_window_title": "AI 圆桌讨论",
990
+ "discussion_topic_label": "讨论问题",
991
+ "discussion_topic_placeholder": "输入想让多位 AI 一起讨论的问题…",
992
+ "discussion_participants": "参与者",
993
+ "discussion_participant_claude": "Claude",
994
+ "discussion_participant_codex": "Codex",
995
+ "discussion_participant_agy": "Antigravity",
996
+ "discussion_available": "可用",
997
+ "discussion_not_detected": "未检测到",
998
+ "discussion_moderator": "主持人",
999
+ "discussion_moderator_current": "当前主持人",
1000
+ "discussion_moderator_set": "设为主持人",
1001
+ "discussion_detect": "重新检测 AI",
1002
+ "discussion_detecting": "正在检测 AI…",
1003
+ "discussion_detect_unavailable": "{count} 个 AI 当前不可用",
1004
+ "discussion_section_participants": "参与者与主持人",
1005
+ "discussion_section_settings": "讨论设置",
1006
+ "discussion_section_start": "预估用量与开始",
1007
+ "discussion_working_directory": "工作文件夹",
1008
+ "discussion_pick_folder": "选择文件夹",
1009
+ "discussion_clear_folder": "清除",
1010
+ "discussion_attach_image": "附加图片",
1011
+ "discussion_attachment_remove": "移除附件",
1012
+ "discussion_paste_no_image": "剪贴板中没有图片",
1013
+ "discussion_drop_not_image": "{name} 不是图片,已忽略",
1014
+ "discussion_drop_too_large": "{name} 超过 20 MB,无法添加",
1015
+ "discussion_drop_failed": "图片读取失败",
1016
+ "discussion_prompt_attachment_header": "请先读取以下图片文件,再根据画面内容回答:",
1017
+ "discussion_working_directory_none": "未指定(讨论不会读取任何项目)",
1018
+ "discussion_working_directory_warning": "已选择工作文件夹:AI 可以只读其内容进行讨论,不会修改文件;该文件夹中的 AI 配置文件可能会生效。",
1019
+ "discussion_estimate": "{participants} 位 × {rounds} 轮 + {summary} 次总结 = 最多 {calls} 次 CLI 调用",
1020
+ "discussion_estimate_tokens": "最多约 {tokens} tokens",
1021
+ "discussion_estimate_warning": "约 2 轮的 {multiplier} 倍",
1022
+ "discussion_expand_settings": "展开设置",
1023
+ "discussion_collapse_settings": "收起设置",
1024
+ "discussion_total_rounds": "轮数",
1025
+ "discussion_include_summary": "生成总结",
1026
+ "discussion_end_on_consensus": "达成共识就提前结束",
1027
+ "discussion_guidance_between_rounds": "轮次之间让我补充",
1028
+ "discussion_guidance_placeholder": "输入要补充或引导的内容(可留空)",
1029
+ "discussion_guidance_continue": "继续讨论",
1030
+ "discussion_guidance_skip": "略过",
1031
+ "discussion_guidance_waiting": "等待你的补充或引导",
1032
+ "discussion_model": "模型",
1033
+ "discussion_model_default": "默认",
1034
+ "discussion_persona": "角色",
1035
+ "discussion_persona_neutral": "中立(不指定角色)",
1036
+ "discussion_persona_other": "其他",
1037
+ "discussion_debate_style": "讨论基调",
1038
+ "discussion_debate_style_constructive": "建设性找共识",
1039
+ "discussion_debate_style_adversarial": "对立挑错",
1040
+ "discussion_debate_style_collaborative": "协作补充",
1041
+ "discussion_debate_style_socratic": "追问底层假设",
1042
+ "discussion_debate_style_devils_advocate": "魔鬼代言人",
1043
+ "discussion_debate_style_constructive_hint": "AI 会先找共同点,再把分歧收敛成可行结论。",
1044
+ "discussion_debate_style_adversarial_hint": "AI 会优先找出漏洞、矛盾和站不住脚的推论。",
1045
+ "discussion_debate_style_collaborative_hint": "AI 会接续彼此的想法,补上遗漏并一起完善答案。",
1046
+ "discussion_debate_style_socratic_hint": "AI 会不断追问理由与前提,找出答案中没有说清楚的假设。",
1047
+ "discussion_debate_style_devils_advocate_hint": "AI 会刻意站到相反立场,测试看似合理的结论能否经得起反驳。",
1048
+ "discussion_start": "开始讨论",
1049
+ "discussion_start_hint_topic": "请先输入讨论问题",
1050
+ "discussion_start_hint_participants": "请至少选一位参与者",
1051
+ "discussion_start_hint_running": "讨论进行中",
1052
+ "discussion_stop": "停止",
1053
+ "discussion_clear": "清除讨论",
1054
+ "discussion_clear_confirm": "再次点击确认清除",
1055
+ "discussion_clear_busy": "讨论进行中,请先停止",
1056
+ "discussion_history": "讨论历程",
1057
+ "discussion_history_step1": "1 输入讨论问题",
1058
+ "discussion_history_step2": "2 选择参与者与轮数",
1059
+ "discussion_history_step3": "3 点击开始讨论",
1060
+ "discussion_progress_round": "第 {round}/{total} 轮 · {participants} {status}",
1061
+ "discussion_progress_summary": "正在生成总结 · {moderator}",
1062
+ "discussion_summary": "主持人总结",
1063
+ "discussion_summary_waiting": "讨论完成后,主持人的四段总结会出现在这里。",
1064
+ "discussion_summary_empty": "暂无总结。",
1065
+ "discussion_copy": "复制",
1066
+ "discussion_copy_failed": "无法复制摘要",
1067
+ "discussion_copied": "已复制",
1068
+ "discussion_round": "第 {round} 轮",
1069
+ "discussion_queued": "排队中",
1070
+ "discussion_thinking": "思考中…",
1071
+ "discussion_turn_pending": "等待中",
1072
+ "discussion_turn_running": "进行中",
1073
+ "discussion_turn_done": "完成",
1074
+ "discussion_turn_failed": "失败",
1075
+ "discussion_turn_cancelled": "已取消",
1076
+ "discussion_consensus": "共识",
1077
+ "discussion_consensus_count_summary": "{total} 位参与者:{agree} 同意、{disagree} 不同意、{alternative} 提出替代方案、{unparsed} 未明确表态",
1078
+ "discussion_consensus_stance_agree": "同意",
1079
+ "discussion_consensus_stance_disagree": "不同意",
1080
+ "discussion_consensus_stance_alternative": "提出替代方案",
1081
+ "discussion_consensus_stance_unparsed": "这则没有明确表态",
1082
+ "discussion_consensus_early_exit": "第 {round} 轮已达成共识,提前结束",
1083
+ "discussion_disagreement": "主要分歧",
1084
+ "discussion_recommendation": "建议方案",
1085
+ "discussion_risks": "风险与未知",
1086
+ "discussion_status_idle": "尚未开始",
1087
+ "discussion_status_preparing": "准备中",
1088
+ "discussion_status_round1_running": "第一轮进行中",
1089
+ "discussion_status_round2_running": "第二轮进行中",
1090
+ "discussion_status_summarizing": "主持人整理中",
1091
+ "discussion_status_completed": "讨论完成",
1092
+ "discussion_status_cancelling": "正在停止",
1093
+ "discussion_status_cancelled": "已取消",
1094
+ "discussion_status_failed": "讨论失败",
1095
+ "discussion_tokens": "tokens",
1096
+ "discussion_usage_total": "本次讨论 · {tokens}",
1097
+ "talent_subtitle": "按情境挑选团队,一键安装进 Claude Code。",
1098
+ "talent_search_placeholder": "搜索团队",
1099
+ "talent_no_results": "搜索不到符合的团队",
1100
+ "switch_panel": "切换面板",
1101
+ "talent_launch": "启动",
1102
+ "talent_back": "返回",
1103
+ "talent_restore": "修复",
1104
+ "talent_choose_folder": "选择文件夹",
1105
+ "talent_drifted": "已漂移",
1106
+ "talent_working": "处理中…",
1107
+ "talent_empty": "人才市场元件尚未安装",
1108
+ "talent_empty_hint": "重新打包 .app 后即会带入 AI 人才市场",
1109
+ "launch_at_login": "开机自动启动",
1110
+ "reset_panel_position": "重设面板位置",
1111
+ "hide_sections_menu": "隐藏区块",
1112
+ "quota_notifications_menu": "用量提醒通知",
1113
+ "window_keeper_menu": "自动启动 5 小时计时",
1114
+ "window_keeper_tooltip": "5 小时额度重置后,自动各发送一则极小消息(Claude 用 Haiku、agy 用 Gemini 3.5 Flash Low),让下一轮 5 小时立刻开始计时(会消耗极少量额度)",
1115
+ "window_keeper_sleep_title": "🐾 已开启自动启动 5 小时计时",
1116
+ "window_keeper_sleep_body": "已开启:5 小时额度重置后,自动各发送一则极小消息(Claude 用 Haiku、agy 用 Gemini 3.5 Flash Low),让下一轮 5 小时立刻开始计时(会消耗极少量额度)。\n\nMac 睡着时会暂停,唤醒后自动继续,平常不用管它。\n\n想出门时也让它跑:\n1. 接上电源,屏幕别合上\n2. 系统设置 → 搜索「睡眠」→ 开启「避免在显示器关闭时自动进入睡眠」\n3. 找不到?直接跟 Claude Code 说「帮我开启:避免在显示器关闭时自动进入睡眠」,让它带你设",
1117
+ "window_keeper_sleep_body_windows": "已开启:5 小时额度重置后,自动各发送一则极小消息(Claude 用 Haiku、agy 用 Gemini 3.5 Flash Low),让下一轮 5 小时立刻开始计时(会消耗极少量额度)。\n\n电脑睡眠时会暂停,唤醒后自动继续,平常不用管它。\n\n想出门时也让它跑:\n1. 接上电源\n2. 设置 → 系统 → 电源和电池 → 屏幕和睡眠 → 将「接通电源时,让我的设备进入睡眠状态」设为「从不」\n3. 找不到?直接跟 Claude Code 说「帮我开启:接通电源时设备永不进入睡眠」,让它带你设",
1118
+ "notif_warn_title": "🐾 快用完啦",
1119
+ "notif_warn_body": "{tool} {scope} 已用 {pct}%,要收尾了吗?",
1120
+ "notif_depleted_title": "🐾 额度用完啦",
1121
+ "notif_depleted_body": "{tool} {scope} 额度见底,{reset} 后恢复",
1122
+ "notif_restored_title": "🐾 额度回来了",
1123
+ "notif_restored_body": "{tool} {scope} 可以继续冲了 🚀",
1124
+ "update_alert_title": "发现新版 {version}",
1125
+ "update_btn_download": "前往下载",
1126
+ "update_btn_later": "稍后再说",
1127
+ "update_btn_skip": "跳过此版本",
1128
+ "update_no_new_version": "已是最新版本",
1129
+ "check_update": "检查更新",
1130
+ "update_check_failed": "检查更新失败",
1131
+ "hook_installed_restart": "已安装完成,请重开 Claude Code 一次",
1132
+ "hook_install_failed": "安装 hook 失败",
1133
+ "hook_install_failed_default": "setup_hook.setup() 返回失败",
1134
+ "repair_dialog_title": "状态栏设置冲突",
1135
+ "repair_dialog_message": "检测到其他工具占用了 Claude Code 状态栏。\n要切换成共存模式吗?usage app 可以和其他工具同时运行。",
1136
+ "repair_dialog_repair": "立即修复",
1137
+ "repair_dialog_skip": "稍后再说",
1138
+ "repair_dialog_never": "不要再问",
1139
+ "alert_forwarder_title": "启用共存模式?",
1140
+ "alert_forwarder_body": "检测到其他 Claude Code 状态栏工具。启用共存模式后,usage 会通过转发器和现有工具一起运行。",
1141
+ "alert_forwarder_enable": "启用共存模式",
1142
+ "alert_forwarder_keep": "保留现状",
1143
+ "data_stale_hint": "数据来自备用来源,建议检查设置",
1144
+ "status_loading": "加载中",
1145
+ "status_synced": "✓ 已同步",
1146
+ "status_no_data": "无数据",
1147
+ "awaiting_rate_limits": "请对 Claude Code 发送一句消息以同步配额",
1148
+ "hook_broken_not_installed": "⚠ 状态栏没有更新,请点「设置状态栏」重新安装",
1149
+ "hook_broken_restart": "⚠ 状态栏没有运行,请重开一次 Claude Code",
1150
+ "usage_status_missing": "⚠ 找不到状态文件,请点「设置状态栏」,再打开一次 Claude Code",
1151
+ "usage_status_missing_active": "⚠ 配额数据只能靠终端的状态栏同步,桌面版/后台会话不会触发,请打开一次终端的 Claude Code 来同步",
1152
+ "usage_status_no_quota": "⚠ 状态文件还没有配额数据,等 Claude Code 再刷新一次 statusLine",
1153
+ "status_error": "错误 ({message})",
1154
+ "rate_text": "速率:{value}",
1155
+ "status_text": "状态:{value}",
1156
+ "service_alert": "⚠ {tool} 服务异常:{status}",
1157
+ "service_degraded": "性能降级",
1158
+ "service_partial_outage": "部分中断",
1159
+ "service_major_outage": "大规模中断",
1160
+ "today_text": "今日:${cost} ({tokens} tokens)",
1161
+ "yesterday_text": "昨天:${cost} ({tokens} tokens)",
1162
+ "percent_used": "{value}% 已用",
1163
+ "reset_in": "重置 {time}",
1164
+ "reset_imminent": "即将重置",
1165
+ "burn_warning": "⚠ 按目前速度 {empty} 就会用完(重置还要 {reset})",
1166
+ "reset_placeholder": "重置 --",
1167
+ "duration_days": "{days}天 {hours}小时",
1168
+ "duration_hours": "{hours}小时 {minutes}分钟",
1169
+ "duration_minutes": "{minutes}分钟",
1170
+ "group_idle": "闲置",
1171
+ "group_normal": "正常",
1172
+ "group_active": "活跃",
1173
+ "group_heavy": "高负载",
1174
+ "claude_name": "Claude Code",
1175
+ "codex_name": "Codex",
1176
+ "codex_credits": "重置点数 · 余额 {balance}",
1177
+ "codex_credits_unlimited": "重置点数 · 无限",
1178
+ "agy_name": "Antigravity",
1179
+ "agy_quota_full": "额度已满",
1180
+ "agy_stale_minutes": "约 {minutes} 分钟前",
1181
+ "agy_stale_hours": "约 {hours} 小时前",
1182
+ "agy_stale_tooltip": "显示的是缓存旧值。额度直接从官方 API 获取,通常每隔几分钟自动更新;出现旧值说明最近获取失败(多半是 agy 尚未登录,或网络问题),成功后会自动恢复。",
1183
+ "codex_stale_minutes": "约 {minutes} 分钟前",
1184
+ "codex_stale_hours": "约 {hours} 小时前",
1185
+ "codex_stale_tooltip": "Claude 有实时回报所以很准;Codex 没有,usage 只能读取它本机偶尔留下的记录,可能比实际略旧。我们刻意不联网去补(联网会多消耗你的 token)——继续在终端运行 Codex 就会自动更新。",
1186
+ "history_load_error_file": "读不到使用记录文件",
1187
+ "history_load_error_parse": "使用记录格式异常",
1188
+ "history_load_error_unknown": "使用记录暂时无法读取",
1189
+ "history_load_error_tooltip": "目前显示的是上次成功读到的数据,问题解决后会自动恢复。",
1190
+ "projects_title": "项目用量",
1191
+ "project_range_1d": "今日",
1192
+ "project_range_yesterday": "昨天",
1193
+ "project_range_7d": "7 日",
1194
+ "project_range_30d": "月",
1195
+ "project_range_all": "全部",
1196
+ "session_label": "Session",
1197
+ "weekly_label": "本周",
1198
+ "monthly_label": "本月",
1199
+ "projects_empty": "无记录",
1200
+ "refresh_now": "↻ 立即更新",
1201
+ "analyze_usage": "报告",
1202
+ "analysis_failed": "分析报告生成失败",
1203
+ "install_hook": "设置状态栏",
1204
+ "quit": "⏻ 结束",
1205
+ "usage_title": "Usage",
1206
+ "current_label": "当前",
1207
+ "resets_in_days": "将在 {days}天 {hours}小时后重置",
1208
+ "resets_in_hours": "将在 {hours}小时 {minutes}分钟后重置",
1209
+ "resets_in_minutes": "将在 {minutes}分 {seconds}秒后重置",
1210
+ "resets_in_placeholder": "将在 -- 后重置",
1211
+ "status_rate_limited": "⚠ 已达速率限制",
1212
+ "status_token_unavailable": "⚠ Token 无法使用",
1213
+ "status_api_offline": "⚠ API 离线",
1214
+ "loading_phrases": "处理中|解析中|查看中|执行中|施展中|推演中|落实中|构思中|思考中|烘焙中|周旋中|高谈中|轻点中|胡言乱语中|运算中|酿造中|锻造中|忙碌中|计算中|成形中|解题中|动脑中|嬉戏中|重新编织中|引导中|生成中|反刍中|翻搅中|萌芽中|策划中|Clauding 中|孵化中|搬运中|汇聚中|牧养中|摇摆中|沉思中|鸣叫中|剥壳中|折腾中|奔走中|慢炖中|计算中|发想中|揉合中|调制中|想象中|探勘中|召唤中|孕育中|旋转中|斟酌中|推断中|闷烧中|沉思中|律动中|摸索中|烹煮中|具现化中|综合中|打造中|腌渍中|思索中|创造中|漫游中|修补中|压缩中|闲晃中|转化中|解码中|斟酌中|展开中|审议中|整备中|拆解中|判定中|冥想中|感受中|脱序中|涂鸦中|游走中|占卜中|渗滤中|嗡鸣中|动手中|摇晃中|施法中|工作中|收束中",
1215
+ "analyze": "分析",
1216
+ "cli": "终端",
1217
+ "cli_enabled": "终端 ✓",
1218
+ "cli_disabled": "终端",
1219
+ "statusline_action_failed": "CLI hook 操作失败",
1220
+ "unknown_sort_field": "未知排序字段: {field},可用: {valid}",
1221
+ "no_token_data": "暂无 token 使用数据",
1222
+ "loading": "加载数据...",
1223
+ "no_data": "暂无数据",
1224
+ "no_agent": "未检测到任何 AI Agent",
1225
+ "hook_not_installed": "状态栏尚未设置。请运行:usage setup",
1226
+ "col_session_title": "在做什么",
1227
+ "detected": "检测到: {agents}",
1228
+ "agent_not_found": "未检测到 {name}",
1229
+ "unknown_cmd": "未知命令: {cmd}",
1230
+ "available_cmds": "可用命令: dashboard, daily, weekly, monthly, sessions, report, claude, codex, setup, unsetup, --version",
1231
+ "sort_time": "时间",
1232
+ "sort_token": "Token",
1233
+ "sort_cost": "等效成本",
1234
+ "sort_messages": "消息数",
1235
+ "session_title": "最近会话({limit}) [dim](s)排序:[/dim] {label}{arrow} [dim](r)反转 (+/-)条数[/dim]",
1236
+ "reset_at": "重置于 {time}",
1237
+ "rate_per_day": "速率: {rate}/天",
1238
+ "cost_label": "等效成本",
1239
+ "daily_avg": "日均: {cost}",
1240
+ "msg_session": "消息 {msgs} 条 会话: {sessions}",
1241
+ "tab_help_compact": " ←→ jk e导出 q/ESC退出",
1242
+ "tab_help": " ← → 切换 ↑ ↓ 滚动 e 导出报告 q / ESC 退出",
1243
+ "history_overview": "历史总览",
1244
+ "cost_colon": "等效成本: ",
1245
+ "sessions_colon": "会话: ",
1246
+ "messages_colon": "消息: ",
1247
+ "days_colon": "天数: ",
1248
+ "month_overview": "本月概览",
1249
+ "daily_avg_colon": "日均: ",
1250
+ "recent_sessions": "最近十条会话",
1251
+ "col_time": "时间",
1252
+ "col_source": "来源",
1253
+ "col_project": "项目",
1254
+ "col_model": "模型",
1255
+ "col_total_tokens": "总Token",
1256
+ "col_cost": "等效成本",
1257
+ "col_messages": "消息",
1258
+ "col_date": "日期",
1259
+ "col_sessions": "会话",
1260
+ "col_week": "周",
1261
+ "total_row": "合计",
1262
+ "col_month": "月份",
1263
+ "col_cache_create": "Cache创建",
1264
+ "col_cache_read": "Cache读取",
1265
+ "model_breakdown": "模型分布",
1266
+ "col_ratio": "占比",
1267
+ "session_summary": "最近 {shown} / {total} 个会话",
1268
+ "col_duration": "时长",
1269
+ "daily_panel_title": "当日数据面板 (P90)",
1270
+ "msg_unit": "{n} 条",
1271
+ "session_msg": "会话: {sessions} 消息: {msgs}",
1272
+ "rate_per_msg": "速率: {rate}/条",
1273
+ "week_token": "本周 Token {tokens}",
1274
+ "week_cost": "本周成本",
1275
+ "active_panel_title": "当前 5h&7d 数据面板",
1276
+ "limit_5h": "5h 限额",
1277
+ "time_label": "时间",
1278
+ "time_elapsed": "已用 {elapsed}min / 剩余 {h}h{m:02d}m",
1279
+ "rate_per_min": "速率: {rate}/min",
1280
+ "model_label": "模型: {model}",
1281
+ "msg_count": "消息 {n} 条",
1282
+ "limit_7d": "7d 限额",
1283
+ "idle_panel_title": "限额数据面板",
1284
+ "report_active_days": "活跃天数",
1285
+ "report_agent": "工具",
1286
+ "report_cost": "花费",
1287
+ "report_duration": "时长",
1288
+ "report_empty_models": "这段期间还没有模型用量",
1289
+ "report_empty_projects": "这段期间还没有项目用量",
1290
+ "report_empty_daily": "这段期间还没有每日用量",
1291
+ "report_empty_sessions": "这段期间还没有可列出的会话",
1292
+ "report_footer": "usage · 本机分析 · 数据不离本机",
1293
+ "report_generated": "生成时间",
1294
+ "report_kpi_active": "活跃日",
1295
+ "report_kpi_cost": "烧掉成本",
1296
+ "report_kpi_messages": "消息",
1297
+ "report_kpi_productivity": "平均每条消息",
1298
+ "report_kpi_productivity_unit": "Token",
1299
+ "report_kpi_sessions": "会话",
1300
+ "report_kpi_tokens": "烧掉 Tokens",
1301
+ "report_messages": "消息",
1302
+ "report_model": "模型",
1303
+ "report_model_section": "主力模型",
1304
+ "report_narrative": "过去这段时间你烧了 {tokens} tokens、跨 {projects} 个项目。{peak_date} 是高峰({peak_tokens}/天),主力 LLM 是 {top_model}。",
1305
+ "report_period": "区间",
1306
+ "report_project": "项目",
1307
+ "report_project_section": "项目热区",
1308
+ "report_persona_active_hours": "活跃时段",
1309
+ "report_persona_caption": "你最常在 {h1}{h2} 与 AI 协作",
1310
+ "report_persona_caption_second": " 和 {h2}",
1311
+ "report_persona_empty": "这段期间还没有足够数据",
1312
+ "report_recent_titles_heading": "最近在做什么",
1313
+ "report_persona_section": "使用习惯",
1314
+ "report_rank": "排名",
1315
+ "report_session_section": "最烧的 5 段会话",
1316
+ "report_contribution_section": "52 周贡献热力图",
1317
+ "report_contribution_less": "少",
1318
+ "report_contribution_more": "多",
1319
+ "report_contribution_current_streak": "当前连续活跃",
1320
+ "report_contribution_longest_streak": "最长连续活跃",
1321
+ "report_contribution_busiest_day": "最忙的一天",
1322
+ "report_contribution_days_unit": "天",
1323
+ "report_contribution_cell_title": "{date} · {tokens} tokens",
1324
+ "report_contribution_mon": "Mon",
1325
+ "report_contribution_wed": "Wed",
1326
+ "report_contribution_fri": "Fri",
1327
+ "report_contribution_month_1": "1月",
1328
+ "report_contribution_month_2": "2月",
1329
+ "report_contribution_month_3": "3月",
1330
+ "report_contribution_month_4": "4月",
1331
+ "report_contribution_month_5": "5月",
1332
+ "report_contribution_month_6": "6月",
1333
+ "report_contribution_month_7": "7月",
1334
+ "report_contribution_month_8": "8月",
1335
+ "report_contribution_month_9": "9月",
1336
+ "report_contribution_month_10": "10月",
1337
+ "report_contribution_month_11": "11月",
1338
+ "report_contribution_month_12": "12月",
1339
+ "report_wrapped_section": "年度 Wrapped",
1340
+ "report_wrapped_year_badge": "{year} Wrapped",
1341
+ "report_wrapped_total_tokens": "全年总 Tokens",
1342
+ "report_wrapped_total_cost": "全年总成本",
1343
+ "report_wrapped_active_days": "活跃天数",
1344
+ "report_wrapped_longest_streak": "最长连续",
1345
+ "report_wrapped_top_model": "最常用模型",
1346
+ "report_wrapped_top_project": "最常用项目",
1347
+ "report_wrapped_books_equivalent": "≈ {books} 本书的字量",
1348
+ "report_wrapped_beast_phoenix_title": "凤凰加冕",
1349
+ "report_wrapped_beast_phoenix_caption": "今年 Claude 的火力略胜一筹,像把灰烬一口气吹回天空。",
1350
+ "report_wrapped_beast_dragon_title": "巨龙加冕",
1351
+ "report_wrapped_beast_dragon_caption": "今年 Codex 的火力更猛,像一条龙一路把工地烧到完工。",
1352
+ "project_butler": "接着上次做",
1353
+ "project_butler_tooltip": "开新对话时,自动把上次的进度交给 AI,不用再重讲一次。",
1354
+ "terse_mode_menu": "省 token 模式",
1355
+ "terse_mode_tooltip": "开新对话时,自动要求 Claude 回复更简短,以节省输出 token(装了 Codex 的话也会一起套用);但代码、指令、路径和错误信息不会被缩减。之后你发的每则消息也会轻声提醒 Claude 保持精简。",
1356
+ "terse_reminder_instruction": "[精简模式仍生效:这则回复保持精简;代码、指令、路径、错误信息照旧一字不改;安全警示与不可逆操作确认仍要讲完整。]",
1357
+ "terse_mode_instruction": "(这个对话已开启「精简模式」:请在这次对话第一则回复的最前面提一下这件事——如果你同时收到其他要打招呼的指示(例如进度交接),就把「精简模式已开启」自然并入那句招呼里就好,不要另外多开一句;如果没有其他招呼可以搭,就自己说一行「🐾 已开启精简模式,回复会尽量简短,继续吧!」。从现在起,直到这个对话结束为止,每一则回复都要遵守这条规则——不会因为对话变长、话题变多就淡忘或恢复正常语气。允许用短句、短语甚至不成句的断句表达,不必凑成完整句子;去掉虚词赘字、客套语、重复铺陈和不必要的过渡句;用词挑简短的(例如「修」不要「针对这个问题实现解决方案」)。不用装饰性表格或表情符号,也不要旁白工具调用的过程。不要自创缩写(例如「配置」别缩成「配」、「函数」别缩成「函」)——这类缩写分词长度跟完整词一样,省不到字数,反而让读者要多想一下,直接用完整词更省事也更清楚。代码、指令、文件路径、错误信息一个字都不能省略或改写。遇到安全警示、不可逆操作的确认、或多步骤中省略连接词会有误读风险的情况,这几种要先恢复完整、讲清楚,讲完再切回精简语气。如果用户明确要求详细讲解、逐步教学,或情境需要完整推理,仍以用户当下的要求为准,不要因为这个模式而省略关键信息。)",
1358
+ "terse_mode_enabled_msg": "已开启。以后开新的 Claude Code 对话都会自动要求回复更精简(装了 Codex 的话也会一起套用);代码、指令、路径和错误信息不会被缩减。下次开新对话即生效。",
1359
+ "terse_mode_disabled_msg": "已关闭。开新对话时不再自动要求精简回复。",
1360
+ "resume_enabled_restart": "已开启。以后开新的 Claude Code 对话,会自动记得这个项目上次做到哪——画面上不会有提示(这是正常的),但 Claude 已经知道。下次开新对话即生效。",
1361
+ "resume_disabled_msg": "已关闭。开新对话时不再自动带入上次进度。",
1362
+ "resume_action_failed": "设置失败",
1363
+ "report_rw_none": "(未记录)",
1364
+ "report_rw_inject_lead": "(这是进度交接。请在这次对话第一则回复的最前面,先说一行「🐾 已接回上次进度,继续吧!」,然后别照念下面的线索,而是像聪明又贴心的搭档那样消化它:先判断用户最后真正在忙的是什么(「最近在忙的」是新到旧排列,以最前面那笔为准,别被较旧的带偏),用一两句温暖具体地说他上次做到哪、完成了什么,再直接给出你判断最该接着做的下一步——要具体,别反问「要做什么」。只能根据下面线索讲,没有的别编;若线索太少看不出方向,就坦白说、并列出你看到的几条线让他挑。接着正常回应。)\n\n",
1365
+ "report_rw_empty": "(请在你这次对话的第一则回复最前面,说一行「🐾 欢迎回来,这个项目目前没有要接的进度。」,再正常回应。)",
1366
+ "report_rw_prompt": "项目:{project}(最后活动 {when})\n最近在忙的(新→旧):{last_request}\n完成的进度:{commits}\n未完成待办:{todos}",
1367
+ "report_rw_uncommitted": "上次离开时还留着:{branch} 分支有 {count} 个文件改了还没提交({files})",
1368
+ "report_rw_diagnosis_reminder": "健检提醒:最近约有 {waste_pct}% 的浪费来自{cause}。跟我说「修」,完整诊断在 {path}。",
1369
+ "report_rw_diagnosis_reminder_explain": "健检提醒:最近约有 {waste_pct}% 的浪费来自{cause}。跟我说「看」,我会读 {path} 的完整诊断,解释给你听并给具体建议。",
1370
+ "report_rw_diagnosis_cause_default": "可避免的上下文浪费",
1371
+ "report_rw_diagnosis_cause_repeated_reads": "重复读同一批文件",
1372
+ "report_rw_diagnosis_cause_polluter_dirs": "扫进了产物/依赖文件夹",
1373
+ "report_rw_diagnosis_cause_anomaly_session": "单个会话异常膨胀",
1374
+ "report_rw_diagnosis_cause_noisy_bash": "Bash 输出过大",
1375
+ "report_rw_diagnosis_cause_repeated_bash": "重复跑同一个 Bash 命令",
1376
+ "report_sessions": "会话",
1377
+ "report_share": "占比",
1378
+ "report_share_button_label": "分享",
1379
+ "report_share_close": "关闭",
1380
+ "report_share_copied": "已复制到剪贴板 ✓",
1381
+ "report_share_download_csv": "另存一份 .csv",
1382
+ "report_share_download_html": "另存一份 .html",
1383
+ "report_share_download_png": "另存一份 .png",
1384
+ "report_share_file_hint": "可用 AirDrop / Mail / Slack / 信息 传给对方,手机电脑都能看",
1385
+ "report_share_file_mask_toggle": "隐藏项目名称",
1386
+ "report_share_file_title": "分享一份副本",
1387
+ "report_share_modal_title": "分享报告",
1388
+ "report_share_path_copied": "路径已复制 ✓",
1389
+ "report_start_time": "开始时间",
1390
+ "report_title": "你的 AI 用量回顾",
1391
+ "report_insights_section": "洞察",
1392
+ "report_insights_quiet": "这期跑得很平稳,没什么值得点名的异常。",
1393
+ "report_insights_change_up": "本期烧了 {tokens} tokens、{cost_usd},比上期多 {pct}%。",
1394
+ "report_insights_spike_v2": "最重的一天是 {date},{tokens} tokens,是平日的 {mean_multiplier:.2f} 倍。",
1395
+ "report_insights_shift_new_project": "{project} 是这期新冒出来的项目,已占 {pct:.1f}% 用量。",
1396
+ "report_insights_shift_model_up": "{model} 的占比从上期 {prev_pct:.1f}% 升到 {pct:.1f}%,主要烧在 {project}。",
1397
+ "report_insights_shift_model_up_plain": "{model} 的占比从上期 {prev_pct:.1f}% 升到 {pct:.1f}%。",
1398
+ "report_insights_action_watch_quota": "本期用量比上期大幅增加,先盯一下配额水位。",
1399
+ "report_insights_action_spike_share": "{date} 一天就烧掉本期 {share}% 的量。",
1400
+ "report_tokens": "Tokens",
1401
+ "report_trend_compare_down": "本周比上周少 {pct}%。",
1402
+ "report_trend_compare_first": "这是本期第一周的数据。",
1403
+ "report_trend_compare_flat": "本周跟上周差不多。",
1404
+ "report_trend_compare_new": "本周是新出现的用量。",
1405
+ "report_trend_compare_up": "本周是上周的 {ratio} 倍。",
1406
+ "report_trend_marker_new": "new",
1407
+ "report_trend_section": "每周燃烧趋势",
1408
+ "report_chart_other": "其他",
1409
+ "report_sub_empty": "未检测到本地订阅信息",
1410
+ "report_tools_section": "你的工具",
1411
+ "report_sub_since": "订阅起始",
1412
+ "report_sponsor": "No cloud. No tracking. Just yours.",
1413
+ "report_unknown": "未知",
1414
+ "report_version": "版本",
1415
+ "setup_hook_source_missing": "❌ 找不到 hook 原始文件,tried: {tried}",
1416
+ "setup_resume_source_missing": "❌ 找不到 resume hook 原始文件,tried: {tried}",
1417
+ "setup_terse_source_missing": "❌ 找不到 terse mode hook 原始文件,tried: {tried}",
1418
+ "setup_resume_enabled": "✅ 已启用新对话自动带入上次进度:{path}",
1419
+ "setup_resume_disabled": "已关闭新对话自动带入上次进度",
1420
+ "setup_forwarder_source_missing": "❌ 找不到 forwarder 原始文件,tried: {tried}",
1421
+ "setup_windows_python_missing": "❌ 找不到可用的 Python 解释器。请安装 Python 3,确认 PATH 中有 python 或 py,然后重新运行 usage setup。",
1422
+ "setup_windows_non_ascii_command_path": "❌ Windows 无法安全设置包含非 ASCII 路径的 hook 命令:{path}。请将 Claude 设置文件和 hook 移到仅含 ASCII 字符的路径,然后重新运行 usage setup。",
1423
+ "setup_legacy_file_remove_failed": "⚠ 无法移除旧文件 {path}: {error}",
1424
+ "setup_legacy_settings_not_object": "⚠ {path} 不是 JSON object,跳过 migration",
1425
+ "setup_legacy_settings_read_failed": "⚠ 无法读取旧设置做 migration: {error}",
1426
+ "setup_legacy_statusline_cleanup_failed": "⚠ 无法清理旧 statusLine: {error}",
1427
+ "setup_legacy_backup_migrate_failed": "⚠ 无法迁移旧备份 key: {error}",
1428
+ "setup_legacy_settings_write_failed": "⚠ 无法写回 migration 设置: {error}",
1429
+ "setup_legacy_migrated": "ℹ 已从 v0.1.x ({name}) 自动 migrate 到 usage",
1430
+ "setup_settings_read_failed": "❌ 无法读取 {path}: {error}",
1431
+ "setup_settings_not_object": "❌ {path} 必须是 JSON object",
1432
+ "setup_statusline_backed_up": "ℹ 已备份原有 statusLine 到 settings.{backup_key}.{prev_key}",
1433
+ "setup_codex_already_configured": "ℹ Codex status_line 已是 usage 设置,跳过",
1434
+ "setup_codex_configured": "✓ Codex status_line 已配置",
1435
+ "setup_codex_backup_written": "ℹ 原配置已备份到: {path}",
1436
+ "setup_codex_restart_required": "ℹ 请重新打开 Codex 一次",
1437
+ "setup_codex_restored": "✓ Codex status_line 已恢复原配置",
1438
+ "setup_codex_removed": "✓ Codex status_line 已移除",
1439
+ "setup_codex_config_unreadable": "⚠ 无法读取 ~/.codex/config.toml,跳过 Codex 设置",
1440
+ "setup_codex_unsetup_foreign": "⚠ Codex status_line 不是 usage 设置的,已保留不动",
1441
+ "setup_codex_backup_invalid": "⚠ 无法读取 Codex 备份文件,已保留现有设置与备份",
1442
+ "terse_codex_hooks_unreadable": "⚠ 无法解析 ~/.codex/hooks.json,已中止修改以免覆盖现有设置",
1443
+ "setup_no_agents": "❌ 找不到 Claude Code 或 Codex,请先安装并运行其中之一",
1444
+ "setup_forwarder_installed": "✓ forwarder 已安装:{path}",
1445
+ "setup_hook_installed": "✓ hook 已安装:{path}",
1446
+ "setup_settings_updated": "✓ settings 已更新:{path}",
1447
+ "setup_claude_restart_required": "ℹ 请重新打开 Claude Code 一次(让它重新读 settings 并刷新一次 statusLine)",
1448
+ "setup_statusline_already_usage": "ℹ statusLine 已是 usage hook,settings 未改动",
1449
+ "setup_claude_statusline_restored": "✓ 已还原原有 statusLine",
1450
+ "setup_claude_statusline_removed": "✓ 已移除 usage statusLine",
1451
+ "setup_statusline_not_usage": "ℹ statusLine 不是 usage 安装的,settings 未改动",
1452
+ "setup_hook_deleted": "✓ 已删除 hook:{path}",
1453
+ "setup_status_file_deleted": "✓ 已删除状态文件:{path}",
1454
+ "wintray_unavailable": "Windows 系统托盘界面尚未安装,改用终端 TUI。",
1455
+ "wintray_already_running": "usage 已在运行;请点击系统托盘的 usage 图标打开面板。"
1456
+ },
1457
+ "ja": {
1458
+ "panel_default_name": "デフォルト",
1459
+ "panel_load_error": "パネルの読み込みに失敗しました。報告してください:",
1460
+ "panel_matrix": "マトリックス",
1461
+ "panel_win95": "Windows 95",
1462
+ "panel_newspaper": "レトロ新聞",
1463
+ "panel_cloud_observation": "雲観測",
1464
+ "panel_aquarium": "真夜中の水族館",
1465
+ "panel_prism_arcade": "プリズムアーケード",
1466
+ "panel_stained_glass": "ステンドグラス",
1467
+ "panel_origami": "折り紙",
1468
+ "panel_catppuccin": "Catppuccin",
1469
+ "panel_black_hole": "ブラックホール",
1470
+ "panel_lepidoptera": "蝶の図鑑",
1471
+ "panel_world_cup": "ワールドカップ 2026",
1472
+ "panel_talent_market": "AI人材マーケット",
1473
+ "panel_ai_daily": "AI更新日報",
1474
+ "discussion_window_title": "AI 円卓会議",
1475
+ "discussion_topic_label": "議題",
1476
+ "discussion_topic_placeholder": "複数の AI に議論させたい質問を入力…",
1477
+ "discussion_participants": "参加者",
1478
+ "discussion_participant_claude": "Claude",
1479
+ "discussion_participant_codex": "Codex",
1480
+ "discussion_participant_agy": "Antigravity",
1481
+ "discussion_available": "利用可能",
1482
+ "discussion_not_detected": "未検出",
1483
+ "discussion_moderator": "モデレーター",
1484
+ "discussion_moderator_current": "現在のモデレーター",
1485
+ "discussion_moderator_set": "モデレーターに設定",
1486
+ "discussion_detect": "AI を再検出",
1487
+ "discussion_detecting": "AI を検出中…",
1488
+ "discussion_detect_unavailable": "{count} 件の AI は現在利用できません",
1489
+ "discussion_section_participants": "参加者とモデレーター",
1490
+ "discussion_section_settings": "議論の設定",
1491
+ "discussion_section_start": "推定使用量と開始",
1492
+ "discussion_working_directory": "作業フォルダ",
1493
+ "discussion_pick_folder": "フォルダを選択",
1494
+ "discussion_clear_folder": "クリア",
1495
+ "discussion_attach_image": "画像を添付",
1496
+ "discussion_attachment_remove": "添付を削除",
1497
+ "discussion_paste_no_image": "クリップボードに画像がありません",
1498
+ "discussion_drop_not_image": "{name} は画像ではないため追加しませんでした",
1499
+ "discussion_drop_too_large": "{name} は 20 MB を超えるため追加できません",
1500
+ "discussion_drop_failed": "画像の読み取りに失敗しました",
1501
+ "discussion_prompt_attachment_header": "まず以下の画像ファイルを読み込み、その内容に基づいて回答してください:",
1502
+ "discussion_working_directory_none": "未指定(プロジェクトは読み込まれません)",
1503
+ "discussion_working_directory_warning": "作業フォルダが選択されています。AI は議論のために内容を読み取れますが、ファイルは変更しません。フォルダ内の AI 設定ファイルが適用される場合があります。",
1504
+ "discussion_estimate": "{participants} 名 × {rounds} ラウンド + {summary} 回のまとめ = 最大 {calls} 回の CLI 呼び出し",
1505
+ "discussion_estimate_tokens": "最大約 {tokens} トークン",
1506
+ "discussion_estimate_warning": "2 ラウンドの約 {multiplier} 倍",
1507
+ "discussion_expand_settings": "設定を表示",
1508
+ "discussion_collapse_settings": "設定を隠す",
1509
+ "discussion_total_rounds": "ラウンド数",
1510
+ "discussion_include_summary": "要約を生成",
1511
+ "discussion_end_on_consensus": "合意に達したら早期終了",
1512
+ "discussion_guidance_between_rounds": "ラウンド間に補足する",
1513
+ "discussion_guidance_placeholder": "次のラウンドへの補足や指示を入力(任意)",
1514
+ "discussion_guidance_continue": "議論を続ける",
1515
+ "discussion_guidance_skip": "スキップ",
1516
+ "discussion_guidance_waiting": "補足または指示を待っています",
1517
+ "discussion_model": "モデル",
1518
+ "discussion_model_default": "デフォルト",
1519
+ "discussion_persona": "役割",
1520
+ "discussion_persona_neutral": "中立(役割なし)",
1521
+ "discussion_persona_other": "その他",
1522
+ "discussion_debate_style": "議論の基調",
1523
+ "discussion_debate_style_constructive": "建設的な合意形成",
1524
+ "discussion_debate_style_adversarial": "対立的な批判",
1525
+ "discussion_debate_style_collaborative": "協調的な補足",
1526
+ "discussion_debate_style_socratic": "前提を問う",
1527
+ "discussion_debate_style_devils_advocate": "悪魔の代弁者",
1528
+ "discussion_debate_style_constructive_hint": "AI同士がまず共通点を探し、残る違いを実行可能な結論へまとめます。",
1529
+ "discussion_debate_style_adversarial_hint": "AIが穴や矛盾、根拠の弱い部分を優先して探します。",
1530
+ "discussion_debate_style_collaborative_hint": "AI同士が互いの考えを引き継ぎ、抜けを補いながら答えを磨きます。",
1531
+ "discussion_debate_style_socratic_hint": "AIが理由と前提を繰り返し問い、答えに隠れた仮定を明らかにします。",
1532
+ "discussion_debate_style_devils_advocate_hint": "AIがあえて反対側に立ち、もっともらしい結論が反論に耐えるか試します。",
1533
+ "discussion_start": "議論を開始",
1534
+ "discussion_start_hint_topic": "先に議題を入力してください",
1535
+ "discussion_start_hint_participants": "参加者を 1 人以上選んでください",
1536
+ "discussion_start_hint_running": "議論中です",
1537
+ "discussion_stop": "停止",
1538
+ "discussion_clear": "議論を消去",
1539
+ "discussion_clear_confirm": "もう一度押して消去",
1540
+ "discussion_clear_busy": "議論が進行中です。先に停止してください",
1541
+ "discussion_history": "議論履歴",
1542
+ "discussion_history_step1": "1 議題を入力",
1543
+ "discussion_history_step2": "2 参加者とラウンド数を選択",
1544
+ "discussion_history_step3": "3 議論を開始",
1545
+ "discussion_progress_round": "第 {round}/{total} ラウンド · {participants} {status}",
1546
+ "discussion_progress_summary": "要約を作成中 · {moderator}",
1547
+ "discussion_summary": "モデレーターの要約",
1548
+ "discussion_summary_waiting": "議論が完了すると、モデレーターの 4 部構成の要約がここに表示されます。",
1549
+ "discussion_summary_empty": "まだ要約はありません。",
1550
+ "discussion_copy": "コピー",
1551
+ "discussion_copy_failed": "要約をコピーできませんでした",
1552
+ "discussion_copied": "コピーしました",
1553
+ "discussion_round": "第 {round} ラウンド",
1554
+ "discussion_queued": "待機中",
1555
+ "discussion_thinking": "考え中…",
1556
+ "discussion_turn_pending": "保留中",
1557
+ "discussion_turn_running": "実行中",
1558
+ "discussion_turn_done": "完了",
1559
+ "discussion_turn_failed": "失敗",
1560
+ "discussion_turn_cancelled": "キャンセル",
1561
+ "discussion_consensus": "合意",
1562
+ "discussion_consensus_count_summary": "参加者 {total} 名:賛成 {agree}、反対 {disagree}、代替案 {alternative}、立場が不明確 {unparsed}",
1563
+ "discussion_consensus_stance_agree": "賛成",
1564
+ "discussion_consensus_stance_disagree": "反対",
1565
+ "discussion_consensus_stance_alternative": "代替案を提示",
1566
+ "discussion_consensus_stance_unparsed": "この発言では立場が明確に示されていません",
1567
+ "discussion_consensus_early_exit": "第 {round} ラウンドで合意に達したため、早期終了しました",
1568
+ "discussion_disagreement": "主な相違",
1569
+ "discussion_recommendation": "推奨案",
1570
+ "discussion_risks": "リスクと不確実性",
1571
+ "discussion_status_idle": "未開始",
1572
+ "discussion_status_preparing": "準備中",
1573
+ "discussion_status_round1_running": "第 1 ラウンド進行中",
1574
+ "discussion_status_round2_running": "第 2 ラウンド進行中",
1575
+ "discussion_status_summarizing": "モデレーターが要約中",
1576
+ "discussion_status_completed": "議論完了",
1577
+ "discussion_status_cancelling": "停止中",
1578
+ "discussion_status_cancelled": "キャンセル済み",
1579
+ "discussion_status_failed": "議論失敗",
1580
+ "discussion_tokens": "トークン",
1581
+ "discussion_usage_total": "今回の議論 · {tokens}",
1582
+ "talent_subtitle": "状況に合わせてチームを選び、Claude Code にワンクリックで導入。",
1583
+ "talent_search_placeholder": "チームを検索",
1584
+ "talent_no_results": "該当するチームが見つかりません",
1585
+ "switch_panel": "パネル切替",
1586
+ "talent_launch": "起動",
1587
+ "talent_back": "戻る",
1588
+ "talent_restore": "修復",
1589
+ "talent_choose_folder": "フォルダを選択",
1590
+ "talent_drifted": "ドリフト",
1591
+ "talent_working": "処理中…",
1592
+ "talent_empty": "人材マーケットコンポーネントがインストールされていません",
1593
+ "talent_empty_hint": ".app を再ビルドするとAI人材マーケットが同梱されます",
1594
+ "launch_at_login": "ログイン時に起動",
1595
+ "reset_panel_position": "パネルの位置をリセット",
1596
+ "hide_sections_menu": "セクションを非表示",
1597
+ "quota_notifications_menu": "使用量アラート通知",
1598
+ "window_keeper_menu": "5 時間セッションを自動開始",
1599
+ "window_keeper_tooltip": "5 時間枠のリセット後、各ツールにごく小さなメッセージを自動送信します(Claude は Haiku、agy は Gemini 3.5 Flash Low)。次の 5 時間のカウントをすぐに開始します(ごくわずかな枠を消費します)。",
1600
+ "window_keeper_sleep_title": "🐾 5 時間セッションの自動開始をオンにしました",
1601
+ "window_keeper_sleep_body": "オンにしました:5 時間枠のリセット後、各ツールにごく小さなメッセージを自動送信します(Claude は Haiku、agy は Gemini 3.5 Flash Low)。次の 5 時間のカウントをすぐに開始します(ごくわずかな枠を消費します)。\n\nMac のスリープ中は一時停止し、復帰すると自動で再開します。普段は何もしなくて大丈夫です。\n\n離席中も動かしたいときは:\n1. 電源につなぎ、フタは閉じない\n2. システム設定 → 「スリープ」で検索 → 「ディスプレイがオフのときに自動でスリープさせない」をオン\n3. 見つからないときは Claude Code に「ディスプレイがオフのときに自動でスリープさせない、をオンにして」と頼んでください",
1602
+ "window_keeper_sleep_body_windows": "オンにしました:5 時間枠のリセット後、各ツールにごく小さなメッセージを自動送信します(Claude は Haiku、agy は Gemini 3.5 Flash Low)。次の 5 時間のカウントをすぐに開始します(ごくわずかな枠を消費します)。\n\nPC のスリープ中は一時停止し、復帰すると自動で再開します。普段は何もしなくて大丈夫です。\n\n離席中も動かしたいときは:\n1. 電源につないでおく\n2. 設定 → システム → 電源とバッテリー → 画面とスリープ → 「電源接続時、デバイスをスリープ状態にする」を「なし」に設定\n3. 見つからないときは Claude Code に「電源接続時はスリープしないようにして」と頼んでください",
1603
+ "notif_warn_title": "🐾 もうすぐ使い切り",
1604
+ "notif_warn_body": "{tool} {scope} は {pct}% 使用済み。そろそろ締めますか?",
1605
+ "notif_depleted_title": "🐾 クォータを使い切りました",
1606
+ "notif_depleted_body": "{tool} {scope} のクォータがなくなりました。{reset} 後に回復します",
1607
+ "notif_restored_title": "🐾 クォータが回復しました",
1608
+ "notif_restored_body": "{tool} {scope} がまた使えるようになりました 🚀",
1609
+ "update_alert_title": "新しいバージョン {version} があります",
1610
+ "update_btn_download": "ダウンロード",
1611
+ "update_btn_later": "あとで",
1612
+ "update_btn_skip": "このバージョンをスキップ",
1613
+ "update_no_new_version": "最新バージョンです",
1614
+ "check_update": "アップデートを確認",
1615
+ "update_check_failed": "アップデート確認に失敗しました",
1616
+ "hook_installed_restart": "フックをインストールしました。Claude Code を一度再起動してください。",
1617
+ "hook_install_failed": "フックのインストールに失敗しました",
1618
+ "hook_install_failed_default": "setup_hook.setup() が失敗を返しました",
1619
+ "repair_dialog_title": "ステータスライン設定の競合",
1620
+ "repair_dialog_message": "別のツールが Claude Code のステータスラインを使用しています。\n共存モードに切り替えますか?usage app と他のツールを同時に動かせます。",
1621
+ "repair_dialog_repair": "今すぐ修復",
1622
+ "repair_dialog_skip": "あとで",
1623
+ "repair_dialog_never": "今後表示しない",
1624
+ "alert_forwarder_title": "共存モードを有効にしますか?",
1625
+ "alert_forwarder_body": "他の Claude Code ステータスラインツールを検出しました。共存モードでは、usage はフォワーダー経由で既存のツールと一緒に動作します。",
1626
+ "alert_forwarder_enable": "共存モードを有効化",
1627
+ "alert_forwarder_keep": "現状を維持",
1628
+ "data_stale_hint": "データはフォールバック元から取得しています。設定を確認してください。",
1629
+ "status_loading": "読み込み中",
1630
+ "status_synced": "✓ 同期済み",
1631
+ "status_no_data": "データなし",
1632
+ "awaiting_rate_limits": "Claude Code にメッセージを送信してクォータを同期してください",
1633
+ "hook_broken_not_installed": "⚠ ステータスラインが更新されていません。「ステータスラインを設定」を押して再インストールしてください。",
1634
+ "hook_broken_restart": "⚠ ステータスライン hook が動作していません。Claude Code を一度再起動してください。",
1635
+ "usage_status_missing": "⚠ ステータスファイルが見つかりません。「ステータスラインを設定」を押してから、Claude Code を一度起動してください。",
1636
+ "usage_status_missing_active": "⚠ クォータ情報はターミナルのステータスラインでのみ同期されます。デスクトップアプリやヘッドレスセッションでは同期されません。ターミナルで Claude Code を一度開いてください。",
1637
+ "usage_status_no_quota": "⚠ ステータスファイルにクォータデータがまだありません。Claude Code が statusLine をもう一度更新するまでお待ちください。",
1638
+ "status_error": "エラー ({message})",
1639
+ "rate_text": "レート: {value}",
1640
+ "status_text": "状態: {value}",
1641
+ "service_alert": "⚠ {tool} サービス障害:{status}",
1642
+ "service_degraded": "パフォーマンス低下",
1643
+ "service_partial_outage": "一部障害",
1644
+ "service_major_outage": "大規模障害",
1645
+ "today_text": "今日: ${cost} ({tokens} tokens)",
1646
+ "yesterday_text": "昨日: ${cost} ({tokens} tokens)",
1647
+ "percent_used": "{value}% 使用済み",
1648
+ "reset_in": "{time}後にリセット",
1649
+ "reset_imminent": "まもなくリセット",
1650
+ "burn_warning": "⚠ 現在のペースだとあと {empty} で使い切ります(リセットまで {reset})",
1651
+ "reset_placeholder": "リセット --",
1652
+ "duration_days": "{days}日 {hours}時間",
1653
+ "duration_hours": "{hours}時間 {minutes}分",
1654
+ "duration_minutes": "{minutes}分",
1655
+ "group_idle": "アイドル",
1656
+ "group_normal": "通常",
1657
+ "group_active": "アクティブ",
1658
+ "group_heavy": "高負荷",
1659
+ "claude_name": "Claude Code",
1660
+ "codex_name": "Codex",
1661
+ "codex_credits": "リセットクレジット · 残高 {balance}",
1662
+ "codex_credits_unlimited": "リセットクレジット · 無制限",
1663
+ "agy_name": "Antigravity",
1664
+ "agy_quota_full": "クォータは満タンです",
1665
+ "agy_stale_minutes": "約 {minutes} 分前",
1666
+ "agy_stale_hours": "約 {hours} 時間前",
1667
+ "agy_stale_tooltip": "キャッシュされた値を表示しています。利用枠は公式 API から直接取得し、通常数分ごとに自動更新されます。古い値が表示されるのは直近の取得に失敗したためです(多くの場合 agy が未サインイン、またはネットワークの問題)。取得に成功すると自動的に復旧します。",
1668
+ "codex_stale_minutes": "約 {minutes} 分前",
1669
+ "codex_stale_hours": "約 {hours} 時間前",
1670
+ "codex_stale_tooltip": "Claude はリアルタイムに報告するので正確です。Codex にはそれがないため、usage は Codex がローカルに時々残す記録だけを読み取り、実際より少し古い場合があります。補うために意図的にネット接続はしません(接続するとあなたの token を余分に消費します)——ターミナルで Codex を使い続けると自動的に更新されます。",
1671
+ "history_load_error_file": "使用履歴ファイルを読み込めません",
1672
+ "history_load_error_parse": "使用履歴データの形式に問題があります",
1673
+ "history_load_error_unknown": "使用履歴データを一時的に取得できません",
1674
+ "history_load_error_tooltip": "現在表示中なのは前回正常に読み込めたデータです。問題が解消すると自動的に復旧します。",
1675
+ "projects_title": "プロジェクト使用量",
1676
+ "project_range_1d": "今日",
1677
+ "project_range_yesterday": "昨日",
1678
+ "project_range_7d": "7日間",
1679
+ "project_range_30d": "月",
1680
+ "project_range_all": "全期間",
1681
+ "session_label": "セッション",
1682
+ "weekly_label": "週間",
1683
+ "monthly_label": "月間",
1684
+ "projects_empty": "記録なし",
1685
+ "refresh_now": "↻ 今すぐ更新",
1686
+ "analyze_usage": "レポート",
1687
+ "analysis_failed": "分析レポートの生成に失敗しました",
1688
+ "install_hook": "ステータスラインを設定",
1689
+ "quit": "⏻ 終了",
1690
+ "usage_title": "使用量",
1691
+ "current_label": "現在",
1692
+ "resets_in_days": "{days}日 {hours}時間後にリセット",
1693
+ "resets_in_hours": "{hours}時間 {minutes}分後にリセット",
1694
+ "resets_in_minutes": "{minutes}分 {seconds}秒後にリセット",
1695
+ "resets_in_placeholder": "リセットまで --",
1696
+ "status_rate_limited": "⚠ レート制限に達しました",
1697
+ "status_token_unavailable": "⚠ Token を利用できません",
1698
+ "status_api_offline": "⚠ API オフライン",
1699
+ "loading_phrases": "調整中|こねくり回し中|ひらめき待ち中|魔法を詠唱中|ピクセル磨き中|いい感じに混ぜ中|賢そうに考え中|裏でごそごそ中|結果を煮込み中|着々と進行中",
1700
+ "analyze": "分析",
1701
+ "cli": "ターミナル",
1702
+ "cli_enabled": "ターミナル ✓",
1703
+ "cli_disabled": "ターミナル",
1704
+ "statusline_action_failed": "CLI hook の操作に失敗しました",
1705
+ "unknown_sort_field": "不明なソート項目: {field}、利用可能: {valid}",
1706
+ "no_token_data": "Token使用データなし",
1707
+ "loading": "読み込み中...",
1708
+ "no_data": "データなし",
1709
+ "no_agent": "AI Agent未検出",
1710
+ "hook_not_installed": "ステータスラインが未設定です。実行してください: usage setup",
1711
+ "col_session_title": "作業内容",
1712
+ "detected": "検出: {agents}",
1713
+ "agent_not_found": "{name}未検出",
1714
+ "unknown_cmd": "不明なコマンド: {cmd}",
1715
+ "available_cmds": "利用可能なコマンド: dashboard, daily, weekly, monthly, sessions, report, claude, codex, setup, unsetup, --version",
1716
+ "sort_time": "時間",
1717
+ "sort_token": "Token",
1718
+ "sort_cost": "コスト",
1719
+ "sort_messages": "メッセージ数",
1720
+ "session_title": "セッション({limit}) [dim](s)ソート:[/dim] {label}{arrow} [dim](r)反転 (+/-)件数[/dim]",
1721
+ "reset_at": "{time} にリセット",
1722
+ "rate_per_day": "速度: {rate}/日",
1723
+ "cost_label": "コスト",
1724
+ "daily_avg": "日平均: {cost}",
1725
+ "msg_session": "メッセージ {msgs}件 セッション: {sessions}",
1726
+ "tab_help_compact": " ←→ jk eエクスポート q/ESC終了",
1727
+ "tab_help": " ← → 切替 ↑ ↓ スクロール e レポート出力 q / ESC 終了",
1728
+ "history_overview": "履歴概要",
1729
+ "cost_colon": "コスト: ",
1730
+ "sessions_colon": "セッション: ",
1731
+ "messages_colon": "メッセージ: ",
1732
+ "days_colon": "日数: ",
1733
+ "month_overview": "今月の概要",
1734
+ "daily_avg_colon": "日平均: ",
1735
+ "recent_sessions": "最近のセッション",
1736
+ "col_time": "時間",
1737
+ "col_source": "ソース",
1738
+ "col_project": "プロジェクト",
1739
+ "col_model": "モデル",
1740
+ "col_total_tokens": "Token",
1741
+ "col_cost": "コスト",
1742
+ "col_messages": "メッセージ",
1743
+ "col_date": "日付",
1744
+ "col_sessions": "セッション",
1745
+ "col_week": "週",
1746
+ "total_row": "合計",
1747
+ "col_month": "月",
1748
+ "col_cache_create": "Cache作成",
1749
+ "col_cache_read": "Cache読み取り",
1750
+ "model_breakdown": "モデル分布",
1751
+ "col_ratio": "割合",
1752
+ "session_summary": "直近 {shown} / {total} 件のセッション",
1753
+ "col_duration": "所要時間",
1754
+ "daily_panel_title": "本日のデータパネル (P90)",
1755
+ "msg_unit": "{n}件",
1756
+ "session_msg": "セッション: {sessions} メッセージ: {msgs}",
1757
+ "rate_per_msg": "速度: {rate}/件",
1758
+ "week_token": "今週のToken {tokens}",
1759
+ "week_cost": "今週のコスト",
1760
+ "active_panel_title": "現在の5h&7dレート制限",
1761
+ "limit_5h": "5時間制限",
1762
+ "time_label": "時間",
1763
+ "time_elapsed": "経過 {elapsed}分 / 残り {h}時間{m:02d}分",
1764
+ "rate_per_min": "速度: {rate}/分",
1765
+ "model_label": "モデル: {model}",
1766
+ "msg_count": "メッセージ {n}件",
1767
+ "limit_7d": "7日間制限",
1768
+ "idle_panel_title": "レート制限",
1769
+ "report_active_days": "活動日",
1770
+ "report_agent": "ツール",
1771
+ "report_cost": "費用",
1772
+ "report_duration": "時間",
1773
+ "report_empty_models": "この期間のモデル使用量はありません",
1774
+ "report_empty_projects": "この期間のプロジェクト使用量はありません",
1775
+ "report_empty_daily": "この期間の日別使用量はありません",
1776
+ "report_empty_sessions": "この期間に表示できるセッションはありません",
1777
+ "report_footer": "usage · ローカル分析 · データは端末内に留まる",
1778
+ "report_generated": "生成日時",
1779
+ "report_kpi_active": "活動日",
1780
+ "report_kpi_cost": "使った費用",
1781
+ "report_kpi_messages": "メッセージ",
1782
+ "report_kpi_productivity": "メッセージあたり平均",
1783
+ "report_kpi_productivity_unit": "Token",
1784
+ "report_kpi_sessions": "セッション",
1785
+ "report_kpi_tokens": "使った Tokens",
1786
+ "report_messages": "メッセージ",
1787
+ "report_model": "モデル",
1788
+ "report_model_section": "主力モデル",
1789
+ "report_narrative": "この期間に {tokens} tokens を使い、{projects} 件のプロジェクトを横断しました。ピークは {peak_date}({peak_tokens}/日)。主力モデル:{top_model}。",
1790
+ "report_period": "期間",
1791
+ "report_project": "プロジェクト",
1792
+ "report_project_section": "プロジェクトのホットゾーン",
1793
+ "report_persona_active_hours": "アクティブな時間帯",
1794
+ "report_persona_caption": "{h1}{h2} の時間帯に AI との共同作業が最も多い傾向があります",
1795
+ "report_persona_caption_second": " と {h2}",
1796
+ "report_persona_empty": "この期間はまだ十分なデータがありません",
1797
+ "report_recent_titles_heading": "最近の作業",
1798
+ "report_persona_section": "利用習慣",
1799
+ "report_rank": "順位",
1800
+ "report_session_section": "使用量が大きい 5 セッション",
1801
+ "report_contribution_section": "52週の貢献ヒートマップ",
1802
+ "report_contribution_less": "少ない",
1803
+ "report_contribution_more": "多い",
1804
+ "report_contribution_current_streak": "現在の連続稼働",
1805
+ "report_contribution_longest_streak": "最長連続稼働",
1806
+ "report_contribution_busiest_day": "最も重い日",
1807
+ "report_contribution_days_unit": "日間",
1808
+ "report_contribution_cell_title": "{date} · {tokens} tokens",
1809
+ "report_contribution_mon": "Mon",
1810
+ "report_contribution_wed": "Wed",
1811
+ "report_contribution_fri": "Fri",
1812
+ "report_contribution_month_1": "1月",
1813
+ "report_contribution_month_2": "2月",
1814
+ "report_contribution_month_3": "3月",
1815
+ "report_contribution_month_4": "4月",
1816
+ "report_contribution_month_5": "5月",
1817
+ "report_contribution_month_6": "6月",
1818
+ "report_contribution_month_7": "7月",
1819
+ "report_contribution_month_8": "8月",
1820
+ "report_contribution_month_9": "9月",
1821
+ "report_contribution_month_10": "10月",
1822
+ "report_contribution_month_11": "11月",
1823
+ "report_contribution_month_12": "12月",
1824
+ "report_wrapped_section": "年間 Wrapped",
1825
+ "report_wrapped_year_badge": "{year} Wrapped",
1826
+ "report_wrapped_total_tokens": "年間 Tokens",
1827
+ "report_wrapped_total_cost": "年間コスト",
1828
+ "report_wrapped_active_days": "活動日数",
1829
+ "report_wrapped_longest_streak": "最長連続",
1830
+ "report_wrapped_top_model": "最も使ったモデル",
1831
+ "report_wrapped_top_project": "最も使ったプロジェクト",
1832
+ "report_wrapped_books_equivalent": "≈ {books} 冊分の文字量",
1833
+ "report_wrapped_beast_phoenix_title": "フェニックス戴冠",
1834
+ "report_wrapped_beast_phoenix_caption": "今年は Claude の火力がわずかに上回り、灰を空へ吹き返すような一年でした。",
1835
+ "report_wrapped_beast_dragon_title": "ドラゴン戴冠",
1836
+ "report_wrapped_beast_dragon_caption": "今年は Codex の火力がより強く、工事現場を完成まで焼き切るような一年でした。",
1837
+ "project_butler": "前回の続きから",
1838
+ "project_butler_tooltip": "新規セッションを開くと、前回の進捗を自動で AI に引き継ぎます。説明し直す必要はありません。",
1839
+ "terse_mode_menu": "トークン節約モード",
1840
+ "terse_mode_tooltip": "新規セッションを開くと、Claude に短めの返答を自動で求めて出力 token を節約します(Codex を導入済みならそちらにも適用されます)。コード、コマンド、パス、エラーメッセージは省略しません。その後もあなたが送る各メッセージで、簡潔さを保つよう軽く念押しされます。",
1841
+ "terse_reminder_instruction": "[簡潔モードは引き続き有効:この返信は簡潔に;コード、コマンド、パス、エラーメッセージは一字そのまま;セキュリティ警告と不可逆操作の確認は引き続き完全に記述すること。]",
1842
+ "terse_mode_instruction": "(この会話では「簡潔モード」が有効です。最初の返信の冒頭でこのことに触れてください——すでに他の挨拶(進捗の引き継ぎなど)を述べる予定がある場合は、「簡潔モードが有効」であることをその挨拶に自然に組み込み、別の行を追加しないでください。組み込める挨拶がない場合は、自分で一行「🐾 簡潔モードが有効になりました。返答は短くしていきます!」と述べてください。今この瞬間から会話が終わるまで、すべての返信でこのルールを守ってください——会話が長くなったり話題が増えたりしても、薄れたり通常の口調に戻ったりしないこと。体言止めや断片的な言い方でも構わないので、無理に完全な文にしないでください。前置き、丁寧すぎる言い回し、重複した表現、不必要なつなぎ文を省き、短文や箇条書きで済むなら長い段落に広げないでください。言葉は短い方を選んでください(例:「修正」であって「この問題に対する解決策を実装する」ではない)。装飾的な表や絵文字、ツール呼び出しの実況も不要です。独自の省略語は作らないでください(例:「設定」を「設」に略すなど)——トークナイザー上は完全な語と同じ長さになり、何も節約にならず読み手が余計に解読する手間が増えるだけなので、完全な語のままの方が得です。コード、コマンド、ファイルパス、エラーメッセージは一文字たりとも省略・書き換えしないこと。セキュリティ警告、不可逆操作の確認、接続詞を省くと誤読の恐れがある複数手順の説明では、簡潔さより先に完全な文で明確に伝え、伝え終えたら簡潔モードに戻ってください。ユーザーが明確に詳しい解説や段階的な説明を求めた場合、または状況的に十分な推論が必要な場合は、その要求を優先し、このモードのために重要な情報を落とさないでください。)",
1843
+ "terse_mode_enabled_msg": "有効化しました。今後、新しい Claude Code セッションでは返答をより簡潔にするよう自動で求めます(Codex を導入済みならそちらにも適用されます)。コード、コマンド、パス、エラーメッセージは省略しません。次回セッション開始時に反映されます。",
1844
+ "terse_mode_disabled_msg": "無効化しました。新規セッションで簡潔な返答を自動要求しなくなります。",
1845
+ "resume_enabled_restart": "有効化しました。今後、新しい Claude Code セッションを開くと、このプロジェクトで前回どこまで進めたかを自動的に把握します。画面に通知は出ません(正常です)が、Claude は把握しています。次回セッション開始時に反映されます。",
1846
+ "resume_disabled_msg": "無効化しました。新規セッションで前回の進捗を自動で読み込まなくなります。",
1847
+ "resume_action_failed": "操作に失敗しました",
1848
+ "report_rw_none": "(記録なし)",
1849
+ "report_rw_inject_lead": "(これは進捗の引き継ぎです。最初の返信の冒頭で、まず一行「🐾 前回の続きを引き継ぎました!そのまま続けましょう!」と述べ、下記の手がかりをそのまま読み上げるのではなく、賢く気の利いた相棒のように消化してください:まずユーザーが最後に実際に取り組んでいたことを見極め(「最近の作業」は新しい順なので、先頭の項目を信頼し、古いものに引きずられないこと)、前回どこまで進んだか・何が完了したかを一、二文で温かく具体的に振り返り、次に取るべき具体的な一歩を提示してください——具体的に述べ、「何をしますか」と聞き返さないこと。下記にある情報だけを使い、無いことは創作しないこと。手がかりが乏しくて判断できない場合は正直にそう述べ、見えるスレッドを挙げて選んでもらうこと。その後、通常どおり応答してください。)\n\n",
1850
+ "report_rw_empty": "(このセッションの最初の返信の冒頭に、一行「🐾 おかえりなさい!このプロジェクトはまだ引き継ぐ進捗がありません。」と述べてから、通常どおり応答してください。)",
1851
+ "report_rw_prompt": "プロジェクト:{project}(最終アクティブ {when})\n最近の作業(新しい順):{last_request}\n完了した進捗:{commits}\n未完了のToDo:{todos}",
1852
+ "report_rw_uncommitted": "前回の終了時に未コミット:{branch} ブランチに変更済み未コミットのファイルが {count} 件({files})",
1853
+ "report_rw_diagnosis_reminder": "健診メモ: 直近では約 {waste_pct}% の無駄が{cause}から出ています。「直して」と言ってもらえれば、{path} の完全な診断を読んで対応します。",
1854
+ "report_rw_diagnosis_reminder_explain": "健診メモ: 直近では約 {waste_pct}% の無駄が{cause}から出ています。「見せて」と言ってもらえれば、{path} の完全な診断を読み解いて説明と対策をお伝えします。",
1855
+ "report_rw_diagnosis_cause_default": "避けられるコンテキスト浪費",
1856
+ "report_rw_diagnosis_cause_repeated_reads": "同じファイル群の読み直し",
1857
+ "report_rw_diagnosis_cause_polluter_dirs": "生成物/依存ディレクトリまで読んでいること",
1858
+ "report_rw_diagnosis_cause_anomaly_session": "単一セッションの異常な肥大化",
1859
+ "report_rw_diagnosis_cause_noisy_bash": "Bash 出力が大きすぎること",
1860
+ "report_rw_diagnosis_cause_repeated_bash": "同じ Bash コマンドの繰り返し実行",
1861
+ "report_sessions": "セッション",
1862
+ "report_share": "割合",
1863
+ "report_share_button_label": "共有",
1864
+ "report_share_close": "閉じる",
1865
+ "report_share_copied": "クリップボードにコピーしました ✓",
1866
+ "report_share_download_csv": ".csv で保存",
1867
+ "report_share_download_html": ".html を保存",
1868
+ "report_share_download_png": ".png を保存",
1869
+ "report_share_file_hint": "AirDrop / Mail / Slack / メッセージで送れます。スマホ・PC どちらも閲覧可",
1870
+ "report_share_file_mask_toggle": "プロジェクト名を隠す",
1871
+ "report_share_file_title": "コピーを共有",
1872
+ "report_share_modal_title": "レポートを共有",
1873
+ "report_share_path_copied": "パスをコピーしました ✓",
1874
+ "report_start_time": "開始時刻",
1875
+ "report_title": "AI 使用量の振り返り",
1876
+ "report_insights_section": "インサイト",
1877
+ "report_insights_quiet": "今期は安定したペースで、特筆すべき異常はありません。",
1878
+ "report_insights_change_up": "今期は {tokens} tokens、{cost_usd} を使い、前期より {pct}% 増えています。",
1879
+ "report_insights_spike_v2": "最も重い 1 日は {date} で、{tokens} tokens、通常日の {mean_multiplier:.2f} 倍です。",
1880
+ "report_insights_shift_new_project": "{project} は今期新しく出てきたプロジェクトで、すでに使用量の {pct:.1f}% です。",
1881
+ "report_insights_shift_model_up": "{model} の比率は前期 {prev_pct:.1f}% から {pct:.1f}% に上がり、主に {project} で使われています。",
1882
+ "report_insights_shift_model_up_plain": "{model} の比率は前期 {prev_pct:.1f}% から {pct:.1f}% に上がりました。",
1883
+ "report_insights_action_watch_quota": "今期の使用量は前期から大きく増えています。クォータの残量を確認しておきましょう。",
1884
+ "report_insights_action_spike_share": "{date} の 1 日だけで今期の {share}% を使っています。",
1885
+ "report_tokens": "Tokens",
1886
+ "report_trend_compare_down": "今週は先週より {pct}% 少なくなりました。",
1887
+ "report_trend_compare_first": "これはこの期間の最初の週のデータです。",
1888
+ "report_trend_compare_flat": "今週は先週とほぼ同じです。",
1889
+ "report_trend_compare_new": "今週は先週になかった新しい使用量です。",
1890
+ "report_trend_compare_up": "今週は先週の {ratio} 倍です。",
1891
+ "report_trend_marker_new": "new",
1892
+ "report_trend_section": "週次バーン推移",
1893
+ "report_chart_other": "その他",
1894
+ "report_sub_empty": "ローカルにサブスク情報が見つかりません",
1895
+ "report_tools_section": "あなたのツール",
1896
+ "report_sub_since": "登録日",
1897
+ "report_sponsor": "No cloud. No tracking. Just yours.",
1898
+ "report_unknown": "不明",
1899
+ "report_version": "バージョン",
1900
+ "setup_hook_source_missing": "❌ hook の元ファイルが見つかりません。tried: {tried}",
1901
+ "setup_resume_source_missing": "❌ resume hook の元ファイルが見つかりません。tried: {tried}",
1902
+ "setup_terse_source_missing": "❌ terse mode hook の元ファイルが見つかりません。tried: {tried}",
1903
+ "setup_resume_enabled": "✅ 新規セッションで前回の進捗の自動読み込みを有効化しました:{path}",
1904
+ "setup_resume_disabled": "新規セッションでの前回の進捗の自動読み込みを無効化しました",
1905
+ "setup_forwarder_source_missing": "❌ forwarder の元ファイルが見つかりません。tried: {tried}",
1906
+ "setup_windows_python_missing": "❌ 使用可能な Python インタープリターが見つかりません。Python 3 をインストールし、PATH に python または py があることを確認してから usage setup を再実行してください。",
1907
+ "setup_windows_non_ascii_command_path": "❌ Windows では非 ASCII パスを含む hook コマンドを安全に設定できません: {path}。Claude の設定と hook を ASCII 文字のみのパスに移動し、usage setup を再実行してください。",
1908
+ "setup_legacy_file_remove_failed": "⚠ 旧ファイル {path} を削除できません: {error}",
1909
+ "setup_legacy_settings_not_object": "⚠ {path} は JSON object ではないため、migration をスキップします",
1910
+ "setup_legacy_settings_read_failed": "⚠ migration 用の旧設定を読み取れません: {error}",
1911
+ "setup_legacy_statusline_cleanup_failed": "⚠ 旧 statusLine をクリーンアップできません: {error}",
1912
+ "setup_legacy_backup_migrate_failed": "⚠ 旧バックアップ key を移行できません: {error}",
1913
+ "setup_legacy_settings_write_failed": "⚠ migration 後の設定を書き戻せません: {error}",
1914
+ "setup_legacy_migrated": "ℹ v0.1.x ({name}) から usage へ自動 migration しました",
1915
+ "setup_settings_read_failed": "❌ {path} を読み取れません: {error}",
1916
+ "setup_settings_not_object": "❌ {path} は JSON object である必要があります",
1917
+ "setup_statusline_backed_up": "ℹ 既存の statusLine を settings.{backup_key}.{prev_key} にバックアップしました",
1918
+ "setup_codex_already_configured": "ℹ Codex status_line はすでに usage 設定です。スキップします",
1919
+ "setup_codex_configured": "✓ Codex status_line を設定しました",
1920
+ "setup_codex_backup_written": "ℹ 以前の設定をバックアップしました: {path}",
1921
+ "setup_codex_restart_required": "ℹ Codex を一度再起動してください",
1922
+ "setup_codex_restored": "✓ Codex status_line を復元しました",
1923
+ "setup_codex_removed": "✓ Codex status_line を削除しました",
1924
+ "setup_codex_config_unreadable": "⚠ ~/.codex/config.toml を読み込めませんでした。Codex の設定をスキップします",
1925
+ "setup_codex_unsetup_foreign": "⚠ Codex status_line は usage が設定したものではないため、変更せずに残しました",
1926
+ "setup_codex_backup_invalid": "⚠ Codex のバックアップを読み取れないため、現在の設定とバックアップを保持しました",
1927
+ "terse_codex_hooks_unreadable": "⚠ ~/.codex/hooks.json を解析できないため、既存設定の上書きを避けて変更を中止しました",
1928
+ "setup_no_agents": "❌ Claude Code または Codex が見つかりません。先にどちらかをインストールして実行してください",
1929
+ "setup_forwarder_installed": "✓ forwarder をインストールしました: {path}",
1930
+ "setup_hook_installed": "✓ hook をインストールしました: {path}",
1931
+ "setup_settings_updated": "✓ settings を更新しました: {path}",
1932
+ "setup_claude_restart_required": "ℹ Claude Code を一度再起動してください(settings の再読み込みと statusLine の更新が自動で行われます)",
1933
+ "setup_statusline_already_usage": "ℹ statusLine はすでに usage hook です。settings は変更していません",
1934
+ "setup_claude_statusline_restored": "✓ 以前の statusLine を復元しました",
1935
+ "setup_claude_statusline_removed": "✓ usage statusLine を削除しました",
1936
+ "setup_statusline_not_usage": "ℹ statusLine は usage がインストールしたものではありません。settings は変更していません",
1937
+ "setup_hook_deleted": "✓ hook を削除しました: {path}",
1938
+ "setup_status_file_deleted": "✓ 状態ファイルを削除しました: {path}",
1939
+ "wintray_unavailable": "Windows のシステムトレイ画面は未インストールです。ターミナル TUI に切り替えます。",
1940
+ "wintray_already_running": "usage は既に実行中です。トレイの usage アイコンをクリックしてパネルを開いてください。"
1941
+ },
1942
+ "ko": {
1943
+ "panel_default_name": "기본",
1944
+ "panel_load_error": "패널을 불러오지 못했습니다. 제보해 주세요:",
1945
+ "panel_matrix": "매트릭스",
1946
+ "panel_win95": "윈도우 95",
1947
+ "panel_newspaper": "복고 신문",
1948
+ "panel_cloud_observation": "구름 관측",
1949
+ "panel_aquarium": "한밤의 수족관",
1950
+ "panel_prism_arcade": "프리즘 아케이드",
1951
+ "panel_stained_glass": "스테인드글라스",
1952
+ "panel_origami": "종이접기",
1953
+ "panel_catppuccin": "Catppuccin",
1954
+ "panel_black_hole": "블랙홀",
1955
+ "panel_lepidoptera": "나비 도감",
1956
+ "panel_world_cup": "월드컵 2026",
1957
+ "panel_talent_market": "AI 인재 마켓",
1958
+ "panel_ai_daily": "AI 업데이트 일보",
1959
+ "discussion_window_title": "AI 원탁 토론",
1960
+ "discussion_topic_label": "토론 주제",
1961
+ "discussion_topic_placeholder": "여러 AI가 함께 논의할 질문을 입력…",
1962
+ "discussion_participants": "참가자",
1963
+ "discussion_participant_claude": "Claude",
1964
+ "discussion_participant_codex": "Codex",
1965
+ "discussion_participant_agy": "Antigravity",
1966
+ "discussion_available": "사용 가능",
1967
+ "discussion_not_detected": "감지되지 않음",
1968
+ "discussion_moderator": "진행자",
1969
+ "discussion_moderator_current": "현재 진행자",
1970
+ "discussion_moderator_set": "진행자로 설정",
1971
+ "discussion_detect": "AI 다시 감지",
1972
+ "discussion_detecting": "AI 감지 중…",
1973
+ "discussion_detect_unavailable": "현재 사용할 수 없는 AI가 {count}개 있습니다",
1974
+ "discussion_section_participants": "참가자와 진행자",
1975
+ "discussion_section_settings": "토론 설정",
1976
+ "discussion_section_start": "예상 사용량과 시작",
1977
+ "discussion_working_directory": "작업 폴더",
1978
+ "discussion_pick_folder": "폴더 선택",
1979
+ "discussion_clear_folder": "지우기",
1980
+ "discussion_attach_image": "이미지 첨부",
1981
+ "discussion_attachment_remove": "첨부 제거",
1982
+ "discussion_paste_no_image": "클립보드에 이미지가 없습니다",
1983
+ "discussion_drop_not_image": "{name}은(는) 이미지가 아니어서 건너뛰었습니다",
1984
+ "discussion_drop_too_large": "{name}이(가) 20 MB를 초과하여 추가하지 못했습니다",
1985
+ "discussion_drop_failed": "이미지를 읽지 못했습니다",
1986
+ "discussion_prompt_attachment_header": "먼저 아래 이미지 파일을 읽고, 화면 내용에 따라 답변해 주세요:",
1987
+ "discussion_working_directory_none": "지정하지 않음(프로젝트를 읽지 않음)",
1988
+ "discussion_working_directory_warning": "작업 폴더가 선택되었습니다. AI는 토론을 위해 내용을 읽을 수 있지만 파일을 수정하지 않습니다. 폴더의 AI 설정 파일이 적용될 수 있습니다.",
1989
+ "discussion_estimate": "{participants}명 × {rounds}라운드 + {summary}회 요약 = 최대 {calls}회 CLI 호출",
1990
+ "discussion_estimate_tokens": "최대 약 {tokens} 토큰",
1991
+ "discussion_estimate_warning": "2 라운드의 약 {multiplier}배",
1992
+ "discussion_expand_settings": "설정 표시",
1993
+ "discussion_collapse_settings": "설정 숨기기",
1994
+ "discussion_total_rounds": "라운드 수",
1995
+ "discussion_include_summary": "요약 생성",
1996
+ "discussion_end_on_consensus": "합의에 도달하면 조기 종료",
1997
+ "discussion_guidance_between_rounds": "라운드 사이에 내용 보충",
1998
+ "discussion_guidance_placeholder": "다음 라운드에 보충하거나 안내할 내용 입력(선택)",
1999
+ "discussion_guidance_continue": "토론 계속",
2000
+ "discussion_guidance_skip": "건너뛰기",
2001
+ "discussion_guidance_waiting": "보충 또는 안내를 기다리는 중",
2002
+ "discussion_model": "모델",
2003
+ "discussion_model_default": "기본",
2004
+ "discussion_persona": "역할",
2005
+ "discussion_persona_neutral": "중립(역할 없음)",
2006
+ "discussion_persona_other": "기타",
2007
+ "discussion_debate_style": "토론 기조",
2008
+ "discussion_debate_style_constructive": "건설적 합의 찾기",
2009
+ "discussion_debate_style_adversarial": "대립적 비판",
2010
+ "discussion_debate_style_collaborative": "협업적 보완",
2011
+ "discussion_debate_style_socratic": "근본 가정 질문",
2012
+ "discussion_debate_style_devils_advocate": "악마의 대변인",
2013
+ "discussion_debate_style_constructive_hint": "AI들이 먼저 공통점을 찾고, 남은 차이를 실행 가능한 결론으로 좁혀 갑니다.",
2014
+ "discussion_debate_style_adversarial_hint": "AI들이 허점, 모순, 근거가 약한 논리를 우선 찾습니다.",
2015
+ "discussion_debate_style_collaborative_hint": "AI들이 서로의 생각을 이어 받아 빠진 부분을 채우고 답을 함께 다듬습니다.",
2016
+ "discussion_debate_style_socratic_hint": "AI들이 이유와 전제를 계속 물으며 답에 숨어 있는 가정을 드러냅니다.",
2017
+ "discussion_debate_style_devils_advocate_hint": "AI들이 일부러 반대편에 서서 그럴듯한 결론이 반론을 견디는지 시험합니다.",
2018
+ "discussion_start": "토론 시작",
2019
+ "discussion_start_hint_topic": "먼저 토론 주제를 입력하세요",
2020
+ "discussion_start_hint_participants": "참여자를 한 명 이상 선택하세요",
2021
+ "discussion_start_hint_running": "토론 진행 중",
2022
+ "discussion_stop": "중지",
2023
+ "discussion_clear": "토론 지우기",
2024
+ "discussion_clear_confirm": "한 번 더 눌러 지우기",
2025
+ "discussion_clear_busy": "토론이 진행 중입니다. 먼저 중지하세요",
2026
+ "discussion_history": "토론 기록",
2027
+ "discussion_history_step1": "1 토론 주제 입력",
2028
+ "discussion_history_step2": "2 참가자와 라운드 수 선택",
2029
+ "discussion_history_step3": "3 토론 시작",
2030
+ "discussion_progress_round": "{round}/{total}라운드 · {participants} {status}",
2031
+ "discussion_progress_summary": "요약 생성 중 · {moderator}",
2032
+ "discussion_summary": "진행자 요약",
2033
+ "discussion_summary_waiting": "토론이 완료되면 진행자의 4단 요약이 여기에 표시됩니다.",
2034
+ "discussion_summary_empty": "아직 요약이 없습니다.",
2035
+ "discussion_copy": "복사",
2036
+ "discussion_copy_failed": "요약을 복사할 수 없습니다",
2037
+ "discussion_copied": "복사됨",
2038
+ "discussion_round": "제 {round}라운드",
2039
+ "discussion_queued": "대기 중",
2040
+ "discussion_thinking": "생각 중…",
2041
+ "discussion_turn_pending": "보류 중",
2042
+ "discussion_turn_running": "실행 중",
2043
+ "discussion_turn_done": "완료",
2044
+ "discussion_turn_failed": "실패",
2045
+ "discussion_turn_cancelled": "취소됨",
2046
+ "discussion_consensus": "합의",
2047
+ "discussion_consensus_count_summary": "참여자 {total}명: 동의 {agree}, 반대 {disagree}, 대안 {alternative}, 명확한 입장 없음 {unparsed}",
2048
+ "discussion_consensus_stance_agree": "동의",
2049
+ "discussion_consensus_stance_disagree": "반대",
2050
+ "discussion_consensus_stance_alternative": "대안 제시",
2051
+ "discussion_consensus_stance_unparsed": "이 답변은 입장을 분명히 밝히지 않았습니다",
2052
+ "discussion_consensus_early_exit": "{round}라운드에서 합의에 도달하여 조기 종료했습니다",
2053
+ "discussion_disagreement": "주요 이견",
2054
+ "discussion_recommendation": "권장안",
2055
+ "discussion_risks": "리스크와 불확실성",
2056
+ "discussion_status_idle": "시작 전",
2057
+ "discussion_status_preparing": "준비 중",
2058
+ "discussion_status_round1_running": "1라운드 진행 중",
2059
+ "discussion_status_round2_running": "2라운드 진행 중",
2060
+ "discussion_status_summarizing": "진행자가 요약 중",
2061
+ "discussion_status_completed": "토론 완료",
2062
+ "discussion_status_cancelling": "중지 중",
2063
+ "discussion_status_cancelled": "취소됨",
2064
+ "discussion_status_failed": "토론 실패",
2065
+ "discussion_tokens": "토큰",
2066
+ "discussion_usage_total": "이번 토론 · {tokens}",
2067
+ "talent_subtitle": "상황에 맞는 팀을 골라 Claude Code에 바로 설치하세요.",
2068
+ "talent_search_placeholder": "팀 검색",
2069
+ "talent_no_results": "일치하는 팀을 찾을 수 없습니다",
2070
+ "switch_panel": "패널 전환",
2071
+ "talent_launch": "실행",
2072
+ "talent_back": "뒤로",
2073
+ "talent_restore": "복원",
2074
+ "talent_choose_folder": "폴더 선택",
2075
+ "talent_drifted": "드리프트",
2076
+ "talent_working": "처리 중…",
2077
+ "talent_empty": "인재 마켓 구성 요소가 설치되지 않았습니다",
2078
+ "talent_empty_hint": ".app을 다시 빌드하면 AI 인재 마켓이 포함됩니다",
2079
+ "launch_at_login": "로그인 시 시작",
2080
+ "reset_panel_position": "패널 위치 재설정",
2081
+ "hide_sections_menu": "섹션 숨기기",
2082
+ "quota_notifications_menu": "사용량 알림",
2083
+ "window_keeper_menu": "5시간 세션 자동 시작",
2084
+ "window_keeper_tooltip": "5시간 할당량이 리셋되면 각 도구에 아주 작은 메시지를 자동 전송합니다 (Claude는 Haiku, agy는 Gemini 3.5 Flash Low). 다음 5시간 카운트를 바로 시작합니다 (극소량의 할당량을 소모합니다).",
2085
+ "window_keeper_sleep_title": "🐾 5시간 세션 자동 시작이 켜졌어요",
2086
+ "window_keeper_sleep_body": "켜짐: 5시간 할당량이 리셋되면 각 도구에 아주 작은 메시지를 자동 전송합니다 (Claude는 Haiku, agy는 Gemini 3.5 Flash Low). 다음 5시간 카운트를 바로 시작합니다 (극소량의 할당량을 소모합니다).\n\nMac이 잠자기 중일 때는 일시 중지되고, 깨어나면 자동으로 이어집니다. 평소에는 신경 쓸 것이 없어요.\n\n자리를 비울 때도 돌리고 싶다면:\n1. 전원에 연결하고 덮개는 닫지 않기\n2. 시스템 설정 → 「잠자기」 검색 → 「디스플레이가 꺼져 있을 때 자동으로 잠자기 방지」 켜기\n3. 못 찾겠으면 Claude Code에게 「디스플레이가 꺼져 있을 때 자동으로 잠자기 방지 켜 줘」라고 말해 보세요",
2087
+ "window_keeper_sleep_body_windows": "켜짐: 5시간 할당량이 리셋되면 각 도구에 아주 작은 메시지를 자동 전송합니다 (Claude는 Haiku, agy는 Gemini 3.5 Flash Low). 다음 5시간 카운트를 바로 시작합니다 (극소량의 할당량을 소모합니다).\n\nPC가 절전 모드일 때는 일시 중지되고, 깨어나면 자동으로 이어집니다. 평소에는 신경 쓸 것이 없어요.\n\n자리를 비울 때도 돌리고 싶다면:\n1. 전원에 연결해 두기\n2. 설정 → 시스템 → 전원 및 배터리 → 화면 및 절전 → 「전원에 연결되어 있을 때 디바이스 절전 모드」를 「안 함」으로 설정\n3. 못 찾겠으면 Claude Code에게 「전원 연결 시 절전 모드 안 되게 해줘」라고 말해 보세요",
2088
+ "notif_warn_title": "🐾 거의 다 썼어요",
2089
+ "notif_warn_body": "{tool} {scope}을(를) {pct}% 사용했어요. 슬슬 마무리할까요?",
2090
+ "notif_depleted_title": "🐾 할당량을 다 썼어요",
2091
+ "notif_depleted_body": "{tool} {scope} 할당량이 바닥났어요. {reset} 후 돌아옵니다",
2092
+ "notif_restored_title": "🐾 할당량이 돌아왔어요",
2093
+ "notif_restored_body": "{tool} {scope} 이제 다시 사용할 수 있어요 🚀",
2094
+ "update_alert_title": "새 버전 {version} 사용 가능",
2095
+ "update_btn_download": "다운로드",
2096
+ "update_btn_later": "나중에",
2097
+ "update_btn_skip": "이 버전 건너뛰기",
2098
+ "update_no_new_version": "최신 버전입니다",
2099
+ "check_update": "업데이트 확인",
2100
+ "update_check_failed": "업데이트 확인 실패",
2101
+ "hook_installed_restart": "훅 설치가 완료되었습니다. Claude Code를 한 번 다시 시작하세요.",
2102
+ "hook_install_failed": "훅 설치에 실패했습니다",
2103
+ "hook_install_failed_default": "setup_hook.setup()가 실패를 반환했습니다",
2104
+ "repair_dialog_title": "상태 표시줄 설정 충돌",
2105
+ "repair_dialog_message": "다른 도구가 Claude Code 상태 표시줄을 사용 중입니다.\n공존 모드로 전환할까요? usage app과 다른 도구를 함께 실행할 수 있습니다.",
2106
+ "repair_dialog_repair": "지금 복구",
2107
+ "repair_dialog_skip": "나중에",
2108
+ "repair_dialog_never": "다시 묻지 않기",
2109
+ "alert_forwarder_title": "공존 모드를 활성화할까요?",
2110
+ "alert_forwarder_body": "다른 Claude Code 상태 표시줄 도구를 감지했습니다. 공존 모드에서는 usage가 포워더를 통해 기존 도구와 함께 실행됩니다.",
2111
+ "alert_forwarder_enable": "공존 모드 활성화",
2112
+ "alert_forwarder_keep": "현재 상태 유지",
2113
+ "data_stale_hint": "데이터가 대체 소스에서 왔습니다. 설정을 확인하세요.",
2114
+ "status_loading": "불러오는 중",
2115
+ "status_synced": "✓ 동기화됨",
2116
+ "status_no_data": "데이터 없음",
2117
+ "awaiting_rate_limits": "Claude Code에 메시지를 보내 할당량을 동기화하세요",
2118
+ "hook_broken_not_installed": "⚠ 상태 표시줄이 업데이트되지 않습니다. \"상태 표시줄 설정\"을 눌러 다시 설치하세요.",
2119
+ "hook_broken_restart": "⚠ 상태 표시줄 hook이 작동하지 않습니다. Claude Code를 한 번 다시 시작하세요.",
2120
+ "usage_status_missing": "⚠ 상태 파일을 찾을 수 없습니다. \"상태 표시줄 설정\"을 누른 뒤 Claude Code를 한 번 여세요.",
2121
+ "usage_status_missing_active": "⚠ 할당량 데이터는 터미널 상태 표시줄로만 동기화됩니다. 데스크톱 앱이나 헤드리스 세션에서는 동기화되지 않습니다. 터미널에서 Claude Code를 한 번 열어주세요.",
2122
+ "usage_status_no_quota": "⚠ 상태 파일에 아직 할당량 데이터가 없습니다. Claude Code가 statusLine을 한 번 더 새로 고칠 때까지 기다리세요.",
2123
+ "status_error": "오류 ({message})",
2124
+ "rate_text": "소비율: {value}",
2125
+ "status_text": "상태: {value}",
2126
+ "service_alert": "⚠ {tool} 서비스 이상: {status}",
2127
+ "service_degraded": "성능 저하",
2128
+ "service_partial_outage": "부분 장애",
2129
+ "service_major_outage": "대규모 장애",
2130
+ "today_text": "오늘: ${cost} ({tokens} tokens)",
2131
+ "yesterday_text": "어제: ${cost} ({tokens} tokens)",
2132
+ "percent_used": "{value}% 사용됨",
2133
+ "reset_in": "{time} 후 초기화",
2134
+ "reset_imminent": "곧 초기화",
2135
+ "burn_warning": "⚠ 지금 속도라면 {empty} 후 소진됩니다 (초기화까지 {reset})",
2136
+ "reset_placeholder": "초기화까지 --",
2137
+ "duration_days": "{days}일 {hours}시간",
2138
+ "duration_hours": "{hours}시간 {minutes}분",
2139
+ "duration_minutes": "{minutes}분",
2140
+ "group_idle": "유휴",
2141
+ "group_normal": "보통",
2142
+ "group_active": "활성",
2143
+ "group_heavy": "고부하",
2144
+ "claude_name": "Claude Code",
2145
+ "codex_name": "Codex",
2146
+ "codex_credits": "리셋 크레딧 · 잔액 {balance}",
2147
+ "codex_credits_unlimited": "리셋 크레딧 · 무제한",
2148
+ "agy_name": "Antigravity",
2149
+ "agy_quota_full": "할당량이 가득 찼습니다",
2150
+ "agy_stale_minutes": "약 {minutes}분 전",
2151
+ "agy_stale_hours": "약 {hours}시간 전",
2152
+ "agy_stale_tooltip": "캐시된 값을 표시하고 있습니다. 사용량은 공식 API에서 직접 가져오며 보통 몇 분마다 자동 업데이트됩니다. 예전 값이 보이는 건 최근 가져오기에 실패했기 때문입니다(대개 agy 미로그인 또는 네트워크 문제). 가져오기에 성공하면 자동으로 복구됩니다.",
2153
+ "codex_stale_minutes": "약 {minutes}분 전",
2154
+ "codex_stale_hours": "약 {hours}시간 전",
2155
+ "codex_stale_tooltip": "Claude는 실시간으로 보고하므로 정확합니다. Codex는 그렇지 않아 usage가 Codex가 로컬에 가끔 남기는 기록만 읽을 수 있고, 실제보다 조금 오래된 값일 수 있습니다. 우리는 이를 보완하려고 일부러 온라인 연결을 하지 않습니다(연결하면 token을 더 소비하게 됩니다)——터미널에서 Codex를 계속 실행하면 자동으로 업데이트됩니다.",
2156
+ "history_load_error_file": "사용 기록 파일을 읽을 수 없습니다",
2157
+ "history_load_error_parse": "사용 기록 형식에 문제가 있습니다",
2158
+ "history_load_error_unknown": "사용 기록을 일시적으로 불러올 수 없습니다",
2159
+ "history_load_error_tooltip": "마지막으로 정상적으로 불러온 데이터를 표시하고 있습니다. 문제가 해결되면 자동으로 복구됩니다.",
2160
+ "projects_title": "프로젝트 사용량",
2161
+ "project_range_1d": "오늘",
2162
+ "project_range_yesterday": "어제",
2163
+ "project_range_7d": "7일",
2164
+ "project_range_30d": "월",
2165
+ "project_range_all": "전체",
2166
+ "session_label": "세션",
2167
+ "weekly_label": "주간",
2168
+ "monthly_label": "월간",
2169
+ "projects_empty": "기록 없음",
2170
+ "refresh_now": "↻ 지금 새로고침",
2171
+ "analyze_usage": "리포트",
2172
+ "analysis_failed": "분석 보고서 생성 실패",
2173
+ "install_hook": "상태 표시줄 설정",
2174
+ "quit": "⏻ 종료",
2175
+ "usage_title": "사용량",
2176
+ "current_label": "현재",
2177
+ "resets_in_days": "{days}일 {hours}시간 후 재설정",
2178
+ "resets_in_hours": "{hours}시간 {minutes}분 후 재설정",
2179
+ "resets_in_minutes": "{minutes}분 {seconds}초 후 재설정",
2180
+ "resets_in_placeholder": "재설정까지 --",
2181
+ "status_rate_limited": "⚠ 속도 제한 도달",
2182
+ "status_token_unavailable": "⚠ Token 사용 불가",
2183
+ "status_api_offline": "⚠ API 오프라인",
2184
+ "loading_phrases": "조율 중|대충 천재인 척 중|마법 가루 뿌리는 중|픽셀 닦는 중|그럴듯하게 고민 중|뒤에서 분주한 척 중|결과를 푹 끓이는 중|영감 기다리는 중|코드와 협상 중|거의 다 된 척 중",
2185
+ "analyze": "분석",
2186
+ "cli": "터미널",
2187
+ "cli_enabled": "터미널 ✓",
2188
+ "cli_disabled": "터미널",
2189
+ "statusline_action_failed": "CLI hook 작업 실패",
2190
+ "unknown_sort_field": "알 수 없는 정렬 필드: {field}, 사용 가능: {valid}",
2191
+ "no_token_data": "Token 사용 데이터 없음",
2192
+ "loading": "로딩 중...",
2193
+ "no_data": "데이터 없음",
2194
+ "no_agent": "AI Agent 감지되지 않음",
2195
+ "hook_not_installed": "상태 표시줄이 설정되지 않았습니다. 실행하세요: usage setup",
2196
+ "col_session_title": "작업 내용",
2197
+ "detected": "감지됨: {agents}",
2198
+ "agent_not_found": "{name} 감지되지 않음",
2199
+ "unknown_cmd": "알 수 없는 명령: {cmd}",
2200
+ "available_cmds": "사용 가능한 명령: dashboard, daily, weekly, monthly, sessions, report, claude, codex, setup, unsetup, --version",
2201
+ "sort_time": "시간",
2202
+ "sort_token": "Token",
2203
+ "sort_cost": "비용",
2204
+ "sort_messages": "메시지 수",
2205
+ "session_title": "세션({limit}) [dim](s)정렬:[/dim] {label}{arrow} [dim](r)반전 (+/-)개수[/dim]",
2206
+ "reset_at": "{time}에 리셋",
2207
+ "rate_per_day": "속도: {rate}/일",
2208
+ "cost_label": "비용",
2209
+ "daily_avg": "일평균: {cost}",
2210
+ "msg_session": "메시지 {msgs}개 세션: {sessions}",
2211
+ "tab_help_compact": " ←→ jk e내보내기 q/ESC종료",
2212
+ "tab_help": " ← → 전환 ↑ ↓ 스크롤 e 리포트 내보내기 q / ESC 종료",
2213
+ "history_overview": "히스토리 개요",
2214
+ "cost_colon": "비용: ",
2215
+ "sessions_colon": "세션: ",
2216
+ "messages_colon": "메시지: ",
2217
+ "days_colon": "일수: ",
2218
+ "month_overview": "이번 달 개요",
2219
+ "daily_avg_colon": "일평균: ",
2220
+ "recent_sessions": "최근 세션",
2221
+ "col_time": "시간",
2222
+ "col_source": "소스",
2223
+ "col_project": "프로젝트",
2224
+ "col_model": "모델",
2225
+ "col_total_tokens": "Token",
2226
+ "col_cost": "비용",
2227
+ "col_messages": "메시지",
2228
+ "col_date": "날짜",
2229
+ "col_sessions": "세션",
2230
+ "col_week": "주",
2231
+ "total_row": "합계",
2232
+ "col_month": "월",
2233
+ "col_cache_create": "Cache 생성",
2234
+ "col_cache_read": "Cache 읽기",
2235
+ "model_breakdown": "모델 분포",
2236
+ "col_ratio": "비율",
2237
+ "session_summary": "최근 {shown} / {total}개 세션",
2238
+ "col_duration": "소요 시간",
2239
+ "daily_panel_title": "일간 데이터 패널 (P90)",
2240
+ "msg_unit": "{n}개",
2241
+ "session_msg": "세션: {sessions} 메시지: {msgs}",
2242
+ "rate_per_msg": "속도: {rate}/개",
2243
+ "week_token": "이번 주 Token {tokens}",
2244
+ "week_cost": "이번 주 비용",
2245
+ "active_panel_title": "현재 5h&7d 속도 제한",
2246
+ "limit_5h": "5시간 제한",
2247
+ "time_label": "시간",
2248
+ "time_elapsed": "경과 {elapsed}분 / 남음 {h}시간{m:02d}분",
2249
+ "rate_per_min": "속도: {rate}/분",
2250
+ "model_label": "모델: {model}",
2251
+ "msg_count": "메시지 {n}개",
2252
+ "limit_7d": "7일 제한",
2253
+ "idle_panel_title": "속도 제한",
2254
+ "report_active_days": "활동일",
2255
+ "report_agent": "도구",
2256
+ "report_cost": "비용",
2257
+ "report_duration": "소요 시간",
2258
+ "report_empty_models": "이 기간에는 모델 사용량이 없습니다",
2259
+ "report_empty_projects": "이 기간에는 프로젝트 사용량이 없습니다",
2260
+ "report_empty_daily": "이 기간에는 일별 사용량이 없습니다",
2261
+ "report_empty_sessions": "이 기간에는 표시할 세션이 없습니다",
2262
+ "report_footer": "usage · 로컬 분석 · 데이터는 기기에만",
2263
+ "report_generated": "생성 시간",
2264
+ "report_kpi_active": "활동일",
2265
+ "report_kpi_cost": "쓴 비용",
2266
+ "report_kpi_messages": "메시지",
2267
+ "report_kpi_productivity": "메시지당 평균",
2268
+ "report_kpi_productivity_unit": "Token",
2269
+ "report_kpi_sessions": "세션",
2270
+ "report_kpi_tokens": "쓴 Tokens",
2271
+ "report_messages": "메시지",
2272
+ "report_model": "모델",
2273
+ "report_model_section": "주력 모델",
2274
+ "report_narrative": "이 기간 동안 {tokens} tokens을 사용했고, {projects}개 프로젝트에 걸쳐 있습니다. 최고점은 {peak_date}({peak_tokens}/일). 주력 모델: {top_model}.",
2275
+ "report_period": "기간",
2276
+ "report_project": "프로젝트",
2277
+ "report_project_section": "프로젝트 핫존",
2278
+ "report_persona_active_hours": "활동 시간대",
2279
+ "report_persona_caption": "주로 {h1}{h2}에 AI와 협업합니다",
2280
+ "report_persona_caption_second": " 및 {h2}",
2281
+ "report_persona_empty": "이 기간에는 아직 충분한 데이터가 없습니다",
2282
+ "report_recent_titles_heading": "최근 작업",
2283
+ "report_persona_section": "사용 습관",
2284
+ "report_rank": "순위",
2285
+ "report_session_section": "가장 많이 쓴 세션 5개",
2286
+ "report_contribution_section": "52주 기여 히트맵",
2287
+ "report_contribution_less": "적음",
2288
+ "report_contribution_more": "많음",
2289
+ "report_contribution_current_streak": "현재 연속 활동",
2290
+ "report_contribution_longest_streak": "최장 연속 활동",
2291
+ "report_contribution_busiest_day": "가장 무거운 날",
2292
+ "report_contribution_days_unit": "일",
2293
+ "report_contribution_cell_title": "{date} · {tokens} tokens",
2294
+ "report_contribution_mon": "Mon",
2295
+ "report_contribution_wed": "Wed",
2296
+ "report_contribution_fri": "Fri",
2297
+ "report_contribution_month_1": "1월",
2298
+ "report_contribution_month_2": "2월",
2299
+ "report_contribution_month_3": "3월",
2300
+ "report_contribution_month_4": "4월",
2301
+ "report_contribution_month_5": "5월",
2302
+ "report_contribution_month_6": "6월",
2303
+ "report_contribution_month_7": "7월",
2304
+ "report_contribution_month_8": "8월",
2305
+ "report_contribution_month_9": "9월",
2306
+ "report_contribution_month_10": "10월",
2307
+ "report_contribution_month_11": "11월",
2308
+ "report_contribution_month_12": "12월",
2309
+ "report_wrapped_section": "연간 Wrapped",
2310
+ "report_wrapped_year_badge": "{year} Wrapped",
2311
+ "report_wrapped_total_tokens": "연간 Tokens",
2312
+ "report_wrapped_total_cost": "연간 비용",
2313
+ "report_wrapped_active_days": "활동일",
2314
+ "report_wrapped_longest_streak": "최장 연속",
2315
+ "report_wrapped_top_model": "가장 많이 쓴 모델",
2316
+ "report_wrapped_top_project": "가장 많이 쓴 프로젝트",
2317
+ "report_wrapped_books_equivalent": "≈ 책 {books}권 분량의 글자",
2318
+ "report_wrapped_beast_phoenix_title": "불사조 즉위",
2319
+ "report_wrapped_beast_phoenix_caption": "올해는 Claude 쪽 화력이 조금 더 컸고, 재를 한 번에 하늘로 날려 보내는 듯했습니다.",
2320
+ "report_wrapped_beast_dragon_title": "드래곤 즉위",
2321
+ "report_wrapped_beast_dragon_caption": "올해는 Codex 쪽 화력이 더 강했고, 공사판을 완공까지 밀어붙이는 용 같았습니다.",
2322
+ "project_butler": "이어하기",
2323
+ "project_butler_tooltip": "새 세션을 열 때 지난 진행 상황을 AI에게 자동으로 전달합니다. 처음부터 다시 설명할 필요 없어요.",
2324
+ "terse_mode_menu": "토큰 절약 모드",
2325
+ "terse_mode_tooltip": "새 세션을 열 때 Claude에게 더 짧게 답하도록 자동으로 요청해 출력 token을 아낍니다 (Codex가 설치되어 있으면 그쪽에도 적용됩니다). 코드, 명령어, 경로, 오류 메시지는 줄이지 않습니다. 이후 보내는 각 메시지에서도 간결함을 유지하도록 가볍게 다시 일러줍니다.",
2326
+ "terse_reminder_instruction": "[간결 모드 계속 적용 중: 이 답변은 짧게; 코드, 명령어, 경로, 오류 메시지는 한 글자 그대로; 보안 경고와 되돌릴 수 없는 작업 확인은 여전히 완전히 적을 것.]",
2327
+ "terse_mode_instruction": "(이 대화에는 '간결 모드'가 켜져 있습니다. 첫 답변 맨 앞에서 이 사실을 언급하세요 — 이미 다른 인사(예: 진행 상황 인수인계)를 할 예정이라면, '간결 모드가 켜졌다'는 내용을 그 인사에 자연스럽게 합쳐서 한 줄로 말하고 따로 추가하지 마세요. 합칠 인사가 없다면 직접 한 줄로 \"🐾 간결 모드를 켰어요. 답변을 짧게 이어갈게요!\"라고 말하세요. 지금부터 이 대화가 끝날 때까지 모든 답변에 이 규칙을 적용하세요 — 대화가 길어지거나 주제가 늘어나도 흐려지거나 원래 말투로 돌아가지 마세요. 완전한 문장으로 억지로 맞추지 말고 짧은 구나 단편적인 표현도 괜찮습니다. 빈말, 지나친 격식, 반복되는 서두, 불필요한 연결 문장은 덜어내고, 짧은 문장이나 목록으로 충분하면 긴 단락으로 늘이지 마세요. 단어는 짧은 쪽을 고르세요 (예: \"이 문제에 대한 해결책을 구현하다\" 대신 \"고치다\"). 장식용 표나 이모지, 도구 호출 중계는 넣지 마세요. 임의로 줄임말을 만들지 마세요 (예: \"설정\"을 \"설\"로 줄이는 식) — 토크나이저 상으로는 완전한 단어와 길이가 같아서 절약되는 게 없고 읽는 사람만 더 해석해야 하니, 완전한 단어를 쓰는 편이 더 낫습니다. 코드, 명령어, 파일 경로, 오류 메시지는 한 글자도 생략하거나 바꾸면 안 됩니다. 보안 경고, 되돌릴 수 없는 작업의 확인, 접속사를 생략하면 오독 위험이 있는 다단계 설명에서는 간결함보다 먼저 완전하고 명확하게 전달한 뒤, 전달이 끝나면 다시 간결 모드로 돌아가세요. 사용자가 자세한 설명이나 단계별 안내를 명확히 요청했거나, 상황상 충분한 추론이 꼭 필요하다면 그 요구를 우선하고, 이 모드 때문에 핵심 정보를 빼먹지 마세요.)",
2328
+ "terse_mode_enabled_msg": "활성화했습니다. 이제 새 Claude Code 세션에서는 더 간결하게 답하도록 자동으로 요청합니다 (Codex가 설치되어 있으면 그쪽에도 적용됩니다). 코드, 명령어, 경로, 오류 메시지는 줄이지 않습니다. 다음 세션 시작 시 적용됩니다.",
2329
+ "terse_mode_disabled_msg": "비활성화했습니다. 새 세션에서 더 이상 간결한 답변을 자동 요청하지 않습니다.",
2330
+ "resume_enabled_restart": "활성화했습니다. 이제 새 Claude Code 세션을 시작하면 이 프로젝트에서 지난번에 어디까지 했는지 자동으로 파악합니다. 화면에는 안내가 표시되지 않지만(정상입니다) Claude는 알고 있습니다. 다음 세션 시작 시 적용됩니다.",
2331
+ "resume_disabled_msg": "비활성화했습니다. 새 세션에서 더 이상 지난 진행 상황을 자동으로 불러오지 않습니다.",
2332
+ "resume_action_failed": "작업 실패",
2333
+ "report_rw_none": "(기록 없음)",
2334
+ "report_rw_inject_lead": "(이것은 진행 상황 인수인계입니다. 첫 답변 맨 앞에 먼저 한 줄 \"🐾 지난 작업을 불러왔어요! 이어서 가볼까요?\"라고 말한 뒤, 아래 단서를 그대로 읽지 말고 똑똑하고 사려 깊은 동료처럼 소화하세요: 먼저 사용자가 마지막에 실제로 무엇을 하고 있었는지 파악하고(\"최근 작업한 내용\"은 최신순이므로 맨 위 항목을 신뢰하고 오래된 것에 끌려가지 마세요), 지난번에 어디까지 했고 무엇을 완료했는지 한두 문장으로 따뜻하고 구체적으로 짚어 준 뒤, 이어서 취해야 할 구체적인 다음 단계 하나를 제시하세요 — 구체적으로 말하고 \"무엇을 할까요\"라고 되묻지 마세요. 아래 있는 내용만 사용하고 없는 것은 지어내지 마세요. 단서가 너무 적어 판단하기 어려우면 솔직히 그렇게 말하고 보이는 갈래들을 나열해 고르게 하세요. 그런 다음 평소대로 응답하세요.)\n\n",
2335
+ "report_rw_empty": "(이 세션의 첫 답변 맨 앞에 한 줄 \"🐾 돌아오셨네요! 이 프로젝트는 아직 이어갈 내용이 없어요.\"라고 말한 뒤 평소대로 응답하세요.)",
2336
+ "report_rw_prompt": "프로젝트: {project} (마지막 활동 {when})\n최근 작업한 내용 (최신순): {last_request}\n완료한 진행: {commits}\n미완료 할 일: {todos}",
2337
+ "report_rw_uncommitted": "지난번 종료 시 미커밋 파일: {branch} 브랜치에 {count}개 파일이 커밋되지 않은 채 남아 있었습니다 ({files})",
2338
+ "report_rw_diagnosis_reminder": "진단 알림: 최근 낭비 약 {waste_pct}%의 주된 원인은 {cause}입니다. \"고쳐줘\"라고 말하면 {path}의 전체 진단을 읽고 바로 처리할게요.",
2339
+ "report_rw_diagnosis_reminder_explain": "진단 알림: 최근 낭비 약 {waste_pct}%의 주된 원인은 {cause}입니다. \"보여줘\"라고 말하면 {path}의 전체 진단을 읽고 자세히 설명해 드릴게요.",
2340
+ "report_rw_diagnosis_cause_default": "피할 수 있는 컨텍스트 낭비",
2341
+ "report_rw_diagnosis_cause_repeated_reads": "같은 파일들을 반복해서 읽는 것",
2342
+ "report_rw_diagnosis_cause_polluter_dirs": "생성물/의존성 폴더까지 스캔하는 것",
2343
+ "report_rw_diagnosis_cause_anomaly_session": "한 세션이 비정상적으로 커진 것",
2344
+ "report_rw_diagnosis_cause_noisy_bash": "Bash 출력이 너무 큰 것",
2345
+ "report_rw_diagnosis_cause_repeated_bash": "같은 Bash 명령을 반복 실행하는 것",
2346
+ "report_sessions": "세션",
2347
+ "report_share": "비중",
2348
+ "report_share_button_label": "공유",
2349
+ "report_share_close": "닫기",
2350
+ "report_share_copied": "클립보드에 복사 완료 ✓",
2351
+ "report_share_download_csv": ".csv 저장",
2352
+ "report_share_download_html": ".html 저장",
2353
+ "report_share_download_png": ".png 저장",
2354
+ "report_share_file_hint": "AirDrop / Mail / Slack / 메시지로 보내세요. 모바일·PC 모두 가능",
2355
+ "report_share_file_mask_toggle": "프로젝트 이름 숨기기",
2356
+ "report_share_file_title": "사본 공유",
2357
+ "report_share_modal_title": "보고서 공유",
2358
+ "report_share_path_copied": "경로 복사 완료 ✓",
2359
+ "report_start_time": "시작 시간",
2360
+ "report_title": "AI 사용량 리캡",
2361
+ "report_insights_section": "인사이트",
2362
+ "report_insights_quiet": "이번 기간은 안정적인 페이스로, 특별히 짚을 이상은 없습니다.",
2363
+ "report_insights_change_up": "이번 기간은 {tokens} tokens, {cost_usd}를 썼고 지난 기간보다 {pct}% 늘었습니다.",
2364
+ "report_insights_spike_v2": "가장 무거운 하루는 {date}로, {tokens} tokens이며 보통 날의 {mean_multiplier:.2f}배입니다.",
2365
+ "report_insights_shift_new_project": "{project}는 이번 기간 새로 떠오른 프로젝트이고 이미 사용량의 {pct:.1f}%입니다.",
2366
+ "report_insights_shift_model_up": "{model} 비중이 지난 기간 {prev_pct:.1f}%에서 {pct:.1f}%로 올랐고, 주로 {project}에 쓰였습니다.",
2367
+ "report_insights_shift_model_up_plain": "{model} 비중이 지난 기간 {prev_pct:.1f}%에서 {pct:.1f}%로 올랐습니다.",
2368
+ "report_insights_action_watch_quota": "이번 기간 사용량이 지난 기간보다 크게 늘었습니다. 할당량 여유를 확인하세요.",
2369
+ "report_insights_action_spike_share": "{date} 하루가 이번 기간 사용량의 {share}%를 차지했습니다.",
2370
+ "report_tokens": "Tokens",
2371
+ "report_trend_compare_down": "이번 주는 지난주보다 {pct}% 적습니다.",
2372
+ "report_trend_compare_first": "이번 기간의 첫 주 데이터입니다.",
2373
+ "report_trend_compare_flat": "이번 주는 지난주와 거의 비슷합니다.",
2374
+ "report_trend_compare_new": "이번 주에는 지난주에 없던 사용량이 생겼습니다.",
2375
+ "report_trend_compare_up": "이번 주는 지난주의 {ratio}배입니다.",
2376
+ "report_trend_marker_new": "new",
2377
+ "report_trend_section": "주간 사용 추이",
2378
+ "report_chart_other": "기타",
2379
+ "report_sub_empty": "로컬 구독 정보를 찾을 수 없습니다",
2380
+ "report_tools_section": "내 도구",
2381
+ "report_sub_since": "구독 시작",
2382
+ "report_sponsor": "No cloud. No tracking. Just yours.",
2383
+ "report_unknown": "알 수 없음",
2384
+ "report_version": "버전",
2385
+ "setup_hook_source_missing": "❌ hook 원본 파일을 찾을 수 없습니다. tried: {tried}",
2386
+ "setup_resume_source_missing": "❌ resume hook 원본 파일을 찾을 수 없습니다. tried: {tried}",
2387
+ "setup_terse_source_missing": "❌ terse mode hook 원본 파일을 찾을 수 없습니다. tried: {tried}",
2388
+ "setup_resume_enabled": "✅ 새 세션에서 지난 진행 상황 자동 불러오기를 활성화했습니다: {path}",
2389
+ "setup_resume_disabled": "새 세션에서 지난 진행 상황 자동 불러오기를 비활성화했습니다",
2390
+ "setup_forwarder_source_missing": "❌ forwarder 원본 파일을 찾을 수 없습니다. tried: {tried}",
2391
+ "setup_windows_python_missing": "❌ 사용할 수 있는 Python 인터프리터를 찾을 수 없습니다. Python 3을 설치하고 PATH에 python 또는 py가 있는지 확인한 다음 usage setup을 다시 실행하세요.",
2392
+ "setup_windows_non_ascii_command_path": "❌ Windows에서는 비 ASCII 경로가 포함된 hook 명령을 안전하게 설정할 수 없습니다: {path}. Claude 설정과 hook을 ASCII 문자로만 이루어진 경로로 옮긴 다음 usage setup을 다시 실행하세요.",
2393
+ "setup_legacy_file_remove_failed": "⚠ 이전 파일 {path}을 삭제할 수 없습니다: {error}",
2394
+ "setup_legacy_settings_not_object": "⚠ {path}이 JSON object가 아니므로 마이그레이션을 건너뜁니다",
2395
+ "setup_legacy_settings_read_failed": "⚠ 마이그레이션을 위한 이전 설정을 읽을 수 없습니다: {error}",
2396
+ "setup_legacy_statusline_cleanup_failed": "⚠ 이전 statusLine을 정리할 수 없습니다: {error}",
2397
+ "setup_legacy_backup_migrate_failed": "⚠ 이전 백업 key를 이동할 수 없습니다: {error}",
2398
+ "setup_legacy_settings_write_failed": "⚠ 마이그레이션된 설정을 다시 쓸 수 없습니다: {error}",
2399
+ "setup_legacy_migrated": "ℹ v0.1.x ({name})에서 usage로 자동 마이그레이션했습니다",
2400
+ "setup_settings_read_failed": "❌ {path}을 읽을 수 없습니다: {error}",
2401
+ "setup_settings_not_object": "❌ {path}은 JSON object여야 합니다",
2402
+ "setup_statusline_backed_up": "ℹ 기존 statusLine을 settings.{backup_key}.{prev_key}에 백업했습니다",
2403
+ "setup_codex_already_configured": "ℹ Codex status_line은 이미 usage 설정입니다. 건너뜁니다",
2404
+ "setup_codex_configured": "✓ Codex status_line을 설정했습니다",
2405
+ "setup_codex_backup_written": "ℹ 이전 설정을 백업했습니다: {path}",
2406
+ "setup_codex_restart_required": "ℹ Codex를 한 번 다시 시작하세요",
2407
+ "setup_codex_restored": "✓ Codex status_line을 복원했습니다",
2408
+ "setup_codex_removed": "✓ Codex status_line을 제거했습니다",
2409
+ "setup_codex_config_unreadable": "⚠ ~/.codex/config.toml 을 읽을 수 없어 Codex 설정을 건너뜁니다",
2410
+ "setup_codex_unsetup_foreign": "⚠ Codex status_line은 usage가 설정한 것이 아니므로 그대로 유지했습니다",
2411
+ "setup_codex_backup_invalid": "⚠ Codex 백업을 읽을 수 없어 현재 설정과 백업을 유지했습니다",
2412
+ "terse_codex_hooks_unreadable": "⚠ ~/.codex/hooks.json을 해석할 수 없어 기존 설정 덮어쓰기를 피하기 위해 수정을 중단했습니다",
2413
+ "setup_no_agents": "❌ Claude Code 또는 Codex를 찾을 수 없습니다. 먼저 둘 중 하나를 설치하고 실행하세요.",
2414
+ "setup_forwarder_installed": "✓ forwarder 설치됨: {path}",
2415
+ "setup_hook_installed": "✓ hook 설치됨: {path}",
2416
+ "setup_settings_updated": "✓ settings 업데이트됨: {path}",
2417
+ "setup_claude_restart_required": "ℹ Claude Code를 한 번 다시 시작해 settings를 다시 읽고 statusLine을 새로 고치세요",
2418
+ "setup_statusline_already_usage": "ℹ statusLine은 이미 usage hook입니다. settings는 변경하지 않았습니다",
2419
+ "setup_claude_statusline_restored": "✓ 이전 statusLine을 복원했습니다",
2420
+ "setup_claude_statusline_removed": "✓ usage statusLine을 제거했습니다",
2421
+ "setup_statusline_not_usage": "ℹ statusLine은 usage가 설치한 것이 아닙니다. settings는 변경하지 않았습니다",
2422
+ "setup_hook_deleted": "✓ hook 삭제됨: {path}",
2423
+ "setup_status_file_deleted": "✓ 상태 파일 삭제됨: {path}",
2424
+ "wintray_unavailable": "Windows 시스템 트레이 화면이 설치되지 않아 터미널 TUI로 전환합니다.",
2425
+ "wintray_already_running": "usage가 이미 실행 중입니다. 트레이의 usage 아이콘을 클릭해 패널을 여세요."
2426
+ }
2427
+ }