{
  "app.title": "oMLX Admin",
  "app.tagline": "LLM inference, optimized for your Mac",
  "login.title_login": "Login - oMLX Admin",
  "login.title_setup": "Setup - oMLX Admin",
  "login.setup.heading": "Set Up API Key",
  "login.setup.description": "Create an API key to secure your server",
  "login.setup.label_api_key": "API Key",
  "login.setup.label_confirm": "Confirm API Key",
  "login.setup.placeholder_new": "Enter new API key",
  "login.setup.placeholder_confirm": "Enter API key again",
  "login.setup.validation_hint": "Min 4 characters, no spaces",
  "login.setup.button_set": "Set API Key",
  "login.setup.button_setting_up": "Setting up...",
  "login.setup.generate_tooltip": "Generate random key",
  "login.setup.copy_tooltip": "Copy to clipboard",
  "login.setup.copied": "Copied!",
  "login.login.label_api_key": "API Key",
  "login.login.placeholder": "Enter your API key",
  "login.login.remember": "Stay signed in for 30 days",
  "login.login.button_sign_in": "Sign in",
  "login.login.button_signing_in": "Signing in...",
  "login.error.invalid_api_key": "Invalid API key",
  "login.error.connect_failed": "Failed to connect to server",
  "login.error.min_length": "API key must be at least 4 characters",
  "login.error.no_whitespace": "API key must not contain whitespace",
  "login.error.mismatch": "API keys do not match",
  "login.error.setup_failed": "Failed to set up API key",
  "dashboard.title": "Dashboard - oMLX Admin",
  "navbar.brand": "oMLX",
  "navbar.admin": "Admin",
  "navbar.tab.status": "Dashboard",
  "navbar.tab.models": "Models",
  "navbar.tab.settings": "Settings",
  "navbar.tab.logs": "Logs",
  "navbar.tab.bench": "Bench",
  "navbar.tab.chat": "Chat",
  "navbar.dropdown.manager": "Manager",
  "navbar.dropdown.downloader": "Downloader",
  "navbar.dropdown.quantizer": "oQ Quantization",
  "navbar.dropdown.uploader": "oQ Uploader",
  "navbar.dropdown.global_settings": "Global Settings",
  "navbar.dropdown.model_settings": "Model Settings",
  "navbar.theme.auto": "Auto",
  "navbar.theme.dark_mode": "Dark Mode",
  "navbar.theme.light_mode": "Light Mode",
  "navbar.logout": "Logout",
  "navbar.update_available": "Update available: v{version}",
  "navbar.go_to_github": "Go to GitHub",
  "status.section_label": "Dashboard",
  "status.heading": "Serving Stats",
  "status.clear": "Clear",
  "status.clear_tooltip": "Clear session metrics",
  "status.clear_confirm": "Are you sure?",
  "status.clear_yes": "Yes",
  "status.clear_cancel": "Cancel",
  "status.scope_session": "Session",
  "status.scope_alltime": "All-Time",
  "status.clear_alltime": "Clear",
  "status.clear_alltime_tooltip": "Clear all-time metrics",
  "status.clear_ssd_cache_tooltip": "Delete all SSD cache",
  "status.clear_ssd_cache_confirm": "Delete all SSD cache?",
  "status.filter_all_models": "All Models",
  "status.stat.total_tokens": "Total Prefill Tokens",
  "status.stat.cached_tokens": "Cached Tokens",
  "status.stat.cache_efficiency": "Cache Efficiency",
  "status.speed.section_label": "Average Speed",
  "status.speed.prompt_processing": "Prompt Processing",
  "status.speed.prompt_processing_note": "(excl. cached)",
  "status.speed.token_generation": "Token Generation",
  "status.active_models.section_label": "Active Models",
  "status.active_models.no_models": "No models loaded",
  "status.active_models.active": "Active",
  "status.active_models.waiting": "Waiting",
  "status.active_models.req": "req",
  "status.active_models.generating": "Generating...",
  "status.active_models.unload": "Unload model",
  "status.api.section_label": "API Endpoints",
  "status.api.openai": "OpenAI API",
  "status.api.claude": "Claude API",
  "status.api.copy_tooltip": "Copy",
  "status.claude_code.section_label": "Claude Code with oMLX",
  "status.claude_code.mode": "Mode",
  "status.claude_code.mode_cloud": "Cloud",
  "status.claude_code.mode_local": "Local",
  "status.claude_code.no_models_warning": "No models loaded — start omlx with a model to enable Local mode",
  "status.claude_code.opus_tier": "Opus Tier",
  "status.claude_code.sonnet_tier": "Sonnet Tier",
  "status.claude_code.haiku_tier": "Haiku Tier",
  "status.claude_code.haiku_hint": "Background tasks & fast ops — choose smallest available",
  "status.claude_code.select_model": "— Select model —",
  "status.claude_code.model_unavailable": "Saved model no longer available",
  "status.claude_code.command": "Command",
  "status.claude_code.copy_command_tooltip": "Copy command",
  "status.claude_code.context_scaling": "Context Scaling for Claude Code",
  "status.claude_code.target_context_size": "Target Context Size",
  "status.claude_code.tokens_unit": "tokens",
  "status.claude_code.context_scaling_description": "Scales token usage so Claude Code's auto-compact triggers correctly with smaller context models.",
  "status.integrations.section_label": "Other Integrations",
  "status.integrations.model": "Model",
  "status.integrations.select_model": "— Select model —",
  "status.integrations.model_unavailable": "Saved model no longer available",
  "status.integrations.command": "Command",
  "status.integrations.copy_command_tooltip": "Copy command",
  "status.integrations.opencode_desc": "AI coding assistant in terminal",
  "status.integrations.openclaw_desc": "AI assistant with messaging integration",
  "status.integrations.openclaw_tools_profile": "Tools",
  "status.engines.section_label": "Engine Versions",
  "status.engines.unknown_version": "unknown",
  "models.tab.manager": "Manager",
  "models.tab.downloader": "Downloader",
  "models.tab.quantizer": "oQ Quantization",
  "models.tab.uploader": "oQ Uploader",
  "models.manager.section_label": "Models",
  "models.manager.heading": "Model Manager",
  "models.manager.description": "Manage your local models.",
  "models.manager.local_models": "Local Models",
  "models.manager.models_count": "{count} models",
  "models.manager.refresh": "Refresh",
  "models.manager.reload": "Reload",
  "models.manager.reloading": "Reloading...",
  "models.manager.no_models": "No models found in model directory.",
  "models.manager.copy_model_name_tooltip": "Copy model name",
  "models.manager.delete_tooltip": "Delete model",
  "models.manager.delete_confirm": "Delete?",
  "models.manager.delete_yes": "Yes",
  "models.manager.delete_no": "No",
  "models.downloader.section_label": "Models",
  "models.downloader.heading": "Model Downloader",
  "models.downloader.description": "Download models from HuggingFace or ModelScope and browse available models.",
  "models.downloader.source.hf": "HuggingFace",
  "models.downloader.source.ms": "ModelScope",
  "models.downloader.mirror_settings": "Mirror Settings",
  "models.downloader.mirror_cancel": "Cancel",
  "models.downloader.mirror_save": "Save",
  "models.downloader.mirror_saving": "Saving...",
  "models.downloader.download_section": "Download from HuggingFace",
  "models.downloader.repo_id": "Repository ID",
  "models.downloader.repo_placeholder": "mlx-community/Llama-3-8B-4bit",
  "models.downloader.hf_token": "HF Token",
  "models.downloader.hf_token_optional": "(optional)",
  "models.downloader.hf_token_placeholder": "hf_...",
  "models.downloader.download_button": "Download",
  "models.downloader.ms_download_section": "Download from ModelScope",
  "models.downloader.ms_repo_id": "Model ID",
  "models.downloader.ms_repo_placeholder": "qwen/Qwen2.5-7B-Instruct-MLX",
  "models.downloader.ms_token": "MS Token",
  "models.downloader.ms_token_optional": "(optional)",
  "models.downloader.ms_token_placeholder": "your_token...",
  "models.downloader.ms_mirror_settings": "Mirror Settings",
  "models.downloader.ms_unavailable": "ModelScope SDK not installed. Install with: pip install \"omlx[modelscope]\"",
  "models.search.section_label": "Search HuggingFace",
  "models.search.placeholder": "Search models on HuggingFace...",
  "models.search.ms_section_label": "Search ModelScope",
  "models.search.ms_placeholder": "Search models on ModelScope...",
  "models.search.recent_searches": "Recent searches",
  "models.search.sort.trending": "Trending",
  "models.search.sort.downloads": "Most Downloads",
  "models.search.sort.created": "Recently Created",
  "models.search.sort.updated": "Recently Updated",
  "models.search.sort.most_params": "Most Parameters",
  "models.search.sort.least_params": "Least Parameters",
  "models.search.button": "Search",
  "models.browse.section_label": "Browse Models",
  "models.browse.system_suffix": "for {memory} system",
  "models.browse.tab.trending": "Trending",
  "models.browse.tab.popular": "Popular",
  "models.browse.tab.search_results": "Search Results",
  "models.browse.loading": "Loading recommendations...",
  "models.browse.load_prompt": "Click to load recommended models.",
  "models.browse.load_button": "Load Recommendations",
  "models.browse.no_trending": "No trending models found for your system.",
  "models.browse.no_popular": "No popular models found for your system.",
  "models.browse.searching": "Searching...",
  "models.browse.search_prompt": "Enter a search query to find models.",
  "models.browse.no_results": "No results found.",
  "models.browse.tight_fit": "Tight fit",
  "models.browse.high_oom_risk": "High OOM risk",
  "models.browse.params_suffix": "params",
  "models.browse.mlx_only": "MLX only",
  "models.queue.section_label": "Download Queue",
  "models.queue.downloading": "Downloading...",
  "models.queue.cancel_tooltip": "Cancel download",
  "models.queue.remove_tooltip": "Remove from list",
  "models.oq.section_label": "Quantization",
  "models.oq.heading": "oQ Quantization",
  "models.oq.description": "Quantize models using oQ mixed-precision strategy for better quality at low bits.",
  "models.oq.form_section": "New Quantization",
  "models.oq.select_model": "Source Model",
  "models.oq.select_placeholder": "Select a model...",
  "models.oq.level": "oQ Level",
  "models.oq.start_button": "Start",
  "models.oq.queue_section": "Quantization Queue",
  "models.oq.no_models": "No non-quantized models found in model directories.",
  "models.oq.cancel_tooltip": "Cancel quantization",
  "models.oq.remove_tooltip": "Remove from list",
  "models.oq.advanced_settings": "Advanced Settings",
  "models.uploader.section_label": "Hub Upload",
  "models.uploader.heading": "Upload oQ Models",
  "models.uploader.description": "Upload your locally quantized oQ models to HuggingFace Hub.",
  "models.uploader.hf_token_label": "HuggingFace Token",
  "models.uploader.hf_token_placeholder": "Enter HF write token (hf_...)",
  "models.uploader.namespace_label": "Namespace",
  "models.uploader.validate_button": "Validate",
  "models.uploader.validating": "Validating...",
  "models.uploader.validated": "Authenticated as {username}",
  "models.uploader.invalid_token": "Invalid token. Ensure it has write access.",
  "models.uploader.oq_models_label": "oQ Models",
  "models.uploader.no_oq_models": "No oQ models found in model directories.",
  "models.uploader.upload_button": "Upload",
  "models.uploader.queue_section": "Upload Queue",
  "models.uploader.cancel_tooltip": "Cancel upload",
  "models.uploader.remove_tooltip": "Remove from list",
  "models.uploader.modal_title": "Upload to HuggingFace",
  "models.uploader.modal_repo_label": "Repository Name",
  "models.uploader.modal_readme_label": "README Source",
  "models.uploader.modal_readme_none": "Auto-generate basic README",
  "models.uploader.modal_redownload_label": "Show re-download notice",
  "models.uploader.modal_redownload_hint": "Add a notice at the top of README asking previous users to re-download",
  "models.uploader.modal_private_label": "Private Repository",
  "models.uploader.modal_confirm": "Upload",
  "models.uploader.modal_cancel": "Cancel",
  "models.detail.loading": "Loading model info...",
  "models.detail.tab.model_card": "Model Card",
  "models.detail.tab.files": "Files",
  "models.detail.tab.tags": "Tags",
  "models.detail.no_model_card": "No model card available.",
  "models.detail.no_files": "No file information available.",
  "models.detail.no_tags": "No tags available.",
  "models.detail.view_on_hf": "View on HuggingFace",
  "models.detail.view_on_ms": "View on ModelScope",
  "models.detail.close": "Close",
  "models.detail.lora_warning": "LoRA adapter — not supported",
  "settings.tab.global": "Global Settings",
  "settings.tab.models": "Model Settings",
  "settings.global.section_label": "Global Settings",
  "settings.global.heading": "Server Configuration",
  "settings.global.restart_notice": "Settings marked with",
  "settings.global.restart_badge": "Restart",
  "settings.global.restart_suffix": "require server restart.",
  "settings.auth.section_label": "Auth & Info",
  "settings.auth.base_path": "Base Path",
  "settings.auth.base_path_hint": "Read-only",
  "settings.auth.api_key": "API Key",
  "settings.auth.api_key_hint": "Min 4 chars, no whitespace",
  "settings.auth.api_key_placeholder": "Enter API key",
  "settings.auth.toggle_visibility_tooltip": "Toggle visibility",
  "settings.auth.skip_verification": "Skip API key verification",
  "settings.auth.skip_verification_hint": "API endpoints will not require authentication (localhost only)",
  "settings.auth.sub_keys_label": "Additional API Keys",
  "settings.auth.sub_keys_hint": "API-only keys. Cannot be used for admin login.",
  "settings.auth.sub_keys_add": "Add",
  "settings.auth.sub_keys_cancel": "Cancel",
  "settings.auth.sub_keys_create": "Create",
  "settings.auth.sub_keys_delete": "Delete",
  "settings.auth.sub_keys_delete_confirm": "Are you sure you want to delete this sub key?",
  "settings.auth.sub_keys_name_placeholder": "Name (optional)",
  "settings.auth.sub_keys_key_placeholder": "API key value",
  "settings.auth.sub_keys_unnamed": "Unnamed",
  "settings.auth.sub_keys_empty": "No sub keys configured",
  "settings.auth.sub_keys_generate_tooltip": "Generate random key",
  "settings.server.section_label": "Server",
  "settings.server.host": "Host",
  "settings.server.host_localhost": "Localhost only (127.0.0.1)",
  "settings.server.host_public": "Open to all (0.0.0.0)",
  "settings.server.host_custom": "Custom (caution)",
  "settings.server.host_placeholder": "e.g. 192.168.1.100",
  "settings.server.port": "Port",
  "settings.server.log_level": "Log Level",
  "settings.server.log_level_error": "error",
  "settings.server.log_level_warning": "warning",
  "settings.server.log_level_info": "info (default)",
  "settings.server.log_level_debug": "debug",
  "settings.server.log_level_trace": "trace - includes full content",
  "settings.model.section_label": "Model",
  "settings.model.model_fallback": "Fallback to Default Model",
  "settings.model.model_fallback_desc": "Use the default model when the requested model is not found",
  "settings.model.model_directories": "Model Directories",
  "settings.model.add": "Add",
  "settings.model.placeholder_primary": "Primary model directory",
  "settings.model.placeholder_additional": "Additional model directory",
  "settings.resource.section_label": "Resource Management",
  "settings.resource.live_badge": "Live",
  "settings.resource.memory_limit_total": "Memory Limit (Total)",
  "settings.resource.memory_limit_total_description": "Total memory limit for oMLX process (models + KV cache + overhead).",
  "settings.resource.memory_limit_total_eviction": "Exceeding this triggers immediate LRU model eviction.",
  "settings.resource.memory_limit_total_auto": "Auto",
  "settings.resource.memory_limit_total_auto_desc": ": system RAM - 8GB.",
  "settings.resource.auto": "Auto",
  "settings.resource.off": "Off",
  "settings.resource.memory_limit_total_disabled": "Set to 0 to disable.",
  "settings.resource.memory_limit_models": "Memory Limit (Models Only)",
  "settings.resource.memory_limit_models_description": "Maximum memory for loaded models. Set to 0 to disable.",
  "settings.resource.hot_cache_limit": "Hot Cache Limit (In-Memory Cache)",
  "settings.resource.hot_cache_description": "In-memory cache for frequently accessed KV cache blocks.",
  "settings.resource.hot_cache_zero_note": "Reduces SSD I/O latency for repeated prompts.",
  "settings.resource.hot_cache_disabled": "0",
  "settings.resource.hot_cache_disabled_label": "= disabled.",
  "settings.resource.cold_cache_limit": "Cold Cache Limit (SSD Cache)",
  "settings.resource.cold_cache_description": "Persistent SSD storage for evicted KV cache blocks.",
  "settings.resource.prefill_memory_guard": "Memory guard",
  "settings.resource.prefill_memory_guard_description": "Estimate memory before prefill and defer scheduling under memory pressure to prevent Metal allocation failures.",
  "settings.resource.max_concurrent_requests": "Max Concurrent Requests",
  "settings.resource.max_concurrent_requests_hint": "Maximum number of requests processed simultaneously. Higher values increase throughput but use more memory.",
  "settings.resource.restart_badge": "Restart needed",
  "settings.cache.section_label": "Cache",
  "settings.cache.enabled": "Cache Enabled",
  "settings.cache.ssd_directory": "SSD Cache Directory",
  "settings.generation.section_label": "Generation Defaults",
  "settings.generation.max_context_window": "Max Context Window",
  "settings.generation.max_context_window_hint": "Reject prompts exceeding this token limit",
  "settings.generation.max_tokens": "Max Tokens",
  "settings.generation.temperature": "Temperature",
  "settings.generation.temperature_hint": "0.0 = deterministic, 2.0 = max randomness",
  "settings.generation.top_p": "Top P",
  "settings.generation.top_p_hint": "Nucleus sampling threshold",
  "settings.generation.top_k": "Top K",
  "settings.generation.top_k_hint": "0 = disabled",
  "settings.generation.repetition_penalty": "Repetition Penalty",
  "settings.generation.repetition_penalty_hint": "1.0 = disabled",
  "settings.mcp.section_label": "MCP",
  "settings.mcp.restart_badge": "Restart needed",
  "settings.mcp.config_path": "Config Path",
  "settings.mcp.config_placeholder": "Path to MCP config",
  "settings.huggingface.endpoint": "Mirror Endpoint",
  "settings.huggingface.endpoint_hint": "Custom endpoint URL for HuggingFace API (e.g. https://hf-mirror.com)",
  "settings.huggingface.endpoint_clear_hint": "To use the default endpoint, clear the field and save.",
  "settings.advanced.section_label": "Advanced",
  "settings.advanced.restart_badge": "Restart needed",
  "settings.advanced.cache": "Cache",
  "settings.advanced.initial_cache_blocks": "Initial Cache Blocks",
  "settings.advanced.initial_cache_blocks_hint": "Blocks pre-allocated at startup. Higher values reduce dynamic allocation overhead.",
  "settings.language.section_label": "Language",
  "settings.language.label": "Interface Language",
  "settings.language.en": "English",
  "settings.language.zh": "中文（简体）",
  "settings.language.zh-TW": "中文（繁體）",
  "settings.language.ko": "한국어",
  "settings.language.ja": "日本語",
  "settings.save.button": "Save Settings",
  "settings.save.saving": "Saving...",
  "settings.models.section_label": "Model Settings",
  "settings.models.heading": "Available Models",
  "settings.models.description": "Configure per-model settings including sampling parameters.",
  "settings.models.loading": "Loading models...",
  "settings.models.no_models_heading": "No models found",
  "settings.models.no_models_description": "Add models to your model directory to get started.",
  "settings.models.table.model": "Model",
  "settings.models.table.type": "Type",
  "settings.models.table.size": "Size",
  "settings.models.table.status": "Status",
  "settings.models.table.pin": "Pin",
  "settings.models.table.default": "Default",
  "settings.models.table.status_loading": "Loading",
  "settings.models.table.status_loaded": "Loaded",
  "settings.models.table.status_unload": "Unload",
  "settings.models.table.status_load": "Load",
  "settings.models.table.status_ready": "Ready",
  "settings.models.table.copy_model_name_tooltip": "Copy model name",
  "settings.models.table.sampling_settings_tooltip": "Sampling Settings",
  "settings.models.badge.ctx_window": "ctx_window:",
  "settings.models.badge.max_tokens": "max_tokens:",
  "settings.models.badge.temp": "temp:",
  "settings.models.badge.top_p": "top_p:",
  "settings.models.badge.top_k": "top_k:",
  "settings.models.badge.min_p": "min_p:",
  "settings.models.badge.rep_penalty": "rep_penalty:",
  "settings.models.badge.presence_penalty": "presence_penalty:",
  "settings.models.badge.tool_result_tokens": "tool_result_tokens:",
  "settings.models.badge.force_sampling": "force_sampling",
  "modal.model_settings.section_label": "Model Settings",
  "modal.model_settings.model_alias": "Model Alias",
  "modal.model_settings.model_type": "Model Type",
  "modal.model_settings.model_type_auto": "Auto-detect",
  "modal.model_settings.max_context_window": "Ctx Window",
  "modal.model_settings.max_tokens": "Max Tokens",
  "modal.model_settings.temperature": "Temperature",
  "modal.model_settings.repetition_penalty": "Repetition Penalty",
  "modal.model_settings.repetition_penalty_short": "Rep. Penalty",
  "modal.model_settings.min_p": "Min P",
  "modal.model_settings.presence_penalty": "Presence Penalty",
  "modal.model_settings.top_p": "Top P",
  "modal.model_settings.top_k": "Top K",
  "modal.model_settings.ttl_seconds": "TTL (Seconds)",
  "modal.model_settings.ttl_pinned": "Pinned",
  "modal.model_settings.ttl_no_ttl": "No TTL",
  "modal.model_settings.load_defaults": "Load Defaults",
  "modal.model_settings.loading_defaults": "Loading...",
  "modal.model_settings.placeholder_default": "Default",
  "modal.model_settings.thinking_budget": "Thinking Budget",
  "modal.model_settings.thinking_budget_hint": "Limit thinking tokens for reasoning models. Forces end of thinking when exceeded.",
  "modal.model_settings.thinking_budget_placeholder": "e.g. 4096",
  "modal.model_settings.limit_tool_result": "Limit Tool Result Tokens",
  "modal.model_settings.limit_tool_result_hint": "Truncate large tool results (e.g. file reads) to a token limit",
  "modal.model_settings.limit_tool_placeholder": "e.g. 2000",
  "modal.model_settings.turboquant_kv": "TurboQuant KV Cache",
  "modal.model_settings.turboquant_kv_hint": "Compress KV cache using vector quantization. Lower bits = more compression, higher bits = better quality. Supports 2 to 8 bits.",
  "modal.model_settings.turboquant_kv_bits_label": "Bits per channel",
  "modal.model_settings.index_cache": "Index Cache",
  "modal.model_settings.index_cache_hint": "Skip redundant indexer computation in DSA layers (DeepSeek V3/GLM-5).",
  "modal.model_settings.index_cache_freq": "Frequency (every Nth layer keeps indexer)",
  "modal.model_settings.force_sampling": "Force Sampling",
  "modal.model_settings.force_sampling_hint": "Override request sampling parameters with configured values",
  "modal.model_settings.chat_template_kwargs": "Chat Template Kwargs",
  "modal.model_settings.chat_template_kwargs_hint": "Parameters passed to chat template",
  "modal.model_settings.add_kwarg": "+ Add",
  "modal.model_settings.kwarg_enable_thinking": "enable_thinking",
  "modal.model_settings.kwarg_reasoning_effort": "reasoning_effort",
  "modal.model_settings.kwarg_custom": "Custom",
  "modal.model_settings.kwarg_custom_key_placeholder": "key",
  "modal.model_settings.kwarg_custom_value_placeholder": "value",
  "modal.model_settings.kwarg_force": "Force",
  "modal.model_settings.kwarg_force_tooltip": "Force: API requests cannot override this value",
  "modal.model_settings.kwarg_effort_low": "low",
  "modal.model_settings.kwarg_effort_medium": "medium",
  "modal.model_settings.kwarg_effort_high": "high",
  "modal.model_settings.no_kwargs": "No kwargs configured",
  "modal.model_settings.empty_hint": "Leave empty to use global defaults",
  "modal.model_settings.basic_label": "Basic Settings",
  "modal.model_settings.advanced_label": "Advanced Settings",
  "modal.model_settings.experimental_label": "Experimental Features",
  "modal.model_settings.cancel": "Cancel",
  "modal.model_settings.save": "Save",
  "modal.model_settings.saving": "Saving...",
  "logs.section_label": "Logs",
  "logs.heading": "Server Logs",
  "logs.description": "View real-time server logs with auto-refresh.",
  "logs.viewer_label": "Log Viewer",
  "logs.auto_refresh": "Auto-refresh",
  "logs.lines_label": "Lines:",
  "logs.refresh_label": "Refresh:",
  "logs.refresh_unit": "sec (0=off)",
  "logs.file_label": "File:",
  "logs.refresh_button": "Refresh",
  "logs.loading": "Loading...",
  "logs.auto_scroll": "Auto-scroll",
  "logs.showing_lines": "Showing {lines} of {total} lines",
  "logs.placeholder": "No logs available. Start the server to generate logs.",
  "logs.last_updated": "Last updated: {time}",
  "bench.section_label": "Benchmark",
  "bench.heading": "Performance Benchmark",
  "bench.description": "Measure inference speed for single requests and continuous batching. All other models will be unloaded before benchmarking.",
  "bench.config.section_label": "Configuration",
  "bench.config.model": "Model",
  "bench.config.model_placeholder": "Select a model...",
  "bench.config.single_request": "Single Request Tests",
  "bench.config.generation_hint": "Generation length: 128 tokens (fixed)",
  "bench.config.batch_tests": "Continuous Batching Tests",
  "bench.config.batch_hint": "Batch tests use pp1024 / tg128",
  "bench.config.run_button": "Run Benchmark",
  "bench.progress.preparing": "Preparing...",
  "bench.progress.cancel": "Cancel",
  "bench.progress.starting": "Starting benchmark...",
  "bench.results.single.section_label": "Single Request Results",
  "bench.results.single.test": "Test",
  "bench.results.single.ttft": "TTFT (ms)",
  "bench.results.single.tpot": "TPOT (ms/tok)",
  "bench.results.single.pp_tps": "pp TPS",
  "bench.results.single.tg_tps": "tg TPS",
  "bench.results.single.e2e_latency": "E2E Latency",
  "bench.results.single.throughput": "Throughput",
  "bench.results.single.peak_mem": "Peak Mem",
  "bench.results.batch.section_label": "Continuous Batching",
  "bench.results.batch.subtitle": "pp1024 / tg128",
  "bench.results.batch.batch_size": "Batch Size",
  "bench.results.batch.tg_tps": "tg TPS",
  "bench.results.batch.speedup": "Speedup",
  "bench.results.batch.pp_tps": "pp TPS",
  "bench.results.batch.pp_tps_req": "pp TPS/req",
  "bench.results.batch.avg_ttft": "Avg TTFT (ms)",
  "bench.results.batch.e2e_latency": "E2E Latency",
  "bench.results.batch.baseline": "1x (baseline)",
  "bench.results.text_export.section_label": "Benchmark Results (Text — Copy & Paste)",
  "bench.results.text_export.copy": "Copy",
  "bench.results.text_export.copied": "Copied!",
  "bench.metrics.section_label": "Metrics Reference",
  "bench.metrics.ttft.name": "TTFT",
  "bench.metrics.ttft.full_name": "(Time to First Token)",
  "bench.metrics.test.tooltip": "Test case label in the format ppN/tgM. 'pp' = prompt processing (number of input tokens), 'tg' = token generation (number of output tokens). For example, pp1024/tg256 means 1024 input tokens and 256 output tokens.",
  "bench.metrics.ttft.tooltip": "Time to First Token — how long the user waits before seeing any output. The model must read and process the entire prompt (prefill phase) before generating the first token. Longer prompts = higher TTFT. Measured in milliseconds. Lower is better.",
  "bench.metrics.tpot.tooltip": "Time Per Output Token — average interval between consecutive output tokens during the generation (decode) phase. Directly affects how fast text appears on screen. For example, 20ms/tok means ~50 tokens per second. Lower is better.",
  "bench.metrics.tg_tps.tooltip": "Token Generation TPS — number of output tokens produced per second during the decode phase. This is the inverse of TPOT (e.g., TPOT 20ms = 50 tg TPS). The primary measure of how fast the model writes its response. Higher is better.",
  "bench.metrics.pp_tps.tooltip": "Prompt Processing TPS — how many input tokens the model processes per second during the prefill phase. Higher values mean the model reads your prompt faster, which directly reduces TTFT. Important for long-context workloads. Higher is better.",
  "bench.metrics.e2e.tooltip": "End-to-End Latency — total wall-clock time from sending the request to receiving the complete response. Equals TTFT + (TPOT x number of output tokens). This is the overall time the user waits for a full answer.",
  "bench.metrics.throughput.tooltip": "Total Throughput — combined input and output tokens processed per second. Shows overall system utilization including both prefill and generation. Useful for comparing total compute efficiency across different prompt lengths.",
  "bench.metrics.peak_mem.tooltip": "Peak GPU Memory — maximum GPU (unified) memory used during inference for this test case. Includes model weights, KV cache, and intermediate activations. Helps estimate how large a model your hardware can handle.",
  "bench.metrics.batch_size.tooltip": "Batch Size — number of requests processed simultaneously. Batching lets the GPU handle multiple requests at once, increasing total throughput but adding some latency per individual request. A 2x batch doesn't mean 2x speed due to memory bandwidth limits.",
  "bench.metrics.speedup.tooltip": "Speedup — how much faster token generation is compared to a single request (1x baseline). For example, 1.8x means batching produces tokens 1.8 times faster overall. Values above 1x show more efficient GPU utilization through batching.",
  "bench.metrics.pp_tps_req.tooltip": "Per-Request Prompt Processing TPS — the pp TPS divided by the batch size. Shows how fast each individual request's prompt is processed when sharing the GPU with other requests. Expect this to be lower than the single-request pp TPS since compute is shared.",
  "bench.metrics.avg_ttft.tooltip": "Average Time to First Token across all requests in the batch. Higher than single-request TTFT because the GPU must process multiple prompts. Shows the typical wait time each user experiences under batched workloads.",
  "bench.metrics.ttft.description": "Latency until the model starts responding. Measures prompt processing (prefill) speed. Lower is better.",
  "bench.metrics.tpot.name": "TPOT",
  "bench.metrics.tpot.full_name": "(Time Per Output Token)",
  "bench.metrics.tpot.description": "Average time between each generated token. Measures decode speed. Lower is better.",
  "bench.metrics.tg_tps.name": "tg TPS",
  "bench.metrics.tg_tps.full_name": "(Token Generation TPS)",
  "bench.metrics.tg_tps.description": "Output tokens generated per second. Inverse of TPOT. Higher is better.",
  "bench.metrics.pp_tps.name": "pp TPS",
  "bench.metrics.pp_tps.full_name": "(Prompt Processing TPS)",
  "bench.metrics.pp_tps.description": "Input/prompt tokens processed per second during prefill. Higher is better.",
  "bench.metrics.e2e.name": "E2E Latency",
  "bench.metrics.e2e.full_name": "(End-to-End)",
  "bench.metrics.e2e.description": "Total time from request submission to complete response. Includes prefill + generation.",
  "bench.metrics.throughput.name": "Total Throughput",
  "bench.metrics.throughput.description": "Overall tokens (input + output) per second. Measures total system utilization.",
  "bench.metrics.batch_size.name": "Batch Size",
  "bench.metrics.batch_size.description": "Number of concurrent requests processed together. Higher batch sizes improve total throughput but increase per-request latency.",
  "bench.metrics.speedup.name": "Speedup",
  "bench.metrics.speedup.description": "Token generation throughput multiplier compared to single-request baseline (1x). Higher is better.",
  "bench.metrics.pp_tps_req.name": "pp TPS/req",
  "bench.metrics.pp_tps_req.full_name": "(Per-Request Prompt Processing TPS)",
  "bench.metrics.pp_tps_req.description": "Prompt processing throughput divided by batch size. Shows per-request prefill speed under batching load.",
  "navbar.dropdown.performance": "Performance",
  "navbar.dropdown.accuracy": "Intelligence",
  "acc_bench.section_label": "Intelligence",
  "acc_bench.heading": "Intelligence Benchmark",
  "acc_bench.description": "Evaluate model intelligence across knowledge, reasoning, math, and coding benchmarks. All other models will be unloaded before benchmarking.",
  "acc_bench.config.section_label": "Configuration",
  "acc_bench.config.model": "Model",
  "acc_bench.config.model_placeholder": "Select a model...",
  "acc_bench.config.benchmarks": "Benchmarks",
  "acc_bench.config.benchmarks_hint": "Fixed seed sampling ensures the same questions across different models for fair comparison. Select Full for the complete dataset.",
  "acc_bench.config.livecodebench_warning": "LiveCodeBench executes model-generated code on your machine (sandboxed with timeout and memory limits).",
  "acc_bench.config.code_exec": "Code exec",
  "acc_bench.config.batch_size": "Batch Size",
  "acc_bench.config.batch_size_hint": "Process multiple questions concurrently. Higher batch size = faster but uses more memory.",
  "acc_bench.config.thinking": "Thinking Mode",
  "acc_bench.config.thinking_on": "On",
  "acc_bench.config.thinking_off": "Off",
  "acc_bench.config.thinking_hint": "Enable for reasoning models (e.g., DeepSeek-R1, QwQ). Auto-detects if the model thinks even when disabled.",
  "acc_bench.results.thinking_badge": "Thinking",
  "acc_bench.config.add_run": "Add & Run",
  "acc_bench.config.cancel_button": "Cancel",
  "acc_bench.config.queue_label": "Queue",
  "acc_bench.results.section_label": "Results",
  "acc_bench.results.clear": "Clear Results",
  "acc_bench.results.download": "Download",
  "acc_bench.results.show_categories": "Show category breakdown",
  "acc_bench.results.hide_categories": "Hide category breakdown",
  "acc_bench.results.category": "Category",
  "acc_bench.results.score": "Score",
  "acc_bench.results.show_text": "Show text export",
  "acc_bench.results.hide_text": "Hide text export",
  "chat.title": "Chat - oMLX Admin",
  "chat.brand": "oMLX Chat",
  "chat.api_key_prompt": "Enter your API key to start chatting",
  "chat.api_key_placeholder": "Enter API key...",
  "chat.api_key_continue": "Continue",
  "chat.new_chat": "New Chat",
  "chat.new_chat_title": "New Chat",
  "chat.admin_settings": "Admin Settings",
  "chat.clear_all_history": "Clear All History",
  "chat.change_api_key": "Change API Key",
  "chat.select_model": "Select Model",
  "chat.no_models": "No models available",
  "chat.welcome_heading": "Chat with oMLX",
  "chat.welcome_description": "Start a conversation with your local MLX models. Select a model above to begin.",
  "chat.welcome_privacy": "All conversations run locally on your device.",
  "chat.input_placeholder": "Type a message... (Shift+Enter for new line)",
  "chat.input_placeholder_mobile": "Type a message...",
  "chat.edit_cancel": "Cancel",
  "chat.edit_save": "Save & Resend",
  "chat.copy_tooltip": "Copy",
  "chat.regenerate_tooltip": "Regenerate",
  "chat.stop_tooltip": "Stop",
  "chat.edit_tooltip": "Edit message",
  "chat.delete_tooltip": "Delete chat",
  "chat.assistant_label": "Assistant",
  "chat.confirm_change_api_key": "Are you sure you want to change your API key?",
  "chat.confirm_delete_chat": "Are you sure you want to delete this chat?",
  "chat.confirm_clear_all": "Are you sure you want to delete ALL chat history? This cannot be undone.",
  "chat.error.incorrect_api_key": "API key is incorrect. Please re-enter your API key.",
  "chat.upload_image": "Upload image",
  "chat.remove_image": "Remove image",
  "chat.image_not_available": "Image",
  "chat.image_preview": "Image preview",
  "chat.system_prompt.title": "System Prompt",
  "chat.system_prompt.description": "Set instructions for the model. Applied to all messages in this chat.",
  "chat.system_prompt.placeholder": "e.g. You are a helpful assistant. Be concise.",
  "chat.system_prompt.save": "Save",
  "chat.system_prompt.cancel": "Cancel",
  "chat.system_prompt.clear": "Clear",
  "chat.error.invalid_image_type": "Please select an image file",
  "chat.error.image_too_large": "Image size must be less than 10MB",
  "chat.error.image_load_failed": "Failed to load image. Please try again.",
  "js.error.required_fields": "Required fields cannot be empty: {fields}",
  "js.error.api_key_min_length": "API key must be at least 4 characters",
  "js.error.api_key_no_whitespace": "API key must not contain whitespace",
  "js.error.save_settings_failed": "Failed to save settings",
  "js.error.update_model_setting_failed": "Failed to update model setting",
  "js.error.load_model_failed": "Failed to load model",
  "js.error.reload_failed": "Failed to reload models",
  "js.error.unload_model_failed": "Failed to unload model",
  "js.error.save_model_settings_failed": "Failed to save model settings",
  "js.info.model_type_reload_required": "Model type changed. Unload and reload the model for the change to take effect.",
  "js.error.no_config_defaults": "No config defaults found for this model",
  "js.error.load_generation_config_failed": "Failed to load generation config",
  "js.error.select_prompt_length": "Select at least one prompt length",
  "js.error.start_benchmark_failed": "Failed to start benchmark",
  "js.error.start_benchmark_error": "Failed to start benchmark: {message}",
  "js.error.benchmark_connection_lost": "Connection to benchmark lost",
  "js.error.load_logs_failed": "Failed to load logs",
  "js.error.start_download_failed": "Failed to start download",
  "js.error.start_download_connection": "Failed to start download. Check server connection.",
  "js.error.delete_model_failed": "Failed to delete model",
  "js.error.delete_model_connection": "Failed to delete model. Check server connection.",
  "js.success.download_started": "Download started: {repo_id}",
  "js.success.settings_saved": "Settings saved successfully"
}
