{
"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": "SageTube",
"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",
"save_playlist": "Save Playlist As",
"reset": "Reset"
},
"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)...",
"filter_playlist_placeholder": "Filter videos...",
"no_subtitles_available": "No subtitles available",
"matching": "matching",
"ytdlp_log_title": "yt-dlp Log"
},
"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",
"active_browser": "✓ Active: Browser cookies ({browser})",
"active_file": "✓ Active: Cookie file ({file})",
"none_active": "○ No cookies active",
"remember_settings": "Remember cookie settings on next startup"
},
"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}",
"error_no_url": "❌ Error: No URL provided. Please enter a URL in the main window.",
"error_no_command": "❌ Error: No command provided. Please enter yt-dlp arguments.",
"executing": "🚀 Executing custom yt-dlp command",
"url_label": "📍 URL: {url}",
"args_label": "⚙️ Arguments: {command}",
"download_path_label": "📁 Download path: {path}",
"separator": "=================================================="
},
"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",
"set_title": "Proxy Set",
"set_message": "Main proxy set and saved: {proxy}",
"geo_set_title": "Geo Proxy Set",
"geo_set_message": "Geo-verification proxy set and saved: {proxy}",
"cleared_title": "Proxy Settings Cleared",
"cleared_message": "All proxy settings have been cleared and saved.",
"saved_main": "Saved main proxy: {proxy}",
"saved_geo": "Saved geo proxy: {proxy}"
},
"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}",
"update_in_progress_title": "Update in Progress",
"update_in_progress_message": "yt-dlp is currently updating. Please wait a moment."
},
"about": {
"title": "About SageTube",
"version": "Version {version}",
"description": "Watch-first YouTube client with embedded mpv playback and yt-dlp downloading. Fork of YTSage by oop7 (MIT).",
"author": "By: {author}",
"github": "GitHub: {repo}",
"system_info": "System Information",
"loading": "🔄 Loading system information...",
"refresh": "🔄",
"open_logs": "📂 Logs",
"logs_tooltip": "Open application logs folder",
"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",
"generic_mode": "Generic Mode",
"enable_generic_mode": "Enable Generic Mode (support non-YouTube sites)",
"generic_mode_help": "Allows downloading from Dailymotion, CBC Gem, and other sites supported by yt-dlp.",
"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}",
"app_updates_title": "SageTube Updates",
"check_app_updates": "Check for SageTube updates on startup",
"check_beta_updates": "Receive Beta Updates",
"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)",
"audio_format_settings": "Audio Format Settings",
"force_audio_format": "Force audio format for audio-only downloads",
"audio_normalization": "Audio Normalization (EBU R128)",
"audio_normalization_help": "When enabled, audio tracks will be normalized. Note: This requires re-encoding, so a specific audio format (like MP3 or M4A) must be forced.",
"filename_format": "Output Filename Format",
"filename_format_help": "Available variables: %(title)s, %(uploader)s, %(upload_date)s, %(resolution)s, %(id)s, %(ext)s, %(playlist_index)s. Standard yt-dlp output template syntax is supported.",
"defaults_settings": "Default Selection Settings",
"default_video_quality": "Default Video Resolution (Height):",
"default_subtitle_language": "Default Subtitle Language(s):",
"defaults_help": "Set your preferred video height and subtitle languages (comma-separated). They will be auto-selected if available.",
"concurrent_fragments": "Concurrent Connections",
"concurrent_fragments_help": "Number of connections per download. Higher values bypass throttling but may cause temporary blocks if set too high. Default: 1.",
"preferred_audio_format": "Preferred audio format:",
"force_audio_format_help": "When enabled, audio-only downloads will be converted to your preferred format. This only applies when downloading audio formats.",
"audio_format_best": "Best (No conversion)",
"audio_format_aac": "AAC (Good for editing)",
"audio_format_mp3": "MP3 (Universal)",
"audio_format_flac": "FLAC (Lossless)",
"audio_format_wav": "WAV (Uncompressed)",
"audio_format_opus": "Opus (Efficient)",
"audio_format_m4a": "M4A (Apple)",
"audio_format_vorbis": "Vorbis (Open)",
"tab_general": "General",
"tab_format": "Format",
"tab_file": "File"
},
"main_ui": {
"url_placeholder": "Enter YouTube video or playlist URL",
"url_placeholder_generic": "Enter video or playlist URL from any supported site",
"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": "Preparing request...",
"analyzing_extracting_basic": "Extracting basic info...",
"analyzing_extracting_detailed": "Extracting detailed info...",
"analyzing_processing_video": "Processing video data...",
"analyzing_processing_formats": "Processing formats...",
"analyzing_loading_thumbnail": "Loading thumbnail...",
"analyzing_processing_subtitles": "Processing subtitles...",
"analyzing_updating_table": "Updating format table...",
"analysis_complete": "Analysis complete!",
"analyzing_extracting_ytdlp": "Extracting info...",
"analyzing_fetching_first_video": "Fetching formats for first video...",
"analyzing_processing_data": "Processing data...",
"analyzing_processing_formats_ytdlp": "Processing formats...",
"analyzing_loading_thumbnail_ytdlp": "Loading thumbnail...",
"analyzing_processing_subtitles_ytdlp": "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",
"settings_tooltip": "Current Path: {path}\nSpeed Limit: {speed_limit}",
"speed_limit_none": "None",
"open_folder_error": "Could not open folder: {error}",
"time_range_set": "Section set: {section}"
},
"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...",
"thumbnail_saved": "✅ Thumbnail saved: {filename}",
"thumbnail_error": "❌ Thumbnail error: {error}",
"thumbnail_no_image": "No thumbnail available to save"
},
"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}",
"private_video": "This video might be private. Please use cookies from the custom options.",
"parse_failed": "Error: Failed to parse yt-dlp output: {error}",
"analysis_failed": "Error: Analysis failed: {error}",
"generic_error": "Error: {error}",
"download_failed_return_code_conflict": "Download failed with return code {return_code}. This may be due to a conflict with multiple yt-dlp installations. Try uninstalling any system-installed yt-dlp (e.g. through snap or apt) and restart the application.",
"download_failed_return_code": "Download failed with return code {return_code}",
"direct_command_error": "Error in direct command: {error}"
},
"update_dialog": {
"title": "Update Available",
"new_version_available": "A new version of SageTube is available!",
"current_version_label": "Current version:",
"latest_version_label": "Latest version:",
"changelog": "Changelog",
"download_update": "Download Update",
"remind_later": "Remind Me Later",
"skip_version": "Skip This Version",
"skip_version_tooltip": "Never offer {version} again. Later versions will still be shown.",
"changelog_unavailable": "No release notes were published for this version."
},
"playlist": {
"unknown": "Unknown Playlist",
"total_videos": "Total Videos: {count}",
"display_format": "Playlist: {title} | {count} videos",
"select_videos_title": "Select Playlist Videos",
"save_as": "Save Playlist As",
"save_success_title": "Success",
"saved_successfully": "Playlist saved successfully.",
"save_error_title": "Save Error",
"no_videos_to_save": "No playlist entries gathered!",
"save_error_msg": "Failed to save playlist."
},
"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",
"current_version": "Current yt-dlp version: {version}"
},
"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",
"loading": "Loading history...",
"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",
"no_url_error": "No URL found in history entry",
"redownload_failed": "Failed to start redownload: {error}"
},
"ffmpeg": {
"installation_title": "FFmpeg Installation",
"installation_message": "YTSage needs FFmpeg to process videos.\n\nChoose an installation option below:",
"install_button": "Install FFmpeg",
"manual_guide": "Manual Guide",
"installation_failed": "FFmpeg installation encountered an issue.",
"already_installed": "FFmpeg is already installed!",
"installation_complete": "Installation complete. You can close this dialog and continue using YTSage.",
"installing": "Installing FFmpeg... Please wait",
"install_success": "FFmpeg has been installed successfully!",
"installation_complete_close": "Installation complete. You can now close this dialog and continue using YTSage.",
"try_manual": "Please try using the manual installation guide instead."
},
"ytdlp_setup": {
"required_title": "yt-dlp Setup Required",
"description": "YTSage requires yt-dlp to download videos.
yt-dlp was not found in the app's local directory. YTSage needs to set up yt-dlp for your {os_name} system.
Please choose an option below:",
"option_auto": "Download automatically (Recommended)",
"option_manual": "Select path manually",
"setup_button": "Setup yt-dlp",
"downloading": "Downloading yt-dlp...",
"success": "yt-dlp was successfully installed!",
"error": "Error: {error}",
"download_failed_title": "Download Failed",
"download_failed_message": "Failed to download yt-dlp: {error}",
"select_executable_title": "Select yt-dlp executable",
"copied_to": "yt-dlp successfully copied to {path}",
"setup_error_title": "Setup Error",
"copy_error": "Error copying yt-dlp to app directory: {error}",
"invalid_executable_title": "Invalid Executable",
"invalid_executable_message": "The selected file does not appear to be a valid yt-dlp executable.",
"verify_error": "Error verifying yt-dlp executable: {error}",
"setup_failed_title": "Setup Failed",
"setup_failed_message": "Failed to set up yt-dlp. Some features may not work correctly.",
"success_dialog_title": "yt-dlp Setup",
"success_dialog_message": "yt-dlp has been successfully configured at:\n{path}",
"file_filter_windows": "Executable Files (*.exe)",
"file_filter_all": "All Files (*)"
},
"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."
},
"player": {
"quality_auto": "Auto",
"subtitles": "CC",
"unavailable": "Video player unavailable",
"now_playing": "Now Playing",
"queue": "Queue",
"play": "Play",
"pause": "Pause",
"stream_stalled": "Stream failed to start after several attempts - YouTube may be throttling. Try again or pick a lower quality.",
"play_pause": "Play / pause (Space)",
"fullscreen": "Fullscreen (F)",
"seek_tooltip": "Seek through the video",
"quality_tooltip": "Maximum playback resolution",
"speed_tooltip": "Playback speed",
"volume_tooltip": "Volume",
"subtitles_tooltip": "Toggle subtitles (C)",
"previous": "Previous in queue (P)",
"next": "Next in queue (N)",
"buffering": "Buffering…",
"act_play_pause": "Play / pause",
"act_seek_back_5": "Back 5 seconds",
"act_seek_fwd_5": "Forward 5 seconds",
"act_seek_back_10": "Back 10 seconds",
"act_seek_fwd_10": "Forward 10 seconds",
"act_seek_back_1": "Back 1 second",
"act_seek_fwd_1": "Forward 1 second",
"act_frame_back": "Previous frame",
"act_frame_fwd": "Next frame",
"act_vol_up": "Volume up",
"act_vol_down": "Volume down",
"act_mute": "Mute",
"act_unmute": "Unmute",
"act_speed_up": "Speed up",
"act_speed_down": "Slow down",
"act_speed_reset": "Normal speed",
"act_subtitles": "Subtitles on / off",
"act_fullscreen": "Fullscreen",
"act_leave_fullscreen": "Leave fullscreen",
"act_next": "Next in queue",
"act_previous": "Previous",
"act_start": "Back to start",
"act_end": "Jump to end",
"act_copy_url": "Copy video link",
"act_open_browser": "Open in browser"
},
"cards": {
"play": "▶ Play",
"queue": "+ Queue",
"download": "⬇",
"load_more": "Load more",
"empty": "Nothing here yet",
"play_tooltip": "Play this video now",
"queue_tooltip": "Add to the play queue",
"download_tooltip": "Open in Downloads with this video ready to analyse",
"load_more_tooltip": "Load the next page of results"
},
"main_tabs": {
"watch": "Watch",
"search": "Search",
"feed": "Feed",
"browse": "Browse",
"downloads": "Downloads"
},
"search": {
"placeholder": "Search YouTube...",
"button": "Search",
"searching": "Searching...",
"results_count": "{count} results",
"failed": "Search failed: {error}",
"button_tooltip": "Search YouTube"
},
"watch": {
"clear_queue": "Clear queue"
},
"browse": {
"placeholder": "Paste a channel or playlist URL...",
"open": "Open",
"subscribe": "Subscribe",
"unsubscribe": "Unsubscribe",
"play_all": "Play all",
"download_playlist": "Download",
"tab_videos": "Videos",
"tab_shorts": "Shorts",
"tab_live": "Live",
"loading": "Loading...",
"entry_count": "{count} videos",
"failed": "Failed to load: {error}",
"hint": "Open a channel (youtube.com/@name) or playlist URL, or navigate here from Search.",
"open_tooltip": "Open this channel or playlist",
"subscribe_tooltip": "Follow this channel so its uploads appear in your Feed",
"unsubscribe_tooltip": "Stop following this channel",
"play_all_tooltip": "Queue everything loaded here",
"download_playlist_tooltip": "Open this playlist in Downloads",
"queued_loaded": "Queued {count} loaded videos — press Load more first to queue the rest"
},
"feed": {
"mode_local": "Local subscriptions",
"mode_account": "YouTube account (cookies)",
"refresh": "Refresh",
"subscriptions": "Subscriptions",
"no_subscriptions": "No subscriptions yet - subscribe from a channel page in Browse",
"refreshing": "Refreshing... {done}/{total}",
"refreshed": "{count} videos in feed",
"channel_failed": "A channel failed to refresh: {error}",
"fetching_account": "Fetching your subscription feed...",
"account_failed": "Account feed failed (are cookies valid?): {error}",
"subscribed": "Subscribed to {title}",
"unsubscribed": "Unsubscribed from {title}",
"open_channel": "Open channel",
"refresh_tooltip": "Fetch the latest uploads from every subscribed channel",
"mode_tooltip": "Where the feed comes from: your local subscriptions, or your signed-in YouTube account",
"refreshed_with_failures": "{count} videos — {failed} channel(s) could not be reached",
"account_needs_refresh": "Press Refresh to load your account feed",
"empty_no_subscriptions": "No subscriptions yet.\n\nFind channels in Search or Browse, then use Subscribe to follow them — their new uploads will appear here.",
"empty_not_refreshed": "Nothing here yet.\n\nPress Refresh to fetch the latest uploads from your subscriptions.",
"sign_in": "Sign in with cookies…",
"sign_in_tooltip": "Use your YouTube account via browser cookies, which enables the account feed",
"account_requires_cookies": "Requires signing in with cookies"
},
"account": {
"signed_out": "Not signed in",
"signed_out_tooltip": "SageTube is not using a YouTube account. Sign in with browser cookies to use your subscription feed and reach age-restricted or members-only videos.",
"signed_in": "Account: {source}",
"signed_in_tooltip": "Using cookies from {source}. Click to change or clear them.",
"source_file": "cookie file"
}
}