{
  "account_default_name": "User",
  "account_frame_title": "👤 User account",
  "account_login": "Sign in",
  "account_logout": "Sign out",
  "account_status_guest": "Guest mode - no active authentication",
  "account_status_user": "Signed in as {user}",
  "account_switch": "Switch user",
  "all_files": "All files",
  "api": {
    "auth_bypass_detected": {
      "description": "API endpoint {endpoint} may be bypassed using {header} header",
      "evidence": "Status changed from {normal_status} to {bypass_status}",
      "impact": "Authentication bypass may allow unauthorized API access.",
      "remediation": "Review authentication logic and ensure it cannot be bypassed with spoofed headers.",
      "title": "Potential authentication bypass via headers"
    },
    "dangerous_methods": {
      "description": "API endpoint {endpoint} allows methods: {methods}",
      "evidence": "Allow header: {allowed_methods}",
      "impact": "Unnecessary HTTP methods may provide additional attack surface.",
      "remediation": "Restrict HTTP methods to only those required for the API functionality.",
      "title": "Potentially dangerous HTTP methods allowed"
    },
    "endpoint_unreachable": {
      "description": "Cannot analyze API endpoint {endpoint}: {error}",
      "evidence": "Endpoint: {url}",
      "remediation": "Verify API availability and network connectivity.",
      "title": "API endpoint {endpoint} unreachable"
    },
    "invasive_mode_required": {
      "description": "API security analysis requires --allow-invasive flag for enhanced detection.",
      "impact": "Limited to basic endpoint discovery only.",
      "remediation": "Run scan with --allow-invasive if you have legitimate access to the application.",
      "title": "API analysis requires invasive mode"
    },
    "multiple_versions": {
      "description": "Multiple API versions found: {versions}",
      "evidence": "Accessible versions: {accessible_versions}",
      "impact": "Older API versions may have unpatched vulnerabilities.",
      "remediation": "Ensure older API versions are properly deprecated and secured.",
      "title": "Multiple API versions accessible"
    },
    "no_rate_limiting": {
      "description": "API endpoint {endpoint} does not show rate limiting headers",
      "evidence": "Missing X-Rate-Limit-* headers",
      "impact": "Unprotected APIs may be subject to abuse and DoS attacks.",
      "remediation": "Implement API rate limiting to prevent abuse.",
      "title": "No rate limiting headers detected"
    },
    "no_rate_limiting_detected": {
      "description": "API endpoint {endpoint} did not apply rate limiting to rapid requests",
      "evidence": "5 rapid requests all returned status codes: {responses}",
      "impact": "Unprotected APIs are vulnerable to abuse and DoS attacks.",
      "remediation": "Implement rate limiting to prevent API abuse.",
      "title": "No rate limiting detected on API"
    },
    "permissive_cors": {
      "description": "API endpoint {endpoint} allows requests from any origin",
      "evidence": "Access-Control-Allow-Origin: *",
      "impact": "May enable cross-origin API abuse and data theft.",
      "remediation": "Configure CORS to allow only trusted origins for API endpoints.",
      "title": "Permissive CORS on API endpoint"
    },
    "sensitive_data_exposure": {
      "description": "API endpoint {endpoint} may expose {pattern_name} information",
      "evidence": "Pattern '{pattern}' found in response",
      "impact": "Sensitive information exposure may lead to security compromise.",
      "remediation": "Review API responses and filter sensitive data before returning to clients.",
      "title": "Potential {pattern_name} exposure in API"
    },
    "unauthenticated_access": {
      "description": "API endpoint {endpoint} returns data without authentication",
      "evidence": "HTTP {status} without Authorization header",
      "impact": "Unauthenticated API access may expose sensitive data.",
      "remediation": "Implement API authentication (API keys, OAuth, JWT tokens).",
      "title": "API endpoint accessible without authentication"
    },
    "verbose_errors": {
      "description": "API endpoint {endpoint} returns detailed error information",
      "evidence": "Error response contains technical details",
      "impact": "Detailed error messages may aid attackers in reconnaissance.",
      "remediation": "Implement generic error messages and log detailed errors server-side.",
      "title": "Verbose API error messages"
    }
  },
  "app_title": "Web Sentinel - Security Scanner",
  "attention_title": "Warning",
  "auth_guest_mode": "Guest mode (FREE)",
  "auth_login_button": "Sign in",
  "auth_login_email": "Email address:",
  "auth_login_forgot": "Forgot password?",
  "auth_login_local": "Create local account",
  "auth_login_offline": "Offline mode",
  "auth_login_password": "Password:",
  "auth_login_remember": "Remember me",
  "auth_login_signup": "Create cloud account",
  "auth_login_title": "Web Sentinel Login",
  "auth_logout_button": "Logout",
  "auth_logout_confirm": "Do you really want to logout?",
  "auth_logout_success": "You are now in guest mode (FREE).",
  "auth_user_welcome": "Welcome {} !",
  "backend": {
    "actuator_details_exposed": {
      "description": "Spring Boot Actuator health endpoint reveals internal system details",
      "evidence": "Detailed health info at: {url}",
      "impact": "Internal system information may aid in reconnaissance.",
      "remediation": "Configure management.endpoint.health.show-details=when-authorized",
      "title": "Detailed health endpoint exposed"
    },
    "analysis_requires_invasive": {
      "description": "Backend configuration analysis requires --allow-invasive flag for enhanced detection.",
      "impact": "Limited to HTTP response analysis only.",
      "remediation": "Run scan with --allow-invasive if you have legitimate access to the application.",
      "title": "Backend analysis requires invasive mode"
    },
    "config_file_exposed": {
      "description": "Configuration file {endpoint} is publicly accessible",
      "evidence": "Accessible at: {url}",
      "impact": "Configuration files may contain sensitive information.",
      "remediation": "Restrict access to configuration files via web server configuration.",
      "title": "Sensitive configuration file exposed"
    },
    "dev_tool_accessible": {
      "description": "Development endpoint {endpoint} is accessible in production",
      "evidence": "Accessible at: {url}",
      "impact": "Development tools may expose sensitive application data and functionality.",
      "remediation": "Disable development tools and debug interfaces in production environment.",
      "title": "Development tool accessible in production"
    },
    "permissive_cors": {
      "description": "CORS allows requests from {origin}",
      "evidence": "Access-Control-Allow-Origin: {cors_origin}",
      "impact": "Permissive CORS may enable cross-origin attacks.",
      "remediation": "Configure CORS to allow only trusted origins.",
      "title": "Permissive CORS configuration detected"
    },
    "security_txt_found": {
      "description": "Security policy information available at {endpoint}",
      "evidence": "Accessible at: {url}",
      "remediation": "Review security.txt for contact information and policies.",
      "title": "Security.txt found"
    },
    "verbose_error_pages": {
      "description": "Error pages reveal stack traces or debug information",
      "evidence": "Verbose error at: {url}",
      "impact": "Debug information may reveal application structure and vulnerabilities.",
      "remediation": "Configure custom error pages and disable debug mode in production.",
      "title": "Verbose error pages detected"
    }
  },
  "brand_title": "🛡️ Web Sentinel",
  "brand_title_caps": "🛡️ WEB SENTINEL",
  "btn_clear": "🗑️ Clear",
  "btn_close": "Close",
  "btn_details": "Details",
  "btn_export": "📊 Export report",
  "btn_load": "📁 Load",
  "btn_save": "💾 Save",
  "btn_start_scan": "🚀 Start scan",
  "btn_stop_scan": "⏹️ Stop",
  "clear_domains_hint": "Clear all domains",
  "cli_arg_allow_invasive": "Enable active payload probes for injection diagnostics.",
  "cli_arg_domain": "Hostname of the target site (example.com)",
  "cli_arg_history_file": "Path to persist scan history for delta comparisons (default: {default}).",
  "cli_arg_html_report": "Write an HTML report to the provided path.",
  "cli_arg_http_port": "HTTP port (default: {default})",
  "cli_arg_https_port": "HTTPS port (default: {default})",
  "cli_arg_json": "Emit findings as JSON instead of a table.",
  "cli_arg_json_report": "Write full report context to the provided JSON file.",
  "cli_arg_language": "CLI output language (default: {default}).",
  "cli_arg_log_file": "Path to append execution logs (default: {default}).",
  "cli_arg_modules": "Subset of modules to execute (default: all).",
  "cli_arg_no_history": "Disable persistence of scan history on disk.",
  "cli_arg_timeout": "Network timeout in seconds for outbound requests (default: {default})",
  "cli_description": "Passive-first security diagnostics for owned websites.",
  "cli_html_not_allowed": "❌ HTML export is not permitted by your license.",
  "cli_html_saved": "HTML report written to {}",
  "cli_invasive_not_allowed": "❌ Invasive tests are not permitted by your license. Disabling the flag.",
  "cli_json_saved": "JSON report written to {}",
  "cli_license_fallback": "⚠️ Fallback mode: license not found, features limited.",
  "cli_license_loaded": "✅ License loaded (tier: {}).",
  "cli_unknown_modules_warning": "Unknown modules ignored: {}",
  "col_action": "Action",
  "col_domain": "🌐 Domain",
  "col_impact": "💥 Impact",
  "col_module": "🔧 Module",
  "col_severity": "⚠️ Severity",
  "col_status": "📊 Status",
  "col_title": "📝 Title",
  "config_title": "⚙️ Settings & Account",
  "confirm_clear": "Clear all domains?",
  "confirm_title": "Confirmation",
  "connection_offline": "🌐 Offline",
  "connection_online": "🌐 Online",
  "control_section": "🎮 Controls",
  "cookie_insecure": "Insecure cookie detected: {}",
  "detail_code": "Code",
  "detail_description": "Description",
  "detail_file": "File",
  "detail_remediation": "Recommended fix",
  "detected": "Detected",
  "dialog_export_ai": "Export for AI Agent (automatic correction)",
  "dialog_export_results_html": "Export results to HTML",
  "dialog_export_results_json": "Export results to JSON",
  "dialog_export_sast_html": "Export SAST results to HTML",
  "dialog_export_sast_json": "Export SAST results to JSON",
  "dialog_select_files": "Select source files",
  "dialog_select_folder": "Select a folder to analyze",
  "domain_clear_button": "🧹 Clear",
  "domain_completed": "Scan of {} completed",
  "domain_config_frame": "🎯 Scan Configuration",
  "domain_export_ai": "🤖 AI Agent Export",
  "domain_export_clear": "🧹 Clear",
  "domain_export_html": "🌐 Export HTML",
  "domain_export_json": "💾 Export JSON",
  "domain_history_option": "📚 Save to history",
  "domain_input_label": "🌐 Domain or URL:",
  "domain_invasive_option": "🔍 Invasive mode",
  "domain_invasive_warning": "Invasive tests are reserved for PRO and higher licenses.",
  "domain_limit_body": "Your license allows scanning up to {limit} domain(s) simultaneously.",
  "domain_limit_title": "Limit reached",
  "domain_list_label": "📋 Domains to scan:",
  "domain_missing_body": "Please add at least one domain to scan.",
  "domain_no_findings": "   ✅ No issues detected",
  "domain_options_frame": "🔧 Scan Options",
  "domain_remove_button": "🗑️ Remove",
  "domain_result_code": "     ↳ Code: {code}",
  "domain_result_description": "     ↳ Description: {description}",
  "domain_result_detail_line": "   • [{severity}] {title} ({module})",
  "domain_result_file": "     ↳ File: {location}",
  "domain_result_header": "🌐 {domain}\n   ➤ Summary: {summary}",
  "domain_result_line": "   • [{severity}] {title} ({module})",
  "domain_result_remediation": "     ↳ Recommended fix: {remediation}",
  "domain_results_frame": "📋 Scan Results",
  "domain_scan_button": "🚀 Start scan",
  "domain_scan_error": "The scan failed: {error}",
  "domain_scan_running_body": "Please wait, a scan is already running.",
  "domain_scan_running_title": "Scan in progress",
  "domains_hint": "Enter your domains (one per line):\nexample.com\nmysite.fr\napi.myapp.com",
  "domains_section": "🌐 Domains to scan",
  "error_access_denied_body": "Your license does not allow using the SAST module.",
  "error_access_denied_title": "Access denied",
  "error_export_failed": "Unable to export report:",
  "error_folder_invalid": "{path} is not a valid folder.",
  "error_folder_missing": "The folder {path} does not exist.",
  "error_load_failed": "Unable to load file:",
  "error_no_domains": "Please enter at least one domain.",
  "error_no_modules": "Please select at least one module.",
  "error_sast_failed": "SAST analysis failed: {error}",
  "error_save_failed": "Unable to save file:",
  "error_scan_failed": "Scan error:",
  "error_title": "Error",
  "export_ai_btn": "🤖 Export AI Agent",
  "export_ai_error": "Unable to export AI Agent report: {error}",
  "export_ai_success": "AI Agent report successfully exported to {filename}",
  "export_clear_btn": "🧹 Clear",
  "export_copy_btn": "📋 Copy Results",
  "export_html_btn": "🌐 Export SAST HTML",
  "export_json_btn": "💾 Export SAST JSON",
  "export_no_issues_for_ai": "No critical/high/medium issues to fix for AI Agent",
  "export_no_report": "No report to export.",
  "export_no_results": "No results to export.",
  "export_results_error": "Error while exporting: {error}",
  "export_results_success": "Results exported to {filename}",
  "export_sast_copy_message": "Results copied to the clipboard",
  "export_sast_html_error": "Unable to export the HTML report: {error}",
  "export_sast_html_message": "SAST report exported to {filename}",
  "export_sast_json_error": "Unable to export the JSON report: {error}",
  "export_sast_json_message": "SAST report exported to {filename}",
  "export_success_open": "Report exported successfully. Do you want to open it?",
  "export_success_title": "Success",
  "failed": "Failed",
  "finding_description": "📝 Description",
  "finding_evidence": "🔍 Evidence",
  "finding_impact": "💥 Impact",
  "finding_remediation": "💡 Remediation",
  "fixes_confirmed": "Fixes confirmed ({}): {}",
  "folder_browse": "📂 Browse",
  "general_error": "General error",
  "header_subtitle": "Web Security Scanner & Source Code Analysis",
  "headers": {
    "cookie_missing_httponly": {
      "description": "Cookie '{cookie}' lacks the HttpOnly flag.",
      "remediation": "Mark authentication cookies as HttpOnly to block script access.",
      "title": "Cookie missing HttpOnly attribute"
    },
    "cookie_missing_samesite": {
      "description": "Cookie '{cookie}' lacks the SameSite attribute.",
      "impact": "Cookies without SameSite are automatically sent during cross-site navigations.",
      "remediation": "Set SameSite=Lax or Strict to reduce CSRF risk.",
      "title": "Cookie missing SameSite attribute"
    },
    "cookie_missing_secure": {
      "description": "Cookie '{cookie}' lacks the Secure flag.",
      "remediation": "Mark session cookies as Secure to enforce HTTPS transport.",
      "title": "Cookie missing Secure attribute"
    },
    "https_downgrade": {
      "description": "The request was redirected to HTTP endpoint {url}.",
      "remediation": "Ensure all redirects enforce HTTPS.",
      "title": "HTTPS downgrade detected"
    },
    "https_request_failed": {
      "description": "Unable to retrieve {url}: {error}",
      "remediation": "Check DNS resolution and confirm the site responds over HTTPS.",
      "title": "HTTPS request failed"
    },
    "missing": {
      "content-security-policy": {
        "description": "The Content-Security-Policy header is absent on {url}.",
        "remediation": "Define a Content-Security-Policy to limit script and resource sources.",
        "title": "Content-Security-Policy header missing"
      },
      "cross-origin-embedder-policy": {
        "description": "The Cross-Origin-Embedder-Policy header is absent on {url}.",
        "remediation": "Enable Cross-Origin-Embedder-Policy to require CORS or CORP on embedded resources.",
        "title": "Cross-Origin-Embedder-Policy header missing"
      },
      "cross-origin-opener-policy": {
        "description": "The Cross-Origin-Opener-Policy header is absent on {url}.",
        "remediation": "Configure Cross-Origin-Opener-Policy to isolate browsing contexts and limit XS-Leak vectors.",
        "title": "Cross-Origin-Opener-Policy header missing"
      },
      "cross-origin-resource-policy": {
        "description": "The Cross-Origin-Resource-Policy header is absent on {url}.",
        "remediation": "Set Cross-Origin-Resource-Policy to control how other origins load resources.",
        "title": "Cross-Origin-Resource-Policy header missing"
      },
      "permissions-policy": {
        "description": "The Permissions-Policy header is absent on {url}.",
        "remediation": "Adopt a Permissions-Policy to control powerful browser features.",
        "title": "Permissions-Policy header missing"
      },
      "referrer-policy": {
        "description": "The Referrer-Policy header is absent on {url}.",
        "remediation": "Add a Referrer-Policy to limit sensitive referrer leakage.",
        "title": "Referrer-Policy header missing"
      },
      "strict-transport-security": {
        "description": "The Strict-Transport-Security header is absent on {url}.",
        "remediation": "Configure Strict-Transport-Security to enforce HTTPS and enable preload.",
        "title": "Strict-Transport-Security header missing"
      },
      "x-content-type-options": {
        "description": "The X-Content-Type-Options header is absent on {url}.",
        "remediation": "Configure X-Content-Type-Options: nosniff to prevent MIME sniffing.",
        "title": "X-Content-Type-Options header missing"
      },
      "x-frame-options": {
        "description": "The X-Frame-Options header is absent on {url}.",
        "remediation": "Set X-Frame-Options to DENY or SAMEORIGIN to mitigate clickjacking.",
        "title": "X-Frame-Options header missing"
      }
    },
    "verbose_banner": {
      "description": "The {header} header leaks software details: {value}",
      "impact": "These banners help attackers tailor exploits to known versions.",
      "remediation": "Remove version identifiers from the {header} header or disable it.",
      "title": "Verbose {header} banner"
    }
  },
  "headers_missing": "Security header missing: {}",
  "history_column_date": "Date",
  "history_column_summary": "Summary",
  "history_column_target": "Target",
  "history_column_type": "Type",
  "history_detail_date": "Date: {value}",
  "history_detail_description": "Description: {value}",
  "history_detail_evidence": "Evidence: {value}",
  "history_detail_frame": "📝 Scan Details",
  "history_detail_item": "[{severity}] {title}",
  "history_detail_module": "Module: {value}",
  "history_detail_no_issue": "✅ No issues detected",
  "history_detail_remediation": "Remediation: {value}",
  "history_detail_summary": "Summary: {value}",
  "history_detail_target": "Target: {value}",
  "history_detail_type": "Type: {value}",
  "history_more_files": "{preview} (+{extra} more)",
  "history_no_entries": "No scans recorded yet.",
  "history_no_entries_prompt": "Select an entry to view full details.",
  "history_sast_save_failed": "Failed to save SAST history: {error}",
  "history_save_failed": "Failed to save history: {error}",
  "history_title": "📊 Reports & History",
  "history_type_domain": "Domain",
  "history_type_sast": "SAST",
  "html_files": "HTML files",
  "info_sast_running_body": "A SAST analysis is already running.",
  "info_sast_running_title": "Analysis in progress",
  "info_title": "Info",
  "injection": {
    "disabled": {
      "description": "Passive mode skips active payload probes. Re-run with allow_invasive=True to enable them.",
      "remediation": "Enable allow_invasive when you have authorization for active tests.",
      "title": "Injection checks disabled"
    },
    "none_detected": {
      "description": "Active probe completed without SQL/XSS error patterns.",
      "remediation": "Augment coverage with deeper dynamic analysis tools.",
      "title": "No injection indicators"
    },
    "probe_failed": {
      "description": "Invasive probe could not reach {url}: {error}",
      "remediation": "Confirm the host allows HTTPS and that no WAF is blocking benign probes.",
      "title": "Active probe request failed ({url})"
    },
    "reflected_xss": {
      "description": "Injected marker was echoed in the response payload, indicating missing output encoding.",
      "impact": "Reflected inputs allow attackers to execute scripts in victims' browsers.",
      "remediation": "Escape user input before rendering and apply a restrictive CSP.",
      "title": "Potential reflected XSS ({url})"
    },
    "server_error": {
      "description": "The server returned status {status} when sending active payloads.",
      "impact": "Unhandled exceptions leak internal details and support exploit chains.",
      "remediation": "Handle malformed input gracefully and add validation controls.",
      "title": "Server error on malformed input ({url})"
    },
    "sql_error": {
      "description": "Response contained a database error message matching '{signature}'.",
      "impact": "Stack traces and driver errors expose backend technology and aid exploitation.",
      "remediation": "Sanitize inputs and suppress detailed database error messages.",
      "title": "SQL error pattern observed ({url})"
    }
  },
  "injection_disabled": "Injection tests disabled",
  "injection_error_detected": "Database error leakage detected",
  "invasive_btn_cancel": "❌ Cancel",
  "invasive_btn_continue": "✅ Continue (I have authorization)",
  "invasive_checkbox_confirm": "I confirm having legal authorization for these tests",
  "invasive_mode": "🔍 Invasive mode (active tests)",
  "invasive_warning_message": "🚨 WARNING: You are about to enable invasive injection testing.\n\n⚠️ RISKS:\n• Sends test payloads to target servers\n• May trigger security alerts\n• May cause temporary malfunctions\n• May be considered an intrusion attempt\n\n✅ AUTHORIZED USE ONLY ON:\n• Your own domains and applications\n• Domains with written owner authorization\n• Controlled testing environments\n\n❌ NEVER USE ON:\n• Third-party domains without authorization\n• Uncontrolled production applications\n• Systems you do not own\n\n🎯 RESPONSIBILITY:\nBy continuing, you confirm having legal authorization to perform these tests on the specified domains.\n\nDo you really want to enable invasive testing?",
  "invasive_warning_title": "⚠️ WARNING - Invasive Tests",
  "json_files": "JSON files",
  "language_auto": "auto",
  "language_label": "Select language:",
  "language_labels": {
    "en": "EN ⚡ English",
    "fr": "FR ⚡ Français"
  },
  "language_section": "🌍 Language",
  "license_alert_critical": "License expires in {} day(s).",
  "license_alert_expired": "License expired.",
  "license_alert_info": "License will expire in {} days.",
  "license_alert_warning": "License expires in {} days.",
  "license_button_label_default": "🔐 License",
  "license_button_label_short": "License",
  "license_current": "Current license: {tier}",
  "license_dialog_error": "Unable to display license information: {error}",
  "license_dialog_features": "✅ Available features:",
  "license_dialog_header": "🏷️ Current license: {tier}",
  "license_dialog_limits": "📊 Limits:",
  "license_dialog_window_title": "License status",
  "license_feature_advanced": "• {status} Advanced rules",
  "license_feature_api": "• {status} API access",
  "license_feature_domains": "• {status} Domain scanning",
  "license_feature_html": "• {status} HTML export",
  "license_feature_invasive": "• {status} Invasive tests",
  "license_feature_sast": "• {status} SAST analysis",
  "license_frame_title": "🎫 License",
  "license_import_dialog_title": "Select a license file",
  "license_import_error": "Unable to import license: {}",
  "license_import_error_title": "License error",
  "license_import_success": "The license was installed successfully.",
  "license_import_success_title": "License installed",
  "license_import_warning": "The license was copied but remains invalid. The application stays in free mode.",
  "license_import_warning_title": "License invalid",
  "license_limit_domains": "• Concurrent domains: {value}",
  "license_limit_files": "• SAST files per month: {value}",
  "license_limit_size": "• Max file size: {value}",
  "license_limits": "Concurrent domains: {domains} | SAST files: {files} | SAST size: {size}",
  "license_modal_close": "Close",
  "license_modal_days_value": "{} day(s)",
  "license_modal_details": "Details",
  "license_modal_expires_in": "Expires in",
  "license_modal_feature_api": "REST API",
  "license_modal_feature_disabled": "Disabled",
  "license_modal_feature_enabled": "Enabled",
  "license_modal_feature_html": "HTML export",
  "license_modal_feature_invasive": "Invasive tests",
  "license_modal_feature_multi_user": "Multi-user",
  "license_modal_features": "Features",
  "license_modal_grace_hours": "Grace period (h)",
  "license_modal_heading": "Web Sentinel License Status",
  "license_modal_id": "License ID",
  "license_modal_import": "Import license…",
  "license_modal_max_domains": "Domain limit",
  "license_modal_max_users": "User limit",
  "license_modal_not_available": "Not available",
  "license_modal_tier": "Tier",
  "license_modal_title": "License management",
  "license_modal_unknown": "Unknown",
  "license_modal_unlimited": "Unlimited",
  "license_modal_valid_until": "Valid until",
  "license_status_critical": "⚠️ License expiring in {} day(s).",
  "license_status_error": "❌ License error: {}",
  "license_status_expired": "⚠️ License expired – please renew.",
  "license_status_free_mode": "🆓 Free mode: limited features.",
  "license_status_info": "ℹ️ License valid – {} days remaining.",
  "license_status_warning": "ℹ️ License expiring in {} days.",
  "load_domains_hint": "Load domains from file",
  "login_error_message": "Error during sign-in: {error}",
  "login_success_message": "Successfully signed in!",
  "login_success_title": "Success",
  "logout_error_message": "Error during sign-out: {error}",
  "logout_success_message": "Signed out successfully",
  "manage_license": "Manage license",
  "manual_selection_label": "Manual selection",
  "messages": {
    "dialog_select_source_files": "Select source code files",
    "dialog_select_source_folder": "Select the folder containing source code",
    "gui": {
      "fallback_classic": "Using classic interface fallback…",
      "import_error": "Import error: {error}",
      "install_command": "pip install requests beautifulsoup4",
      "install_hint": "Ensure all modules are installed:",
      "pil_fallback": "⚠️ PIL not available, using text fallback",
      "unexpected_error": "Unexpected error: {error}"
    },
    "headless": {
      "domain_findings": "   Findings detected: {count}",
      "domain_header": "\n🌐 Domain: {domain}",
      "domain_limit": "⚠️ Domain limit reached ({limit}); upgrade required.",
      "domain_no_findings": "   ✅ No security issues found",
      "domains_list": "[DOMAINS] Domains: {domains}",
      "export_failed": "❌ Export failed: {error}",
      "export_html": "✅ HTML report exported to: {path}",
      "export_json": "✅ Report exported to: {path}",
      "fallback_headless": "🔄 Falling back to headless mode…",
      "html_export_not_allowed": "⚠️ HTML export requires a PRO subscription.",
      "init": "[HEADLESS] HeadlessWebSentinelGUI initialized (no GUI display)",
      "invasive_not_allowed": "⚠️ Invasive tests disabled for the current tier. Upgrade to PRO.",
      "modules_list": "[MODULES] Modules: {modules}",
      "more_findings": "      … and {count} more",
      "no_domains": "❌ Error: No domains specified",
      "no_modules": "❌ Error: No modules selected",
      "no_results": "📝 No scan results to display",
      "no_results_export": "❌ No results to export",
      "results_header": "📊 SCAN RESULTS",
      "results_summary": "🎯 Summary: {domains} domains, {findings} total findings",
      "scan_complete": "✅ Scan completed: {count} domains processed",
      "scan_error": "❌ Scan error: {error}",
      "scan_start": "[START] Starting headless scan for {count} domains…",
      "scanning_domain": "🔍 Scanning {domain}…",
      "severity_block": "   {severity}: {count} findings",
      "test_complete": "🎯 Test completed: {result}",
      "test_start": "🧪 Starting headless test mode…",
      "tk_init_failed": "⚠️ tkinter initialization failed: {error}",
      "tk_not_available": "⚠️ tkinter not available: {error}",
      "unsupported_format": "❌ Unsupported format: {format}"
    },
    "history_parse_failed": "Failed to parse history store at {path}: {error}",
    "history_persisted": "History persistence completed for {domain} – total runs: {runs}",
    "license_initializing": "Initializing license system…",
    "osint_crtsh_invalid_json": "crt.sh returned non-JSON payload for {domain}",
    "osint_crtsh_lookup_failed": "crt.sh lookup failed for {domain}: {error}",
    "profile_default_description": "Default scan profile",
    "sast_license_required": "❌ Source code scanning requires a PRO license or higher",
    "simple_headless": {
      "scan_domain": "[SCAN] Testing {domain}",
      "scan_error": "[ERROR] {domain}: {error}",
      "scan_result": "[RESULT] {domain}: {count} findings",
      "test_complete": "[COMPLETE] Test finished: {domains} domains, {findings} findings",
      "test_start": "[TEST] Starting headless compatibility test"
    },
    "size_limit_skipping": "Size limit reached, skipping {file}",
    "upgrade_for_sast": "💡 Upgrade your license to access SAST features",
    "gui_fallback_classic": {
      "title": "Problème de sécurité détecté",
      "description": "Un problème de sécurité a été identifié (messages.gui_fallback_classic).",
      "remediation": "Examinez et corrigez cette vulnérabilité de sécurité."
    },
    "gui_import_error": {
      "title": "Problème de sécurité détecté",
      "description": "Un problème de sécurité a été identifié (messages.gui_import_error).",
      "remediation": "Examinez et corrigez cette vulnérabilité de sécurité."
    },
    "gui_install_command": {
      "title": "Problème de sécurité détecté",
      "description": "Un problème de sécurité a été identifié (messages.gui_install_command).",
      "remediation": "Examinez et corrigez cette vulnérabilité de sécurité."
    },
    "gui_install_hint": {
      "title": "Problème de sécurité détecté",
      "description": "Un problème de sécurité a été identifié (messages.gui_install_hint).",
      "remediation": "Examinez et corrigez cette vulnérabilité de sécurité."
    },
    "gui_unexpected_error": {
      "title": "Problème de sécurité détecté",
      "description": "Un problème de sécurité a été identifié (messages.gui_unexpected_error).",
      "remediation": "Examinez et corrigez cette vulnérabilité de sécurité."
    }
  },
  "modern": {
    "analysis_failed": {
      "description": "Failed to fetch main page for analysis: {error}",
      "evidence": "URL: {url}",
      "remediation": "Verify site accessibility and try again.",
      "title": "Cannot analyze modern web technologies"
    },
    "android_app_links": {
      "description": "Android App Links configuration detected",
      "evidence": "Found {count} app link configurations",
      "impact": "App links create additional attack surface between web and mobile app.",
      "remediation": "Ensure app link targets are properly validated in the mobile app.",
      "title": "Android App Links configured"
    },
    "angular_dev_mode": {
      "description": "Angular may be running in development mode",
      "evidence": "Development mode indicators found",
      "impact": "Development mode exposes debugging tools and reduces performance.",
      "remediation": "Enable production mode with enableProdMode() in main.ts.",
      "title": "Angular development mode detected"
    },
    "credentials_exposed": {
      "description": "Client-side code may contain {pattern_name} information",
      "evidence": "Found {count} potential matches",
      "impact": "Exposed credentials can be extracted by anyone viewing the page source.",
      "remediation": "Move sensitive credentials to server-side code and use environment variables.",
      "title": "Potential {pattern_name} exposed in client code"
    },
    "deployment_platform": {
      "description": "Site appears to be deployed on: {platforms}",
      "evidence": "Platform headers: {platforms}",
      "impact": "Platform-specific security considerations may apply.",
      "remediation": "Ensure platform security settings are properly configured.",
      "title": "Deployment platform detected"
    },
    "env_vars_exposed": {
      "description": "Environment variables may be exposed in {framework} client bundle",
      "evidence": "Environment variable references found in client code",
      "impact": "Sensitive environment variables may be exposed to users.",
      "remediation": "Ensure only NEXT_PUBLIC_ or NUXT_ENV_ prefixed variables are exposed to client.",
      "title": "Environment variables exposed in client"
    },
    "external_apis_hardcoded": {
      "description": "Found {count} external API URLs in client code",
      "evidence": "External APIs: {apis}",
      "impact": "Hardcoded API URLs may expose backend architecture and endpoints.",
      "remediation": "Use environment variables or server-side proxy for external API calls.",
      "title": "External API URLs hardcoded in client"
    },
    "frameworks_detected": {
      "description": "Detected frameworks: {frameworks}",
      "evidence": "Frameworks: {frameworks}",
      "impact": "Framework-specific security considerations may apply.",
      "remediation": "Ensure frameworks are up-to-date and securely configured.",
      "title": "JavaScript frameworks detected"
    },
    "ios_universal_links": {
      "description": "iOS Universal Links configuration detected",
      "evidence": "Universal Links configuration found",
      "impact": "Universal links create additional attack surface between web and mobile app.",
      "remediation": "Ensure universal link handling is properly validated in the iOS app.",
      "title": "iOS Universal Links configured"
    },
    "pwa_detected": {
      "description": "Progressive Web App manifest found",
      "evidence": "Manifest available at: {url}",
      "impact": "PWA capabilities require additional security considerations.",
      "remediation": "Ensure PWA security best practices are followed.",
      "title": "PWA manifest detected"
    },
    "pwa_insecure_icon": {
      "description": "PWA icon is served over insecure HTTP",
      "evidence": "Icon src: {src}",
      "impact": "Insecure resources may be manipulated in transit.",
      "remediation": "Serve all PWA resources over HTTPS.",
      "title": "PWA icon served over HTTP"
    },
    "pwa_invalid_manifest": {
      "description": "PWA manifest file contains invalid JSON",
      "evidence": "JSON parsing failed",
      "impact": "Invalid manifest may prevent PWA installation.",
      "remediation": "Fix JSON syntax errors in manifest.json.",
      "title": "Invalid PWA manifest format"
    },
    "pwa_scope_permissive": {
      "description": "PWA scope allows access to entire domain",
      "evidence": "Scope: '{scope}'",
      "impact": "Broad scope may allow PWA to intercept unintended resources.",
      "remediation": "Restrict PWA scope to specific application paths.",
      "title": "PWA scope too permissive"
    },
    "react_dev_build": {
      "description": "React is running in development mode in production",
      "evidence": "react.development.js found in page",
      "impact": "Development builds expose debugging information and have worse performance.",
      "remediation": "Use production build of React (react.production.min.js).",
      "title": "React development build detected"
    },
    "server_timing_sensitive": {
      "description": "Server-Timing header may expose internal system information",
      "evidence": "Server-Timing: {server_timing}",
      "impact": "Internal timing information may aid in reconnaissance.",
      "remediation": "Review Server-Timing header content for sensitive information.",
      "title": "Sensitive information in Server-Timing header"
    },
    "sw_aggressive_caching": {
      "description": "Service Worker uses stale-while-revalidate caching",
      "evidence": "staleWhileRevalidate strategy detected",
      "impact": "Aggressive caching may serve stale authentication or sensitive data.",
      "remediation": "Review caching strategy for sensitive data and authentication state.",
      "title": "Potentially aggressive caching strategy"
    },
    "sw_insecure_resources": {
      "description": "Service Worker may cache resources served over HTTP",
      "evidence": "HTTP URLs found in Service Worker",
      "impact": "Cached insecure resources may persist and be served to users.",
      "remediation": "Ensure all cached resources are served over HTTPS.",
      "title": "Service Worker caches HTTP resources"
    }
  },
  "module_access_control": "Access Control (A01)",
  "module_api_security": "API Security",
  "module_auth_failures": "Auth Failures (A07)",
  "module_backend_config": "Backend Config",
  "module_crypto_failures": "Crypto Failures (A02)",
  "module_headers": "HTTP Headers",
  "module_injection": "Injection Tests",
  "module_insecure_design": "Insecure Design (A04)",
  "module_modern_web": "Modern Technologies",
  "module_osint": "OSINT Reconnaissance",
  "module_security_misconfig": "Security Misconfig (A05)",
  "module_source_code": "Source Code (SAST)",
  "module_static": "Static Analysis",
  "module_static_analysis": "Static Analysis",
  "module_third_party": "Third Party Tools",
  "module_tls": "TLS/SSL",
  "module_vulnerable_components": "Vulnerable Components (A06)",
  "modules": {
    "access_control": {
      "description": "OWASP A01 - Broken Access Control detection (IDOR, privilege escalation)."
    },
    "api_security": {
      "description": "REST/GraphQL API security analysis and endpoint discovery."
    },
    "backend_config": {
      "description": "Backend security configuration analysis via public endpoints."
    },
    "broken_authentication": {
      "description": "OWASP A07 - Broken Authentication and Session Management detection."
    },
    "crypto_failures": {
      "description": "OWASP A02 - Cryptographic Failures analysis (weak TLS, ciphers)."
    },
    "headers": {
      "description": "HTTP response hardening headers and secure cookies."
    },
    "injection": {
      "description": "Benign payload probes for SQL/XSS indicators."
    },
    "insecure_design": {
      "description": "OWASP A04 - Insecure Design patterns analysis (architecture flaws)."
    },
    "modern_web": {
      "description": "Modern web technologies analysis (SPA, PWA, frameworks)."
    },
    "osint": {
      "description": "Open Source Intelligence reconnaissance for public exposure footprint."
    },
    "security_misconfiguration": {
      "description": "OWASP A05 - Security Misconfiguration detection (headers, admin interfaces)."
    },
    "source_code": {
      "description": "Static Application Security Testing (SAST) for source code vulnerabilities."
    },
    "static_analysis": {
      "description": "DOM heuristics for reflected XSS/CSRF token coverage."
    },
    "third_party": {
      "description": "Delegation stubs for OWASP ZAP, Burp Suite, Nikto APIs."
    },
    "tls": {
      "description": "TLS certificate hygiene (expiry, hostname coverage)."
    },
    "vulnerable_components": {
      "description": "OWASP A06 - Vulnerable and Outdated Components scanning (CVE detection)."
    }
  },
  "modules_label": "Modules:",
  "no_findings": "No findings detected.",
  "no_regressions": "No regressions detected.",
  "no_sast_results": "No SAST results to export.",
  "no_scan_performed": "No scan performed",
  "no_vulnerabilities": "No vulnerabilities detected",
  "options_section": "⚙️ Scan options",
  "osint": {
    "email": {
      "exposed": {
        "description": "Have I Been Pwned reports historical breaches for: {emails}",
        "remediation": "Reset affected passwords, enable MFA, and monitor the exposed aliases.",
        "title": "Corporate aliases exposed in breaches"
      },
      "lookup_partial_errors": {
        "description": "Some Have I Been Pwned queries failed: {errors}",
        "remediation": "Retry after resolving network issues or API throttling limits.",
        "title": "Partial errors during email breach lookup"
      },
      "lookup_skipped": {
        "description": "Email breach verification was skipped ({reason}).",
        "remediation": "Provide a HaveIBeenPwned API key via HIBP_API_KEY to enable lookups.",
        "title": "Email breach lookup skipped"
      }
    },
    "subdomains": {
      "large_footprint": {
        "description": "Certificate Transparency logs reveal {count} subdomains for {domain}.",
        "evidence": "Examples: {examples}",
        "remediation": "Harden exposed subdomains and remove unused hostnames from public certificates.",
        "title": "{count} subdomains visible in CT logs"
      }
    },
    "technologies": {
      "detected": {
        "description": "HTTP probing identified exposed application technologies: {technologies}",
        "remediation": "Ensure the detected components are patched and limit public metadata exposure.",
        "title": "Web stack fingerprinted"
      }
    }
  },
  "owasp": {
    "access_control": {
      "test": {
        "description": "Placeholder finding for access control module tests.",
        "remediation": "Review module configuration and replace with real checks.",
        "title": "Access control test finding"
      }
    },
    "broken_authentication": {
      "test": {
        "description": "Placeholder finding for broken authentication tests.",
        "remediation": "Add real authentication resilience checks.",
        "title": "Broken authentication test finding"
      }
    },
    "crypto_failures": {
      "test": {
        "description": "Placeholder finding for cryptographic failure tests.",
        "remediation": "Implement proper cryptographic controls before shipping.",
        "title": "Cryptographic failures test finding"
      }
    },
    "insecure_design": {
      "test": {
        "description": "Placeholder finding for insecure design tests.",
        "remediation": "Replace this stub with real insecure design diagnostics.",
        "title": "Insecure design test finding"
      }
    },
    "security_misconfiguration": {
      "test": {
        "description": "Placeholder finding for security misconfiguration tests.",
        "remediation": "Implement actual misconfiguration checks for this module.",
        "title": "Security misconfiguration test finding"
      }
    },
    "vulnerable_components": {
      "test": {
        "description": "Placeholder finding for vulnerable component tests.",
        "remediation": "Update the module to perform real component checks.",
        "title": "Vulnerable components test finding"
      }
    }
  },
  "pref_detailed": "Include detailed SAST report",
  "pref_history": "Save scan history",
  "pref_invasive": "Allow invasive tests by default",
  "pref_recursive": "Enable recursive SAST folder scan",
  "preferences_frame": "🔧 Preferences",
  "rec_add_header": "Add the {} with appropriate policy.",
  "rec_disable_legacy": "Disable legacy TLS protocols on server side.",
  "rec_enable_invasive": "Enable invasive mode to test for injections.",
  "rec_fix_error_handling": "Improve error handling to prevent information leakage.",
  "rec_renew_cert": "Renew SSL certificate immediately.",
  "rec_secure_cookie": "Mark sensitive cookies with Secure, HttpOnly and SameSite attributes.",
  "rec_update_cert": "Set up automatic certificate renewal.",
  "regressions_detected": "Regressions detected ({}): {}",
  "report_date_label": "Scan date:",
  "report_domain_label": "Analyzed domain:",
  "report_html_title": "Web Sentinel - Report",
  "report_main_heading": "🔐 Web Sentinel Security Report",
  "report_no_regressions": "No new vulnerabilities detected since the last scan.",
  "report_no_resolved": "No vulnerabilities have been resolved since the last scan.",
  "report_section_findings": "🔍 Vulnerability Details",
  "report_section_regressions": "⚠️ New Vulnerabilities",
  "report_section_resolved": "✅ Resolved Vulnerabilities",
  "report_section_summary": "📊 Vulnerability Summary",
  "results_section": "📋 Scan results",
  "sast": {
    "cpp": {
      "dangerous_function": {
        "description": "{func}() is prone to buffer overflow attacks",
        "remediation": "Use safer alternatives like strncpy(), strncat(), snprintf()",
        "title": "Dangerous function {func}() usage"
      },
      "format_string": {
        "description": "Using variables directly in printf can lead to format string attacks",
        "remediation": "Use format specifiers: printf(\"%s\", variable)",
        "title": "Potential format string vulnerability"
      },
      "memory_allocation": {
        "description": "Ensure all malloc() calls have corresponding free()",
        "remediation": "Use RAII patterns or smart pointers in C++",
        "title": "Dynamic memory allocation detected"
      }
    },
    "dart": {
      "http_connection": {
        "description": "HTTP connections are not encrypted",
        "remediation": "Use HTTPS for all external communications",
        "title": "Insecure HTTP connection in Flutter"
      },
      "webview_debugging": {
        "description": "WebView debugging should be disabled in production",
        "remediation": "Set debuggingEnabled to false in production builds",
        "title": "WebView debugging enabled"
      }
    },
    "dockerfile": {
      "privileged_mode": {
        "description": "Privileged mode gives container full access to host",
        "remediation": "Avoid --privileged flag, use specific capabilities instead",
        "title": "Privileged container mode"
      },
      "root_user": {
        "description": "Running containers as root increases security risk",
        "remediation": "Create and use a non-root user",
        "title": "Container running as root user"
      },
      "secrets_in_env": {
        "description": "Secrets should not be stored in environment variables",
        "remediation": "Use Docker secrets or external secret management",
        "title": "Potential secret in environment variable"
      }
    },
    "file_limit_exceeded": {
      "description": "Found {found} files, but license limits to {limit}",
      "remediation": "Upgrade license or reduce scope with exclusion patterns",
      "title": "File limit exceeded"
    },
    "generic": {
      "hardcoded_secrets": {
        "description": "Potential secrets found in source code",
        "remediation": "Use environment variables or secret management system",
        "title": "Hardcoded secrets detected"
      },
      "weak_crypto": {
        "description": "Usage of {algorithm} is discouraged for security reasons",
        "remediation": "Use stronger cryptographic algorithms like SHA-256, AES-256",
        "title": "Weak cryptographic algorithm detected"
      },
      "security_issue": {
        "title": "Problème de sécurité détecté",
        "description": "Un problème de sécurité a été identifié (sast.generic.security_issue).",
        "remediation": "Examinez et corrigez cette vulnérabilité de sécurité."
      }
    },
    "js": {
      "dom_xss": {
        "description": "Line {line} uses innerHTML with user data",
        "remediation": "Use textContent or sanitize with DOMPurify",
        "title": "Potential DOM XSS vulnerability"
      },
      "eval_usage": {
        "description": "eval() usage at line {line} can execute arbitrary code",
        "remediation": "Avoid eval() or use JSON.parse() for data",
        "title": "Dangerous eval() usage detected"
      }
    },
    "kotlin": {
      "intent_vulnerability": {
        "description": "Hardcoded Intent actions may be vulnerable",
        "remediation": "Validate Intent sources and use explicit Intents when possible",
        "title": "Potential Intent security issue"
      },
      "sql_injection": {
        "description": "String interpolation in rawQuery can lead to SQL injection",
        "remediation": "Use parameterized queries with ? placeholders",
        "title": "Potential SQL Injection in Android"
      }
    },
    "missing_target": {
      "description": "Static analysis requires either a source path or explicit files.",
      "remediation": "Provide a --source-path argument or select files in the SAST tab.",
      "title": "No source target configured"
    },
    "no_files_found": {
      "description": "No source files matching the criteria were found",
      "remediation": "Check file extensions and exclusion patterns",
      "title": "No source files found"
    },
    "objc": {
      "format_string": {
        "description": "Using variables directly in NSLog can be unsafe",
        "remediation": "Use NSLog(@\"%@\", variable) format",
        "title": "Potential format string vulnerability in NSLog"
      },
      "weak_crypto": {
        "description": "MD5 and SHA1 are cryptographically weak",
        "remediation": "Use SHA-256 or stronger algorithms",
        "title": "Weak cryptographic algorithm"
      }
    },
    "path_not_found": {
      "description": "Source path {path} does not exist",
      "remediation": "Verify the source path and ensure it's accessible",
      "title": "Source path not found"
    },
    "php": {
      "command_injection": {
        "description": "Line {line} executes system command with user input",
        "remediation": "Use escapeshellarg() and validate input, prefer safe alternatives",
        "title": "Potential Command Injection vulnerability"
      },
      "file_inclusion": {
        "description": "Line {line} includes file based on user input",
        "remediation": "Validate and whitelist allowed files, avoid user input in include paths",
        "title": "Potential Local/Remote File Inclusion vulnerability"
      },
      "sql_injection": {
        "description": "Line {line} uses user input in SQL query",
        "remediation": "Use prepared statements with parameter binding (PDO::prepare() or mysqli_prepare())",
        "title": "Potential SQL Injection vulnerability"
      },
      "xss": {
        "description": "Line {line} outputs unfiltered user data",
        "remediation": "Use htmlspecialchars() or filter_var() to sanitize output",
        "title": "Potential Cross-Site Scripting (XSS) vulnerability"
      }
    },
    "powershell": {
      "execution_policy": {
        "description": "Bypassing execution policy reduces security",
        "remediation": "Use proper code signing instead of bypassing policy",
        "title": "Execution policy bypass"
      },
      "hardcoded_credentials": {
        "description": "Hardcoded credentials in scripts are insecure",
        "remediation": "Use Windows Credential Manager or secure vault",
        "title": "Hardcoded credential in PowerShell"
      },
      "invoke_expression": {
        "description": "Invoke-Expression can execute arbitrary code",
        "remediation": "Avoid Invoke-Expression or validate input carefully",
        "title": "Dangerous Invoke-Expression usage"
      }
    },
    "python": {
      "eval_usage": {
        "description": "eval/exec usage at line {line} can execute arbitrary code",
        "remediation": "Use ast.literal_eval() for safe evaluation or avoid dynamic execution",
        "title": "Dangerous eval/exec usage"
      }
    },
    "ruby": {
      "command_injection": {
        "description": "Line {line} executes system command with user input",
        "remediation": "Use Open3.capture3() or shellwords for safe command execution",
        "title": "Potential Command Injection in Ruby"
      },
      "eval_usage": {
        "description": "eval() can execute arbitrary code",
        "remediation": "Avoid eval() or use safer alternatives like JSON.parse",
        "title": "Dangerous eval() usage in Ruby"
      },
      "sql_injection": {
        "description": "Line {line} uses string interpolation in SQL queries",
        "remediation": "Use parameterized queries or ActiveRecord methods with placeholders",
        "title": "Potential SQL Injection in Rails"
      }
    },
    "rust": {
      "raw_pointer": {
        "description": "Raw pointers can lead to memory safety issues",
        "remediation": "Prefer safe Rust patterns and validate pointer operations",
        "title": "Raw pointer usage detected"
      },
      "transmute_usage": {
        "description": "transmute can cause undefined behavior if misused",
        "remediation": "Use safer alternatives or carefully validate transmute usage",
        "title": "Dangerous transmute usage"
      },
      "unsafe_block": {
        "description": "Unsafe blocks bypass Rust's safety guarantees",
        "remediation": "Review unsafe code carefully and minimize usage",
        "title": "Unsafe Rust code block detected"
      }
    },
    "scan_error": {
      "description": "Could not analyze file: {error}",
      "remediation": "Check file encoding and permissions",
      "title": "Scan error in {file}"
    },
    "shell": {
      "command_injection": {
        "description": "Unquoted variables in dangerous commands can lead to injection",
        "remediation": "Quote all variables: \"$variable\"",
        "title": "Potential command injection in shell script"
      },
      "eval_usage": {
        "description": "eval can execute arbitrary commands",
        "remediation": "Avoid eval or carefully validate input",
        "title": "Dangerous eval usage in shell"
      },
      "hardcoded_password": {
        "description": "Hardcoded passwords are a security risk",
        "remediation": "Use environment variables or secure secret management",
        "title": "Hardcoded password in shell script"
      }
    },
    "swift": {
      "http_connection": {
        "description": "HTTP connections are not encrypted",
        "remediation": "Use HTTPS for all network communications",
        "title": "Insecure HTTP connection"
      },
      "keychain_issue": {
        "description": "kSecAttrAccessibleAlways makes keychain items accessible even when locked",
        "remediation": "Use more restrictive accessibility settings like kSecAttrAccessibleWhenUnlocked",
        "title": "Insecure Keychain accessibility setting"
      }
    },
    "terraform": {
      "hardcoded_secret": {
        "description": "Secrets should not be hardcoded in Terraform files",
        "remediation": "Use Terraform variables, AWS Secrets Manager, or HashiCorp Vault",
        "title": "Hardcoded secret in Terraform"
      },
      "overly_permissive": {
        "description": "0.0.0.0/0 allows access from anywhere",
        "remediation": "Restrict CIDR blocks to specific IP ranges",
        "title": "Overly permissive network access"
      },
      "unencrypted_storage": {
        "description": "Storage should be encrypted",
        "remediation": "Set encrypted = true for storage resources",
        "title": "Unencrypted storage configuration"
      }
    },
    "scala": {
      "deserialization": {
        "title": "Problème de sécurité détecté",
        "description": "Un problème de sécurité a été identifié (sast.scala.deserialization).",
        "remediation": "Examinez et corrigez cette vulnérabilité de sécurité."
      }
    }
  },
  "sast.cpp.dangerous_function": {
    "description": "{func}() is prone to buffer overflow attacks",
    "remediation": "Use safer alternatives like strncpy(), strncat(), snprintf()",
    "title": "Dangerous function {func}() usage"
  },
  "sast.cpp.format_string": {
    "description": "Using variables directly in printf can lead to format string attacks",
    "remediation": "Use format specifiers: printf(\"%s\", variable)",
    "title": "Potential format string vulnerability"
  },
  "sast.cpp.memory_allocation": {
    "description": "Ensure all malloc() calls have corresponding free()",
    "remediation": "Use RAII patterns or smart pointers in C++",
    "title": "Dynamic memory allocation detected"
  },
  "sast.dart.http_connection": {
    "description": "HTTP connections are not encrypted",
    "remediation": "Use HTTPS for all external communications",
    "title": "Insecure HTTP connection in Flutter"
  },
  "sast.dart.webview_debugging": {
    "description": "WebView debugging should be disabled in production",
    "remediation": "Set debuggingEnabled to false in production builds",
    "title": "WebView debugging enabled"
  },
  "sast.dockerfile.privileged_mode": {
    "description": "Privileged mode gives container full access to host",
    "remediation": "Avoid --privileged flag, use specific capabilities instead",
    "title": "Privileged container mode"
  },
  "sast.dockerfile.root_user": {
    "description": "Running containers as root increases security risk",
    "remediation": "Create and use a non-root user",
    "title": "Container running as root user"
  },
  "sast.dockerfile.secrets_in_env": {
    "description": "Secrets should not be stored in environment variables",
    "remediation": "Use Docker secrets or external secret management",
    "title": "Potential secret in environment variable"
  },
  "sast.file_limit_exceeded": {
    "description": "Found {found} files, but license limits to {limit}",
    "remediation": "Upgrade license or reduce scope with exclusion patterns",
    "title": "File limit exceeded"
  },
  "sast.generic.hardcoded_secrets": {
    "description": "Potential secrets found in source code",
    "remediation": "Use environment variables or secret management system",
    "title": "Hardcoded secrets detected"
  },
  "sast.generic.weak_crypto": {
    "description": "Usage of {algorithm} is discouraged for security reasons",
    "remediation": "Use stronger cryptographic algorithms like SHA-256, AES-256",
    "title": "Weak cryptographic algorithm detected"
  },
  "sast.js.dom_xss": {
    "description": "Line {line} uses innerHTML with user data",
    "remediation": "Use textContent or sanitize with DOMPurify",
    "title": "Potential DOM XSS vulnerability"
  },
  "sast.js.eval_usage": {
    "description": "eval() usage at line {line} can execute arbitrary code",
    "remediation": "Avoid eval() or use JSON.parse() for data",
    "title": "Dangerous eval() usage detected"
  },
  "sast.kotlin.intent_vulnerability": {
    "description": "Hardcoded Intent actions may be vulnerable",
    "remediation": "Validate Intent sources and use explicit Intents when possible",
    "title": "Potential Intent security issue"
  },
  "sast.kotlin.sql_injection": {
    "description": "String interpolation in rawQuery can lead to SQL injection",
    "remediation": "Use parameterized queries with ? placeholders",
    "title": "Potential SQL Injection in Android"
  },
  "sast.missing_target": {
    "description": "Static analysis requires either a source path or explicit files.",
    "remediation": "Provide a --source-path argument or select files in the SAST tab.",
    "title": "No source target configured"
  },
  "sast.no_files_found": {
    "description": "No source files matching the criteria were found",
    "remediation": "Check file extensions and exclusion patterns",
    "title": "No source files found"
  },
  "sast.not_configured": {
    "description": "Source code scanning requires --source-path parameter",
    "remediation": "Provide source code path using --source-path option",
    "title": "Source code scanning not configured"
  },
  "sast.objc.format_string": {
    "description": "Using variables directly in NSLog can be unsafe",
    "remediation": "Use NSLog(@\"%@\", variable) format",
    "title": "Potential format string vulnerability in NSLog"
  },
  "sast.objc.weak_crypto": {
    "description": "MD5 and SHA1 are cryptographically weak",
    "remediation": "Use SHA-256 or stronger algorithms",
    "title": "Weak cryptographic algorithm"
  },
  "sast.path_not_found": {
    "description": "Source path {path} does not exist",
    "remediation": "Verify the source path and ensure it's accessible",
    "title": "Source path not found"
  },
  "sast.php.command_injection": {
    "description": "Line {line} executes system command with user input",
    "remediation": "Use escapeshellarg() and validate input, prefer safe alternatives",
    "title": "Potential Command Injection vulnerability"
  },
  "sast.php.file_inclusion": {
    "description": "Line {line} includes file based on user input",
    "remediation": "Validate and whitelist allowed files, avoid user input in include paths",
    "title": "Potential Local/Remote File Inclusion vulnerability"
  },
  "sast.php.sql_injection": {
    "description": "Line {line} uses user input in SQL query",
    "remediation": "Use prepared statements with parameter binding (PDO::prepare() or mysqli_prepare())",
    "title": "Potential SQL Injection vulnerability"
  },
  "sast.php.xss": {
    "description": "Line {line} outputs unfiltered user data",
    "remediation": "Use htmlspecialchars() or filter_var() to sanitize output",
    "title": "Potential Cross-Site Scripting (XSS) vulnerability"
  },
  "sast.powershell.execution_policy": {
    "description": "Bypassing execution policy reduces security",
    "remediation": "Use proper code signing instead of bypassing policy",
    "title": "Execution policy bypass"
  },
  "sast.powershell.hardcoded_credentials": {
    "description": "Hardcoded credentials in scripts are insecure",
    "remediation": "Use Windows Credential Manager or secure vault",
    "title": "Hardcoded credential in PowerShell"
  },
  "sast.powershell.invoke_expression": {
    "description": "Invoke-Expression can execute arbitrary code",
    "remediation": "Avoid Invoke-Expression or validate input carefully",
    "title": "Dangerous Invoke-Expression usage"
  },
  "sast.python.eval_usage": {
    "description": "eval/exec usage at line {line} can execute arbitrary code",
    "remediation": "Use ast.literal_eval() for safe evaluation or avoid dynamic execution",
    "title": "Dangerous eval/exec usage"
  },
  "sast.python.sql_injection": {
    "description": "Potential SQL injection at line {line}",
    "remediation": "Use parameterized queries with placeholders (?, %s)",
    "title": "SQL Injection"
  },
  "sast.python.command_injection": {
    "description": "System command injection at line {line}",
    "remediation": "Use subprocess with argument list instead of shell=True",
    "title": "System Command Injection"
  },
  "sast.python.pickle_usage": {
    "description": "Dangerous pickle deserialization at line {line}",
    "remediation": "Avoid pickle.loads() or use hmac to sign data",
    "title": "Unsafe Pickle Deserialization"
  },
  "sast.python.hardcoded_credential": {
    "description": "Hardcoded credentials detected at line {line}",
    "remediation": "Use environment variables or a secrets manager",
    "title": "Hardcoded Credentials"
  },
  "sast.ruby.command_injection": {
    "description": "Line {line} executes system command with user input",
    "remediation": "Use Open3.capture3() or shellwords for safe command execution",
    "title": "Potential Command Injection in Ruby"
  },
  "sast.ruby.eval_usage": {
    "description": "eval() can execute arbitrary code",
    "remediation": "Avoid eval() or use safer alternatives like JSON.parse",
    "title": "Dangerous eval() usage in Ruby"
  },
  "sast.ruby.sql_injection": {
    "description": "Line {line} uses string interpolation in SQL queries",
    "remediation": "Use parameterized queries or ActiveRecord methods with placeholders",
    "title": "Potential SQL Injection in Rails"
  },
  "sast.rust.raw_pointer": {
    "description": "Raw pointers can lead to memory safety issues",
    "remediation": "Prefer safe Rust patterns and validate pointer operations",
    "title": "Raw pointer usage detected"
  },
  "sast.rust.transmute_usage": {
    "description": "transmute can cause undefined behavior if misused",
    "remediation": "Use safer alternatives or carefully validate transmute usage",
    "title": "Dangerous transmute usage"
  },
  "sast.rust.unsafe_block": {
    "description": "Unsafe blocks bypass Rust's safety guarantees",
    "remediation": "Review unsafe code carefully and minimize usage",
    "title": "Unsafe Rust code block detected"
  },
  "sast.scan_error": {
    "description": "Could not analyze file: {error}",
    "remediation": "Check file encoding and permissions",
    "title": "Scan error in {file}"
  },
  "sast.shell.command_injection": {
    "description": "Unquoted variables in dangerous commands can lead to injection",
    "remediation": "Quote all variables: \"$variable\"",
    "title": "Potential command injection in shell script"
  },
  "sast.shell.eval_usage": {
    "description": "eval can execute arbitrary commands",
    "remediation": "Avoid eval or carefully validate input",
    "title": "Dangerous eval usage in shell"
  },
  "sast.shell.hardcoded_password": {
    "description": "Hardcoded passwords are a security risk",
    "remediation": "Use environment variables or secure secret management",
    "title": "Hardcoded password in shell script"
  },
  "sast.swift.http_connection": {
    "description": "HTTP connections are not encrypted",
    "remediation": "Use HTTPS for all network communications",
    "title": "Insecure HTTP connection"
  },
  "sast.swift.keychain_issue": {
    "description": "kSecAttrAccessibleAlways makes keychain items accessible even when locked",
    "remediation": "Use more restrictive accessibility settings like kSecAttrAccessibleWhenUnlocked",
    "title": "Insecure Keychain accessibility setting"
  },
  "sast.terraform.hardcoded_secret": {
    "description": "Secrets should not be hardcoded in Terraform files",
    "remediation": "Use Terraform variables, AWS Secrets Manager, or HashiCorp Vault",
    "title": "Hardcoded secret in Terraform"
  },
  "sast.terraform.overly_permissive": {
    "description": "0.0.0.0/0 allows access from anywhere",
    "remediation": "Restrict CIDR blocks to specific IP ranges",
    "title": "Overly permissive network access"
  },
  "sast.terraform.unencrypted_storage": {
    "description": "Storage should be encrypted",
    "remediation": "Set encrypted = true for storage resources",
    "title": "Unencrypted storage configuration"
  },
  "sast_clear_files_button": "🧹 Clear",
  "sast_detailed": "📝 Detailed report",
  "sast_detected_files": "📄 Detected files: {count}",
  "sast_files_analyzed_line": "   Files analyzed: {count}",
  "sast_files_label": "📋 Files to analyze:",
  "sast_folder_label": "📂 Folder to analyze:",
  "sast_info_disabled": "❌ SAST unavailable – PRO/ENTERPRISE/SYSOP license required",
  "sast_info_generic": "✅ SAST enabled – Limits based on your license",
  "sast_info_limits": "✅ SAST enabled – Max: {files} files, {size}",
  "sast_languages_label": "Languages analyzed: {languages}",
  "sast_manual_label": "📄 Or select files:",
  "sast_no_files_warning": "No supported source files were detected for this location.\nEnsure the folder contains files such as .py, .js, .php, etc.\nAdjust the exclusions or choose a folder that contains your source code.",
  "sast_options_frame": "🔧 SAST Options",
  "sast_recursive": "🔄 Analyze subfolders",
  "sast_remove_file_button": "🗑️ Remove",
  "sast_results_frame": "🔍 SAST Analysis Results",
  "sast_scan_button": "🔍 Analyze Code",
  "sast_scan_incomplete_body": "Select a folder or files to analyze.",
  "sast_scan_incomplete_title": "Incomplete configuration",
  "sast_scan_started_line": "🔍 Starting SAST analysis for {count} file(s)...",
  "sast_select_files_button": "📄 Select files",
  "sast_selected_folder": "📂 Folder: {path}",
  "sast_selection_frame": "📁 Source File Selection",
  "save_domains_hint": "Save domains list",
  "scan_started_line": "🚀 Starting scan for {count} domain(s)...",
  "scan_summary": "✅ Scan completed: {} domains, {} findings",
  "scanner": {
    "unhandled_error": {
      "description": "Module {module} failed with error: {error}",
      "remediation": "Review the stack trace and network connectivity.",
      "title": "Unexpected scanner error"
    }
  },
  "scanning_domain": "Scanning {} in progress...",
  "severity_critical": "CRITICAL",
  "severity_high": "HIGH",
  "severity_info": "INFO",
  "severity_low": "LOW",
  "severity_medium": "MEDIUM",
  "source_files_filter": "Source files",
  "static": {
    "dom_fetch_failed": {
      "description": "Unable to retrieve page {url}: {error}",
      "impact": "Without a baseline document, static analysis cannot assess exposure.",
      "remediation": "Check DNS, firewall rules, and TLS configuration for the target host.",
      "title": "Unable to retrieve DOM"
    },
    "dynamic_js_execution": {
      "description": "Inline scripts rely on eval()/Function constructors.",
      "impact": "Dynamic evaluation makes it easier to execute injected payloads.",
      "remediation": "Refactor code to avoid eval-style APIs and enforce CSP script-src hashes.",
      "title": "Dynamic JavaScript execution"
    },
    "form_without_csrf": {
      "description": "Form POST target '{action}' lacks hidden CSRF fields.",
      "impact": "Forms without CSRF defenses expose authenticated actions to forgery.",
      "remediation": "Inject server-generated anti-CSRF tokens and validate them server side.",
      "title": "Form missing CSRF token"
    },
    "inline_event_handlers": {
      "description": "The DOM contains {count} on* handlers without CSP nonces.",
      "impact": "Inline handlers are common injection points for reflected XSS.",
      "remediation": "Replace inline handlers with addEventListener and enforce CSP nonces.",
      "title": "Inline event handlers detected"
    },
    "inline_script_pattern": {
      "description": "An inline script matches pattern '{pattern}'.",
      "impact": "Inline scripts reduce CSP effectiveness and ease XSS exploitation.",
      "remediation": "Move scripts to external files with CSP nonces or sanitize dynamic content.",
      "title": "Inline script with risky pattern"
    },
    "no_heuristics": {
      "description": "DOM inspection did not detect missing CSRF tokens or risky inline patterns.",
      "impact": "Heuristic coverage is limited and should complement dynamic testing.",
      "remediation": "Maintain CSP nonces and server-side CSRF validation.",
      "title": "No static heuristics triggered"
    },
    "playwright_failed": {
      "description": "Headless browser inspection failed: {error}",
      "impact": "Inline handler heuristics are limited to static parsing fallback.",
      "remediation": "Install Playwright browsers (`playwright install`) and ensure sandboxing permits headless runs.",
      "title": "Playwright analysis failed"
    }
  },
  "status_completed": "Scan completed successfully",
  "status_error": "Scan error",
  "status_no_source": "⚠️ No source files",
  "status_ready": "✅ Ready",
  "status_ready_license": "✅ Ready - License {tier}",
  "status_sast_done": "✅ SAST analysis completed",
  "status_sast_error": "❌ SAST error",
  "status_sast_running": "🔍 SAST analysis in progress...",
  "status_scan_done": "✅ Scan completed",
  "status_scan_error": "❌ Scan failed",
  "status_scan_progress": "🔍 Scanning {index}/{total} - {domain}",
  "status_scan_running": "🔄 Scan in progress...",
  "status_scanning": "Scanning...",
  "status_stopped": "Scan stopped",
  "stopped": "Stopped",
  "subscription_checkout_error": "Unable to open payment page: {}",
  "subscription_checkout_opened": "Opening payment page…",
  "subscription_discount_format": "-{} % compared to monthly",
  "subscription_discount_label": "Annual savings",
  "subscription_feature_api": "API access",
  "subscription_feature_html_export": "HTML exports",
  "subscription_feature_invasive": "Invasive tests",
  "subscription_feature_multi_user": "Multi-user management",
  "subscription_feature_scan_passive": "Passive scans",
  "subscription_invasive_not_allowed": "Invasive mode requires a PRO plan or higher.",
  "subscription_manage_plan": "Manage subscription",
  "subscription_payment_unavailable": "Payment service is temporarily unavailable. Contact support to upgrade your subscription.",
  "subscription_plan_enterprise_features": "Everything in PRO\nMulti-user management\nAPI access and integrations",
  "subscription_plan_enterprise_price_annual": "$490 / year",
  "subscription_plan_enterprise_price_monthly": "$49 / month",
  "subscription_plan_enterprise_title": "Enterprise Plan",
  "subscription_plan_free_price": "$0",
  "subscription_plan_free_title": "Free Plan",
  "subscription_plan_pro_features": "Unlimited scans\nInvasive testing\nAdvanced HTML exports",
  "subscription_plan_pro_price_annual": "$99 / year",
  "subscription_plan_pro_price_monthly": "$9.99 / month",
  "subscription_plan_pro_title": "PRO Plan",
  "subscription_pricing_label": "Pricing",
  "subscription_select_annual": "Annual",
  "subscription_select_monthly": "Monthly",
  "subscription_table_feature_header": "Feature",
  "subscription_upgrade_cta": "Upgrade to PRO",
  "subscription_upgrade_message_domains": "Free plans are limited to 3 domains. Upgrade to PRO to monitor more targets.",
  "subscription_upgrade_message_generic": "Unlock all professional features.",
  "subscription_upgrade_message_html_export": "HTML export is reserved for PRO subscriptions. Upgrade to create advanced reports.",
  "subscription_upgrade_needed": "Upgrade required",
  "subscription_upgrade_subtitle": "Choose the plan that fits your needs.",
  "subscription_upgrade_title": "Unlock Web Sentinel PRO",
  "success_domains_loaded": "Loaded {} domains from {}",
  "success_domains_saved": "Saved {} domains to {}",
  "success_export": "Report exported to {}",
  "success_scan_complete": "Scan of {} domains completed successfully!",
  "summary_label": "Summary",
  "summary_no_issue": "✅ No issues detected",
  "tab_domain_scan": "🌐  Domain Scan",
  "tab_reports_history": "📊  Reports & History",
  "tab_sast_analysis": "🔍  Source Code (SAST)",
  "tab_settings": "⚙️  Settings",
  "text_files": "Text files",
  "thirdparty": {
    "burp_detected": {
      "description": "Burp Enterprise API reachable at {url}.",
      "impact": "Correlating Burp findings improves prioritization.",
      "remediation": "Automate scan scheduling and import results using the orchestrator.",
      "title": "Burp Suite Enterprise API detected"
    },
    "burp_error": {
      "description": "Burp API at {url} responded with HTTP {status}.",
      "impact": "External vulnerability data cannot be synchronized.",
      "remediation": "Inspect Burp Enterprise logs and verify account permissions.",
      "title": "Burp Suite Enterprise API returned error"
    },
    "burp_not_configured": {
      "description": "Set BURP_API_URL/BURP_API_KEY to aggregate passive findings.",
      "impact": "Burp baselines will not be correlated in Sentinel reports.",
      "remediation": "Expose the Burp Enterprise REST API and create a read-only API key.",
      "title": "Burp Suite Enterprise API not configured"
    },
    "burp_unreachable": {
      "description": "Unable to contact Burp Enterprise at {url}: {error}",
      "impact": "No correlation between Burp and internal diagnostics.",
      "remediation": "Check VPN access, TLS certificates, and API key validity.",
      "title": "Burp Enterprise API unreachable"
    },
    "nikto_detected": {
      "description": "Nikto available at {path}.",
      "impact": "Nikto baselines can run as part of scheduled orchestrations.",
      "remediation": "Run Nikto with `-Plugins passive -Format json` and import the results.",
      "title": "Nikto binary detected"
    },
    "nikto_not_found": {
      "description": "Nikto executable missing from PATH; passive profile cannot start.",
      "impact": "HTTP misconfiguration coverage from Nikto will be absent.",
      "remediation": "Install Nikto and expose its path via NIKTO_PATH or the system PATH.",
      "title": "Nikto binary not found"
    },
    "ready": {
      "description": "OWASP ZAP, Burp Suite Enterprise or Nikto are available for orchestration.",
      "impact": "Coordinated execution expands coverage with specialized tooling.",
      "remediation": "Trigger scans via the integration CLIs or APIs.",
      "title": "Third-party integrations detected"
    },
    "zap_detected": {
      "description": "ZAP API reachable at {url} (version {version}).",
      "impact": "ZAP passive scans can be scheduled alongside internal checks.",
      "remediation": "Configure ZAP contexts to restrict scope and share session data.",
      "title": "OWASP ZAP API detected"
    },
    "zap_error": {
      "description": "ZAP API at {url} responded with HTTP {status}.",
      "impact": "Passive results cannot be retrieved from ZAP.",
      "remediation": "Review ZAP logs and confirm the API endpoint is accessible with the provided key.",
      "title": "OWASP ZAP API returned error"
    },
    "zap_not_configured": {
      "description": "Set ZAP_API_URL and optionally ZAP_API_KEY to enable the integration.",
      "impact": "Without the API endpoint the orchestrator cannot launch baseline scans.",
      "remediation": "Run OWASP ZAP in daemon mode and expose the API locally with restrictions.",
      "title": "OWASP ZAP API not configured"
    },
    "zap_unreachable": {
      "description": "Unable to contact the ZAP API at {url}: {error}",
      "impact": "Passive spidering and alert exports are disabled.",
      "remediation": "Ensure the daemon is running, network access is allowed, and the API key is valid.",
      "title": "OWASP ZAP API unreachable"
    }
  },
  "timeout_label": "Timeout (sec):",
  "tls": {
    "certificate_expired": {
      "description": "The certificate expired on {date}.",
      "remediation": "Renew the certificate immediately and deploy the new chain.",
      "title": "TLS certificate expired"
    },
    "certificate_missing": {
      "description": "TLS negotiation succeeded but no certificate was returned.",
      "impact": "Browsers block the connection because the certificate chain is incomplete.",
      "remediation": "Reissue the TLS certificate and install it correctly on the load balancer.",
      "title": "TLS certificate missing"
    },
    "certificate_near_expiry": {
      "description": "The certificate expires on {date} ({days} days remaining).",
      "remediation": "Plan certificate renewal before the expiration date.",
      "title": "Certificate nearing expiry"
    },
    "certificate_not_yet_valid": {
      "description": "The certificate is only valid starting {date}.",
      "remediation": "Regenerate the certificate with an appropriate validity window.",
      "title": "Certificate not yet valid"
    },
    "handshake_failed": {
      "description": "Unable to establish a TLS session with {domain}:{port}: {error}",
      "impact": "Clients cannot establish encrypted sessions with the service.",
      "remediation": "Verify that the HTTPS service is running and that the certificate chain is valid.",
      "title": "TLS handshake failed"
    },
    "hostname_not_covered": {
      "description": "{domain} is missing from the SAN list: {san_list}",
      "remediation": "Generate a certificate that includes this hostname in the SAN.",
      "title": "Hostname not covered by certificate"
    },
    "http_redirect_check_failed": {
      "description": "Unable to verify HTTP redirect behaviour: {error}",
      "impact": "Clients may remain on HTTP if the redirect fails.",
      "remediation": "Ensure port 80 is reachable or closed if all traffic must be HTTPS.",
      "title": "HTTP redirect check failed"
    },
    "http_redirect_not_permanent": {
      "description": "Initial HTTP response returned {status} instead of a 301/308.",
      "impact": "Caches and search engines may ignore redirect policies.",
      "remediation": "Return 301 or 308 to enforce automatic HTTPS upgrades.",
      "title": "HTTP redirect not permanent"
    },
    "https_port_unreachable": {
      "description": "Network error while reaching {domain}:{port}: {error}",
      "impact": "Visitors may downgrade to plaintext HTTP or experience downtime.",
      "remediation": "Ensure port 443 is open and not blocked by firewalls.",
      "title": "HTTPS port unreachable"
    },
    "https_redirect_missing": {
      "description": "HTTP probe ended on plaintext URL {url}.",
      "impact": "Visitors stay exposed to plaintext interception.",
      "remediation": "Redirect all HTTP traffic to HTTPS with 301 or 308 responses.",
      "title": "Missing HTTPS redirect"
    },
    "legacy_protocol": {
      "description": "The server still accepts deprecated TLS version {protocol}.",
      "impact": "Legacy protocols weaken encryption and compromise compliance.",
      "remediation": "Disable TLS 1.0/1.1 on the server or load balancer.",
      "title": "Legacy TLS protocol accepted"
    },
    "no_san": {
      "description": "The certificate does not contain any Subject Alternative Name entries.",
      "remediation": "Issue a certificate that includes SAN entries for the covered domains.",
      "title": "Certificate missing SAN entries"
    }
  },
  "tls_cert_expired": "SSL certificate expired",
  "tls_cert_expiring": "SSL certificate expires in {} days",
  "tls_handshake_failed": "TLS handshake failed",
  "tls_legacy_protocol": "Legacy TLS protocol detected: {}",
  "unit_mb": "MB",
  "unknown_domain": "Unknown",
  "unlimited_domains": "Unlimited",
  "unlimited_files": "Unlimited",
  "unlimited_size": "Unlimited",
  "user_license_button": "📄 License",
  "user_login_button": "🔐 Sign in",
  "user_logout_button": "🚪 Sign out",
  " not in match": {
    "group(0):\n            # Ajoute la clé i18n avant la parenthèse fermante\n            full_match = match": {
      "group(0)\n            if full_match": {
        "endswith(": {
          "title": "Problème de sécurité détecté",
          "description": "Un problème de sécurité a été identifié ( not in match.group(0):\n            # Ajoute la clé i18n avant la parenthèse fermante\n            full_match = match.group(0)\n            if full_match.endswith().",
          "remediation": "Examinez et corrigez cette vulnérabilité de sécurité."
        }
      }
    }
  },
  "([^": {
    "title": "Problème de sécurité détecté",
    "description": "Un problème de sécurité a été identifié (([^).",
    "remediation": "Examinez et corrigez cette vulnérabilité de sécurité."
  },
  "Potential Command Injection vulnerability": {
    "title": "Problème de sécurité détecté",
    "description": "Un problème de sécurité a été identifié (Potential Command Injection vulnerability).",
    "remediation": "Examinez et corrigez cette vulnérabilité de sécurité."
  },
  "dialog_select_source_files": {
    "title": "Problème de sécurité détecté",
    "description": "Un problème de sécurité a été identifié (dialog_select_source_files).",
    "remediation": "Examinez et corrigez cette vulnérabilité de sécurité."
  },
  "dialog_select_source_folder": {
    "title": "Problème de sécurité détecté",
    "description": "Un problème de sécurité a été identifié (dialog_select_source_folder).",
    "remediation": "Examinez et corrigez cette vulnérabilité de sécurité."
  },
  "profile_default_description": {
    "title": "Problème de sécurité détecté",
    "description": "Un problème de sécurité a été identifié (profile_default_description).",
    "remediation": "Examinez et corrigez cette vulnérabilité de sécurité."
  },
  "severity_": {
    "title": "Problème de sécurité détecté",
    "description": "Un problème de sécurité a été identifié (severity_).",
    "remediation": "Examinez et corrigez cette vulnérabilité de sécurité."
  },
  "{i18n_key}": {
    "title": "Problème de sécurité détecté",
    "description": "Un problème de sécurité a été identifié ({i18n_key}).",
    "remediation": "Examinez et corrigez cette vulnérabilité de sécurité."
  },
  "ui": {
    "domain_scan_running_title": "Scan in progress",
    "domain_scan_running_body": "Please wait, a scan is already running.",
    "domain_missing_body": "Please add at least one domain to scan.",
    "domain_limit_body": "Your license allows scanning up to {limit} domain(s) simultaneously.",
    "domain_invasive_warning": "Invasive tests are reserved for PRO and higher licenses.",
    "domain_scan_error": "The scan failed: {error}",
    "status_scan_running": "🔄 Scan in progress...",
    "status_scan_progress": "🔍 Scanning {index}/{total} - {domain}",
    "status_scan_done": "✅ Scan completed",
    "status_scan_error": "❌ Scan failed",
    "scan_started_line": "🚀 Starting scan for {count} domain(s)...",
    "domain_limit_title": "Limit reached",
    "dialog_export_results_json": "Export results to JSON",
    "dialog_export_results_html": "Export results to HTML",
    "export_no_results": "No results to export.",
    "export_no_report": "No report to export.",
    "export_results_success": "Results exported to {filename}",
    "export_results_error": "Error while exporting: {error}",
    "login_error_message": "Error during sign-in: {error}",
    "logout_error_message": "Error during sign-out: {error}",
    "login_success_title": "Success",
    "login_success_message": "Successfully signed in!",
    "logout_success_message": "Signed out successfully",
    "dialog_export_sast_json": "Export SAST results to JSON",
    "dialog_export_sast_html": "Export SAST results to HTML",
    "sast_info_limits": "✅ SAST enabled – Max: {files} files, {size}",
    "sast_scan_incomplete_body": "Select a folder or files to analyze.",
    "status_no_source": "⚠️ No source files"
  }
}