diff --git a/languages/de.json b/languages/de.json index a707cb1..5345c6c 100644 --- a/languages/de.json +++ b/languages/de.json @@ -11,6 +11,7 @@ "chinese": "Chinesisch", "german": "Deutsch", "french": "Französisch", + "hindi": "Hindi", "help_text": "Wählen Sie Ihre bevorzugte Sprache für die Benutzeroberfläche.", "restart_notice": "Die Sprachänderung wird nach dem Neustart der Anwendung wirksam." }, diff --git a/languages/en.json b/languages/en.json index e1b598f..0ba9ccc 100644 --- a/languages/en.json +++ b/languages/en.json @@ -11,6 +11,7 @@ "chinese": "中文 (简体) (Chinese Simplified)", "german": "Deutsch (German)", "french": "Français (French)", + "hindi": "हिन्दी (Hindi)", "help_text": "Select your preferred language for the interface.", "restart_notice": "Language change will take effect after restarting the application." }, diff --git a/languages/es.json b/languages/es.json index c3519f0..d83674e 100644 --- a/languages/es.json +++ b/languages/es.json @@ -10,7 +10,8 @@ "russian": "Русский (Russian)", "chinese": "中文 (简体) (Chinese Simplified)", "german": "Deutsch (German)", - "french": "Français (French)" + "french": "Français (French)", + "hindi": "Hindi" }, "app": { "title": "YTSage", diff --git a/languages/fr.json b/languages/fr.json index 439e03a..3bf1b77 100644 --- a/languages/fr.json +++ b/languages/fr.json @@ -11,6 +11,7 @@ "chinese": "Chinois", "german": "Allemand", "french": "Français", + "hindi": "Hindi", "help_text": "Sélectionnez votre langue préférée pour l'interface.", "restart_notice": "Le changement de langue prendra effet après le redémarrage de l'application." }, diff --git a/languages/hi.json b/languages/hi.json new file mode 100644 index 0000000..0e47e0f --- /dev/null +++ b/languages/hi.json @@ -0,0 +1,332 @@ +{ + "language": { + "display_name": "हिन्दी (Hindi)", + "select_language": "भाषा चुनें:", + "current_language": "वर्तमान भाषा: {language}", + "restart_required": "भाषा परिवर्तन एप्लिकेशन पुनरारंभ के बाद प्रभावी होगा।", + "english": "अंग्रेजी", + "spanish": "स्पेनिश", + "portuguese": "पुर्तगाली", + "russian": "रूसी", + "chinese": "चीनी", + "german": "जर्मन", + "french": "फ्रेंच", + "hindi": "हिन्दी", + "help_text": "इंटरफेस के लिए अपनी पसंदीदा भाषा चुनें।", + "restart_notice": "भाषा परिवर्तन एप्लिकेशन पुनरारंभ के बाद प्रभावी होगा।" + }, + "app": { + "title": "YTSage", + "version": "v{version}", + "ready": "तैयार" + }, + "formats": { + "show_formats": "प्रारूप दिखाएं:", + "video_format": "वीडियो प्रारूप:", + "audio_format": "ऑडियो प्रारूप:", + "no_formats": "कोई प्रारूप उपलब्ध नहीं", + "loading": "प्रारूप लोड हो रहे हैं...", + "select": "चुनें", + "quality": "गुणवत्ता", + "extension": "एक्सटेंशन", + "resolution": "रिज़ॉल्यूशन", + "file_size": "फ़ाइल आकार", + "codec": "कोडेक", + "audio": "ऑडियो", + "notes": "नोट्स", + "will_merge_audio": "ऑडियो मर्ज किया जाएगा", + "has_audio": "✓ ऑडियो है", + "audio_only": "केवल ऑडियो", + "large_size": "बड़ा आकार", + "medium_size": "मध्यम आकार", + "standard_size": "मानक आकार", + "compatible": "संगत", + "efficient": "कुशल", + "high_quality": "उच्च गुणवत्ता", + "best_4k": "सर्वोत्तम (4K)", + "best_2k": "सर्वोत्तम (2K)", + "high_1080p": "उच्च (1080p)", + "high_720p": "उच्च (720p)", + "medium_480p": "मध्यम (480p)", + "low_quality": "निम्न गुणवत्ता", + "best_audio": "सर्वोत्तम ऑडियो", + "high_audio": "उच्च ऑडियो", + "medium_audio": "मध्यम ऑडियो", + "low_audio": "निम्न ऑडियो", + "audio_only_resolution": "केवल ऑडियो" + }, + "buttons": { + "download": "डाउनलोड", + "pause": "रोकें", + "resume": "जारी रखें", + "cancel": "रद्द करें", + "browse": "ब्राउज़", + "clear": "साफ़ करें", + "ok": "ठीक है", + "apply": "लागू करें", + "close": "बंद करें", + "run_command": "कमांड चलाएं", + "custom_command_help": "सहायता", + "about": "के बारे में", + "analyze": "विश्लेषण", + "paste_url": "URL पेस्ट करें", + "select_videos": "वीडियो चुनें...", + "video": "वीडियो", + "audio_only": "केवल ऑडियो", + "custom_options": "कस्टम विकल्प", + "trim_video": "वीडियो ट्रिम करें", + "download_settings": "डाउनलोड सेटिंग्स", + "update": "yt-dlp अपडेट करें", + "select_defaults": "डिफ़ॉल्ट चुनें", + "select_all": "सभी चुनें", + "deselect_all": "सभी को अचयनित करें" + }, + "dialogs": { + "custom_options": "कस्टम विकल्प", + "settings": "सेटिंग्स", + "select_folder": "डाउनलोड फ़ोल्डर चुनें", + "sponsorblock_categories": "SponsorBlock श्रेणियां", + "sponsorblock_description": "डाउनलोड के दौरान अपने आप हटाए जाने वाले वीडियो सेगमेंट के प्रकार चुनें।\nSponsorBlock इन सेगमेंट की पहचान के लिए समुदाय द्वारा प्रस्तुत डेटा का उपयोग करता है।", + "select_subtitles": "उपशीर्षक चुनें", + "filter_languages_placeholder": "भाषाएं फ़िल्टर करें (जैसे: hi, en)...", + "no_subtitles_available": "कोई उपशीर्षक उपलब्ध नहीं", + "matching": "मेल खाता" + }, + "tabs": { + "cookies": "कुकीज़ के साथ लॉगिन", + "custom_command": "कस्टम कमांड", + "proxy": "प्रॉक्सी", + "language": "भाषा" + }, + "cookies": { + "help_text": "प्रमाणीकरण के लिए कुकीज़ प्रदान करने का तरीका चुनें।\nयह निजी वीडियो और उच्च गुणवत्ता वाली ऑडियो फ़ाइलें डाउनलोड करने की अनुमति देता है।", + "cookie_source": "कुकी स्रोत", + "use_cookie_file": "कुकी फ़ाइल का उपयोग करें", + "extract_from_browser": "ब्राउज़र से निकालें", + "cookie_file": "कुकी फ़ाइल", + "cookie_file_placeholder": "cookies.txt फ़ाइल का पथ...", + "browser_selection": "ब्राउज़र चयन", + "browser_help": "वह ब्राउज़र चुनें जिससे कुकीज़ निकालनी हैं:", + "browser_label": "ब्राउज़र:", + "profile_label": "प्रोफ़ाइल:", + "profile_placeholder": "डिफ़ॉल्ट", + "browser_extract_message": "लागू करने पर ब्राउज़र कुकीज़ निकाली जाएंगी", + "file_selected_message": "कुकी फ़ाइल चुनी गई - लागू करने के लिए OK दबाएं", + "select_file_title": "कुकी फ़ाइल चुनें", + "file_filter": "कुकी फ़ाइलें (*.txt *.lwp)" + }, + "custom_command": { + "help_text": "नीचे अपना कस्टम yt-dlp कमांड दर्ज करें। वर्तमान URL स्वचालित रूप से जोड़ा जाएगा।

विकल्पों की पूरी सूची और उपयोग के उदाहरणों के लिए आधिकारिक yt-dlp दस्तावेज़ देखने के लिए यहाँ क्लिक करें

नोट: डाउनलोड पथ और फ़ाइलनाम टेम्प्लेट स्वचालित रूप से संभाले जाते हैं।", + "input_label": "yt-dlp आर्गुमेंट्स:", + "input_placeholder": "यहाँ yt-dlp आर्गुमेंट्स दर्ज करें...\n\nउदाहरण: --extract-audio --audio-format mp3", + "output_label": "कमांड आउटपुट:", + "output_placeholder": "कमांड आउटपुट यहाँ दिखाई देगा...", + "command_placeholder": "कस्टम yt-dlp कमांड दर्ज करें...", + "command_help": "उपलब्ध प्लेसहोल्डर:\n{url} - वीडियो URL\n{output} - आउटपुट फ़ोल्डर\n\nउदाहरण: --write-info-json --write-thumbnail", + "full_command": "🔧 पूरा कमांड: {command}", + "command_success": "✅ कस्टम कमांड सफलतापूर्वक निष्पादित!", + "command_failed": "❌ कमांड असफल, एग्जिट कोड {code}", + "command_error": "❌ कस्टम कमांड निष्पादित करने में त्रुटि: {error}" + }, + "proxy": { + "help_text": "डाउनलोड के लिए प्रॉक्सी सेटिंग्स कॉन्फ़िगर करें। प्रत्यक्ष कनेक्शन के लिए खाली छोड़ें।", + "main_proxy": "मुख्य प्रॉक्सी", + "main_proxy_help": "सभी डाउनलोड के लिए प्राथमिक प्रॉक्सी सर्वर। HTTP/HTTPS और SOCKS5 प्रोटोकॉल समर्थित।", + "proxy_url_label": "प्रॉक्सी URL:", + "proxy_url_placeholder": "http://proxy:port या socks5://proxy:port", + "proxy_examples": "उदाहरण:\n• HTTP: http://proxy.example.com:8080\n• SOCKS5: socks5://proxy.example.com:1080", + "geo_proxy": "भू-बाईपास प्रॉक्सी", + "geo_proxy_help": "भौगोलिक प्रतिबंधों को बायपास करने के लिए द्वितीयक प्रॉक्सी।", + "geo_proxy_url_label": "भू-बाईपास प्रॉक्सी URL:", + "geo_proxy_url_placeholder": "http://geo-proxy:port", + "clear_main_proxy": "मुख्य प्रॉक्सी साफ़ करें", + "clear_geo_proxy": "भू-प्रॉक्सी साफ़ करें", + "proxy_url": "प्रॉक्सी URL", + "proxy_placeholder": "http://proxy:port या socks5://proxy:port", + "geo_bypass": "भू-बाईपास प्रॉक्सी (भौगोलिक प्रतिबंधों के लिए)", + "geo_bypass_placeholder": "http://proxy:port भू-ब्लॉकिंग बायपास के लिए", + "invalid_main_url": "अमान्य मुख्य प्रॉक्सी URL प्रारूप", + "invalid_geo_url": "अमान्य भू-प्रॉक्सी URL प्रारूप", + "main_configured": "मुख्य प्रॉक्सी कॉन्फ़िगर की गई", + "geo_configured": "भू-प्रॉक्सी कॉन्फ़िगर की गई" + }, + "download": { + "preparing": "डाउनलोड तैयार हो रहा है...", + "please_enter_url": "कृपया पहले URL दर्ज करें।", + "please_set_path": "कृपया पहले डाउनलोड पथ सेट करें।", + "please_enter_url_and_path": "कृपया URL दर्ज करें और डाउनलोड पथ सेट करें।", + "please_select_format": "कृपया पहले प्रारूप चुनें।" + }, + "update": { + "title": "yt-dlp अपडेट करें", + "checking": "अपडेट की जांच हो रही है...", + "update_available": "अपडेट उपलब्ध!\nवर्तमान संस्करण: {current}\nनवीनतम संस्करण: {latest}", + "up_to_date": "yt-dlp अप टू डेट है (संस्करण {version})", + "could_not_determine": "संस्करण निर्धारित नहीं हो सके।", + "error_comparing": "संस्करण तुलना में त्रुटि: {error}", + "update_available_failed": "अपडेट उपलब्ध! (तुलना असफल)\nवर्तमान: {current}\nनवीनतम: {latest}", + "updating": "अपडेट हो रहा है...", + "initializing": "🚀 अपडेट प्रक्रिया प्रारंभ हो रही है...", + "checking_current": "🔍 वर्तमान इंस्टॉलेशन की जांच हो रही है...", + "found_at": "📍 yt-dlp मिला: {path}", + "error_getting_path": "❌ yt-dlp पथ प्राप्त करने में त्रुटि: {error}", + "updating_binary": "📦 ऐप-प्रबंधित yt-dlp बाइनरी अपडेट हो रही है...", + "updating_pip": "🐍 pip के माध्यम से सिस्टम yt-dlp अपडेट हो रहा है...", + "update_failed": "❌ yt-dlp अपडेट असफल। कृपया पुनः प्रयास करें या अपना इंटरनेट कनेक्शन जांचें।", + "binary_updated": "✅ बाइनरी सफलतापूर्वक अपडेट हुई!", + "update_failed_stderr": "❌ yt-dlp अपडेट असफल: {error}", + "update_timeout": "❌ yt-dlp अपडेट टाइमआउट।", + "unexpected_error": "❌ अपडेट के दौरान अनपेक्षित त्रुटि: {error}", + "checking_pip": "🔍 वर्तमान pip इंस्टॉलेशन की जांच हो रही है...", + "current_version": "📋 वर्तमान संस्करण: {version}", + "not_found_pip": "⚠️ pip के माध्यम से yt-dlp नहीं मिला, इंस्टॉल करने का प्रयास हो रहा है...", + "checking_latest": "🌐 नवीनतम संस्करण की जांच हो रही है...", + "failed_check_updates": "❌ अपडेट जांच असफल", + "latest_version": "🆕 नवीनतम संस्करण: {version}", + "updating_from_to": "⬆️ {current} से {latest} पर अपडेट हो रहा है...", + "running_pip_install": "📦 pip install --upgrade चल रहा है...", + "pip_completed": "✅ Pip अपडेट सफलतापूर्वक पूर्ण!", + "pip_failed": "❌ Pip अपडेट असफल: {error}" + }, + "about": { + "title": "YTSage के बारे में", + "version": "संस्करण {version}", + "description": "साफ PySide6 इंटरफेस के साथ आधुनिक YouTube डाउनलोडर।", + "author": "द्वारा: {author}", + "github": "GitHub: {repo}", + "system_info": "सिस्टम जानकारी", + "loading": "🔄 सिस्टम जानकारी लोड हो रही है...", + "refresh": "🔄", + "refreshing": "🔄 रिफ्रेश हो रहा है...", + "refresh_failed": "रिफ्रेश असफल", + "refresh_failed_message": "संस्करण जानकारी रिफ्रेश करने में असमर्थ।", + "detected": "✓ पता चला", + "missing": "✗ गुम", + "not_available": "उपलब्ध नहीं" + }, + "time_range": { + "title": "वीडियो ट्रिम करें", + "time_range_group": "समय सीमा", + "start_time": "प्रारंभ समय (HH:MM:SS)", + "end_time": "समाप्ति समय (HH:MM:SS)", + "start_placeholder": "00:00:00", + "end_placeholder": "00:00:00", + "start_time_placeholder": "प्रारंभ समय (HH:MM:SS)", + "end_time_placeholder": "समाप्ति समय (HH:MM:SS)", + "force_keyframes": "कट पॉइंट्स पर कीफ्रेम्स को बाध्य करें", + "help_text": "वीडियो ट्रिम करने के लिए प्रारंभ और समाप्ति समय सेट करें।\nपूरा वीडियो डाउनलोड करने के लिए खाली छोड़ें।", + "invalid_format": "अमान्य समय प्रारूप। HH:MM:SS प्रारूप का उपयोग करें।", + "start_after_end": "प्रारंभ समय समाप्ति समय के बाद नहीं हो सकता।" + }, + "settings": { + "title": "डाउनलोड सेटिंग्स", + "download_path": "डाउनलोड पथ", + "browse": "ब्राउज़ करें...", + "speed_limit": "गति सीमा", + "speed_limit_placeholder": "कोई नहीं", + "auto_update_ytdlp": "yt-dlp स्वचालित अपडेट", + "enable_auto_updates": "yt-dlp स्वचालित अपडेट सक्षम करें", + "update_frequency": "अपडेट आवृत्ति:", + "check_startup": "हर स्टार्टअप पर जांचें (जांच के बीच कम से कम 1 घंटा)", + "check_daily": "दैनिक जांचें", + "check_weekly": "साप्ताहिक जांचें", + "check_updates_now": "अभी अपडेट की जांच करें", + "update_check_title": "अपडेट जांच", + "could_not_determine_version": "वर्तमान yt-dlp संस्करण निर्धारित नहीं हो सका।", + "update_available_dialog": "अपडेट उपलब्ध!\n\nवर्तमान: {current}\nनवीनतम: {latest}\n\nअपडेट करने के लिए मुख्य विंडो में 'yt-dlp अपडेट करें' बटन का उपयोग करें।", + "up_to_date_dialog": "yt-dlp अप टू डेट है!\n\nवर्तमान संस्करण: {version}", + "error_checking_updates": "अपडेट जांचने में त्रुटि: {error}", + "settings_saved_title": "सेटिंग्स सेव की गईं", + "settings_saved_message": "स्वचालित अपडेट सेटिंग्स सफलतापूर्वक सेव हुईं!", + "error_title": "त्रुटि", + "failed_save_settings": "स्वचालित अपडेट सेटिंग्स सेव करना असफल।", + "error_saving_settings": "स्वचालित अपडेट सेटिंग्स सेव करने में त्रुटि: {error}", + "auto_update_title": "स्वचालित अपडेट सेटिंग्स", + "auto_update_header": "🔄 स्वचालित अपडेट सेटिंग्स", + "auto_update_description": "yt-dlp के लिए स्वचालित अपडेट कॉन्फ़िगर करें ताकि आपके पास हमेशा नवीनतम सुविधाएं और बग फिक्स हों।", + "current_status": "वर्तमान स्थिति", + "current_version_label": "वर्तमान yt-dlp संस्करण: जांच रहे हैं...", + "last_check_label": "अंतिम अपडेट जांच: कभी नहीं", + "next_check_label": "अगली जांच: सेटिंग्स के आधार पर", + "manual_check_button": "🔍 अभी अपडेट की जांच करें", + "update_frequency_group": "अपडेट आवृत्ति", + "save_settings": "सेटिंग्स सेव करें", + "settings_saved_successfully": "✅ सेटिंग्स सफलतापूर्वक सेव हुईं!", + "error_saving": "❌ सेटिंग्स सेव करने में त्रुटि: {error}" + }, + "main_ui": { + "url_placeholder": "YouTube वीडियो या प्लेलिस्ट URL दर्ज करें", + "merge_subtitles": "उपशीर्षक मर्ज करें", + "save_thumbnail": "थंबनेल सेव करें", + "save_description": "विवरण सेव करें", + "embed_chapters": "चैप्टर एम्बेड करें", + "subtitles_selected": "{count} चुना गया", + "all_selected": "सभी चुने गए", + "select_videos_all": "वीडियो चुनें... (सभी चुने गए)", + "please_enter_url": "कृपया पहले URL दर्ज करें", + "cookie_file_selected_title": "कुकी फ़ाइल चुनी गई", + "cookie_file_selected_message": "कुकी फ़ाइल चुनी गई: {path}", + "browser_cookies_selected_title": "ब्राउज़र कुकीज़ चुनी गईं", + "browser_cookies_selected_message": "ब्राउज़र कुकीज़ निकाली जाएंगी: {browser}", + "error_no_format_info": "त्रुटि: कोई प्रारूप जानकारी उपलब्ध नहीं।", + "error_extract_info": "त्रुटि: बुनियादी वीडियो जानकारी निकालने में असमर्थ। कृपया अपना लिंक जांचें।", + "analyzing_preparing": "विश्लेषण (0%)... अनुरोध तैयार हो रहा है", + "analyzing_extracting_basic": "विश्लेषण (15%)... बुनियादी जानकारी निकाली जा रही है", + "analyzing_extracting_detailed": "विश्लेषण (30%)... विस्तृत जानकारी निकाली जा रही है", + "analyzing_processing_video": "विश्लेषण (45%)... वीडियो डेटा प्रोसेस हो रहा है", + "analyzing_processing_formats": "विश्लेषण (60%)... प्रारूप प्रोसेस हो रहे हैं", + "analyzing_loading_thumbnail": "विश्लेषण (75%)... थंबनेल लोड हो रहा है", + "analyzing_processing_subtitles": "विश्लेषण (85%)... उपशीर्षक प्रोसेस हो रहे हैं", + "analyzing_updating_table": "विश्लेषण (95%)... प्रारूप तालिका अपडेट हो रही है", + "analysis_complete": "विश्लेषण पूर्ण!", + "analyzing_extracting_ytdlp": "विश्लेषण (30%)... yt-dlp executable के साथ जानकारी निकाली जा रही है", + "analyzing_processing_data": "विश्लेषण (60%)... डेटा प्रोसेस हो रहा है", + "analyzing_processing_formats_ytdlp": "विश्लेषण (75%)... प्रारूप प्रोसेस हो रहे हैं", + "analyzing_loading_thumbnail_ytdlp": "विश्लेषण (85%)... थंबनेल लोड हो रहा है", + "analyzing_processing_subtitles_ytdlp": "विश्लेषण (90%)... उपशीर्षक प्रोसेस हो रहे हैं", + "select_subtitles": "उपशीर्षक चुनें...", + "sponsorblock_categories": "SponsorBlock श्रेणियां..." + }, + "sponsorblock": { + "sponsor": "प्रायोजक", + "sponsor_desc": "पेड विज्ञापन, पेड सिफारिशें और प्रत्यक्ष विज्ञापन", + "selfpromo": "अवैतनिक/स्व-प्रचार", + "selfpromo_desc": "निर्माता की अपनी सामग्री के लिए अवैतनिक प्रचार", + "interaction": "इंटरैक्शन रिमाइंडर", + "interaction_desc": "दर्शकों से लाइक, सब्स्क्राइब या सोशल मीडिया फॉलो करने के लिए कहा जाता है", + "intro": "परिचय", + "intro_desc": "वीडियो परिचय जिसे छोड़ा जा सकता है", + "outro": "आउट्रो/एंड कार्ड", + "outro_desc": "क्रेडिट या जब वीडियो समाप्त होता है", + "preview": "पूर्वावलोकन/सारांश", + "preview_desc": "पिछले वीडियो का संक्षिप्त सारांश या आगामी सामग्री का पूर्वावलोकन", + "music_offtopic": "गैर-संगीत खंड", + "music_offtopic_desc": "केवल संगीत वीडियो के लिए। गैर-संगीत खंडों को चिह्नित करता है", + "filler": "फिलर टैंजेंट", + "filler_desc": "केवल फिलर या हास्य के लिए जोड़े गए विचलन दृश्य" + }, + "video_info": { + "channel": "चैनल", + "views": "दृश्य", + "likes": "पसंद", + "upload_date": "अपलोड दिनांक", + "duration": "अवधि", + "unknown_channel": "अज्ञात चैनल", + "unknown_date": "अज्ञात दिनांक", + "unknown_title": "अज्ञात शीर्षक" + }, + "command": { + "running": "चल रहा है...", + "run_command": "कमांड चलाएं" + }, + "selection": { + "none_selected": "0 चुना गया", + "one_selected": "1 श्रेणी चुनी गई", + "count_selected": "{count} चुने गए" + }, + "status": { + "ready": "तैयार", + "file_exists": "⚠️ फ़ाइल पहले से मौजूद है", + "cancelling": "डाउनलोड रद्द हो रहा है..." + } +} \ No newline at end of file diff --git a/languages/pt.json b/languages/pt.json index 6bc935e..51926f9 100644 --- a/languages/pt.json +++ b/languages/pt.json @@ -11,6 +11,7 @@ "chinese": "中文 (简体) (Chinese Simplified)", "german": "Alemão", "french": "Francês", + "hindi": "Hindi", "help_text": "Selecione seu idioma preferido para a interface.", "restart_notice": "A alteração de idioma terá efeito após reiniciar a aplicação." }, diff --git a/languages/ru.json b/languages/ru.json index b4db0ca..8496465 100644 --- a/languages/ru.json +++ b/languages/ru.json @@ -11,6 +11,7 @@ "chinese": "中文 (简体) (Chinese Simplified)", "german": "Немецкий", "french": "Французский", + "hindi": "Хинди", "help_text": "Выберите предпочитаемый язык для интерфейса.", "restart_notice": "Изменение языка вступит в силу после перезапуска приложения." }, diff --git a/languages/zh.json b/languages/zh.json index b89adc3..22fbd41 100644 --- a/languages/zh.json +++ b/languages/zh.json @@ -11,6 +11,7 @@ "chinese": "中文", "german": "德语", "french": "法语", + "hindi": "印地语", "help_text": "选择您喜欢的界面语言。", "restart_notice": "语言更改将在重启应用程序后生效。" }, diff --git a/src/gui/ytsage_gui_format_table.py b/src/gui/ytsage_gui_format_table.py index f04f86b..c95f9e5 100644 --- a/src/gui/ytsage_gui_format_table.py +++ b/src/gui/ytsage_gui_format_table.py @@ -266,13 +266,13 @@ class FormatTableMixin: quality_item = QTableWidgetItem(quality_text) # Set color based on quality (check English, Spanish, Portuguese, Russian, Chinese, German, and French terms) quality_lower = quality_text.lower() # Make comparison case-insensitive - if any(term.lower() in quality_lower for term in ["Best", "Óptima", "Mejor", "Melhor", "Лучшее", "最佳", "Beste", "Meilleure"]): + if any(term.lower() in quality_lower for term in ["Best", "Óptima", "Mejor", "Melhor", "Лучшее", "最佳", "Beste", "Meilleure", "सर्वोत्तम"]): quality_item.setForeground(QColor("#00ff00")) # Green for best quality - elif any(term.lower() in quality_lower for term in ["High", "Alta", "Alto", "Áudio Alto", "Audio Alto", "Высокое", "高清", "高质量", "Hoch", "Haute", "Élevé", "Audio élevé"]): + elif any(term.lower() in quality_lower for term in ["High", "Alta", "Alto", "Áudio Alto", "Audio Alto", "Высокое", "高清", "高质量", "Hoch", "Haute", "Élevé", "Audio élevé", "उच्च", "उच्च ऑडियो"]): quality_item.setForeground(QColor("#00cc00")) # Light green for high quality - elif any(term.lower() in quality_lower for term in ["Medium", "Media", "Medio", "Média", "Áudio Médio", "Audio Medio", "Среднее", "中等", "Mittel", "Moyenne", "Audio moyen"]): + elif any(term.lower() in quality_lower for term in ["Medium", "Media", "Medio", "Média", "Áudio Médio", "Audio Medio", "Среднее", "中等", "Mittel", "Moyenne", "Audio moyen", "मध्यम", "मध्यम ऑडियो"]): quality_item.setForeground(QColor("#ffaa00")) # Orange for medium quality - elif any(term.lower() in quality_lower for term in ["Low", "Baja", "Bajo", "Baixa", "Áudio Baixo", "Audio Bajo", "Низкое", "低质量", "Niedrig", "Niedriges Audio", "Faible", "Audio faible", "Qualité faible"]): + elif any(term.lower() in quality_lower for term in ["Low", "Baja", "Bajo", "Baixa", "Áudio Baixo", "Audio Bajo", "Низкое", "低质量", "Niedrig", "Niedriges Audio", "Faible", "Audio faible", "Qualité faible", "निम्न", "निम्न ऑडियो", "निम्न गुणवत्ता"]): quality_item.setForeground(QColor("#ff5555")) # Red for low quality self.format_table.setItem(row, 1, quality_item) diff --git a/src/utils/ytsage_localization.py b/src/utils/ytsage_localization.py index 5826694..a424c29 100644 --- a/src/utils/ytsage_localization.py +++ b/src/utils/ytsage_localization.py @@ -86,7 +86,8 @@ class LocalizationManager: "russian": "Русский (Russian)", "chinese": "中文 (简体) (Chinese Simplified)", "german": "Deutsch (German)", - "french": "Français (French)" + "french": "Français (French)", + "hindi": "हिन्दी (Hindi)" }, "download": { "preparing": "🚀 Preparing your download...",