{
    "_display_name":  "Türkçe",
    "app.tab.core":  "⚙️ Çekirdek",
    "app.tab.servers":  "🖥️ Sunucular",
    "app.tab.diagnostics":  "🔍 Tanılama",
    "app.tab.help":  "❓ Yardım",
    "core.status_checking":  "Çekirdek durumu kontrol ediliyor...",
    "core.status_error_not_found":  "Çekirdek durumu ❌ Hata: sing-box bulunamadı",
    "core.status_restarting":  "Çekirdek durumu 🔄 Yeniden başlatılıyor...",
    "core.status_running":  "Çekirdek durumu ✅ Çalışıyor",
    "core.status_stopped":  "Çekirdek durumu ⏸️ Durdu",
    "core.button_start":  "Başlat",
    "core.button_stop":  "Durdur",
    "core.button_exit":  "Çıkış",
    "core.button_restart":  "Yeniden başlat",
    "core.label_config":  "Yapılandırma",
    "core.status_checking_config":  "Checking config...",
    "core.status_config_ok":  "%s ✅ %s",
    "core.status_config_not_found":  "%s ❌ not found",
    "core.status_config_error":  "Config error: %v",
    "core.status_parser_starting":  "Starting...",
    "core.button_update":  "🔄 Update",
    "core.button_wizard":  "⚙️ Wizard",
    "core.button_download_template":  "Download Config Template",
    "core.label_singbox":  "Sing-box",
    "core.singbox_help_msg":  "sing-box is the core binary.\n\n",
    "core.singbox_help_look_for":  "Look for: %s\n",
    "core.singbox_help_extract":  "Extract the binary into the bin folder.\n\n",
    "core.singbox_help_manual":  "You can download with the button above, or manually from:",
    "core.singbox_status_checking":  "Checking...",
    "core.singbox_status_not_found":  "❌ not found",
    "core.button_download":  "Download",
    "core.button_download_version":  "Download v%s",
    "core.button_update_version":  "Update v%s",
    "core.dialog_singbox_title":  "Sing-box",
    "core.dialog_singbox_close":  "Close",
    "core.button_open_bin":  "Open bin folder",
    "core.label_wintun":  "Wintun",
    "core.wintun_help_msg":  "wintun.dll is required for TUN mode on Windows.\n\n",
    "core.wintun_help_in_archive":  "In the download archive, take wintun.dll \n\n Your system is %s.\n\n ",
    "core.wintun_help_place":  "Place it in the bin folder: bin\n\n",
    "core.wintun_help_manual":  "You can download with the button above, or manually from:",
    "core.wintun_status_checking":  "Checking...",
    "core.wintun_status_ok":  "ok",
    "core.wintun_status_not_found":  "❌ not found",
    "core.wintun_status_error":  "❌ Error checking wintun.dll",
    "core.dialog_wintun_title":  "Wintun",
    "core.dialog_wintun_close":  "Close",
    "core.dialog_template_title":  "Config Template",
    "core.dialog_template_saved":  "Template saved to %s",
    "core.dialog_download_complete_title":  "Download Complete",
    "core.dialog_update_available_title":  "Update Available",
    "core.dialog_update_msg":  "A new version of the application is available",
    "core.dialog_update_current":  "Current version: %s",
    "core.dialog_update_new":  "New version: %s",
    "core.dialog_update_close":  "Close",
    "core.button_download_from_github":  "Download from GitHub",
    "core.config_not_found_title":  "Configuration Not Found",
    "core.config_not_found_message":  "⚠️ Configuration file not found!\n\nThe file %s is missing from the bin/ folder.\n\nTo get started:\n1. download Wizard\n2. use Wizard to generate a configuration file\n3. press Start\n",
    "core.already_running_app_title":  "Information",
    "core.already_running_app_message":  "The application is already running. Use the existing instance or close it before starting a new one.",
    "core.info_title":  "Info",
    "core.already_running":  "Sing-Box already running (according to internal state).",
    "core.crash_title":  "Crash",
    "core.crash_restarting":  "Sing-Box crashed, restarting... (attempt %d/%d)",
    "error.startup":  "Failed to start sing-box:\n\n%s\n\nPlease check:\n1. config.json is valid\n2. sing-box executable exists\n3. Check logs for details",
    "error.parser":  "Parser failed:\n\n%s\n\nPlease check:\n1. Subscription URL is valid\n2. Network connection\n3. Check parser.log for details",
    "error.linux_capabilities":  "Linux capabilities required",
    "error.restart_failed":  "Sing-Box failed to restart after %d attempts. Check sing-box.log for details.",
    "error.check_updates_failed":  "Failed to check for updates",
    "error.version_check":  "Error checking version: %s",
    "core.update_available_title":  "Update Available",
    "core.update_available_message":  "Update available!\n\nInstalled: %s\nLatest: %s\n\nYou can download the update from the Core tab.",
    "core.no_updates_title":  "No Updates",
    "core.latest_version_message":  "You are using the latest version.\n\nInstalled: %s\nLatest: %s",
    "tray.open":  "Open",
    "tray.quit":  "Quit",
    "tray.start_vpn":  "Start VPN",
    "tray.stop_vpn":  "Stop VPN",
    "tray.select_proxy":  "Select Proxy",
    "tray.no_proxies_available":  "No proxies available",
    "tray.hide_app_from_dock":  "Hide app from Dock",
    "help.open_config_folder":  "⚙️ Open Config Folder",
    "help.kill_singbox":  "🛑 Kill Sing-Box",
    "help.kill_title":  "Kill",
    "help.kill_result":  "Sing-Box killed if running.",
    "help.version_label":  "📦 Version: %s",
    "help.checking_updates":  "Checking for updates...",
    "help.unable_to_check_updates":  "Unable to check for updates",
    "help.update_available_format":  "🆕 Update available: %s\nCurrent: %s",
    "help.dev_build_format":  "✅ You are using a development build\nCurrent: %s\nLatest release: %s",
    "help.latest_version_format":  "✅ You are using the latest version\nCurrent: %s",
    "help.telegram_link":  "💬 Telegram Channel",
    "help.github_link":  "🐙 GitHub Repository",
    "help.language_label":  "Dil:",
    "help.language_changed":  "Dil değiştirildi. Tam uygulamak için uygulamayı yeniden başlatın.",
    "help.download_locales":  "📥 Download translations",
    "help.download_locales_btn":  "⬇",
    "help.download_locales_success":  "Translations downloaded (%d). Restart to see new languages.",
    "help.download_locales_failed":  "Failed to download translations",
    "help.downloading_locales":  "Downloading...",
    "help.downloading_locales_btn":  "🔄",
    "diag.stun_button":  "STUN [UDP]",
    "diag.stun_check_title":  "STUN Check",
    "diag.stun_checking":  "Checking, please wait...",
    "diag.external_ip_format":  "Your External IP: %s\n%s",
    "diag.copy_ip":  "Copy IP",
    "diag.copied_title":  "Copied",
    "diag.ip_copied":  "IP address copied to clipboard.",
    "diag.stun_result_title":  "STUN Check Result",
    "diag.close":  "Close",
    "diag.stun_server_label":  "STUN server (host:port):",
    "diag.use_system_socks5":  "Use system SOCKS5 proxy",
    "diag.stun_settings":  "STUN settings",
    "diag.save":  "Save",
    "diag.cancel":  "Cancel",
    "diag.open_log_window":  "Open log window",
    "diag.open_logs_folder":  "Open logs folder",
    "diag.ip_check_services":  "IP Check Services:",
    "log.window_title":  "Logs",
    "log.level_label":  "Level:",
    "log.level_error":  "Error",
    "log.level_warn":  "Warn",
    "log.level_info":  "Info",
    "log.level_verbose":  "Verbose",
    "log.level_trace":  "Trace",
    "log.refresh":  "Refresh",
    "log.internal_tab":  "Internal",
    "log.core_tab":  "Core",
    "log.api_tab":  "API",
    "log.file_not_available":  "Log file not available.",
    "dialog.download_failed":  "Download failed. See the log for details.",
    "dialog.download_failed_manual_hint":  "Please download the file manually and place it in the folder below.",
    "dialog.open_download_page":  "Open download page",
    "dialog.open_folder":  "Open folder",
    "dialog.close":  "Kapat",
    "dialog.copy":  "Copy",
    "dialog.ok":  "OK",
    "dialog.kill_process":  "Kill Process",
    "dialog.close_warning":  "Close This Warning",
    "dialog.process_already_running":  "Sing-Box appears to be already running.\nWould you like to kill the existing process?",
    "dialog.warning":  "Warning",
    "dialog.error_prefix":  "❌ ",
    "servers.status_not_checked":  "Status: Not checked",
    "servers.status_click_load":  "Click \u0027Load Proxies\u0027",
    "servers.status_loading":  "Loading proxies for \u0027%s\u0027...",
    "servers.status_loaded":  "Proxies loaded for \u0027%s\u0027. Active: %s",
    "servers.status_clash_api_disabled":  "Clash API disabled due to config error",
    "servers.status_clash_api_off_error":  "❌ Clash API Off (Error)",
    "servers.status_clash_api_off_config":  "❌ Clash API Off (Config Error)",
    "servers.status_clash_api_on":  "✅ Clash API On",
    "servers.status_not_running":  "Status: Not running",
    "servers.status_singbox_stopped":  "Sing-box is stopped.",
    "servers.error_api_not_initialized":  "API service is not initialized",
    "servers.error_api_disabled":  "API is disabled: config error",
    "servers.status_delay_error":  "Delay error: %s",
    "servers.status_delay_format":  "Delay: %d ms for %s",
    "servers.status_selected":  "Selected: %s",
    "servers.status_selected_multi":  "Selected: %d proxies",
    "servers.status_selected_none":  "No proxy selected",
    "servers.status_switch_error":  "Switch error: %s",
    "servers.status_switched":  "Switched \u0027%s\u0027 to %s",
    "servers.status_sorted_name_az":  "Sorted by name (A-Z)",
    "servers.status_sorted_name_za":  "Sorted by name (Z-A)",
    "servers.status_sorted_delay_fast":  "Sorted by delay (fastest first)",
    "servers.status_sorted_delay_slow":  "Sorted by delay (slowest first)",
    "servers.status_no_proxies":  "No proxies to ping",
    "servers.status_list_counts":  "Toplam / uygun: %d / %d",
    "servers.status_pinging":  "Pinging %d proxies...",
    "servers.status_pinging_progress":  "Pinging %d/%d...",
    "servers.status_ping_completed":  "Ping test completed for %d proxies",
    "servers.status_selected_group":  "Selected group \u0027%s\u0027. Last used proxy: %s",
    "servers.status_selected_group_only":  "Selected group \u0027%s\u0027.",
    "servers.status_ping_url_updated":  "Ping test URL updated: %s",
    "servers.label_proxy_name":  "Proxy Name",
    "servers.button_ping":  "Ping",
    "servers.button_test":  "test",
    "servers.tooltip_hide_ping_errors":  "Ping hatası olan sunucuları gizle",
    "servers.tooltip_show_ping_errors":  "Tüm sunucuları göster",
    "servers.tooltip_sort_by_name":  "Ada göre sırala (A–Z / Z–A)",
    "servers.tooltip_sort_by_delay":  "Ping gecikmesine göre sırala (önce en hızlı / yavaş)",
    "servers.tooltip_ping_all":  "Gruptaki tüm vekil sunuculara ping",
    "servers.tooltip_ping_settings":  "Ping test URL ve paralel istek sayısı",
    "servers.button_export":  "Dışa aktar",
    "servers.tooltip_export_uris":  "Görünen tüm satırlar, liste sırası, satır başına bir URI (gizli ping hataları yok; selector, urltest, direct hariç)",
    "servers.tooltip_export_uris_selected":  "Yalnızca seçili proxyler (çoklu seçim), liste sırası (aynı URI kuralları)",
    "servers.status_export_nothing_visible":  "Dışa aktarılacak satır yok.",
    "servers.status_export_nothing_selected":  "Görünümde seçili satır yok.",
    "servers.status_export_uris_building":  "Dışa aktarım hazırlanıyor…",
    "servers.status_export_uris_done":  "Pano: %d satır (satır başına bir URI)",
    "servers.status_export_uris_none":  "Bu liste için paylaşım bağlantısı oluşturulamadı.",
    "servers.error_export_no_config":  "Yapılandırma yolu ayarlı değil.",
    "servers.label_sort_by_name":  "A…Z",
    "servers.placeholder_select_group":  "Select selector group",
    "servers.label_selector_group":  "Selector group:",
    "servers.dialog_ping_settings_title":  "Ping test settings",
    "servers.ping_label_url":  "Ping test URL",
    "servers.ping_label_custom_url":  "Custom URL:",
    "servers.ping_label_parallel":  "Parallel requests (ping all):",
    "servers.ping_placeholder_url":  "https://example.com/generate_204",
    "servers.ping_option_custom":  "Custom",
    "servers.ping_button_save":  "Save",
    "servers.ping_button_cancel":  "Cancel",
    "servers.dialog_selector_active_title":  "Selector → Active Outbound",
    "servers.dialog_selector_close":  "Close",
    "servers.ping_button_error":  "Error",
    "servers.ping_format_ms":  "%d ms",
    "servers.selector_no_active":  "%s → (no active outbound)",
    "servers.selector_error":  "%s → error: %v",
    "servers.selector_active":  "%s → %s",
    "wizard.window_title":  "Yapılandırma Sihirbazı",
    "wizard.tab_sources":  "Kaynaklar",
    "wizard.tab_outbounds":  "Outbounds",
    "wizard.tab_rules":  "Kurallar",
    "wizard.tab_preview":  "Önizleme",
    "wizard.button_read":  "Read",
    "wizard.button_save_as":  "Save As",
    "wizard.button_close":  "Kapat",
    "wizard.button_prev":  "Prev",
    "wizard.button_next":  "Next",
    "wizard.button_save":  "Save",
    "wizard.dialog_confirmation":  "Confirmation",
    "wizard.dialog_unsaved_changes":  "Current changes will be lost. Save current state?",
    "wizard.dialog_save_before_close":  "Save changes before closing?",
    "wizard.dialog_discard":  "Discard",
    "wizard.dialog_cancel":  "İptal",
    "wizard.shared.button_edit":  "Edit",
    "wizard.shared.button_del":  "Del",
    "wizard.error_load_config":  "Failed to load existing config",
    "wizard.error_save_state":  "Failed to save state",
    "wizard.error_load_state":  "Failed to load state",
    "wizard.error_restore_state":  "Failed to restore state",
    "wizard.error_template_failed":  "Config template failed to load",
    "wizard.error_template_missing":  "Config template missing",
    "wizard.source.label_url":  "Subscription URL or Direct Links:",
    "wizard.source.placeholder_url":  "https://your-subscription-url-here",
    "wizard.source.hint":  "Supports subscription URLs (http/https) or direct links (vless://, vmess://, trojan://, ss://, hysteria2://, ssh://). For multiple links, use a new line for each.",
    "wizard.source.button_add":  "Add",
    "wizard.source.button_get_free":  "Get free VPN!",
    "wizard.source.label_sources":  "Sources",
    "wizard.source.no_sources":  "No sources defined in ParserConfig.",
    "wizard.source.connections_n":  "Connections %d",
    "wizard.source.source_n":  "Source %d",
    "wizard.source.placeholder_prefix":  "prefix",
    "wizard.source.button_view":  "View",
    "wizard.source.button_del":  "Del",
    "wizard.source.dialog_copied_title":  "Copied",
    "wizard.source.dialog_copied_message":  "Source copied to clipboard.",
    "wizard.source.preview_click_refresh":  "Click Refresh to load servers from all sources.",
    "wizard.source.preview_no_sources":  "No sources. Add URLs and click Refresh.",
    "wizard.source.preview_loading":  "Loading...",
    "wizard.source.preview_error":  "Error: %s",
    "wizard.source.preview_servers":  "%d server(s) from %d source(s)",
    "wizard.source.preview_errors":  "  ⚠️ %d error(s)",
    "wizard.source.button_refresh":  "Refresh",
    "wizard.source.view_title":  "Servers — %s",
    "wizard.source.view_close":  "Close",
    "wizard.source.view_no_servers":  "No servers found.",
    "wizard.source.view_server_count":  "%d server(s)",
    "wizard.outbounds.placeholder":  "Enter ParserConfig JSON here...",
    "wizard.outbounds.button_docs":  "📖 Documentation",
    "wizard.outbounds.label":  "ParserConfig:",
    "wizard.outbounds.error_serialize":  "Failed to serialize ParserConfig",
    "wizard.outbounds.error_open_docs":  "failed to open documentation",
    "wizard.outbounds.error_invalid_json":  "Invalid ParserConfig JSON",
    "wizard.outbounds.error_invalid_config":  "Invalid ParserConfig",
    "wizard.rules.button_srs_download":  "⬇ srs",
    "wizard.rules.button_srs_loading":  "🔄 srs",
    "wizard.rules.button_srs_done":  "✔️ srs",
    "wizard.rules.template_not_found":  "Template file bin/%s not found.",
    "wizard.rules.template_create_hint":  "Create the template file to enable this tab.",
    "wizard.rules.no_selectable_rules":  "No selectable rules defined in template.",
    "wizard.rules.label_outbound":  "Outbound:",
    "wizard.rules.button_info":  "?",
    "wizard.rules.button_edit":  "✏️",
    "wizard.rules.button_delete":  "Delete rule",
    "wizard.rules.dialog_delete_unnamed":  "(unnamed rule)",
    "wizard.rules.dialog_delete_confirm":  "Delete custom rule \"%s\"?",
    "wizard.rules.button_add_rule":  "➕ Add Rule",
    "wizard.rules.label_final_outbound":  "Final outbound:",
    "wizard.rules.checkbox_tun":  "TUN",
    "wizard.rules.tun_help":  "Enabling TUN will require entering your password when starting or stopping the VPN.",
    "wizard.rules.label_selectable":  "Selectable rules",
    "wizard.rules.error_srs_failed":  "Rule-set (SRS) download failed",
    "wizard.preview.placeholder":  "Preview will appear here",
    "wizard.preview.status_click_show":  "Click \u0027Show Preview\u0027 to generate preview (this may take a long time for large configurations)",
    "wizard.preview.button_show":  "Show Preview",
    "wizard.preview.label":  "Preview",
    "wizard.preview.loading_large":  "Loading large preview...",
    "wizard.preview.status_loading_large":  "⏳ Loading large preview...",
    "wizard.preview.status_parsing":  "⏳ Parsing subscriptions and generating outbounds...",
    "wizard.preview.text_parsing":  "Parsing configuration... Please wait.",
    "wizard.preview.text_building":  "Building preview...",
    "wizard.preview.status_building":  "⏳ Building preview configuration...",
    "wizard.preview.status_parsing_config":  "⏳ Parsing ParserConfig...",
    "wizard.preview.error":  "Preview error: %v",
    "wizard.preview.status_error":  "❌ Error: %v",
    "wizard.preview.status_ready":  "✅ Preview ready",
    "wizard.save.error_config_empty":  "ParserConfig is empty",
    "wizard.save.error_config_invalid":  "ParserConfig is invalid",
    "wizard.save.error_no_sources":  "Add at least one source: use the Sources tab (Add) or add proxies in ParserConfig on the Outbounds tab.",
    "wizard.save.dialog_saving":  "Saving",
    "wizard.save.dialog_in_progress":  "Save operation already in progress... Please wait.",
    "wizard.save.status_waiting":  "Waiting for parsing...",
    "wizard.save.status_parsing":  "Parsing subscriptions...",
    "wizard.save.status_building":  "Building config...",
    "wizard.save.status_preparing":  "Preparing...",
    "wizard.save.status_validating":  "Validating...",
    "wizard.save.status_saving_state":  "Saving state...",
    "wizard.save.status_done":  "Done",
    "wizard.save.button_copy":  "Copy config",
    "wizard.save.dialog_validation_failed":  "Validation failed",
    "wizard.save.dialog_copied_title":  "Copied",
    "wizard.save.dialog_copied_message":  "Config copied to clipboard.",
    "wizard.save.dialog_success_message":  "Config written to %s\n\n✅ Validation: Passed",
    "wizard.save.dialog_success_title":  "Config Saved",
    "wizard.save.error_parse_failed":  "Failed to parse subscriptions",
    "wizard.save.error_controller":  "controller not available",
    "wizard.add_rule.title_add":  "Add Rule",
    "wizard.add_rule.title_edit":  "Edit Rule",
    "wizard.add_rule.placeholder_name":  "Rule name",
    "wizard.add_rule.placeholder_ip":  "Enter IP addresses (CIDR format)\ne.g., 192.168.1.0/24",
    "wizard.add_rule.placeholder_url":  "Enter domains or URLs (one per line)\ne.g., example.com",
    "wizard.add_rule.label_processes":  "Processes (select one or more via popup):",
    "wizard.add_rule.button_select_processes":  "Select Processes...",
    "wizard.add_rule.check_match_by_path":  "Match by path",
    "wizard.add_rule.radio_simple":  "Simple",
    "wizard.add_rule.radio_regex":  "Regex",
    "wizard.add_rule.placeholder_path_simple":  "One per line. Use * as wildcard (e.g. */steam/* or *\\Steam\\*).",
    "wizard.add_rule.placeholder_path_regex":  "One per line. Full regex as-is (no /regex/i wrapping). E.g. ^C:\\\\Games\\\\.* or .*steam.*",
    "wizard.add_rule.label_path_patterns":  "Path patterns (one per line):",
    "wizard.add_rule.placeholder_custom":  "Custom JSON (e.g., {})",
    "wizard.add_rule.label_custom_json":  "Custom JSON:",
    "wizard.add_rule.placeholder_srs_urls":  "SRS URLs (one per line)\ne.g. https://raw.githubusercontent.com/.../file.srs",
    "wizard.add_rule.label_srs_urls":  "SRS URLs (one per line):",
    "wizard.add_rule.placeholder_raw":  "{\"ip_cidr\": [], \"outbound\": \"proxy-out\"}",
    "wizard.add_rule.type_ip":  "IP Addresses (CIDR)",
    "wizard.add_rule.type_domain":  "Domains/URLs",
    "wizard.add_rule.type_process":  "Processes",
    "wizard.add_rule.type_srs":  "SRS",
    "wizard.add_rule.type_custom":  "Custom JSON",
    "wizard.add_rule.domain_exact":  "Exact domains",
    "wizard.add_rule.domain_suffix":  "Suffix",
    "wizard.add_rule.domain_keyword":  "Keyword",
    "wizard.add_rule.domain_regex":  "Regex",
    "wizard.add_rule.label_ip":  "IP Addresses (one per line, CIDR format):",
    "wizard.add_rule.label_domains":  "Domains (one per line):",
    "wizard.add_rule.label_suffixes":  "Domain suffixes (one per line):",
    "wizard.add_rule.label_keywords":  "Domain keywords (one per line):",
    "wizard.add_rule.label_domain_regex":  "Domain regex:",
    "wizard.add_rule.placeholder_domain_regex":  "E.g. ^.*\\.google\\.com$ or .*\\.(google|youtube)\\.com$ (full regex, no /wrapping/)",
    "wizard.add_rule.label_outbound":  "Outbound:",
    "wizard.add_rule.button_add":  "Add",
    "wizard.add_rule.button_save":  "Save",
    "wizard.add_rule.button_cancel":  "Cancel",
    "wizard.add_rule.button_remove":  "−",
    "wizard.add_rule.window_select_processes":  "Select Processes",
    "wizard.add_rule.button_add_process":  "+ Add",
    "wizard.add_rule.button_refresh":  "Refresh",
    "wizard.add_rule.button_close":  "Close",
    "wizard.add_rule.label_name":  "Rule Name:",
    "wizard.add_rule.label_type":  "Rule Type:",
    "wizard.add_rule.tab_form":  "Form",
    "wizard.add_rule.tab_raw":  "Raw",
    "wizard.add_rule.error_name_required":  "Rule name is required",
    "wizard.add_rule.error_raw_empty":  "Raw JSON is empty",
    "wizard.add_rule.error_must_be_object":  "rule must be a JSON object",
    "wizard.add_rule.error_must_have_outbound":  "rule must contain \"outbound\" or \"action\"",
    "wizard.add_rule.dialog_not_recognized_title":  "Rule not recognized",
    "wizard.add_rule.dialog_not_recognized_msg":  "Could not recognize rule, form cannot be loaded; staying on Raw.",
    "wizard.add_rule.srs_hint":  "We recommend looking for suitable rule-set files in the project:",
    "wizard.add_rule.srs_dialog_title":  "SRS rule-sets",
    "wizard.add_rule.srs_dialog_close":  "Close",
    "wizard.add_rule.button_open":  "Open",
    "wizard.add_rule.error_path_required":  "enter at least one path pattern",
    "wizard.add_rule.error_srs_required":  "enter at least one SRS URL",
    "wizard.add_rule.error_srs_valid":  "enter at least one valid SRS URL",
    "wizard.add_rule.error_custom_empty":  "Custom JSON is empty",
    "wizard.add_rule.error_custom_object":  "Custom JSON must be an object",
    "wizard.save_state.title":  "Save State",
    "wizard.save_state.placeholder_id":  "Enter state ID (a-z, A-Z, 0-9, -, _)",
    "wizard.save_state.placeholder_comment":  "Comment (optional)",
    "wizard.save_state.warning_exists":  "State with this ID already exists. It will be overwritten.",
    "wizard.save_state.label_id":  "State ID:",
    "wizard.save_state.label_comment":  "Comment:",
    "wizard.save_state.button_save":  "Save",
    "wizard.save_state.button_cancel":  "Cancel",
    "wizard.save_state.error_empty":  "ID cannot be empty",
    "wizard.load_state.title":  "Load State",
    "wizard.load_state.error_load_list":  "Failed to load states list",
    "wizard.load_state.suffix_current":  " (Current)",
    "wizard.load_state.button_load":  "Load",
    "wizard.load_state.button_new":  "New",
    "wizard.load_state.button_delete":  "Delete",
    "wizard.load_state.button_cancel":  "Cancel",
    "wizard.load_state.error_delete_current":  "Cannot delete current state (state.json)",
    "wizard.load_state.dialog_delete_title":  "Delete State",
    "wizard.load_state.dialog_delete_confirm":  "Delete state \u0027%s\u0027?",
    "wizard.load_state.error_delete":  "Failed to delete state",
    "wizard.get_free.loading_title":  "Loading",
    "wizard.get_free.loading_msg":  "Downloading get_free.json...",
    "wizard.get_free.error_occurred":  "An error occurred: %v",
    "wizard.get_free.error_download":  "Failed to download get_free.json:\n\nCheck your internet connection and try again.",
    "wizard.get_free.error_load":  "Failed to load get_free.json:\n\nCheck the file or try downloading again.",
    "wizard.get_free.error_data_not_loaded":  "Error: data was not loaded",
    "wizard.get_free.error_process":  "Failed to process get_free.json",
    "wizard.get_free.button_apply":  "Apply configuration",
    "wizard.get_free.dialog_apply_title":  "Apply configuration",
    "wizard.get_free.dialog_apply_confirm":  "Applying this configuration will replace your current sources and rules. Continue?",
    "wizard.get_free.error_apply":  "Failed to apply configuration",
    "wizard.get_free.dialog_success_title":  "Success",
    "wizard.get_free.dialog_success_msg":  "Configuration from get_free.json has been applied successfully!",
    "wizard.get_free.dialog_title":  "Get free VPN",
    "wizard.get_free.button_close":  "Close",
    "wizard.outbound.title_edit":  "Edit Outbound",
    "wizard.outbound.title_add":  "Add Outbound",
    "wizard.outbound.placeholder_tag":  "e.g. proxy-out",
    "wizard.outbound.type_manual":  "manual (selector)",
    "wizard.outbound.type_auto":  "auto (urltest)",
    "wizard.outbound.placeholder_comment":  "Optional comment",
    "wizard.outbound.scope_all":  "For all",
    "wizard.outbound.scope_source":  "For source: ",
    "wizard.outbound.label_source":  "Source ",
    "wizard.outbound.label_tag":  "tag",
    "wizard.outbound.placeholder_filter":  "e.g. /🇳🇱/i or !/(🇷🇺)/i",
    "wizard.outbound.placeholder_preferred":  "e.g. /🇳🇱/i",
    "wizard.outbound.label_filters":  "Filters (key and value; use !/regex/i for negation)",
    "wizard.outbound.label_preferred":  "Preferred default (filter for default node)",
    "wizard.outbound.label_add_outbounds":  "Add outbounds at start (direct-out, reject, others)",
    "wizard.outbound.label_raw_json":  "Raw outbound JSON",
    "wizard.outbound.button_docs":  "📖 Documentation",
    "wizard.outbound.label_scope":  "Scope",
    "wizard.outbound.label_tag_field":  "Tag",
    "wizard.outbound.label_type":  "Type",
    "wizard.outbound.label_comment":  "Comment",
    "wizard.outbound.preview_switch":  "Switch to Preview to see nodes for this outbound.",
    "wizard.outbound.preview_no_presenter":  "Preview is not available in this context (no presenter).",
    "wizard.outbound.preview_model_nil":  "Preview is not available: wizard model is nil.",
    "wizard.outbound.preview_invalid_json":  "Failed to build preview: invalid outbound JSON. Please switch to the \"Raw\" tab and fix JSON first.",
    "wizard.outbound.preview_cache_failed":  "Failed to build preview cache: %v",
    "wizard.outbound.preview_no_nodes":  "No nodes available for preview. Please configure sources and try again.",
    "wizard.outbound.preview_unknown_source":  "Unknown source",
    "wizard.outbound.preview_status":  "%d node(s) total, %d matched filters",
    "wizard.outbound.preview_default":  ", default: %s",
    "wizard.outbound.preview_also_includes":  " | Also includes: %s",
    "wizard.outbound.preview_source_errors":  " | ⚠️ %d source error(s)",
    "wizard.outbound.tab_settings":  "Settings",
    "wizard.outbound.tab_raw":  "Raw",
    "wizard.outbound.tab_preview":  "Preview",
    "wizard.outbound.button_cancel":  "Cancel",
    "wizard.outbound.button_save":  "Save",
    "wizard.outbound.error_config":  "ParserConfig is not available",
    "wizard.outbound.error_invalid_json":  "invalid JSON",
    "wizard.outbound.error_tag_required":  "tag is required",
    "wizard.outbound.error_open_docs":  "failed to open documentation",
    "wizard.outbound.configurator_label":  "Outbounds:",
    "wizard.outbound.button_add":  "Add"
}