{ "language": { "display_name": "English", "select_language": "Select language:", "current_language": "Current language: {language}", "restart_required": "Language changes will take effect after restarting the application.", "english": "English", "spanish": "Español (Spanish)", "portuguese": "Português (Portuguese)", "russian": "Русский (Russian)", "chinese": "中文 (简体) (Chinese Simplified)", "german": "Deutsch (German)", "french": "Français (French)", "hindi": "हिन्दी (Hindi)", "indonesian": "Bahasa Indonesia (Indonesian)", "turkish": "Türkçe (Turkish)", "polish": "Polski (Polish)", "italian": "Italiano (Italian)", "arabic": "العربية (Arabic)", "japanese": "日本語 (Japanese)", "help_text": "Select your preferred language for the interface.", "restart_notice": "Language change will take effect after restarting the application." }, "app": { "title": "YTSage", "version": "v{version}", "ready": "Ready" }, "formats": { "show_formats": "Show Formats:", "video_format": "Video Format:", "audio_format": "Audio Format:", "no_formats": "No formats available", "loading": "Loading formats...", "select": "Select", "quality": "Quality", "extension": "Extension", "resolution": "Resolution", "file_size": "File Size", "codec": "Codec", "audio": "Audio", "fps": "FPS", "hdr": "HDR", "will_merge_audio": "Will merge audio", "has_audio": "✓ Has Audio", "audio_only": "Audio Only", "best_4k": "Best (4K)", "best_2k": "Best (2K)", "high_1080p": "High (1080p)", "high_720p": "High (720p)", "medium_480p": "Medium (480p)", "low_quality": "Low Quality", "best_audio": "Best Audio", "high_audio": "High Audio", "medium_audio": "Medium Audio", "low_audio": "Low Audio", "audio_only_resolution": "Audio only" }, "buttons": { "download": "Download", "pause": "Pause", "resume": "Resume", "cancel": "Cancel", "browse": "Browse", "clear": "Clear", "ok": "OK", "apply": "Apply", "close": "Close", "run_command": "Run Command", "custom_command_help": "Help", "about": "About", "history": "History", "analyze": "Analyze", "paste_url": "Paste URL", "select_videos": "Select Videos...", "video": "Video", "audio_only": "Audio Only", "custom_options": "Custom Options", "trim_video": "Trim Video", "download_settings": "Download Settings", "update": "Update yt-dlp", "select_defaults": "Select Defaults", "select_all": "Select All", "deselect_all": "Deselect All", "open_folder": "Open folder location" }, "dialogs": { "custom_options": "Custom Options", "settings": "Settings", "select_folder": "Select Download Folder", "sponsorblock_categories": "SponsorBlock Categories", "sponsorblock_description": "Select which types of video segments to automatically remove during download.\nSponsorBlock uses community-submitted data to identify these segments.", "select_subtitles": "Select Subtitles", "filter_languages_placeholder": "Filter languages (e.g., en, es)...", "no_subtitles_available": "No subtitles available", "matching": "matching" }, "tabs": { "cookies": "Login with Cookies", "custom_command": "Custom Command", "proxy": "Proxy", "language": "Language", "updater": "Updater" }, "cookies": { "help_text": "Choose how to provide cookies for logging in.\nThis allows downloading of private videos and premium quality audio.", "cookie_source": "Cookie Source", "use_cookie_file": "Use cookie file", "extract_from_browser": "Extract from browser", "recommended": "Recommended", "cookie_file": "Cookie File", "cookie_file_placeholder": "Path to cookies.txt file...", "browser_selection": "Browser Selection", "browser_help": "Select the browser to extract cookies from:", "browser_label": "Browser:", "profile_label": "Profile:", "profile_placeholder": "default", "browser_extract_message": "Browser cookies will be extracted when applied", "file_selected_message": "Cookie file selected - Click OK to apply", "select_file_title": "Select Cookie File", "file_filter": "Cookies files (*.txt *.lwp)", "file_selected_title": "Cookie File Applied", "file_applied_message": "Cookie file applied: {path}", "browser_selected_title": "Browser Cookies Applied", "browser_applied_message": "Browser cookies will be extracted from: {browser}", "cleared_title": "Cookies Cleared", "cleared_message": "Cookie settings have been cleared" }, "custom_command": { "help_text": "Enter your custom yt-dlp command below. The current URL will be appended automatically.

For the full list of options and usage examples, click here to view the official yt-dlp documentation.

Note: Download path and filename template will be handled automatically.", "input_label": "yt-dlp Arguments:", "input_placeholder": "Enter yt-dlp arguments here...\n\ne.g. --extract-audio --audio-format mp3", "output_label": "Command Output:", "output_placeholder": "Command output will appear here...", "command_placeholder": "Enter custom yt-dlp command...", "command_help": "Available placeholders:\n{url} - Video URL\n{output} - Output directory\n\nExample: --write-info-json --write-thumbnail", "full_command": "🔧 Full command: {command}", "command_success": "✅ Custom command completed successfully!", "command_failed": "❌ Command failed with exit code {code}", "command_error": "❌ Error running custom command: {error}" }, "proxy": { "help_text": "Configure proxy settings for downloading. Leave empty to use direct connection.", "main_proxy": "Main Proxy", "main_proxy_help": "Primary proxy server for all downloads. Supports HTTP/HTTPS and SOCKS5 protocols.", "proxy_url_label": "Proxy URL:", "proxy_url_placeholder": "http://proxy:port or socks5://proxy:port", "proxy_examples": "Examples:\n• HTTP: http://proxy.example.com:8080\n• SOCKS5: socks5://proxy.example.com:1080", "geo_proxy": "Geo-bypass Proxy", "geo_proxy_help": "Secondary proxy specifically for bypassing geographic restrictions.", "geo_proxy_url_label": "Geo-bypass Proxy URL:", "geo_proxy_url_placeholder": "http://geo-proxy:port", "clear_main_proxy": "Clear Main Proxy", "clear_geo_proxy": "Clear Geo Proxy", "proxy_url": "Proxy URL", "proxy_placeholder": "http://proxy:port or socks5://proxy:port", "geo_bypass": "Geo-bypass proxy (for geographic restrictions)", "geo_bypass_placeholder": "http://proxy:port for bypassing geo-blocks", "invalid_main_url": "Invalid main proxy URL format", "invalid_geo_url": "Invalid geo proxy URL format", "main_configured": "Main proxy configured", "geo_configured": "Geo proxy configured" }, "download": { "preparing": "Preparing download...", "starting": "🚀 Starting download...", "fetching_info": "🔍 Fetching video information...", "preparing_streams": "🎯 Preparing video streams...", "downloading_audio": "⏬ Downloading audio...", "downloading_video": "⏬ Downloading video...", "downloading_subtitle": "⏬ Downloading subtitle...", "downloading": "⏬ Downloading...", "completed": "✅ Download completed!", "video_completed": "✅ Video download completed!", "audio_completed": "✅ Audio download completed!", "subtitle_completed": "✅ Subtitle download completed!", "completed_cleaning": "✅ Download completed! Cleaning up...", "cancelled": "Download cancelled", "processing_playlist": "📋 Processing playlist data...", "paused": "Download paused", "resumed": "Download resumed", "merging_formats": "✨ Post-processing: Merging formats...", "removing_sponsor_segments": "✨ Post-processing: Removing sponsor segments...", "speed": "Speed", "eta": "ETA", "please_enter_url": "Please enter a URL first.", "please_set_path": "Please set a download path first.", "please_enter_url_and_path": "Please enter a URL and set download path.", "please_select_format": "Please select a format first.", "downloading_fallback": "⚡ Downloading..." }, "update": { "title": "Update yt-dlp", "checking": "Checking for updates...", "update_available": "Update available!\nCurrent version: {current}\nLatest version: {latest}", "up_to_date": "yt-dlp is up to date (version {version})", "already_up_to_date": "✅ yt-dlp is already up to date!", "could_not_determine": "Could not determine versions.", "error_comparing": "Error comparing versions: {error}", "update_available_failed": "Update available! (Comparison failed)\nCurrent: {current}\nLatest: {latest}", "updating": "Updating...", "initializing": "🚀 Initializing update process...", "checking_current": "🔍 Checking current installation...", "found_at": "📍 Found yt-dlp at: {path}", "error_getting_path": "❌ Error getting yt-dlp path: {error}", "updating_binary": "📦 Updating app-managed yt-dlp binary...", "update_failed": "❌ Failed to update yt-dlp. Please try again or check your internet connection.", "binary_updated": "✅ Binary successfully updated!", "update_failed_stderr": "❌ yt-dlp update failed: {error}", "update_timeout": "❌ yt-dlp update timed out.", "unexpected_error": "❌ Unexpected error during update: {error}", "update_success": "✅ yt-dlp has been successfully updated!", "already_latest": "yt-dlp is up to date (version {version})", "network_error": "❌ Network error during update: {error}", "general_error": "❌ Update failed: {error}" }, "about": { "title": "About YTSage", "version": "Version {version}", "description": "Modern YouTube downloader with clean PySide6 interface.", "author": "By: {author}", "github": "GitHub: {repo}", "system_info": "System Information", "loading": "🔄 Loading system information...", "refresh": "🔄", "refreshing": "🔄 Refreshing...", "refresh_failed": "Refresh Failed", "refresh_failed_message": "Could not refresh version information.", "detected": "✓ Detected", "missing": "✗ Missing", "not_available": "Not Available" }, "time_range": { "title": "Trim Video", "time_range_group": "Time Range", "start_time": "Start Time (HH:MM:SS)", "end_time": "End Time (HH:MM:SS)", "start_placeholder": "00:00:00", "end_placeholder": "00:00:00", "start_time_placeholder": "Start time (HH:MM:SS)", "end_time_placeholder": "End time (HH:MM:SS)", "force_keyframes": "Force keyframes at cut points", "help_text": "Set the start and end times to trim the video.\nLeave empty to download the full video.", "invalid_format": "Invalid time format. Use HH:MM:SS format.", "start_after_end": "Start time cannot be after end time." }, "settings": { "title": "Download Settings", "download_path": "Download Path", "browse": "Browse...", "speed_limit": "Speed Limit", "speed_limit_placeholder": "None", "auto_update_ytdlp": "Auto-Update yt-dlp", "enable_auto_updates": "Enable automatic yt-dlp updates", "update_frequency": "Update frequency:", "check_startup": "Check on every startup (minimum 1 hour between checks)", "check_daily": "Check daily", "check_weekly": "Check weekly", "check_updates_now": "Update yt-dlp", "update_check_title": "Update Check", "could_not_determine_version": "Could not determine current yt-dlp version.", "update_available_dialog": "Update available!\n\nCurrent: {current}\nLatest: {latest}\n\nClick OK to proceed with the update.", "up_to_date_dialog": "yt-dlp is up to date!\n\nCurrent version: {version}", "error_checking_updates": "Error checking for updates: {error}", "settings_saved_title": "Settings Saved", "settings_saved_message": "Auto-update settings have been saved successfully!", "error_title": "Error", "failed_save_settings": "Failed to save auto-update settings.", "error_saving_settings": "Error saving auto-update settings: {error}", "ytdlp_channel": "yt-dlp Release Channel", "ytdlp_channel_stable": "Stable (Tested releases)", "ytdlp_channel_nightly": "Nightly (Daily updates, recommended by yt-dlp)", "ytdlp_channel_description": "Choose between stable and nightly releases. Nightly builds are updated daily with the latest fixes and features. You can switch channels at any time.", "ytdlp_switching_channel": "Switching to {channel} channel...", "ytdlp_channel_switched": "✅ Successfully switched to {channel} channel!", "ytdlp_channel_switch_failed": "❌ Failed to switch channel: {error}", "ytdlp_current_channel": "Current channel: {channel}", "auto_update_title": "Auto-Update Settings", "auto_update_header": "🔄 Auto-Update Settings", "auto_update_description": "Configure automatic updates for yt-dlp to ensure you always have the latest features and bug fixes.", "current_status": "Current Status", "current_version_label": "Current yt-dlp version: Checking...", "last_check_label": "Last update check: Never", "next_check_label": "Next check: Based on settings", "manual_check_button": "🔍 Check for Updates Now", "update_frequency_group": "Update Frequency", "save_settings": "Save Settings", "settings_saved_successfully": "✅ Settings saved successfully!", "error_saving": "❌ Error saving settings: {error}", "output_format_settings": "Output Format Settings", "force_output_format": "Force output format when merging", "preferred_format": "Preferred format:", "force_format_help": "When enabled, merged videos will be converted to your preferred format. Disable to let yt-dlp decide automatically.", "format_mp4": "MP4 (Most compatible)", "format_webm": "WebM (Modern, open)", "format_mkv": "MKV (Feature-rich)" }, "main_ui": { "url_placeholder": "Enter YouTube video or playlist URL", "merge_subtitles": "Merge Subtitles", "save_thumbnail": "Save Thumbnail", "save_description": "Save Description", "embed_chapters": "Embed Chapters", "subtitles_selected": "{count} selected", "all_selected": "All selected", "select_videos_all": "Select Videos... (All selected)", "please_enter_url": "Please enter a URL first", "error_title": "Error", "cookie_file_selected_title": "Cookie File Selected", "cookie_file_selected_message": "Cookie file selected: {path}", "browser_cookies_selected_title": "Browser Cookies Selected", "browser_cookies_selected_message": "Browser cookies will be extracted from: {browser}", "error_no_format_info": "Error: No format information available.", "error_extract_info": "Error: Could not extract basic video information. Please check your link.", "analyzing_preparing": "Analyzing (0%)... Preparing request", "analyzing_extracting_basic": "Analyzing (15%)... Extracting basic info", "analyzing_extracting_detailed": "Analyzing (30%)... Extracting detailed info", "analyzing_processing_video": "Analyzing (45%)... Processing video data", "analyzing_processing_formats": "Analyzing (60%)... Processing formats", "analyzing_loading_thumbnail": "Analyzing (75%)... Loading thumbnail", "analyzing_processing_subtitles": "Analyzing (85%)... Processing subtitles", "analyzing_updating_table": "Analyzing (95%)... Updating format table", "analysis_complete": "Analysis complete!", "analyzing_extracting_ytdlp": "Analyzing (30%)... Extracting info with yt-dlp", "analyzing_processing_data": "Analyzing (60%)... Processing data", "analyzing_processing_formats_ytdlp": "Analyzing (75%)... Processing formats", "analyzing_loading_thumbnail_ytdlp": "Analyzing (85%)... Loading thumbnail", "analyzing_processing_subtitles_ytdlp": "Analyzing (90%)... Processing subtitles", "select_subtitles": "Select Subtitles...", "sponsorblock_categories": "SponsorBlock Categories...", "invalid_url_or_enter": "Invalid URL or please enter a URL.", "zero_selected": "0 selected", "analyze_first_tooltip": "Please analyze the video first", "audio_mode_disabled": "Not available in audio-only mode", "select_subtitles_first": "Please select subtitles first" }, "sponsorblock": { "sponsor": "Sponsor", "sponsor_desc": "Paid promotion, paid referrals and direct advertisements", "selfpromo": "Unpaid/Self Promotion", "selfpromo_desc": "Unpaid promotion of creators' own content", "interaction": "Interaction Reminder", "interaction_desc": "Asking viewers to like, subscribe, or follow social media", "intro": "Intro", "intro_desc": "Video introduction that can be skipped", "outro": "Outro/End Cards", "outro_desc": "Credits or when the video ends", "preview": "Preview/Recap", "preview_desc": "Quick recap of previous videos or preview of what's coming up", "music_offtopic": "Non-Music Section", "music_offtopic_desc": "Only for music videos. Marks non-music sections", "filler": "Filler Tangent", "filler_desc": "Tangential scenes added only for filler or humor" }, "video_info": { "channel": "Channel", "views": "Views", "likes": "Likes", "upload_date": "Upload date", "duration": "Duration", "unknown_channel": "Unknown channel", "unknown_date": "Unknown date", "unknown_title": "Unknown title" }, "command": { "running": "Running...", "run_command": "Run Command" }, "selection": { "none_selected": "0 selected", "one_selected": "1 category selected", "count_selected": "{count} selected" }, "status": { "ready": "Ready", "file_exists": "⚠️ File already exists", "video_file_exists": "⚠️ Video file already exists", "audio_file_exists": "⚠️ Audio file already exists", "subtitle_file_exists": "⚠️ Subtitle file already exists", "cancelling": "Cancelling download..." }, "errors": { "playlist_no_videos": "Error: Playlist contains no valid videos.", "playlist_no_url": "Error: Could not get URL for the first playlist video.", "ytdlp_not_found": "Error: yt-dlp executable not found. Please install yt-dlp first.", "ytdlp_not_found_path": "Error: yt-dlp executable not found. This could be due to improper installation or a PATH issue.", "no_data_returned": "Error: No data returned from yt-dlp", "no_format_info": "Error: No format information available.", "analysis_timeout": "Error: Analysis timed out. Please try again.", "invalid_speed_limit": "❌ Error: Invalid speed limit value set in settings.", "ytdlp_failed": "Error: yt-dlp failed: {error}", "parse_failed": "Error: Failed to parse yt-dlp output: {error}", "analysis_failed": "Error: Analysis failed: {error}", "generic_error": "Error: {error}" }, "update_dialog": { "title": "Update Available", "new_version_available": "A new version of YTSage is available!", "current_version_label": "Current version:", "latest_version_label": "Latest version:", "changelog": "Changelog", "download_update": "Download Update", "remind_later": "Remind Me Later" }, "playlist": { "unknown": "Unknown Playlist", "total_videos": "Total Videos: {count}", "display_format": "Playlist: {title} | {count} videos", "select_videos_title": "Select Playlist Videos" }, "subtitle_selection": { "count_selected": "{count} selected" }, "file_exists_dialog": { "title": "File Already Exists", "message": "The file already exists:\n{filename}", "info": "This video has already been downloaded." }, "auto_update": { "last_check_never": "Last update check: Never", "last_check": "Last update check: {time}", "next_check_disabled": "Next check: Disabled", "next_check_startup": "Next check: On next startup", "next_check_overdue": "Next check: Now (overdue)", "next_check": "Next check: {time}", "next_check_error": "Next check: Error calculating", "checking": "🔄 Checking...", "check_now": "🔍 Check for Updates Now" }, "url_validation": { "empty_url": "URL cannot be empty", "invalid_format": "Invalid URL format", "invalid_scheme": "URL must start with http:// or https://", "missing_domain": "Invalid URL: missing domain name", "unsupported_platform": "YTSage only supports YouTube and YouTube Music URLs.\nThe domain '{domain}' is not supported.", "invalid_youtu_be": "Invalid youtu.be URL: missing video ID" }, "ytdlp_errors": { "private_video": "This is a private video. You can download it by logging into your account using cookies.\nGo to 'Custom Options' → 'Login with Cookies' → 'Extract cookies from browser' to authenticate.", "age_restricted": "This video is age-restricted. You need to be logged in to access it.\nUse 'Custom Options' → 'Login with Cookies' to authenticate with your account.", "geo_blocked": "This video is not available in your region (geo-blocked).\nYou may need to use a VPN or the video might be restricted in your country.", "video_unavailable": "This video has been removed or is no longer available.\nThe video may have been deleted by the uploader or removed due to policy violations.", "live_stream": "This is a live stream that cannot be downloaded while active.\nWait for the stream to end, then try downloading the archived version.", "playlist_error": "Unable to access this playlist. It may be private, deleted, or empty.\nCheck if the playlist exists and is publicly accessible.", "network_error": "Network connection error. Please check your internet connection and try again.\nIf the problem persists, the video server might be temporarily unavailable.", "invalid_url": "Invalid or unsupported URL. Please check the link and try again.\nMake sure you're using a valid YouTube, Vimeo, or other supported platform URL.", "premium_content": "This content requires YouTube Premium or channel membership.\nYou need to be logged in with an account that has access to this content.", "copyright_blocked": "This video is blocked due to copyright claims.\nThe content owner has restricted access to this video.", "extraction_failed": "Failed to extract video information. This might be a temporary issue.\nPlease try again in a few minutes, or check if the video link is correct.", "generic_error": "Could not extract video information. Please check your link.\nTechnical details: {error}" }, "history": { "title": "Download History", "clear_all": "Clear All History", "clear_confirm_title": "Clear History?", "clear_confirm_message": "Are you sure you want to clear all download history? This cannot be undone.", "no_history": "No download history yet", "no_history_description": "Your downloaded videos and audio will appear here", "search_placeholder": "Search history...", "open_location": "Open File Location", "redownload": "Redownload", "remove": "Remove from History", "file_not_found": "File not found at original location", "file_not_found_message": "The file was moved or deleted:\n{path}", "downloaded_on": "Downloaded on {date}", "file_size": "Size: {size}", "audio_download": "Audio", "video_download": "Video", "remove_confirm_title": "Remove from History?", "remove_confirm_message": "Remove this item from history?\n\n{title}", "item_removed": "Item removed from history", "history_cleared": "History cleared", "entries_count": "{count} downloads", "one_entry": "1 download", "redownload_confirm_title": "Redownload Video?", "redownload_confirm_message": "Download this video again using the same settings?\n\n{title}", "redownload_started": "Redownload started" }, "ffmpeg_updater": { "title": "FFmpeg Version Checker", "current_version": "Current Version:", "latest_version": "Latest Version:", "status_up_to_date": "✓ Up to date", "status_update_available": "⚠ Update available", "status_not_installed": "✗ Not installed", "status_idle": "Click 'Check Version' to get started", "status_checking": "🔄 Checking version...", "check_updates": "Check Version", "check_failed": "Failed to check version. Please check your internet connection.", "description": "Check your FFmpeg version and compare it with the latest available version.", "guide_info": " To install or update FFmpeg, click here to view our comprehensive installation guide." }, "deno": { "setup_required": "Deno Setup Required", "setup_description": "YTSage requires Deno to run certain features.

Deno was not found in the app's local directory. YTSage needs to set up Deno for your {os_name} system.

Click 'Setup Deno' to download and install automatically.", "setup_button": "Setup Deno", "downloading": "Downloading Deno...", "extracting": "Extracting Deno...", "verifying": "Verifying Deno...", "success": "Deno was successfully installed!", "download_failed": "Download Failed", "download_error": "Failed to download Deno: {error}", "verification_failed": "SHA256 verification failed. The downloaded file may be corrupted or tampered with.", "setup_failed": "Failed to set up Deno. Some features may not work correctly.", "setup_error": "Setup Error" }, "deno_updater": { "title": "Deno Version Checker & Updater", "description": "Check your Deno version and update to the latest release.", "current_version": "Current Version:", "latest_version": "Latest Version:", "status_idle": "Click 'Check for Updates' to get started", "status_checking": "🔄 Checking for updates...", "status_up_to_date": "✓ Up to date", "status_update_available": "⚠ Update available", "status_not_installed": "✗ Not installed", "check_updates": "Check for Updates", "update_now": "Update Deno", "updating": "🔄 Updating Deno...", "update_success": "✅ Deno has been successfully updated!", "update_failed": "❌ Update failed: {error}", "check_failed": "Failed to check for updates. Please check your internet connection." } }