forked from aqua5230/usage
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathi18n.json
More file actions
1667 lines (1667 loc) · 105 KB
/
Copy pathi18n.json
File metadata and controls
1667 lines (1667 loc) · 105 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"zh-TW": {
"panel_default_name": "預設",
"panel_load_error": "面板載入失敗,請回報這個問題:",
"panel_matrix": "駭客任務",
"panel_win95": "視窗 95",
"panel_newspaper": "復古報紙",
"panel_cloud_observation": "雲圖觀測",
"panel_aquarium": "午夜水族箱",
"panel_prism_arcade": "稜鏡街機",
"panel_black_hole": "黑洞視界",
"panel_lepidoptera": "蝶類圖鑑",
"panel_world_cup": "世界盃 2026",
"summon_critters": "召喚神獸",
"dismiss_critters": "收回神獸",
"switch_panel": "更換面板",
"launch_at_login": "開機自動啟動",
"hide_sections_menu": "隱藏區塊",
"quota_notifications_menu": "用量提醒通知",
"notif_warn_title": "🐾 快用完囉",
"notif_warn_body": "{tool} {scope} 已用 {pct}%,要收尾了嗎?",
"notif_depleted_title": "🐾 額度用完啦",
"notif_depleted_body": "{tool} {scope} 額度見底,{reset} 後恢復",
"notif_restored_title": "🐾 額度回來了",
"notif_restored_body": "{tool} {scope} 可以繼續衝了 🚀",
"update_alert_title": "發現新版 {version}",
"update_btn_download": "前往下載",
"update_btn_later": "稍後再說",
"update_btn_skip": "跳過此版本",
"update_no_new_version": "已是最新版本",
"update_check_failed": "檢查更新失敗",
"hook_installed_restart": "已安裝完成,請重開 Claude Code 一次",
"hook_install_failed": "安裝 hook 失敗",
"hook_install_failed_default": "setup_hook.setup() 回傳失敗",
"repair_dialog_title": "狀態列設定衝突",
"repair_dialog_message": "偵測到其他工具佔用了 Claude Code 狀態列。\n要切換成共存模式嗎?usage app 與其他工具可以同時運作。",
"repair_dialog_repair": "立即修復",
"repair_dialog_skip": "稍後再說",
"repair_dialog_never": "不要再問",
"alert_forwarder_title": "啟用共存模式?",
"alert_forwarder_body": "偵測到其他 Claude Code 狀態列工具。啟用共存模式後,usage 會透過轉發器與現有工具一起運作。",
"alert_forwarder_enable": "啟用共存模式",
"alert_forwarder_keep": "保留現狀",
"data_stale_hint": "資料來自備援來源,建議檢查設定",
"status_loading": "載入中",
"status_synced": "✓ 已同步",
"status_no_data": "無資料",
"awaiting_rate_limits": "請對 Claude Code 發送一句訊息以同步配額",
"hook_broken_not_installed": "⚠ 狀態列沒在更新,請執行 `python3 main.py --setup` 重新安裝",
"hook_broken_restart": "⚠ 狀態列沒在運作,請重開一次 Claude Code",
"usage_status_missing": "⚠ 找不到狀態檔,請執行 `python3 main.py --setup` 並打開一次 Claude Code",
"usage_status_no_quota": "⚠ 狀態檔尚無配額資料,等 Claude Code 再刷新一次 statusLine",
"status_error": "錯誤 ({message})",
"rate_text": "速率:{value}",
"status_text": "狀態:{value}",
"today_text": "今日:${cost} ({tokens} tokens)",
"percent_used": "{value}% 已用",
"reset_in": "重置 {time}",
"burn_warning": "⚠ 按目前速度 {empty} 就會用完(重置還要 {reset})",
"reset_placeholder": "重置 --",
"duration_days": "{days}天 {hours}小時",
"duration_hours": "{hours}小時 {minutes}分鐘",
"duration_minutes": "{minutes}分鐘",
"group_idle": "閒置",
"group_normal": "正常",
"group_active": "活躍",
"group_heavy": "高負載",
"claude_name": "Claude Code",
"codex_name": "Codex",
"codex_stale_minutes": "約 {minutes} 分鐘前",
"codex_stale_hours": "約 {hours} 小時前",
"codex_stale_tooltip": "Claude 有即時回報所以很準;Codex 沒有,usage 只能讀它本機偶爾留下的紀錄,可能比實際略舊。我們刻意不連網去補(連網會多燒你的 token)——繼續在終端機跑 Codex 就會自動更新。",
"history_load_error_file": "讀不到使用紀錄檔",
"history_load_error_parse": "使用紀錄格式異常",
"history_load_error_unknown": "使用紀錄暫時無法讀取",
"history_load_error_tooltip": "目前顯示的是上次成功讀到的資料,等問題排除後會自動恢復。",
"projects_title": "專案用量",
"project_range_1d": "今日",
"project_range_7d": "7 日",
"project_range_30d": "月",
"project_range_all": "全部",
"session_label": "Session",
"weekly_label": "本週",
"monthly_label": "本月",
"projects_empty": "無記錄",
"refresh_now": "↻ 立即更新",
"analyze_usage": "報告",
"analysis_failed": "分析報告產生失敗",
"install_hook": "設定狀態列",
"quit": "⏻ 結束",
"usage_title": "Usage",
"current_label": "目前",
"resets_in_days": "重置於 {days}天 {hours}小時後",
"resets_in_hours": "重置於 {hours}小時 {minutes}分鐘後",
"resets_in_minutes": "重置於 {minutes}分 {seconds}秒後",
"resets_in_placeholder": "重置於 --",
"status_rate_limited": "⚠ 已達速率限制",
"status_token_unavailable": "⚠ Token 無法使用",
"status_api_offline": "⚠ API 離線",
"loading_phrases": "處理中|解析中|檢視中|執行中|施展中|推演中|落實中|構思中|思考中|烘焙中|周旋中|高談中|輕點中|胡言亂語中|運算中|釀造中|鍛造中|忙碌中|計算中|成形中|解題中|動腦中|嬉戲中|重新編織中|引導中|生成中|反芻中|翻攪中|萌芽中|策劃中|Clauding 中|孵化中|搬運中|匯聚中|牧養中|搖擺中|沉思中|鳴叫中|剝殼中|折騰中|奔走中|慢燉中|計算中|發想中|揉合中|調製中|想像中|探勘中|召喚中|孕育中|旋轉中|斟酌中|推斷中|悶燒中|沉思中|律動中|摸索中|烹煮中|具現化中|綜合中|打造中|醃漬中|思索中|創造中|漫遊中|修補中|壓縮中|閒晃中|轉化中|解碼中|斟酌中|展開中|審議中|整備中|拆解中|判定中|冥想中|感受中|脫序中|塗鴉中|遊走中|占卜中|滲濾中|嗡鳴中|動手中|搖晃中|施法中|工作中|收束中",
"analyze": "分析",
"cli": "終端",
"cli_enabled": "終端 ✓",
"cli_disabled": "終端",
"statusline_action_failed": "CLI hook 操作失敗",
"unknown_sort_field": "未知排序字段: {field},可用: {valid}",
"no_token_data": "暂无 token 使用数据",
"loading": "加载数据...",
"no_data": "暂无数据",
"no_agent": "未检测到任何 AI Agent",
"hook_not_installed": "狀態列尚未設定。請執行:usage setup",
"detected": "检测到: {agents}",
"agent_not_found": "未检测到 {name}",
"unknown_cmd": "未知命令: {cmd}",
"available_cmds": "可用命令: dashboard, daily, weekly, monthly, sessions, report, claude, codex, setup, unsetup, --version",
"sort_time": "时间",
"sort_token": "Token",
"sort_cost": "等效成本",
"sort_messages": "消息数",
"session_title": "最近会话({limit}) [dim](s)排序:[/dim] {label}{arrow} [dim](r)反转 (+/-)条数[/dim]",
"reset_at": "重置于 {time}",
"rate_per_day": "速率: {rate}/天",
"cost_label": "等效成本",
"daily_avg": "日均: {cost}",
"msg_session": "消息 {msgs} 条 会话: {sessions}",
"tab_help_compact": " ←→ jk e导出 q/ESC退出",
"tab_help": " ← → 切换 ↑ ↓ 滚动 e 导出报告 q / ESC 退出",
"history_overview": "历史总览",
"cost_colon": "等效成本: ",
"sessions_colon": "会话: ",
"messages_colon": "消息: ",
"days_colon": "天数: ",
"month_overview": "本月概览",
"daily_avg_colon": "日均: ",
"recent_sessions": "最近十条会话",
"col_time": "时间",
"col_source": "来源",
"col_project": "项目",
"col_model": "模型",
"col_total_tokens": "总Token",
"col_cost": "等效成本",
"col_messages": "消息",
"col_date": "日期",
"col_sessions": "会话",
"col_week": "周",
"total_row": "合计",
"col_month": "月份",
"col_cache_create": "Cache创建",
"col_cache_read": "Cache读取",
"model_breakdown": "模型分布",
"col_ratio": "占比",
"session_summary": "最近 {shown} / {total} 个会话",
"col_duration": "时长",
"daily_panel_title": "当日数据面板 (P90)",
"msg_unit": "{n} 条",
"session_msg": "会话: {sessions} 消息: {msgs}",
"rate_per_msg": "速率: {rate}/条",
"week_token": "本周 Token {tokens}",
"week_cost": "本周成本",
"active_panel_title": "当前 5h&7d 数据面板",
"limit_5h": "5h 限额",
"time_label": "时间",
"time_elapsed": "已用 {elapsed}min / 剩余 {h}h{m:02d}m",
"rate_per_min": "速率: {rate}/min",
"model_label": "模型: {model}",
"msg_count": "消息 {n} 条",
"limit_7d": "7d 限额",
"idle_panel_title": "限额数据面板",
"codex_restored": "Codex status_line 已恢复原配置",
"codex_removed": "Codex status_line 已移除",
"report_active_days": "活躍天數",
"report_agent": "工具",
"report_agent_section": "工具用量 (Claude / Codex)",
"report_cost": "花費",
"report_duration": "時長",
"report_empty_models": "這段期間還沒有模型用量",
"report_empty_projects": "這段期間還沒有專案用量",
"report_empty_daily": "這段期間還沒有每日用量",
"report_empty_sessions": "這段期間還沒有可列出的會話",
"report_footer": "usage · 本機分析 · 資料不離本機",
"report_generated": "產生時間",
"report_kpi_active": "活躍日",
"report_kpi_cost": "燒掉成本",
"report_kpi_messages": "訊息",
"report_kpi_productivity": "平均每則訊息",
"report_kpi_productivity_unit": "Token",
"report_kpi_sessions": "會話",
"report_kpi_tokens": "燒掉 Tokens",
"report_messages": "訊息",
"report_model": "模型",
"report_model_section": "主力模型",
"report_narrative": "過去這段時間你燒了 {tokens} tokens、跨 {projects} 個專案。{peak_date} 是高峰({peak_tokens}/天),主力 LLM 是 {top_model}。",
"report_period": "區間",
"report_project": "專案",
"report_project_section": "專案熱區",
"report_persona_active_hours": "活躍時段",
"report_persona_caption": "你最常在 {h1}{h2} 與 AI 協作",
"report_persona_caption_second": " 和 {h2}",
"report_persona_empty": "這段期間還沒有足夠資料",
"report_persona_recent_titles": "最近在忙什麼",
"report_persona_section": "使用習慣",
"report_rank": "排名",
"report_session_section": "最燒的 5 段會話",
"report_ai_updates_section": "AI 工具更新速報",
"report_ai_updates_updated_to": "更新至",
"report_ai_updates_original": "原文",
"report_contribution_section": "52 週貢獻熱力圖",
"report_contribution_less": "少",
"report_contribution_more": "多",
"report_contribution_current_streak": "目前連續活躍",
"report_contribution_longest_streak": "最長連續活躍",
"report_contribution_busiest_day": "最忙的一天",
"report_contribution_days_unit": "天",
"report_contribution_cell_title": "{date} · {tokens} tokens",
"report_contribution_mon": "Mon",
"report_contribution_wed": "Wed",
"report_contribution_fri": "Fri",
"report_contribution_month_1": "1月",
"report_contribution_month_2": "2月",
"report_contribution_month_3": "3月",
"report_contribution_month_4": "4月",
"report_contribution_month_5": "5月",
"report_contribution_month_6": "6月",
"report_contribution_month_7": "7月",
"report_contribution_month_8": "8月",
"report_contribution_month_9": "9月",
"report_contribution_month_10": "10月",
"report_contribution_month_11": "11月",
"report_contribution_month_12": "12月",
"report_wrapped_section": "年度 Wrapped",
"report_wrapped_year_badge": "{year} Wrapped",
"report_wrapped_total_tokens": "全年總 Tokens",
"report_wrapped_total_cost": "全年總成本",
"report_wrapped_active_days": "活躍天數",
"report_wrapped_longest_streak": "最長連續",
"report_wrapped_top_model": "最常用模型",
"report_wrapped_top_project": "最常用專案",
"report_wrapped_books_equivalent": "≈ {books} 本書的字量",
"report_wrapped_beast_phoenix_title": "鳳凰加冕",
"report_wrapped_beast_phoenix_caption": "今年 Claude 的火力略勝一籌,像把灰燼一口氣吹回天空。",
"report_wrapped_beast_dragon_title": "巨龍加冕",
"report_wrapped_beast_dragon_caption": "今年 Codex 的火力更猛,像一條龍一路把工地燒到完工。",
"project_butler": "接著上次做",
"project_butler_tooltip": "開新對話時,自動把上次的進度交給 AI,不用再重講一次。",
"resume_enabled_restart": "已開啟。以後開新的 Claude Code 對話,會自動記得這個專案上次做到哪——畫面上不會有提示(這是正常的),但 Claude 已經知道。下次開新對話即生效。",
"resume_disabled_msg": "已關閉。開新對話時不再自動帶入上次進度。",
"resume_action_failed": "設定失敗",
"report_rw_none": "(未記錄)",
"report_rw_inject_lead": "(這是進度交接。請在這次對話第一則回覆的最前面,先說一行「🐾 已接回上次進度,繼續吧!」,然後別照唸下面的線索,而是像聰明又貼心的搭檔那樣消化它:先判斷使用者最後真正在忙的是什麼(「最近在忙的」是新到舊排列,以最前面那筆為準,別被較舊的帶偏),用一兩句溫暖具體地說他上次做到哪、完成了什麼,再直接給出你判斷最該接著做的下一步——要具體,別反問「要做什麼」。只能根據下面線索講,沒有的別編;若線索太少看不出方向,就坦白說、並列出你看到的幾條線讓他挑。接著正常回應。)\n\n",
"report_rw_empty": "(請在你這次對話的第一則回覆最前面,說一行「🐾 歡迎回來,這個專案目前沒有要接的進度。」,再正常回應。)",
"report_rw_prompt": "專案:{project}(最後活動 {when})\n最近在忙的(新→舊):{last_request}\n完成的進度:{commits}\n未完成待辦:{todos}",
"report_rw_uncommitted": "上次離開時還留著:{branch} 分支有 {count} 個檔案改了還沒提交({files})",
"report_rw_diagnosis_reminder": "健檢提醒:最近約 {waste_pct}% 浪費在{cause}。跟我說「修」,完整診斷在 {path}。",
"report_rw_diagnosis_reminder_explain": "健檢提醒:最近約 {waste_pct}% 浪費在{cause}。跟我說「看」,我會讀 {path} 的完整診斷,解釋給你聽並給具體建議。",
"report_rw_diagnosis_cause_default": "可避免的上下文浪費",
"report_rw_diagnosis_cause_repeated_reads": "重複讀同一批檔案",
"report_rw_diagnosis_cause_polluter_dirs": "掃進了產物/依賴資料夾",
"report_rw_diagnosis_cause_anomaly_session": "單一工作階段異常膨脹",
"report_rw_diagnosis_cause_noisy_bash": "Bash 輸出過大",
"report_rw_diagnosis_cause_repeated_bash": "重複跑同一個 Bash 指令",
"report_sessions": "會話",
"report_share": "占比",
"report_share_button_label": "分享",
"report_share_close": "關閉",
"report_share_copied": "已複製到剪貼簿 ✓",
"report_share_copy_path": "複製檔案路徑",
"report_share_download_csv": "另存一份 .csv",
"report_share_download_html": "另存一份 .html",
"report_share_file_hint": "可用 AirDrop / Mail / Slack / 訊息 傳給對方,手機電腦都能看",
"report_share_file_mask_toggle": "隱藏專案名稱",
"report_share_file_title": "傳給同事 / 主管",
"report_share_modal_title": "分享報告",
"report_share_path_copied": "路徑已複製 ✓",
"report_start_time": "開始時間",
"report_title": "你的 AI 用量回顧",
"report_insights_section": "洞察",
"report_insights_quiet": "這期跑得很平穩,沒什麼值得點名的異常。",
"report_insights_change_up": "本期燒了 {tokens} tokens、{cost_usd},比上期多 {pct}%。",
"report_insights_spike_v2": "最猛的一天是 {date},{tokens} tokens,是平日的 {mean_multiplier:.2f} 倍。",
"report_insights_shift_new_project": "{project} 是這期新冒出來的專案,已占 {pct:.1f}% 用量。",
"report_insights_shift_model_up": "{model} 的占比從上期 {prev_pct:.1f}% 升到 {pct:.1f}%,主要燒在 {project}。",
"report_insights_shift_model_up_plain": "{model} 的占比從上期 {prev_pct:.1f}% 升到 {pct:.1f}%。",
"report_insights_action_watch_quota": "本期用量比上期暴增,先盯一下配額水位。",
"report_insights_action_spike_share": "{date} 一天就燒掉本期 {share}% 的量。",
"report_tokens": "Tokens",
"report_trend_compare_down": "本週比上週少 {pct}%。",
"report_trend_compare_first": "這是本期第一週的數據。",
"report_trend_compare_flat": "本週跟上週差不多。",
"report_trend_compare_new": "本週是新出現的用量。",
"report_trend_compare_up": "本週是上週的 {ratio} 倍。",
"report_trend_marker_new": "new",
"report_trend_section": "每週燃燒趨勢",
"report_chart_other": "其他",
"report_sub_empty": "未偵測到本地訂閱資訊",
"report_sub_section": "你的訂閱",
"report_tools_section": "你的工具",
"report_sub_since": "訂閱起始",
"report_sponsor": "No cloud. No tracking. Just yours.",
"report_unknown": "未知",
"report_version": "版本",
"setup_hook_source_missing": "❌ 找不到 hook 原始檔,tried: {tried}",
"setup_resume_source_missing": "❌ 找不到 resume hook 原始檔,tried: {tried}",
"setup_resume_enabled": "✅ 已啟用新對話自動帶入上次進度:{path}",
"setup_resume_disabled": "已關閉新對話自動帶入上次進度",
"setup_forwarder_source_missing": "❌ 找不到 forwarder 原始檔,tried: {tried}",
"setup_legacy_file_remove_failed": "⚠ 無法移除舊檔 {path}: {error}",
"setup_legacy_settings_not_object": "⚠ {path} 不是 JSON object,略過 migration",
"setup_legacy_settings_read_failed": "⚠ 無法讀取舊設定做 migration: {error}",
"setup_legacy_statusline_cleanup_failed": "⚠ 無法清理舊 statusLine: {error}",
"setup_legacy_backup_migrate_failed": "⚠ 無法搬移舊備份 key: {error}",
"setup_legacy_settings_write_failed": "⚠ 無法寫回 migration 設定: {error}",
"setup_legacy_migrated": "ℹ 已從 v0.1.x ({name}) 自動 migrate 到 usage",
"setup_settings_read_failed": "❌ 無法讀取 {path}: {error}",
"setup_settings_not_object": "❌ {path} 必須是 JSON object",
"setup_statusline_backed_up": "ℹ 已備份原有 statusLine 到 settings.{backup_key}.{prev_key}",
"setup_codex_already_configured": "ℹ Codex status_line 已是 usage 設定,略過",
"setup_codex_configured": "✓ Codex status_line 已配置",
"setup_codex_backup_written": "ℹ 原配置已備份到: {path}",
"setup_codex_restart_required": "ℹ 請重新開啟 Codex 一次",
"setup_codex_restored": "✓ Codex status_line 已恢復原配置",
"setup_codex_removed": "✓ Codex status_line 已移除",
"setup_codex_config_unreadable": "⚠ 無法讀取 ~/.codex/config.toml,略過 Codex 設定",
"setup_no_agents": "❌ 找不到 Claude Code 或 Codex,請先安裝並執行其中之一",
"setup_forwarder_installed": "✓ forwarder 已安裝:{path}",
"setup_hook_installed": "✓ hook 已安裝:{path}",
"setup_settings_updated": "✓ settings 已更新:{path}",
"setup_claude_restart_required": "ℹ 請重新開啟 Claude Code 一次(讓它重新讀 settings 並刷新一次 statusLine)",
"setup_statusline_already_usage": "ℹ statusLine 已是 usage hook,settings 未動",
"setup_claude_statusline_restored": "✓ 已還原原有 statusLine",
"setup_claude_statusline_removed": "✓ 已移除 usage statusLine",
"setup_statusline_not_usage": "ℹ statusLine 不是 usage 安裝的,settings 未動",
"setup_hook_deleted": "✓ 已刪除 hook:{path}",
"setup_status_file_deleted": "✓ 已刪除狀態檔:{path}"
},
"en": {
"panel_default_name": "Default",
"panel_load_error": "Panel failed to load. Please report this:",
"panel_matrix": "Matrix",
"panel_win95": "Windows 95",
"panel_newspaper": "Vintage Newspaper",
"panel_cloud_observation": "Cloud Observation",
"panel_aquarium": "Midnight Aquarium",
"panel_prism_arcade": "Prism Arcade",
"panel_black_hole": "Black Hole",
"panel_lepidoptera": "Lepidoptera",
"panel_world_cup": "World Cup 2026",
"summon_critters": "Summon Spirits",
"dismiss_critters": "Dismiss Spirits",
"switch_panel": "Switch Panel",
"launch_at_login": "Launch at Login",
"hide_sections_menu": "Hide Sections",
"quota_notifications_menu": "Usage Alert Notifications",
"notif_warn_title": "🐾 Almost out",
"notif_warn_body": "{tool} {scope} is {pct}% used. Time to wrap up?",
"notif_depleted_title": "🐾 Quota is empty",
"notif_depleted_body": "{tool} {scope} quota is drained. Back after {reset}",
"notif_restored_title": "🐾 Quota is back",
"notif_restored_body": "{tool} {scope} is ready to go again 🚀",
"update_alert_title": "New Version {version} Available",
"update_btn_download": "Download",
"update_btn_later": "Later",
"update_btn_skip": "Skip This Version",
"update_no_new_version": "You are up to date",
"update_check_failed": "Update check failed",
"hook_installed_restart": "Hook installed. Restart Claude Code once.",
"hook_install_failed": "Hook installation failed",
"hook_install_failed_default": "setup_hook.setup() returned failure",
"repair_dialog_title": "Status Line Conflict",
"repair_dialog_message": "Another tool is using the Claude Code status line.\nSwitch to coexistence mode? usage app can run alongside other tools.",
"repair_dialog_repair": "Repair Now",
"repair_dialog_skip": "Later",
"repair_dialog_never": "Do Not Ask Again",
"alert_forwarder_title": "Enable coexistence mode?",
"alert_forwarder_body": "Another Claude Code status line tool was detected. In coexistence mode, usage runs through a forwarder alongside your existing tool.",
"alert_forwarder_enable": "Enable Coexistence Mode",
"alert_forwarder_keep": "Keep Current Setup",
"data_stale_hint": "Data is from a fallback source. Check settings.",
"status_loading": "Loading",
"status_synced": "✓ Synced",
"status_no_data": "No data",
"awaiting_rate_limits": "Send a message in Claude Code to sync your quota",
"hook_broken_not_installed": "⚠ Status line is not updating. Run `python3 main.py --setup` to reinstall it.",
"hook_broken_restart": "⚠ Status line hook is not running. Restart Claude Code once.",
"usage_status_missing": "⚠ Status file not found. Run `python3 main.py --setup` and open Claude Code once.",
"usage_status_no_quota": "⚠ Status file has no quota data yet. Wait for Claude Code to refresh statusLine once.",
"status_error": "Error ({message})",
"rate_text": "Rate: {value}",
"status_text": "Status: {value}",
"today_text": "Today: ${cost} ({tokens} tokens)",
"percent_used": "{value}% used",
"reset_in": "Resets in {time}",
"burn_warning": "⚠ At current pace, empty in {empty} (resets in {reset})",
"reset_placeholder": "Resets in --",
"duration_days": "{days}d {hours}h",
"duration_hours": "{hours}h {minutes}m",
"duration_minutes": "{minutes}m",
"group_idle": "Idle",
"group_normal": "Normal",
"group_active": "Active",
"group_heavy": "Heavy",
"claude_name": "Claude Code",
"codex_name": "Codex",
"codex_stale_minutes": "about {minutes} minutes ago",
"codex_stale_hours": "about {hours} hours ago",
"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.",
"history_load_error_file": "Couldn't read usage files",
"history_load_error_parse": "Usage data format issue",
"history_load_error_unknown": "Usage data temporarily unavailable",
"history_load_error_tooltip": "Showing the last successfully loaded data; this will recover automatically once resolved.",
"projects_title": "Project Usage",
"project_range_1d": "Today",
"project_range_7d": "7 Days",
"project_range_30d": "Month",
"project_range_all": "All Time",
"session_label": "Session",
"weekly_label": "Weekly",
"monthly_label": "Monthly",
"projects_empty": "No records",
"refresh_now": "↻ Refresh Now",
"analyze_usage": "Report",
"analysis_failed": "Analysis report failed",
"install_hook": "Set Up Status Line",
"quit": "⏻ Quit",
"usage_title": "Usage",
"current_label": "Current",
"resets_in_days": "Resets in {days}d {hours}h",
"resets_in_hours": "Resets in {hours}h {minutes}m",
"resets_in_minutes": "Resets in {minutes}m {seconds}s",
"resets_in_placeholder": "Resets in --",
"status_rate_limited": "⚠ Rate limit reached",
"status_token_unavailable": "⚠ Token unavailable",
"status_api_offline": "⚠ API offline",
"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",
"analyze": "Analyze",
"cli": "Terminal",
"cli_enabled": "Terminal ✓",
"cli_disabled": "Terminal",
"statusline_action_failed": "CLI hook action failed",
"unknown_sort_field": "Unknown sort field: {field}, available: {valid}",
"no_token_data": "No token usage data",
"loading": "Loading...",
"no_data": "No data",
"no_agent": "No AI Agent detected",
"hook_not_installed": "Status line not configured. Run: usage setup",
"detected": "Detected: {agents}",
"agent_not_found": "{name} not detected",
"unknown_cmd": "Unknown command: {cmd}",
"available_cmds": "Available commands: dashboard, daily, weekly, monthly, sessions, report, claude, codex, setup, unsetup, --version",
"sort_time": "Time",
"sort_token": "Token",
"sort_cost": "Cost",
"sort_messages": "Messages",
"session_title": "Sessions({limit}) [dim](s)Sort:[/dim] {label}{arrow} [dim](r)Reverse (+/-)Count[/dim]",
"reset_at": "Resets at {time}",
"rate_per_day": "Rate: {rate}/day",
"cost_label": "Cost",
"daily_avg": "Avg: {cost}",
"msg_session": "Messages {msgs} Sessions: {sessions}",
"tab_help_compact": " ←→ jk e export q/ESC quit",
"tab_help": " ← → switch ↑ ↓ scroll e export report q / ESC quit",
"history_overview": "Overview",
"cost_colon": "Cost: ",
"sessions_colon": "Sessions: ",
"messages_colon": "Messages: ",
"days_colon": "Days: ",
"month_overview": "This Month",
"daily_avg_colon": "Avg: ",
"recent_sessions": "Recent Sessions",
"col_time": "Time",
"col_source": "Source",
"col_project": "Project",
"col_model": "Model",
"col_total_tokens": "Tokens",
"col_cost": "Cost",
"col_messages": "Msgs",
"col_date": "Date",
"col_sessions": "Sessions",
"col_week": "Week",
"total_row": "Total",
"col_month": "Month",
"col_cache_create": "Cache Create",
"col_cache_read": "Cache Read",
"model_breakdown": "Model Distribution",
"col_ratio": "Ratio",
"session_summary": "Recent {shown} / {total} sessions",
"col_duration": "Duration",
"daily_panel_title": "Daily Panel (P90)",
"msg_unit": "{n}",
"session_msg": "Sessions: {sessions} Messages: {msgs}",
"rate_per_msg": "Rate: {rate}/msg",
"week_token": "Week Token {tokens}",
"week_cost": "Week Cost",
"active_panel_title": "5h & 7d Rate Limits",
"limit_5h": "5h Limit",
"time_label": "Time",
"time_elapsed": "Elapsed {elapsed}min / Remaining {h}h{m:02d}m",
"rate_per_min": "Rate: {rate}/min",
"model_label": "Model: {model}",
"msg_count": "Messages {n}",
"limit_7d": "7d Limit",
"idle_panel_title": "Rate Limits",
"codex_restored": "Codex status_line restored",
"codex_removed": "Codex status_line removed",
"report_active_days": "Active days",
"report_agent": "Tool",
"report_agent_section": "By tool (Claude vs Codex)",
"report_cost": "Cost",
"report_duration": "Duration",
"report_empty_models": "No model usage in this period",
"report_empty_projects": "No project usage in this period",
"report_empty_daily": "No daily usage in this period",
"report_empty_sessions": "No sessions to list in this period",
"report_footer": "usage · Local-first analytics · Data stays on device",
"report_generated": "Generated",
"report_kpi_active": "Active Days",
"report_kpi_cost": "Burned Cost",
"report_kpi_messages": "Messages",
"report_kpi_productivity": "Avg per Message",
"report_kpi_productivity_unit": "tokens",
"report_kpi_sessions": "Sessions",
"report_kpi_tokens": "Burned Tokens",
"report_messages": "Messages",
"report_model": "Model",
"report_model_section": "Most-used models",
"report_narrative": "You burned {tokens} tokens across {projects} projects. Peak was {peak_date} ({peak_tokens}/day). Top model: {top_model}.",
"report_period": "Period",
"report_project": "Project",
"report_project_section": "Project hot zones",
"report_persona_active_hours": "Active hours",
"report_persona_caption": "You most often collaborate with AI at {h1}{h2}",
"report_persona_caption_second": " and {h2}",
"report_persona_empty": "Not enough data in this period yet",
"report_persona_recent_titles": "Recently working on",
"report_persona_section": "Usage habits",
"report_rank": "Rank",
"report_session_section": "Top 5 burn sessions",
"report_ai_updates_section": "AI Tool Update Digest",
"report_ai_updates_updated_to": "Updated to",
"report_ai_updates_original": "Original",
"report_contribution_section": "52-week contribution heatmap",
"report_contribution_less": "Less",
"report_contribution_more": "More",
"report_contribution_current_streak": "Current streak",
"report_contribution_longest_streak": "Longest streak",
"report_contribution_busiest_day": "Busiest day",
"report_contribution_days_unit": "days",
"report_contribution_cell_title": "{date} · {tokens} tokens",
"report_contribution_mon": "Mon",
"report_contribution_wed": "Wed",
"report_contribution_fri": "Fri",
"report_contribution_month_1": "Jan",
"report_contribution_month_2": "Feb",
"report_contribution_month_3": "Mar",
"report_contribution_month_4": "Apr",
"report_contribution_month_5": "May",
"report_contribution_month_6": "Jun",
"report_contribution_month_7": "Jul",
"report_contribution_month_8": "Aug",
"report_contribution_month_9": "Sep",
"report_contribution_month_10": "Oct",
"report_contribution_month_11": "Nov",
"report_contribution_month_12": "Dec",
"report_wrapped_section": "Year Wrapped",
"report_wrapped_year_badge": "{year} Wrapped",
"report_wrapped_total_tokens": "Total tokens",
"report_wrapped_total_cost": "Total cost",
"report_wrapped_active_days": "Active days",
"report_wrapped_longest_streak": "Longest streak",
"report_wrapped_top_model": "Top model",
"report_wrapped_top_project": "Top project",
"report_wrapped_books_equivalent": "≈ {books} books worth of words",
"report_wrapped_beast_phoenix_title": "Phoenix Crowned",
"report_wrapped_beast_phoenix_caption": "Claude carried slightly more fire this year, like a bird kicking the whole workshop back into the sky.",
"report_wrapped_beast_dragon_title": "Dragon Crowned",
"report_wrapped_beast_dragon_caption": "Codex hit harder this year, like a dragon torching a build all the way to done.",
"project_butler": "Resume Last Session",
"project_butler_tooltip": "When you open a new session, automatically hand your last progress to the AI — no need to re-explain.",
"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.",
"resume_disabled_msg": "Disabled. New sessions will no longer auto-load your last progress.",
"resume_action_failed": "Action failed",
"report_rw_none": "(none recorded)",
"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",
"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.)",
"report_rw_prompt": "Project: {project} (last active {when})\nRecently working on (newest first): {last_request}\nProgress made: {commits}\nOpen to-dos: {todos}",
"report_rw_uncommitted": "Left uncommitted last time: {count} changed file(s) on branch {branch} ({files})",
"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}.",
"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}.",
"report_rw_diagnosis_cause_default": "avoidable context waste",
"report_rw_diagnosis_cause_repeated_reads": "re-reading the same files",
"report_rw_diagnosis_cause_polluter_dirs": "scanning generated or dependency folders",
"report_rw_diagnosis_cause_anomaly_session": "one oversized session",
"report_rw_diagnosis_cause_noisy_bash": "oversized Bash output",
"report_rw_diagnosis_cause_repeated_bash": "re-running the same Bash command",
"report_sessions": "Sessions",
"report_share": "Share",
"report_share_button_label": "Share",
"report_share_close": "Close",
"report_share_copied": "Copied to clipboard ✓",
"report_share_copy_path": "Copy file path",
"report_share_download_csv": "Download .csv",
"report_share_download_html": "Download .html",
"report_share_file_hint": "Send via AirDrop / Mail / Slack / iMessage — opens in any browser, mobile or desktop",
"report_share_file_mask_toggle": "Hide project names",
"report_share_file_title": "Send to a colleague / manager",
"report_share_modal_title": "Share report",
"report_share_path_copied": "Path copied ✓",
"report_start_time": "Start time",
"report_title": "Your AI Usage Recap",
"report_insights_section": "Insights",
"report_insights_quiet": "This period ran steady — nothing unusual worth calling out.",
"report_insights_change_up": "This period burned {tokens} tokens and {cost_usd} — up {pct}% vs last period.",
"report_insights_spike_v2": "Heaviest single day was {date} at {tokens} tokens — {mean_multiplier:.2f}× a normal day.",
"report_insights_shift_new_project": "{project} is new this period and already {pct:.1f}% of usage.",
"report_insights_shift_model_up": "{model} climbed from {prev_pct:.1f}% to {pct:.1f}% of usage, mostly on {project}.",
"report_insights_shift_model_up_plain": "{model} climbed from {prev_pct:.1f}% to {pct:.1f}% of usage.",
"report_insights_action_watch_quota": "Usage jumped hard vs last period; watch quota headroom.",
"report_insights_action_spike_share": "{date} alone accounted for {share}% of this period's usage.",
"report_tokens": "Tokens",
"report_trend_compare_down": "This week dropped {pct}% vs last week.",
"report_trend_compare_first": "First week of this period.",
"report_trend_compare_flat": "Roughly flat vs last week.",
"report_trend_compare_new": "This week has new usage vs last week.",
"report_trend_compare_up": "This week is {ratio}× of last week.",
"report_trend_marker_new": "new",
"report_trend_section": "Weekly burn trail",
"report_chart_other": "Other",
"report_sub_empty": "No local subscription info detected",
"report_sub_section": "Your subscription",
"report_tools_section": "Your tools",
"report_sub_since": "Subscribed since",
"report_sponsor": "No cloud. No tracking. Just yours.",
"report_unknown": "unknown",
"report_version": "version",
"setup_hook_source_missing": "❌ Hook source file not found, tried: {tried}",
"setup_resume_source_missing": "❌ Resume hook source file not found, tried: {tried}",
"setup_resume_enabled": "✅ Enabled auto-loading last progress in new sessions: {path}",
"setup_resume_disabled": "Disabled auto-loading last progress in new sessions",
"setup_forwarder_source_missing": "❌ Forwarder source file not found, tried: {tried}",
"setup_legacy_file_remove_failed": "⚠ Could not remove legacy file {path}: {error}",
"setup_legacy_settings_not_object": "⚠ {path} is not a JSON object; skipping migration",
"setup_legacy_settings_read_failed": "⚠ Could not read legacy settings for migration: {error}",
"setup_legacy_statusline_cleanup_failed": "⚠ Could not clean legacy statusLine: {error}",
"setup_legacy_backup_migrate_failed": "⚠ Could not migrate legacy backup key: {error}",
"setup_legacy_settings_write_failed": "⚠ Could not write migrated settings: {error}",
"setup_legacy_migrated": "ℹ Automatically migrated from v0.1.x ({name}) to usage",
"setup_settings_read_failed": "❌ Could not read {path}: {error}",
"setup_settings_not_object": "❌ {path} must be a JSON object",
"setup_statusline_backed_up": "ℹ Backed up existing statusLine to settings.{backup_key}.{prev_key}",
"setup_codex_already_configured": "ℹ Codex status_line is already configured for usage, skipping",
"setup_codex_configured": "✓ Codex status_line configured",
"setup_codex_backup_written": "ℹ Previous config backed up to: {path}",
"setup_codex_restart_required": "ℹ Restart Codex once",
"setup_codex_restored": "✓ Codex status_line restored",
"setup_codex_removed": "✓ Codex status_line removed",
"setup_codex_config_unreadable": "⚠ Could not read ~/.codex/config.toml, skipping Codex setup",
"setup_no_agents": "❌ Claude Code or Codex was not found. Install and run one of them first.",
"setup_forwarder_installed": "✓ forwarder installed: {path}",
"setup_hook_installed": "✓ hook installed: {path}",
"setup_settings_updated": "✓ settings updated: {path}",
"setup_claude_restart_required": "ℹ Restart Claude Code once so it rereads settings and refreshes statusLine",
"setup_statusline_already_usage": "ℹ statusLine is already the usage hook; settings unchanged",
"setup_claude_statusline_restored": "✓ Restored previous statusLine",
"setup_claude_statusline_removed": "✓ Removed usage statusLine",
"setup_statusline_not_usage": "ℹ statusLine was not installed by usage; settings unchanged",
"setup_hook_deleted": "✓ Deleted hook: {path}",
"setup_status_file_deleted": "✓ Deleted status file: {path}"
},
"zh-CN": {
"panel_default_name": "默认",
"panel_load_error": "面板加载失败,请反馈这个问题:",
"panel_matrix": "黑客任务",
"panel_win95": "视窗 95",
"panel_newspaper": "复古报纸",
"panel_cloud_observation": "云图观测",
"panel_aquarium": "午夜水族箱",
"panel_prism_arcade": "棱镜街机",
"panel_black_hole": "黑洞视界",
"panel_lepidoptera": "蝶类图鉴",
"panel_world_cup": "世界杯 2026",
"summon_critters": "召唤神兽",
"dismiss_critters": "收回神兽",
"switch_panel": "切换面板",
"launch_at_login": "开机自动启动",
"hide_sections_menu": "隐藏区块",
"quota_notifications_menu": "用量提醒通知",
"notif_warn_title": "🐾 快用完啦",
"notif_warn_body": "{tool} {scope} 已用 {pct}%,要收尾了吗?",
"notif_depleted_title": "🐾 额度用完啦",
"notif_depleted_body": "{tool} {scope} 额度见底,{reset} 后恢复",
"notif_restored_title": "🐾 额度回来了",
"notif_restored_body": "{tool} {scope} 可以继续冲了 🚀",
"update_alert_title": "发现新版 {version}",
"update_btn_download": "前往下载",
"update_btn_later": "稍后再说",
"update_btn_skip": "跳过此版本",
"update_no_new_version": "已是最新版本",
"update_check_failed": "检查更新失败",
"hook_installed_restart": "已安装完成,请重开 Claude Code 一次",
"hook_install_failed": "安装 hook 失败",
"hook_install_failed_default": "setup_hook.setup() 返回失败",
"repair_dialog_title": "状态列设置冲突",
"repair_dialog_message": "检测到其他工具占用了 Claude Code 状态列。\n要切换成共存模式吗?usage app 可以和其他工具同时运行。",
"repair_dialog_repair": "立即修复",
"repair_dialog_skip": "稍后再说",
"repair_dialog_never": "不要再问",
"alert_forwarder_title": "启用共存模式?",
"alert_forwarder_body": "检测到其他 Claude Code 状态列工具。启用共存模式后,usage 会通过转发器和现有工具一起运行。",
"alert_forwarder_enable": "启用共存模式",
"alert_forwarder_keep": "保留现状",
"data_stale_hint": "资料来自备用来源,建议检查设置",
"status_loading": "加载中",
"status_synced": "✓ 已同步",
"status_no_data": "无资料",
"awaiting_rate_limits": "请对 Claude Code 发送一句消息以同步配额",
"hook_broken_not_installed": "⚠ 状态栏没有更新,请执行 `python3 main.py --setup` 重新安装",
"hook_broken_restart": "⚠ 状态栏没有运行,请重开一次 Claude Code",
"usage_status_missing": "⚠ 找不到状态文件,请执行 `python3 main.py --setup` 并打开一次 Claude Code",
"usage_status_no_quota": "⚠ 状态文件还没有配额数据,等 Claude Code 再刷新一次 statusLine",
"status_error": "错误 ({message})",
"rate_text": "速率:{value}",
"status_text": "状态:{value}",
"today_text": "今日:${cost} ({tokens} tokens)",
"percent_used": "{value}% 已用",
"reset_in": "重置 {time}",
"burn_warning": "⚠ 按目前速度 {empty} 就会用完(重置还要 {reset})",
"reset_placeholder": "重置 --",
"duration_days": "{days}天 {hours}小时",
"duration_hours": "{hours}小时 {minutes}分钟",
"duration_minutes": "{minutes}分钟",
"group_idle": "闲置",
"group_normal": "正常",
"group_active": "活跃",
"group_heavy": "高负载",
"claude_name": "Claude Code",
"codex_name": "Codex",
"codex_stale_minutes": "约 {minutes} 分钟前",
"codex_stale_hours": "约 {hours} 小时前",
"codex_stale_tooltip": "Claude 有实时回报所以很准;Codex 没有,usage 只能读取它本机偶尔留下的记录,可能比实际略旧。我们刻意不联网去补(联网会多消耗你的 token)——继续在终端机里运行 Codex 就会自动更新。",
"history_load_error_file": "读不到使用记录文件",
"history_load_error_parse": "使用记录格式异常",
"history_load_error_unknown": "使用记录暂时无法读取",
"history_load_error_tooltip": "目前显示的是上次成功读到的数据,问题解决后会自动恢复。",
"projects_title": "项目用量",
"project_range_1d": "今日",
"project_range_7d": "7 日",
"project_range_30d": "月",
"project_range_all": "全部",
"session_label": "Session",
"weekly_label": "本周",
"monthly_label": "本月",
"projects_empty": "无记录",
"refresh_now": "↻ 立即更新",
"analyze_usage": "报告",
"analysis_failed": "分析报告生成失败",
"install_hook": "设置状态栏",
"quit": "⏻ 结束",
"usage_title": "Usage",
"current_label": "当前",
"resets_in_days": "将在 {days}天 {hours}小时后重置",
"resets_in_hours": "将在 {hours}小时 {minutes}分钟后重置",
"resets_in_minutes": "将在 {minutes}分 {seconds}秒后重置",
"resets_in_placeholder": "将在 -- 后重置",
"status_rate_limited": "⚠ 已达速率限制",
"status_token_unavailable": "⚠ Token 无法使用",
"status_api_offline": "⚠ API 离线",
"loading_phrases": "处理中|解析中|查看中|执行中|施法中|推演中|构思中|思考中|烘焙中|周旋中|高谈中|轻点中|胡言乱语中|运算中|酿造中|锻造中|忙碌中|计算中|成形中|解题中|动脑中|嬉戏中|重新编织中|引导中|生成中|反刍中|翻搅中|萌芽中|策划中|Clauding 中|孵化中|搬运中|汇聚中|牧养中|摇摆中|沉思中|鸣叫中|剥壳中|折腾中|奔走中|慢炖中|计算中|发想中|揉合中|调制中|想象中|探勘中|召唤中|孕育中|旋转中|斟酌中|推断中|闷烧中|沉思中|律动中|摸索中|烹煮中|具现化中|综合中|打造中|腌渍中|思索中|创造中|漫游中|修补中|压缩中|闲晃中|转化中|解码中|斟酌中|展开中|审议中|整备中|拆解中|判定中|冥想中|感受中|脱序中|涂鸦中|游走中|占卜中|渗滤中|嗡鸣中|动手中|摇晃中|施法中|工作中|收束中",
"analyze": "分析",
"cli": "终端",
"cli_enabled": "终端 ✓",
"cli_disabled": "终端",
"statusline_action_failed": "CLI hook 操作失败",
"unknown_sort_field": "未知排序字段: {field},可用: {valid}",
"no_token_data": "暂无 token 使用数据",
"loading": "加载数据...",
"no_data": "暂无数据",
"no_agent": "未检测到任何 AI Agent",
"hook_not_installed": "状态栏尚未设置。请运行:usage setup",
"detected": "检测到: {agents}",
"agent_not_found": "未检测到 {name}",
"unknown_cmd": "未知命令: {cmd}",
"available_cmds": "可用命令: dashboard, daily, weekly, monthly, sessions, report, claude, codex, setup, unsetup, --version",
"sort_time": "时间",
"sort_token": "Token",
"sort_cost": "等效成本",
"sort_messages": "消息数",
"session_title": "最近会话({limit}) [dim](s)排序:[/dim] {label}{arrow} [dim](r)反转 (+/-)条数[/dim]",
"reset_at": "重置于 {time}",
"rate_per_day": "速率: {rate}/天",
"cost_label": "等效成本",
"daily_avg": "日均: {cost}",
"msg_session": "消息 {msgs} 条 会话: {sessions}",
"tab_help_compact": " ←→ jk e导出 q/ESC退出",
"tab_help": " ← → 切换 ↑ ↓ 滚动 e 导出报告 q / ESC 退出",
"history_overview": "历史总览",
"cost_colon": "等效成本: ",
"sessions_colon": "会话: ",
"messages_colon": "消息: ",
"days_colon": "天数: ",
"month_overview": "本月概览",
"daily_avg_colon": "日均: ",
"recent_sessions": "最近十条会话",
"col_time": "时间",
"col_source": "来源",
"col_project": "项目",
"col_model": "模型",
"col_total_tokens": "总Token",
"col_cost": "等效成本",
"col_messages": "消息",
"col_date": "日期",
"col_sessions": "会话",
"col_week": "周",
"total_row": "合计",
"col_month": "月份",
"col_cache_create": "Cache创建",
"col_cache_read": "Cache读取",
"model_breakdown": "模型分布",
"col_ratio": "占比",
"session_summary": "最近 {shown} / {total} 个会话",
"col_duration": "时长",
"daily_panel_title": "当日数据面板 (P90)",
"msg_unit": "{n} 条",
"session_msg": "会话: {sessions} 消息: {msgs}",
"rate_per_msg": "速率: {rate}/条",
"week_token": "本周 Token {tokens}",
"week_cost": "本周成本",
"active_panel_title": "当前 5h&7d 数据面板",
"limit_5h": "5h 限额",
"time_label": "时间",
"time_elapsed": "已用 {elapsed}min / 剩余 {h}h{m:02d}m",
"rate_per_min": "速率: {rate}/min",
"model_label": "模型: {model}",
"msg_count": "消息 {n} 条",
"limit_7d": "7d 限额",
"idle_panel_title": "限额数据面板",
"codex_restored": "Codex status_line 已恢复原配置",
"codex_removed": "Codex status_line 已移除",
"report_active_days": "活跃天数",
"report_agent": "工具",
"report_agent_section": "工具用量 (Claude / Codex)",
"report_cost": "花费",
"report_duration": "时长",
"report_empty_models": "这段期间还没有模型用量",
"report_empty_projects": "这段期间还没有项目用量",
"report_empty_daily": "这段期间还没有每日用量",
"report_empty_sessions": "这段期间还没有可列出的会话",
"report_footer": "usage · 本机分析 · 数据不离本机",
"report_generated": "生成时间",
"report_kpi_active": "活跃日",
"report_kpi_cost": "烧掉成本",
"report_kpi_messages": "消息",
"report_kpi_productivity": "平均每条消息",
"report_kpi_productivity_unit": "Token",
"report_kpi_sessions": "会话",
"report_kpi_tokens": "烧掉 Tokens",
"report_messages": "消息",
"report_model": "模型",
"report_model_section": "主力模型",
"report_narrative": "过去这段时间你烧了 {tokens} tokens、跨 {projects} 个项目。{peak_date} 是高峰({peak_tokens}/天),主力 LLM 是 {top_model}。",
"report_period": "区间",
"report_project": "项目",
"report_project_section": "项目热区",
"report_persona_active_hours": "活跃时段",
"report_persona_caption": "你最常在 {h1}{h2} 与 AI 协作",
"report_persona_caption_second": " 和 {h2}",
"report_persona_empty": "这段期间还没有足够数据",
"report_persona_recent_titles": "最近在忙什么",
"report_persona_section": "使用习惯",
"report_rank": "排名",
"report_session_section": "最烧的 5 段会话",
"report_ai_updates_section": "AI 工具更新速报",
"report_ai_updates_updated_to": "更新至",
"report_ai_updates_original": "原文",
"report_contribution_section": "52 周贡献热力图",
"report_contribution_less": "少",
"report_contribution_more": "多",
"report_contribution_current_streak": "当前连续活跃",
"report_contribution_longest_streak": "最长连续活跃",
"report_contribution_busiest_day": "最忙的一天",
"report_contribution_days_unit": "天",
"report_contribution_cell_title": "{date} · {tokens} tokens",
"report_contribution_mon": "Mon",
"report_contribution_wed": "Wed",
"report_contribution_fri": "Fri",
"report_contribution_month_1": "1月",
"report_contribution_month_2": "2月",
"report_contribution_month_3": "3月",
"report_contribution_month_4": "4月",
"report_contribution_month_5": "5月",
"report_contribution_month_6": "6月",
"report_contribution_month_7": "7月",
"report_contribution_month_8": "8月",
"report_contribution_month_9": "9月",
"report_contribution_month_10": "10月",
"report_contribution_month_11": "11月",
"report_contribution_month_12": "12月",
"report_wrapped_section": "年度 Wrapped",
"report_wrapped_year_badge": "{year} Wrapped",
"report_wrapped_total_tokens": "全年总 Tokens",
"report_wrapped_total_cost": "全年总成本",
"report_wrapped_active_days": "活跃天数",
"report_wrapped_longest_streak": "最长连续",
"report_wrapped_top_model": "最常用模型",
"report_wrapped_top_project": "最常用项目",
"report_wrapped_books_equivalent": "≈ {books} 本书的字量",
"report_wrapped_beast_phoenix_title": "凤凰加冕",
"report_wrapped_beast_phoenix_caption": "今年 Claude 的火力略胜一筹,像把灰烬一口气吹回天空。",
"report_wrapped_beast_dragon_title": "巨龙加冕",
"report_wrapped_beast_dragon_caption": "今年 Codex 的火力更猛,像一条龙一路把工地烧到完工。",
"project_butler": "接着上次做",
"project_butler_tooltip": "开新对话时,自动把上次的进度交给 AI,不用再重讲一次。",
"resume_enabled_restart": "已开启。以后开新的 Claude Code 对话,会自动记得这个项目上次做到哪——画面上不会有提示(这是正常的),但 Claude 已经知道。下次开新对话即生效。",
"resume_disabled_msg": "已关闭。开新对话时不再自动带入上次进度。",
"resume_action_failed": "设置失败",
"report_rw_none": "(未记录)",
"report_rw_inject_lead": "(这是进度交接。请在这次对话第一则回复的最前面,先说一行「🐾 已接回上次进度,继续吧!」,然后别照念下面的线索,而是像聪明又贴心的搭档那样消化它:先判断用户最后真正在忙的是什么(「最近在忙的」是新到旧排列,以最前面那笔为准,别被较旧的带偏),用一两句温暖具体地说他上次做到哪、完成了什么,再直接给出你判断最该接着做的下一步——要具体,别反问「要做什么」。只能根据下面线索讲,没有的别编;若线索太少看不出方向,就坦白说、并列出你看到的几条线让他挑。接着正常回应。)\n\n",
"report_rw_empty": "(请在你这次对话的第一则回复最前面,说一行「🐾 欢迎回来,这个项目目前没有要接的进度。」,再正常回应。)",
"report_rw_prompt": "项目:{project}(最后活动 {when})\n最近在忙的(新→旧):{last_request}\n完成的进度:{commits}\n未完成待办:{todos}",
"report_rw_uncommitted": "上次离开时还留着:{branch} 分支有 {count} 个文件改了还没提交({files})",
"report_rw_diagnosis_reminder": "健检提醒:最近约有 {waste_pct}% 的浪费来自{cause}。跟我说「修」,完整诊断在 {path}。",
"report_rw_diagnosis_reminder_explain": "健检提醒:最近约有 {waste_pct}% 的浪费来自{cause}。跟我说「看」,我会读 {path} 的完整诊断,解释给你听并给具体建议。",
"report_rw_diagnosis_cause_default": "可避免的上下文浪费",
"report_rw_diagnosis_cause_repeated_reads": "重复读同一批文件",
"report_rw_diagnosis_cause_polluter_dirs": "扫进了产物/依赖目录",
"report_rw_diagnosis_cause_anomaly_session": "单个会话异常膨胀",
"report_rw_diagnosis_cause_noisy_bash": "Bash 输出过大",
"report_rw_diagnosis_cause_repeated_bash": "重复跑同一个 Bash 命令",
"report_sessions": "会话",
"report_share": "占比",
"report_share_button_label": "分享",
"report_share_close": "关闭",
"report_share_copied": "已复制到剪贴板 ✓",
"report_share_copy_path": "复制文件路径",
"report_share_download_csv": "另存一份 .csv",
"report_share_download_html": "另存一份 .html",
"report_share_file_hint": "可用 AirDrop / Mail / Slack / 信息 传给对方,手机电脑都能看",
"report_share_file_mask_toggle": "隐藏项目名称",
"report_share_file_title": "发给同事 / 主管",
"report_share_modal_title": "分享报告",
"report_share_path_copied": "路径已复制 ✓",
"report_start_time": "开始时间",
"report_title": "你的 AI 用量回顾",
"report_insights_section": "洞察",
"report_insights_quiet": "这期跑得很平稳,没什么值得点名的异常。",
"report_insights_change_up": "本期用了 {tokens} tokens、{cost_usd},比上期多 {pct}%。",
"report_insights_spike_v2": "最重的一天是 {date},{tokens} tokens,是平日的 {mean_multiplier:.2f} 倍。",
"report_insights_shift_new_project": "{project} 是这期新冒出来的项目,已占 {pct:.1f}% 用量。",
"report_insights_shift_model_up": "{model} 的占比从上期 {prev_pct:.1f}% 升到 {pct:.1f}%,主要烧在 {project}。",
"report_insights_shift_model_up_plain": "{model} 的占比从上期 {prev_pct:.1f}% 升到 {pct:.1f}%。",
"report_insights_action_watch_quota": "本期用量比上期大幅增加,先盯一下配额水位。",
"report_insights_action_spike_share": "{date} 一天就烧掉本期 {share}% 的量。",
"report_tokens": "Tokens",
"report_trend_compare_down": "本周比上周少 {pct}%。",
"report_trend_compare_first": "这是本期第一周的数据。",
"report_trend_compare_flat": "本周跟上周差不多。",
"report_trend_compare_new": "本周是新出现的用量。",
"report_trend_compare_up": "本周是上周的 {ratio} 倍。",
"report_trend_marker_new": "new",
"report_trend_section": "每周燃烧趋势",
"report_chart_other": "其他",
"report_sub_empty": "未检测到本地订阅信息",
"report_sub_section": "你的订阅",
"report_tools_section": "你的工具",
"report_sub_since": "订阅起始",
"report_sponsor": "No cloud. No tracking. Just yours.",
"report_unknown": "未知",
"report_version": "版本",
"setup_hook_source_missing": "❌ 找不到 hook 原始文件,tried: {tried}",
"setup_resume_source_missing": "❌ 找不到 resume hook 原始文件,tried: {tried}",
"setup_resume_enabled": "✅ 已启用新对话自动带入上次进度:{path}",
"setup_resume_disabled": "已关闭新对话自动带入上次进度",
"setup_forwarder_source_missing": "❌ 找不到 forwarder 原始文件,tried: {tried}",
"setup_legacy_file_remove_failed": "⚠ 无法移除旧文件 {path}: {error}",
"setup_legacy_settings_not_object": "⚠ {path} 不是 JSON object,跳过 migration",
"setup_legacy_settings_read_failed": "⚠ 无法读取旧设置做 migration: {error}",
"setup_legacy_statusline_cleanup_failed": "⚠ 无法清理旧 statusLine: {error}",
"setup_legacy_backup_migrate_failed": "⚠ 无法迁移旧备份 key: {error}",
"setup_legacy_settings_write_failed": "⚠ 无法写回 migration 设置: {error}",
"setup_legacy_migrated": "ℹ 已从 v0.1.x ({name}) 自动 migrate 到 usage",
"setup_settings_read_failed": "❌ 无法读取 {path}: {error}",
"setup_settings_not_object": "❌ {path} 必须是 JSON object",
"setup_statusline_backed_up": "ℹ 已备份原有 statusLine 到 settings.{backup_key}.{prev_key}",
"setup_codex_already_configured": "ℹ Codex status_line 已是 usage 设置,跳过",
"setup_codex_configured": "✓ Codex status_line 已配置",
"setup_codex_backup_written": "ℹ 原配置已备份到: {path}",
"setup_codex_restart_required": "ℹ 请重新打开 Codex 一次",
"setup_codex_restored": "✓ Codex status_line 已恢复原配置",
"setup_codex_removed": "✓ Codex status_line 已移除",
"setup_codex_config_unreadable": "⚠ 无法读取 ~/.codex/config.toml,跳过 Codex 设置",
"setup_no_agents": "❌ 找不到 Claude Code 或 Codex,请先安装并运行其中之一",
"setup_forwarder_installed": "✓ forwarder 已安装:{path}",
"setup_hook_installed": "✓ hook 已安装:{path}",
"setup_settings_updated": "✓ settings 已更新:{path}",
"setup_claude_restart_required": "ℹ 请重新打开 Claude Code 一次(让它重新读 settings 并刷新一次 statusLine)",
"setup_statusline_already_usage": "ℹ statusLine 已是 usage hook,settings 未改动",
"setup_claude_statusline_restored": "✓ 已还原原有 statusLine",
"setup_claude_statusline_removed": "✓ 已移除 usage statusLine",
"setup_statusline_not_usage": "ℹ statusLine 不是 usage 安装的,settings 未改动",
"setup_hook_deleted": "✓ 已删除 hook:{path}",
"setup_status_file_deleted": "✓ 已删除状态文件:{path}"
},