1// dashboard-i18n.js â personal dashboard module (extracted from index.html inline script) 2// Classic global script. Load order matters; keep the <script src> sequence in index.html intact. 3// Section: i18n (T table, lang, escHtml, t/setLang/applyI18n) 4 5// === i18n === 6var T = { 7 ko: { 8 nav_home: 'Home', nav_my_dash: 'ë´ ëìë³´ë', nav_team: 'í', nav_insights: 'ì¸ì¬ì´í¸', nav_feedback: '문ìí기', btn_logout: 'ë¡ê·¸ìì', 9 login_title: 'Dashboard', login_desc: 'ë¡ê·¸ì¸íì¬ ì¬ì©ë ë°ì´í°ë¥¼ íì¸íì¸ì.', login_demo_link: 'ëë ìí ë°ì´í°ë¡ ë°ëª¨ 보기 â', 10 login_or: 'ëë', claude_login_toggle: 'ë¤ë¥¸ ë°©ë²ì¼ë¡ ë¡ê·¸ì¸', claude_login_btn: 'ClaudeTuner íì¥ì¼ë¡ ë¡ê·¸ì¸', claude_login_hint: 'ClaudeTuner íì¥ íì (v1.12.8 ì´ì)', 11 claude_login_loading: 'ë¡ê·¸ì¸ ì¤...', claude_login_not_logged_in: 'Claude.aiì 먼ì ë¡ê·¸ì¸í´ì£¼ì¸ì', claude_login_no_data: 'ìì§ ìì§ë ë°ì´í°ê° ììµëë¤. íì¥ ì¤ì¹ í ì ì 기ë¤ë ¤ì£¼ì¸ì.', claude_login_failed: 'ë¡ê·¸ì¸ì ì¤í¨íìµëë¤. ë¤ì ìëí´ì£¼ì¸ì.', claude_login_email_required: 'ì´ë©ì¼ë¡ ë¡ê·¸ì¸í´ 주ì¸ì.', claude_login_not_installed: 'ClaudeTuner íì¥ì´ ì¤ì¹ëì´ ìì§ ìê±°ë ë¹íì±íëì´ ììµëë¤. ì¤ì¹ í ë¤ì ìëíê±°ë ì´ë©ì¼ë¡ ë¡ê·¸ì¸íì¸ì.', claude_login_install: 'ì¤ì¹í기', 12 email_login_toggle: 'ì´ë©ì¼ë¡ ë¡ê·¸ì¸', email_login_send: 'ì¸ì¦ ì½ë ì ì¡', email_verify_btn: 'ì¸ì¦', 13 email_auth_invalid: 'ì í¨í ì´ë©ì¼ 주ì를 ì ë ¥í´ì£¼ì¸ì.', email_auth_rate_limit: 'ìì²ì´ ë무 ë§ìµëë¤. ì ì í ë¤ì ìëí´ì£¼ì¸ì.', email_auth_send_error: 'ì½ë ì ì¡ì ì¤í¨íìµëë¤.', email_auth_network_error: 'ìë²ì ì°ê²°íì§ ëª»íìµëë¤. ë¤í¸ìí¬(ì¬ë´ ë°©íë²½/íë¡ì) ì°ê²°ì íì¸ í ë¤ì ìëí´ì£¼ì¸ì.', email_verify_sent: '{email}ë¡ ì½ë를 ì ì¡íìµëë¤.', email_verify_invalid: '6ì리 ì½ë를 ì ë ¥í´ì£¼ì¸ì.', email_verify_wrong: 'ì못ëìê±°ë ë§ë£ë ì½ëì ëë¤.', email_login_signing_in: 'ë¡ê·¸ì¸ ì¤â¦', email_login_link_expired: 'ë¡ê·¸ì¸ ë§í¬ê° ë§ë£ëììµëë¤. ìëìì ì ì½ë를 ìì²í´ì£¼ì¸ì.', 14 loading: 'ë°ì´í°ë¥¼ ë¶ë¬ì¤ë ì¤...', loading_fail: 'ë°ì´í° ë¡ë© ì¤í¨. ì ì í ë¤ì ìëí´ì£¼ì¸ì.', 15 empty_title: 'ìì§ ìì§ë ë°ì´í°ê° ììµëë¤', 16 empty_desc: 'Chrome íì¥ íë¡ê·¸ë¨ì ì¤ì¹íê³ Claude.aiì ë¡ê·¸ì¸íë©´<br>ì¬ì©ë ë°ì´í°ê° ìëì¼ë¡ ìì§ë©ëë¤.', 17 empty_link: 'Chrome Web Storeìì ì¤ì¹ â', 18 status_danger: 'íë ìë°', status_warn: '주ì', status_ok: 'ì¬ì ', 19 rec_no_data: 'ë°ì´í°ê° ë¶ì¡±í©ëë¤.', 20 rec_data_growing: 'ë°ì´í° ìì§ ì¤ì ëë¤. ì íí ì¶ì²ì ìí´ 3ì¼ ì´ìì ë°ì´í°ê° íìí©ëë¤.', 21 rec_upgrade_max5x: 'Max 5x ì ê·¸ë ì´ë를 ê¶ì¥í©ëë¤. ì¬ì© íëê° 5ë°°ë¡ ëì´ë©ëë¤.', 22 rec_upgrade_max20x: 'Max 20x ì ê·¸ë ì´ë를 ê²í í´ë³´ì¸ì.', 23 rec_upgrade_general: 'ìì íëì ê²í í´ë³´ì¸ì.', 24 rec_high_max20x: 'ìµê·¼ ì¬ì©ëì´ ëì í¸ì ëë¤. 리ì 주기ì ì ìíì¸ì.', 25 rec_high_max20x_critical: 'ì¬ì©ëì´ ê³ì ëìµëë¤. ìµìì íëì´ë¯ë¡ í í° ì¬ì©ì ì¤ì¬ íë ë´ìì ì ì§íì¸ì.', 26 rec_adequate: 'ì¬ì©ë ì¤ê° ìì¤ â ì¶ì´ë¥¼ 주ìíì¸ì.', 27 rec_optimize_schedule: 'ì 무 ìê°ì ì¬ì©ì´ ì§ì¤ëê³ ììµëë¤. ì¼ê°/ìë²½ì ìì ì ë¶ì°íë©´ íì¬ íëì¼ë¡ ì¶©ë¶í ì ììµëë¤.', 28 rec_upgrade_pro: 'Proë¡ ì ê·¸ë ì´ë를 ê¶ì¥í©ëë¤. ì¬ì© íëì ì주 ëë¬íê³ ììµëë¤.', 29 rec_downgrade_max5x: 'ì¬ì©ë ëë¹ íëì´ ëìµëë¤. Max 5xë¡ ë¤ì´ê·¸ë ì´ë를 ê³ ë ¤í´ë³´ì¸ì.', 30 rec_downgrade_pro: 'ì¬ì©ë ëë¹ íëì´ ëìµëë¤. Proë¡ ë¤ì´ê·¸ë ì´ë를 ê³ ë ¤í´ë³´ì¸ì.', 31 rec_good: 'íì¬ íëì´ ì í©í©ëë¤.', 32 rec_enterprise: 'ì¬ì©ë ì í ìì', 33 rec_team_upgrade_premium: 'íë ìë° â Premium ìí¸ ê²í ', 34 rec_team_near_limit: 'íë ìë° â ê´ë¦¬ì 문ì', 35 rec_team_downgrade_standard: 'Standard ìí¸ ì í ê°ë¥', 36 rec_team_good: 'íì¬ ìí¸ ì í©', 37 // ChatGPT plan recommendation (v1, single-axis 14d windowed max 7d utilization). 38 // See docs/SPEC-chatgpt-plan-rec.md. insufficient_data renders
38NO card, so 39 // rec_cg_insufficient_data is only a defensive fallback (team grid CSV). 40 rec_cg_insufficient_data: 'ë°ì´í°ê° ë¶ì¡±í©ëë¤.', 41 rec_cg_adequate: 'íì¬ íëì´ ì¬ì©ëì ì í©í©ëë¤.', 42 rec_cg_at_ceiling: 'ìµê·¼ ì¬ì©ëì´ íë íëì ëë¬íìµëë¤. ìë´í ìì íëì´ ìì´ ì¬ì© ìì ì ë¶ì°íë í¸ì´ ì¢ìµëë¤.', 43 rec_cg_at_ceiling_seat: 'ìµê·¼ ì¬ì©ëì´ ìí¸ íëì ëë¬íìµëë¤. ìí¸Â·íë ë³ê²½ì ìí¬ì¤íì´ì¤ ê´ë¦¬ììê² ë¬¸ìíì¸ì.', 44 rec_cg_upgrade_go: 'Go íë ì ê·¸ë ì´ë를 ê²í í´ë³´ì¸ì. íëì ì주 ëë¬íê³ ììµëë¤.', 45 rec_cg_upgrade_plus: 'Plus ì ê·¸ë ì´ë를 ê¶ì¥í©ëë¤. íëì ì주 ëë¬íê³ ììµëë¤.', 46 rec_cg_upgrade_pro5x: 'Pro 100 ì ê·¸ë ì´ë를 ê¶ì¥í©ëë¤. ì£¼ê° íëê° í¬ê² ëì´ë©ëë¤.', 47 rec_cg_upgrade_pro20x: 'Pro 200 ì ê·¸ë ì´ë를 ê²í í´ë³´ì¸ì.', 48 rec_cg_downgrade_free: 'ì¬ì©ëì´ ì ìµëë¤. Freeë¡ ë¤ì´ê·¸ë ì´ë를 ê³ ë ¤í´ë³´ì¸ì.', 49 rec_cg_downgrade_go: 'ì¬ì©ë ëë¹ íëì´ ëìµëë¤. Goë¡ ë¤ì´ê·¸ë ì´ë를 ê³ ë ¤í´ë³´ì¸ì.', 50 rec_cg_downgrade_plus: 'ì¬ì©ë ëë¹ íëì´ ëìµëë¤. Plusë¡ ë¤ì´ê·¸ë ì´ë를 ê³ ë ¤í´ë³´ì¸ì.', 51 rec_cg_downgrade_pro5x: 'ì¬ì©ë ëë¹ íëì´ ëìµëë¤. Pro 100ì¼ë¡ ë¤ì´ê·¸ë ì´ë를 ê³ ë ¤í´ë³´ì¸ì.', 52 rec_cg_at_limit_headline: 'íë íë ëë¬', 53 rec_cg_low_confidence: 'ì´ íëì ë¯¸ë³´ê³ êµ¬ê°ì´ ëì´ ì¶ì ì 뢰ëê° ë®ìµëë¤.', 54 rec_cg_window_note: 'ìµê·¼ {0}ì¼ ìµë ì¬ì©ë¥ 기ì¤', 55 rec_cg_title: 'íë ì¶ì²', 56 rec_cg_change_plan: 'ChatGPTìì íë ë³ê²½ â', 57 rec_peak_recent: 'ìµê·¼ í¼í¬', 58 rec_avg_peak: 'íê· í¼í¬', 59 rec_savings: 'ì ì ì½', 60 rec_month: 'ì', 61 rec_data_days: 'ìì§ ë°ì´í°:', 62 rec_days_unit: 'ì¼', 63 countdown_reset: '리ì ë¨', countdown_until: '리ì ê¹ì§ ', 64 renewal_expired: 'ë§ë£', renewal_days_left: '{0}ì¼ ë¨ì', 65 pending_cancel_label: 'í´ì§', pending_cancel_scheduled: 'í´ì§ ìì ', 66 label_7d_util: '7ì¼ ì¬ì©ë¥ ', label_5h_util: '5ìê° ì¬ì©ë¥ ', 67 // ChatGPT only (#1209). Rendered into a title= attribute, so keep it free of double quotes. 68 gauge_note_chatgpt: 'ì´ ê°ìë Codex ë± í ì¤í¸ ì±í ì¸ ì¬ì©ì´ í¬í¨ë©ëë¤. í ì¤í¸ ì±í ì 2026ë 8ìë¶í° íëê° ìì´ ì´ ìì¹ì ì¡íì§ ììµëë¤.', 69 no_7d_for_plan: '{0} íëì 7ì¼ íëê° ììµëë¤', 70 // ð´ Used when the plan is UNKNOWN â never name a tier we did not read (#1434). Saying 71 // "Free íëìâ¦" for a workspace whose plan was never observed asserts two things we do 72 // not know: the tier, and that the absence is a plan property rather than a read failure. 73 no_7d_unknown_plan: 'ì´ ìí¬ì¤íì´ì¤ì íëì ì½ì§ ëª»í´ 7ì¼ íë를 íì¸í ì ììµëë¤', 74 // ð´ WORD-FOR-WORD the extension popup's usage_withheld / usage_withheld_plan 75 // (claude-tuner-extension/i18n.js). The popup and this page describe the SAME provider 76 // response; saying it in two different sentences is exactly what #1405 keeps catching. If one 77 // is reworded, reword both â test/dash-usage-withheld-guard.mjs compares the two files. 78 usage_withheld: 'Claudeê° ì´ ê³ì ì ì¬ì©ë¥ ì ì ê³µíì§ ììµëë¤', 79 usage_withheld_plan: 'Claudeê° {0} íëì ì¬ì©ë¥ ì ì ê³µíì§ ììµëë¤', 80 usage_withheld_free_tip: '2026ë 8ì 22ì¼ë¶í° Claudeê° ë¬´ë£ íë ê³ì ì ì¬ì©ë ìì¹ë¥¼ ì ê³µíì§ ììµëë¤. Claude ì¤ì íë©´ììë íìëì§ ìì¼ë©°, ì¬ì© íëë ê·¸ëë¡ ì ì©ë©ëë¤. Claudeê° ë¤ì ì ê³µíë©´ ìëì¼ë¡ íìë©ëë¤.', 81 acct_plan_unknown: 'ì ì ìì', 82 label_14d_avg: '7ì¼ ì¬ì©ë¥ ì¼íê· ì¦ê° (14ì¼)', label_status: 'ìí', 83 label_7d_tokens: '7d ì¬ì©ë', label_5h_tokens: '5h ì¬ì©ë', 84 label_renewal: '구ë ê°±ì ì¼', label_pending: 'ë³ê²½ ìì ', 85 per_day: '%/ì¼', 86 limit_alert_soon: 'íì¬ ìëë¡ ì½ {0} í íë ëë¬', limit_alert_safe: 'íì¬ ìëë¼ë©´ íëê¹
86ì§ ì¬ì ìì', limit_alert_no_data: 'íì¬ ì¬ì©ëì´ ì ì´ ì측 ë¶ê°', limit_alert_reached: 'íì¬ 7d íëì ëë¬í ìíì ëë¤', 87 summary_peak_5h: 'ì¤ë 5h í¼í¬', summary_busiest: 'ê°ì¥ ë§ì´ ì´ ìê°', summary_limit_hits: 'íë ê·¼ì (â¥80%)', summary_times: 'í', summary_hours: 'ìê°', summary_days: 'ì¼', 88 rec_title: 'íë ì¶ì²', rec_14d_avg: '14ì¼ íê· ì¼ë³ ì¬ì©ë', 89 tab_util: 'ì¬ì©ë¥ ì¶ì´ (3ì¼)', tab_token: 'ì¶ì í í° (3ì¼)', tab_peak: 'ì¶ì í í° (14ì¼)', tab_activity: 'ìê°ëë³ íë', 90 comp_title: 'ì¶ì ë°©ì ë¹êµ', comp_date: 'ë ì§ (UTC)', comp_hourly: 'Hourly í©ì°', comp_daily: 'Daily (7d)', comp_server: 'ìë² í¼í¬', comp_method: 'ë°©ì', comp_confidence: 'ì 뢰ë', 91 activity_title: 'ìê°ëë³ íë', activity_sub: '5h/7d ìëì° ë³íë ê¸°ë° ì¶ì í í°', activity_disclaimer: 'ì¶ì ì¹ì´ë©° ì¤ì ì ë¤ë¥¼ ì ìì', activity_today: 'ì¤ë', activity_this_week: 'ìµê·¼ 1주', activity_daily: 'ì¼ë³', activity_weekly: '주ë³', activity_loading: 'ë¶ë¬ì¤ë ì¤...', activity_no_data: 'í´ë¹ 기ê°ì ìì§ë ë°ì´í°ê° ììµëë¤.', activity_tokens: 'ì¶ì í í°', heatmap_heavy: 'ë§ì´ ì', heatmap_medium: 'ë³´íµ', heatmap_light: 'ì ê² ì', heatmap_none: 'ì ì', heatmap_nodata: 'ë°ì´í° ìì', 92 grove_title: '1ë ì¬ì©ë ìë', grove_sub: 'GitHub ìëì²ë¼ 매ì¼ì ì¶ì í í° ì¬ì©ëì íëì', grove_loading: 'ë¶ë¬ì¤ë ì¤...', grove_no_data: 'ìì§ íìí ì¬ì© 기ë¡ì´ ììµëë¤.', grove_less: 'ì ì', grove_more: 'ë§ì', grove_none: 'ì¬ì© ìì', grove_total: 'ìµê·¼ 1ë ', grove_active_days: 'ì¼ ì¬ì©', 93 // ì´ì ê³ì 구ê°(#1106). ã~íë©´ ìëëë¡ãë¥ ìë´ë¥¼ ë£ì§ ë§ ê² â ì¬ì ë site/shared/ext-detect.js 94 // CT_CLAIM_TEXT ì 주ì. 문구ë 결과를 먼ì ë§íê³ , ãì ë¶/모ë 기ë¡ãì´ë¼ê³ ë§íì§ ìëë¤. 95 grove_linked_legend: 'ì´ì ê³ì 기ë¡', grove_linked_tip: 'ì´ì ê³ì {0}', 96 grove_linked_seg: '{0} ~ {1} · ì´ì ê³ì {2}', 97 grove_linked_stats: '{0} · {1}ì¼', 98 grove_linked_hidden: 'ê²¹ì¹ë {0}ì¼ì ì´ ê³ì 기ë¡ì¼ë¡ íìë©ëë¤', 99 grove_linked_all_hidden: 'ì´ êµ¬ê°ì {0}ì¼ì ì´ ê³ì ìë 기ë¡ì´ ìì´, ìëì ìë¡ ì±ìì§ ë ì ììµëë¤.', 100 grove_linked_empty: 'ì´ ê¸°ê°ì ë¨ì ìë ì¼ë³ 기ë¡ì´ ììµëë¤.', 101 grove_linked_unavailable: 'ì´ êµ¬ê°ì ë¶ë¬ì¤ì§ 못íìµëë¤. 기ë¡ì´ ìë¤ë ë»ì´ ìëë¼ ì´ë²ì 못 ì½ìë¤ë ë»ì ëë¤ â ìë¡ê³ ì¹¨í´ ì£¼ì¸ì.', 102 grove_linked_org_note: 'org를 골ë¼ë ì´ì ê³ì 구ê°ì ê·¸ëë¡ íìë©ëë¤ â ì´ êµ¬ê°ì orgì 무ê´í©ëë¤.', 103 grove_linked_summary_note: 'ì í©ê³ë ì´ ê³ì 기ë¡ë§ ì ëë¤. ì´ì ê³ì 구ê°ì ìëì ë°ë¡ ì ììµëë¤.', 104 scale_raw: 'ìì§', scale_hourly: 'ìê°', scale_daily: 'ì¼', yaxis_fixed: 'Yì¶ 100%', yaxis_auto: 'Yì¶ ìë', 105 chart_5h_util: '5ìê° ì¬ì©ë¥ ì¶ì´', chart_7d_util: '7ì¼ ì¬ì©ë¥ ì¶ì´', 106 // Window captions derived from the span the provider reported, for plans whose window is 107 // not the slot's nominal length (ChatGPT Free/Go report 30 days in the 7d slot). The static 108 // chart_5h_util / chart_7d_util above stay as the fallback when no span was reported. #954 109 chart_window_util: '{0} ì¬ì©ë¥ ì¶ì´', 110 chart_window_util_sub: '{0} ìëì° ì¬ì©ë¥ (%) · íëë³ íë íì', 111 window_hours: '{0}ìê°', window_days: '{0}ì¼', 112 chart_5h_util_sub: '5ìê° ìëì° ì¬ì©ë¥ (%) · íëë³ íë íì', 113 chart_7d_util_sub: '7ì¼ ìëì° ì¬ì©ë¥ (%) · íëë³ íë íì', 114 chart_spending: 'ì¶ê° ì¬ì©ë ì¶ì´', chart_spending_sub: 'ìë³ ì¬ì© ê¸ì¡($) · íë ë° ìì° íì´ì¤ íì', 115 chart_5h_token: '5h ì¶ì í í° ì¬ì©ë', chart_7d_token: '7d ì¶ì í í° ì¬ì©ë', 116 chart_token_sub: 'ì¬ì©ë¥ ê¸°ë° í í° ì¶ì · íëë³ íë íì', 117 chart_token_disclaimer: '* 커뮤ëí° ê´ì¸¡ì¹ ê¸°ë° ì¶ì â Anthropic ë¯¸ê³µê° ìì¹', 118 chart_5h_peak: '5h ì¶ì í í° (14ì¼)', chart_7d_peak: '7d ì¶ì í í° (14ì¼)', 119 chart_peak_5h_sub: '5ìê° ìëì°ë³ ì¶ì ìµë í í° Â· íëë³ íë íì', 120 chart_peak_7d_sub: '7ì¼ ìëì°ë³ ì¶ì ìµë í í° Â· íëë³ íë íì', 121 sec_kpi: 'íì¬ ìí', sec_plan_compare: 'íë ë¹êµ', 122 ce_title: 'ë¹ì© í¨ì¨ì±', ce_tpd: 'tokens/$', ce_rank_label: 'ì ì²´ ìì', ce_top_pct: 'ìì {0}%', ce_users: 'ëª ì¤', 123 ce_desc: 'ì 구ë ë£ $1ë¹ ì¤ì ì¬ì©í ì¶ì í í°ì ëë¤. ìì¹ê° ë®ë¤ë©´ íë ëë¹ ì¬ì©ëì´ ì ë¤ë ë»ì¼ë¡, ë ì ë ´í íëì¼ë¡ ì ííê±°ë íì¬ íëì ë ì ê·¹ì ì¼ë¡ íì©íë ê²ì ê³ ë ¤í´ ë³´ì¸ì.', 124 ce_avg: 'íê· ', ce_top10: 'ìì 10%', ce_org: 'ì°ë¦¬ ì¡°ì§', ce_me: 'ë', 125 ce_vs_top10: 'ìì 10% ëë¹ {0}% ìì¤', ce_vs_org: 'ì¡°ì§ íê· ë³´ë¤ {0}% {1}', 126 ce_higher: 'ëìµëë¤', ce_lower: 'ë®ìµëë¤', 127 account_title: 'ê³ì ì ë³´', 128 ds_5h_window: '5ìê° ìëì°', ds_7d_window: '7ì¼ ìëì°', ds_budget: 'ê· ë± ìë¹ ê¸°ì¤', 129 ds_budget_pace: 'ìì° íì´ì¤', ds_spending: 'ì¬ì© ê¸ì¡', ds_cap: 'ì¬ì© íë', 130 ds_omelette_7d: 'Design 7ì¼', ds_sonnet_7d: 'Sonnet 7ì¼', 131 // Neutral label for the scoped weekly slot when the model name can't be stated for THIS 132 // account (different accounts carry different scoped models). See _scopedSlotLabel(). 133 // Appended to the green series' name only when both scoped series resolved to the SAME
134 // string â ECharts merges same-named series into one legend item. See _scopedSlotNames(). 135 sfx_green: '(ë ¹ì)', 136 // {0} = the model actually in that scoped slot, resolved exactly like the chart legend 137 // (_scopedSlotNames). Never hardcode a model name here â the slot's model rotates. 138 plus_scoped: ' + {0}(주í©)', plus_scoped2: ' + {0}(ë ¹ì)', 139 // Per-feature limit card (#1150). Deliberately NOT next to the plan gauges' copy: this bucket 140 // has its own quota and its own clock, and the note is what stops a reader from comparing it 141 // to the plan windows above. The model name is supplied by the row, never hardcoded. 142 fl_window_weekly: '주ê°', 143 fl_note: 'íë íëì ë³ê°ë¡ ê³ì°ëë 기ë¥ë³ íëì ëë¤', 144 fl_reset: '{0} ì´ê¸°í', 145 axis_5h_util: '5h ì¬ì©ë¥ (%)', axis_7d_util: '7d ì¬ì©ë¥ (%)', 146 axis_5h_token: '5h ì¶ì í í°', axis_7d_token: '7d ì¶ì í í°', 147 axis_5h_peak: '5h ì¶ì í í° Peak', axis_7d_peak: '7d ì¶ì í í° Peak', 148 ann_limit: 'íë', ann_pro_limit: 'íë', ann_max5x_limit: 'íë', 149 pro_equiv: 'Pro ëë¹ ', 150 acct_email: 'ì´ë©ì¼', acct_plan: 'íë', acct_renewal: 'ê°±ì ì¼', 151 acct_first_seen: 'ìµì´ ìì§', acct_last_seen: 'ìµê·¼ ìì§', acct_snapshots: 'ì¤ë ì·', 152 acct_pending_change: 'ë³ê²½ ìì ', acct_recent: 'ê° (ìµê·¼)', 153 grove_warning: 'â íìµ ë°ì´í° ì ê³µì´ ì¼ì ¸ ììµëë¤', grove_turn_off: 'ì¤ì ìì ë기 â', 154 ds_5h_peak: '5h Peak', ds_7d_peak: '7d Peak', 155 ds_omelette_peak: 'Design Peak', ds_sonnet_peak: 'Sonnet Peak', 156 ds_5h_token: '5h ì¶ì í í°', ds_7d_token: '7d ì¶ì í í°', 157 caution_80: '주ì (80%)', 158 rec_action_upgrade: 'ì ê·¸ë ì´ë ê¶ì¥', 159 rec_action_downgrade: 'ë¤ì´ê·¸ë ì´ë ê°ë¥', 160 rec_action_good: 'íì¬ íë ì í©', 161 rec_method: 'ìµê·¼ 14ì¼ ì¬ì©ë í¨í´(5ìê°Â·7ì¼ ì¬ì©ë¥ )ì ë¶ìí ê²°ê³¼ì ëë¤.', 162 rec_mode_current_label: 'ì¶ì² ì±í¥', 163 rec_mode_v_cost: 'ë¹ì© ì ê°', rec_mode_v_balanced: 'ê· í', rec_mode_v_convenience: 'ìì°ì± ì°ì ', 164 rec_mode_change: 'ì¤ì ìì ë³ê²½ â', 165 rec_action_high: 'ì¬ì©ë 주ì', 166 rec_action_collecting: 'ë°ì´í° ìì§ ì¤', 167 rec_btn_upgrade: '{0}(ì¼)ë¡ ì ê·¸ë ì´ë', 168 rec_btn_downgrade: '{0}(ì¼)ë¡ ë¤ì´ê·¸ë ì´ë', 169 rec_btn_dismiss: 'ì§ê¸ì ê´ì°®ìì', 170 rec_cost_up: 'ì ${0} â ${1} (+${2})', 171 rec_cost_down: 'ì ${0} â ${1} (${2} ì ì½)', 172 rec_reason_7d_high: '7ì¼ ì¬ì©ë¥ íê· {0}% â íë ì´ê³¼ ìí', 173 rec_reason_5h_limit: '5ìê° íë ë¹ë² ëë¬ ({0}%)', 174 rec_reason_7d_low: '7ì¼ ì¬ì©ë¥ ìµë {0}% â ê³¼ì ì§ì¶', 175 rec_reason_urgent: 'ê¸´ê¸ â íë ì´ê³¼ ìë°', 176 rec_reason_moderate: 'íê· í¼í¬ {0}% â ì ê·¸ë ì´ë ê²í ', 177 rec_collecting_progress: 'ë°ì´í° ìì§ ì¤ ({0}/{1}ì¼)', 178 view_as_banner: '{0} (ì¼)ë¡ ì¡°í ì¤', 179 view_as_back: 'ë´ ëìë³´ëë¡ ëìê°ê¸°', 180 fm_title: 'íë ì í©ë', 181 fm_col_plan: 'íë', 182 fm_col_cost: 'ë¹ì©', 183 fm_window_5h: 'ìµê·¼ 5ìê°', 184 fm_window_24h: 'ìµê·¼ 24ìê°', 185 fm_window_7d: 'ìµê·¼ 7ì¼', 186 fm_window_14d: 'ìµê·¼ 14ì¼', 187 fm_savings: '{0} ì í ì ì ${1} ì ì½', 188 fm_upgrade_to: '{0}(ì¼)ë¡ ì ê·¸ë ì´ëê° íìí©ëë¤', 189 fm_overspend_note: 'íì¬ {0} ëë¹ ì©ëì ëë¶ë¶ ì¬ì©íì§ ìê³ ìì', 190 fm_all_fit: '모ë 기ê°ìì {0}ì¼ë¡ ì¶©ë¶', 191 fm_bottleneck_5h: 'ë¨ê¸°ê° ì§ì¤ ì¬ì©ì´ ë§ì. ì¬ì© í¨í´ì ë¶ì°íë©´ íì íëì¼ë¡ ì¶©ë¶', 192 fm_bottleneck_7d: 'ì ë°ì ì¼ë¡ ì¬ì©ëì´ ë§ì. ìì íë íì', 193 fm_tip_exceeded: '5h {0}% / 7d {1}% â íë(100%)를 ëì´ ì¬ì©ì´ ì´ë µìµëë¤', 194 fm_tip_tight: '5h {0}% / 7d {1}% â íëê¹ì§ {2}% ì¬ì ë¡ ë¹ ë¯í©ëë¤', 195 fm_tip_fit: '5h {0}% / 7d {1}% â ì¶©ë¶í ì¬ì ê° ììµëë¤', 196 fm_tip_overspend: '5h {0}% / 7d {1}% â ì©ëì ëë¶ë¶ì ì°ì§ ììµëë¤', 197 fm_quality_low_coverage: 'ë°ì´í° 커ë²ë¦¬ì§ {0}%ë¡ ë¶ì¡±', 198 fm_quality_gap: 'ìµë {0}ìê° ì°ì 공백', 199 fm_quality_collecting_days: '{0}ì¼ í íì ê°ë¥', 200 fm_quality_nodata: 'ì´ ê¸°ê°ì ë°ì´í° ìì', 201 fm_need_more_data: 'ë°ì´í°ê° ë ìì´ë©´ íë ì¶ì²ì´ ê°ë¥í©ëë¤', 202 fm_low_confidence: '(ì¼ë¶ ê¸°ê° ë°ì´í° ë¶ì¡±ì¼ë¡ ì°¸ê³ ì©)', 203 fm_partial_tip: 'ì íë ë°ì´í° ê¸°ë° ({0}ê° ì¤ë ì·)', fm_partial_note: '(ì¼ë¶ íì ì ì íë ë°ì´í° 기ë°)', 204 fm_lv_exceeded: 'ë¶ì¡±', fm_lv_tight: 'ë¹ ë¯', fm_lv_fit: 'ì í©', fm_lv_overspend: 'ê³¼ë¤', fm_lv_unknown: 'íì ë¶ê°', fm_lv_partial: 'ì íë ë°ì´í° 기ë°', 205 fm_badge_current: 'íì¬', fm_badge_rec: 'ì¶ì²', 206 fm_msg_upgrade: '{0} (${1}/{2})ë¡ ì ê·¸ë ì´ë를 ì¶ì²í©ëë¤.', 207 fm_msg_downgrade: '{0} (${1}/{2})ë¡ ë³ê²½íë©´ ì ${3} ì ì½ì´ ê°ë¥í©ëë¤.', 208 fm_per_seat: 'seat', 209 fm_group_consumer: 'ê°ì¸', fm_group_team: 'í', 210 fm_note_fitness_upgrade_rec_ok: 'ì í©ë ë¶ìì ìì íëì ì ìíì§ë§, ìµê·¼ ì¬ì© í¨í´ì¼ë¡ë íì¬ íëì¼ë¡ ì¶©ë¶í©ëë¤.', 211 fm_note_rec_upgrade_fitness_ok: 'ìµê·¼ ë¨ê¸°ê° ì§ì¤ ì¬ì©ì¼ë¡ ì ê·¸ë ì´ëê° ê¶ì¥ëì§ë§, ì¥ê¸° ì í©ë 기ì¤ì¼ë¡ë íì¬ íëì´ ì í©í©ëë¤.', 212 fm_note_rec_upgrade_fitness_down: 'ìµê·¼ ì¬ì© ê¸ì¦ì¼ë¡ ì ê·¸ë ì´ëê° ê¶ì¥ëì§ë§, ì¥ê¸° ì í©ë 기ì¤ì¼ë¡ë íì íëë ê°ë¥í©ëë¤. ì¼ìì ê¸ì¦ì¼ ì ììµëë¤.', 213 rt_title: '리ì íì´ë°', 214 rt_next_7d: 'ë¤ì 7ì¼ ë¦¬ì ', 215 rt_next_5h: 'ë¤ì 5ìê° ë¦¬ì ', 216 rt_change_early: 'ìì ë³´ë¤ ë¹ ë¥¸ 리ì ë°ì', 217 rt_change_early_desc: '{2}ì ì¬ì©ëì´ ìì ({0})ë³´ë¤ ì¼ì° ì´ê¸°íëì´ ìë¡ì´ 7ì¼ ì£¼ê¸°ê° ììëììµëë¤. ë¤ì 리ì ì {1} ìì ì ëë¤. ì°¨í¸ì {0} 기ì¤ì ì ë³ê²½ ì ìì ì´ìë 리ì ìì ì ëë¤.', 218 rt_change_5h_desc: '5ìê° ë¦¬ì ì´ {0}ìì {1}(ì¼)ë¡ ë³ê²½ëììµëë¤.', 219 sb_at_limit: 'íëì ëë¬í ìíì ëë¤', sb_at_limit_sub: '리ì ê¹ì§ {0}',
220 sb_safe: 'íì¬ ìëë¼ë©´ íëê¹ì§ ì¬ì ìì', sb_safe_sub: 'ìì ì¬ì : {0}', 221 sb_tight: 'ë¹ ë¯í¨ â {0}ë¶í° íë ë기 ìì', sb_tight_sub: '리ì ê¹ì§ ì½ {0} ë기', 222 sb_nodata: 'ì측 ì¤ë¹ ì¤ì´ìì', sb_nodata_sub: 'ë°ì´í°ê° ì¡°ê¸ ë ìì´ë©´ 5ìê°Â·ì£¼ê° íë ëë¬ ìì ì ì측í´ë릴ê²ì.', 223 sb_limit_at: '{0} íë ëë¬ ìì', 224 // Projected level without an arrival time â the projector is discount-only, so a window that 225 // will finish near the cap often never crosses it and has no honest hit time to show. 226 sb_projected: '{0} 리ì ì ~{1}% ìì', 227 sb_reset_wait: '리ì : {0} (ì½ {1} ë기)', 228 predict_at_reset: '리ì ì ~{0}% ìì', 229 predict_limit_at: '{0} íë ëë¬ ìì', 230 predict_basis: 'ìê°ë¹ +{0}% · ìµê·¼ {1} 기ì¤', 231 limit_history_title: 'ìµê·¼ 7ì¼ íë ì´ê³¼ ì´ë ¥', 232 limit_history_7d: '7d íë ì´ê³¼ {0}í · ì´ ë기 ì½ {1}', 233 limit_history_5h: '5h íë ì´ê³¼ {0}í · ì´ ë기 ì½ {1}', 234 limit_history_none: 'ìµê·¼ 7ì¼ê° íë ì´ê³¼ ìì', 235 summary_today: 'ì¤ë ìì½', ws_title: 'ìµê·¼ ì¼ì£¼ì¼ ìì½', 236 wait_time_title: 'íë ì í ìê° (14ì¼)', wait_time_limit: 'íë', wait_time_total: 'í©ê³', 237 wait_time_note: '100% ëë¬ í 리ì ê¹ì§ì ìê° í©ì°', min_short: 'ë¶', 238 stats_weekday_avg: 'íì¼ íê· ', stats_weekend_avg: 'ì£¼ë§ íê· ', 239 stats_wd_higher: '주ë§ì´ {0}% ë ëì', stats_wd_lower: '주ë§ì´ {0}% ë ë®ì', stats_wd_same: 'íì¼Â·ì£¼ë§ ì ì¬', 240 share_stats_title: 'ëì ê³µì ì¤ì ', share_stats_shares: 'í ê³µì ', share_stats_views: 'í ì¡°í', 241 dt_title: 'ì¼ë³ í¸ë ë', 242 wt_title: 'ì£¼ë³ í¸ë ë', wt_this_week: 'ì´ë² 주', wt_last_week: 'ì§ë 주', wt_change: 'ë³í', wt_no_data: 'ì§ë 주 ë°ì´í° ìì', 243 pr_title: 'íë ì뮬ë ì´ì ', pr_period: 'ìµê·¼ {0}ì¼', pr_current: 'íì¬ íë', pr_recommend_keep: 'íì¬ íë ì ì§', pr_recommend_switch: '{0} ì í ê°ë¥', 244 pr_exceed: 'íë ì´ê³¼ {0}/{1}ì¼', pr_impossible: 'ì¬ì© ë¶ê°', pr_risky: '리ì¤í¬ ìì', pr_stable: 'ìì ì ', pr_acceptable: 'ì í ê°ë¥', 245 pr_unit_d: 'ì¼', pr_unit_mo: 'ì', pr_unit_seat_mo: 'ì¸/ì', pr_limit: 'íë', pr_far_exceeded: 'ëí ì´ê³¼', pr_slightly_exceeded: 'ìí ì´ê³¼', 246 pr_verdict_impossible: 'ì¬ì© ë¶ê° â íë ì´ê³¼ê° ë무 ì¦ì ì ì ì¬ì©ì´ ì´ë µìµëë¤', pr_verdict_risky: 'ìí â ì주 íëì ëë¬íì¬ ìì ì¤ë¨ì´ ë°ìí©ëë¤', pr_verdict_acceptable: 'ì ì â ê°ë íëì ëë¬íì§ë§ ëì²´ë¡ ìì ì ì ëë¤', pr_verdict_stable: 'ìì â íë ì¬ì ê° ì¶©ë¶í©ëë¤', 247 pr_not_viable: 'ì¬ì© ë¶ê°', pr_interruption_cycle: '{0}ì¼ì í ë² ìì ì¤ë¨', pr_exceeded_days_label: 'íëë³ íë ì´ê³¼ì¼ ({0}ì¼ ê¸°ì¤)', pr_change_plan: 'Claude.aiìì íë ë³ê²½ â', 248 pr_why: 'ì ë¤ì´ê·¸ë ì´ëê° ì´ë ¤ì´ê°?', pr_why_up: 'ì ê·¸ë ì´ëê° íìí ì´ì ', pr_tip: 'ì ì½ í', pr_tip_unused: 'íì¬ íëì {0}%를 ì¬ì©íì§ ìê³ ììµëë¤', pr_tip_mid: 'ì¤ê° í°ì´(Max 10x ë±)ê° ì¶ìëë©´ ë¹ì© ì ê° ê°ë¥', pr_pattern: '5h ì¼ë³ ìµë ì¬ì©ë¥ ', pr_insufficient: 'ë°ì´í°ê° ì¶©ë¶íì§ ììµëë¤ ({0}ì¼)', 249 pc_title: 'ê°ì íë ì¬ì©ìì ë¹êµ', pc_peers: '{0}ëª ê¸°ì¤', pc_score: 'íì©ë ì ì', pc_plan_avg: '{0} íê· ', pc_percentile: 'ë°±ë¶ì', pc_top: 'ìì {0}%', pc_rank: '{0}ëª ì¤ {1}ì', 250 wrapped_cta_title: 'ëì Claude Tuner Wrapped', wrapped_cta_desc: 'ì ì²´ ì¬ì© ì¬ì ì íëì â í í°Â·ì°ì ì¬ì©Â·íë ìê°ë·ìì¼', wrapped_cta_btn: 'ë´ Wrapped 보기', wrapped_title: 'ëì Claude Tuner Wrapped', wrapped_top_pct: 'ìì {0}%', wrapped_percentile_label: 'ê°ì íë ë´ ìì', wrapped_tokens_label: 'ì´ë² 주 í í°', wrapped_eff_label: 'íì©ë ì ì', wrapped_7d_label: '7ì¼ ì¬ì©ë¥ ', wrapped_peak_label: 'ê°ì¥ íë°í ìê°', wrapped_activity: 'ìê°ëë³ íë', wrapped_no_data: 'ë°ì´í°ë¥¼ ë 모ì ë¤ ë¤ì ìëí´ ì£¼ì¸ì.', 251 wr_greet: '{0}ë, ì´ë§í¼ì´ë í¨ê»íì´ì', wr_range_all: 'ì ì²´', wr_range_180: '6M', wr_range_90: '3M', wr_range_30: '30d', wr_range_7: '7d', wr_pct_badge: 'ëì¼ {0} íë ìì {1}%', wr_rank_of: '{0}ëª ì¤ {1}ì', wr_close: 'ë«ê¸°', wr_loading: 'ë¶ë¬ì¤ë ì¤â¦', wr_empty: 'ìì§ ë³´ì¬ë릴 ì¬ì© ë°ì´í°ê° ì¶©ë¶íì§ ììì.', wr_error: 'ë°ì´í°ë¥¼ ë¶ë¬ì¤ì§ 못íì´ì.', wr_retry: 'ë¤ì ìë', 252 wr_total_tokens: 'ì´ í í°', wr_daily_avg: 'ì¼ íê· í í°', wr_active_days: 'íì± ì¼ì', wr_peak_day: 'ìµê³ ì¬ì©ì¼', wr_cur_streak: 'íì¬ ì°ì ì¼ì', wr_max_streak: 'ìµì¥ ì°ì ì¼ì', wr_peak_hour: 'ìµë¤ ì¬ì© ìê°', wr_busy_dow: 'ê°ì¥ íë°í ìì¼', wr_unit_day: 'ì¼', wr_activity: 'íë íí¸ë§µ', wr_hm_hint: 'í 칸 = í루 · ì§í ìë¡ ì¬ì©ë â', wr_share: 'ì´ë¯¸ì§ë¡ ê³µì ', wr_book_cmp: '{1}ë³´ë¤ ì½ {0}ë°° ë ë§ì í í°ì ì¬ì©íì´ì', wr_none: 'â', wr_prev_account_note: 'ì´ ì¹´ëë ì´ ê³ì 기ë¡ë§ ì ëë¤. ì´ì ê³ì 구ê°ì 1ë ì¬ì©ë ìëìì ë³¼ ì ììµëë¤.', 253 pc_avg_title: 'íë íê· ëë¹', pc_7d_util: '7ì¼ ì¬ì©ë¥ ', pc_daily_tokens: 'ì¼ì¼ í í°', pc_limit_hits: 'íë ì´ê³¼/주', pc_cost_eff: 'ë¹ì© í¨ì¨ì±', pc_tokens_per_dollar: 'í í°/$', pc_avg: 'íê· {0}', pc_times: 'í', 254 pc_my_position: 'ëì ìì¹', pc_cost_eff_score: 'ë¹ì© í¨ì¨', pc_see_insights: 'ì¸ì¬ì´í¸ìì ì ì²´ ìì 보기 â', 255 pc_dist_title: 'ì¬ì©ë ë¶í¬', pc_dist_me: 'ë', pc_dist_users: 'ëª ', 256 pc_not_enough: 'ê°ì íë ì¬ì©ìê° ë¶ì¡±íì¬ ë¹êµí ì ììµëë¤', 257 pc_score_how: 'ì°ì¶ ë°©ì 보기', 258 pc_score_base: '기본 ì ì: 7ì¼ íê· ì¬ì©ë¥ 기ë°',
259 pc_score_base_desc: '0~40% â 0~80ì / 40~70% â 80~100ì / 70~90% â 100ì (ë§ì ) / 90%+ â ê°ì (ê³¼ì¬ì©)', 260 pc_score_active: 'íëì¼ ë³´ì ', 261 pc_score_active_desc: 'ìµê·¼ 7ì¼ ì¤ ì¤ì ì¬ì©ì¼ì´ ë§ììë¡ ê°ì° (ìµë Ã1.0, ìµì Ã0.7)', 262 pc_score_penalty: 'íë ì´ê³¼ ê°ì ', 263 pc_score_penalty_desc: 'íëì ëë¬í ì¼ì à 3ì ê°ì ', 264 pc_score_formula: 'ìµì¢ = 기본 ì ì à íëì¼ ë³´ì - íë ì´ê³¼ ê°ì (0~100)', 265 // Review nudge 266 // â auto-move notice (#966). {0} = the org that went silent, {1} = the org â moved to. 267 pin_move_text: '{0} ì¡°ì§ì´ ìì§ì ë©ì¶°ì ëí ì¡°ì§ì {1}(ì¼)ë¡ ì®ê²¼ìµëë¤. ìì½ íëê³¼ 기본 íë©´ì´ ì´ ì¡°ì§ ê¸°ì¤ì¼ë¡ ë°ëëë¤.', 268 pin_move_revert: 'ëë리기', 269 pin_move_revert_unselected: '{0} ì¡°ì§ì´ ë ì´ì ìì§ ëìì´ ìëë¼ ëë릴 ì ììµëë¤. ì¤ì > íì± ì¡°ì§ ê´ë¦¬ìì 먼ì ì íí´ì£¼ì¸ì.', 270 pin_move_revert_failed: 'ëëë¦¬ì§ ëª»íìµëë¤. ì ì í ë¤ì ìëí´ì£¼ì¸ì.', 271 pin_move_revert_all_hidden: 'ì íí ì¡°ì§ì´ 모ë íìì ì¨ê¹ ì²ë¦¬ëì´ ëë릴 ì ììµëë¤. ì¤ì ìì ì¡°ì§ íë ì´ìì íì ê³µê°í´ì£¼ì¸ì.', 272 review_nudge_text: 'ì¬ë¬ë¶ì 리뷰 íëê° 1ì¸ ê°ë°ì íë¡ì í¸ì í° íì´ ë©ëë¤. í¬ë¡¬ ì¤í ì´ì ë³ì ê³¼ 리뷰 í ì¤ ë¨ê²¨ì£¼ìê³ , 주ë³ìë ë리ë리 ìë ¤ì£¼ìë©´ ì ë§ ê°ì¬íê² ìµëë¤ ð', 273 review_nudge_cta: '리뷰 ë¨ê¸°ê¸° â', 274 org_all: 'ì ì²´', 275 org_more: 'ë보기', 276 org_less: 'ì 기', 277 org_stale_tooltip: 'ìì§ì´ ì¤ë¨ëììµëë¤. í´ë¦íì¬ ë¤ì ë¡ê·¸ì¸íì¸ì.', 278 org_stale_tooltip_noext: 'ë°ì´í° ìì§ì´ ì¤ë¨ëììµëë¤.', 279 stale_banner_text: 'ë°ì´í° ìì§ì´ {0} ì´ì ì¤ë¨ëììµëë¤. ì¸ì ì´ ë§ë£ëìê±°ë íì¥ íë¡ê·¸ë¨ì´ ë¹íì±íëìì ì ììµëë¤.', 280 stale_banner_cta: 'ë¤ì ë¡ê·¸ì¸ â', 281 // Blocked â stale. The generic banner above blames an expired session or a disabled 282 // extension; for these accounts BOTH are wrong â the extension is running fine and sending, 283 // the server is refusing it. Telling them to re-login to Claude.ai wastes their time on the 284 // one screen where we can finally tell them the truth. 285 blocked_banner_title: 'ì¬ì©ëì´ ìë²ì ì ì¥ëì§ ìê³ ììµëë¤', 286 blocked_banner_text: 'íì¥ íë¡ê·¸ë¨ì ì ì ìë ì¤ì´ì§ë§, ì´ ê³ì ì ì´ì ë¡ê·¸ì¸ì´ íìí´ì ìë²ê° ë°ì´í°ë¥¼ ë°ì§ 못íê³ ììµëë¤. ìë ì«ìë {0} ì ì ë©ì¶ ê°ì ëë¤.', 287 // Zero-snapshot variant. A blocked account can have NEVER stored anything (several such 288 // installs measured 2026-07-27), and then there is no "stopped N ago" to state â the elapsed 289 // time is Infinity and the duration sentence must be dropped entirely, not printed. 290 blocked_banner_text_nodata: 'íì¥ íë¡ê·¸ë¨ì ì ì ìë ì¤ì´ì§ë§, ì´ ê³ì ì ì´ì ë¡ê·¸ì¸ì´ íìí´ì ìë²ê° ë°ì´í°ë¥¼ ë°ì§ 못íê³ ììµëë¤. ìì§ ì ì¥ë ì¬ì©ëì´ ììµëë¤.', 291 blocked_banner_cta: 'ë¸ë¼ì°ì í´ë°ì Claude Tuner ìì´ì½ì ëë¬ ì¸ì¦íì¸ì', 292 // No-data banner: this account has zero snapshots (not a stale/expired session). 293 nodata_banner_text: 'ì´ ê³ì ({0})ìë ìì§ ìì§ë ë°ì´í°ê° ììµëë¤. íì¥ íë¡ê·¸ë¨ì´ ë¤ë¥¸ ê³ì ì¼ë¡ ìì§ ì¤ì¼ ì ìì´ì â íì¥ íì ìë¨ì ì´ë©ì¼ì íì¸í´ 주ì¸ì.', 294 nodata_pending_text: 'ìì§ì ë°©ê¸ ììíì´ì. ì ì í ì¬ì©ëì´ íìë©ëë¤.', 295 // Account mismatch: the extension collects for a different account than the one signed in. 296 acct_mismatch_text: 'íì¥ íë¡ê·¸ë¨ì <strong>{0}</strong> ê³ì ì¼ë¡ ìì§ ì¤ì ëë¤. ëìë³´ëë ê°ì ê³ì ì¼ë¡ ë¡ê·¸ì¸í´ì¼ ì¬ì©ëì´ ë³´ì¬ì.', 297 acct_mismatch_cta: 'ì´ ê³ì ì¼ë¡ ì í â', 298 // Deselected-org banner: this org is intentionally excluded from the active-org cap, 299 // so re-login won't help â point the user at active-org settings instead. 300 deselected_banner_text: 'ì´ ì¡°ì§ì íì± ì¡°ì§ìì ì ì¸ëì´ ì ë°ì´í°ê° ìì§ëì§ ììµëë¤. 과거 ë°ì´í°ë ê·¸ëë¡ ë³¼ ì ìì´ì.', 301 deselected_banner_cta: 'íì± ì¡°ì§ ê´ë¦¬ â', 302 deselected_tooltip: 'íì± ì¡°ì§ìì ì ì¸ëì´ ìì§ì´ ì¤ë¨ëììµëë¤. ì¤ì ìì ë¤ì í¬í¨í ì ìì´ì.', 303 // 3-org cap drop: collection is silently stopped for orgs outside the active-org selection. 304 capdrop_banner_text: 'ê³ì {0}ê°ê° ìì§ëì§ ìê³ ììµëë¤. íì± ì¡°ì§ {1}ê° íëê° ì°¼ìµëë¤.', 305 capdrop_banner_room: 'ê³ì {0}ê°ê° ìì§ëì§ ìê³ ììµëë¤. íì± ì¡°ì§ì¼ë¡ ì ííë©´ ìì§ì´ ììë©ëë¤.', 306 capdrop_banner_cta: 'ìì§í ì¡°ì§ ê³ ë¥´ê¸° â', 307 shared_banner_text: 'ì´ ë¡ê·¸ì¸ìì ìë¡ ë¤ë¥¸ ê³ì {0}ê°ê° ê°ì§ëììµëë¤. ì¬ì©ëì´ íëë¡ í©ì³ì ¸ ë³´ì¼ ì ìì´ì.', 308 shared_banner_cta: 'íì¼ë¡ ëë 보기 â', 309 org_not_supported: 'ì´ ì¡°ì§ íëììë ìì§ ì§ìëì§ ìë 기ë¥ì ëë¤.',
310 org_not_supported_detail: 'Enterprise íëì ì¬ì©ë êµ¬ì¡°ê° ë¬ë¼ ì¼ë¶ ë¶ìì ìì§ ì ê³µíì§ ëª»í©ëë¤. ì¶í ì§ì ìì ì ëë¤.', 311 // 3-org cap (active org selection). Distinct wording from the stale/login 312 // indicator so a deselected org doesn't read like a collection failure. 313 cap_chip_paused: 'íì± ì ì¸', 314 cap_modal_title: 'íì± ì¡°ì§ {cap}ê°ë¥¼ ì íí´ì£¼ì¸ì', 315 cap_modal_desc: 'íì± ì¡°ì§ì¼ë¡ ì íí ì¡°ì§ë§ ìë¡ì´ ì¬ì©ë ë°ì´í°ê° ìì§Â·ì ì¥ë©ëë¤. ìì ì ì¸ ìë¹ì¤ ì ê³µì ìí´ í ê³ì ë¹ ìµë {cap}ê°ê¹ì§ ì íí ì ìì´ì. ì§ê¸ ì¤ì ë¡ ì¬ì© ì¤ì¸ ì¡°ì§ì í¸íê² ê³ ë¥´ì¸ì â ì ííì§ ìì ì¡°ì§ì 과거 ë°ì´í°ë ê·¸ëë¡ ì ì§ëì§ë§, ì ê· ë°ì´í°ê° ìë²ì ì ì¥ëì§ë ììµëë¤. íì± ì¡°ì§ì ì¸ì ë ìµì ìì ë¤ì ë°ê¿ ì ììµëë¤.', 316 cap_modal_apply_default: '기본ê°(ìµê·¼ íì© ìì {cap}ê°) ì ì©', 317 cap_modal_save: 'ì ì¥', 318 cap_modal_count: '{n} / {cap} ì íë¨', 319 cap_modal_min_one: 'ìµì 1ê°ë ì íí´ì¼ í©ëë¤.', 320 cap_settings_title: 'íì± ì¡°ì§ ê´ë¦¬', 321 cap_settings_desc: 'ìì§ ëì ì¡°ì§ì ìµë 3ê°ê¹ì§ ì íí©ëë¤. ì ííì§ ìì ì¡°ì§ì ì ë°ì´í°ê° ìì§ëì§ ììµëë¤.', 322 cap_settings_saved: 'ì ì¥ëììµëë¤', 323 cap_settings_save_failed: 'ì ì¥ ì¤í¨', 324 }, 325 en: { 326 nav_home: 'Home', nav_my_dash: 'My Dashboard', nav_team: 'Team', nav_insights: 'Insights', nav_feedback: 'Feedback', btn_logout: 'Logout', 327 login_title: 'Dashboard', login_desc: 'Sign in to view your usage data.', login_demo_link: 'Or try the demo with sample data â', 328 login_or: 'or', claude_login_toggle: 'Sign in another way', claude_login_btn: 'Sign in with the ClaudeTuner extension', claude_login_hint: 'Requires the ClaudeTuner extension (v1.12.8+)', 329 claude_login_loading: 'Signing in...', claude_login_not_logged_in: 'Please sign in to Claude.ai first', claude_login_no_data: 'No data yet. Please wait after installing the extension.', claude_login_failed: 'Sign in failed. Please try again.', claude_login_email_required: 'Please sign in with your email.', claude_login_not_installed: 'The ClaudeTuner extension is not installed or is disabled. Install it and try again, or sign in with email.', claude_login_install: 'Install', 330 email_login_toggle: 'Sign in with email', email_login_send: 'Send code', email_verify_btn: 'Verify', 331 email_auth_invalid: 'Please enter a valid email address.', email_auth_rate_limit: 'Too many requests. Please try again later.', email_auth_send_error: 'Failed to send code.', email_auth_network_error: 'Could not reach the server. Check your network (firewall/proxy) and try again.', email_verify_sent: 'Code sent to {email}.', email_verify_invalid: 'Please enter the 6-digit code.', email_verify_wrong: 'Invalid or expired code.', email_login_signing_in: 'Signing inâ¦', email_login_link_expired: 'This sign-in link has expired. Please request a new code below.', 332 loading: 'Loading data...', loading_fail: 'Failed to load data. Please try again later.', 333 empty_title: 'No data collected yet', 334 empty_desc: 'Install the Chrome extension and sign in to Claude.ai<br>to start collecting usage data automatically.', 335 empty_link: 'Install from Chrome Web Store â', 336 status_danger: 'Near Limit', status_warn: 'Caution', status_ok: 'Normal', 337 rec_no_data: 'Insufficient data.', 338 rec_data_growing: 'Collecting data. At least 3 days of data needed for accurate recommendations.', 339 rec_upgrade_max5x: 'Upgrading to Max 5x is recommended. You\'ll get 5x more capacity.', 340 rec_upgrade_max20x: 'Consider upgrading to Max 20x.', 341 rec_upgrade_general: 'Consider a higher plan.', 342 rec_high_max20x: 'Your recent usage is high. Be mindful of the reset cycle.', 343 rec_high_max20x_critical: 'Consistently high usage. You\'re on the top plan â reduce token use to stay within limits.', 344 rec_adequate: 'Moderate usage â keep an eye on trends.', 345 rec_optimize_schedule: 'Your usage is concentrated during work hours. Spreading tasks to off-hours could make your current plan sufficient.', 346 rec_upgrade_pro: 'Pro upgrade recommended â you are frequently hitting your limits.', 347 rec_downgrade_max5x: 'Your usage is low for your plan. Consider downgrading to Max 5x.', 348 rec_downgrade_pro: 'Your usage is low for your plan. Consider downgrading to Pro.', 349 rec_good: 'Your current plan is a good fit.', 350 rec_enterprise: 'No usage limits', 351 rec_team_upgrade_premium: 'Near limit â consider Premium seat', 352 rec_team_near_limit: 'Near limit â contact admin', 353 rec_team_downgrade_standard: 'Standard seat may suffice', 354 rec_team_good: 'Current seat is a good fit', 355 // ChatGPT plan recommendation (v1) â see the ko block above and docs/SPEC-chatgpt-plan-rec.md. 356 rec_cg_insufficient_data: 'Insufficient data.', 357 rec_cg_adequate: 'Your current plan fits your usage.', 358 rec_cg_at_ceiling: 'Your recent usage reached your plan limit. There is no higher plan to recommend, so spreading usage over time is the practical lever.', 359 rec_cg_at_ceiling_seat: 'Your recent usage reached your seat limit. Seat and plan changes go through your workspace admin.', 360 rec_cg_upgrade_go: 'Consider upgrading to Go â you are often hitting your limits.', 361 rec_cg_upgrade_plus: 'Plus upgrade recommended â you are frequently hitting your limits.', 362 rec_cg_upgrade_pro5x: 'Pro 100 upgrade recommended â a much higher weekly limit.', 363 rec_cg_upgrade_pro20x: 'Consider upgrading to Pro 200.', 364 rec_cg_downgrade_free: 'Your usage is low. Consider downgrading to Free.', 365 rec_cg_downgrade_go: 'Your usage is low for your plan. Consider downgrading to Go.', 366 rec_cg_downgrade_plus: 'Your usage is low for your plan. Consider downgrading to Plus.', 367 rec_cg_downgrade_pro5x: 'Your usage is low for your plan. Consider downgrading to Pro 100.', 368 rec_cg_at_limit_headline: 'At your plan limit', 369 rec_cg_low_confidence: 'Confidence is low for this plan â reporting gaps are common.', 370 rec_cg_window_note: 'Based on peak utilization over the last {0} days', 371 rec_cg_title: 'Plan Recommendation', 372 rec_cg_change_plan: 'Change plan on ChatGPT â', 373 rec_peak_recent: 'Recent peak', 374 rec_avg_peak: 'Avg peak', 375 rec_savings: 'Monthly savings', 376 rec_month: 'mo', 377 rec_data_days: 'Data collected:', 378 rec_days_unit: ' days', 379 countdown_reset: 'Reset', countdown_until: 'Resets in ', 380 renewal_expired: 'Expired', renewal_days_left: '{0} days left', 381 pending_cancel_label: 'Cancel', pending_cancel_scheduled: 'Cancellation scheduled', 382 label_7d_util: '7-Day Usage', label_5h_util: '5-Hour Usage', 383 gauge_note_chatgpt: 'This includes usage outside text chat, such as Codex. Text chat has had no cap since August 2026, so it is not counted here.', 384 no_7d_for_plan: '{0} plan has no 7-day limit', 385 no_7d_unknown_plan: 'This workspace\'s plan could not be read, so its 7-day limit is unknown', 386 usage_withheld: 'Claude isn\'t providing usage for this account', 387 usage_withheld_plan: 'Claude isn\'t providing usage on the {0} plan', 388 usage_withheld_free_tip: "Since August 2026, Claude no longer provides usage figures for Free plan accounts â they don't appear in Claude's own settings either. Usage limits still apply. They'll reappear here automatically if Claude restores them.", 389 acct_plan_unknown: 'Unknown', 390 label_14d_avg: '7-Day Usage Avg Daily Rise (14d)', label_status: 'Status', 391 label_7d_tokens: '7d Usage', label_5h_tokens: '5h Usage', 392 label_renewal: 'Renewal Date', label_pending: 'Pending Change', 393 per_day: '%/day', 394 limit_alert_soon: 'At current rate, limit reached in ~{0}', limit_alert_safe: 'Plenty of room before limit at current rate', limit_alert_no_data: 'Usage too low to predict', limit_alert_reached: 'Currently at 7d usage limit', 395 summary_peak_5h: 'Today 5h Peak', summary_busiest: 'Busiest Hour', summary_limit_hits: 'Near Limit (â¥80%)', summary_times: 'times', summary_hours: 'hours', summary_days: 'days',
396 rec_title: 'Plan Recommendation', rec_14d_avg: '14-day avg daily usage', 397 tab_util: 'Usage Trend (3 Days)', tab_token: 'Est. Tokens (3 Days)', tab_peak: 'Est. Tokens (14 Days)', tab_activity: 'Hourly Activity', 398 comp_title: 'Estimation Comparison', comp_date: 'Date (UTC)', comp_hourly: 'Hourly Sum', comp_daily: 'Daily (7d)', comp_server: 'Server Peak', comp_method: 'Method', comp_confidence: 'Confidence', 399 activity_title: 'Hourly Activity', activity_sub: 'Estimated tokens based on 5h/7d window delta', activity_disclaimer: 'Estimates may differ from actual usage', activity_today: 'Today', activity_this_week: 'Last 7 Days', activity_daily: 'Daily', activity_weekly: 'Weekly', activity_loading: 'Loading...', activity_no_data: 'No data collected for the selected period.', activity_tokens: 'Est. Tokens', heatmap_heavy: 'Heavy', heatmap_medium: 'Medium', heatmap_light: 'Light', heatmap_none: 'None', heatmap_nodata: 'No Data', 400 grove_title: 'Yearly Usage Grove', grove_sub: 'Your daily estimated-token usage at a glance, GitHub-style', grove_loading: 'Loading...', grove_no_data: 'No usage history to show yet.', grove_less: 'Less', grove_more: 'More', grove_none: 'No usage', grove_total: 'over the last year', grove_active_days: 'active days', 401 // Previous-account segments (#1106). Never offer "and it goes back" advice here â reasons are 402 // in the comment above CT_CLAIM_TEXT in site/shared/ext-detect.js. State the outcome first, 403 // and never claim a complete history: `snapshots` is on a 20-day retention. 404 grove_linked_legend: 'Previous account', grove_linked_tip: 'previous account {0}', 405 grove_linked_seg: '{0} â {1} · previous account {2}', 406 grove_linked_stats: '{0} · {1} days', 407 grove_linked_hidden: '{0} overlapping days show as this account\'s', 408 grove_linked_all_hidden: 'These {0} days are recorded under this account too, so no new day was added to the grove.', 409 grove_linked_empty: 'No daily records remain for this range.', 410 grove_linked_unavailable: 'This range could not be loaded. That does not mean there are no records â this attempt failed. Try reloading.', 411 grove_linked_org_note: 'Picking an org does not narrow a previous-account range â those ranges are org-independent.', 412 grove_linked_summary_note: 'The total above counts this account only. Previous-account ranges are listed below.', 413 scale_raw: 'Raw', scale_hourly: 'Hourly', scale_daily: 'Daily', yaxis_fixed: 'Y 100%', yaxis_auto: 'Y Auto', 414 chart_5h_util: '5-Hour Usage Trend', chart_7d_util: '7-Day Usage Trend', 415 chart_window_util: '{0} Usage Trend', 416 chart_window_util_sub: '{0} window usage (%) · Plan limits shown', 417 window_hours: '{0}-Hour', window_days: '{0}-Day', 418 chart_5h_util_sub: '5-hour window usage (%) · Plan limits shown', 419 chart_7d_util_sub: '7-day window usage (%) · Plan limits shown', 420 chart_spending: 'Extra Usage Trend', chart_spending_sub: 'Monthly spending ($) · Cap and budget pace shown', 421 chart_5h_token: '5h Est. Token Usage', chart_7d_token: '7d Est. Token Usage', 422 chart_token_sub: 'Token estimation based on usage · Plan limits shown', 423 chart_token_disclaimer: '* Community-observed estimates â Anthropic undisclosed figures', 424 chart_5h_peak: '5h Est. Tokens (14 Days)', chart_7d_peak: '7d Est. Tokens (14 Days)', 425 chart_peak_5h_sub: 'Max estimated tokens per 5h window · Plan limits shown', 426 chart_peak_7d_sub: 'Max estimated tokens per 7d window · Plan limits shown', 427 sec_kpi: 'Current Status', sec_plan_compare: 'Plan Comparison', 428 ce_title: 'Cost Efficiency', ce_tpd: 'tokens/$', ce_rank_label: 'Overall Rank', ce_top_pct: 'Top {0}%', ce_users: ' of', 429 ce_desc: 'Estimated tokens used per $1 of your monthly subscription. A low number means you\'re underutilizing your plan â consider switching to a cheaper plan or using Claude more actively.', 430 ce_avg: 'Avg', ce_top10: 'Top 10%', ce_org: 'My Org', ce_me: 'Me', 431 ce_vs_top10: '{0}% of top 10% level', ce_vs_org: '{0}% {1} than org average', 432 ce_higher: 'higher', ce_lower: 'lower', 433 account_title: 'Account Info', 434 ds_5h_window: '5-Hour Window', ds_7d_window: '7-Day Window', ds_budget: 'Budget Pace', 435 ds_budget_pace: 'Budget Pace', ds_spending: 'Spending', ds_cap: 'Spending Cap', 436 ds_omelette_7d: 'Design 7-Day', ds_sonnet_7d: 'Sonnet 7-Day', 437 sfx_green: '(green)', 438 plus_scoped: ' + {0} (orange)', plus_scoped2: ' + {0} (green)', 439 fl_window_weekly: 'weekly', 440 fl_note: 'A per-feature limit, counted separately from your plan limits', 441 fl_reset: 'resets {0}', 442 axis_5h_util: '5h Usage (%)', axis_7d_util: '7d Usage (%)', 443 axis_5h_token: '5h Est. Tokens', axis_7d_token: '7d Est. Tokens', 444 axis_5h_peak: '5h Est. Token Peak', axis_7d_peak: '7d Est. Token Peak', 445 ann_limit: 'Limit', ann_pro_limit: 'Limit', ann_max5x_limit: 'Limit', 446 pro_equiv: 'vs Pro ', 447 acct_email: 'Email', acct_plan: 'Plan', acct_renewal: 'Renewal', 448 acct_first_seen: 'First Seen', acct_last_seen: 'Last Seen', acct_snapshots: 'Snapshots', 449 acct_pending_change: 'Pending Change', acct_recent: ' recent', 450 grove_warning: 'â Training data sharing is ON', grove_turn_off: 'Turn off in settings â', 451 ds_5h_peak: '5h Peak', ds_7d_peak: '7d Peak', 452 ds_omelette_peak: 'Design Peak', ds_sonnet_peak: 'Sonnet Peak', 453 ds_5h_token: '5h Est. Tokens', ds_7d_token: '7d Est. Tokens', 454 caution_80: 'Caution (80%)', 455 rec_action_upgrade: 'Upgrade Recommended', 456 rec_action_downgrade: 'Downgrade Available', 457 rec_action_good: 'Current Plan Fits', 458 rec_method: 'Based on analysis of your last 14 days of usage (5h / 7d utilization patterns).', 459 rec_mode_current_label: 'Recommendation style', 460 rec_mode_v_cost: 'Cost saving', rec_mode_v_balanced: 'Balanced', rec_mode_v_convenience: 'Productivity first', 461 rec_mode_change: 'Change in settings â', 462 rec_action_high: 'High Usage', 463 rec_action_collecting: 'Collecting Data', 464 rec_btn_upgrade: 'Upgrade to {0}', 465 rec_btn_downgrade: 'Downgrade to {0}', 466 rec_btn_dismiss: 'Not now', 467 rec_cost_up: '${0}/mo â ${1}/mo (+${2})', 468 rec_cost_down: '${0}/mo â ${1}/mo (save ${2})', 469 rec_reason_7d_high: '7d usage avg {0}% â limit risk', 470 rec_reason_5h_limit: 'Hitting 5h limit frequently ({0}%)', 471 rec_reason_7d_low: '7d usage peak {0}% â overspending', 472 rec_reason_urgent: 'Urgent â approaching limit', 473 rec_reason_moderate: 'Avg peak {0}% â consider upgrade', 474 rec_collecting_progress: 'Collecting data ({0}/{1} days)',
475 view_as_banner: 'Viewing as {0}', 476 view_as_back: 'Back to my dashboard', 477 fm_title: 'Plan Fitness', 478 fm_col_plan: 'Plan', 479 fm_col_cost: 'Cost', 480 fm_window_5h: 'Last 5h', 481 fm_window_24h: 'Last 24h', 482 fm_window_7d: 'Last 7 Days', 483 fm_window_14d: 'Last 14 Days', 484 fm_savings: 'Save ${1}/mo by switching to {0}', 485 fm_upgrade_to: 'Upgrade to {0} recommended', 486 fm_overspend_note: 'Most of your {0} capacity is unused', 487 fm_all_fit: '{0} covers all periods', 488 fm_bottleneck_5h: 'Heavy burst usage. Spreading usage may allow a lower plan', 489 fm_bottleneck_7d: 'Consistently high usage. A higher plan is needed', 490 fm_tip_exceeded: '5h {0}% / 7d {1}% â Exceeds limit, not enough capacity', 491 fm_tip_tight: '5h {0}% / 7d {1}% â Only {2}% headroom before limit', 492 fm_tip_fit: '5h {0}% / 7d {1}% â Plenty of room', 493 fm_tip_overspend: '5h {0}% / 7d {1}% â Most capacity unused', 494 fm_quality_low_coverage: 'Data coverage only {0}%', 495 fm_quality_gap: 'Max {0}h consecutive gap', 496 fm_quality_collecting_days: 'Available in {0} day(s)', 497 fm_quality_nodata: 'No data for this period', 498 fm_need_more_data: 'More data needed for plan recommendation', 499 fm_low_confidence: '(Partial data â for reference only)', 500 fm_partial_tip: 'Based on limited data ({0} snapshots)', fm_partial_note: '(Some assessments based on limited data)', 501 fm_lv_exceeded: 'Insufficient', fm_lv_tight: 'Tight', fm_lv_fit: 'Good Fit', fm_lv_overspend: 'Overspend', fm_lv_unknown: 'N/A', fm_lv_partial: 'Limited data', 502 fm_badge_current: 'Current', fm_badge_rec: 'Rec', 503 fm_msg_upgrade: 'Upgrade to {0} (${1}/{2}) is recommended.', 504 fm_msg_downgrade: 'Switching to {0} (${1}/{2}) saves ${3}/mo.', 505 fm_per_seat: 'seat', 506 fm_group_consumer: 'Individual', fm_group_team: 'Team', 507 fm_note_fitness_upgrade_rec_ok: 'Fitness analysis suggests a higher plan, but recent usage patterns indicate the current plan is sufficient.', 508 fm_note_rec_upgrade_fitness_ok: 'An upgrade is recommended due to recent burst usage, but long-term fitness shows the current plan is adequate.', 509 fm_note_rec_upgrade_fitness_down: 'An upgrade is recommended due to a recent usage spike, but long-term fitness suggests even a lower plan may suffice. This may be a temporary spike.', 510 rt_title: 'Reset Timing', 511 rt_next_7d: 'Next 7-day reset', 512 rt_next_5h: 'Next 5-hour reset', 513 rt_change_early: 'Early reset detected', 514 rt_change_early_desc: 'Your usage was reset early at {2}, ahead of the scheduled {0}. A new 7-day cycle has started, with the next reset at {1}. The {0} line on the chart marks the originally scheduled reset.', 515 rt_change_5h_desc: 'The 5-hour reset was moved from {0} to {1}.', 516 sb_at_limit: 'You have reached the usage limit', sb_at_limit_sub: 'Resets in {0}', 517 sb_safe: 'Plenty of room at current rate', sb_safe_sub: 'Est. margin: {0}', 518 sb_tight: 'Tight â rate limit expected from {0}', sb_tight_sub: '~{0} wait until reset', 519 sb_nodata: 'Building your forecast', sb_nodata_sub: 'As a bit more data is collected, we\'ll predict when you\'ll hit your 5-hour & weekly limits.', 520 sb_limit_at: 'Limit expected at {0}', 521 sb_projected: '{0}: ~{1}% projected at reset', 522 sb_reset_wait: 'Reset: {0} (~{1} wait)', 523 predict_at_reset: '~{0}% at reset', 524 predict_limit_at: 'Limit expected at {0}', 525 predict_basis: '+{0}%/h · last {1}', 526 limit_history_title: 'Limit History (7 Days)', 527 limit_history_7d: '7d limit hit {0}x · ~{1} waiting', 528 limit_history_5h: '5h limit hit {0}x · ~{1} waiting', 529 limit_history_none: 'No limit hits in last 7 days', 530 summary_today: 'Today', ws_title: 'Last 7 Days', 531 wait_time_title: 'Limit Wait Time (14d)', wait_time_limit: 'limit', wait_time_total: 'Total', 532 wait_time_note: 'Cumulative time from hitting 100% to reset', min_short: 'm', 533 stats_weekday_avg: 'Weekday Avg', stats_weekend_avg: 'Weekend Avg', 534 stats_wd_higher: 'Weekend {0}% higher', stats_wd_lower: 'Weekend {0}% lower', stats_wd_same: 'Weekday·Weekend similar', 535 share_stats_title: 'My Share Stats', share_stats_shares: 'shares', share_stats_views: 'views', 536 dt_title: 'Daily Trend', 537 wt_title: 'Weekly Trend', wt_this_week: 'This Week', wt_last_week: 'Last Week', wt_change: 'Change', wt_no_data: 'No data last week', 538 pr_title: 'Plan Simulation', pr_period: 'Last {0} days', pr_current: 'Current Plan', pr_recommend_keep: 'Keep Current Plan', pr_recommend_switch: 'Can switch to {0}', 539 pr_exceed: 'Exceeded {0}/{1} days', pr_impossible: 'Not viable', pr_risky: 'Risky', pr_stable: 'Stable', pr_acceptable: 'Viable', 540 pr_unit_d: 'd', pr_unit_mo: 'mo', pr_unit_seat_mo: 'seat/mo', pr_limit: 'limit', pr_far_exceeded: 'far exceeded', pr_slightly_exceeded: 'slightly exceeded', 541 pr_verdict_impossible: 'Not viable â limit exceeded too frequently', pr_verdict_risky: 'Risky â frequent limit hits cause work interruptions', pr_verdict_acceptable: 'Acceptable â occasional limit hits but mostly stable', pr_verdict_stable: 'Stable â plenty of headroom', 542 pr_not_viable: 'Not viable', pr_interruption_cycle: '{0}d interruption cycle', pr_exceeded_days_label: 'Limit exceeded days per plan ({0}d)', pr_change_plan: 'Change plan on Claude.ai â', 543 pr_why: 'Why downgrade is difficult', pr_why_up: 'Why upgrade is needed', pr_tip: 'Saving Tips', pr_tip_unused: 'You are not using {0}% of your limit', pr_tip_mid: 'Consider switching if a mid-tier (e.g. Max 10x) becomes available', pr_pattern: '5h Daily Peak Usage', pr_insufficient: 'Not enough data ({0} days)', 544 pc_title: 'Compare with Same Plan Users', pc_peers: 'Based on {0} users', pc_score: 'Efficiency Score', pc_plan_avg: '{0} avg', pc_percentile: 'Percentile', pc_top: 'Top {0}%', pc_rank: '#{1} of {0}', 545 wrapped_cta_title: 'My Claude Tuner Wrapped', wrapped_cta_desc: 'Your whole journey at a glance â tokens, streaks, active hours & days', wrapped_cta_btn: 'View my Wrapped', wrapped_title: 'My Claude Tuner Wrapped', wrapped_top_pct: 'Top {0}%', wrapped_percentile_label: 'Rank in your plan', wrapped_tokens_label: 'Tokens this week', wrapped_eff_label: 'Efficiency score', wrapped_7d_label: '7-day usage', wrapped_peak_label: 'Peak hour', wrapped_activity: 'Hourly activity', wrapped_no_data: 'Collect a bit more data and try again.', 546 wr_greet: '{0}, look how far you\'ve come', wr_range_all: 'All', wr_range_180: '6M', wr_range_90: '3M', wr_range_30: '30d', wr_range_7: '7d', wr_pct_badge: 'Top {1}% among {0} plan users', wr_rank_of: '#{1} of {0}', wr_close: 'Close', wr_loading: 'Loadingâ¦', wr_empty: 'Not enough usage data to show yet.', wr_error: 'Couldn\'t load your data.', wr_retry: 'Retry', 547 wr_total_tokens: 'Total tokens', wr_daily_avg: 'Daily average', wr_active_days: 'Active days', wr_peak_day: 'Busiest day', wr_cur_streak: 'Current streak', wr_max_streak: 'Longest streak', wr_peak_hour: 'Peak hour', wr_busy_dow: 'Busiest weekday', wr_unit_day: 'd', wr_activity: 'Activity heatmap', wr_hm_hint: 'Each square = one day · darker = more usage', wr_share: 'Share as image', wr_book_cmp: 'You used about {0}à more tokens than {1}', wr_none: 'â', wr_prev_account_note: 'This card counts this account only. Previous-account ranges appear in the yearly usage grove.', 548 pc_avg_title: 'vs Plan Average', pc_7d_util: '7-Day Usage', pc_daily_tokens: 'Daily Tokens', pc_limit_hits: 'Limit Hits/Week', pc_cost_eff: 'Cost Efficiency', pc_tokens_per_dollar: 'tokens/$', pc_avg: 'avg {0}', pc_times: 'times', 549 pc_my_position: 'My Position', pc_cost_eff_score: 'Cost Efficiency', pc_see_insights: 'See full rankings in Insights â', 550 pc_dist_title: 'Usage Distribution', pc_dist_me: 'Me', pc_dist_users: 'users',
551 pc_not_enough: 'Not enough users on the same plan for comparison', 552 pc_score_how: 'How is this calculated?', 553 pc_score_base: 'Base score: 7-day average utilization', 554 pc_score_base_desc: '0~40% â 0~80pts / 40~70% â 80~100pts / 70~90% â 100pts (max) / 90%+ â penalty (overuse)', 555 pc_score_active: 'Active days bonus', 556 pc_score_active_desc: 'More active days in the last 7 â higher multiplier (Ã0.7 min ~ Ã1.0 max)', 557 pc_score_penalty: 'Limit hit penalty', 558 pc_score_penalty_desc: 'Days hitting the limit à 3 points deducted', 559 pc_score_formula: 'Final = Base à Active bonus - Limit penalty (0~100)', 560 // Review nudge 561 // â auto-move notice (#966). {0} = the org that went silent, {1} = the org â moved to. 562 pin_move_text: '{0} stopped collecting, so we moved your primary organization to {1}. Your headline plan and default view now follow that organization.', 563 pin_move_revert: 'Undo', 564 pin_move_revert_unselected: '{0} is no longer being collected, so this cannot be undone here. Select it again under Settings > Active organizations first.', 565 pin_move_revert_failed: "Couldn't undo that. Please try again in a moment.", 566 pin_move_revert_all_hidden: 'Every selected organization is hidden from your team, so this cannot be undone. Un-hide at least one in Settings first.', 567 review_nudge_text: "Your review means a lot to this solo developer project. A star rating and a short review on the Chrome Web Store â and if you're enjoying it, please spread the word! ð", 568 review_nudge_cta: 'Leave a review â', 569 org_all: 'All', 570 org_more: 'More', 571 org_less: 'Less', 572 org_stale_tooltip: 'Collection interrupted. Click to sign in again.', 573 org_stale_tooltip_noext: 'Data collection has stopped.', 574 stale_banner_text: 'Data collection has been interrupted for {0}+. Your session may have expired or the extension may be disabled.', 575 stale_banner_cta: 'Sign in again â', 576 // Blocked â stale. The generic banner above blames an expired session or a disabled 577 // extension; for these accounts BOTH are wrong â the extension is running fine and sending, 578 // the server is refusing it. 579 blocked_banner_title: 'Your usage is not reaching the server', 580 blocked_banner_text: 'The extension is running fine, but this account now requires a sign-in, so the server is refusing its data. The numbers below stopped {0} ago.', 581 // Zero-snapshot variant â see the ko note above. 582 blocked_banner_text_nodata: 'The extension is running fine, but this account now requires a sign-in, so the server is refusing its data. No usage has been stored yet.', 583 blocked_banner_cta: 'Click the Claude Tuner icon in your browser toolbar to verify', 584 // No-data banner: this account has zero snapshots (not a stale/expired session). 585 nodata_banner_text: 'No usage data has been collected for this account ({0}) yet. The extension may be collecting under a different account â check the email at the top of the extension popup.', 586 nodata_pending_text: 'Collection just started. Your usage will appear here shortly.', 587 // Account mismatch: the extension collects for a different account than the one signed in. 588 acct_mismatch_text: 'The extension is collecting usage for <strong>{0}</strong>. Sign in to the dashboard with that same account to see it.', 589 acct_mismatch_cta: 'Switch to this account â', 590 // Deselected-org banner: this org is intentionally excluded from the active-org cap, 591 // so re-login won't help â point the user at active-org settings instead. 592 deselected_banner_text: "This organization is excluded from your active orgs, so no new data is being collected. Past data is still available.", 593 deselected_banner_cta: 'Manage active orgs â', 594 deselected_tooltip: 'Excluded from active orgs, so collection has stopped. You can re-include it in settings.', 595 // 3-org cap drop: collection is silently stopped for orgs outside the active-org selection. 596 capdrop_banner_text: '{0} account(s) are not being collected â your {1} active-org limit is full.', 597 capdrop_banner_room: '{0} account(s) are not being collected â select them as active organizations to start.', 598 capdrop_banner_cta: 'Choose which to collect â', 599 shared_banner_text: '{0} different accounts were detected on this login, so their usage may appear merged.', 600 shared_banner_cta: 'Split them across a team â', 601 org_not_supported: 'This feature is not yet available for this organization plan.',
602 org_not_supported_detail: 'Some analytics are not yet supported for Enterprise plans due to different usage structures. Coming soon.', 603 // 3-org cap (active org selection) 604 cap_chip_paused: 'Excluded', 605 cap_modal_title: 'Choose your {cap} active organizations', 606 cap_modal_desc: 'Only organizations marked as active have new usage data collected and saved. To keep the service stable, each account can select up to {cap}. Just pick the ones you actually use right now â historical data for unselected orgs is preserved, but no new data is saved to the server for them. You can change your active organizations any time in options.', 607 cap_modal_apply_default: 'Apply default (top {cap} by recent usage)', 608 cap_modal_save: 'Save', 609 cap_modal_count: '{n} / {cap} selected', 610 cap_modal_min_one: 'At least 1 organization must be selected.', 611 cap_settings_title: 'Active organizations', 612 cap_settings_desc: 'Choose up to 3 organizations to collect data from. Unselected orgs will not receive new snapshots.', 613 cap_settings_saved: 'Saved', 614 cap_settings_save_failed: 'Save failed', 615 } 616}; 617 618var _lang = localStorage.getItem('ct-lang') || ((navigator.language || '').toLowerCase().startsWith('ko') ? 'ko' : 'en'); 619document.documentElement.lang = _lang; 620 621function escHtml(s) { 622 return (s || '').replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, '''); 623} 624var _avatarCacheBuster = Math.floor(Date.now() / 86400000); 625function _bustAvatarCache(url) { 626 if (url && url.indexOf('/avatars/') >= 0) return url + '?v=' + _avatarCacheBuster; 627 return url; 628} 629 630// Substitute {0}, {1}, ... in ONE pass. 631// 632// Fixes two latent bugs in the previous per-arg `s.replace('{i}', a)` loop: 633// 1. Substituted text was rescanned by later args, so a value that happens to contain a 634// placeholder ate the next one. Not merely theoretical: several messages interpolate an 635// email address, and `{1}@corp.example` passes the project's address validation. 636// 2. `String.prototype.replace` with a STRING pattern replaces only the FIRST match, so a 637// message reusing a placeholder would render a literal "{0}". No caller hits this today â 638// rt_change_early_desc is the one template that reuses `{0}`, and dashboard-charts.js 639// interpolates it with its own /g replaces instead of passing args to t() â but the next 640// one to pass args would have silently shown braces to users. 641// A single regex pass with a callback fixes both: the callback's return value is never 642// rescanned, and /g covers repeats. 643function t(key) { 644 var args = Array.prototype.slice.call(arguments, 1); 645 var s = (T[_lang] || T.en)[key] || T.en[key] || key; 646 return s.replace(/\{(\d+)\}/g, function(match, idx) { 647 var v = args[Number(idx)]; 648 return v === undefined ? match : String(v); 649 }); 650} 651 652// Count + unit word ("3í" / "3 times"). Korean attaches the unit; English separates it with a 653// space and drops the plural "s" for exactly 1 ("1 time"). Unit keys hold the EN PLURAL form. 654// Concatenating `n + t('summary_times')` directly is what rendered "0times" (#1729). 655function fmtUnit(n, key) { 656 var unit = t(key); 657 if (_lang === 'ko') return n + unit; 658 if (String(n) === '1' && /s$/.test(unit)) unit = unit.slice(0, -1); 659 return n + ' ' + unit; 660} 661 662function setLang(lang) { 663 _lang = lang; 664 localStorage.setItem('ct-lang', lang); 665 document.documentElement.lang = lang; 666 applyI18n(); 667 // The provider notice is built in JS and lives OUTSIDE #dashboard-content, so neither 668 // applyI18n() (it has no [data-i18n]) nor the re-render below would retranslate it â it would 669 // sit there in the previous language. 670 if (typeof _paintProviderConnectNotice === 'function') _paintProviderConnectNotice(); 671 // re-render dashboard if loaded 672 if (_cachedData) { 673 document.getElementById('dashboard-content').innerHTML = ''; 674 renderDetailDashboard(_cachedData.meData, _cachedData.usageData, _cachedData.snapshotsData, _cachedData.recData); 675 } 676} 677 678function applyI18n() { 679 document.querySelectorAll('[data-i18n]').forEach(function(el) { el.textContent = t(el.dataset.i18n); }); 680 document.querySelectorAll('[data-i18n-html]').forEach(function(el) { el.innerHTML = t(el.dataset.i18nHtml); }); 681} 682
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.