Add Indonesian localization and update language support
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.
This commit is contained in:
@@ -12,6 +12,7 @@
|
|||||||
"german": "Deutsch",
|
"german": "Deutsch",
|
||||||
"french": "Französisch",
|
"french": "Französisch",
|
||||||
"hindi": "Hindi",
|
"hindi": "Hindi",
|
||||||
|
"indonesian": "Indonesisch",
|
||||||
"help_text": "Wählen Sie Ihre bevorzugte Sprache für die Benutzeroberfläche.",
|
"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."
|
"restart_notice": "Die Sprachänderung wird nach dem Neustart der Anwendung wirksam."
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
"german": "Deutsch (German)",
|
"german": "Deutsch (German)",
|
||||||
"french": "Français (French)",
|
"french": "Français (French)",
|
||||||
"hindi": "हिन्दी (Hindi)",
|
"hindi": "हिन्दी (Hindi)",
|
||||||
|
"indonesian": "Bahasa Indonesia (Indonesian)",
|
||||||
"help_text": "Select your preferred language for the interface.",
|
"help_text": "Select your preferred language for the interface.",
|
||||||
"restart_notice": "Language change will take effect after restarting the application."
|
"restart_notice": "Language change will take effect after restarting the application."
|
||||||
},
|
},
|
||||||
|
|||||||
+2
-1
@@ -11,7 +11,8 @@
|
|||||||
"chinese": "中文 (简体) (Chinese Simplified)",
|
"chinese": "中文 (简体) (Chinese Simplified)",
|
||||||
"german": "Deutsch (German)",
|
"german": "Deutsch (German)",
|
||||||
"french": "Français (French)",
|
"french": "Français (French)",
|
||||||
"hindi": "Hindi"
|
"hindi": "Hindi",
|
||||||
|
"indonesian": "Indonesio"
|
||||||
},
|
},
|
||||||
"app": {
|
"app": {
|
||||||
"title": "YTSage",
|
"title": "YTSage",
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
"german": "Allemand",
|
"german": "Allemand",
|
||||||
"french": "Français",
|
"french": "Français",
|
||||||
"hindi": "Hindi",
|
"hindi": "Hindi",
|
||||||
|
"indonesian": "Indonésien",
|
||||||
"help_text": "Sélectionnez votre langue préférée pour l'interface.",
|
"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."
|
"restart_notice": "Le changement de langue prendra effet après le redémarrage de l'application."
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
"german": "जर्मन",
|
"german": "जर्मन",
|
||||||
"french": "फ्रेंच",
|
"french": "फ्रेंच",
|
||||||
"hindi": "हिन्दी",
|
"hindi": "हिन्दी",
|
||||||
|
"indonesian": "इंडोनेशियाई",
|
||||||
"help_text": "इंटरफेस के लिए अपनी पसंदीदा भाषा चुनें।",
|
"help_text": "इंटरफेस के लिए अपनी पसंदीदा भाषा चुनें।",
|
||||||
"restart_notice": "भाषा परिवर्तन एप्लिकेशन पुनरारंभ के बाद प्रभावी होगा।"
|
"restart_notice": "भाषा परिवर्तन एप्लिकेशन पुनरारंभ के बाद प्रभावी होगा।"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -0,0 +1,333 @@
|
|||||||
|
{
|
||||||
|
"language": {
|
||||||
|
"display_name": "Bahasa Indonesia (Indonesian)",
|
||||||
|
"select_language": "Pilih Bahasa:",
|
||||||
|
"current_language": "Bahasa saat ini: {language}",
|
||||||
|
"restart_required": "Perubahan bahasa akan berlaku setelah memulai ulang aplikasi.",
|
||||||
|
"english": "Bahasa Inggris",
|
||||||
|
"spanish": "Bahasa Spanyol",
|
||||||
|
"portuguese": "Bahasa Portugis",
|
||||||
|
"russian": "Bahasa Rusia",
|
||||||
|
"chinese": "Bahasa Mandarin",
|
||||||
|
"german": "Bahasa Jerman",
|
||||||
|
"french": "Bahasa Prancis",
|
||||||
|
"hindi": "Bahasa Hindi",
|
||||||
|
"indonesian": "Bahasa Indonesia",
|
||||||
|
"help_text": "Pilih bahasa yang diinginkan untuk antarmuka.",
|
||||||
|
"restart_notice": "Perubahan bahasa akan berlaku setelah memulai ulang aplikasi."
|
||||||
|
},
|
||||||
|
"app": {
|
||||||
|
"title": "YTSage",
|
||||||
|
"version": "v{version}",
|
||||||
|
"ready": "Siap"
|
||||||
|
},
|
||||||
|
"formats": {
|
||||||
|
"show_formats": "Tampilkan format:",
|
||||||
|
"video_format": "Format video:",
|
||||||
|
"audio_format": "Format audio:",
|
||||||
|
"no_formats": "Tidak ada format yang tersedia",
|
||||||
|
"loading": "Memuat format...",
|
||||||
|
"select": "Pilih",
|
||||||
|
"quality": "Kualitas",
|
||||||
|
"extension": "Ekstensi",
|
||||||
|
"resolution": "Resolusi",
|
||||||
|
"file_size": "Ukuran file",
|
||||||
|
"codec": "Codec",
|
||||||
|
"audio": "Audio",
|
||||||
|
"notes": "Catatan",
|
||||||
|
"will_merge_audio": "Audio akan digabungkan",
|
||||||
|
"has_audio": "✓ Memiliki audio",
|
||||||
|
"audio_only": "Audio saja",
|
||||||
|
"large_size": "Ukuran besar",
|
||||||
|
"medium_size": "Ukuran sedang",
|
||||||
|
"standard_size": "Ukuran standar",
|
||||||
|
"compatible": "Kompatibel",
|
||||||
|
"efficient": "Efisien",
|
||||||
|
"high_quality": "Kualitas tinggi",
|
||||||
|
"best_4k": "Terbaik (4K)",
|
||||||
|
"best_2k": "Terbaik (2K)",
|
||||||
|
"high_1080p": "Tinggi (1080p)",
|
||||||
|
"high_720p": "Tinggi (720p)",
|
||||||
|
"medium_480p": "Sedang (480p)",
|
||||||
|
"low_quality": "Kualitas rendah",
|
||||||
|
"best_audio": "Audio terbaik",
|
||||||
|
"high_audio": "Audio tinggi",
|
||||||
|
"medium_audio": "Audio sedang",
|
||||||
|
"low_audio": "Audio rendah",
|
||||||
|
"audio_only_resolution": "Audio saja"
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"download": "Unduh",
|
||||||
|
"pause": "Jeda",
|
||||||
|
"resume": "Lanjutkan",
|
||||||
|
"cancel": "Batal",
|
||||||
|
"browse": "Jelajahi",
|
||||||
|
"clear": "Bersihkan",
|
||||||
|
"ok": "OK",
|
||||||
|
"apply": "Terapkan",
|
||||||
|
"close": "Tutup",
|
||||||
|
"run_command": "Jalankan perintah",
|
||||||
|
"custom_command_help": "Bantuan",
|
||||||
|
"about": "Tentang",
|
||||||
|
"analyze": "Analisis",
|
||||||
|
"paste_url": "Tempel URL",
|
||||||
|
"select_videos": "Pilih video...",
|
||||||
|
"video": "Video",
|
||||||
|
"audio_only": "Audio saja",
|
||||||
|
"custom_options": "Opsi khusus",
|
||||||
|
"trim_video": "Potong video",
|
||||||
|
"download_settings": "Pengaturan unduhan",
|
||||||
|
"update": "Perbarui yt-dlp",
|
||||||
|
"select_defaults": "Pilih default",
|
||||||
|
"select_all": "Pilih semua",
|
||||||
|
"deselect_all": "Batalkan pilihan semua"
|
||||||
|
},
|
||||||
|
"dialogs": {
|
||||||
|
"custom_options": "Opsi khusus",
|
||||||
|
"settings": "Pengaturan",
|
||||||
|
"select_folder": "Pilih folder unduhan",
|
||||||
|
"sponsorblock_categories": "Kategori SponsorBlock",
|
||||||
|
"sponsorblock_description": "Pilih jenis segmen video yang akan dihapus secara otomatis selama pengunduhan.\nSponsorBlock menggunakan data yang dikirimkan komunitas untuk mengidentifikasi segmen ini.",
|
||||||
|
"select_subtitles": "Pilih subtitle",
|
||||||
|
"filter_languages_placeholder": "Filter bahasa (misalnya: id, en)...",
|
||||||
|
"no_subtitles_available": "Tidak ada subtitle yang tersedia",
|
||||||
|
"matching": "yang cocok"
|
||||||
|
},
|
||||||
|
"tabs": {
|
||||||
|
"cookies": "Masuk dengan cookies",
|
||||||
|
"custom_command": "Perintah khusus",
|
||||||
|
"proxy": "Proxy",
|
||||||
|
"language": "Bahasa"
|
||||||
|
},
|
||||||
|
"cookies": {
|
||||||
|
"help_text": "Pilih cara memberikan cookies untuk autentikasi.\nIni memungkinkan pengunduhan video pribadi dan file audio berkualitas tinggi.",
|
||||||
|
"cookie_source": "Sumber cookie",
|
||||||
|
"use_cookie_file": "Gunakan file cookie",
|
||||||
|
"extract_from_browser": "Ekstrak dari browser",
|
||||||
|
"cookie_file": "File cookie",
|
||||||
|
"cookie_file_placeholder": "Jalur ke file cookies.txt...",
|
||||||
|
"browser_selection": "Pilihan browser",
|
||||||
|
"browser_help": "Pilih browser untuk mengekstrak cookies:",
|
||||||
|
"browser_label": "Browser:",
|
||||||
|
"profile_label": "Profil:",
|
||||||
|
"profile_placeholder": "Default",
|
||||||
|
"browser_extract_message": "Cookies browser akan diekstrak saat diterapkan",
|
||||||
|
"file_selected_message": "File cookie dipilih - Klik OK untuk menerapkan",
|
||||||
|
"select_file_title": "Pilih file cookie",
|
||||||
|
"file_filter": "File cookie (*.txt *.lwp)"
|
||||||
|
},
|
||||||
|
"custom_command": {
|
||||||
|
"help_text": "Masukkan perintah yt-dlp khusus Anda di bawah. URL saat ini akan ditambahkan secara otomatis.<br><br>Untuk daftar lengkap opsi dan contoh penggunaan <a href=\"{docs_url}\">klik di sini untuk melihat dokumentasi resmi yt-dlp</a>.<br><br>Catatan: Jalur unduhan dan template nama file ditangani secara otomatis.",
|
||||||
|
"input_label": "Argumen yt-dlp:",
|
||||||
|
"input_placeholder": "Masukkan argumen yt-dlp di sini...\n\nContoh: --extract-audio --audio-format mp3",
|
||||||
|
"output_label": "Output perintah:",
|
||||||
|
"output_placeholder": "Output perintah akan muncul di sini...",
|
||||||
|
"command_placeholder": "Masukkan perintah yt-dlp khusus...",
|
||||||
|
"command_help": "Placeholder yang tersedia:\n{url} - URL video\n{output} - Folder output\n\nContoh: --write-info-json --write-thumbnail",
|
||||||
|
"full_command": "🔧 Perintah lengkap: {command}",
|
||||||
|
"command_success": "✅ Perintah khusus berhasil dijalankan!",
|
||||||
|
"command_failed": "❌ Perintah gagal dengan kode keluar {code}",
|
||||||
|
"command_error": "❌ Kesalahan menjalankan perintah khusus: {error}"
|
||||||
|
},
|
||||||
|
"proxy": {
|
||||||
|
"help_text": "Konfigurasi pengaturan proxy untuk unduhan. Biarkan kosong untuk koneksi langsung.",
|
||||||
|
"main_proxy": "Proxy utama",
|
||||||
|
"main_proxy_help": "Server proxy utama untuk semua unduhan. Mendukung protokol HTTP/HTTPS dan SOCKS5.",
|
||||||
|
"proxy_url_label": "URL Proxy:",
|
||||||
|
"proxy_url_placeholder": "http://proxy:port atau socks5://proxy:port",
|
||||||
|
"proxy_examples": "Contoh:\n• HTTP: http://proxy.example.com:8080\n• SOCKS5: socks5://proxy.example.com:1080",
|
||||||
|
"geo_proxy": "Proxy bypass geografis",
|
||||||
|
"geo_proxy_help": "Proxy sekunder khusus untuk mem-bypass pembatasan geografis.",
|
||||||
|
"geo_proxy_url_label": "URL proxy bypass geografis:",
|
||||||
|
"geo_proxy_url_placeholder": "http://geo-proxy:port",
|
||||||
|
"clear_main_proxy": "Hapus proxy utama",
|
||||||
|
"clear_geo_proxy": "Hapus proxy geografis",
|
||||||
|
"proxy_url": "URL Proxy",
|
||||||
|
"proxy_placeholder": "http://proxy:port atau socks5://proxy:port",
|
||||||
|
"geo_bypass": "Proxy bypass geografis (untuk pembatasan geografis)",
|
||||||
|
"geo_bypass_placeholder": "http://proxy:port untuk mem-bypass geo-blocking",
|
||||||
|
"invalid_main_url": "Format URL proxy utama tidak valid",
|
||||||
|
"invalid_geo_url": "Format URL proxy geografis tidak valid",
|
||||||
|
"main_configured": "Proxy utama dikonfigurasi",
|
||||||
|
"geo_configured": "Proxy geografis dikonfigurasi"
|
||||||
|
},
|
||||||
|
"download": {
|
||||||
|
"preparing": "Mempersiapkan unduhan...",
|
||||||
|
"please_enter_url": "Silakan masukkan URL terlebih dahulu.",
|
||||||
|
"please_set_path": "Silakan atur jalur unduhan terlebih dahulu.",
|
||||||
|
"please_enter_url_and_path": "Silakan masukkan URL dan atur jalur unduhan.",
|
||||||
|
"please_select_format": "Silakan pilih format terlebih dahulu."
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"title": "Perbarui yt-dlp",
|
||||||
|
"checking": "Memeriksa pembaruan...",
|
||||||
|
"update_available": "Pembaruan tersedia!\nVersi saat ini: {current}\nVersi terbaru: {latest}",
|
||||||
|
"up_to_date": "yt-dlp sudah terbaru (Versi {version})",
|
||||||
|
"could_not_determine": "Tidak dapat menentukan versi.",
|
||||||
|
"error_comparing": "Kesalahan membandingkan versi: {error}",
|
||||||
|
"update_available_failed": "Pembaruan tersedia! (Perbandingan gagal)\nSaat ini: {current}\nTerbaru: {latest}",
|
||||||
|
"updating": "Memperbarui...",
|
||||||
|
"initializing": "🚀 Menginisialisasi proses pembaruan...",
|
||||||
|
"checking_current": "🔍 Memeriksa instalasi saat ini...",
|
||||||
|
"found_at": "📍 yt-dlp ditemukan di: {path}",
|
||||||
|
"error_getting_path": "❌ Kesalahan mendapatkan jalur yt-dlp: {error}",
|
||||||
|
"updating_binary": "📦 Memperbarui binary yt-dlp yang dikelola aplikasi...",
|
||||||
|
"updating_pip": "🐍 Memperbarui yt-dlp sistem melalui pip...",
|
||||||
|
"update_failed": "❌ Pembaruan yt-dlp gagal. Silakan coba lagi atau periksa koneksi internet Anda.",
|
||||||
|
"binary_updated": "✅ Binary berhasil diperbarui!",
|
||||||
|
"update_failed_stderr": "❌ Pembaruan yt-dlp gagal: {error}",
|
||||||
|
"update_timeout": "❌ Timeout pembaruan yt-dlp.",
|
||||||
|
"unexpected_error": "❌ Kesalahan tak terduga selama pembaruan: {error}",
|
||||||
|
"checking_pip": "🔍 Memeriksa instalasi pip saat ini...",
|
||||||
|
"current_version": "📋 Versi saat ini: {version}",
|
||||||
|
"not_found_pip": "⚠️ yt-dlp tidak ditemukan melalui pip, mencoba menginstal...",
|
||||||
|
"checking_latest": "🌐 Memeriksa versi terbaru...",
|
||||||
|
"failed_check_updates": "❌ Gagal memeriksa pembaruan",
|
||||||
|
"latest_version": "🆕 Versi terbaru: {version}",
|
||||||
|
"updating_from_to": "⬆️ Memperbarui dari {current} ke {latest}...",
|
||||||
|
"running_pip_install": "📦 Menjalankan pip install --upgrade...",
|
||||||
|
"pip_completed": "✅ Pembaruan pip berhasil diselesaikan!",
|
||||||
|
"pip_failed": "❌ Pembaruan pip gagal: {error}"
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"title": "Tentang YTSage",
|
||||||
|
"version": "Versi {version}",
|
||||||
|
"description": "Pengunduh YouTube modern dengan antarmuka PySide6 yang bersih.",
|
||||||
|
"author": "Oleh: {author}",
|
||||||
|
"github": "GitHub: {repo}",
|
||||||
|
"system_info": "Informasi sistem",
|
||||||
|
"loading": "🔄 Memuat informasi sistem...",
|
||||||
|
"refresh": "🔄",
|
||||||
|
"refreshing": "🔄 Menyegarkan...",
|
||||||
|
"refresh_failed": "Gagal menyegarkan",
|
||||||
|
"refresh_failed_message": "Tidak dapat menyegarkan informasi versi.",
|
||||||
|
"detected": "✓ Terdeteksi",
|
||||||
|
"missing": "✗ Hilang",
|
||||||
|
"not_available": "Tidak tersedia"
|
||||||
|
},
|
||||||
|
"time_range": {
|
||||||
|
"title": "Potong video",
|
||||||
|
"time_range_group": "Rentang waktu",
|
||||||
|
"start_time": "Waktu mulai (HH:MM:SS)",
|
||||||
|
"end_time": "Waktu selesai (HH:MM:SS)",
|
||||||
|
"start_placeholder": "00:00:00",
|
||||||
|
"end_placeholder": "00:00:00",
|
||||||
|
"start_time_placeholder": "Waktu mulai (HH:MM:SS)",
|
||||||
|
"end_time_placeholder": "Waktu selesai (HH:MM:SS)",
|
||||||
|
"force_keyframes": "Paksa keyframe pada titik potong",
|
||||||
|
"help_text": "Atur waktu mulai dan selesai untuk memotong video.\nBiarkan kosong untuk mengunduh video penuh.",
|
||||||
|
"invalid_format": "Format waktu tidak valid. Gunakan format HH:MM:SS.",
|
||||||
|
"start_after_end": "Waktu mulai tidak boleh setelah waktu selesai."
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"title": "Pengaturan unduhan",
|
||||||
|
"download_path": "Jalur unduhan",
|
||||||
|
"browse": "Jelajahi...",
|
||||||
|
"speed_limit": "Batas kecepatan",
|
||||||
|
"speed_limit_placeholder": "Tidak ada",
|
||||||
|
"auto_update_ytdlp": "Pembaruan otomatis yt-dlp",
|
||||||
|
"enable_auto_updates": "Aktifkan pembaruan otomatis yt-dlp",
|
||||||
|
"update_frequency": "Frekuensi pembaruan:",
|
||||||
|
"check_startup": "Periksa setiap startup (minimal 1 jam antara pemeriksaan)",
|
||||||
|
"check_daily": "Periksa harian",
|
||||||
|
"check_weekly": "Periksa mingguan",
|
||||||
|
"check_updates_now": "Periksa pembaruan sekarang",
|
||||||
|
"update_check_title": "Pemeriksaan pembaruan",
|
||||||
|
"could_not_determine_version": "Tidak dapat menentukan versi yt-dlp saat ini.",
|
||||||
|
"update_available_dialog": "Pembaruan tersedia!\n\nSaat ini: {current}\nTerbaru: {latest}\n\nGunakan tombol 'Perbarui yt-dlp' di jendela utama untuk memperbarui.",
|
||||||
|
"up_to_date_dialog": "yt-dlp sudah terbaru!\n\nVersi saat ini: {version}",
|
||||||
|
"error_checking_updates": "Kesalahan memeriksa pembaruan: {error}",
|
||||||
|
"settings_saved_title": "Pengaturan disimpan",
|
||||||
|
"settings_saved_message": "Pengaturan pembaruan otomatis berhasil disimpan!",
|
||||||
|
"error_title": "Kesalahan",
|
||||||
|
"failed_save_settings": "Gagal menyimpan pengaturan pembaruan otomatis.",
|
||||||
|
"error_saving_settings": "Kesalahan menyimpan pengaturan pembaruan otomatis: {error}",
|
||||||
|
"auto_update_title": "Pengaturan pembaruan otomatis",
|
||||||
|
"auto_update_header": "🔄 Pengaturan pembaruan otomatis",
|
||||||
|
"auto_update_description": "Konfigurasi pembaruan otomatis untuk yt-dlp untuk memastikan Anda selalu memiliki fitur dan perbaikan bug terbaru.",
|
||||||
|
"current_status": "Status saat ini",
|
||||||
|
"current_version_label": "Versi yt-dlp saat ini: Memeriksa...",
|
||||||
|
"last_check_label": "Pemeriksaan pembaruan terakhir: Tidak pernah",
|
||||||
|
"next_check_label": "Pemeriksaan berikutnya: Berdasarkan pengaturan",
|
||||||
|
"manual_check_button": "🔍 Periksa pembaruan sekarang",
|
||||||
|
"update_frequency_group": "Frekuensi pembaruan",
|
||||||
|
"save_settings": "Simpan pengaturan",
|
||||||
|
"settings_saved_successfully": "✅ Pengaturan berhasil disimpan!",
|
||||||
|
"error_saving": "❌ Kesalahan menyimpan pengaturan: {error}"
|
||||||
|
},
|
||||||
|
"main_ui": {
|
||||||
|
"url_placeholder": "Masukkan URL video atau playlist YouTube",
|
||||||
|
"merge_subtitles": "Gabungkan subtitle",
|
||||||
|
"save_thumbnail": "Simpan thumbnail",
|
||||||
|
"save_description": "Simpan deskripsi",
|
||||||
|
"embed_chapters": "Sematkan bab",
|
||||||
|
"subtitles_selected": "{count} dipilih",
|
||||||
|
"all_selected": "Semua dipilih",
|
||||||
|
"select_videos_all": "Pilih video... (Semua dipilih)",
|
||||||
|
"please_enter_url": "Silakan masukkan URL terlebih dahulu",
|
||||||
|
"cookie_file_selected_title": "File cookie dipilih",
|
||||||
|
"cookie_file_selected_message": "File cookie dipilih: {path}",
|
||||||
|
"browser_cookies_selected_title": "Cookies browser dipilih",
|
||||||
|
"browser_cookies_selected_message": "Cookies browser akan diekstrak dari: {browser}",
|
||||||
|
"error_no_format_info": "Kesalahan: Tidak ada informasi format yang tersedia.",
|
||||||
|
"error_extract_info": "Kesalahan: Tidak dapat mengekstrak informasi video dasar. Silakan periksa tautan Anda.",
|
||||||
|
"analyzing_preparing": "Menganalisis (0%)... Mempersiapkan permintaan",
|
||||||
|
"analyzing_extracting_basic": "Menganalisis (15%)... Mengekstrak informasi dasar",
|
||||||
|
"analyzing_extracting_detailed": "Menganalisis (30%)... Mengekstrak informasi detail",
|
||||||
|
"analyzing_processing_video": "Menganalisis (45%)... Memproses data video",
|
||||||
|
"analyzing_processing_formats": "Menganalisis (60%)... Memproses format",
|
||||||
|
"analyzing_loading_thumbnail": "Menganalisis (75%)... Memuat thumbnail",
|
||||||
|
"analyzing_processing_subtitles": "Menganalisis (85%)... Memproses subtitle",
|
||||||
|
"analyzing_updating_table": "Menganalisis (95%)... Memperbarui tabel format",
|
||||||
|
"analysis_complete": "Analisis selesai!",
|
||||||
|
"analyzing_extracting_ytdlp": "Menganalisis (30%)... Mengekstrak informasi dengan executable yt-dlp",
|
||||||
|
"analyzing_processing_data": "Menganalisis (60%)... Memproses data",
|
||||||
|
"analyzing_processing_formats_ytdlp": "Menganalisis (75%)... Memproses format",
|
||||||
|
"analyzing_loading_thumbnail_ytdlp": "Menganalisis (85%)... Memuat thumbnail",
|
||||||
|
"analyzing_processing_subtitles_ytdlp": "Menganalisis (90%)... Memproses subtitle",
|
||||||
|
"select_subtitles": "Pilih subtitle...",
|
||||||
|
"sponsorblock_categories": "Kategori SponsorBlock..."
|
||||||
|
},
|
||||||
|
"sponsorblock": {
|
||||||
|
"sponsor": "Sponsor",
|
||||||
|
"sponsor_desc": "Iklan berbayar, rekomendasi berbayar dan iklan langsung",
|
||||||
|
"selfpromo": "Promosi diri tidak berbayar",
|
||||||
|
"selfpromo_desc": "Iklan tidak berbayar untuk konten kreator sendiri",
|
||||||
|
"interaction": "Pengingat interaksi",
|
||||||
|
"interaction_desc": "Pemirsa diminta untuk menyukai, berlangganan atau mengikuti media sosial",
|
||||||
|
"intro": "Intro",
|
||||||
|
"intro_desc": "Intro video yang dapat dilewati",
|
||||||
|
"outro": "Outro/Kartu akhir",
|
||||||
|
"outro_desc": "Kredit atau saat video berakhir",
|
||||||
|
"preview": "Pratinjau/Ringkasan",
|
||||||
|
"preview_desc": "Ringkasan singkat video sebelumnya atau pratinjau konten mendatang",
|
||||||
|
"music_offtopic": "Bagian non-musik",
|
||||||
|
"music_offtopic_desc": "Hanya untuk video musik. Menandai bagian non-musik",
|
||||||
|
"filler": "Tangensial pengisi",
|
||||||
|
"filler_desc": "Adegan tangensial yang ditambahkan hanya sebagai pengisi atau untuk humor"
|
||||||
|
},
|
||||||
|
"video_info": {
|
||||||
|
"channel": "Saluran",
|
||||||
|
"views": "Tayangan",
|
||||||
|
"likes": "Suka",
|
||||||
|
"upload_date": "Tanggal upload",
|
||||||
|
"duration": "Durasi",
|
||||||
|
"unknown_channel": "Saluran tidak diketahui",
|
||||||
|
"unknown_date": "Tanggal tidak diketahui",
|
||||||
|
"unknown_title": "Judul tidak diketahui"
|
||||||
|
},
|
||||||
|
"command": {
|
||||||
|
"running": "Berjalan...",
|
||||||
|
"run_command": "Jalankan perintah"
|
||||||
|
},
|
||||||
|
"selection": {
|
||||||
|
"none_selected": "0 dipilih",
|
||||||
|
"one_selected": "1 kategori dipilih",
|
||||||
|
"count_selected": "{count} dipilih"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"ready": "Siap",
|
||||||
|
"file_exists": "⚠️ File sudah ada",
|
||||||
|
"cancelling": "Membatalkan unduhan..."
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
"german": "Alemão",
|
"german": "Alemão",
|
||||||
"french": "Francês",
|
"french": "Francês",
|
||||||
"hindi": "Hindi",
|
"hindi": "Hindi",
|
||||||
|
"indonesian": "Indonésio",
|
||||||
"help_text": "Selecione seu idioma preferido para a interface.",
|
"help_text": "Selecione seu idioma preferido para a interface.",
|
||||||
"restart_notice": "A alteração de idioma terá efeito após reiniciar a aplicação."
|
"restart_notice": "A alteração de idioma terá efeito após reiniciar a aplicação."
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
"german": "Немецкий",
|
"german": "Немецкий",
|
||||||
"french": "Французский",
|
"french": "Французский",
|
||||||
"hindi": "Хинди",
|
"hindi": "Хинди",
|
||||||
|
"indonesian": "Индонезийский",
|
||||||
"help_text": "Выберите предпочитаемый язык для интерфейса.",
|
"help_text": "Выберите предпочитаемый язык для интерфейса.",
|
||||||
"restart_notice": "Изменение языка вступит в силу после перезапуска приложения."
|
"restart_notice": "Изменение языка вступит в силу после перезапуска приложения."
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
"german": "德语",
|
"german": "德语",
|
||||||
"french": "法语",
|
"french": "法语",
|
||||||
"hindi": "印地语",
|
"hindi": "印地语",
|
||||||
|
"indonesian": "印尼语",
|
||||||
"help_text": "选择您喜欢的界面语言。",
|
"help_text": "选择您喜欢的界面语言。",
|
||||||
"restart_notice": "语言更改将在重启应用程序后生效。"
|
"restart_notice": "语言更改将在重启应用程序后生效。"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -266,13 +266,13 @@ class FormatTableMixin:
|
|||||||
quality_item = QTableWidgetItem(quality_text)
|
quality_item = QTableWidgetItem(quality_text)
|
||||||
# Set color based on quality (check English, Spanish, Portuguese, Russian, Chinese, German, and French terms)
|
# Set color based on quality (check English, Spanish, Portuguese, Russian, Chinese, German, and French terms)
|
||||||
quality_lower = quality_text.lower() # Make comparison case-insensitive
|
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", "सर्वोत्तम", "Terbaik"]):
|
||||||
quality_item.setForeground(QColor("#00ff00")) # Green for best quality
|
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é", "उच्च", "उच्च ऑडियो", "Tinggi", "Audio tinggi"]):
|
||||||
quality_item.setForeground(QColor("#00cc00")) # Light green for high quality
|
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", "मध्यम", "मध्यम ऑडियो", "Sedang", "Audio sedang"]):
|
||||||
quality_item.setForeground(QColor("#ffaa00")) # Orange for medium quality
|
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", "निम्न", "निम्न ऑडियो", "निम्न गुणवत्ता", "Rendah", "Audio rendah", "Kualitas rendah"]):
|
||||||
quality_item.setForeground(QColor("#ff5555")) # Red for low quality
|
quality_item.setForeground(QColor("#ff5555")) # Red for low quality
|
||||||
self.format_table.setItem(row, 1, quality_item)
|
self.format_table.setItem(row, 1, quality_item)
|
||||||
|
|
||||||
|
|||||||
@@ -87,7 +87,8 @@ class LocalizationManager:
|
|||||||
"chinese": "中文 (简体) (Chinese Simplified)",
|
"chinese": "中文 (简体) (Chinese Simplified)",
|
||||||
"german": "Deutsch (German)",
|
"german": "Deutsch (German)",
|
||||||
"french": "Français (French)",
|
"french": "Français (French)",
|
||||||
"hindi": "हिन्दी (Hindi)"
|
"hindi": "हिन्दी (Hindi)",
|
||||||
|
"indonesian": "Bahasa Indonesia (Indonesian)"
|
||||||
},
|
},
|
||||||
"download": {
|
"download": {
|
||||||
"preparing": "🚀 Preparing your download...",
|
"preparing": "🚀 Preparing your download...",
|
||||||
|
|||||||
Reference in New Issue
Block a user