b9e8e34e8f
Introduces Indonesian translations by adding languages/id.json and updating all language files to include 'indonesian' in the language selection. Updates format table color logic in ytsage_gui_format_table.py to recognize Indonesian quality terms. Also updates ytsage_localization.py to include Indonesian in the default language list.
334 lines
15 KiB
JSON
334 lines
15 KiB
JSON
{
|
|
"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)",
|
|
"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",
|
|
"notes": "Notes",
|
|
"will_merge_audio": "Will merge audio",
|
|
"has_audio": "✓ Has Audio",
|
|
"audio_only": "Audio Only",
|
|
"large_size": "Large size",
|
|
"medium_size": "Medium size",
|
|
"standard_size": "Standard size",
|
|
"compatible": "Compatible",
|
|
"efficient": "Efficient",
|
|
"high_quality": "High quality",
|
|
"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",
|
|
"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"
|
|
},
|
|
"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"
|
|
},
|
|
"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",
|
|
"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)"
|
|
},
|
|
"custom_command": {
|
|
"help_text": "Enter your custom yt-dlp command below. The current URL will be appended automatically.<br><br>For the full list of options and usage examples, <a href=\"{docs_url}\">click here to view the official yt-dlp documentation</a>.<br><br>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...",
|
|
"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."
|
|
},
|
|
"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})",
|
|
"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...",
|
|
"updating_pip": "🐍 Updating system yt-dlp via pip...",
|
|
"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}",
|
|
"checking_pip": "🔍 Checking current pip installation...",
|
|
"current_version": "📋 Current version: {version}",
|
|
"not_found_pip": "⚠️ yt-dlp not found via pip, attempting installation...",
|
|
"checking_latest": "🌐 Checking for latest version...",
|
|
"failed_check_updates": "❌ Failed to check for updates",
|
|
"latest_version": "🆕 Latest version: {version}",
|
|
"updating_from_to": "⬆️ Updating from {current} to {latest}...",
|
|
"running_pip_install": "📦 Running pip install --upgrade...",
|
|
"pip_completed": "✅ Pip update completed successfully!",
|
|
"pip_failed": "❌ Pip 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": "Check for Updates Now",
|
|
"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\nUse the 'Update yt-dlp' button in the main window to 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}",
|
|
"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}"
|
|
},
|
|
"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",
|
|
"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 executable",
|
|
"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..."
|
|
},
|
|
"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",
|
|
"cancelling": "Cancelling download..."
|
|
}
|
|
} |