{
  "action.check_cache_drop": "Check for reintroduced files or tool output after cache reuse dropped.",
  "action.compare_fresh_input": "Compare fresh input with the previous turn before continuing.",
  "action.compare_subagent_calls": "Compare attached subagent or review calls before changing the parent workflow.",
  "action.configure_pricing": "Configure pricing before trusting cost totals.",
  "action.copied": "Copied",
  "action.copy_failed": "Copy failed",
  "action.expand_or_select_recommendations": "Expand calls or select a row for call-level recommendations.",
  "action.exported": "Exported {count}",
  "action.inspect_thread_timeline": "Inspect the thread timeline and consider starting a fresh thread.",
  "action.review_context_growth": "Review where context growth begins and consider starting a fresh thread.",
  "action.review_reasoning_effort": "Review whether reasoning effort is appropriate for this task.",
  "action.run": "Run",
  "action.set_limits": "Set limits",
  "action.use_aggregate_first": "Use the aggregate fields first; load context only if the signal is still unclear.",
  "allowance.counted": "{value} credits counted toward Codex usage limits",
  "allowance.cr_left": "{value} cr left",
  "allowance.credit_coverage": "Credit coverage {ratio} of loaded tokens.",
  "allowance.credit_rates": "Credit rates: {source}.",
  "allowance.credits_remaining": "{value} credits remaining",
  "allowance.init_hint": "Run codex-usage-tracker init-allowance to add remaining usage windows.",
  "allowance.of_allowance": "{ratio} of allowance",
  "allowance.of_total": "{used} of {total} credits",
  "allowance.rate_card_error": "Rate-card error: {error}",
  "allowance.remaining": "{value} remaining",
  "allowance.resets": "Resets: {resets}",
  "allowance.row_no_rate": "No mapped Codex credit rate",
  "allowance.title_hint": "Add ~/.codex-usage-tracker/allowance.json to show 5h and weekly remaining usage.",
  "allowance.used_vs_remaining": "{used} used vs {remaining} remaining",
  "allowance.window_configured": "{label} configured",
  "allowance.windows": "Allowance windows: {windows}",
  "aria.current_view_actions": "Current view actions",
  "aria.dashboard_status": "Dashboard status",
  "aria.dashboard_view": "Dashboard view",
  "aria.history_title": "Active sessions only is the default. All history scans archived session logs during live refresh.",
  "aria.inspect_thread": "Inspect {thread} usage",
  "aria.refresh_controls": "Dashboard refresh controls",
  "aria.table_pages": "Table pages",
  "badge.costs": "Costs",
  "badge.credits": "Credits",
  "badge.live": "Live",
  "badge.metadata_mode": "Metadata {mode}",
  "badge.metadata_normal": "Metadata normal",
  "badge.no_costs": "No costs",
  "badge.parser_warnings": "Parser warnings",
  "badge.static": "Static",
  "badge.unofficial_project": "Unofficial project",
  "badge.unofficial_project_title": "Codex Usage Tracker is independent and is not made by, affiliated with, endorsed by, sponsored by, or supported by OpenAI. OpenAI and Codex are trademarks of OpenAI.",
  "button.clear": "Clear",
  "button.copy_link": "Copy link",
  "button.enable_context_loading": "Enable context loading",
  "button.export_csv": "Export CSV",
  "button.include_tool_output": "Include tool output",
  "button.load_context": "Load context",
  "button.load_more": "Load more",
  "button.next": "Next",
  "button.previous": "Previous",
  "button.refresh": "Refresh",
  "button.top": "Top",
  "caption.ascending": "ascending",
  "caption.calls": "Showing individual model calls sorted by {sort}. {loaded}.",
  "caption.date_prefix": "{label}. ",
  "caption.descending": "descending",
  "caption.initial_calls": "Showing individual model calls.",
  "caption.insights": "Ranked by cost, usage credits, cache reuse, context pressure, and pricing confidence.",
  "caption.loaded": "{loaded} calls loaded",
  "caption.loaded_capped": "{loaded} of {available} calls loaded",
  "caption.sort_direction": "{label} {direction}",
  "caption.threads": "Showing {threads} threads from {calls} filtered calls, sorted by {sort}. {loaded}. Click a thread to expand its calls.",
  "context.api_http": "Context API returned HTTP {status}.",
  "context.api_unavailable": "Context API is unavailable here. Run codex-usage-tracker serve-dashboard --open for on-demand context loading.",
  "context.chars_omitted": "{count} chars over budget omitted.",
  "context.disabled_hint": "Context loading is off for this dashboard server. Enable it here to load local JSONL context on demand.",
  "context.enabled_note": "Context loading is enabled. Press Load context to read this call from the local JSONL source.",
  "context.file_hint": "Open this dashboard with codex-usage-tracker serve-dashboard to load raw context on demand.",
  "context.line": "line {line}",
  "context.loading": "Loading local context...",
  "context.local_redacted": "Local JSONL context loaded on demand. Prompts and tool output are redacted for common secret patterns and are not persisted to SQLite or dashboard HTML.",
  "context.no_record_id": "This row has no record id for context lookup.",
  "context.no_response": "No response body",
  "context.older_omitted": "{count} older entries omitted.",
  "context.ready_hint": "Context is not embedded in this dashboard. Press a button to read this call from the local JSONL source.",
  "context.settings_http": "Context settings returned HTTP {status}.",
  "context.source": "Source: {file}:{line}",
  "context.token_required": "Context loading requires a localhost dashboard API token.",
  "context.tool_included": "Tool output included with redaction and size limits.",
  "context.tool_omitted": "Tool output omitted by default.",
  "credit.configured_rate": "Configured rate",
  "credit.estimated_mapping": "Estimated mapping",
  "credit.inferred_mapping": "Inferred model mapping",
  "credit.no_mapped_rate": "No mapped rate",
  "credit.no_rate": "No credit rate",
  "credit.official_match": "Official rate-card match",
  "credit.user_rate": "User-provided credit rate",
  "credit.with_status": "{value} credits · {status}",
  "dashboard.call_details": "Call Details",
  "dashboard.detail.empty": "Hover or click a row to inspect aggregate usage fields.",
  "dashboard.eyebrow": "Local Codex analytics",
  "dashboard.local_storage_note": "The dashboard header also remembers your language choice locally.",
  "dashboard.model_calls": "Model Calls",
  "dashboard.title": "Usage Dashboard",
  "dashboard.top_threads_by_attention": "Top Threads by Attention Score",
  "dashboard.view.calls": "Calls",
  "dashboard.view.insights": "Insights",
  "dashboard.view.threads": "Threads",
  "date.custom": "Custom",
  "date.invalid_range": "Invalid date range",
  "date.range_between": "{prefix} {start} to {end}",
  "date.range_exact": "{prefix} {date}",
  "date.range_from": "{prefix} from {start}",
  "date.range_through": "{prefix} through {end}",
  "detail.agent_nickname": "Agent nickname",
  "detail.agent_role": "Agent role",
  "detail.allowance_impact": "Allowance impact",
  "detail.attached_calls": "Attached calls",
  "detail.auto_review_calls": "Auto-review calls",
  "detail.cache_savings": "Cache savings",
  "detail.call_number": "call {number}",
  "detail.calls": "Calls",
  "detail.context_window": "Context window",
  "detail.cost_usage_context": "Cost, usage, and context",
  "detail.credit_confidence": "Credit confidence",
  "detail.credit_model": "Credit model",
  "detail.credit_note": "Credit note",
  "detail.credit_source": "Credit source",
  "detail.credit_source_fetched": "Credit source fetched",
  "detail.credit_tier": "Credit tier",
  "detail.cwd": "Cwd",
  "detail.efficiency_signals": "Efficiency signals",
  "detail.first_expensive_turn": "First expensive turn",
  "detail.git_branch": "Git branch",
  "detail.largest_cumulative_jump": "Largest cumulative jump",
  "detail.latest_activity": "Latest activity",
  "detail.model_mix": "Model mix",
  "detail.next_action": "Next action",
  "detail.no_above_thresholds": "None above thresholds",
  "detail.no_aggregate_action": "No aggregate action is flagged.",
  "detail.parent_session": "Parent session",
  "detail.parent_thread": "Parent thread",
  "detail.parent_updated": "Parent updated",
  "detail.pricing_model": "Pricing model",
  "detail.pricing_status": "Pricing status",
  "detail.project_cwd": "Project cwd",
  "detail.project_tags": "Project tags",
  "detail.raw_identifiers": "Raw aggregate identifiers",
  "detail.reasoning_mix": "Reasoning mix",
  "detail.relationships": "Relationships",
  "detail.remote_hash": "Remote hash",
  "detail.remote_label": "Remote label",
  "detail.secondary_thread_fields": "Secondary thread fields",
  "detail.source_file_line": "Source file and line",
  "detail.source_line": "Source line",
  "detail.spawned_child_calls": "Spawned child calls",
  "detail.spawned_from": "Spawned from",
  "detail.spawned_threads": "Spawned threads",
  "detail.subagent_before_spike": "Subagent before spike",
  "detail.subagent_calls": "Subagent calls",
  "detail.subagent_type": "Subagent type",
  "detail.thread_attachment": "Thread attachment",
  "detail.thread_attention_summary": "Thread attention summary",
  "detail.thread_lifecycle": "Thread lifecycle",
  "detail.thread_narrative": "Thread narrative",
  "detail.thread_source": "Thread source",
  "detail.thread_timeline": "Thread timeline",
  "detail.timeline_context": "context {value}",
  "detail.timeline_empty": "No calls in this thread.",
  "detail.timeline_meta": "{tokens} tokens · {cost} · {credits} · cache {cache}",
  "detail.timestamp": "Timestamp",
  "detail.token_pricing_breakdown": "Token and pricing breakdown",
  "detail.tokens_at": "{tokens} tokens at {time}",
  "detail.turn": "Turn",
  "detail.why_flagged": "Why flagged",
  "docs.dashboard_guide": "Dashboard guide",
  "effort.high": "high",
  "effort.low": "low",
  "effort.medium": "medium",
  "filter.confidence": "Confidence",
  "filter.effort": "Reasoning",
  "filter.end": "End",
  "filter.model": "Model",
  "filter.project": "Project",
  "filter.reasoning": "Reasoning",
  "filter.search": "Search",
  "filter.search_placeholder": "Thread, cwd, model",
  "filter.session": "Session",
  "filter.sort": "Sort",
  "filter.start": "Start",
  "filter.thread": "Thread",
  "filter.time": "Time",
  "flag.elevated_context_use": "Elevated context use",
  "flag.expensive_low_output_call": "Expensive low-output call",
  "flag.high_context_use": "High context use",
  "flag.high_estimated_cost": "High estimated cost",
  "flag.high_reasoning_share": "High reasoning share",
  "flag.low_cache_reuse": "Low cache reuse",
  "history.active_hidden": "Active sessions only; {count} archived calls hidden",
  "history.active_only": "Active sessions only",
  "history.all_empty": "All history selected; no archived calls are indexed yet",
  "history.all_includes": "All history includes {count} archived calls",
  "history.archived_scan_hint": "{detail}. Archived sessions are scanned only when All history is selected during live refresh.",
  "insight.apply_cache_misses": "Apply cache-misses preset",
  "insight.apply_context_bloat": "Apply context-bloat preset",
  "insight.codex_allowance_usage": "Codex allowance usage",
  "insight.context_bloat": "Context bloat",
  "insight.context_bloat_body": "{calls} calls are at or above {ratio} context use.",
  "insight.costliest_thread": "Costliest thread",
  "insight.costliest_thread_body": "{thread} has {calls} calls and {tokens} tokens.",
  "insight.credit_coverage_body": "{ratio} of visible tokens map to Codex credit rates.",
  "insight.estimated_pricing": "Estimated pricing",
  "insight.estimated_pricing_body": "Marked best-guess prices are included, but should be reviewed separately.",
  "insight.inspect_selected_call": "Inspect selected call",
  "insight.low_cache_reuse": "Low cache reuse",
  "insight.low_cache_reuse_body": "{calls} calls are under {ratio} cache reuse. Start with {thread}.",
  "insight.open_thread_timeline": "Open thread timeline",
  "insight.reasoning_output_spike": "Reasoning output spike",
  "insight.reasoning_spike_body": "{thread} has the largest reasoning-output call in the current filter.",
  "insight.review_estimates": "Review estimates",
  "insight.review_highest_credit": "Review highest-credit calls",
  "insight.review_pricing_gaps": "Review pricing gaps",
  "insight.unpriced_usage": "Unpriced usage",
  "insight.unpriced_usage_body": "These tokens are omitted from estimated cost totals until pricing is configured.",
  "language.english": "English",
  "language.label": "Language",
  "language.vietnamese": "Tiếng Việt",
  "live.checking_usage": "Checking for new usage...",
  "live.every": "Live refresh every {seconds}s",
  "live.history_static_hint": "Run codex-usage-tracker serve-dashboard to switch between active sessions and all history from the dashboard.",
  "live.indexed": " Indexed {rows} aggregate rows from {files} logs.",
  "live.load_static_hint": "Run codex-usage-tracker serve-dashboard to load a different history size from the dashboard.",
  "live.paused": "Live refresh paused",
  "live.refresh_suffix": ". Reload this page after regenerating a static dashboard, or run codex-usage-tracker serve-dashboard.",
  "live.refresh_unavailable": "Live refresh unavailable: {message}{suffix}",
  "live.refreshing_index": "Refreshing local usage index...",
  "live.reloading_static": "Reloading static dashboard snapshot...",
  "live.skipped": " Skipped {count} malformed token-count events.",
  "live.updated_detail": "Updated {time}. {loaded}. {history}.{indexed}{skipped}",
  "metric.attention_score": "Attention score",
  "metric.cache_ratio": "Cache ratio",
  "metric.cache_trend": "Cache trend",
  "metric.cached_input": "Cached input",
  "metric.codex_credits": "Codex credits",
  "metric.context_trend": "Context trend",
  "metric.context_use": "Context use",
  "metric.estimated_cost": "Estimated cost",
  "metric.input_tokens": "Input tokens",
  "metric.last_call_input": "Last call input",
  "metric.last_call_total": "Last call total",
  "metric.max_context_use": "Max context use",
  "metric.output": "Output",
  "metric.output_tokens": "Output tokens",
  "metric.reasoning_output": "Reasoning output",
  "metric.remaining_usage": "Remaining usage",
  "metric.session_cumulative": "Session cumulative",
  "metric.total": "Total",
  "metric.total_tokens": "Total tokens",
  "metric.uncached_input": "Uncached input",
  "metric.usage_credits": "Usage credits",
  "metric.usage_remaining": "Remaining usage",
  "metric.visible_calls": "Visible calls",
  "nav.history": "History",
  "nav.live": "Live",
  "nav.load": "Load",
  "option.active_sessions_only": "Active sessions only",
  "option.all_confidence": "All confidence",
  "option.all_efforts": "All efforts",
  "option.all_history": "All history",
  "option.all_models": "All models",
  "option.all_time": "All time",
  "option.custom_range": "Custom range",
  "option.estimated_cost": "Estimated cost",
  "option.estimated_credit_mapping": "Estimated credit mapping",
  "option.exact_cost": "Exact cost",
  "option.exact_credit_rate": "Exact credit rate",
  "option.highest_codex_credits": "Highest Codex credits",
  "option.highest_context_use": "Highest context use",
  "option.highest_estimated_cost": "Highest estimated cost",
  "option.last_7_days": "Last 7 days",
  "option.load_10000": "10,000 calls",
  "option.load_20000": "20,000 calls",
  "option.load_5000": "5,000 calls",
  "option.load_all": "All calls",
  "option.lowest_cache_ratio": "Lowest cache ratio",
  "option.missing_credit_rate": "Missing credit rate",
  "option.most_signals": "Most signals",
  "option.most_tokens": "Most tokens",
  "option.needs_attention": "Needs attention",
  "option.newest_calls": "Newest calls",
  "option.this_month": "This month",
  "option.this_week": "This week",
  "option.thread_name": "Thread name",
  "option.today": "Today",
  "option.unpriced_cost": "Unpriced cost",
  "option.user_credit_override": "User credit override",
  "parser.warnings_title": "Latest refresh reported {count} parser diagnostics: {entries}. Run codex-usage-tracker inspect-log <path> to investigate schema drift.",
  "preset.cache_misses": "Cache misses",
  "preset.cache_misses_caption": "Cache misses preset",
  "preset.cache_misses_desc": "Low cache-ratio calls grouped by cwd, model, and thread.",
  "preset.caption": "{caption}: {description}",
  "preset.context_bloat": "Context bloat",
  "preset.context_bloat_caption": "Context bloat preset",
  "preset.context_bloat_desc": "Calls over 60% context use or with very high cumulative tokens.",
  "preset.description": "One-click starting points for common usage questions.",
  "preset.estimated_price_review": "Estimated-price review",
  "preset.estimated_price_review_caption": "Estimated-price review preset",
  "preset.estimated_price_review_desc": "Usage priced with marked best-guess estimates.",
  "preset.highest_codex_credits": "Highest Codex credits",
  "preset.highest_codex_credits_caption": "Highest Codex credits preset",
  "preset.highest_codex_credits_desc": "Calls sorted by estimated impact on Codex usage allowance.",
  "preset.highest_cost_threads": "Highest-cost threads",
  "preset.highest_cost_threads_caption": "Highest-cost threads preset",
  "preset.highest_cost_threads_desc": "Threads sorted by estimated spend, with subagents attached.",
  "preset.investigation_presets": "Investigation presets",
  "preset.no_preset": "No preset applied.",
  "preset.pricing_gaps": "Pricing gaps",
  "preset.pricing_gaps_caption": "Pricing gaps preset",
  "preset.pricing_gaps_desc": "Unpriced usage that makes estimated cost totals incomplete.",
  "pricing.configure_hint": "Run codex-usage-tracker update-pricing to configure estimated costs.",
  "pricing.fetched": "fetched {time}",
  "pricing.pinned": "pinned snapshot",
  "pricing.source": "Pricing source",
  "pricing.tier": "{tier} tier",
  "pricing.title": "{parts}. Internal Codex labels may use marked best-guess estimates.{warning}",
  "pricing.title_fetched": "{parts}. Fetched from {url} at {time}. Internal Codex labels may use marked best-guess estimates.{warning}",
  "privacy.aliases_preserved": "Configured project aliases are treated as explicit display opt-ins.",
  "privacy.cwd_redacted": "Raw cwd paths are redacted.",
  "privacy.git_branch_hidden": "Git branch is hidden.",
  "privacy.git_remote_label_hidden": "Git remote labels are hidden.",
  "privacy.mode": "Project metadata privacy mode: {mode}.",
  "privacy.normal_title": "Project metadata is shown with local cwd, project, branch, and configured labels.",
  "privacy.project_names_redacted": "Unnamed projects use stable hashed labels.",
  "privacy.relative_cwd_hidden": "Relative cwd is hidden.",
  "privacy.tags_hidden": "Project tags are hidden.",
  "recommendation.context_bloat.action": "Consider starting a fresh Codex thread if older context is no longer relevant.",
  "recommendation.context_bloat.title": "High context pressure",
  "recommendation.context_bloat.why": "This call is using a large share of the model context window.",
  "recommendation.elevated_context.action": "Check whether the thread can be narrowed before adding more work.",
  "recommendation.elevated_context.title": "Elevated context pressure",
  "recommendation.elevated_context.why": "Context use is elevated and may become costly in later turns.",
  "recommendation.estimated_pricing.action": "Review pricing coverage and pin or override the model rate if this call matters.",
  "recommendation.estimated_pricing.title": "Estimated pricing",
  "recommendation.estimated_pricing.why": "This cost uses an inferred model mapping rather than a direct pricing row.",
  "recommendation.high_cost.action": "Open the thread timeline and inspect the preceding turn before continuing.",
  "recommendation.high_cost.title": "High estimated cost",
  "recommendation.high_cost.why": "This call crossed the configured high-cost threshold.",
  "recommendation.large_thread.action": "Prefer a new thread for unrelated follow-up work.",
  "recommendation.large_thread.title": "Large cumulative thread",
  "recommendation.large_thread.why": "The session cumulative total is high enough to make later turns expensive.",
  "recommendation.low_cache.action": "Check whether files, tool output, or broad context were reintroduced unnecessarily.",
  "recommendation.low_cache.title": "Low cache reuse",
  "recommendation.low_cache.why": "Fresh uncached input is high while cache reuse is low.",
  "recommendation.low_output.action": "Inspect aggregate context first; load raw context only if the cause is unclear.",
  "recommendation.low_output.title": "Large low-output call",
  "recommendation.low_output.why": "The call consumed many tokens but produced little output.",
  "recommendation.none.action": "No aggregate action is flagged; continue monitoring usage patterns.",
  "recommendation.pricing_gap.action": "Update pricing or add a local alias before trusting cost totals.",
  "recommendation.pricing_gap.title": "Pricing gap",
  "recommendation.pricing_gap.why": "This model call has no configured price, so cost totals understate visible usage.",
  "recommendation.reasoning_spike.action": "Review whether this task needs the selected reasoning effort.",
  "recommendation.reasoning_spike.title": "High reasoning share",
  "recommendation.reasoning_spike.why": "Reasoning output dominates visible output for this call.",
  "recommendation.subagent_attribution.action": "Compare direct calls with attached subagent or review calls before changing workflow.",
  "recommendation.subagent_attribution.title": "Subagent attribution",
  "recommendation.subagent_attribution.why": "This call is attached to delegated work and may explain parent-thread growth.",
  "section.allowance": "Allowance",
  "section.needs_attention": "Needs Attention",
  "section.pricing": "Pricing",
  "section.recommendations": "Recommendations",
  "severity.high": "High",
  "severity.medium": "Medium",
  "severity.review": "Review",
  "source.auto_review": "Auto-review",
  "source.subagent": "Subagent",
  "source.subagent_role": "Subagent: {role}",
  "source.user": "User",
  "state.allowance_config_error": "Allowance config error",
  "state.allowance_configured": "Allowance configured",
  "state.best_guess_estimate": "Best-guess estimate",
  "state.configured": "Configured",
  "state.configured_price": "Configured price",
  "state.error": "Error",
  "state.estimated": "Estimated",
  "state.loading": "Loading",
  "state.mixed": "Mixed",
  "state.no": "No",
  "state.no_calls": "No calls match the current filters.",
  "state.no_configured_price": "No configured price",
  "state.no_context_entries": "No context entries found for this call.",
  "state.no_data": "No data",
  "state.no_mapped_rate": "No mapped rate",
  "state.no_price": "No price",
  "state.no_rate": "No rate",
  "state.no_rows": "No rows",
  "state.no_threads": "No threads match the current filters.",
  "state.none": "None",
  "state.not_configured": "Not configured",
  "state.unknown": "Unknown",
  "state.yes": "Yes",
  "status.checking": "Checking",
  "status.paused": "Paused",
  "status.refresh_error": "Refresh error",
  "status.refreshing": "Refreshing",
  "status.reloading": "Reloading",
  "status.static": "Static",
  "status.updated": "Updated",
  "table.cache": "Cache",
  "table.calls": "calls",
  "table.cost": "Cost",
  "table.effort": "Effort",
  "table.last_call": "Last Call",
  "table.model": "Model",
  "table.more_efforts": "{effort} +{count} efforts",
  "table.more_models": "{model} +{count} models",
  "table.page_status": "{start}-{end} of {total} {items} · page {page}/{pages}",
  "table.rows": "rows",
  "table.signals": "Signals",
  "table.source": "Source",
  "table.thread": "Thread",
  "table.threads": "threads",
  "table.time": "Time",
  "table.tokens": "Tokens",
  "thread.attached": "attached",
  "thread.attention": "attention {score}",
  "thread.auto_review": "{count} auto-review",
  "thread.collapse": "Collapse",
  "thread.direct": "direct",
  "thread.expand": "Expand",
  "thread.expand_label": "{action} {thread} calls. Attention score {score}.",
  "thread.explicit_parent": "explicit parent",
  "thread.explicit_parent_thread": "explicit parent thread",
  "thread.parent": "Parent {id}",
  "thread.session": "session",
  "thread.spawned": "spawned",
  "thread.spawned_from": "spawned from {thread}",
  "thread.spawned_threads": "{count} spawned threads",
  "thread.subagent": "{count} subagent",
  "thread.unknown": "Unknown thread",
  "thread.unmatched_subagent": "unmatched subagent"
}
