From 60e11181afc0e3640e74b52fe0868477d7b9558b Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Tue, 16 Jul 2024 02:33:02 +0300 Subject: [PATCH 01/34] Fix invisible media source indicator --- src/components/cardbuilder/card.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/cardbuilder/card.scss b/src/components/cardbuilder/card.scss index 731ef32a80..737850261b 100644 --- a/src/components/cardbuilder/card.scss +++ b/src/components/cardbuilder/card.scss @@ -158,6 +158,7 @@ button::-moz-focus-inner { color: #fff; background: rgb(51, 136, 204); box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); + z-index: 1; } .cardImageContainer { From 20f53388aebefa4358b80c139fdbe9af5acc8a9e Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Tue, 16 Jul 2024 02:36:07 +0300 Subject: [PATCH 02/34] Fix progress bar position --- src/components/indicators/indicators.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/indicators/indicators.scss b/src/components/indicators/indicators.scss index 6e99a1c3c9..60aa8b8d9f 100644 --- a/src/components/indicators/indicators.scss +++ b/src/components/indicators/indicators.scss @@ -7,7 +7,7 @@ .itemLinearProgress { width: 100%; - position: absolute; + position: absolute !important; left: 0; bottom: 0; border-radius: 100px; From ece901a48c6f814fb7a7477ddd65bbd002cd7d76 Mon Sep 17 00:00:00 2001 From: Troja Date: Tue, 16 Jul 2024 10:33:25 +0000 Subject: [PATCH 03/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 446bbb7884..bfe921a550 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -668,7 +668,7 @@ "HeaderVideoQuality": "Якасць відэа", "HeaderVideoTypes": "Тыпы відэа", "Hide": "Схаваць", - "Home": "Галоўны", + "Home": "Галоўная", "HomeVideosPhotos": "Хатнія відэа і фота", "Horizontal": "Гарызантальны", "HttpsRequiresCert": "Каб уключыць бяспечныя злучэнні, вам трэба будзе прадаставіць надзейны сертыфікат SSL, напрыклад Let's Encrypt. Калі ласка, падайце сертыфікат або адключыце бяспечныя злучэнні.", @@ -1759,7 +1759,7 @@ "LogLevel.Warning": "Папярэджанне", "LogLevel.Error": "Памылка", "LabelTrackGain": "Узмацненне дарожкі", - "GoHome": "Дадому", + "GoHome": "На галоўную", "SelectAudioNormalizationHelp": "Узмацненне трэка - рэгулюе гучнасць кожнага трэка, каб яны прайграваліся з аднолькавай гучнасцю. Узмацненне альбома - рэгулюе гучнасць толькі ўсіх трэкаў у альбоме, захоўваючы дынамічны дыяпазон альбома.", "SearchResultsEmpty": "Выбачайце! Няма вынікаў для \"{0}\"", "UnknownError": "Адбылася невядомая памылка.", From ae7347dbe3d435f5eaa61496ddc5cdba938a777c Mon Sep 17 00:00:00 2001 From: andrianfajar Date: Tue, 16 Jul 2024 10:48:45 +0000 Subject: [PATCH 04/34] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/id/ --- src/strings/id.json | 81 ++++++++++++++++++++++++++++++--------------- 1 file changed, 55 insertions(+), 26 deletions(-) diff --git a/src/strings/id.json b/src/strings/id.json index b973b9a8ab..7c511ecf08 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -2,9 +2,9 @@ "ButtonQuickStartGuide": "Panduan cepat", "ButtonSignOut": "Sign out", "HeaderEasyPinCode": "Kode PIN Mudah", - "HeaderSetupLibrary": "Atur pustaka media Anda", + "HeaderSetupLibrary": "Siapkan perpustakaan media Anda", "LabelContentType": "Tipe konten", - "LabelCountry": "Negara", + "LabelCountry": "Negara/Regional", "LabelFinish": "Selesai", "LabelLanguage": "Bahasa", "LabelSaveLocalMetadata": "Simpan artwork dan metadata ke dalam folder media", @@ -122,7 +122,7 @@ "AspectRatio": "Rasio perbandingan", "Ascending": "Urutan naik", "AsManyAsPossible": "Sebanyak mungkin", - "Art": "Clearart", + "Art": "ClearArt", "AroundTime": "Sekitar {0}", "Anytime": "Kapanpun", "AnyLanguage": "Bahasa apapun", @@ -156,7 +156,7 @@ "AddedOnValue": "{0} Ditambahkan", "AllowFfmpegThrottling": "Transcode Dibatas (Throttle)", "AllowOnTheFlySubtitleExtractionHelp": "Subtitel yang disematkan dapat diekstrak dari video dan dikirim ke klien dalam teks biasa, untuk membantu mencegah transcoding video. Pada beberapa sistem, ini dapat memakan waktu lama dan menyebabkan pemutaran video terhenti selama proses ekstraksi. Nonaktifkan ini untuk menyematkan subtitle yang disematkan dengan transcoding video ketika mereka tidak didukung secara native oleh perangkat klien.", - "ButtonSyncPlay": "SyncPlay", + "ButtonSyncPlay": "Syncplay", "EnablePhotosHelp": "Gambar akan terdeteksi dan ditampilkan bersama file media lainnya.", "EnablePhotos": "Menampilkan foto", "EnableNextVideoInfoOverlayHelp": "Di akhir video, tampilkan info tentang video berikutnya yang akan muncul di daftar putar saat ini.", @@ -175,7 +175,7 @@ "EditImages": "Edit Gambar", "Edit": "Sunting", "EasyPasswordHelp": "Kode PIN Mudah Anda akan digunakan untuk akses offline di klien terdukung dan untuk masuk ke jaringan dengan mudah.", - "DropShadow": "Drop Shadow", + "DropShadow": "DropShadow", "DrmChannelsNotImported": "Saluran dengan DRM tidak akan diimpor.", "DownloadsValue": "{0} unduhan", "Download": "Unduh", @@ -242,7 +242,7 @@ "OptionDisableUserHelp": "Server tidak akan mengizinkan koneksi apa pun dari pengguna ini. Koneksi yang ada akan tiba-tiba berakhir.", "OptionAllowUserToManageServer": "Izinkan pengguna ini untuk mengelola server", "MessageUnableToConnectToServer": "Kami tidak dapat terhubung ke server yang dipilih sekarang. Harap pastikan itu berjalan dan coba lagi.", - "MessagePluginInstallDisclaimer": "Plugin yang dibuat oleh anggota komunitas adalah cara terbaik untuk meningkatkan pengalaman Anda dengan fitur dan manfaat tambahan. Sebelum menginstal, perhatikan efeknya pada server Anda, seperti pemindaian perpustakaan yang lebih lama, pemrosesan latar belakang tambahan, dan penurunan stabilitas sistem.", + "MessagePluginInstallDisclaimer": "PERINGATAN: Memasang plugin pihak ketiga memiliki risiko. Ini mungkin berisi kode yang tidak stabil atau berbahaya, dan dapat berubah kapan saja. Hanya instal plugin dari penulis yang Anda percayai, dan harap perhatikan potensi dampak yang mungkin ditimbulkannya, termasuk permintaan layanan eksternal, pemindaian perpustakaan yang lebih lama, atau pemrosesan latar belakang tambahan.", "MessagePluginConfigurationRequiresLocalAccess": "Untuk mengatur plugin ini, silakan masuk ke server lokal Anda secara langsung.", "MessagePlayAccessRestricted": "Pemutaran konten ini saat ini dibatasi. Silakan hubungi administrator server Anda untuk informasi lebih lanjut.", "MessageNoServersAvailable": "Tidak ada server yang ditemukan menggunakan penemuan server otomatis.", @@ -296,22 +296,22 @@ "LabelFormat": "Format", "LabelForgotPasswordUsernameHelp": "Masukkan nama pengguna Anda, jika Anda mengingatnya.", "LabelFont": "Font", - "LabelFolder": "Folder", + "LabelFolder": "Map", "LabelFileOrUrl": "File atau URL", "LabelFailed": "Gagal", "HeaderChannelAccess": "Akses Saluran", "HeaderCastAndCrew": "Pemeran & Kru", "HeaderCancelSeries": "Batalkan Serial", "HeaderCancelRecording": "Batalkan Perekaman", - "HeaderBranding": "Branding", + "HeaderBranding": "Merek", "HeaderBlockItemsWithNoRating": "Blokir item dengan informasi peringkat yang tidak ada atau tidak dikenal", "HeaderAudioSettings": "Pengaturan Audio", "HeaderAudioBooks": "Buku Audio", "HeaderAppearsOn": "Muncul Di", "HeaderApp": "Aplikasi", "ApiKeysCaption": "Daftar API keys yang saat ini diaktifkan", - "HeaderApiKeys": "API Keys", - "HeaderApiKey": "API Key", + "HeaderApiKeys": "Kunci API", + "HeaderApiKey": "Kunci API", "HeaderAllowMediaDeletionFrom": "Izinkan Penghapusan Media Dari", "HeaderAlert": "Peringatan", "HeaderAdmin": "Administrasi", @@ -363,7 +363,7 @@ "ErrorAddingMediaPathToVirtualFolder": "Terjadi kesalahan saat menambahkan lokasi media. Harap pastikan lokasi valid dan Jellyfin memiliki akses ke lokasi itu.", "ErrorAddingListingsToSchedulesDirect": "Terjadi kesalahan saat menambahkan daftar ke akun Jadwal Langsung Anda. Jadwal Langsung hanya mengizinkan jumlah daftar terbatas per akun. Anda mungkin perlu masuk ke situs web Jadwal Langsung dan menghapus daftar orang lain dari akun Anda sebelum melanjutkan.", "Episodes": "Semua episode", - "Episode": "Episode", + "Episode": "Episod", "EndsAtValue": "Berakhir pada {0}", "Ended": "Berakhir", "EnableDetailsBannerHelp": "Tampilkan gambar spanduk di bagian atas halaman detail item.", @@ -434,7 +434,7 @@ "LabelAudioBitDepth": "Kedalaman bit audio", "LabelArtistsHelp": "Pisahkan beberapa artis dengan titik koma.", "LabelArtists": "Artis", - "LabelAppNameExample": "Contoh : Sickbeard, Sonarr", + "LabelAppNameExample": "Nama yang dapat dibaca untuk mengidentifikasi kunci API. Pengaturan ini tidak akan mempengaruhi fungsionalitas.", "LabelAppName": "Nama aplikasi", "LabelAllowedRemoteAddressesMode": "Mode filter alamat IP jarak jauh", "LabelAllowedRemoteAddresses": "Filter alamat IP jarak jauh", @@ -833,7 +833,7 @@ "LabelTranscodingThreadCountHelp": "Pilih jumlah maksimum utas yang akan digunakan saat transcoding. Mengurangi jumlah utas akan menurunkan penggunaan CPU tetapi mungkin tidak mengonversi cukup cepat untuk pengalaman pemutaran yang lancar.", "LabelTranscodingThreadCount": "Jumlah utas transcoding", "LabelTranscodingProgress": "Proses transcoding", - "LabelTranscodingFramerate": "Transcoding framerate", + "LabelTranscodingFramerate": "Transkode kecepatan bingkai", "LabelTranscodes": "Transcode", "LabelTrackNumber": "Nomor jejak", "LabelTitle": "Judul", @@ -1037,9 +1037,9 @@ "EnableTonemapping": "Aktifkan pemetaan pola", "EnableBlurHash": "Aktifkan tempat untuk gambar buram", "ClearQueue": "Hapus antrian", - "Bwdif": "BWDIF", + "Bwdif": "Bob Weaver DeInterlacing Filter", "ButtonCast": "Putar ke perangkat", - "AllowTonemappingHelp": "Tone-mapping dapat mengubah jangkauan dinamis video dari HDR ke SDR dengan tetap mempertahankan detail dan warna gambar, yang merupakan informasi yang sangat penting untuk merepresentasikan pemandangan aslinya. Saat ini hanya berfungsi dengan video 10bit HDR10,HLG dan DoVi. Fitur ini membutuhkan runtime OpenCL atau CUDA yang sesuai.", + "AllowTonemappingHelp": "Pemetaan warna kulit dapat mengubah rentang dinamis video dari HDR ke SDR dengan tetap mempertahankan detail dan warna gambar, yang merupakan informasi yang sangat penting untuk mewakili pemandangan aslinya. Saat ini hanya berfungsi dengan video 10bit HDR10, HLG, dan DoVi. Ini memerlukan runtime GPGPU yang sesuai.", "HeaderPortRanges": "Pengaturan Proxy dan Firewall", "HeaderUninstallPlugin": "Copot Plugin", "LabelTonemappingAlgorithm": "Pilih algoritma Tone Mapping untuk digunakan", @@ -1074,7 +1074,7 @@ "LabelEnableIP6": "Aktifkan IPv6", "LabelEnableIP4Help": "Aktifkan fungsionalitas IPv4.", "LabelEnableIP4": "Aktifkan IPv4", - "MessagePasswordResetForUsers": "Kata sandi pengguna berikut telah disetel ulang. Mereka sekarang dapat masuk dengan kode Easy PIN yang digunakan untuk melakukan reset.", + "MessagePasswordResetForUsers": "Kata sandi pengguna berikut telah disetel ulang. Mereka sekarang dapat masuk dengan kode PIN yang digunakan untuk melakukan penyetelan ulang.", "MessageNoTrailersFound": "Pasang saluran cuplikan untuk menyempurnakan pengalaman film Anda dengan menambahkan perpustakaan cuplikan internet.", "LabelDropSubtitleHere": "Taruh subtitle di sini, atau klik untuk mencari.", "LabelDashboardTheme": "Tema Dasbor Server", @@ -1098,7 +1098,7 @@ "LabelSelectAudioChannels": "Channel", "LabelAllowedAudioChannels": "Channel Audio Maksimum yang Diizinkan", "AllowHevcEncoding": "Izinkan encoding dalam format HEVC", - "PreferFmp4HlsContainerHelp": "Pilih fMP4 sebagai container default untuk HLS, sehingga memungkinkan streaming langsung konten HEVC di perangkat yang didukung.", + "PreferFmp4HlsContainerHelp": "Lebih suka menggunakan fMP4 sebagai wadah default untuk HLS, sehingga memungkinkan streaming langsung konten HEVC dan AV1 pada perangkat yang didukung.", "PreferFmp4HlsContainer": "Pilih fMP4-HLS Media Container", "LabelSyncPlayInfo": "Info SyncPlay", "LabelOriginalMediaInfo": "Info media asli", @@ -1115,7 +1115,7 @@ "MessageNoMovieSuggestionsAvailable": "Tidak ada saran film yang tersedia saat ini. Mulailah menonton dan menilai film Anda, lalu kembali untuk melihat rekomendasi Anda.", "LabelPlaybackInfo": "Informasi Pemutaran", "OptionBluray": "BD", - "DirectPlayHelp": "File sumber sepenuhnya kompatibel dengan klien ini, dan sesi ini menerima file tersebut tanpa modifikasi.", + "DirectPlayHelp": "File sumber sepenuhnya kompatibel dengan klien ini dan sesi ini menerima file tersebut tanpa modifikasi.", "Cursive": "Kursif", "Console": "Konsol", "Conductor": "Konduktor", @@ -1168,13 +1168,13 @@ "AspectRatioFill": "Mengisi", "EnableFallbackFontHelp": "Aktifkan font alternatif khusus. Ini dapat menghindari masalah rendering subtitle yang salah.", "EnableFallbackFont": "Aktifkan fallback fonts", - "LabelFallbackFontPathHelp": "Tentukan jalur yang berisi font fallback untuk merender subtitle ASS/SSA. Ukuran font total maksimum yang diizinkan adalah 20 MB. Format font yang ringan dan ramah web seperti woff2 direkomendasikan.", + "LabelFallbackFontPathHelp": "Font ini digunakan oleh beberapa klien untuk merender subtitle. Silakan merujuk ke dokumentasi untuk informasi lebih lanjut.", "LabelFallbackFontPath": "Jalur folder font cadangan", "HeaderSelectFallbackFontPathHelp": "Telusuri atau masukkan jalur folder font fallback yang akan digunakan untuk merender subtitle ASS/SSA.", "HeaderSelectFallbackFontPath": "Pilih Jalur Folder Font Fallback", "Yesterday": "Kemarin", "Yes": "Ya", - "Yadif": "YADIF", + "Yadif": "Yet Another DeInterlacing Filter", "XmlTvSportsCategoriesHelp": "Program dengan kategori ini akan ditampilkan sebagai program olahraga. Pisahkan beberapa dengan '|'.", "XmlTvNewsCategoriesHelp": "Program dengan kategori ini akan ditampilkan sebagai program berita. Pisahkan beberapa dengan '|'.", "XmlTvKidsCategoriesHelp": "Program dengan kategori ini akan ditampilkan sebagai program untuk anak-anak. Pisahkan beberapa dengan '|'.", @@ -1386,7 +1386,7 @@ "QuickConnectInvalidCode": "Kode Quick Connect tidak valid", "QuickConnectDescription": "Untuk masuk dengan Quick Connect, pilih tombol 'Quick Connect' pada perangkat yang Anda gunakan untuk masuk dan masukkan kode yang ditampilkan di bawah ini.", "QuickConnectDeactivated": "Quick Connect dinonaktifkan sebelum permintaan login dapat disetujui", - "QuickConnectAuthorizeSuccess": "Permintaan diotorisasi", + "QuickConnectAuthorizeSuccess": "Anda telah berhasil mengautentikasi perangkat Anda!", "QuickConnectAuthorizeFail": "Kode Quick Connect tidak diketahui", "QuickConnectAuthorizeCode": "Masukkan kode {0} untuk login", "QuickConnectActivationSuccessful": "Berhasil diaktifkan", @@ -1648,7 +1648,7 @@ "LabelSyncPlaySettingsMaxDelaySpeedToSyncHelp": "Penundaan pemutaran maksimum (dalam ms) setelah itu SkipToSync digunakan sebagai ganti SpeedToSync.", "LabelSyncPlaySettingsSyncCorrectionHelp": "Aktifkan sinkronisasi pemutaran aktif dengan mempercepat media atau dengan mencari posisi yang diperkirakan. Nonaktifkan ini jika terjadi kegagapan yang parah.", "LabelSyncPlaySettingsSyncCorrection": "Koreksi Sinkronisasi", - "EnableEnhancedNvdecDecoderHelp": "Ujicoba implementasi NVDEC, jangan aktifkan opsi ini kecuali mengalami masalah sewaktu dekoding.", + "EnableEnhancedNvdecDecoderHelp": "Implementasi NVDEC yang ditingkatkan, nonaktifkan opsi ini untuk menggunakan CUVID jika Anda mengalami kesalahan decoding.", "MediaInfoBlPresentFlag": "Bendera preset DV bl", "MediaInfoElPresentFlag": "Bendera prasetel DV el", "MediaInfoRpuPresentFlag": "Bendera preset DV rpu", @@ -1660,10 +1660,10 @@ "MediaInfoVideoRangeType": "Jenis rentang video", "LabelVideoRangeType": "Jenis rentang video", "VideoRangeTypeNotSupported": "Jenis jangkauan video tidak didukung", - "LabelVppTonemappingContrastHelp": "Terapkan penguatan kontras dalam pemetaan nada VPP. Nilai yang direkomendasikan dan default adalah 1.2 dan 1.", + "LabelVppTonemappingContrastHelp": "Terapkan penguatan kontras dalam pemetaan nada VPP. Nilai yang direkomendasikan dan default adalah 1.", "LabelVppTonemappingContrast": "Penguatan kontras pemetaan VPP Tone", "LabelVppTonemappingBrightness": "Penguatan kecerahan pemetaan VPP Tone", - "LabelVppTonemappingBrightnessHelp": "Terapkan penguatan kecerahan dalam pemetaan nada VPP. Nilai yang disarankan dan nilai default adalah 0.", + "LabelVppTonemappingBrightnessHelp": "Terapkan peningkatan kecerahan dalam pemetaan nada VPP. Nilai yang direkomendasikan dan default adalah 16 dan 0.", "EnableSplashScreen": "Aktifkan layar pembuka", "MediaInfoDvBlSignalCompatibilityId": "ID kompatibilitas sinyal DV bl", "ScreenResolution": "Resolusi Layar", @@ -1685,7 +1685,7 @@ "AllowSubtitleManagement": "Izinkan user untuk mengubah tarakir", "AllowSegmentDeletionHelp": "Hapus bagian lama setelah terunduh oleh pengguna. Fitur ini akan mencegah penyimpanan file teralihsandikan ke dalam penyimpanan. Matikan fitur ini jika terjadi masalah dalam pemutaran.", "AllowContentWithTagsHelp": "Hanya tampilkan media dengan setidaknya satu tag ditentukan.", - "AirPlay": "AirPlay", + "AirPlay": "Airplay", "HeaderDeleteSeries": "Hapus Serial", "LabelDate": "Tanggal", "LabelDeveloper": "Pengembang", @@ -1858,5 +1858,34 @@ "AllowAv1Encoding": "Izinkan pengkodean dalam format AV1", "MachineTranslated": "Diterjemahkan oleh mesin", "LabelImageInterval": "Interval Gambar", - "LimitSupportedVideoResolution": "Batasi resolusi video maksimum yang didukung" + "LimitSupportedVideoResolution": "Batasi resolusi video maksimum yang didukung", + "Letterer": "Penulis surat", + "HearingImpairedShort": "HI/SDH", + "ForeignPartsOnly": "Paksa/Bagian Asing saja", + "LabelScanBehavior": "Perilaku Pemindaian", + "ChannelResolutionSD": "SD", + "ChannelResolutionSDPAL": "SD (PAL)", + "ChannelResolutionHD": "HD", + "ChannelResolutionFullHD": "Full HD", + "ChannelResolutionUHD4K": "UHD (4K)", + "Inker": "Tinta", + "HeaderDummyChapter": "Bab Gambar", + "Colorist": "Warna", + "CoverArtist": "Artis Sampul", + "Penciller": "Pensil", + "LabelWebVersion": "Versi Web", + "LabelTrackGain": "Lacak Trek", + "LabelTileHeightHelp": "Jumlah maksimum gambar per kotak dalam arah Y.", + "LabelTileWidth": "Lebar Kotak", + "LabelJpegQuality": "Kualitas JPEG", + "LabelQscale": "Skala Q", + "LabelQscaleHelp": "Skala kualitas gambar yang dihasilkan oleh ffmpeg, dengan 2 sebagai kualitas tertinggi dan 31 sebagai kualitas terendah.", + "LabelJpegQualityHelp": "Kualitas kompresi JPEG untuk gambar tipuan.", + "LabelTrickplayThreads": "Utas FFmpeg", + "LabelTileHeight": "Tinggi Kotak", + "LabelTrickplayThreadsHelp": "Jumlah thread yang akan diteruskan ke argumen '-threads' di ffmpeg.", + "OptionExtractTrickplayImage": "Aktifkan ekstraksi gambar trickplay", + "ExtractTrickplayImagesHelp": "Gambar Trickplay mirip dengan gambar bab, hanya saja gambar tersebut mencakup keseluruhan konten dan digunakan untuk menampilkan pratinjau saat menelusuri video.", + "LabelExtractTrickplayDuringLibraryScan": "Ekstrak gambar trickplay selama pemindaian perpustakaan", + "LabelExtractTrickplayDuringLibraryScanHelp": "Hasilkan gambar trik saat video diimpor selama pemindaian perpustakaan. Jika tidak, gambar tersebut akan diekstraksi selama tugas terjadwal gambar trickplay. Jika pembuatan diatur ke non-pemblokiran, hal ini tidak akan memengaruhi waktu yang diperlukan untuk menyelesaikan pemindaian perpustakaan." } From 88231fa38094e3f4686ebbddf5f6ec197ae2b1ed Mon Sep 17 00:00:00 2001 From: stanol Date: Tue, 16 Jul 2024 10:39:34 +0000 Subject: [PATCH 05/34] Translated using Weblate (Ukrainian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/uk/ --- src/strings/uk.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/uk.json b/src/strings/uk.json index 4ee43271c0..8f0c3798a1 100644 --- a/src/strings/uk.json +++ b/src/strings/uk.json @@ -1893,5 +1893,7 @@ "SelectPreferredTranscodeVideoAudioCodecHelp": "Виберіть бажаний аудіокодек для перекодування відеоконтенту. Якщо вибраний кодек не підтримується, сервер використовуватиме наступний найкращий доступний кодек.", "Alternate": "Альтернатива", "Regional": "Регіональне", - "AlternateDVD": "Альтернативний DVD" + "AlternateDVD": "Альтернативний DVD", + "SelectPreferredTranscodeVideoCodecHelp": "Виберіть бажаний відеокодек для перекодування. Якщо вибраний кодек не підтримується, сервер використає наступний найкращий доступний кодек.", + "LabelSelectPreferredTranscodeVideoCodec": "Бажаний відеокодек для перекодування" } From c3505df833443c7340dc4569f5bef9086fcbd028 Mon Sep 17 00:00:00 2001 From: Troja Date: Tue, 16 Jul 2024 12:17:23 +0000 Subject: [PATCH 06/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index bfe921a550..f846cdb718 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -402,7 +402,7 @@ "EnableExternalVideoPlayersHelp": "Меню знешняга прайгравальніка будзе паказана пры запуску прайгравання відэа.", "EnablePhotosHelp": "Выявы будуць выяўляцца і адлюстроўвацца разам з іншымі медыяфайламі.", "EnableRewatchingNextUp": "Уключыць паўторны прагляд у наступным", - "EnableRewatchingNextUpHelp": "Уключыць паказ ужо прагледжаных серый у раздзелах \"Наступнае\".", + "EnableRewatchingNextUpHelp": "Уключыць паказ ужо прагледжаных эпізодаў у раздзелах \"Наступнае\".", "EnableStreamLoopingHelp": "Уключыце гэта, калі жывыя трансляцыі ўтрымліваюць толькі некалькі секунд даных і іх трэба пастаянна запытваць. Уключэнне гэтага, калі гэта не патрэбна, можа выклікаць праблемы.", "EnableThemeSongsHelp": "Прайгравайце тэматычныя песні ў фонавым рэжыме падчас прагляду бібліятэкі.", "EnableThemeVideosHelp": "Прайграванне тэматычных відэа ў фонавым рэжыме падчас прагляду бібліятэкі.", @@ -455,7 +455,7 @@ "LearnHowYouCanContribute": "Даведайцеся, як вы можаце ўнесці свой уклад.", "NoSubtitlesHelp": "Субтытры не загружаюцца па змаўчанні. Іх усё яшчэ можна ўключыць уручную падчас прайгравання.", "OnApplicationStartup": "Пры запуску прыкладання", - "OptionAllowBrowsingLiveTv": "Дазволіць доступ да ТБ", + "OptionAllowBrowsingLiveTv": "Дазволіць доступ да тэлеканалаў", "OptionAllowContentDownload": "Дазволіць загрузку мультымедыя", "OptionCaptionInfoExSamsung": "CaptionInfoEx ( Samsung )", "OptionCommunityRating": "Рэйтынг супольнасці", @@ -961,7 +961,7 @@ "LabelAccessEnd": "Час заканчэння", "ListPaging": "{0}-{1} з {2}", "LiveBroadcasts": "Прамыя трансляцыі", - "LiveTV": "Прамы эфір", + "LiveTV": "Тэлеканалы", "MaxParentalRatingHelp": "Кантэнт з больш высокім рэйтынгам будзе схаваны ад гэтага карыстальніка.", "MediaInfoBitrate": "Бітрэйт", "MediaInfoChannels": "Каналы", @@ -1105,7 +1105,7 @@ "LabelFormat": "Фармат", "OptionAllowLinkSharingHelp": "Абагульваюцца толькі вэб-старонкі, якія змяшчаюць медыя-інфармацыю. Мультымедыйныя файлы ніколі не абагульваюцца публічна. Абагульванне абмежавана па часе і скончыцца праз {0} дзён.", "LabelInNetworkSignInWithEasyPassword": "Уключыць уваход у сетку з майго Easy PIN-кода", - "OptionAllowManageLiveTv": "Дазволіць кіраванне запісам ТБ", + "OptionAllowManageLiveTv": "Дазволіць кіраванне запісам тэлеканалаў", "OptionAllowMediaPlayback": "Дазволіць прайграванне мультымедыя", "LabelKodiMetadataDateFormat": "Фармат даты выпуску", "OptionAllowMediaPlaybackTranscodingHelp": "Абмежаванне доступу да перакадзіравання можа прывесці да збояў прайгравання ў кліентах з-за непадтрымоўваных фарматаў мультымедыя.", @@ -1148,7 +1148,7 @@ "LabelSyncPlayHaltPlaybackDescription": "І ігнаруйце бягучыя абнаўленні спісаў прайгравання", "OptionEnableForAllTuners": "Уключыць для ўсіх цюнэраў", "OptionEstimateContentLength": "Ацаніце даўжыню змесціва пры перакадзіраванні", - "OptionForceRemoteSourceTranscoding": "Прымусовае перакадзіраванне аддаленых медыякрыніц, такіх як Live TV", + "OptionForceRemoteSourceTranscoding": "Прымусовае перакадзіраванне аддаленых медыякрыніц, такіх як тэлеканалы", "OptionHasThemeVideo": "Тэматычнае відэа", "OptionHideUser": "Схаваць гэтага карыстальніка з экранаў уваходу", "OptionHlsSegmentedSubtitles": "HLS сегментаваныя субтытры", @@ -1636,7 +1636,7 @@ "OptionEmbedSubtitles": "Убудаваць у кантэйнер", "OptionEnableAccessToAllChannels": "Уключыць доступ да ўсіх каналаў", "OptionEnableAccessToAllLibraries": "Дазволіць доступ да ўсіх бібліятэк", - "OptionEnableExternalContentInSuggestionsHelp": "Дазволіць уключэнне інтэрнэт-трэйлераў і жывых тэлепраграм у прапанаваны кантэнт.", + "OptionEnableExternalContentInSuggestionsHelp": "Дазволіць уключэнне інтэрнэт-трэйлераў і тэлепраграмы ў прапанаваны кантэнт.", "OptionEnableM2tsMode": "Уключыць рэжым M2TS", "OptionEveryday": "Кожны дзень", "OptionExtractChapterImage": "Уключыць выманне выявы раздзела", @@ -1788,5 +1788,7 @@ "LabelQscale": "Qscale", "HeaderAllRecordings": "Усе запісы", "DeleteName": "Выдаліць {0}", - "EnableSmoothScroll": "Уключыць плаўную пракрутку" + "EnableSmoothScroll": "Уключыць плаўную пракрутку", + "ConfirmDeleteSeries": "Выдаленне гэтага серыялу прывядзе да выдалення ЎСІХ {0} эпізодаў як з файлавай сістэмы, так і з вашай медыятэкі. Вы ўпэўнены, што хочаце працягнуць?", + "ConfirmDeleteLyrics": "Выдаленне гэтых тэкстаў песен прывядзе да іх выдалення як з файлавай сістэмы, так і з вашай медыятэкі. Вы ўпэўнены, што хочаце працягнуць?" } From 07851124c21bc9d7f653ba56d00296a68e41b3e8 Mon Sep 17 00:00:00 2001 From: Troja Date: Tue, 16 Jul 2024 13:51:02 +0000 Subject: [PATCH 07/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index f846cdb718..c0fed248b0 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1074,7 +1074,7 @@ "LabelCustomDeviceDisplayNameHelp": "Увядзіце карыстальніцкае імя для адлюстравання або пакіньце пустым, каб выкарыстоўваць імя, паведамленае прыладай.", "LabelCustomRating": "Індывідуальны рэйтынг", "LabelDateAddedBehaviorHelp": "Калі прысутнічае значэнне метададзеных, яно заўсёды будзе выкарыстоўвацца перад любым з гэтых варыянтаў.", - "MixedMoviesShows": "Змешаныя фільмы і шоу", + "MixedMoviesShows": "Змешаныя фільмы і серыялы", "LabelDidlMode": "Рэжым DIDL", "Mixer": "Міксер", "LabelDisplayOrder": "Парадак адлюстравання", @@ -1437,7 +1437,7 @@ "SubtitleVerticalPositionHelp": "Нумар радка, дзе з'яўляецца тэкст. Дадатныя лічбы паказваюць зверху ўніз. Адмоўныя лічбы паказваюць знізу ўверх.", "HideWatchedContentFromLatestMedia": "Схаваць прагледжанае змесціва з \"Нядаўна дададзеных медыя\"", "MessageRenameMediaFolder": "Перайменаванне медыятэкі прывядзе да страты ўсіх метададзеных, будзьце асцярожныя.", - "LabelMaxDaysForNextUpHelp": "Усталюйце максімальную колькасць дзён, на працягу якіх шоу павінна заставацца ў спісе \"Далей\", без яго прагляду.", + "LabelMaxDaysForNextUpHelp": "Усталюйце максімальную колькасць дзён, на працягу якіх серыя павінна заставацца ў спісе \"Наступны\", без прагляду.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Наступныя медыя-месцы будуць выдалены з вашай бібліятэкі", "Metadata": "Метададзеныя", "MinutesAfter": "хвілін пасля", @@ -1625,7 +1625,7 @@ "MessageNoAvailablePlugins": "Няма даступных плагінаў.", "MessageNoCollectionsAvailable": "Калекцыі дазваляюць карыстацца персаналізаванымі групамі фільмаў, серыялаў і альбомаў. Націсніце кнопку \"+\", каб пачаць ствараць калекцыі.", "MessageNoMovieSuggestionsAvailable": "Зараз няма прапаноў па фільмах. Пачніце глядзець і ацэньваць свае фільмы, а потым вярніцеся да прагляду рэкамендацый.", - "MessageNoNextUpItems": "Нічога не знойдзена. Пачніце глядзець свае шоу!", + "MessageNoNextUpItems": "Нічога не знойдзена. Пачніце глядзець свае серыялы!", "MessageNoPluginConfiguration": "Гэты плагін не мае налад для наладжвання.", "MessagePluginInstallError": "Пры ўсталёўцы плагіна адбылася памылка.", "NextChapter": "Наступная глава", From cfe682804228fafd6d705d39dda758c23eb59987 Mon Sep 17 00:00:00 2001 From: Troja Date: Tue, 16 Jul 2024 14:37:12 +0000 Subject: [PATCH 08/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index c0fed248b0..7653c51696 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -613,7 +613,7 @@ "HeaderIdentifyItemHelp": "Увядзіце адзін або некалькі крытэрыяў пошуку. Выдаліце крытэрыі, каб павялічыць вынікі пошуку.", "HeaderKodiMetadataHelp": "Каб уключыць або выключыць метададзеныя NFO, адрэдагуйце бібліятэку і знайдзіце раздзел «Захоўвальнікі метададзеных».", "HeaderLatestEpisodes": "Нядаўна дададзеныя эпізоды", - "HeaderLiveTvTunerSetup": "Налада ТБ-цюнэра ў прамым эфіры", + "HeaderLiveTvTunerSetup": "Налады цюнэра тэлеканалаў", "HeaderLoginFailure": "Памылка ўваходу", "HeaderMedia": "Медыя", "HeaderNewApiKey": "Новы ключ API", From 9f61863b7d06c787e525ee327ea03441c18324cf Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Tue, 16 Jul 2024 14:48:56 -0400 Subject: [PATCH 09/34] Fix home page crashing when using react-router lazy import --- .../experimental/routes/asyncRoutes/user.ts | 7 ++++- src/components/router/AsyncRoute.tsx | 27 ++++++++++++++----- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/apps/experimental/routes/asyncRoutes/user.ts b/src/apps/experimental/routes/asyncRoutes/user.ts index 10040cfc8f..851a7257c3 100644 --- a/src/apps/experimental/routes/asyncRoutes/user.ts +++ b/src/apps/experimental/routes/asyncRoutes/user.ts @@ -1,10 +1,15 @@ +import loadable from '@loadable/component'; import { AsyncRoute, AsyncRouteType } from '../../../../components/router/AsyncRoute'; export const ASYNC_USER_ROUTES: AsyncRoute[] = [ + { + path: 'home.html', + // FIXME: The use of tab manager for the home screen breaks when using lazy route handling + Component: loadable(() => import('../home')) + }, { path: 'quickconnect', page: 'quickConnect' }, { path: 'search.html', page: 'search' }, { path: 'userprofile.html', page: 'user/userprofile' }, - { path: 'home.html', page: 'home', type: AsyncRouteType.Experimental }, { path: 'movies.html', page: 'movies', type: AsyncRouteType.Experimental }, { path: 'tv.html', page: 'shows', type: AsyncRouteType.Experimental }, { path: 'music.html', page: 'music', type: AsyncRouteType.Experimental }, diff --git a/src/components/router/AsyncRoute.tsx b/src/components/router/AsyncRoute.tsx index e91f9e2114..34684d47ec 100644 --- a/src/components/router/AsyncRoute.tsx +++ b/src/components/router/AsyncRoute.tsx @@ -16,6 +16,8 @@ export interface AsyncRoute { page?: string /** The page type used to load the correct page element. */ type?: AsyncRouteType + /** Override for pages that don't support lazy importing */ + Component?: React.ComponentType | null; } const importPage = (page: string, type: AsyncRouteType) => { @@ -29,12 +31,23 @@ const importPage = (page: string, type: AsyncRouteType) => { } }; -export const toAsyncPageRoute = ({ path, page, type = AsyncRouteType.Stable }: AsyncRoute): RouteObject => ({ +export const toAsyncPageRoute = ({ path, - lazy: async () => { - const { default: Component } = await importPage(page ?? path, type); - return { - Component - }; + page, + Component, + type = AsyncRouteType.Stable +}: AsyncRoute): RouteObject => { + if (Component) { + return { path, Component }; } -}); + + return { + path, + lazy: async () => { + const { default: Page } = await importPage(page ?? path, type); + return { + Component: Page + }; + } + }; +}; From 175b2d6c858be7553cac8ae450403329faffa89c Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Tue, 16 Jul 2024 16:30:29 -0400 Subject: [PATCH 10/34] Unify routers and use lazy for app layouts --- src/RootApp.tsx | 32 +++++++----------- src/RootAppRouter.tsx | 17 +++++++--- src/apps/dashboard/AppLayout.tsx | 13 +++----- src/apps/dashboard/routes/routes.tsx | 5 ++- src/apps/experimental/AppLayout.tsx | 4 +-- src/apps/experimental/routes/routes.tsx | 4 +-- src/apps/stable/AppRouter.tsx | 43 ------------------------- src/apps/stable/routes/routes.tsx | 2 +- 8 files changed, 33 insertions(+), 87 deletions(-) delete mode 100644 src/apps/stable/AppRouter.tsx diff --git a/src/RootApp.tsx b/src/RootApp.tsx index afd9831474..53baea3c24 100644 --- a/src/RootApp.tsx +++ b/src/RootApp.tsx @@ -1,4 +1,3 @@ -import loadable from '@loadable/component'; import { History } from '@remix-run/router'; import { QueryClientProvider } from '@tanstack/react-query'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; @@ -8,26 +7,17 @@ import { ApiProvider } from 'hooks/useApi'; import { WebConfigProvider } from 'hooks/useWebConfig'; import { queryClient } from 'utils/query/queryClient'; -const StableAppRouter = loadable(() => import('./apps/stable/AppRouter')); -const RootAppRouter = loadable(() => import('./RootAppRouter')); +import RootAppRouter from 'RootAppRouter'; -const RootApp = ({ history }: Readonly<{ history: History }>) => { - const layoutMode = localStorage.getItem('layout'); - const isExperimentalLayout = layoutMode === 'experimental'; - - return ( - - - - {isExperimentalLayout ? - : - - } - - - - - ); -}; +const RootApp = ({ history }: Readonly<{ history: History }>) => ( + + + + + + + + +); export default RootApp; diff --git a/src/RootAppRouter.tsx b/src/RootAppRouter.tsx index 1fc2293703..8d63a6724d 100644 --- a/src/RootAppRouter.tsx +++ b/src/RootAppRouter.tsx @@ -4,21 +4,26 @@ import React from 'react'; import { RouterProvider, createHashRouter, - Outlet + Outlet, + useLocation } from 'react-router-dom'; import { EXPERIMENTAL_APP_ROUTES } from 'apps/experimental/routes/routes'; import AppHeader from 'components/AppHeader'; import Backdrop from 'components/Backdrop'; import { useLegacyRouterSync } from 'hooks/useLegacyRouterSync'; -import { DASHBOARD_APP_ROUTES } from 'apps/dashboard/routes/routes'; +import { DASHBOARD_APP_PATHS, DASHBOARD_APP_ROUTES } from 'apps/dashboard/routes/routes'; import UserThemeProvider from 'themes/UserThemeProvider'; +import { STABLE_APP_ROUTES } from 'apps/stable/routes/routes'; + +const layoutMode = localStorage.getItem('layout'); +const isExperimentalLayout = layoutMode === 'experimental'; const router = createHashRouter([ { element: , children: [ - ...EXPERIMENTAL_APP_ROUTES, + ...(isExperimentalLayout ? EXPERIMENTAL_APP_ROUTES : STABLE_APP_ROUTES), ...DASHBOARD_APP_ROUTES ] } @@ -35,10 +40,14 @@ export default function RootAppRouter({ history }: Readonly<{ history: History}> * NOTE: The app will crash if these get removed from the DOM. */ function RootAppLayout() { + const location = useLocation(); + const isNewLayoutPath = Object.values(DASHBOARD_APP_PATHS) + .some(path => location.pathname.startsWith(`/${path}`)); + return ( - + diff --git a/src/apps/dashboard/AppLayout.tsx b/src/apps/dashboard/AppLayout.tsx index ff47e53cc6..2d954acc2e 100644 --- a/src/apps/dashboard/AppLayout.tsx +++ b/src/apps/dashboard/AppLayout.tsx @@ -13,23 +13,20 @@ import { useApi } from 'hooks/useApi'; import AppTabs from './components/AppTabs'; import AppDrawer from './components/drawer/AppDrawer'; +import { DASHBOARD_APP_PATHS } from './routes/routes'; import './AppOverrides.scss'; -interface AppLayoutProps { - drawerlessPaths: string[] -} +const DRAWERLESS_PATHS = [ DASHBOARD_APP_PATHS.MetadataManager ]; -const AppLayout: FC = ({ - drawerlessPaths -}) => { +export const Component: FC = () => { const [ isDrawerActive, setIsDrawerActive ] = useState(false); const location = useLocation(); const { user } = useApi(); const isMediumScreen = useMediaQuery((t: Theme) => t.breakpoints.up('md')); const isDrawerAvailable = Boolean(user) - && !drawerlessPaths.some(path => location.pathname.startsWith(`/${path}`)); + && !DRAWERLESS_PATHS.some(path => location.pathname.startsWith(`/${path}`)); const isDrawerOpen = isDrawerActive && isDrawerAvailable; const onToggleDrawer = useCallback(() => { @@ -86,5 +83,3 @@ const AppLayout: FC = ({ ); }; - -export default AppLayout; diff --git a/src/apps/dashboard/routes/routes.tsx b/src/apps/dashboard/routes/routes.tsx index 16385ddf3e..bd7d926f03 100644 --- a/src/apps/dashboard/routes/routes.tsx +++ b/src/apps/dashboard/routes/routes.tsx @@ -1,13 +1,12 @@ import React from 'react'; import { RouteObject } from 'react-router-dom'; -import AppLayout from '../AppLayout'; import ConnectionRequired from 'components/ConnectionRequired'; import { ASYNC_ADMIN_ROUTES } from './_asyncRoutes'; import { toAsyncPageRoute } from 'components/router/AsyncRoute'; import { toViewManagerPageRoute } from 'components/router/LegacyRoute'; import { LEGACY_ADMIN_ROUTES } from './_legacyRoutes'; import ServerContentPage from 'components/ServerContentPage'; -import ErrorBoundary from '../../../components/router/ErrorBoundary'; +import ErrorBoundary from 'components/router/ErrorBoundary'; export const DASHBOARD_APP_PATHS = { Dashboard: 'dashboard', @@ -20,7 +19,7 @@ export const DASHBOARD_APP_ROUTES: RouteObject[] = [ element: , children: [ { - element: , + lazy: () => import('../AppLayout'), children: [ { path: DASHBOARD_APP_PATHS.Dashboard, diff --git a/src/apps/experimental/AppLayout.tsx b/src/apps/experimental/AppLayout.tsx index fd02220a7f..a91cbcad00 100644 --- a/src/apps/experimental/AppLayout.tsx +++ b/src/apps/experimental/AppLayout.tsx @@ -15,7 +15,7 @@ import AppDrawer, { isDrawerPath } from './components/drawers/AppDrawer'; import './AppOverrides.scss'; -const AppLayout = () => { +export const Component = () => { const [ isDrawerActive, setIsDrawerActive ] = useState(false); const { user } = useApi(); const location = useLocation(); @@ -76,5 +76,3 @@ const AppLayout = () => { ); }; - -export default AppLayout; diff --git a/src/apps/experimental/routes/routes.tsx b/src/apps/experimental/routes/routes.tsx index c9e32899dc..b771df2581 100644 --- a/src/apps/experimental/routes/routes.tsx +++ b/src/apps/experimental/routes/routes.tsx @@ -8,8 +8,6 @@ import { toViewManagerPageRoute } from 'components/router/LegacyRoute'; import { toRedirectRoute } from 'components/router/Redirect'; import ErrorBoundary from 'components/router/ErrorBoundary'; -import AppLayout from '../AppLayout'; - import { ASYNC_USER_ROUTES } from './asyncRoutes'; import { LEGACY_PUBLIC_ROUTES, LEGACY_USER_ROUTES } from './legacyRoutes'; import VideoPage from './video'; @@ -17,7 +15,7 @@ import VideoPage from './video'; export const EXPERIMENTAL_APP_ROUTES: RouteObject[] = [ { path: '/*', - element: , + lazy: () => import('../AppLayout'), children: [ { /* User routes: Any child route of this layout is authenticated */ diff --git a/src/apps/stable/AppRouter.tsx b/src/apps/stable/AppRouter.tsx deleted file mode 100644 index 40b5c2aa39..0000000000 --- a/src/apps/stable/AppRouter.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { History } from '@remix-run/router'; -import React from 'react'; -import { Outlet, RouterProvider, createHashRouter, useLocation } from 'react-router-dom'; - -import { useLegacyRouterSync } from 'hooks/useLegacyRouterSync'; -import { STABLE_APP_ROUTES } from './routes/routes'; -import Backdrop from 'components/Backdrop'; -import AppHeader from 'components/AppHeader'; -import { DASHBOARD_APP_PATHS, DASHBOARD_APP_ROUTES } from 'apps/dashboard/routes/routes'; -import UserThemeProvider from 'themes/UserThemeProvider'; - -const router = createHashRouter([{ - element: , - children: [ - ...STABLE_APP_ROUTES, - ...DASHBOARD_APP_ROUTES - ] -}]); - -export default function StableAppRouter({ history }: Readonly<{ history: History }>) { - useLegacyRouterSync({ router, history }); - - return ; -} - -/** - * Layout component that renders legacy components required on all pages. - * NOTE: The app will crash if these get removed from the DOM. - */ -function StableAppLayout() { - const location = useLocation(); - const isNewLayoutPath = Object.values(DASHBOARD_APP_PATHS) - .some(path => location.pathname.startsWith(`/${path}`)); - - return ( - - - - - - - ); -} diff --git a/src/apps/stable/routes/routes.tsx b/src/apps/stable/routes/routes.tsx index e5f800d20b..0eecd6b12d 100644 --- a/src/apps/stable/routes/routes.tsx +++ b/src/apps/stable/routes/routes.tsx @@ -16,7 +16,7 @@ import { LEGACY_PUBLIC_ROUTES, LEGACY_USER_ROUTES } from './legacyRoutes'; export const STABLE_APP_ROUTES: RouteObject[] = [ { path: '/*', - element: , + Component: AppLayout, children: [ { /* User routes */ From 255d982687afedecb785763b6bde6f1f337c5a5f Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Tue, 16 Jul 2024 17:05:32 -0400 Subject: [PATCH 11/34] Fix home page loading with lazy --- package-lock.json | 32 --------------- package.json | 1 - .../experimental/routes/asyncRoutes/user.ts | 7 +--- src/apps/experimental/routes/home.tsx | 41 ++++++++----------- src/components/router/AsyncRoute.tsx | 7 ---- 5 files changed, 18 insertions(+), 70 deletions(-) diff --git a/package-lock.json b/package-lock.json index 62cbc87dc9..10910e50e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,6 @@ "@fontsource/noto-sans-tc": "5.0.19", "@jellyfin/libass-wasm": "4.2.1", "@jellyfin/sdk": "0.0.0-unstable.202407020501", - "@loadable/component": "5.16.4", "@mui/icons-material": "5.15.19", "@mui/material": "5.15.19", "@mui/x-data-grid": "7.6.1", @@ -4124,27 +4123,6 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, - "node_modules/@loadable/component": { - "version": "5.16.4", - "resolved": "https://registry.npmjs.org/@loadable/component/-/component-5.16.4.tgz", - "integrity": "sha512-fJWxx9b5WHX90QKmizo9B+es2so8DnBthI1mbflwCoOyvzEwxiZ/SVDCTtXEnHG72/kGBdzr297SSIekYtzSOQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.18", - "hoist-non-react-statics": "^3.3.1", - "react-is": "^16.12.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "react": "^16.3.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", @@ -26986,16 +26964,6 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, - "@loadable/component": { - "version": "5.16.4", - "resolved": "https://registry.npmjs.org/@loadable/component/-/component-5.16.4.tgz", - "integrity": "sha512-fJWxx9b5WHX90QKmizo9B+es2so8DnBthI1mbflwCoOyvzEwxiZ/SVDCTtXEnHG72/kGBdzr297SSIekYtzSOQ==", - "requires": { - "@babel/runtime": "^7.12.18", - "hoist-non-react-statics": "^3.3.1", - "react-is": "^16.12.0" - } - }, "@mapbox/node-pre-gyp": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", diff --git a/package.json b/package.json index 6745ab4abe..165fc927f3 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,6 @@ "@fontsource/noto-sans-tc": "5.0.19", "@jellyfin/libass-wasm": "4.2.1", "@jellyfin/sdk": "0.0.0-unstable.202407020501", - "@loadable/component": "5.16.4", "@mui/icons-material": "5.15.19", "@mui/material": "5.15.19", "@mui/x-data-grid": "7.6.1", diff --git a/src/apps/experimental/routes/asyncRoutes/user.ts b/src/apps/experimental/routes/asyncRoutes/user.ts index 851a7257c3..20af699bf1 100644 --- a/src/apps/experimental/routes/asyncRoutes/user.ts +++ b/src/apps/experimental/routes/asyncRoutes/user.ts @@ -1,12 +1,7 @@ -import loadable from '@loadable/component'; import { AsyncRoute, AsyncRouteType } from '../../../../components/router/AsyncRoute'; export const ASYNC_USER_ROUTES: AsyncRoute[] = [ - { - path: 'home.html', - // FIXME: The use of tab manager for the home screen breaks when using lazy route handling - Component: loadable(() => import('../home')) - }, + { path: 'home.html', page: 'home', type: AsyncRouteType.Experimental }, { path: 'quickconnect', page: 'quickConnect' }, { path: 'search.html', page: 'search' }, { path: 'userprofile.html', page: 'user/userprofile' }, diff --git a/src/apps/experimental/routes/home.tsx b/src/apps/experimental/routes/home.tsx index ae48e60055..f1288b5e0f 100644 --- a/src/apps/experimental/routes/home.tsx +++ b/src/apps/experimental/routes/home.tsx @@ -2,14 +2,13 @@ import React, { useCallback, useEffect, useMemo, useRef } from 'react'; import { useSearchParams } from 'react-router-dom'; import globalize from '../../../scripts/globalize'; -import LibraryMenu from '../../../scripts/libraryMenu'; import { clearBackdrop } from '../../../components/backdrop/backdrop'; import layoutManager from '../../../components/layoutManager'; -import * as mainTabsManager from '../../../components/maintabsmanager'; +import Page from '../../../components/Page'; + import '../../../elements/emby-tabs/emby-tabs'; import '../../../elements/emby-button/emby-button'; import '../../../elements/emby-scroller/emby-scroller'; -import Page from '../../../components/Page'; type OnResumeOptions = { autoFocus?: boolean; @@ -29,12 +28,14 @@ const Home = () => { const [ searchParams ] = useSearchParams(); const initialTabIndex = parseInt(searchParams.get('tab') ?? '0', 10); + const libraryMenu = useMemo(async () => ((await import('../../../scripts/libraryMenu')).default), []); + const mainTabsManager = useMemo(() => import('../../../components/maintabsmanager'), []); const tabController = useRef(); const tabControllers = useMemo(() => [], []); const element = useRef(null); - const setTitle = () => { - LibraryMenu.setTitle(null); + const setTitle = async () => { + (await libraryMenu).setTitle(null); }; const getTabs = () => { @@ -78,18 +79,6 @@ const Home = () => { }); }, [ tabControllers ]); - const onViewDestroy = useCallback(() => { - if (tabControllers) { - tabControllers.forEach(function (t) { - if (t.destroy) { - t.destroy(); - } - }); - } - - tabController.current = null; - }, [ tabControllers ]); - const loadTab = useCallback((index: number, previousIndex: number | null) => { getTabController(index).then((controller) => { const refresh = !controller.refreshed; @@ -118,19 +107,23 @@ const Home = () => { loadTab(newIndex, previousIndex); }, [ loadTab, tabControllers ]); - const onResume = useCallback(() => { - setTitle(); + const onSetTabs = useCallback(async () => { + (await mainTabsManager).setTabs(element.current, initialTabIndex, getTabs, getTabContainers, null, onTabChange, false); + }, [ initialTabIndex, mainTabsManager, onTabChange ]); + + const onResume = useCallback(async () => { + void setTitle(); clearBackdrop(); const currentTabController = tabController.current; if (!currentTabController) { - mainTabsManager.selectedTabIndex(initialTabIndex); + (await mainTabsManager).selectedTabIndex(initialTabIndex); } else if (currentTabController?.onResume) { currentTabController.onResume({}); } (document.querySelector('.skinHeader') as HTMLDivElement).classList.add('noHomeButtonHeader'); - }, [ initialTabIndex ]); + }, [ initialTabIndex, mainTabsManager ]); const onPause = useCallback(() => { const currentTabController = tabController.current; @@ -141,13 +134,13 @@ const Home = () => { }, []); useEffect(() => { - mainTabsManager.setTabs(element.current, initialTabIndex, getTabs, getTabContainers, null, onTabChange, false); + void onSetTabs(); - onResume(); + void onResume(); return () => { onPause(); }; - }, [ initialTabIndex, onPause, onResume, onTabChange, onViewDestroy ]); + }, [ onPause, onResume, onSetTabs ]); return (
diff --git a/src/components/router/AsyncRoute.tsx b/src/components/router/AsyncRoute.tsx index 34684d47ec..80e393d134 100644 --- a/src/components/router/AsyncRoute.tsx +++ b/src/components/router/AsyncRoute.tsx @@ -16,8 +16,6 @@ export interface AsyncRoute { page?: string /** The page type used to load the correct page element. */ type?: AsyncRouteType - /** Override for pages that don't support lazy importing */ - Component?: React.ComponentType | null; } const importPage = (page: string, type: AsyncRouteType) => { @@ -34,13 +32,8 @@ const importPage = (page: string, type: AsyncRouteType) => { export const toAsyncPageRoute = ({ path, page, - Component, type = AsyncRouteType.Stable }: AsyncRoute): RouteObject => { - if (Component) { - return { path, Component }; - } - return { path, lazy: async () => { From 5f8ccfae2201383584e7b74e0e9d0801a6cfc76d Mon Sep 17 00:00:00 2001 From: Troja Date: Tue, 16 Jul 2024 20:24:19 +0000 Subject: [PATCH 12/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 7653c51696..da2e158142 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -71,7 +71,7 @@ "AllowHWTranscodingHelp": "Дазвольце цюнэру перакадзіраваць патокі на ляту. Гэта можа дапамагчы паменшыць перакадзіраванне, неабходнае серверу.", "AllowFfmpegThrottlingHelp": "Калі перакадзіраванне або рэмукс будзе дастаткова далёка ад бягучай пазіцыі прайгравання, прыпыніце працэс, каб ён спажываў менш рэсурсаў. Гэта найбольш карысна пры праглядзе без частага пошуку. Выключыце гэта, калі ўзнікнуць праблемы з прайграваннем.", "AllowOnTheFlySubtitleExtractionHelp": "Убудаваныя субтытры можна атрымаць з відэа і даставіць кліентам у выглядзе звычайнага тэксту, каб прадухіліць перакадзіраванне відэа. У некаторых сістэмах гэта можа заняць шмат часу і прывесці да спынення прайгравання відэа падчас працэсу здабывання. Адключыце гэта, каб убудаваныя субтытры запісваліся пры перакадзіраванні відэа, калі яны не падтрымліваюцца кліенцкай прыладай.", - "AllowRemoteAccessHelp": "Калі не пазначыць, усе аддаленыя злучэнні будуць заблакіраваны.", + "AllowRemoteAccessHelp": "Калі не пазначыць, усе аддаленыя падключэнні будуць заблакіраваны.", "AllowTonemappingHelp": "Адлюстраванне тонаў можа пераўтварыць дынамічны дыяпазон відэа з HDR у SDR, захоўваючы дэталі выявы і колеры, якія з'яўляюцца вельмі важнай інфармацыяй для прадстаўлення арыгінальнай сцэны. У цяперашні час працуе толькі з відэа 10bit HDR10, HLG і DoVi. Для гэтага патрабуецца адпаведнае асяроддзе выканання GPGPU.", "AlwaysPlaySubtitles": "Заўсёды граць", "ApiKeysCaption": "Спіс уключаных на дадзены момант ключоў API", @@ -1474,7 +1474,7 @@ "HeaderCancelSeries": "Адмена серыі", "HeaderCodecProfileHelp": "Профілі кодэкаў паказваюць абмежаванні прылады пры прайграванні пэўных кодэкаў. Калі дзейнічае абмежаванне, мультымедыя будзе перакадзіравана, нават калі кодэк настроены для прамога прайгравання.", "HeaderConfirmPluginInstallation": "Пацвердзіце ўстаноўку плагіна", - "HeaderConnectionFailure": "Збой злучэння", + "HeaderConnectionFailure": "Збой падлучэння", "HeaderContainerProfile": "Профіль кантэйнера", "HeaderContainerProfileHelp": "Профілі кантэйнераў паказваюць абмежаванні прылады пры прайграванні пэўных фарматаў. Калі дзейнічае абмежаванне, медыяфайл будзе перакадзіраваны, нават калі фармат настроены для прамога прайгравання.", "HeaderDefaultRecordingSettings": "Налады запісу па змаўчанні", @@ -1790,5 +1790,7 @@ "DeleteName": "Выдаліць {0}", "EnableSmoothScroll": "Уключыць плаўную пракрутку", "ConfirmDeleteSeries": "Выдаленне гэтага серыялу прывядзе да выдалення ЎСІХ {0} эпізодаў як з файлавай сістэмы, так і з вашай медыятэкі. Вы ўпэўнены, што хочаце працягнуць?", - "ConfirmDeleteLyrics": "Выдаленне гэтых тэкстаў песен прывядзе да іх выдалення як з файлавай сістэмы, так і з вашай медыятэкі. Вы ўпэўнены, што хочаце працягнуць?" + "ConfirmDeleteLyrics": "Выдаленне гэтых тэкстаў песен прывядзе да іх выдалення як з файлавай сістэмы, так і з вашай медыятэкі. Вы ўпэўнены, што хочаце працягнуць?", + "EnableTrueHdHelp": "Уключайце, толькі калі ваша прылада падтрымлівае TrueHD або падключана да сумяшчальнага аўдыяпрыёмніка, у адваротным выпадку гэта можа прывесці да збою прайгравання.", + "EnableDtsHelp": "Уключайце, толькі калі ваша прылада падтрымлівае DTS або падключана да сумяшчальнага аўдыяпрыёмніка, у адваротным выпадку гэта можа прывесці да збою прайгравання." } From d8ff541fa11e56f7b28e45761f2caa60aba63e45 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Jul 2024 23:08:11 +0000 Subject: [PATCH 13/34] Update dependency sass to v1.77.7 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 62cbc87dc9..d61926198e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -110,7 +110,7 @@ "postcss-loader": "8.1.1", "postcss-preset-env": "9.6.0", "postcss-scss": "4.0.9", - "sass": "1.77.6", + "sass": "1.77.7", "sass-loader": "14.2.1", "source-map-loader": "5.0.0", "speed-measure-webpack-plugin": "1.5.0", @@ -18337,9 +18337,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.77.6", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", - "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==", + "version": "1.77.7", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.7.tgz", + "integrity": "sha512-9ywH75cO+rLjbrZ6en3Gp8qAMwPGBapFtlsMJoDTkcMU/bSe5a6cjKVUn5Jr4Gzg5GbP3HE8cm+02pLCgcoMow==", "dev": true, "license": "MIT", "dependencies": { @@ -37058,9 +37058,9 @@ "dev": true }, "sass": { - "version": "1.77.6", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", - "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==", + "version": "1.77.7", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.7.tgz", + "integrity": "sha512-9ywH75cO+rLjbrZ6en3Gp8qAMwPGBapFtlsMJoDTkcMU/bSe5a6cjKVUn5Jr4Gzg5GbP3HE8cm+02pLCgcoMow==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", diff --git a/package.json b/package.json index 6745ab4abe..c25a40f09b 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "postcss-loader": "8.1.1", "postcss-preset-env": "9.6.0", "postcss-scss": "4.0.9", - "sass": "1.77.6", + "sass": "1.77.7", "sass-loader": "14.2.1", "source-map-loader": "5.0.0", "speed-measure-webpack-plugin": "1.5.0", From eaee9a975afa33ebdf6833c6b203e876abb548f9 Mon Sep 17 00:00:00 2001 From: Troja Date: Wed, 17 Jul 2024 05:11:41 +0000 Subject: [PATCH 14/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index da2e158142..0883edd8bb 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -129,7 +129,7 @@ "ButtonManualLogin": "Уваход уручную", "AskAdminToCreateLibrary": "Папрасіце адміністратара стварыць бібліятэку.", "Backdrops": "Заднікі", - "ButtonUseQuickConnect": "Выкарыстоўваць Quick Connect", + "ButtonUseQuickConnect": "Выкарыстаць Quick Connect", "Casual": "Паўсядзённы", "ButtonChangeServer": "Змяніць сервер", "AspectRatio": "Суадносіны бакоў", @@ -671,7 +671,7 @@ "Home": "Галоўная", "HomeVideosPhotos": "Хатнія відэа і фота", "Horizontal": "Гарызантальны", - "HttpsRequiresCert": "Каб уключыць бяспечныя злучэнні, вам трэба будзе прадаставіць надзейны сертыфікат SSL, напрыклад Let's Encrypt. Калі ласка, падайце сертыфікат або адключыце бяспечныя злучэнні.", + "HttpsRequiresCert": "Каб уключыць бяспечныя падлучэння, вам спатрэбіцца прадаставіць надзейны SSL-сертыфікат, напрыклад, Let's Encrypt. Калі ласка, або прадастаўце сертыфікат, або адключыце бяспечныя злучэнні.", "IgnoreDtsHelp": "Адключэнне гэтай опцыі можа вырашыць некаторыя праблемы, напрыклад. адсутнічае аўдыё на каналах з асобнымі аўдыя і відэаплынямі.", "ItemCount": "{0} элементаў", "ItemDetails": "Дэталі прадмета", From eb6e09fd6afa78d8a64dc4b6045c8bb3e9bd4fae Mon Sep 17 00:00:00 2001 From: Troja Date: Wed, 17 Jul 2024 07:32:27 +0000 Subject: [PATCH 15/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 44 +++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 0883edd8bb..36e61cca1b 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -71,7 +71,7 @@ "AllowHWTranscodingHelp": "Дазвольце цюнэру перакадзіраваць патокі на ляту. Гэта можа дапамагчы паменшыць перакадзіраванне, неабходнае серверу.", "AllowFfmpegThrottlingHelp": "Калі перакадзіраванне або рэмукс будзе дастаткова далёка ад бягучай пазіцыі прайгравання, прыпыніце працэс, каб ён спажываў менш рэсурсаў. Гэта найбольш карысна пры праглядзе без частага пошуку. Выключыце гэта, калі ўзнікнуць праблемы з прайграваннем.", "AllowOnTheFlySubtitleExtractionHelp": "Убудаваныя субтытры можна атрымаць з відэа і даставіць кліентам у выглядзе звычайнага тэксту, каб прадухіліць перакадзіраванне відэа. У некаторых сістэмах гэта можа заняць шмат часу і прывесці да спынення прайгравання відэа падчас працэсу здабывання. Адключыце гэта, каб убудаваныя субтытры запісваліся пры перакадзіраванні відэа, калі яны не падтрымліваюцца кліенцкай прыладай.", - "AllowRemoteAccessHelp": "Калі не пазначыць, усе аддаленыя падключэнні будуць заблакіраваны.", + "AllowRemoteAccessHelp": "Калі не пазначыць, усе аддаленыя падлучэнні будуць заблакіраваны.", "AllowTonemappingHelp": "Адлюстраванне тонаў можа пераўтварыць дынамічны дыяпазон відэа з HDR у SDR, захоўваючы дэталі выявы і колеры, якія з'яўляюцца вельмі важнай інфармацыяй для прадстаўлення арыгінальнай сцэны. У цяперашні час працуе толькі з відэа 10bit HDR10, HLG і DoVi. Для гэтага патрабуецца адпаведнае асяроддзе выканання GPGPU.", "AlwaysPlaySubtitles": "Заўсёды граць", "ApiKeysCaption": "Спіс уключаных на дадзены момант ключоў API", @@ -83,8 +83,8 @@ "AllEpisodes": "Усе эпізоды", "AllChannels": "Усе каналы", "AddToFavorites": "Дадаць у абранае", - "AllowedRemoteAddressesHelp": "Спіс IP-адрасоў або запісаў IP/сеткавай маскі, для сетак, якім будзе дазволена падключацца аддалена. Калі пакінуць пустым, будуць дазволены ўсе аддаленыя адрасы.", - "AllowRemoteAccess": "Дазволіць аддаленыя падключэнні да гэтага сервера", + "AllowedRemoteAddressesHelp": "Спіс IP-адрасоў або запісаў IP/сеткавай маскі, для сетак, якім будзе дазволена падлучацца аддалена. Калі пакінуць пустым, будуць дазволены ўсе аддаленыя адрасы.", + "AllowRemoteAccess": "Дазволіць аддаленыя падлучэнні да гэтага сервера", "Arranger": "Аранжыроўшчык", "AllComplexFormats": "Усе складаныя фарматы (ASS, SSA, VobSub, PGS, SUB, IDX, ...)", "AlbumArtist": "Выканаўца альбома", @@ -105,7 +105,7 @@ "ButtonSpace": "Прабел", "AsManyAsPossible": "Як мага больш", "ButtonPause": "Паўза", - "ButtonNextTrack": "Наступны трэк", + "ButtonNextTrack": "Наступная дарожка", "Audio": "Аўдыё", "ButtonGotIt": "Зразумела", "ButtonSignIn": "Увайсці", @@ -138,7 +138,7 @@ "ButtonBack": "Назад", "ButtonOpen": "Адчыніць", "ButtonRevoke": "Адклікаць", - "ButtonPreviousTrack": "Папярэдні трэк", + "ButtonPreviousTrack": "Папярэдняя дарожка", "ButtonSend": "Адправіць", "ButtonPlayer": "Прайгравальнік", "ButtonParentalControl": "Бацькоўскі кантроль", @@ -224,7 +224,7 @@ "LabelSize": "Памер", "LabelSkipBackLength": "Даўжыня пасу назад", "LabelSyncPlayPlaybackDiff": "Розніца ў часе прайгравання", - "LabelTrackNumber": "Нумар трэка", + "LabelTrackNumber": "Нумар дарожкі", "LabelTranscodes": "Перакадзіруе", "LabelTriggerType": "Тып трыгера", "LabelMetadataPath": "Шлях метададзеных", @@ -289,7 +289,7 @@ "Digital": "Лічбавы", "Director": "Рэжысёр", "Directors": "Рэжысёры", - "Disconnect": "Адключыцца", + "Disconnect": "Адлучыцца", "Display": "Дысплей", "EnableBlurHashHelp": "Выявы, якія яшчэ загружаюцца, будуць адлюстроўвацца з унікальным запаўняльнікам.", "EnableFasterAnimationsHelp": "Выкарыстоўваць хуткія анімацыі і пераходы.", @@ -347,7 +347,7 @@ "Controls": "Элементы кіравання", "LabelRefreshMode": "Рэжым абнаўлення", "LabelSendNotificationToUsers": "Адправіць апавяшчэнне на", - "LabelSkipIfAudioTrackPresent": "Прапусціць, калі аўдыё дарожка па змаўчанні адпавядае мове спампоўкі", + "LabelSkipIfAudioTrackPresent": "Прапусціць, калі аўдыёдарожка па змаўчанні адпавядае мове спампоўкі", "LabelSkipIfGraphicalSubsPresent": "Прапусціць, калі відэа ўжо змяшчае ўбудаваныя субтытры", "LabelSkipIfGraphicalSubsPresentHelp": "Захаванне тэкставых версій субтытраў прывядзе да больш эфектыўнай дастаўкі і знізіць верагоднасць перакадзіравання відэа.", "LabelSortBy": "Сартаваць па", @@ -540,7 +540,7 @@ "ThumbCard": "Эскіз-карта", "Thursday": "Чацвер", "TonemappingRangeHelp": "Выберыце выхадны каляровы дыяпазон. Аўто - гэта тое ж самае, што і дыяпазон уводу.", - "TrackCount": "{0} трэкаў", + "TrackCount": "{0} дарожак", "Trailers": "Трэйлеры", "Transcoding": "Перакадзіроўка", "TV": "ТБ", @@ -589,7 +589,7 @@ "H264CrfHelp": "\"Каэфіцыент пастаяннай хуткасці\" (CRF) - гэта налада якасці па змаўчанні для праграмных кадавальнікаў x264 і x265. Вы можаце ўсталяваць значэнні ад 0 да 51, дзе больш нізкія значэнні прывядуць да лепшай якасці (за кошт большага памеру файла). Разумныя значэнні знаходзяцца паміж 18 і 28. Значэнне па змаўчанні для x264 роўна 23, а для x265 - 28, так што вы можаце выкарыстоўваць гэта як адпраўную кропку. Апаратныя кадавальнікі не выкарыстоўваюць гэтыя параметры.", "HDPrograms": "HD-праграмы", "AnamorphicVideoNotSupported": "Анаморфнае відэа не падтрымліваецца", - "SecondaryAudioNotSupported": "Другасныя гукавыя дарожкі не падтрымліваюцца", + "SecondaryAudioNotSupported": "Дадатковыя аўдыёдарожкі не падтрымліваюцца", "RefFramesNotSupported": "Апорныя кадры не падтрымліваюцца", "VideoBitDepthNotSupported": "Разраднасць відэа не падтрымліваецца", "HardwareAccelerationWarning": "Уключэнне апаратнага паскарэння можа выклікаць нестабільнасць у некаторых асяроддзях. Пераканайцеся, што ваша аперацыйная сістэма і відэадрайверы цалкам абноўлены. Калі ў вас узніклі цяжкасці з прайграваннем відэа пасля ўключэння, вам трэба будзе змяніць наладу назад на \"Няма\".", @@ -660,7 +660,7 @@ "HeaderSyncPlayPlaybackSettings": "Прайграванне", "HeaderSyncPlayTimeSyncSettings": "Сінхранізацыя часу", "HeaderSystemDlnaProfiles": "Сістэмныя профілі", - "HeaderTracks": "Трэкі", + "HeaderTracks": "Дарожкі", "HeaderTranscodingProfile": "Профіль транскадавання", "HeaderTranscodingProfileHelp": "Дадайце профілі перакадзіравання, каб паказаць, якія фарматы трэба выкарыстоўваць, калі патрабуецца перакадзіраванне.", "HeaderUser": "Карыстальнік", @@ -671,7 +671,7 @@ "Home": "Галоўная", "HomeVideosPhotos": "Хатнія відэа і фота", "Horizontal": "Гарызантальны", - "HttpsRequiresCert": "Каб уключыць бяспечныя падлучэння, вам спатрэбіцца прадаставіць надзейны SSL-сертыфікат, напрыклад, Let's Encrypt. Калі ласка, або прадастаўце сертыфікат, або адключыце бяспечныя злучэнні.", + "HttpsRequiresCert": "Каб уключыць бяспечныя падлучэння, вам спатрэбіцца прадаставіць надзейны SSL-сертыфікат, напрыклад, Let's Encrypt. Калі ласка, або прадастаўце сертыфікат, або адлучыце бяспечныя злучэнні.", "IgnoreDtsHelp": "Адключэнне гэтай опцыі можа вырашыць некаторыя праблемы, напрыклад. адсутнічае аўдыё на каналах з асобнымі аўдыя і відэаплынямі.", "ItemCount": "{0} элементаў", "ItemDetails": "Дэталі прадмета", @@ -769,7 +769,7 @@ "LabelPasswordRecoveryPinCode": "PIN-код", "LabelPasswordResetProvider": "Пастаўшчык скіду пароля", "LabelPersonRoleHelp": "Прыклад: кіроўца грузавіка з марожаным", - "LabelPlayDefaultAudioTrack": "Прайграванне аўдыё дарожкі па змаўчанні незалежна ад мовы", + "LabelPlayDefaultAudioTrack": "Прайграванне аўдыёдарожкі па змаўчанні незалежна ад мовы", "LabelPlayerDimensions": "Памеры плэера", "LabelPleaseRestart": "Змены ўступяць у сілу пасля ручной перазагрузкі вэб-кліента.", "LabelPostProcessor": "Прыкладанне для пост-апрацоўкі", @@ -855,7 +855,7 @@ "ColorSpace": "Каляровая прастора", "ColorTransfer": "Колераперадача", "CommunityRating": "Рэйтынг супольнасці", - "Connect": "Падключыцца", + "Connect": "Падлучыцца", "ContinueWatching": "Працягнуць прагляд", "Continuing": "Працягваецца", "CopyStreamURL": "Скапіраваць URL патоку", @@ -1249,7 +1249,7 @@ "RefreshMetadata": "Абнавіць метададзеныя", "Play": "Прайграць", "RefreshQueued": "Абнавіць у чарзе.", - "RememberAudioSelectionsHelp": "Паспрабуйце ўсталяваць аўдыё дарожку, якая найбольш адпавядае апошняму відэа.", + "RememberAudioSelectionsHelp": "Паспрабуйце ўсталяваць аўдыёдарожку, якая найбольш адпавядае апошняму відэа.", "RememberSubtitleSelectionsHelp": "Паспрабуйце ўсталяваць дарожку субтытраў, якая найбольш адпавядае апошняму відэа.", "Remixer": "Рэміксер", "RepeatAll": "Паўтарыце ўсё", @@ -1318,7 +1318,7 @@ "TheseSettingsAffectSubtitlesOnThisDevice": "Гэтыя налады ўплываюць на субтытры на гэтай прыладзе", "Thumb": "Эскіз", "TonemappingAlgorithmHelp": "Тональнае адлюстраванне можна дакладна наладзіць. Калі вы не знаёмыя з гэтымі параметрамі, проста захавайце стандартныя. Рэкамендаванае значэнне - \"BT.2390\".", - "Track": "Трэк", + "Track": "Дарожка", "TypeOptionPluralBook": "Кнігі", "UninstallPluginConfirmation": "Вы ўпэўнены, што хочаце выдаліць {0}?", "UseDoubleRateDeinterlacing": "Падвоіць частату кадраў пры дэінтэрлейсінгу", @@ -1518,7 +1518,7 @@ "HeaderXmlDocumentAttributes": "Атрыбуты дакумента XML", "HeaderXmlSettings": "Налады XML", "Kids": "Дзеці", - "KnownProxiesHelp": "Спіс IP-адрасоў або імёнаў хастоў вядомых проксі, падзеленых коскамі, якія выкарыстоўваюцца пры падключэнні да вашага асобніка Jellyfin. Гэта неабходна для належнага выкарыстання загалоўкаў \"X-Forwarded-For\". Патрабуецца перазагрузка пасля захавання.", + "KnownProxiesHelp": "Спіс IP-адрасоў або імёнаў хастоў вядомых проксі, падзеленых коскамі, якія выкарыстоўваюцца пры падлучэнні да вашага асобніка Jellyfin. Гэта неабходна для належнага выкарыстання загалоўкаў \"X-Forwarded-For\". Патрабуецца перазагрузка пасля захавання.", "LabelAbortedByServerShutdown": "(Спынена адключэннем сервера)", "LabelAccessDay": "Дзень тыдня", "LabelAccessStart": "Час пачатку", @@ -1643,7 +1643,7 @@ "OptionParentalRating": "Бацькоўскі рэйтынг", "OptionPlainStorageFolders": "Адлюстраваць усе папкі як звычайныя папкі для захоўвання", "PlaybackErrorNoCompatibleStream": "Гэты кліент несумяшчальны з мультымедыя, і сервер не дасылае сумяшчальны фармат медыя.", - "RememberAudioSelections": "Усталяваць гукавую дарожку на аснове папярэдняга элемента", + "RememberAudioSelections": "Усталяваць аўдыёдарожку на аснове папярэдняга элемента", "Rewind": "Перамотка назад", "SyncPlayAccessHelp": "Функцыя SyncPlay дазваляе сінхранізаваць прайграванне з іншымі прыладамі. Выберыце ўзровень доступу гэтага карыстальніка да SyncPlay.", "SystemDlnaProfilesHelp": "Сістэмныя профілі даступныя толькі для чытання. Змены ў сістэмным профілі будуць захаваны ў новым карыстальніцкім профілі.", @@ -1714,7 +1714,7 @@ "EnableAudioNormalizationHelp": "Нармалізацыя гуку дадасць пастаяннае ўзмацненне, каб падтрымліваць сярэдняе значэнне на жаданым узроўні (-18 дБ).", "EnableAudioNormalization": "Нармалізацыя гуку", "LabelEnableLUFSScan": "Уключыць сканаванне LUFS", - "LabelEnableLUFSScanHelp": "Кліенты могуць нармалізаваць прайграванне гуку, каб атрымаць аднолькавую гучнасць на ўсіх трэках. Гэта зробіць сканаванне бібліятэк больш працяглым і зойме больш рэсурсаў.", + "LabelEnableLUFSScanHelp": "Кліенты могуць нармалізаваць прайграванне гуку, каб атрымаць аднолькавую гучнасць на ўсіх дарожках. Гэта зробіць сканаванне бібліятэк больш працяглым і зойме больш рэсурсаў.", "Studio": "Студыя", "MenuOpen": "Адкрыць меню", "MenuClose": "Зачыніць меню", @@ -1760,7 +1760,7 @@ "LogLevel.Error": "Памылка", "LabelTrackGain": "Узмацненне дарожкі", "GoHome": "На галоўную", - "SelectAudioNormalizationHelp": "Узмацненне трэка - рэгулюе гучнасць кожнага трэка, каб яны прайграваліся з аднолькавай гучнасцю. Узмацненне альбома - рэгулюе гучнасць толькі ўсіх трэкаў у альбоме, захоўваючы дынамічны дыяпазон альбома.", + "SelectAudioNormalizationHelp": "Узмацненне дарожкі - рэгулюе гучнасць кожнай дарожкі, каб яны прайграваліся з аднолькавай гучнасцю. Узмацненне альбома - рэгулюе гучнасць толькі ўсіх дарожак у альбоме, захоўваючы дынамічны дыяпазон альбома.", "SearchResultsEmpty": "Выбачайце! Няма вынікаў для \"{0}\"", "UnknownError": "Адбылася невядомая памылка.", "LabelIsHearingImpaired": "Для людзей з парушэннем слыху (SDH)", @@ -1791,6 +1791,6 @@ "EnableSmoothScroll": "Уключыць плаўную пракрутку", "ConfirmDeleteSeries": "Выдаленне гэтага серыялу прывядзе да выдалення ЎСІХ {0} эпізодаў як з файлавай сістэмы, так і з вашай медыятэкі. Вы ўпэўнены, што хочаце працягнуць?", "ConfirmDeleteLyrics": "Выдаленне гэтых тэкстаў песен прывядзе да іх выдалення як з файлавай сістэмы, так і з вашай медыятэкі. Вы ўпэўнены, што хочаце працягнуць?", - "EnableTrueHdHelp": "Уключайце, толькі калі ваша прылада падтрымлівае TrueHD або падключана да сумяшчальнага аўдыяпрыёмніка, у адваротным выпадку гэта можа прывесці да збою прайгравання.", - "EnableDtsHelp": "Уключайце, толькі калі ваша прылада падтрымлівае DTS або падключана да сумяшчальнага аўдыяпрыёмніка, у адваротным выпадку гэта можа прывесці да збою прайгравання." + "EnableTrueHdHelp": "Уключайце, толькі калі ваша прылада падтрымлівае TrueHD або падлучана да сумяшчальнага аўдыяпрыёмніка, у адваротным выпадку гэта можа прывесці да збою прайгравання.", + "EnableDtsHelp": "Уключайце, толькі калі ваша прылада падтрымлівае DTS або падлучана да сумяшчальнага аўдыяпрыёмніка, у адваротным выпадку гэта можа прывесці да збою прайгравання." } From d64b0041e47f2a8c5eadbd519fc2e36a8296c28e Mon Sep 17 00:00:00 2001 From: Troja Date: Wed, 17 Jul 2024 09:13:27 +0000 Subject: [PATCH 16/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 64 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 56 insertions(+), 8 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 36e61cca1b..54a137259e 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -172,7 +172,7 @@ "ButtonTrailer": "Трэйлер", "ButtonUninstall": "Выдаліць", "ButtonWebsite": "Вэб-сайт", - "Bwdif": "BWDIF", + "Bwdif": "Bob Weaver DeInterlacing Filter (BWDIF)", "CancelRecording": "Адмяніць запіс", "CancelSeries": "Адмяніць серыял", "Categories": "Катэгорыі", @@ -280,7 +280,7 @@ "ValueMinutes": "{0} хвілін", "ValueOneSeries": "1 серыя", "ValueSeriesCount": "{0} серый", - "Writer": "Пісьменнік", + "Writer": "Сцэнарыст", "HeaderSelectFallbackFontPath": "Выберыце шлях да папкі рэзервовага шрыфта", "LabelFallbackFontPath": "Шлях да папкі рэзервовага шрыфта", "AspectRatioFill": "Запоўніць", @@ -649,7 +649,7 @@ "HeaderSeriesStatus": "Статус серыі", "HeaderServerAddressSettings": "Налады адраса сервера", "HeaderServerSettings": "Налады сервера", - "HeaderSetupLibrary": "Наладзьце медыятэкі", + "HeaderSetupLibrary": "Наладзьце свае медыятэкі", "HeaderSubtitleAppearance": "Знешні выгляд субтытраў", "HeaderSubtitleDownloads": "Спампоўка субтытраў", "HeaderSubtitleProfile": "Профіль субтытраў", @@ -684,7 +684,7 @@ "LabelAlbumArtists": "Выканаўцы альбома", "LabelAlbumArtMaxWidth": "Максімальная шырыня вокладкі альбома", "LabelAllowedRemoteAddressesMode": "Рэжым фільтра аддаленага IP-адраса", - "LabelAppNameExample": "Прыклад: Sickbeard, Sonarr", + "LabelAppNameExample": "Чытэльнае імя для ідэнтыфікацыі ключоў API. Гэты параметр не паўплывае на функцыянальнасць.", "LabelArtists": "Выканаўцы", "LabelArtistsHelp": "Раздзяляйце некалькіх выканаўцаў кропкай з коскай.", "LabelAudioBitDepth": "Глыбіня аўдыё ў бітах", @@ -1656,13 +1656,13 @@ "ValueAlbumCount": "{0} альбомаў", "ValueAudioCodec": "Аўдыякодэк: {0}", "WriteAccessRequired": "Jellyfin патрабуе доступу для запісу ў гэту папку. Забяспечце доступ для запісу і паўтарыце спробу.", - "Writers": "Пісьменнікі", + "Writers": "Сцэнарысты", "XmlDocumentAttributeListHelp": "Гэтыя атрыбуты прымяняюцца да каранёвага элемента кожнага адказу XML.", "XmlTvKidsCategoriesHelp": "Праграмы з гэтымі катэгорыямі будуць адлюстроўвацца як праграмы для дзяцей. Раздзяляйце некалькі знакамі '|'.", "XmlTvMovieCategoriesHelp": "Праграмы з гэтымі катэгорыямі будуць адлюстроўвацца як фільмы. Раздзяляйце некалькі знакамі '|'.", "XmlTvNewsCategoriesHelp": "Праграмы з гэтымі катэгорыямі будуць адлюстроўвацца як праграмы навін. Раздзяляйце некалькі знакамі '|'.", "XmlTvPathHelp": "Шлях да файла XMLTV. Jellyfin будзе чытаць гэты файл і перыядычна правяраць яго на наяўнасць абнаўленняў. Вы несяце адказнасць за стварэнне і абнаўленне файла.", - "Yadif": "YADIF", + "Yadif": "Yet Another DeInterlacing Filter (YADIF)", "LabelDirectStreamingInfo": "Інфармацыя пра прамую трансляцыю", "LabelOriginalMediaInfo": "Арыгінальная інфармацыя аб медыя", "LabelSyncPlayInfo": "Інфармацыя SyncPlay", @@ -1705,7 +1705,7 @@ "Short": "Кароткаметражка", "HeaderPerformance": "Прадукцыйнасць", "LabelParallelImageEncodingLimit": "Ліміт паралельнага кадавання выявы", - "LabelParallelImageEncodingLimitHelp": "Максімальная колькасць кадавання малюнкаў, якія могуць працаваць паралельна. Пры ўсталёўцы 0 вы выбіраеце ліміт на аснове спецыфікацый вашай сістэмы.", + "LabelParallelImageEncodingLimitHelp": "Максімальная колькасць кадавання малюнкаў, якія могуць працаваць паралельна. Пры ўсталёўцы 0 будзе вызначана абмежаванне на аснове колькасці ядраў вашай сістэмы.", "LabelEnableAudioVbr": "Уключыць кадыроўку гуку VBR", "LabelEnableAudioVbrHelp": "Пераменны бітрэйт забяспечвае лепшае суадносіны якасці да сярэдняга, але ў некаторых рэдкіх выпадках можа выклікаць праблемы з буферызацыяй і сумяшчальнасцю.", "TonemappingModeHelp": "Выберыце рэжым танальнага адлюстравання. Калі вы бачыце, што блікі блякнуць, паспрабуйце пераключыцца ў рэжым RGB.", @@ -1792,5 +1792,53 @@ "ConfirmDeleteSeries": "Выдаленне гэтага серыялу прывядзе да выдалення ЎСІХ {0} эпізодаў як з файлавай сістэмы, так і з вашай медыятэкі. Вы ўпэўнены, што хочаце працягнуць?", "ConfirmDeleteLyrics": "Выдаленне гэтых тэкстаў песен прывядзе да іх выдалення як з файлавай сістэмы, так і з вашай медыятэкі. Вы ўпэўнены, што хочаце працягнуць?", "EnableTrueHdHelp": "Уключайце, толькі калі ваша прылада падтрымлівае TrueHD або падлучана да сумяшчальнага аўдыяпрыёмніка, у адваротным выпадку гэта можа прывесці да збою прайгравання.", - "EnableDtsHelp": "Уключайце, толькі калі ваша прылада падтрымлівае DTS або падлучана да сумяшчальнага аўдыяпрыёмніка, у адваротным выпадку гэта можа прывесці да збою прайгравання." + "EnableDtsHelp": "Уключайце, толькі калі ваша прылада падтрымлівае DTS або падлучана да сумяшчальнага аўдыяпрыёмніка, у адваротным выпадку гэта можа прывесці да збою прайгравання.", + "CoverArtist": "Аўтар вокладкі", + "ErrorDeletingLyrics": "Адбылася памылка пры выдаленні тэксту песні з сервера. Калі ласка, пераканайцеся, што ў Jellyfin ёсць доступ на запіс да тэчкі мультымедыі, і паўторыце спробу.", + "HeaderVideoAdvanced": "Пашыранае відэа", + "LabelSelectPreferredTranscodeVideoCodec": "Пераважны кодэк для перакадавання відэа", + "LabelSelectPreferredTranscodeVideoAudioCodec": "Пераважны аўдыёкодэк для перакадавання пры прайграванні відэа", + "PlaybackError.FATAL_HLS_ERROR": "У патоку HLS была выяўленая фатальная памылка.", + "PlaybackError.MEDIA_NOT_SUPPORTED": "Не атрымалася прайграць файл, паколькі гэты кліент не падтрымлівае мультымедыйны файл.", + "PlaylistError.CreateFailed": "Памылка стварэння плэйліста", + "PlaylistPublic": "Дазволіць публічны доступ", + "LimitSupportedVideoResolutionHelp": "Выкарыстоўвайце \"Максімальнае дазволенае раздзяленне перакадзіравання відэа\" ў якасці максімальнага падтрымоўванага раздзялення відэа.", + "PlaybackError.ASS_RENDER_ERROR": "У праграме візуалізацыі субтытраў ASS / SSA была выяўленая памылка.", + "PlaybackError.MEDIA_DECODE_ERROR": "Збой прайгравання адбыўся з-за памылкі пры дэкадаванні мультымедыі.", + "PlaybackError.NETWORK_ERROR": "Збой прайгравання адбыўся з-за сеткавай памылкі.", + "PlaylistPublicDescription": "Дазволіць прагляд гэтага плэйліста любому карыстальніку, які ўвайшоў у сістэму.", + "HeaderNoLyrics": "Тэксты песень не знойдзены", + "Illustrator": "Ілюстратар", + "LabelServerVersion": "Версія сервера", + "PlaybackError.SERVER_ERROR": "Прайграванне не атрымалася з-за памылкі сервера.", + "LabelWebVersion": "Вэб-версія", + "LibraryScanFanoutConcurrency": "Абмежаванне задач паралельнага сканавання бібліятэкі", + "Penciller": "Чарцёжнік", + "AllowContentWithTagsHelp": "Паказвайце толькі мультымедыйныя файлы, якія змяшчаюць хоць бы адзін з названых тэгаў.", + "Author": "Аўтар", + "Creator": "Стваральнік", + "DeleteLyrics": "Выдаліць тэкст песні", + "Inker": "Мастак", + "Letterer": "Пісьменнік", + "PlaybackError.NotAllowed": "Прайграванне гэтай мультымедыі забаронена.", + "PlaybackError.RateLimitExceeded": "У дадзены момант прайграванне гэтая мультымедыі немагчыма з-за абмежаванняў хуткасці.", + "PlaybackError.NO_MEDIA_ERROR": "Немагчыма знайсці сапраўдную крыніцу мультымедыі для прайгравання.", + "EnableTrueHd": "Уключыць TrueHD", + "AlternateDVD": "Альтэрнатыўны DVD", + "Alternate": "Альтэрнатыўны", + "Colorist": "Каларыст", + "Editor": "Рэдактар", + "EnableDts": "Уключыць DTS (DCA)", + "HeaderDeleteSeries": "Выдаліць серыял", + "HeaderDeleteLyrics": "Выдаліць тэкст песні", + "LabelAllowContentWithTags": "Дазволіць элементы з тэгамі", + "Lyrics": "Тэкст песні", + "LibraryScanFanoutConcurrencyHelp": "Максімальную колькасць паралельных задач пры сканаванні бібліятэкі. Пры ўсталёўцы значэння 0 будзе абрана абмежаванне, заснаванае на колькасці ядраў у вашай сістэме. УВАГА: занадта вялікае значэнне можа прывесці да праблем з сеткавымі файлавымі сістэмамі; пры ўзнікненні праблем паменшыце гэта значэнне.", + "PlaylistError.AddFailed": "Памылка пры даданні ў плэйліст", + "PlaybackError.PLAYER_ERROR": "Прайграванне не атрымалася з-за фатальнай памылкі прайгравальніка.", + "Regional": "Абласны", + "HeaderLyricDownloads": "Спампоўка тэкстаў песен", + "LabelBuildVersion": "Версія зборкі", + "Lyric": "Тэкст песні", + "LimitSupportedVideoResolution": "Абмежаваць максімальную падтрымліваемую раздзяляльнасць відэа" } From 00574dbc0056676706149137fdd1e1bbce0d49d6 Mon Sep 17 00:00:00 2001 From: Troja Date: Wed, 17 Jul 2024 11:01:00 +0000 Subject: [PATCH 17/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 54a137259e..01179d102a 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1840,5 +1840,12 @@ "HeaderLyricDownloads": "Спампоўка тэкстаў песен", "LabelBuildVersion": "Версія зборкі", "Lyric": "Тэкст песні", - "LimitSupportedVideoResolution": "Абмежаваць максімальную падтрымліваемую раздзяляльнасць відэа" + "LimitSupportedVideoResolution": "Абмежаваць максімальную падтрымліваемую раздзяляльнасць відэа", + "SavePassword": "Захаваць пароль", + "SelectPreferredTranscodeVideoCodecHelp": "Выберыце пераважны відэакодэк для перакадзіравання. Калі пераважны кодэк не падтрымліваецца, сервер будзе выкарыстоўваць наступны найлепшы даступны кодэк.", + "SelectPreferredTranscodeVideoAudioCodecHelp": "Выберыце пераважны аўдыякодэк для перакадзіравання відэакантэнту. Калі пераважны кодэк не падтрымліваецца, сервер будзе выкарыстоўваць наступны лепшы даступны кодэк.", + "ViewLyrics": "Прагляд тэкстаў песень", + "SaveLyricsIntoMediaFoldersHelp": "Захоўванне тэкстаў песен побач з аўдыяфайламі дазволіць ім лягчэй кіраваць.", + "Translator": "Перакладчык", + "SaveLyricsIntoMediaFolders": "Захоўвайце тэксты песень у папках мультымедыі" } From fbb0518b24f848b8a861dc8ae1415c5dee0e6a85 Mon Sep 17 00:00:00 2001 From: rushmash Date: Wed, 17 Jul 2024 11:08:08 +0000 Subject: [PATCH 18/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 01179d102a..395c2c769e 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1847,5 +1847,8 @@ "ViewLyrics": "Прагляд тэкстаў песень", "SaveLyricsIntoMediaFoldersHelp": "Захоўванне тэкстаў песен побач з аўдыяфайламі дазволіць ім лягчэй кіраваць.", "Translator": "Перакладчык", - "SaveLyricsIntoMediaFolders": "Захоўвайце тэксты песень у папках мультымедыі" + "SaveLyricsIntoMediaFolders": "Захоўвайце тэксты песень у папках мультымедыі", + "LabelEncodingFormatOptions": "Параметры фармату кадавання", + "AllowVideoToolboxTonemappingHelp": "Адлюстраванне тонаў з апаратным паскарэннем забяспечваецца VideoToolbox. Ён працуе з большасцю фарматаў HDR, уключаючы HDR10, HDR10+ і HLG, але не працуе з Dolby Vision Profile 5. Ён мае больш высокі прыярытэт, чым іншыя рэалізацыі Metal.", + "EnableVideoToolboxTonemapping": "Уключыць адлюстраванне тонаў VideoToolbox" } From 8fc0ef8081a110312cba0fa798c5de3336332c6d Mon Sep 17 00:00:00 2001 From: rushmash Date: Wed, 17 Jul 2024 11:08:40 +0000 Subject: [PATCH 19/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 395c2c769e..ca279ad953 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1850,5 +1850,7 @@ "SaveLyricsIntoMediaFolders": "Захоўвайце тэксты песень у папках мультымедыі", "LabelEncodingFormatOptions": "Параметры фармату кадавання", "AllowVideoToolboxTonemappingHelp": "Адлюстраванне тонаў з апаратным паскарэннем забяспечваецца VideoToolbox. Ён працуе з большасцю фарматаў HDR, уключаючы HDR10, HDR10+ і HLG, але не працуе з Dolby Vision Profile 5. Ён мае больш высокі прыярытэт, чым іншыя рэалізацыі Metal.", - "EnableVideoToolboxTonemapping": "Уключыць адлюстраванне тонаў VideoToolbox" + "EnableVideoToolboxTonemapping": "Уключыць адлюстраванне тонаў VideoToolbox", + "Trickplay": "Trickplay", + "EncodingFormatHelp": "Выберыце кадзіроўку відэа, у якую вы хочаце перакадаваць Jellyfin. Jellyfin будзе выкарыстоўваць праграмнае кадзіраванне, калі апаратнае паскарэнне недаступна для абранага фармату. Кадаванне H264 заўсёды будзе ўключана." } From 9518a0d367544fabc570eddc6e40290d38649b33 Mon Sep 17 00:00:00 2001 From: Troja Date: Wed, 17 Jul 2024 11:08:17 +0000 Subject: [PATCH 20/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index ca279ad953..cf80dbcb52 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1850,7 +1850,7 @@ "SaveLyricsIntoMediaFolders": "Захоўвайце тэксты песень у папках мультымедыі", "LabelEncodingFormatOptions": "Параметры фармату кадавання", "AllowVideoToolboxTonemappingHelp": "Адлюстраванне тонаў з апаратным паскарэннем забяспечваецца VideoToolbox. Ён працуе з большасцю фарматаў HDR, уключаючы HDR10, HDR10+ і HLG, але не працуе з Dolby Vision Profile 5. Ён мае больш высокі прыярытэт, чым іншыя рэалізацыі Metal.", - "EnableVideoToolboxTonemapping": "Уключыць адлюстраванне тонаў VideoToolbox", + "EnableVideoToolboxTonemapping": "Уключыць тонавае адлюстраванне VideoToolbox", "Trickplay": "Trickplay", "EncodingFormatHelp": "Выберыце кадзіроўку відэа, у якую вы хочаце перакадаваць Jellyfin. Jellyfin будзе выкарыстоўваць праграмнае кадзіраванне, калі апаратнае паскарэнне недаступна для абранага фармату. Кадаванне H264 заўсёды будзе ўключана." } From 73d1bc3b43afcc894134d04e89dbb72f2e7cbe96 Mon Sep 17 00:00:00 2001 From: rushmash Date: Wed, 17 Jul 2024 11:09:14 +0000 Subject: [PATCH 21/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index cf80dbcb52..ff0656bd0d 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1852,5 +1852,9 @@ "AllowVideoToolboxTonemappingHelp": "Адлюстраванне тонаў з апаратным паскарэннем забяспечваецца VideoToolbox. Ён працуе з большасцю фарматаў HDR, уключаючы HDR10, HDR10+ і HLG, але не працуе з Dolby Vision Profile 5. Ён мае больш высокі прыярытэт, чым іншыя рэалізацыі Metal.", "EnableVideoToolboxTonemapping": "Уключыць тонавае адлюстраванне VideoToolbox", "Trickplay": "Trickplay", - "EncodingFormatHelp": "Выберыце кадзіроўку відэа, у якую вы хочаце перакадаваць Jellyfin. Jellyfin будзе выкарыстоўваць праграмнае кадзіраванне, калі апаратнае паскарэнне недаступна для абранага фармату. Кадаванне H264 заўсёды будзе ўключана." + "EncodingFormatHelp": "Выберыце кадзіроўку відэа, у якую вы хочаце перакадаваць Jellyfin. Jellyfin будзе выкарыстоўваць праграмнае кадзіраванне, калі апаратнае паскарэнне недаступна для абранага фармату. Кадаванне H264 заўсёды будзе ўключана.", + "LabelTrickplayAccelEncoding": "Уключыць апаратнае паскарэнне кадавання MJPEG", + "LabelTrickplayAccel": "Уключыць апаратнае дэкадаванне", + "LabelTrickplayAccelEncodingHelp": "Гэты параметр зараз даступны толькі для QSV і VAAPI, ён не ўплывае на іншыя метады апаратнага паскарэння.", + "NonBlockingScan": "Без блакіроўкі - стварэнне чаргі, потым вяртанне" } From d24c1c8f71bac54535f90f68c9d2b54e85e7c528 Mon Sep 17 00:00:00 2001 From: Troja Date: Wed, 17 Jul 2024 11:12:19 +0000 Subject: [PATCH 22/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index ff0656bd0d..cd3b14bfaf 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1856,5 +1856,7 @@ "LabelTrickplayAccelEncoding": "Уключыць апаратнае паскарэнне кадавання MJPEG", "LabelTrickplayAccel": "Уключыць апаратнае дэкадаванне", "LabelTrickplayAccelEncodingHelp": "Гэты параметр зараз даступны толькі для QSV і VAAPI, ён не ўплывае на іншыя метады апаратнага паскарэння.", - "NonBlockingScan": "Без блакіроўкі - стварэнне чаргі, потым вяртанне" + "NonBlockingScan": "Без блакіроўкі - стварэнне чаргі, потым вяртанне", + "LabelScanBehavior": "Паводзіны пры сканаванні", + "BlockingScan": "Блакаванне - стварэнне чэргаў, праверка блокаў да поўнага завяршэння" } From 0de462adcb18f28d0a2b3359b36358eb6e832a41 Mon Sep 17 00:00:00 2001 From: rushmash Date: Wed, 17 Jul 2024 11:12:52 +0000 Subject: [PATCH 23/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index cd3b14bfaf..d8483af25a 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1857,6 +1857,6 @@ "LabelTrickplayAccel": "Уключыць апаратнае дэкадаванне", "LabelTrickplayAccelEncodingHelp": "Гэты параметр зараз даступны толькі для QSV і VAAPI, ён не ўплывае на іншыя метады апаратнага паскарэння.", "NonBlockingScan": "Без блакіроўкі - стварэнне чаргі, потым вяртанне", - "LabelScanBehavior": "Паводзіны пры сканаванні", - "BlockingScan": "Блакаванне - стварэнне чэргаў, праверка блокаў да поўнага завяршэння" + "LabelScanBehavior": "Паводзіны сканавання", + "BlockingScan": "Блакаванне - стварэнне чэргаў, блакуе сканаванне да поўнага завяршэння" } From 0b888e364ddcc2c8f86316e4d833ab45f7edf435 Mon Sep 17 00:00:00 2001 From: Troja Date: Wed, 17 Jul 2024 11:13:58 +0000 Subject: [PATCH 24/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index d8483af25a..407d775fcc 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1858,5 +1858,7 @@ "LabelTrickplayAccelEncodingHelp": "Гэты параметр зараз даступны толькі для QSV і VAAPI, ён не ўплывае на іншыя метады апаратнага паскарэння.", "NonBlockingScan": "Без блакіроўкі - стварэнне чаргі, потым вяртанне", "LabelScanBehavior": "Паводзіны сканавання", - "BlockingScan": "Блакаванне - стварэнне чэргаў, блакуе сканаванне да поўнага завяршэння" + "BlockingScan": "Блакаванне - стварэнне чэргаў, блакуе сканаванне да поўнага завяршэння", + "LabelScanBehaviorHelp": "Па змаўчанні выкарыстоўваецца рэжым без блакавання, пры якім медыяфайлы будуць дададзеныя ў бібліятэку да завяршэння стварэння trick play. Блакаванне гарантуе, што файлы trickplay будуць створаны да дадання медыяфайлаў у бібліятэку, але значна павялічыць час сканавання.", + "PriorityHigh": "Высокі" } From e741c5ec3c3e15544c55ff6f374d73d4590b2c60 Mon Sep 17 00:00:00 2001 From: Troja Date: Wed, 17 Jul 2024 11:14:32 +0000 Subject: [PATCH 25/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 407d775fcc..7f0e073329 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1860,5 +1860,8 @@ "LabelScanBehavior": "Паводзіны сканавання", "BlockingScan": "Блакаванне - стварэнне чэргаў, блакуе сканаванне да поўнага завяршэння", "LabelScanBehaviorHelp": "Па змаўчанні выкарыстоўваецца рэжым без блакавання, пры якім медыяфайлы будуць дададзеныя ў бібліятэку да завяршэння стварэння trick play. Блакаванне гарантуе, што файлы trickplay будуць створаны да дадання медыяфайлаў у бібліятэку, але значна павялічыць час сканавання.", - "PriorityHigh": "Высокі" + "PriorityHigh": "Высокі", + "PriorityNormal": "Нармальны", + "PriorityBelowNormal": "Ніжэй за норму", + "PriorityAboveNormal": "Вышэй за норму" } From 105e3f28415684c05226a689a05b51dee78d291f Mon Sep 17 00:00:00 2001 From: Troja Date: Wed, 17 Jul 2024 11:15:10 +0000 Subject: [PATCH 26/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 7f0e073329..c5960ec89f 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1863,5 +1863,6 @@ "PriorityHigh": "Высокі", "PriorityNormal": "Нармальны", "PriorityBelowNormal": "Ніжэй за норму", - "PriorityAboveNormal": "Вышэй за норму" + "PriorityAboveNormal": "Вышэй за норму", + "PriorityIdle": "Бяздзейны" } From 2c809f7a81cb93309b1163ba17b0defa68923332 Mon Sep 17 00:00:00 2001 From: Troja Date: Wed, 17 Jul 2024 11:15:29 +0000 Subject: [PATCH 27/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index c5960ec89f..047215db1e 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1864,5 +1864,6 @@ "PriorityNormal": "Нармальны", "PriorityBelowNormal": "Ніжэй за норму", "PriorityAboveNormal": "Вышэй за норму", - "PriorityIdle": "Бяздзейны" + "PriorityIdle": "Бяздзейны", + "LabelProcessPriority": "Прыярытэт працэсу" } From 9b22a40a7779665531120991aadcf3c67ff9796c Mon Sep 17 00:00:00 2001 From: Troja Date: Wed, 17 Jul 2024 11:19:42 +0000 Subject: [PATCH 28/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 047215db1e..28fa909471 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1865,5 +1865,6 @@ "PriorityBelowNormal": "Ніжэй за норму", "PriorityAboveNormal": "Вышэй за норму", "PriorityIdle": "Бяздзейны", - "LabelProcessPriority": "Прыярытэт працэсу" + "LabelProcessPriority": "Прыярытэт працэсу", + "LabelProcessPriorityHelp": "Калі ўсталяваць гэта значэнне ніжэй або вышэй, то будзе залежаць ад таго, як працэсар расставіць прыярытэты для працэсу генерацыі trickplay у фармаце ffmpeg ў адносінах да іншых працэсаў. Калі вы заўважылі запаволенне пры стварэнні малюнкаў trickplay, але не хочаце цалкам спыняць іх генерацыю, паспрабуйце паменшыць гэта значэнне, а таксама колькасць патокаў." } From 178ec00716a479f160564afb77891a5357079d70 Mon Sep 17 00:00:00 2001 From: rushmash Date: Wed, 17 Jul 2024 11:20:09 +0000 Subject: [PATCH 29/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 28fa909471..ee36d6c140 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1866,5 +1866,9 @@ "PriorityAboveNormal": "Вышэй за норму", "PriorityIdle": "Бяздзейны", "LabelProcessPriority": "Прыярытэт працэсу", - "LabelProcessPriorityHelp": "Калі ўсталяваць гэта значэнне ніжэй або вышэй, то будзе залежаць ад таго, як працэсар расставіць прыярытэты для працэсу генерацыі trickplay у фармаце ffmpeg ў адносінах да іншых працэсаў. Калі вы заўважылі запаволенне пры стварэнні малюнкаў trickplay, але не хочаце цалкам спыняць іх генерацыю, паспрабуйце паменшыць гэта значэнне, а таксама колькасць патокаў." + "LabelProcessPriorityHelp": "Калі ўсталяваць гэта значэнне ніжэй або вышэй, то будзе залежаць ад таго, як працэсар расставіць прыярытэты для працэсу генерацыі trickplay у фармаце ffmpeg ў адносінах да іншых працэсаў. Калі вы заўважылі запаволенне пры стварэнні малюнкаў trickplay, але не хочаце цалкам спыняць іх генерацыю, паспрабуйце паменшыць гэта значэнне, а таксама колькасць патокаў.", + "LabelImageInterval": "Інтэрвал паміж выявамі", + "LabelImageIntervalHelp": "Інтэрвал часу (мс) паміж кожнай новай trickplay выявай.", + "OptionExtractTrickplayImage": "Уключыць выманне trickplay відарысаў", + "LabelExtractTrickplayDuringLibraryScan": "Здабываць trickplay выявы пры сканаванні бібліятэкі" } From 9d2b89df941533ac1b5b7cc8ef3c57fbda356833 Mon Sep 17 00:00:00 2001 From: Troja Date: Wed, 17 Jul 2024 11:20:56 +0000 Subject: [PATCH 30/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index ee36d6c140..ed00f444b4 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1870,5 +1870,11 @@ "LabelImageInterval": "Інтэрвал паміж выявамі", "LabelImageIntervalHelp": "Інтэрвал часу (мс) паміж кожнай новай trickplay выявай.", "OptionExtractTrickplayImage": "Уключыць выманне trickplay відарысаў", - "LabelExtractTrickplayDuringLibraryScan": "Здабываць trickplay выявы пры сканаванні бібліятэкі" + "LabelExtractTrickplayDuringLibraryScan": "Здабываць trickplay выявы пры сканаванні бібліятэкі", + "LabelWidthResolutionsHelp": "Падзелены коскамі спіс значэнняў шырыні (px), пры якіх будуць стварацца выявы trickplay. Усе выявы павінны быць згенераваныя прапарцыйна зыходнаму малюнку, таму пры шырыні 320 пікселяў ў відэа з дазволам 16:9 атрымаецца каля 320x180.", + "LabelQscaleHelp": "Шкала якасці малюнкаў, якія выводзяцца з дапамогай ffmpeg, дзе 2 адпавядае самаму высокаму якасці, а 31 - самаму нізкаму.", + "LabelTrickplayThreads": "Патокі FFmpeg", + "LabelTrickplayThreadsHelp": "Колькасць патокаў, якія трэба перадаць аргументу \"-патокі\" ffmpeg.", + "ExtractTrickplayImagesHelp": "Выявы Trickplay падобныя на выявы раздзелаў, за выключэннем таго, што яны ахопліваюць увесь кантэнт і выкарыстоўваюцца для папярэдняга прагляду падчас прагляду відэа.", + "LabelExtractTrickplayDuringLibraryScanHelp": "Стварэнне малюнкаў trickplay, калі відэа імпартуецца падчас сканавання бібліятэкі. У адваротным выпадку яны будуць вынятыя падчас запланаванага задання trickplay. Калі для параметру генерацыя абрана значэнне неблокирующее, гэта не паўплывае на час, неабходнае для завяршэння сканавання бібліятэкі." } From d7b5e0382f300aefbac6dd1af37cfa5a14f823c4 Mon Sep 17 00:00:00 2001 From: rushmash Date: Wed, 17 Jul 2024 11:21:59 +0000 Subject: [PATCH 31/34] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index ed00f444b4..fc17d58986 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1876,5 +1876,10 @@ "LabelTrickplayThreads": "Патокі FFmpeg", "LabelTrickplayThreadsHelp": "Колькасць патокаў, якія трэба перадаць аргументу \"-патокі\" ffmpeg.", "ExtractTrickplayImagesHelp": "Выявы Trickplay падобныя на выявы раздзелаў, за выключэннем таго, што яны ахопліваюць увесь кантэнт і выкарыстоўваюцца для папярэдняга прагляду падчас прагляду відэа.", - "LabelExtractTrickplayDuringLibraryScanHelp": "Стварэнне малюнкаў trickplay, калі відэа імпартуецца падчас сканавання бібліятэкі. У адваротным выпадку яны будуць вынятыя падчас запланаванага задання trickplay. Калі для параметру генерацыя абрана значэнне неблокирующее, гэта не паўплывае на час, неабходнае для завяршэння сканавання бібліятэкі." + "LabelExtractTrickplayDuringLibraryScanHelp": "Стварэнне малюнкаў trickplay, калі відэа імпартуецца падчас сканавання бібліятэкі. У адваротным выпадку яны будуць вынятыя падчас запланаванага задання trickplay. Калі для параметру генерацыя абрана значэнне неблокирующее, гэта не паўплывае на час, неабходнае для завяршэння сканавання бібліятэкі.", + "LabelTileHeightHelp": "Максімальная колькасць малюнкаў на плітку ў кірунку Y.", + "LabelWidthResolutions": "Дазвол па шырыні", + "LabelTileWidth": "Шырыня пліткі", + "LabelTileWidthHelp": "Максімальная колькасць малюнкаў на плітку ў напрамку X.", + "LabelTileHeight": "Вышыня пліткі" } From 3d07a2de66bd566155b7cd3128d27dda8f338831 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Jul 2024 19:12:41 +0000 Subject: [PATCH 32/34] Update Tests to v2.0.2 --- package-lock.json | 374 ++++++++++++++++++++++------------------------ package.json | 4 +- 2 files changed, 181 insertions(+), 197 deletions(-) diff --git a/package-lock.json b/package-lock.json index 10910e50e8..f1b6585786 100644 --- a/package-lock.json +++ b/package-lock.json @@ -80,7 +80,7 @@ "@typescript-eslint/eslint-plugin": "5.62.0", "@typescript-eslint/parser": "5.62.0", "@uupaa/dynamic-import-polyfill": "1.0.2", - "@vitest/coverage-v8": "2.0.1", + "@vitest/coverage-v8": "2.0.2", "autoprefixer": "10.4.19", "babel-loader": "9.1.3", "babel-plugin-dynamic-import-polyfill": "1.0.0", @@ -121,7 +121,7 @@ "stylelint-scss": "5.3.2", "ts-loader": "9.5.1", "typescript": "5.5.3", - "vitest": "2.0.1", + "vitest": "2.0.2", "webpack": "5.92.1", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", @@ -3990,18 +3990,6 @@ "axios": "^1.3.4" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -4746,12 +4734,6 @@ "win32" ] }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, "node_modules/@sindresorhus/merge-streams": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz", @@ -5519,9 +5501,9 @@ "dev": true }, "node_modules/@vitest/coverage-v8": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.0.1.tgz", - "integrity": "sha512-ACcSlJtWlravv0QyJSCO9rvm06msj6x0HooXouB0NXKG6PGxUN5VX4X8QEATfTMGsJlZLqWvq0dEY9W1V0rcSw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.0.2.tgz", + "integrity": "sha512-iA8eb4PMid3bMc++gfQSTvYE1QL//fC8pz+rKsTUDBFjdDiy/gH45hvpqyDu5K7FHhvgG0GNNCJzTMMSFKhoxg==", "dev": true, "license": "MIT", "dependencies": { @@ -5534,41 +5516,55 @@ "istanbul-reports": "^3.1.7", "magic-string": "^0.30.10", "magicast": "^0.3.4", - "picocolors": "^1.0.1", "std-env": "^3.7.0", "strip-literal": "^2.1.0", - "test-exclude": "^7.0.1" + "test-exclude": "^7.0.1", + "tinyrainbow": "^1.2.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "2.0.1" + "vitest": "2.0.2" } }, "node_modules/@vitest/expect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.1.tgz", - "integrity": "sha512-yw70WL3ZwzbI2O3MOXYP2Shf4vqVkS3q5FckLJ6lhT9VMMtDyWdofD53COZcoeuHwsBymdOZp99r5bOr5g+oeA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.2.tgz", + "integrity": "sha512-nKAvxBYqcDugYZ4nJvnm5OR8eDJdgWjk4XM9owQKUjzW70q0icGV2HVnQOyYsp906xJaBDUXw0+9EHw2T8e0mQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "2.0.1", - "@vitest/utils": "2.0.1", - "chai": "^5.1.1" + "@vitest/spy": "2.0.2", + "@vitest/utils": "2.0.2", + "chai": "^5.1.1", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/pretty-format": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.3.tgz", + "integrity": "sha512-URM4GLsB2xD37nnTyvf6kfObFafxmycCL8un3OC9gaCs5cti2u+5rJdIflZ2fUJUen4NbvF6jCufwViAFLvz1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^1.2.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.1.tgz", - "integrity": "sha512-XfcSXOGGxgR2dQ466ZYqf0ZtDLLDx9mZeQcKjQDLQ9y6Cmk2Wl7wxMuhiYK4Fo1VxCtLcFEGW2XpcfMuiD1Maw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.2.tgz", + "integrity": "sha512-OCh437Vi8Wdbif1e0OvQcbfM3sW4s2lpmOjAE7qfLrpzJX2M7J1IQlNvEcb/fu6kaIB9n9n35wS0G2Q3en5kHg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "2.0.1", + "@vitest/utils": "2.0.2", "pathe": "^1.1.2" }, "funding": { @@ -5576,24 +5572,37 @@ } }, "node_modules/@vitest/snapshot": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.1.tgz", - "integrity": "sha512-rst79a4Q+J5vrvHRapdfK4BdqpMH0eF58jVY1vYeBo/1be+nkyenGI5SCSohmjf6MkCkI20/yo5oG+0R8qrAnA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.2.tgz", + "integrity": "sha512-Yc2ewhhZhx+0f9cSUdfzPRcsM6PhIb+S43wxE7OG0kTxqgqzo8tHkXFuFlndXeDMp09G3sY/X5OAo/RfYydf1g==", "dev": true, "license": "MIT", "dependencies": { + "@vitest/pretty-format": "2.0.2", "magic-string": "^0.30.10", - "pathe": "^1.1.2", - "pretty-format": "^29.7.0" + "pathe": "^1.1.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot/node_modules/@vitest/pretty-format": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.2.tgz", + "integrity": "sha512-SBCyOXfGVvddRd9r2PwoVR0fonQjh9BMIcBMlSzbcNwFfGr6ZhOhvBzurjvi2F4ryut2HcqiFhNeDVGwru8tLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^1.2.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/spy": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.1.tgz", - "integrity": "sha512-NLkdxbSefAtJN56GtCNcB4GiHFb5i9q1uh4V229lrlTZt2fnwsTyjLuWIli1xwK2fQspJJmHXHyWx0Of3KTXWA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.2.tgz", + "integrity": "sha512-MgwJ4AZtCgqyp2d7WcQVE8aNG5vQ9zu9qMPYQHjsld/QVsrvg78beNrXdO4HYkP0lDahCO3P4F27aagIag+SGQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5604,16 +5613,29 @@ } }, "node_modules/@vitest/utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.1.tgz", - "integrity": "sha512-STH+2fHZxlveh1mpU4tKzNgRk7RZJyr6kFGJYCI5vocdfqfPsQrgVC6k7dBWHfin5QNB4TLvRS0Ckly3Dt1uWw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.2.tgz", + "integrity": "sha512-pxCY1v7kmOCWYWjzc0zfjGTA3Wmn8PKnlPvSrsA643P1NHl1fOyXj2Q9SaNlrlFE+ivCsxM80Ov3AR82RmHCWQ==", "dev": true, "license": "MIT", "dependencies": { - "diff-sequences": "^29.6.3", + "@vitest/pretty-format": "2.0.2", "estree-walker": "^3.0.3", "loupe": "^3.1.1", - "pretty-format": "^29.7.0" + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils/node_modules/@vitest/pretty-format": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.2.tgz", + "integrity": "sha512-SBCyOXfGVvddRd9r2PwoVR0fonQjh9BMIcBMlSzbcNwFfGr6ZhOhvBzurjvi2F4ryut2HcqiFhNeDVGwru8tLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^1.2.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -8561,16 +8583,6 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -17299,38 +17311,6 @@ "renderkid": "^3.0.0" } }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/pretty-format/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -22305,6 +22285,16 @@ "node": "^18.0.0 || >=20.0.0" } }, + "node_modules/tinyrainbow": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/tinyspy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz", @@ -23311,16 +23301,16 @@ } }, "node_modules/vite-node": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.1.tgz", - "integrity": "sha512-nVd6kyhPAql0s+xIVJzuF+RSRH8ZimNrm6U8ZvTA4MXv8CHI17TFaQwRaFiK75YX6XeFqZD4IoAaAfi9OR1XvQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.2.tgz", + "integrity": "sha512-w4vkSz1Wo+NIQg8pjlEn0jQbcM/0D+xVaYjhw3cvarTanLLBh54oNiRbsT8PNK5GfuST0IlVXjsNRoNlqvY/fw==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", "debug": "^4.3.5", "pathe": "^1.1.2", - "picocolors": "^1.0.1", + "tinyrainbow": "^1.2.0", "vite": "^5.0.0" }, "bin": { @@ -23334,29 +23324,30 @@ } }, "node_modules/vitest": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.1.tgz", - "integrity": "sha512-PBPvNXRJiywtI9NmbnEqHIhcXlk8mB0aKf6REQIaYGY4JtWF1Pg8Am+N0vAuxdg/wUSlxPSVJr8QdjwcVxc2Hg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.2.tgz", + "integrity": "sha512-WlpZ9neRIjNBIOQwBYfBSr0+of5ZCbxT2TVGKW4Lv0c8+srCFIiRdsP7U009t8mMn821HQ4XKgkx5dVWpyoyLw==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", - "@vitest/expect": "2.0.1", - "@vitest/runner": "2.0.1", - "@vitest/snapshot": "2.0.1", - "@vitest/spy": "2.0.1", - "@vitest/utils": "2.0.1", + "@vitest/expect": "2.0.2", + "@vitest/pretty-format": "^2.0.2", + "@vitest/runner": "2.0.2", + "@vitest/snapshot": "2.0.2", + "@vitest/spy": "2.0.2", + "@vitest/utils": "2.0.2", "chai": "^5.1.1", "debug": "^4.3.5", "execa": "^8.0.1", "magic-string": "^0.30.10", "pathe": "^1.1.2", - "picocolors": "^1.0.1", "std-env": "^3.7.0", "tinybench": "^2.8.0", "tinypool": "^1.0.0", + "tinyrainbow": "^1.2.0", "vite": "^5.0.0", - "vite-node": "2.0.1", + "vite-node": "2.0.2", "why-is-node-running": "^2.2.2" }, "bin": { @@ -23371,8 +23362,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "2.0.1", - "@vitest/ui": "2.0.1", + "@vitest/browser": "2.0.2", + "@vitest/ui": "2.0.2", "happy-dom": "*", "jsdom": "*" }, @@ -26874,15 +26865,6 @@ "integrity": "sha512-7XKn8zi6u4EJsV2iSy0Pti52b9tT+sSip9nAbO41Cb0QSqhgIBjvbIFZzSIOXAFuUKKaV+PwGhhN6LysvfrI6A==", "requires": {} }, - "@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.27.8" - } - }, "@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -27305,12 +27287,6 @@ "dev": true, "optional": true }, - "@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, "@sindresorhus/merge-streams": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz", @@ -27911,9 +27887,9 @@ "dev": true }, "@vitest/coverage-v8": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.0.1.tgz", - "integrity": "sha512-ACcSlJtWlravv0QyJSCO9rvm06msj6x0HooXouB0NXKG6PGxUN5VX4X8QEATfTMGsJlZLqWvq0dEY9W1V0rcSw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.0.2.tgz", + "integrity": "sha512-iA8eb4PMid3bMc++gfQSTvYE1QL//fC8pz+rKsTUDBFjdDiy/gH45hvpqyDu5K7FHhvgG0GNNCJzTMMSFKhoxg==", "dev": true, "requires": { "@ampproject/remapping": "^2.3.0", @@ -27925,63 +27901,95 @@ "istanbul-reports": "^3.1.7", "magic-string": "^0.30.10", "magicast": "^0.3.4", - "picocolors": "^1.0.1", "std-env": "^3.7.0", "strip-literal": "^2.1.0", - "test-exclude": "^7.0.1" + "test-exclude": "^7.0.1", + "tinyrainbow": "^1.2.0" } }, "@vitest/expect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.1.tgz", - "integrity": "sha512-yw70WL3ZwzbI2O3MOXYP2Shf4vqVkS3q5FckLJ6lhT9VMMtDyWdofD53COZcoeuHwsBymdOZp99r5bOr5g+oeA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.2.tgz", + "integrity": "sha512-nKAvxBYqcDugYZ4nJvnm5OR8eDJdgWjk4XM9owQKUjzW70q0icGV2HVnQOyYsp906xJaBDUXw0+9EHw2T8e0mQ==", "dev": true, "requires": { - "@vitest/spy": "2.0.1", - "@vitest/utils": "2.0.1", - "chai": "^5.1.1" + "@vitest/spy": "2.0.2", + "@vitest/utils": "2.0.2", + "chai": "^5.1.1", + "tinyrainbow": "^1.2.0" + } + }, + "@vitest/pretty-format": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.3.tgz", + "integrity": "sha512-URM4GLsB2xD37nnTyvf6kfObFafxmycCL8un3OC9gaCs5cti2u+5rJdIflZ2fUJUen4NbvF6jCufwViAFLvz1g==", + "dev": true, + "requires": { + "tinyrainbow": "^1.2.0" } }, "@vitest/runner": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.1.tgz", - "integrity": "sha512-XfcSXOGGxgR2dQ466ZYqf0ZtDLLDx9mZeQcKjQDLQ9y6Cmk2Wl7wxMuhiYK4Fo1VxCtLcFEGW2XpcfMuiD1Maw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.2.tgz", + "integrity": "sha512-OCh437Vi8Wdbif1e0OvQcbfM3sW4s2lpmOjAE7qfLrpzJX2M7J1IQlNvEcb/fu6kaIB9n9n35wS0G2Q3en5kHg==", "dev": true, "requires": { - "@vitest/utils": "2.0.1", + "@vitest/utils": "2.0.2", "pathe": "^1.1.2" } }, "@vitest/snapshot": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.1.tgz", - "integrity": "sha512-rst79a4Q+J5vrvHRapdfK4BdqpMH0eF58jVY1vYeBo/1be+nkyenGI5SCSohmjf6MkCkI20/yo5oG+0R8qrAnA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.2.tgz", + "integrity": "sha512-Yc2ewhhZhx+0f9cSUdfzPRcsM6PhIb+S43wxE7OG0kTxqgqzo8tHkXFuFlndXeDMp09G3sY/X5OAo/RfYydf1g==", "dev": true, "requires": { + "@vitest/pretty-format": "2.0.2", "magic-string": "^0.30.10", - "pathe": "^1.1.2", - "pretty-format": "^29.7.0" + "pathe": "^1.1.2" + }, + "dependencies": { + "@vitest/pretty-format": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.2.tgz", + "integrity": "sha512-SBCyOXfGVvddRd9r2PwoVR0fonQjh9BMIcBMlSzbcNwFfGr6ZhOhvBzurjvi2F4ryut2HcqiFhNeDVGwru8tLg==", + "dev": true, + "requires": { + "tinyrainbow": "^1.2.0" + } + } } }, "@vitest/spy": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.1.tgz", - "integrity": "sha512-NLkdxbSefAtJN56GtCNcB4GiHFb5i9q1uh4V229lrlTZt2fnwsTyjLuWIli1xwK2fQspJJmHXHyWx0Of3KTXWA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.2.tgz", + "integrity": "sha512-MgwJ4AZtCgqyp2d7WcQVE8aNG5vQ9zu9qMPYQHjsld/QVsrvg78beNrXdO4HYkP0lDahCO3P4F27aagIag+SGQ==", "dev": true, "requires": { "tinyspy": "^3.0.0" } }, "@vitest/utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.1.tgz", - "integrity": "sha512-STH+2fHZxlveh1mpU4tKzNgRk7RZJyr6kFGJYCI5vocdfqfPsQrgVC6k7dBWHfin5QNB4TLvRS0Ckly3Dt1uWw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.2.tgz", + "integrity": "sha512-pxCY1v7kmOCWYWjzc0zfjGTA3Wmn8PKnlPvSrsA643P1NHl1fOyXj2Q9SaNlrlFE+ivCsxM80Ov3AR82RmHCWQ==", "dev": true, "requires": { - "diff-sequences": "^29.6.3", + "@vitest/pretty-format": "2.0.2", "estree-walker": "^3.0.3", "loupe": "^3.1.1", - "pretty-format": "^29.7.0" + "tinyrainbow": "^1.2.0" + }, + "dependencies": { + "@vitest/pretty-format": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.2.tgz", + "integrity": "sha512-SBCyOXfGVvddRd9r2PwoVR0fonQjh9BMIcBMlSzbcNwFfGr6ZhOhvBzurjvi2F4ryut2HcqiFhNeDVGwru8tLg==", + "dev": true, + "requires": { + "tinyrainbow": "^1.2.0" + } + } } }, "@webassemblyjs/ast": { @@ -30101,12 +30109,6 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, - "diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true - }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -36289,31 +36291,6 @@ "renderkid": "^3.0.0" } }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - } - } - }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -40038,6 +40015,12 @@ "integrity": "sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==", "dev": true }, + "tinyrainbow": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "dev": true + }, "tinyspy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz", @@ -40749,41 +40732,42 @@ } }, "vite-node": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.1.tgz", - "integrity": "sha512-nVd6kyhPAql0s+xIVJzuF+RSRH8ZimNrm6U8ZvTA4MXv8CHI17TFaQwRaFiK75YX6XeFqZD4IoAaAfi9OR1XvQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.2.tgz", + "integrity": "sha512-w4vkSz1Wo+NIQg8pjlEn0jQbcM/0D+xVaYjhw3cvarTanLLBh54oNiRbsT8PNK5GfuST0IlVXjsNRoNlqvY/fw==", "dev": true, "requires": { "cac": "^6.7.14", "debug": "^4.3.5", "pathe": "^1.1.2", - "picocolors": "^1.0.1", + "tinyrainbow": "^1.2.0", "vite": "^5.0.0" } }, "vitest": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.1.tgz", - "integrity": "sha512-PBPvNXRJiywtI9NmbnEqHIhcXlk8mB0aKf6REQIaYGY4JtWF1Pg8Am+N0vAuxdg/wUSlxPSVJr8QdjwcVxc2Hg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.2.tgz", + "integrity": "sha512-WlpZ9neRIjNBIOQwBYfBSr0+of5ZCbxT2TVGKW4Lv0c8+srCFIiRdsP7U009t8mMn821HQ4XKgkx5dVWpyoyLw==", "dev": true, "requires": { "@ampproject/remapping": "^2.3.0", - "@vitest/expect": "2.0.1", - "@vitest/runner": "2.0.1", - "@vitest/snapshot": "2.0.1", - "@vitest/spy": "2.0.1", - "@vitest/utils": "2.0.1", + "@vitest/expect": "2.0.2", + "@vitest/pretty-format": "^2.0.2", + "@vitest/runner": "2.0.2", + "@vitest/snapshot": "2.0.2", + "@vitest/spy": "2.0.2", + "@vitest/utils": "2.0.2", "chai": "^5.1.1", "debug": "^4.3.5", "execa": "^8.0.1", "magic-string": "^0.30.10", "pathe": "^1.1.2", - "picocolors": "^1.0.1", "std-env": "^3.7.0", "tinybench": "^2.8.0", "tinypool": "^1.0.0", + "tinyrainbow": "^1.2.0", "vite": "^5.0.0", - "vite-node": "2.0.1", + "vite-node": "2.0.2", "why-is-node-running": "^2.2.2" }, "dependencies": { diff --git a/package.json b/package.json index 165fc927f3..d50c12864f 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@typescript-eslint/eslint-plugin": "5.62.0", "@typescript-eslint/parser": "5.62.0", "@uupaa/dynamic-import-polyfill": "1.0.2", - "@vitest/coverage-v8": "2.0.1", + "@vitest/coverage-v8": "2.0.2", "autoprefixer": "10.4.19", "babel-loader": "9.1.3", "babel-plugin-dynamic-import-polyfill": "1.0.0", @@ -62,7 +62,7 @@ "stylelint-scss": "5.3.2", "ts-loader": "9.5.1", "typescript": "5.5.3", - "vitest": "2.0.1", + "vitest": "2.0.2", "webpack": "5.92.1", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", From d79e35b0e08217a1ef1d0a928e6648f70c8bbe1b Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 17 Jul 2024 19:12:56 +0000 Subject: [PATCH 33/34] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 24110f5781..012ac2ab3b 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1897,5 +1897,7 @@ "HeaderVideoAdvanced": "Erweitertes Video", "Alternate": "Alternative", "AlternateDVD": "Alternative DVD", - "Regional": "Regional" + "Regional": "Regional", + "LabelSelectPreferredTranscodeVideoCodec": "Bevorzugter transkodierter Videocodec", + "SelectPreferredTranscodeVideoCodecHelp": "Wähle den bevorzugten Videocodec für die Transkodierung aus. Wenn der bevorzugte Codec nicht unterstützt wird, verwendet der Server den nächstbesten verfügbaren Codec." } From f15943e3068250a06fc051937fd2560bedee6b42 Mon Sep 17 00:00:00 2001 From: Andi Chandler Date: Wed, 17 Jul 2024 18:41:04 +0000 Subject: [PATCH 34/34] Translated using Weblate (English (United Kingdom)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en_GB/ --- src/strings/en-gb.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 9839586026..b4236461b0 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1897,5 +1897,7 @@ "SaveLyricsIntoMediaFoldersHelp": "Storing lyrics next to audio files will allow them to be more easily managed.", "Alternate": "Alternate", "AlternateDVD": "Alternate DVD", - "Regional": "Regional" + "Regional": "Regional", + "SelectPreferredTranscodeVideoCodecHelp": "Select the preferred video codec to transcode to. If the preferred codec is not supported, the server will use the next best available codec.", + "LabelSelectPreferredTranscodeVideoCodec": "Preferred transcode video codec" }