diff --git a/lib/i18n/az.i18n.json b/lib/i18n/az.i18n.json index 5e2470e6c..35292df2c 100644 --- a/lib/i18n/az.i18n.json +++ b/lib/i18n/az.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Altyazılar və konfiqurasiya", "seekAndTiming": "Sarğı və vaxt tənzimləməsi", "behavior": "Davranış", - "exportDialogTitle": "Plezy tənzimləmələrini ixrac et" + "exportDialogTitle": "Plezy tənzimləmələrini ixrac et", + "linuxVideoRenderMode": "Video göstərmə rejimi", + "linuxVideoRenderModeDescription": "Avtomatik yerli Wayland müstəvisinə üstünlük verir (HDR dəstəkləyir); Texture SDR ehtiyat yolunu məcbur edir.", + "linuxVideoRenderModeAuto": "Avtomatik", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Kino, serial, musiqi axtar...", diff --git a/lib/i18n/bg.i18n.json b/lib/i18n/bg.i18n.json index 895aac407..e25f5403b 100644 --- a/lib/i18n/bg.i18n.json +++ b/lib/i18n/bg.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Субтитри и конфигурация", "seekAndTiming": "Търсене и време", "behavior": "Поведение", - "exportDialogTitle": "Експортиране на настройките на Plezy" + "exportDialogTitle": "Експортиране на настройките на Plezy", + "linuxVideoRenderMode": "Режим на видеото", + "linuxVideoRenderModeDescription": "Автоматично предпочита родната Wayland равнина (HDR-съвместима); Texture принуждава SDR резервния път.", + "linuxVideoRenderModeAuto": "Автоматично", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Търсене на филми, сериали, музика...", diff --git a/lib/i18n/da.i18n.json b/lib/i18n/da.i18n.json index d3e722976..d0547425e 100644 --- a/lib/i18n/da.i18n.json +++ b/lib/i18n/da.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Undertekster og konfiguration", "seekAndTiming": "Søgning og timing", "behavior": "Adfærd", - "exportDialogTitle": "Eksportér Plezy-indstillinger" + "exportDialogTitle": "Eksportér Plezy-indstillinger", + "linuxVideoRenderMode": "Video-gengivelsestilstand", + "linuxVideoRenderModeDescription": "Automatisk foretrækker det native Wayland-plan (HDR-kompatibelt); Texture tvinger SDR-fallback-stien.", + "linuxVideoRenderModeAuto": "Automatisk", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Søg film, serier, musik...", diff --git a/lib/i18n/de.i18n.json b/lib/i18n/de.i18n.json index b6825b6b2..e29bc12e3 100644 --- a/lib/i18n/de.i18n.json +++ b/lib/i18n/de.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Untertitel und Konfiguration", "seekAndTiming": "Spulen & Timing", "behavior": "Verhalten", - "exportDialogTitle": "Plezy-Einstellungen exportieren" + "exportDialogTitle": "Plezy-Einstellungen exportieren", + "linuxVideoRenderMode": "Video-Rendermodus", + "linuxVideoRenderModeDescription": "Automatisch bevorzugt die native Wayland-Ebene (HDR-fähig); Texture erzwingt den SDR-Fallback-Pfad.", + "linuxVideoRenderModeAuto": "Automatisch", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Filme, Serien und Musik suchen …", diff --git a/lib/i18n/en.i18n.json b/lib/i18n/en.i18n.json index ed14c37b3..538c976f0 100644 --- a/lib/i18n/en.i18n.json +++ b/lib/i18n/en.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Subtitles & Configuration", "seekAndTiming": "Seek & Timing", "behavior": "Behavior", - "exportDialogTitle": "Export Plezy settings" + "exportDialogTitle": "Export Plezy settings", + "linuxVideoRenderMode": "Video rendering mode", + "linuxVideoRenderModeDescription": "Automatic prefers the native Wayland plane (HDR-capable); Texture forces the SDR fallback path.", + "linuxVideoRenderModeAuto": "Automatic", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Search movies, shows, music...", diff --git a/lib/i18n/es.i18n.json b/lib/i18n/es.i18n.json index 876cd1b06..d561d009e 100644 --- a/lib/i18n/es.i18n.json +++ b/lib/i18n/es.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Subtítulos y configuración", "seekAndTiming": "Desplazamiento y tiempos", "behavior": "Comportamiento", - "exportDialogTitle": "Exportar ajustes de Plezy" + "exportDialogTitle": "Exportar ajustes de Plezy", + "linuxVideoRenderMode": "Modo de renderizado de vídeo", + "linuxVideoRenderModeDescription": "Automático prefiere el plano Wayland nativo (compatible con HDR); Texture fuerza la ruta de reserva SDR.", + "linuxVideoRenderModeAuto": "Automático", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Buscar películas, series, música...", diff --git a/lib/i18n/fr.i18n.json b/lib/i18n/fr.i18n.json index 5e7eda0f4..fb39f3a39 100644 --- a/lib/i18n/fr.i18n.json +++ b/lib/i18n/fr.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Sous-titres et configuration", "seekAndTiming": "Déplacement et minutage", "behavior": "Comportement", - "exportDialogTitle": "Exporter les paramètres de Plezy" + "exportDialogTitle": "Exporter les paramètres de Plezy", + "linuxVideoRenderMode": "Mode de rendu vidéo", + "linuxVideoRenderModeDescription": "Automatique préfère le plan Wayland natif (compatible HDR) ; Texture force le chemin de repli SDR.", + "linuxVideoRenderModeAuto": "Automatique", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Rechercher des films, des séries, de la musique...", diff --git a/lib/i18n/hu.i18n.json b/lib/i18n/hu.i18n.json index 1672a7c4b..d80a22907 100644 --- a/lib/i18n/hu.i18n.json +++ b/lib/i18n/hu.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Feliratok és konfiguráció", "seekAndTiming": "Tekerés és időzítés", "behavior": "Viselkedés", - "exportDialogTitle": "Plezy-beállítások exportálása" + "exportDialogTitle": "Plezy-beállítások exportálása", + "linuxVideoRenderMode": "Videó megjelenítési mód", + "linuxVideoRenderModeDescription": "Az Automatikus a natív Wayland síkot részesíti előnyben (HDR-képes); a Texture az SDR tartalék utat kényszeríti ki.", + "linuxVideoRenderModeAuto": "Automatikus", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Keresés filmek, sorozatok és zenék között...", diff --git a/lib/i18n/it.i18n.json b/lib/i18n/it.i18n.json index 4ca388a06..e390f7dfe 100644 --- a/lib/i18n/it.i18n.json +++ b/lib/i18n/it.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Sottotitoli e impostazioni", "seekAndTiming": "Avanzamento e tempi", "behavior": "Comportamento", - "exportDialogTitle": "Esporta le impostazioni di Plezy" + "exportDialogTitle": "Esporta le impostazioni di Plezy", + "linuxVideoRenderMode": "Modalità di rendering video", + "linuxVideoRenderModeDescription": "Automatico preferisce il piano Wayland nativo (compatibile HDR); Texture forza il percorso di riserva SDR.", + "linuxVideoRenderModeAuto": "Automatico", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Cerca film, serie TV e musica...", diff --git a/lib/i18n/ja.i18n.json b/lib/i18n/ja.i18n.json index e2acd7018..11df60709 100644 --- a/lib/i18n/ja.i18n.json +++ b/lib/i18n/ja.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "字幕と設定", "seekAndTiming": "シークとタイミング", "behavior": "動作", - "exportDialogTitle": "Plezyの設定をエクスポート" + "exportDialogTitle": "Plezyの設定をエクスポート", + "linuxVideoRenderMode": "動画レンダリングモード", + "linuxVideoRenderModeDescription": "自動はネイティブの Wayland プレーン(HDR 対応)を優先し、Texture は SDR フォールバック経路を強制します。", + "linuxVideoRenderModeAuto": "自動", + "linuxVideoRenderModeTexture": "Texture(SDR)" }, "search": { "hint": "映画、番組、音楽を検索…", diff --git a/lib/i18n/kk.i18n.json b/lib/i18n/kk.i18n.json index 3600fae8d..9426b2f75 100644 --- a/lib/i18n/kk.i18n.json +++ b/lib/i18n/kk.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Субтитрлер мен конфигурация", "seekAndTiming": "Айналдыру және уақытты реттеу", "behavior": "Мінез-құлық", - "exportDialogTitle": "Plezy параметрлерін экспорттау" + "exportDialogTitle": "Plezy параметрлерін экспорттау", + "linuxVideoRenderMode": "Бейнені көрсету режимі", + "linuxVideoRenderModeDescription": "Автоматты режим жергілікті Wayland жазықтығын қалайды (HDR қолдайды); Texture SDR резервтік жолды мәжбүрлейді.", + "linuxVideoRenderModeAuto": "Автоматты", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Фильмдер, сериалдар, музыка іздеу...", diff --git a/lib/i18n/ko.i18n.json b/lib/i18n/ko.i18n.json index ac4b7f8bc..56803921d 100644 --- a/lib/i18n/ko.i18n.json +++ b/lib/i18n/ko.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "자막 및 구성", "seekAndTiming": "탐색 및 타이밍", "behavior": "동작", - "exportDialogTitle": "Plezy 설정 내보내기" + "exportDialogTitle": "Plezy 설정 내보내기", + "linuxVideoRenderMode": "동영상 렌더링 모드", + "linuxVideoRenderModeDescription": "자동은 네이티브 Wayland 평면(HDR 지원)을 선호하고, Texture는 SDR 대체 경로를 강제합니다.", + "linuxVideoRenderModeAuto": "자동", + "linuxVideoRenderModeTexture": "Texture(SDR)" }, "search": { "hint": "영화, 시리즈, 음악 등을 검색하세요...", diff --git a/lib/i18n/nb.i18n.json b/lib/i18n/nb.i18n.json index 416313b41..648d0b259 100644 --- a/lib/i18n/nb.i18n.json +++ b/lib/i18n/nb.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Undertekster og konfigurasjon", "seekAndTiming": "Spoling og tidsinnstillinger", "behavior": "Oppførsel", - "exportDialogTitle": "Eksporter Plezy-innstillinger" + "exportDialogTitle": "Eksporter Plezy-innstillinger", + "linuxVideoRenderMode": "Video-gjengivelsesmodus", + "linuxVideoRenderModeDescription": "Automatisk foretrekker det native Wayland-planet (HDR-kompatibelt); Texture tvinger SDR-fallback-stien.", + "linuxVideoRenderModeAuto": "Automatisk", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Søk i filmer, serier, musikk...", diff --git a/lib/i18n/nl.i18n.json b/lib/i18n/nl.i18n.json index 8d18b7f6b..d1076ea50 100644 --- a/lib/i18n/nl.i18n.json +++ b/lib/i18n/nl.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Ondertitels en instellingen", "seekAndTiming": "Spoelen en timing", "behavior": "Gedrag", - "exportDialogTitle": "Plezy-instellingen exporteren" + "exportDialogTitle": "Plezy-instellingen exporteren", + "linuxVideoRenderMode": "Videoweergavemodus", + "linuxVideoRenderModeDescription": "Automatisch geeft de voorkeur aan het native Wayland-vlak (HDR-compatibel); Texture dwingt het SDR-reservepad af.", + "linuxVideoRenderModeAuto": "Automatisch", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Zoek films, series, muziek...", diff --git a/lib/i18n/pl.i18n.json b/lib/i18n/pl.i18n.json index f6971d3df..95f94a955 100644 --- a/lib/i18n/pl.i18n.json +++ b/lib/i18n/pl.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Napisy i konfiguracja", "seekAndTiming": "Przewijanie i czas", "behavior": "Zachowanie", - "exportDialogTitle": "Eksport ustawień Plezy" + "exportDialogTitle": "Eksport ustawień Plezy", + "linuxVideoRenderMode": "Tryb renderowania wideo", + "linuxVideoRenderModeDescription": "Automatyczny preferuje natywną płaszczyznę Wayland (zgodną z HDR); Texture wymusza ścieżkę zapasową SDR.", + "linuxVideoRenderModeAuto": "Automatyczny", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Szukaj filmów, seriali, muzyki...", diff --git a/lib/i18n/pt.i18n.json b/lib/i18n/pt.i18n.json index c55720ea8..8dd01c5e4 100644 --- a/lib/i18n/pt.i18n.json +++ b/lib/i18n/pt.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Legendas e configuração", "seekAndTiming": "Busca e tempo", "behavior": "Comportamento", - "exportDialogTitle": "Exportar configurações do Plezy" + "exportDialogTitle": "Exportar configurações do Plezy", + "linuxVideoRenderMode": "Modo de renderização de vídeo", + "linuxVideoRenderModeDescription": "Automático prefere o plano Wayland nativo (compatível com HDR); Texture força o caminho de reserva SDR.", + "linuxVideoRenderModeAuto": "Automático", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Buscar filmes, séries, músicas...", diff --git a/lib/i18n/ru.i18n.json b/lib/i18n/ru.i18n.json index b4a68925e..e3ed4f147 100644 --- a/lib/i18n/ru.i18n.json +++ b/lib/i18n/ru.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Субтитры и конфигурация", "seekAndTiming": "Перемотка и время", "behavior": "Поведение", - "exportDialogTitle": "Экспорт настроек Plezy" + "exportDialogTitle": "Экспорт настроек Plezy", + "linuxVideoRenderMode": "Режим рендеринга видео", + "linuxVideoRenderModeDescription": "Автоматический режим предпочитает нативную плоскость Wayland (поддержка HDR); Texture принудительно использует запасной путь SDR.", + "linuxVideoRenderModeAuto": "Автоматически", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Поиск фильмов, сериалов, музыки...", diff --git a/lib/i18n/strings.g.dart b/lib/i18n/strings.g.dart index da49dca2c..618c9c902 100644 --- a/lib/i18n/strings.g.dart +++ b/lib/i18n/strings.g.dart @@ -4,7 +4,7 @@ /// To regenerate, run: `dart run slang` /// /// Locales: 22 -/// Strings: 40722 (1851 per locale) +/// Strings: 40810 (1855 per locale) // coverage:ignore-file // ignore_for_file: type=lint, unused_import diff --git a/lib/i18n/strings_az.g.dart b/lib/i18n/strings_az.g.dart index 50174830a..93db67b6c 100644 --- a/lib/i18n/strings_az.g.dart +++ b/lib/i18n/strings_az.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$az extends Translations$settings$en { @override String get seekAndTiming => 'Sarğı və vaxt tənzimləməsi'; @override String get behavior => 'Davranış'; @override String get exportDialogTitle => 'Plezy tənzimləmələrini ixrac et'; + @override String get linuxVideoRenderMode => 'Video göstərmə rejimi'; + @override String get linuxVideoRenderModeDescription => 'Avtomatik yerli Wayland müstəvisinə üstünlük verir (HDR dəstəkləyir); Texture SDR ehtiyat yolunu məcbur edir.'; + @override String get linuxVideoRenderModeAuto => 'Avtomatik'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3019,6 +3023,10 @@ extension on TranslationsAz { 'settings.seekAndTiming' => 'Sarğı və vaxt tənzimləməsi', 'settings.behavior' => 'Davranış', 'settings.exportDialogTitle' => 'Plezy tənzimləmələrini ixrac et', + 'settings.linuxVideoRenderMode' => 'Video göstərmə rejimi', + 'settings.linuxVideoRenderModeDescription' => 'Avtomatik yerli Wayland müstəvisinə üstünlük verir (HDR dəstəkləyir); Texture SDR ehtiyat yolunu məcbur edir.', + 'settings.linuxVideoRenderModeAuto' => 'Avtomatik', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Kino, serial, musiqi axtar...', 'search.tryDifferentTerm' => 'Fərqli axtarış sözü cəhd edin', 'search.searchYourMedia' => 'Mediyanızda axtarın', @@ -3198,12 +3206,12 @@ extension on TranslationsAz { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy bunun hansı faylları siləcəyini yoxlaya bilmədi, ona görə də yuxarıda adı çəkilən elementdən daha çoxunu silə bilər. Ləğv edib təzədən cəhd edin və ya yenə də silin.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Serveriniz bu element üçün fayl təfərrüatlarını təqdim etmədi, ona görə Plezy bunun hansı faylları siləcəyini yoxlaya bilmir. Yuxarıda adı çəkilən elementdən daha çoxunu silə bilər.', 'mediaMenu.mediaDeletedSuccessfully' => 'Media elementi uğurla silindi', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Media elementi silinə bilmədi', 'mediaMenu.rate' => 'Qiymətləndir', 'mediaMenu.playFromBeginning' => 'Əvvəldən oynat', 'mediaMenu.playVersion' => 'Versiyanı oynat...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Qiymətləndir', 'rateSheet.server' => 'Server', 'rateSheet.favorite' => 'Sevimli', @@ -3712,12 +3720,12 @@ extension on TranslationsAz { 'explore.watchlistNoMatch' => 'Bu elementi heç bir baxış siyahısı ilə uyğunlaşdırmaq olmadı', 'explore.notInLibrary' => 'Kitabxananızda yoxdur', 'explore.inTheseLibraries' => 'Bu kitabxanalarda var', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Kitabxananız yoxlanılır...', 'explore.emptyTitle' => 'Hələlik burada heç nə yoxdur', 'explore.emptyMessage' => ({required Object source}) => '${source} mənbəsindən olan sətirlər burada görünəcək.', 'explore.searchHint' => ({required Object source}) => '${source} daxilində axtar', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => '"${query}" üçün nəticə tapılmadı', 'explore.searchPrompt' => ({required Object source}) => '${source} vasitəsilə kino və seriallar axtarın.', 'explore.searchFailed' => 'Axtarış uğursuz oldu. Bağlantınızı yoxlayın.', @@ -4226,12 +4234,12 @@ extension on TranslationsAz { 'companionRemote.errors.failedToConnectAnyAddress' => 'Heç bir ünvana qoşuluna bilmədi', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => '${attempts} cəhddən sonra əlaqə kəsildi', 'companionRemote.errors.connectionLost' => 'Əlaqə kəsildi', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'Bağlantı autentifikasiyadan əvvəl bağlandı', 'videoSettings.playbackSpeed' => 'Oynatma sürəti', 'videoSettings.normalSpeed' => 'Normal', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Aktivdir (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Miqyas', 'videoSettings.sleepTimer' => 'Yuxu taymeri', 'videoSettings.audioSync' => 'Səs sinxronizasiyası', diff --git a/lib/i18n/strings_bg.g.dart b/lib/i18n/strings_bg.g.dart index ac7184fdb..e19f62407 100644 --- a/lib/i18n/strings_bg.g.dart +++ b/lib/i18n/strings_bg.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$bg extends Translations$settings$en { @override String get seekAndTiming => 'Търсене и време'; @override String get behavior => 'Поведение'; @override String get exportDialogTitle => 'Експортиране на настройките на Plezy'; + @override String get linuxVideoRenderMode => 'Режим на видеото'; + @override String get linuxVideoRenderModeDescription => 'Автоматично предпочита родната Wayland равнина (HDR-съвместима); Texture принуждава SDR резервния път.'; + @override String get linuxVideoRenderModeAuto => 'Автоматично'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3019,6 +3023,10 @@ extension on TranslationsBg { 'settings.seekAndTiming' => 'Търсене и време', 'settings.behavior' => 'Поведение', 'settings.exportDialogTitle' => 'Експортиране на настройките на Plezy', + 'settings.linuxVideoRenderMode' => 'Режим на видеото', + 'settings.linuxVideoRenderModeDescription' => 'Автоматично предпочита родната Wayland равнина (HDR-съвместима); Texture принуждава SDR резервния път.', + 'settings.linuxVideoRenderModeAuto' => 'Автоматично', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Търсене на филми, сериали, музика...', 'search.tryDifferentTerm' => 'Опитайте с различна дума за търсене', 'search.searchYourMedia' => 'Търсете в медийното си съдържание', @@ -3198,12 +3206,12 @@ extension on TranslationsBg { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy не успя да провери кои файлове ще бъдат премахнати, така че може да изтрие повече от посочения по-горе елемент. Откажете и опитайте отново, или изтрийте въпреки това.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Сървърът ви не предостави данни за файловете на този елемент, така че Plezy не може да провери кои файлове ще бъдат премахнати. Може да изтрие повече от посочения по-горе елемент.', 'mediaMenu.mediaDeletedSuccessfully' => 'Елементът е изтрит успешно', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Неуспешно изтриване на елемента', 'mediaMenu.rate' => 'Оцени', 'mediaMenu.playFromBeginning' => 'Пусни от началото', 'mediaMenu.playVersion' => 'Пусни версия...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Оцени', 'rateSheet.server' => 'Сървър', 'rateSheet.favorite' => 'Добави в любими', @@ -3712,12 +3720,12 @@ extension on TranslationsBg { 'explore.watchlistNoMatch' => 'Този елемент не можа да бъде съпоставен със списък за гледане', 'explore.notInLibrary' => 'Не е в твоята библиотека', 'explore.inTheseLibraries' => 'В тези библиотеки', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Проверка на твоята библиотека...', 'explore.emptyTitle' => 'Тук все още няма нищо', 'explore.emptyMessage' => ({required Object source}) => 'Редовете от ${source} ще се появят тук, когато има съдържание.', 'explore.searchHint' => ({required Object source}) => 'Търсене в ${source}', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => 'Няма резултати за "${query}"', 'explore.searchPrompt' => ({required Object source}) => 'Търси филми и сериали в ${source}.', 'explore.searchFailed' => 'Търсенето се провали. Провери връзката си и опитай отново.', @@ -4226,12 +4234,12 @@ extension on TranslationsBg { 'companionRemote.errors.failedToConnectAnyAddress' => 'Неуспешно свързване към който и да е адрес', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => 'Връзката е загубена след ${attempts} опита', 'companionRemote.errors.connectionLost' => 'Връзката е загубена', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'Връзката беше затворена преди удостоверяването', 'videoSettings.playbackSpeed' => 'Скорост на възпроизвеждане', 'videoSettings.normalSpeed' => 'Нормална', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Активен (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Мащаб', 'videoSettings.sleepTimer' => 'Таймер за заспиване', 'videoSettings.audioSync' => 'Синхронизация на аудио', diff --git a/lib/i18n/strings_da.g.dart b/lib/i18n/strings_da.g.dart index 8a73cbae3..53d0d397a 100644 --- a/lib/i18n/strings_da.g.dart +++ b/lib/i18n/strings_da.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$da extends Translations$settings$en { @override String get seekAndTiming => 'Søgning og timing'; @override String get behavior => 'Adfærd'; @override String get exportDialogTitle => 'Eksportér Plezy-indstillinger'; + @override String get linuxVideoRenderMode => 'Video-gengivelsestilstand'; + @override String get linuxVideoRenderModeDescription => 'Automatisk foretrækker det native Wayland-plan (HDR-kompatibelt); Texture tvinger SDR-fallback-stien.'; + @override String get linuxVideoRenderModeAuto => 'Automatisk'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3019,6 +3023,10 @@ extension on TranslationsDa { 'settings.seekAndTiming' => 'Søgning og timing', 'settings.behavior' => 'Adfærd', 'settings.exportDialogTitle' => 'Eksportér Plezy-indstillinger', + 'settings.linuxVideoRenderMode' => 'Video-gengivelsestilstand', + 'settings.linuxVideoRenderModeDescription' => 'Automatisk foretrækker det native Wayland-plan (HDR-kompatibelt); Texture tvinger SDR-fallback-stien.', + 'settings.linuxVideoRenderModeAuto' => 'Automatisk', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Søg film, serier, musik...', 'search.tryDifferentTerm' => 'Prøv en anden søgning', 'search.searchYourMedia' => 'Søg i dine medier', @@ -3198,12 +3206,12 @@ extension on TranslationsDa { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy kunne ikke kontrollere, hvilke filer dette vil fjerne, så det kan slette mere end det ovennævnte emne. Annuller og prøv igen, eller slet alligevel.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Din server leverede ikke filoplysninger for dette emne, så Plezy kan ikke kontrollere, hvilke filer dette vil fjerne. Det kan slette mere end det ovennævnte emne.', 'mediaMenu.mediaDeletedSuccessfully' => 'Mediet blev slettet', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Mediet kunne ikke slettes', 'mediaMenu.rate' => 'Bedøm', 'mediaMenu.playFromBeginning' => 'Afspil fra begyndelsen', 'mediaMenu.playVersion' => 'Afspil version...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Bedøm', 'rateSheet.server' => 'Server', 'rateSheet.favorite' => 'Favorit', @@ -3712,12 +3720,12 @@ extension on TranslationsDa { 'explore.watchlistNoMatch' => 'Kunne ikke knytte dette element til en overvågningsliste', 'explore.notInLibrary' => 'Ikke i dit bibliotek', 'explore.inTheseLibraries' => 'I disse biblioteker', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Tjekker dit bibliotek...', 'explore.emptyTitle' => 'Der er ikke noget her endnu', 'explore.emptyMessage' => ({required Object source}) => 'Indholdsrækker fra ${source} vises her, når de har indhold.', 'explore.searchHint' => ({required Object source}) => 'Søg i ${source}', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => 'Ingen resultater for "${query}"', 'explore.searchPrompt' => ({required Object source}) => 'Søg efter film og serier på ${source}.', 'explore.searchFailed' => 'Søgningen mislykkedes. Tjek din forbindelse, og prøv igen.', @@ -4226,12 +4234,12 @@ extension on TranslationsDa { 'companionRemote.errors.failedToConnectAnyAddress' => 'Kunne ikke oprette forbindelse til nogen adresse', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => 'Forbindelse mistet efter ${attempts} forsøg', 'companionRemote.errors.connectionLost' => 'Forbindelse mistet', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'Forbindelsen blev lukket før godkendelsen', 'videoSettings.playbackSpeed' => 'Afspilningshastighed', 'videoSettings.normalSpeed' => 'Normal', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Aktiv (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Zoom', 'videoSettings.sleepTimer' => 'Sove-timer', 'videoSettings.audioSync' => 'Lydsynkronisering', diff --git a/lib/i18n/strings_de.g.dart b/lib/i18n/strings_de.g.dart index 28d8a1ed5..c89a44346 100644 --- a/lib/i18n/strings_de.g.dart +++ b/lib/i18n/strings_de.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$de extends Translations$settings$en { @override String get seekAndTiming => 'Spulen & Timing'; @override String get behavior => 'Verhalten'; @override String get exportDialogTitle => 'Plezy-Einstellungen exportieren'; + @override String get linuxVideoRenderMode => 'Video-Rendermodus'; + @override String get linuxVideoRenderModeDescription => 'Automatisch bevorzugt die native Wayland-Ebene (HDR-fähig); Texture erzwingt den SDR-Fallback-Pfad.'; + @override String get linuxVideoRenderModeAuto => 'Automatisch'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3019,6 +3023,10 @@ extension on TranslationsDe { 'settings.seekAndTiming' => 'Spulen & Timing', 'settings.behavior' => 'Verhalten', 'settings.exportDialogTitle' => 'Plezy-Einstellungen exportieren', + 'settings.linuxVideoRenderMode' => 'Video-Rendermodus', + 'settings.linuxVideoRenderModeDescription' => 'Automatisch bevorzugt die native Wayland-Ebene (HDR-fähig); Texture erzwingt den SDR-Fallback-Pfad.', + 'settings.linuxVideoRenderModeAuto' => 'Automatisch', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Filme, Serien und Musik suchen …', 'search.tryDifferentTerm' => 'Anderen Suchbegriff versuchen', 'search.searchYourMedia' => 'In den eigenen Medien suchen', @@ -3198,12 +3206,12 @@ extension on TranslationsDe { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy konnte nicht prüfen, welche Dateien dadurch entfernt werden. Es könnte also mehr gelöscht werden als das oben genannte Element. Brich ab und versuche es erneut, oder lösche trotzdem.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Dein Server hat für dieses Element keine Dateidetails bereitgestellt, daher kann Plezy nicht prüfen, welche Dateien entfernt werden. Es könnte mehr gelöscht werden als das oben genannte Element.', 'mediaMenu.mediaDeletedSuccessfully' => 'Medienelement gelöscht', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Medienelement konnte nicht gelöscht werden', 'mediaMenu.rate' => 'Bewerten', 'mediaMenu.playFromBeginning' => 'Von Anfang an abspielen', 'mediaMenu.playVersion' => 'Version abspielen …', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Bewerten', 'rateSheet.server' => 'Server', 'rateSheet.favorite' => 'Favorit', @@ -3712,12 +3720,12 @@ extension on TranslationsDe { 'explore.watchlistNoMatch' => 'Dieser Eintrag konnte keiner Watchlist zugeordnet werden', 'explore.notInLibrary' => 'Nicht in deiner Mediathek', 'explore.inTheseLibraries' => 'In diesen Mediatheken', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Deine Mediathek wird überprüft …', 'explore.emptyTitle' => 'Hier ist noch nichts', 'explore.emptyMessage' => ({required Object source}) => 'Zeilen aus ${source} erscheinen hier, sobald sie Inhalte enthalten.', 'explore.searchHint' => ({required Object source}) => '${source} durchsuchen', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => 'Keine Ergebnisse für „${query}“', 'explore.searchPrompt' => ({required Object source}) => 'Suche nach Filmen und Serien auf ${source}.', 'explore.searchFailed' => 'Suche fehlgeschlagen. Prüfe deine Verbindung und versuche es erneut.', @@ -4226,12 +4234,12 @@ extension on TranslationsDe { 'companionRemote.errors.failedToConnectAnyAddress' => 'Keine Verbindung zu einer Adresse möglich', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => 'Verbindung nach ${attempts} Versuchen verloren', 'companionRemote.errors.connectionLost' => 'Verbindung verloren', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'Die Verbindung wurde vor der Authentifizierung geschlossen', 'videoSettings.playbackSpeed' => 'Wiedergabegeschwindigkeit', 'videoSettings.normalSpeed' => 'Normal', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Aktiv (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Zoom', 'videoSettings.sleepTimer' => 'Schlaftimer', 'videoSettings.audioSync' => 'Audio-Synchronisation', diff --git a/lib/i18n/strings_en.g.dart b/lib/i18n/strings_en.g.dart index e94cf8709..a6e7e8265 100644 --- a/lib/i18n/strings_en.g.dart +++ b/lib/i18n/strings_en.g.dart @@ -1100,6 +1100,18 @@ class Translations$settings$en { /// en: 'Export Plezy settings' String get exportDialogTitle => 'Export Plezy settings'; + + /// en: 'Video rendering mode' + String get linuxVideoRenderMode => 'Video rendering mode'; + + /// en: 'Automatic prefers the native Wayland plane (HDR-capable); Texture forces the SDR fallback path.' + String get linuxVideoRenderModeDescription => 'Automatic prefers the native Wayland plane (HDR-capable); Texture forces the SDR fallback path.'; + + /// en: 'Automatic' + String get linuxVideoRenderModeAuto => 'Automatic'; + + /// en: 'Texture (SDR)' + String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -6712,6 +6724,10 @@ extension on Translations { 'settings.seekAndTiming' => 'Seek & Timing', 'settings.behavior' => 'Behavior', 'settings.exportDialogTitle' => 'Export Plezy settings', + 'settings.linuxVideoRenderMode' => 'Video rendering mode', + 'settings.linuxVideoRenderModeDescription' => 'Automatic prefers the native Wayland plane (HDR-capable); Texture forces the SDR fallback path.', + 'settings.linuxVideoRenderModeAuto' => 'Automatic', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Search movies, shows, music...', 'search.tryDifferentTerm' => 'Try a different search term', 'search.searchYourMedia' => 'Search your media', @@ -6891,12 +6907,12 @@ extension on Translations { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy could not check which files this will remove, so it may delete more than the item named above. Cancel and try again, or delete anyway.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Your server did not provide file details for this item, so Plezy cannot check which files this will remove. It may delete more than the item named above.', 'mediaMenu.mediaDeletedSuccessfully' => 'Media item deleted successfully', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Failed to delete media item', 'mediaMenu.rate' => 'Rate', 'mediaMenu.playFromBeginning' => 'Play from Beginning', 'mediaMenu.playVersion' => 'Play Version...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Rate', 'rateSheet.server' => 'Server', 'rateSheet.favorite' => 'Favorite', @@ -7405,12 +7421,12 @@ extension on Translations { 'explore.watchlistNoMatch' => 'Couldn\'t match this item to a watchlist', 'explore.notInLibrary' => 'Not in your library', 'explore.inTheseLibraries' => 'In these libraries', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Checking your library...', 'explore.emptyTitle' => 'Nothing here yet', 'explore.emptyMessage' => ({required Object source}) => 'Rows from ${source} will appear here once they have content.', 'explore.searchHint' => ({required Object source}) => 'Search ${source}', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => 'No results for "${query}"', 'explore.searchPrompt' => ({required Object source}) => 'Search for movies and shows on ${source}.', 'explore.searchFailed' => 'Search failed. Check your connection and try again.', @@ -7919,12 +7935,12 @@ extension on Translations { 'companionRemote.errors.failedToConnectAnyAddress' => 'Failed to connect to any address', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => 'Connection lost after ${attempts} attempts', 'companionRemote.errors.connectionLost' => 'Connection lost', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'The connection closed before authentication', 'videoSettings.playbackSpeed' => 'Playback Speed', 'videoSettings.normalSpeed' => 'Normal', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Active (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Zoom', 'videoSettings.sleepTimer' => 'Sleep Timer', 'videoSettings.audioSync' => 'Audio Sync', diff --git a/lib/i18n/strings_es.g.dart b/lib/i18n/strings_es.g.dart index 4b0854f09..f4f2217a2 100644 --- a/lib/i18n/strings_es.g.dart +++ b/lib/i18n/strings_es.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$es extends Translations$settings$en { @override String get seekAndTiming => 'Desplazamiento y tiempos'; @override String get behavior => 'Comportamiento'; @override String get exportDialogTitle => 'Exportar ajustes de Plezy'; + @override String get linuxVideoRenderMode => 'Modo de renderizado de vídeo'; + @override String get linuxVideoRenderModeDescription => 'Automático prefiere el plano Wayland nativo (compatible con HDR); Texture fuerza la ruta de reserva SDR.'; + @override String get linuxVideoRenderModeAuto => 'Automático'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3019,6 +3023,10 @@ extension on TranslationsEs { 'settings.seekAndTiming' => 'Desplazamiento y tiempos', 'settings.behavior' => 'Comportamiento', 'settings.exportDialogTitle' => 'Exportar ajustes de Plezy', + 'settings.linuxVideoRenderMode' => 'Modo de renderizado de vídeo', + 'settings.linuxVideoRenderModeDescription' => 'Automático prefiere el plano Wayland nativo (compatible con HDR); Texture fuerza la ruta de reserva SDR.', + 'settings.linuxVideoRenderModeAuto' => 'Automático', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Buscar películas, series, música...', 'search.tryDifferentTerm' => 'Prueba con un término de búsqueda diferente', 'search.searchYourMedia' => 'Busca en tu contenido', @@ -3198,12 +3206,12 @@ extension on TranslationsEs { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy no pudo comprobar qué archivos se eliminarán, por lo que podría borrar más de lo indicado arriba. Cancela y vuelve a intentarlo, o elimina de todos modos.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Tu servidor no proporcionó los detalles del archivo de este elemento, por lo que Plezy no puede comprobar qué archivos se eliminarán. Podría borrar más de lo indicado arriba.', 'mediaMenu.mediaDeletedSuccessfully' => 'Elemento multimedia eliminado con éxito', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Error al eliminar el elemento multimedia', 'mediaMenu.rate' => 'Calificar', 'mediaMenu.playFromBeginning' => 'Reproducir desde el inicio', 'mediaMenu.playVersion' => 'Reproducir versión...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Calificar', 'rateSheet.server' => 'Servidor', 'rateSheet.favorite' => 'Favorito', @@ -3712,12 +3720,12 @@ extension on TranslationsEs { 'explore.watchlistNoMatch' => 'No se pudo asociar este elemento con una lista de seguimiento', 'explore.notInLibrary' => 'No está en tu biblioteca', 'explore.inTheseLibraries' => 'En estas bibliotecas', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Comprobando tu biblioteca...', 'explore.emptyTitle' => 'Aquí no hay nada todavía', 'explore.emptyMessage' => ({required Object source}) => 'Las filas de ${source} aparecerán aquí cuando tengan contenido.', 'explore.searchHint' => ({required Object source}) => 'Buscar en ${source}', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => 'Sin resultados para "${query}"', 'explore.searchPrompt' => ({required Object source}) => 'Busca películas y series en ${source}.', 'explore.searchFailed' => 'La búsqueda falló. Comprueba tu conexión e inténtalo de nuevo.', @@ -4226,12 +4234,12 @@ extension on TranslationsEs { 'companionRemote.errors.failedToConnectAnyAddress' => 'No se pudo conectar a ninguna dirección', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => 'Conexión perdida tras ${attempts} intentos', 'companionRemote.errors.connectionLost' => 'Conexión perdida', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'La conexión se cerró antes de la autenticación', 'videoSettings.playbackSpeed' => 'Velocidad de reproducción', 'videoSettings.normalSpeed' => 'Normal', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Activo (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Zoom', 'videoSettings.sleepTimer' => 'Temporizador de apagado', 'videoSettings.audioSync' => 'Sincronización de audio', diff --git a/lib/i18n/strings_fr.g.dart b/lib/i18n/strings_fr.g.dart index fb128e3a8..2014a3bce 100644 --- a/lib/i18n/strings_fr.g.dart +++ b/lib/i18n/strings_fr.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$fr extends Translations$settings$en { @override String get seekAndTiming => 'Déplacement et minutage'; @override String get behavior => 'Comportement'; @override String get exportDialogTitle => 'Exporter les paramètres de Plezy'; + @override String get linuxVideoRenderMode => 'Mode de rendu vidéo'; + @override String get linuxVideoRenderModeDescription => 'Automatique préfère le plan Wayland natif (compatible HDR) ; Texture force le chemin de repli SDR.'; + @override String get linuxVideoRenderModeAuto => 'Automatique'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3019,6 +3023,10 @@ extension on TranslationsFr { 'settings.seekAndTiming' => 'Déplacement et minutage', 'settings.behavior' => 'Comportement', 'settings.exportDialogTitle' => 'Exporter les paramètres de Plezy', + 'settings.linuxVideoRenderMode' => 'Mode de rendu vidéo', + 'settings.linuxVideoRenderModeDescription' => 'Automatique préfère le plan Wayland natif (compatible HDR) ; Texture force le chemin de repli SDR.', + 'settings.linuxVideoRenderModeAuto' => 'Automatique', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Rechercher des films, des séries, de la musique...', 'search.tryDifferentTerm' => 'Essayez un autre terme de recherche', 'search.searchYourMedia' => 'Rechercher dans vos médias', @@ -3198,12 +3206,12 @@ extension on TranslationsFr { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy n\'a pas pu vérifier quels fichiers seront supprimés ; il risque donc d\'en supprimer plus que l\'élément nommé ci-dessus. Annulez et réessayez, ou supprimez quand même.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Votre serveur n\'a pas fourni les détails du fichier pour cet élément, Plezy ne peut donc pas vérifier quels fichiers seront supprimés. Il risque d\'en supprimer plus que l\'élément nommé ci-dessus.', 'mediaMenu.mediaDeletedSuccessfully' => 'Élément média supprimé avec succès', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Échec de la suppression de l\'élément média', 'mediaMenu.rate' => 'Noter', 'mediaMenu.playFromBeginning' => 'Lire depuis le début', 'mediaMenu.playVersion' => 'Lire la version...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Noter', 'rateSheet.server' => 'Serveur', 'rateSheet.favorite' => 'Favori', @@ -3712,12 +3720,12 @@ extension on TranslationsFr { 'explore.watchlistNoMatch' => 'Impossible d’associer cet élément à une liste de suivi', 'explore.notInLibrary' => 'Absent de votre bibliothèque', 'explore.inTheseLibraries' => 'Dans ces bibliothèques', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Vérification de votre bibliothèque...', 'explore.emptyTitle' => 'Rien ici pour l\'instant', 'explore.emptyMessage' => ({required Object source}) => 'Les lignes de ${source} apparaîtront ici dès qu’elles contiendront des éléments.', 'explore.searchHint' => ({required Object source}) => 'Rechercher dans ${source}', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => 'Aucun résultat pour "${query}"', 'explore.searchPrompt' => ({required Object source}) => 'Recherchez des films et des séries sur ${source}.', 'explore.searchFailed' => 'Échec de la recherche. Vérifiez votre connexion et réessayez.', @@ -4226,12 +4234,12 @@ extension on TranslationsFr { 'companionRemote.errors.failedToConnectAnyAddress' => 'Impossible de se connecter à une adresse', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => 'Connexion perdue après ${attempts} tentatives', 'companionRemote.errors.connectionLost' => 'Connexion perdue', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'La connexion a été fermée avant l’authentification', 'videoSettings.playbackSpeed' => 'Vitesse de lecture', 'videoSettings.normalSpeed' => 'Normale', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Actif (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Zoom', 'videoSettings.sleepTimer' => 'Minuterie de mise en veille', 'videoSettings.audioSync' => 'Synchronisation audio', diff --git a/lib/i18n/strings_hu.g.dart b/lib/i18n/strings_hu.g.dart index 30dc9df60..36952f4b6 100644 --- a/lib/i18n/strings_hu.g.dart +++ b/lib/i18n/strings_hu.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$hu extends Translations$settings$en { @override String get seekAndTiming => 'Tekerés és időzítés'; @override String get behavior => 'Viselkedés'; @override String get exportDialogTitle => 'Plezy-beállítások exportálása'; + @override String get linuxVideoRenderMode => 'Videó megjelenítési mód'; + @override String get linuxVideoRenderModeDescription => 'Az Automatikus a natív Wayland síkot részesíti előnyben (HDR-képes); a Texture az SDR tartalék utat kényszeríti ki.'; + @override String get linuxVideoRenderModeAuto => 'Automatikus'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3019,6 +3023,10 @@ extension on TranslationsHu { 'settings.seekAndTiming' => 'Tekerés és időzítés', 'settings.behavior' => 'Viselkedés', 'settings.exportDialogTitle' => 'Plezy-beállítások exportálása', + 'settings.linuxVideoRenderMode' => 'Videó megjelenítési mód', + 'settings.linuxVideoRenderModeDescription' => 'Az Automatikus a natív Wayland síkot részesíti előnyben (HDR-képes); a Texture az SDR tartalék utat kényszeríti ki.', + 'settings.linuxVideoRenderModeAuto' => 'Automatikus', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Keresés filmek, sorozatok és zenék között...', 'search.tryDifferentTerm' => 'Próbálj másik keresési kifejezést', 'search.searchYourMedia' => 'Keresés a saját médiatartalmak között', @@ -3198,12 +3206,12 @@ extension on TranslationsHu { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'A Plezy nem tudta ellenőrizni, mely fájlokat távolítja el ez, ezért a fent nevezett elemnél többet is törölhet. Szakítsa meg és próbálja újra, vagy töröljön mindenképp.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'A szerver nem szolgáltatott fájladatokat ehhez az elemhez, ezért a Plezy nem tudja ellenőrizni, mely fájlokat távolít el. A fent nevezett elemnél többet is törölhet.', 'mediaMenu.mediaDeletedSuccessfully' => 'Médiaelem sikeresen törölve', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Nem sikerült a médiaelem törlése', 'mediaMenu.rate' => 'Értékelés', 'mediaMenu.playFromBeginning' => 'Lejátszás az elejétől', 'mediaMenu.playVersion' => 'Verzió lejátszása...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Értékelés', 'rateSheet.server' => 'Szerver', 'rateSheet.favorite' => 'Kedvenc', @@ -3712,12 +3720,12 @@ extension on TranslationsHu { 'explore.watchlistNoMatch' => 'Nem sikerült ezt az elemet figyelőlistához társítani', 'explore.notInLibrary' => 'Nincs a könyvtáradban', 'explore.inTheseLibraries' => 'Ezekben a könyvtárakban', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Könyvtár ellenőrzése...', 'explore.emptyTitle' => 'Még nincs itt semmi', 'explore.emptyMessage' => ({required Object source}) => 'A(z) ${source} forrásból származó sorok itt fognak megjelenni, amint van tartalmuk.', 'explore.searchHint' => ({required Object source}) => 'Keresés itt: ${source}', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => 'Nincs találat a következőre: "${query}"', 'explore.searchPrompt' => ({required Object source}) => 'Filmek és sorozatok keresése a következőn: ${source}.', 'explore.searchFailed' => 'A keresés nem sikerült. Ellenőrizd a kapcsolatot és próbáld újra.', @@ -4226,12 +4234,12 @@ extension on TranslationsHu { 'companionRemote.errors.failedToConnectAnyAddress' => 'Egyetlen címhez sem sikerült csatlakozni', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => 'A kapcsolat megszakadt ${attempts} próbálkozás után', 'companionRemote.errors.connectionLost' => 'A kapcsolat megszakadt', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'A kapcsolat a hitelesítés előtt megszakadt', 'videoSettings.playbackSpeed' => 'Lejátszási sebesség', 'videoSettings.normalSpeed' => 'Normál', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Aktív (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Nagyítás', 'videoSettings.sleepTimer' => 'Elalvási időzítő', 'videoSettings.audioSync' => 'Hang szinkronizálása', diff --git a/lib/i18n/strings_it.g.dart b/lib/i18n/strings_it.g.dart index fc81864ee..820923348 100644 --- a/lib/i18n/strings_it.g.dart +++ b/lib/i18n/strings_it.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$it extends Translations$settings$en { @override String get seekAndTiming => 'Avanzamento e tempi'; @override String get behavior => 'Comportamento'; @override String get exportDialogTitle => 'Esporta le impostazioni di Plezy'; + @override String get linuxVideoRenderMode => 'Modalità di rendering video'; + @override String get linuxVideoRenderModeDescription => 'Automatico preferisce il piano Wayland nativo (compatibile HDR); Texture forza il percorso di riserva SDR.'; + @override String get linuxVideoRenderModeAuto => 'Automatico'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3019,6 +3023,10 @@ extension on TranslationsIt { 'settings.seekAndTiming' => 'Avanzamento e tempi', 'settings.behavior' => 'Comportamento', 'settings.exportDialogTitle' => 'Esporta le impostazioni di Plezy', + 'settings.linuxVideoRenderMode' => 'Modalità di rendering video', + 'settings.linuxVideoRenderModeDescription' => 'Automatico preferisce il piano Wayland nativo (compatibile HDR); Texture forza il percorso di riserva SDR.', + 'settings.linuxVideoRenderModeAuto' => 'Automatico', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Cerca film, serie TV e musica...', 'search.tryDifferentTerm' => 'Prova altri termini di ricerca', 'search.searchYourMedia' => 'Cerca nei tuoi media', @@ -3198,12 +3206,12 @@ extension on TranslationsIt { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy non ha potuto verificare quali file rimuoverà, quindi potrebbe eliminare più di quanto indicato sopra. Annulla e riprova, oppure elimina comunque.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Il tuo server non ha fornito i dettagli del file per questo elemento, quindi Plezy non può verificare quali file rimuoverà. Potrebbe eliminare più di quanto indicato sopra.', 'mediaMenu.mediaDeletedSuccessfully' => 'Elemento multimediale eliminato correttamente', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Impossibile eliminare l\'elemento multimediale', 'mediaMenu.rate' => 'Valuta', 'mediaMenu.playFromBeginning' => 'Riproduci dall\'inizio', 'mediaMenu.playVersion' => 'Riproduci versione...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Valuta', 'rateSheet.server' => 'Server', 'rateSheet.favorite' => 'Preferito', @@ -3712,12 +3720,12 @@ extension on TranslationsIt { 'explore.watchlistNoMatch' => 'Impossibile associare questo elemento a una lista titoli', 'explore.notInLibrary' => 'Non è nella tua libreria', 'explore.inTheseLibraries' => 'In queste librerie', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Ricerca nella tua libreria...', 'explore.emptyTitle' => 'Ancora niente qui', 'explore.emptyMessage' => ({required Object source}) => 'Le sezioni di ${source} appariranno qui quando saranno disponibili dei contenuti.', 'explore.searchHint' => ({required Object source}) => 'Cerca su ${source}', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => 'Nessun risultato per "${query}"', 'explore.searchPrompt' => ({required Object source}) => 'Cerca film e serie TV su ${source}.', 'explore.searchFailed' => 'Ricerca fallita. Controlla la connessione e riprova.', @@ -4226,12 +4234,12 @@ extension on TranslationsIt { 'companionRemote.errors.failedToConnectAnyAddress' => 'Impossibile connettersi a qualsiasi indirizzo', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => 'Connessione persa dopo ${attempts} tentativi', 'companionRemote.errors.connectionLost' => 'Connessione persa', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'La connessione si è chiusa prima dell\'autenticazione', 'videoSettings.playbackSpeed' => 'Velocità di riproduzione', 'videoSettings.normalSpeed' => 'Normale', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Attivo (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Zoom', 'videoSettings.sleepTimer' => 'Timer di spegnimento', 'videoSettings.audioSync' => 'Sincronizzazione audio', diff --git a/lib/i18n/strings_ja.g.dart b/lib/i18n/strings_ja.g.dart index a2c13cd69..5abf5cfc4 100644 --- a/lib/i18n/strings_ja.g.dart +++ b/lib/i18n/strings_ja.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$ja extends Translations$settings$en { @override String get seekAndTiming => 'シークとタイミング'; @override String get behavior => '動作'; @override String get exportDialogTitle => 'Plezyの設定をエクスポート'; + @override String get linuxVideoRenderMode => '動画レンダリングモード'; + @override String get linuxVideoRenderModeDescription => '自動はネイティブの Wayland プレーン(HDR 対応)を優先し、Texture は SDR フォールバック経路を強制します。'; + @override String get linuxVideoRenderModeAuto => '自動'; + @override String get linuxVideoRenderModeTexture => 'Texture(SDR)'; } // Path: search @@ -3009,6 +3013,10 @@ extension on TranslationsJa { 'settings.seekAndTiming' => 'シークとタイミング', 'settings.behavior' => '動作', 'settings.exportDialogTitle' => 'Plezyの設定をエクスポート', + 'settings.linuxVideoRenderMode' => '動画レンダリングモード', + 'settings.linuxVideoRenderModeDescription' => '自動はネイティブの Wayland プレーン(HDR 対応)を優先し、Texture は SDR フォールバック経路を強制します。', + 'settings.linuxVideoRenderModeAuto' => '自動', + 'settings.linuxVideoRenderModeTexture' => 'Texture(SDR)', 'search.hint' => '映画、番組、音楽を検索…', 'search.tryDifferentTerm' => '別の検索語をお試しください', 'search.searchYourMedia' => 'メディアを検索', @@ -3188,12 +3196,12 @@ extension on TranslationsJa { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezyは削除対象のファイルを確認できなかったため、上記のアイテム以上に削除される可能性があります。キャンセルして再試行するか、それでも削除してください。', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'サーバーがこのアイテムのファイル情報を提供しなかったため、Plezyは削除対象のファイルを確認できません。上記のアイテム以上に削除される可能性があります。', 'mediaMenu.mediaDeletedSuccessfully' => 'メディアアイテムを正常に削除しました', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'メディアアイテムの削除に失敗しました', 'mediaMenu.rate' => '評価', 'mediaMenu.playFromBeginning' => '最初から再生', 'mediaMenu.playVersion' => 'バージョンを選んで再生…', - _ => null, - } ?? switch (path) { 'rateSheet.title' => '評価', 'rateSheet.server' => 'サーバー', 'rateSheet.favorite' => 'お気に入り', @@ -3702,12 +3710,12 @@ extension on TranslationsJa { 'explore.watchlistNoMatch' => 'このアイテムに一致するウォッチリスト項目が見つかりませんでした', 'explore.notInLibrary' => 'ライブラリにありません', 'explore.inTheseLibraries' => 'これらのライブラリにあります', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'ライブラリを確認中…', 'explore.emptyTitle' => 'まだ何もありません', 'explore.emptyMessage' => ({required Object source}) => '${source}にコンテンツが追加されると、ここに表示されます。', 'explore.searchHint' => ({required Object source}) => '${source}を検索', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => '「${query}」の結果が見つかりません', 'explore.searchPrompt' => ({required Object source}) => '${source}で映画やテレビ番組を検索します。', 'explore.searchFailed' => '検索に失敗しました。接続を確認してもう一度お試しください。', @@ -4216,12 +4224,12 @@ extension on TranslationsJa { 'companionRemote.errors.failedToConnectAnyAddress' => 'どのアドレスにも接続できませんでした', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => '${attempts}回試行後に接続が切断されました', 'companionRemote.errors.connectionLost' => '接続が切断されました', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => '認証前に接続が切断されました', 'videoSettings.playbackSpeed' => '再生速度', 'videoSettings.normalSpeed' => '標準', 'videoSettings.sleepTimerActive' => ({required Object duration}) => '作動中(${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'ズーム', 'videoSettings.sleepTimer' => 'スリープタイマー', 'videoSettings.audioSync' => '音声同期', diff --git a/lib/i18n/strings_kk.g.dart b/lib/i18n/strings_kk.g.dart index d0b98384e..4e675ce5c 100644 --- a/lib/i18n/strings_kk.g.dart +++ b/lib/i18n/strings_kk.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$kk extends Translations$settings$en { @override String get seekAndTiming => 'Айналдыру және уақытты реттеу'; @override String get behavior => 'Мінез-құлық'; @override String get exportDialogTitle => 'Plezy параметрлерін экспорттау'; + @override String get linuxVideoRenderMode => 'Бейнені көрсету режимі'; + @override String get linuxVideoRenderModeDescription => 'Автоматты режим жергілікті Wayland жазықтығын қалайды (HDR қолдайды); Texture SDR резервтік жолды мәжбүрлейді.'; + @override String get linuxVideoRenderModeAuto => 'Автоматты'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3019,6 +3023,10 @@ extension on TranslationsKk { 'settings.seekAndTiming' => 'Айналдыру және уақытты реттеу', 'settings.behavior' => 'Мінез-құлық', 'settings.exportDialogTitle' => 'Plezy параметрлерін экспорттау', + 'settings.linuxVideoRenderMode' => 'Бейнені көрсету режимі', + 'settings.linuxVideoRenderModeDescription' => 'Автоматты режим жергілікті Wayland жазықтығын қалайды (HDR қолдайды); Texture SDR резервтік жолды мәжбүрлейді.', + 'settings.linuxVideoRenderModeAuto' => 'Автоматты', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Фильмдер, сериалдар, музыка іздеу...', 'search.tryDifferentTerm' => 'Басқа іздеу сөзін байқап көріңіз', 'search.searchYourMedia' => 'Медиафайлдардан іздеу', @@ -3198,12 +3206,12 @@ extension on TranslationsKk { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy қандай файлдар өшірілетінін тексере алмады, сондықтан ол жоғарыда аталған элементтен артық өшіруі мүмкін. Бас тартып, қайталап көріңіз немесе бәрібір өшіріңіз.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Серверіңіз бұл элемент үшін файл мәліметтерін ұсынбады, сондықтан Plezy қандай файлдар өшірілетінін тексере алмайды. Ол жоғарыда аталған элементтен артық өшіруі мүмкін.', 'mediaMenu.mediaDeletedSuccessfully' => 'Медиа элементі сәтті өшірілді', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Медиа элементін өшіру мүмкін болмады', 'mediaMenu.rate' => 'Бағалау', 'mediaMenu.playFromBeginning' => 'Басынан бастап ойнату', 'mediaMenu.playVersion' => 'Нұсқаны ойнату...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Бағалау', 'rateSheet.server' => 'Сервер', 'rateSheet.favorite' => 'Таңдаулы', @@ -3712,12 +3720,12 @@ extension on TranslationsKk { 'explore.watchlistNoMatch' => 'Бұл элементті көру тізімімен сәйкестендіру мүмкін болмады', 'explore.notInLibrary' => 'Кітапханаңызда жоқ', 'explore.inTheseLibraries' => 'Осы кітапханаларда бар', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Кітапхана тексерілуде...', 'explore.emptyTitle' => 'Әлі де мұнда ештеңе жоқ', 'explore.emptyMessage' => ({required Object source}) => '${source} дереккөзінен алынған қатарлар мұнда көрінеді.', 'explore.searchHint' => ({required Object source}) => '${source} ішінен іздеу', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => '"${query}" бойынша нәтиже табылмады', 'explore.searchPrompt' => ({required Object source}) => '${source} арқылы фильмдер мен сериалдарды іздеңіз.', 'explore.searchFailed' => 'Іздеу қатесі. Қосылымды тексеріңіз.', @@ -4226,12 +4234,12 @@ extension on TranslationsKk { 'companionRemote.errors.failedToConnectAnyAddress' => 'Ешбір мекенжайға қосылу мүмкін болмады', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => '${attempts} әрекеттен кейін байланыс үзілді', 'companionRemote.errors.connectionLost' => 'Байланыс үзілді', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'Аутентификациядан бұрын байланыс жабылды', 'videoSettings.playbackSpeed' => 'Ойнату жылдамдығы', 'videoSettings.normalSpeed' => 'Қалыпты', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Белсенді (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Масштаб', 'videoSettings.sleepTimer' => 'Ұйқы таймері', 'videoSettings.audioSync' => 'Аудио синхрондау', diff --git a/lib/i18n/strings_ko.g.dart b/lib/i18n/strings_ko.g.dart index ed0563105..bacf719bd 100644 --- a/lib/i18n/strings_ko.g.dart +++ b/lib/i18n/strings_ko.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$ko extends Translations$settings$en { @override String get seekAndTiming => '탐색 및 타이밍'; @override String get behavior => '동작'; @override String get exportDialogTitle => 'Plezy 설정 내보내기'; + @override String get linuxVideoRenderMode => '동영상 렌더링 모드'; + @override String get linuxVideoRenderModeDescription => '자동은 네이티브 Wayland 평면(HDR 지원)을 선호하고, Texture는 SDR 대체 경로를 강제합니다.'; + @override String get linuxVideoRenderModeAuto => '자동'; + @override String get linuxVideoRenderModeTexture => 'Texture(SDR)'; } // Path: search @@ -3009,6 +3013,10 @@ extension on TranslationsKo { 'settings.seekAndTiming' => '탐색 및 타이밍', 'settings.behavior' => '동작', 'settings.exportDialogTitle' => 'Plezy 설정 내보내기', + 'settings.linuxVideoRenderMode' => '동영상 렌더링 모드', + 'settings.linuxVideoRenderModeDescription' => '자동은 네이티브 Wayland 평면(HDR 지원)을 선호하고, Texture는 SDR 대체 경로를 강제합니다.', + 'settings.linuxVideoRenderModeAuto' => '자동', + 'settings.linuxVideoRenderModeTexture' => 'Texture(SDR)', 'search.hint' => '영화, 시리즈, 음악 등을 검색하세요...', 'search.tryDifferentTerm' => '다른 검색어를 시도해 보세요', 'search.searchYourMedia' => '미디어 검색', @@ -3188,12 +3196,12 @@ extension on TranslationsKo { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy가 어떤 파일이 삭제될지 확인하지 못해 위 항목보다 더 많은 파일이 삭제될 수 있습니다. 취소하고 다시 시도하거나 그래도 삭제하세요.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => '서버가 이 항목의 파일 정보를 제공하지 않아 Plezy가 어떤 파일이 삭제될지 확인할 수 없습니다. 위 항목보다 더 많은 파일이 삭제될 수 있습니다.', 'mediaMenu.mediaDeletedSuccessfully' => '미디어 항목이 성공적으로 삭제되었습니다', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => '미디어 항목 삭제 실패', 'mediaMenu.rate' => '평가', 'mediaMenu.playFromBeginning' => '처음부터 재생', 'mediaMenu.playVersion' => '버전 재생...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => '평가', 'rateSheet.server' => '서버', 'rateSheet.favorite' => '즐겨찾기', @@ -3702,12 +3710,12 @@ extension on TranslationsKo { 'explore.watchlistNoMatch' => '이 항목을 관심 목록과 연결할 수 없습니다', 'explore.notInLibrary' => '라이브러리에 없음', 'explore.inTheseLibraries' => '이 라이브러리에 있음', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => '라이브러리 확인 중...', 'explore.emptyTitle' => '아직 아무것도 없습니다', 'explore.emptyMessage' => ({required Object source}) => '${source}에 콘텐츠가 추가되면 여기에 표시됩니다.', 'explore.searchHint' => ({required Object source}) => '${source}에서 검색', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => '「${query}」에 대한 결과가 없습니다', 'explore.searchPrompt' => ({required Object source}) => '${source}에서 영화와 TV 프로그램을 검색하세요.', 'explore.searchFailed' => '검색에 실패했습니다. 연결을 확인하고 다시 시도하세요.', @@ -4216,12 +4224,12 @@ extension on TranslationsKo { 'companionRemote.errors.failedToConnectAnyAddress' => '어떤 주소에도 연결하지 못했습니다', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => '${attempts}회 시도 후 연결이 끊어졌습니다', 'companionRemote.errors.connectionLost' => '연결이 끊어졌습니다', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => '인증 전에 연결이 종료되었습니다', 'videoSettings.playbackSpeed' => '재생 속도', 'videoSettings.normalSpeed' => '보통', 'videoSettings.sleepTimerActive' => ({required Object duration}) => '활성 (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => '확대/축소', 'videoSettings.sleepTimer' => '취침 타이머', 'videoSettings.audioSync' => '오디오 동기화', diff --git a/lib/i18n/strings_nb.g.dart b/lib/i18n/strings_nb.g.dart index 98fbe8e69..636f704b1 100644 --- a/lib/i18n/strings_nb.g.dart +++ b/lib/i18n/strings_nb.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$nb extends Translations$settings$en { @override String get seekAndTiming => 'Spoling og tidsinnstillinger'; @override String get behavior => 'Oppførsel'; @override String get exportDialogTitle => 'Eksporter Plezy-innstillinger'; + @override String get linuxVideoRenderMode => 'Video-gjengivelsesmodus'; + @override String get linuxVideoRenderModeDescription => 'Automatisk foretrekker det native Wayland-planet (HDR-kompatibelt); Texture tvinger SDR-fallback-stien.'; + @override String get linuxVideoRenderModeAuto => 'Automatisk'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3019,6 +3023,10 @@ extension on TranslationsNb { 'settings.seekAndTiming' => 'Spoling og tidsinnstillinger', 'settings.behavior' => 'Oppførsel', 'settings.exportDialogTitle' => 'Eksporter Plezy-innstillinger', + 'settings.linuxVideoRenderMode' => 'Video-gjengivelsesmodus', + 'settings.linuxVideoRenderModeDescription' => 'Automatisk foretrekker det native Wayland-planet (HDR-kompatibelt); Texture tvinger SDR-fallback-stien.', + 'settings.linuxVideoRenderModeAuto' => 'Automatisk', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Søk i filmer, serier, musikk...', 'search.tryDifferentTerm' => 'Prøv et annet søkeord', 'search.searchYourMedia' => 'Søk i mediene dine', @@ -3198,12 +3206,12 @@ extension on TranslationsNb { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy kunne ikke sjekke hvilke filer dette vil fjerne, så det kan slette mer enn elementet som er nevnt ovenfor. Avbryt og prøv igjen, eller slett likevel.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Serveren din ga ikke fildetaljer for dette elementet, så Plezy kan ikke sjekke hvilke filer dette vil fjerne. Det kan slette mer enn elementet som er nevnt ovenfor.', 'mediaMenu.mediaDeletedSuccessfully' => 'Medieelement slettet', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Kunne ikke slette medieelement', 'mediaMenu.rate' => 'Vurder', 'mediaMenu.playFromBeginning' => 'Spill fra begynnelsen', 'mediaMenu.playVersion' => 'Spill av versjon...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Vurder', 'rateSheet.server' => 'Server', 'rateSheet.favorite' => 'Favoritt', @@ -3712,12 +3720,12 @@ extension on TranslationsNb { 'explore.watchlistNoMatch' => 'Kunne ikke koble dette elementet til en overvåkningsliste', 'explore.notInLibrary' => 'Ikke i biblioteket ditt', 'explore.inTheseLibraries' => 'I disse bibliotekene', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Sjekker biblioteket ditt...', 'explore.emptyTitle' => 'Ingenting her ennå', 'explore.emptyMessage' => ({required Object source}) => 'Rader fra ${source} vises her når de har innhold.', 'explore.searchHint' => ({required Object source}) => 'Søk i ${source}', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => 'Ingen treff for "${query}"', 'explore.searchPrompt' => ({required Object source}) => 'Søk etter filmer og serier på ${source}.', 'explore.searchFailed' => 'Søk mislyktes. Sjekk tilkoblingen og prøv igjen.', @@ -4226,12 +4234,12 @@ extension on TranslationsNb { 'companionRemote.errors.failedToConnectAnyAddress' => 'Kunne ikke koble til noen adresse', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => 'Tilkobling mistet etter ${attempts} forsøk', 'companionRemote.errors.connectionLost' => 'Tilkobling mistet', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'Tilkoblingen ble lukket før autentisering', 'videoSettings.playbackSpeed' => 'Avspillingshastighet', 'videoSettings.normalSpeed' => 'Normal', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Aktiv (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Zoom', 'videoSettings.sleepTimer' => 'Innsovningstimer', 'videoSettings.audioSync' => 'Lydsynkronisering', diff --git a/lib/i18n/strings_nl.g.dart b/lib/i18n/strings_nl.g.dart index 3f03dca2c..514aa6936 100644 --- a/lib/i18n/strings_nl.g.dart +++ b/lib/i18n/strings_nl.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$nl extends Translations$settings$en { @override String get seekAndTiming => 'Spoelen en timing'; @override String get behavior => 'Gedrag'; @override String get exportDialogTitle => 'Plezy-instellingen exporteren'; + @override String get linuxVideoRenderMode => 'Videoweergavemodus'; + @override String get linuxVideoRenderModeDescription => 'Automatisch geeft de voorkeur aan het native Wayland-vlak (HDR-compatibel); Texture dwingt het SDR-reservepad af.'; + @override String get linuxVideoRenderModeAuto => 'Automatisch'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3019,6 +3023,10 @@ extension on TranslationsNl { 'settings.seekAndTiming' => 'Spoelen en timing', 'settings.behavior' => 'Gedrag', 'settings.exportDialogTitle' => 'Plezy-instellingen exporteren', + 'settings.linuxVideoRenderMode' => 'Videoweergavemodus', + 'settings.linuxVideoRenderModeDescription' => 'Automatisch geeft de voorkeur aan het native Wayland-vlak (HDR-compatibel); Texture dwingt het SDR-reservepad af.', + 'settings.linuxVideoRenderModeAuto' => 'Automatisch', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Zoek films, series, muziek...', 'search.tryDifferentTerm' => 'Probeer een andere zoekterm', 'search.searchYourMedia' => 'Zoek in je media', @@ -3198,12 +3206,12 @@ extension on TranslationsNl { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy kon niet controleren welke bestanden hiermee worden verwijderd, dus het kan meer verwijderen dan het hierboven genoemde item. Annuleer en probeer het opnieuw, of verwijder toch.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Je server heeft geen bestandsgegevens voor dit item verstrekt, dus Plezy kan niet controleren welke bestanden hiermee worden verwijderd. Het kan meer verwijderen dan het hierboven genoemde item.', 'mediaMenu.mediaDeletedSuccessfully' => 'Media-item succesvol verwijderd', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Verwijderen van media-item mislukt', 'mediaMenu.rate' => 'Beoordelen', 'mediaMenu.playFromBeginning' => 'Afspelen vanaf het begin', 'mediaMenu.playVersion' => 'Versie afspelen...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Beoordelen', 'rateSheet.server' => 'Server', 'rateSheet.favorite' => 'Favoriet', @@ -3712,12 +3720,12 @@ extension on TranslationsNl { 'explore.watchlistNoMatch' => 'Kon dit item niet aan een kijklijst koppelen', 'explore.notInLibrary' => 'Niet in je bibliotheek', 'explore.inTheseLibraries' => 'In deze bibliotheken', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Je bibliotheek controleren...', 'explore.emptyTitle' => 'Hier is nog niets', 'explore.emptyMessage' => ({required Object source}) => 'Rijen van ${source} verschijnen hier zodra ze inhoud hebben.', 'explore.searchHint' => ({required Object source}) => 'Zoeken in ${source}', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => 'Geen resultaten voor "${query}"', 'explore.searchPrompt' => ({required Object source}) => 'Zoek naar films en series op ${source}.', 'explore.searchFailed' => 'Zoeken mislukt. Controleer je verbinding en probeer opnieuw.', @@ -4226,12 +4234,12 @@ extension on TranslationsNl { 'companionRemote.errors.failedToConnectAnyAddress' => 'Er kon met geen enkel adres verbinding worden gemaakt', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => 'Verbinding verbroken na ${attempts} pogingen', 'companionRemote.errors.connectionLost' => 'Verbinding verloren', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'De verbinding is vóór de authenticatie gesloten', 'videoSettings.playbackSpeed' => 'Afspeelsnelheid', 'videoSettings.normalSpeed' => 'Normaal', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Actief (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Zoom', 'videoSettings.sleepTimer' => 'Slaaptimer', 'videoSettings.audioSync' => 'Audiosynchronisatie', diff --git a/lib/i18n/strings_pl.g.dart b/lib/i18n/strings_pl.g.dart index 2b61fdc58..292392a3e 100644 --- a/lib/i18n/strings_pl.g.dart +++ b/lib/i18n/strings_pl.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$pl extends Translations$settings$en { @override String get seekAndTiming => 'Przewijanie i czas'; @override String get behavior => 'Zachowanie'; @override String get exportDialogTitle => 'Eksport ustawień Plezy'; + @override String get linuxVideoRenderMode => 'Tryb renderowania wideo'; + @override String get linuxVideoRenderModeDescription => 'Automatyczny preferuje natywną płaszczyznę Wayland (zgodną z HDR); Texture wymusza ścieżkę zapasową SDR.'; + @override String get linuxVideoRenderModeAuto => 'Automatyczny'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3039,6 +3043,10 @@ extension on TranslationsPl { 'settings.seekAndTiming' => 'Przewijanie i czas', 'settings.behavior' => 'Zachowanie', 'settings.exportDialogTitle' => 'Eksport ustawień Plezy', + 'settings.linuxVideoRenderMode' => 'Tryb renderowania wideo', + 'settings.linuxVideoRenderModeDescription' => 'Automatyczny preferuje natywną płaszczyznę Wayland (zgodną z HDR); Texture wymusza ścieżkę zapasową SDR.', + 'settings.linuxVideoRenderModeAuto' => 'Automatyczny', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Szukaj filmów, seriali, muzyki...', 'search.tryDifferentTerm' => 'Spróbuj innego wyszukiwania', 'search.searchYourMedia' => 'Przeszukaj swoje media', @@ -3218,12 +3226,12 @@ extension on TranslationsPl { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy nie mogło sprawdzić, które pliki zostaną usunięte, więc może usunąć więcej niż element wymieniony powyżej. Anuluj i spróbuj ponownie albo usuń mimo to.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Twój serwer nie podał informacji o plikach tego elementu, więc Plezy nie może sprawdzić, które pliki zostaną usunięte. Może usunąć więcej niż element wymieniony powyżej.', 'mediaMenu.mediaDeletedSuccessfully' => 'Usunięto element multimedialny', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Nie udało się usunąć elementu multimedialnego', 'mediaMenu.rate' => 'Oceń', 'mediaMenu.playFromBeginning' => 'Odtwórz od początku', 'mediaMenu.playVersion' => 'Odtwórz wersję...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Oceń', 'rateSheet.server' => 'Serwer', 'rateSheet.favorite' => 'Dodaj do ulubionych', @@ -3732,12 +3740,12 @@ extension on TranslationsPl { 'explore.watchlistNoMatch' => 'Nie udało się dopasować tej pozycji do listy do obejrzenia', 'explore.notInLibrary' => 'Nie ma tego w Twojej bibliotece', 'explore.inTheseLibraries' => 'W tych bibliotekach', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Sprawdzanie Twojej biblioteki...', 'explore.emptyTitle' => 'Jeszcze nic tu nie ma', 'explore.emptyMessage' => ({required Object source}) => 'Wiersze z ${source} pojawią się tutaj, gdy będą zawierać treści.', 'explore.searchHint' => ({required Object source}) => 'Szukaj w ${source}', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => 'Brak wyników dla "${query}"', 'explore.searchPrompt' => ({required Object source}) => 'Szukaj filmów i seriali w ${source}.', 'explore.searchFailed' => 'Wyszukiwanie nie powiodło się. Sprawdź połączenie i spróbuj ponownie.', @@ -4246,12 +4254,12 @@ extension on TranslationsPl { 'companionRemote.errors.failedToConnectAnyAddress' => 'Nie udało się połączyć z żadnym adresem', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => 'Połączenie utracone po ${attempts} próbach', 'companionRemote.errors.connectionLost' => 'Połączenie utracone', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'Połączenie zostało zamknięte przed uwierzytelnieniem', 'videoSettings.playbackSpeed' => 'Prędkość odtwarzania', 'videoSettings.normalSpeed' => 'Normalna', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Aktywny (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Powiększenie', 'videoSettings.sleepTimer' => 'Wyłącznik czasowy', 'videoSettings.audioSync' => 'Synchronizacja audio', diff --git a/lib/i18n/strings_pt.g.dart b/lib/i18n/strings_pt.g.dart index 8f5281746..5eb55caf9 100644 --- a/lib/i18n/strings_pt.g.dart +++ b/lib/i18n/strings_pt.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$pt extends Translations$settings$en { @override String get seekAndTiming => 'Busca e tempo'; @override String get behavior => 'Comportamento'; @override String get exportDialogTitle => 'Exportar configurações do Plezy'; + @override String get linuxVideoRenderMode => 'Modo de renderização de vídeo'; + @override String get linuxVideoRenderModeDescription => 'Automático prefere o plano Wayland nativo (compatível com HDR); Texture força o caminho de reserva SDR.'; + @override String get linuxVideoRenderModeAuto => 'Automático'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3019,6 +3023,10 @@ extension on TranslationsPt { 'settings.seekAndTiming' => 'Busca e tempo', 'settings.behavior' => 'Comportamento', 'settings.exportDialogTitle' => 'Exportar configurações do Plezy', + 'settings.linuxVideoRenderMode' => 'Modo de renderização de vídeo', + 'settings.linuxVideoRenderModeDescription' => 'Automático prefere o plano Wayland nativo (compatível com HDR); Texture força o caminho de reserva SDR.', + 'settings.linuxVideoRenderModeAuto' => 'Automático', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Buscar filmes, séries, músicas...', 'search.tryDifferentTerm' => 'Tente um termo de busca diferente', 'search.searchYourMedia' => 'Buscar suas mídias', @@ -3198,12 +3206,12 @@ extension on TranslationsPt { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'O Plezy não conseguiu verificar quais arquivos serão removidos, então pode excluir mais do que o item acima. Cancele e tente novamente, ou exclua mesmo assim.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Seu servidor não forneceu detalhes do arquivo para este item, então o Plezy não pode verificar quais arquivos serão removidos. Pode excluir mais do que o item acima.', 'mediaMenu.mediaDeletedSuccessfully' => 'Item de mídia excluído com sucesso', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Falha ao excluir item de mídia', 'mediaMenu.rate' => 'Avaliar', 'mediaMenu.playFromBeginning' => 'Reproduzir do início', 'mediaMenu.playVersion' => 'Reproduzir versão...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Avaliar', 'rateSheet.server' => 'Servidor', 'rateSheet.favorite' => 'Favorito', @@ -3712,12 +3720,12 @@ extension on TranslationsPt { 'explore.watchlistNoMatch' => 'Não foi possível associar este item a uma lista de interesses', 'explore.notInLibrary' => 'Não está na sua biblioteca', 'explore.inTheseLibraries' => 'Nestas bibliotecas', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Verificando sua biblioteca...', 'explore.emptyTitle' => 'Ainda não há nada aqui', 'explore.emptyMessage' => ({required Object source}) => 'As linhas de ${source} aparecerão aqui quando tiverem conteúdo.', 'explore.searchHint' => ({required Object source}) => 'Buscar em ${source}', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => 'Nenhum resultado para "${query}"', 'explore.searchPrompt' => ({required Object source}) => 'Busque filmes e séries em ${source}.', 'explore.searchFailed' => 'Falha na busca. Verifique sua conexão e tente novamente.', @@ -4226,12 +4234,12 @@ extension on TranslationsPt { 'companionRemote.errors.failedToConnectAnyAddress' => 'Falha ao conectar a qualquer endereço', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => 'Conexão perdida após ${attempts} tentativas', 'companionRemote.errors.connectionLost' => 'Conexão perdida', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'A conexão foi encerrada antes da autenticação', 'videoSettings.playbackSpeed' => 'Velocidade de Reprodução', 'videoSettings.normalSpeed' => 'Normal', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Ativo (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Zoom', 'videoSettings.sleepTimer' => 'Temporizador de suspensão', 'videoSettings.audioSync' => 'Sincronia de áudio', diff --git a/lib/i18n/strings_ru.g.dart b/lib/i18n/strings_ru.g.dart index 5216e8a75..59bbbcdd4 100644 --- a/lib/i18n/strings_ru.g.dart +++ b/lib/i18n/strings_ru.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$ru extends Translations$settings$en { @override String get seekAndTiming => 'Перемотка и время'; @override String get behavior => 'Поведение'; @override String get exportDialogTitle => 'Экспорт настроек Plezy'; + @override String get linuxVideoRenderMode => 'Режим рендеринга видео'; + @override String get linuxVideoRenderModeDescription => 'Автоматический режим предпочитает нативную плоскость Wayland (поддержка HDR); Texture принудительно использует запасной путь SDR.'; + @override String get linuxVideoRenderModeAuto => 'Автоматически'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3039,6 +3043,10 @@ extension on TranslationsRu { 'settings.seekAndTiming' => 'Перемотка и время', 'settings.behavior' => 'Поведение', 'settings.exportDialogTitle' => 'Экспорт настроек Plezy', + 'settings.linuxVideoRenderMode' => 'Режим рендеринга видео', + 'settings.linuxVideoRenderModeDescription' => 'Автоматический режим предпочитает нативную плоскость Wayland (поддержка HDR); Texture принудительно использует запасной путь SDR.', + 'settings.linuxVideoRenderModeAuto' => 'Автоматически', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Поиск фильмов, сериалов, музыки...', 'search.tryDifferentTerm' => 'Попробуйте другой запрос', 'search.searchYourMedia' => 'Поиск в вашей медиатеке', @@ -3218,12 +3226,12 @@ extension on TranslationsRu { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy не смог проверить, какие файлы будут удалены, поэтому может быть удалено больше, чем указанный выше элемент. Отмените и попробуйте снова либо удалите в любом случае.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Ваш сервер не предоставил сведения о файлах для этого элемента, поэтому Plezy не может проверить, какие файлы будут удалены. Может быть удалено больше, чем указанный выше элемент.', 'mediaMenu.mediaDeletedSuccessfully' => 'Медиаэлемент успешно удалён', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Не удалось удалить медиаэлемент', 'mediaMenu.rate' => 'Оценить', 'mediaMenu.playFromBeginning' => 'Воспроизвести сначала', 'mediaMenu.playVersion' => 'Воспроизвести версию...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Оценить', 'rateSheet.server' => 'Сервер', 'rateSheet.favorite' => 'Добавить в избранное', @@ -3732,12 +3740,12 @@ extension on TranslationsRu { 'explore.watchlistNoMatch' => 'Не удалось сопоставить этот элемент со списком просмотра', 'explore.notInLibrary' => 'Нет в вашей библиотеке', 'explore.inTheseLibraries' => 'В этих библиотеках', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Проверка вашей библиотеки...', 'explore.emptyTitle' => 'Здесь пока ничего нет', 'explore.emptyMessage' => ({required Object source}) => 'Разделы из ${source} появятся здесь, когда в них появится контент.', 'explore.searchHint' => ({required Object source}) => 'Поиск в ${source}', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => 'Нет результатов по запросу "${query}"', 'explore.searchPrompt' => ({required Object source}) => 'Ищите фильмы и сериалы в ${source}.', 'explore.searchFailed' => 'Ошибка поиска. Проверьте подключение и повторите попытку.', @@ -4246,12 +4254,12 @@ extension on TranslationsRu { 'companionRemote.errors.failedToConnectAnyAddress' => 'Не удалось подключиться ни к одному адресу', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => 'Соединение потеряно после ${attempts} попыток', 'companionRemote.errors.connectionLost' => 'Соединение потеряно', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'Соединение было закрыто до аутентификации', 'videoSettings.playbackSpeed' => 'Скорость воспроизведения', 'videoSettings.normalSpeed' => 'Обычная', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Активен (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Масштаб', 'videoSettings.sleepTimer' => 'Таймер сна', 'videoSettings.audioSync' => 'Синхронизация аудио', diff --git a/lib/i18n/strings_sv.g.dart b/lib/i18n/strings_sv.g.dart index 1bd85af76..f957222e3 100644 --- a/lib/i18n/strings_sv.g.dart +++ b/lib/i18n/strings_sv.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$sv extends Translations$settings$en { @override String get seekAndTiming => 'Spolning och tidsinställningar'; @override String get behavior => 'Beteende'; @override String get exportDialogTitle => 'Exportera Plezy-inställningar'; + @override String get linuxVideoRenderMode => 'Videorenderingsläge'; + @override String get linuxVideoRenderModeDescription => 'Automatiskt föredrar det inbyggda Wayland-planet (HDR-kompatibelt); Texture tvingar SDR-reservvägen.'; + @override String get linuxVideoRenderModeAuto => 'Automatiskt'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3019,6 +3023,10 @@ extension on TranslationsSv { 'settings.seekAndTiming' => 'Spolning och tidsinställningar', 'settings.behavior' => 'Beteende', 'settings.exportDialogTitle' => 'Exportera Plezy-inställningar', + 'settings.linuxVideoRenderMode' => 'Videorenderingsläge', + 'settings.linuxVideoRenderModeDescription' => 'Automatiskt föredrar det inbyggda Wayland-planet (HDR-kompatibelt); Texture tvingar SDR-reservvägen.', + 'settings.linuxVideoRenderModeAuto' => 'Automatiskt', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Sök filmer, serier, musik...', 'search.tryDifferentTerm' => 'Prova en annan sökterm', 'search.searchYourMedia' => 'Sök i dina media', @@ -3198,12 +3206,12 @@ extension on TranslationsSv { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy kunde inte kontrollera vilka filer detta tar bort, så det kan ta bort mer än objektet ovan. Avbryt och försök igen, eller ta bort ändå.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Din server tillhandahöll inte filinformation för detta objekt, så Plezy kan inte kontrollera vilka filer detta tar bort. Det kan ta bort mer än objektet ovan.', 'mediaMenu.mediaDeletedSuccessfully' => 'Medieobjektet har tagits bort', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Det gick inte att ta bort medieobjektet', 'mediaMenu.rate' => 'Betygsätt', 'mediaMenu.playFromBeginning' => 'Spela från början', 'mediaMenu.playVersion' => 'Spela version...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Betygsätt', 'rateSheet.server' => 'Server', 'rateSheet.favorite' => 'Favorit', @@ -3712,12 +3720,12 @@ extension on TranslationsSv { 'explore.watchlistNoMatch' => 'Det gick inte att matcha det här objektet mot en bevakningslista', 'explore.notInLibrary' => 'Finns inte i ditt bibliotek', 'explore.inTheseLibraries' => 'I dessa bibliotek', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Kontrollerar ditt bibliotek...', 'explore.emptyTitle' => 'Inget här ännu', 'explore.emptyMessage' => ({required Object source}) => 'Rader från ${source} visas här när de har innehåll.', 'explore.searchHint' => ({required Object source}) => 'Sök i ${source}', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => 'Inga resultat för "${query}"', 'explore.searchPrompt' => ({required Object source}) => 'Sök efter filmer och serier på ${source}.', 'explore.searchFailed' => 'Sökningen misslyckades. Kontrollera din anslutning och försök igen.', @@ -4226,12 +4234,12 @@ extension on TranslationsSv { 'companionRemote.errors.failedToConnectAnyAddress' => 'Det gick inte att ansluta till någon adress', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => 'Anslutningen bröts efter ${attempts} försök', 'companionRemote.errors.connectionLost' => 'Anslutningen bröts', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'Anslutningen stängdes före autentiseringen', 'videoSettings.playbackSpeed' => 'Uppspelningshastighet', 'videoSettings.normalSpeed' => 'Normal', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Aktiv (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Zoom', 'videoSettings.sleepTimer' => 'Sovtimer', 'videoSettings.audioSync' => 'Ljudsynkronisering', diff --git a/lib/i18n/strings_tr.g.dart b/lib/i18n/strings_tr.g.dart index 8b4e5c94e..5cd81ea15 100644 --- a/lib/i18n/strings_tr.g.dart +++ b/lib/i18n/strings_tr.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$tr extends Translations$settings$en { @override String get seekAndTiming => 'Sarılma ve Zamanlama'; @override String get behavior => 'Davranış'; @override String get exportDialogTitle => 'Plezy ayarlarını dışa aktar'; + @override String get linuxVideoRenderMode => 'Video işleme modu'; + @override String get linuxVideoRenderModeDescription => 'Otomatik, yerel Wayland düzlemini tercih eder (HDR destekli); Texture, SDR yedek yolunu zorlar.'; + @override String get linuxVideoRenderModeAuto => 'Otomatik'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3019,6 +3023,10 @@ extension on TranslationsTr { 'settings.seekAndTiming' => 'Sarılma ve Zamanlama', 'settings.behavior' => 'Davranış', 'settings.exportDialogTitle' => 'Plezy ayarlarını dışa aktar', + 'settings.linuxVideoRenderMode' => 'Video işleme modu', + 'settings.linuxVideoRenderModeDescription' => 'Otomatik, yerel Wayland düzlemini tercih eder (HDR destekli); Texture, SDR yedek yolunu zorlar.', + 'settings.linuxVideoRenderModeAuto' => 'Otomatik', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Film, dizi, müzik ara...', 'search.tryDifferentTerm' => 'Farklı bir arama terimi deneyin', 'search.searchYourMedia' => 'Medyanızda arayın', @@ -3198,12 +3206,12 @@ extension on TranslationsTr { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy bunun hangi dosyaları sileceğini kontrol edemedi, bu yüzden yukarıda adı geçen ögeden daha fazlasını silebilir. İptal edip tekrar deneyin veya yine de silin.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Sunucunuz bu öge için dosya ayrıntıları sağlamadı, bu yüzden Plezy bunun hangi dosyaları sileceğini kontrol edemiyor. Yukarıda adı geçen ögeden daha fazlasını silebilir.', 'mediaMenu.mediaDeletedSuccessfully' => 'Medya ögesi başarıyla silindi', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Medya ögesi silinemedi', 'mediaMenu.rate' => 'Oyla', 'mediaMenu.playFromBeginning' => 'Baştan Oynat', 'mediaMenu.playVersion' => 'Sürümü Oynat...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Oyla', 'rateSheet.server' => 'Sunucu', 'rateSheet.favorite' => 'Favori', @@ -3712,12 +3720,12 @@ extension on TranslationsTr { 'explore.watchlistNoMatch' => 'Bu öğe bir izleme listesiyle eşleştirilemedi', 'explore.notInLibrary' => 'Kitaplığınızda yok', 'explore.inTheseLibraries' => 'Bu kitaplıklarda var', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Kitaplığınız kontrol ediliyor...', 'explore.emptyTitle' => 'Henüz burada bir şey yok', 'explore.emptyMessage' => ({required Object source}) => '${source} kaynağındaki satırlar içerik bulunduğunda burada görünecektir.', 'explore.searchHint' => ({required Object source}) => '${source} üzerinde ara', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => '"${query}" için sonuç bulunamadı', 'explore.searchPrompt' => ({required Object source}) => '${source} üzerinde film ve dizileri arayın.', 'explore.searchFailed' => 'Arama başarısız. Bağlantınızı kontrol edip tekrar deneyin.', @@ -4226,12 +4234,12 @@ extension on TranslationsTr { 'companionRemote.errors.failedToConnectAnyAddress' => 'Hiçbir adrese bağlanılamadı', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => '${attempts} denemeden sonra bağlantı kesildi', 'companionRemote.errors.connectionLost' => 'Bağlantı kesildi', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'Bağlantı, kimlik doğrulamadan önce kapandı', 'videoSettings.playbackSpeed' => 'Oynatma Hızı', 'videoSettings.normalSpeed' => 'Normal', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Aktif (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Yakınlaştırma', 'videoSettings.sleepTimer' => 'Uyku Zamanlayıcısı', 'videoSettings.audioSync' => 'Ses Senkronizasyonu', diff --git a/lib/i18n/strings_uz.g.dart b/lib/i18n/strings_uz.g.dart index fb8ac6fff..2fba9ff55 100644 --- a/lib/i18n/strings_uz.g.dart +++ b/lib/i18n/strings_uz.g.dart @@ -462,6 +462,10 @@ class _Translations$settings$uz extends Translations$settings$en { @override String get seekAndTiming => 'Oʻtkazish va vaqt sozlamalari'; @override String get behavior => 'Xatti-harakat'; @override String get exportDialogTitle => 'Plezy sozlamalarini eksport qilish'; + @override String get linuxVideoRenderMode => 'Video ko\'rsatish rejimi'; + @override String get linuxVideoRenderModeDescription => 'Avtomatik rejim mahalliy Wayland tekisligini afzal ko\'radi (HDR qo\'llab-quvvatlaydi); Texture SDR zaxira yo\'lini majbur qiladi.'; + @override String get linuxVideoRenderModeAuto => 'Avtomatik'; + @override String get linuxVideoRenderModeTexture => 'Texture (SDR)'; } // Path: search @@ -3019,6 +3023,10 @@ extension on TranslationsUz { 'settings.seekAndTiming' => 'Oʻtkazish va vaqt sozlamalari', 'settings.behavior' => 'Xatti-harakat', 'settings.exportDialogTitle' => 'Plezy sozlamalarini eksport qilish', + 'settings.linuxVideoRenderMode' => 'Video ko\'rsatish rejimi', + 'settings.linuxVideoRenderModeDescription' => 'Avtomatik rejim mahalliy Wayland tekisligini afzal ko\'radi (HDR qo\'llab-quvvatlaydi); Texture SDR zaxira yo\'lini majbur qiladi.', + 'settings.linuxVideoRenderModeAuto' => 'Avtomatik', + 'settings.linuxVideoRenderModeTexture' => 'Texture (SDR)', 'search.hint' => 'Filmlar, seriallar, musiqa qidirish...', 'search.tryDifferentTerm' => 'Boshqa qidiruv soʻzini kiriting', 'search.searchYourMedia' => 'Medialaringizdan qidiring', @@ -3198,12 +3206,12 @@ extension on TranslationsUz { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy qaysi fayllar olib tashlanishini tekshira olmadi, shuning uchun u yuqorida koʻrsatilgan elementdan koʻproq narsani oʻchirishi mumkin. Bekor qilib qaytadan urining yoki baribir oʻchiring.', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => 'Serveringiz ushbu element uchun fayl tafsilotlarini taqdim etmadi, shuning uchun Plezy qaysi fayllar olib tashlanishini tekshira olmaydi. U yuqorida koʻrsatilgan elementdan koʻproq narsani oʻchirishi mumkin.', 'mediaMenu.mediaDeletedSuccessfully' => 'Media elementi muvaffaqiyatli oʻchirildi', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => 'Media elementini oʻchirib boʻlmadi', 'mediaMenu.rate' => 'Baho berish', 'mediaMenu.playFromBeginning' => 'Boshidan ijro etish', 'mediaMenu.playVersion' => 'Versiyani ijro etish...', - _ => null, - } ?? switch (path) { 'rateSheet.title' => 'Baho berish', 'rateSheet.server' => 'Server', 'rateSheet.favorite' => 'Tanlangan', @@ -3712,12 +3720,12 @@ extension on TranslationsUz { 'explore.watchlistNoMatch' => 'Bu elementni tomosha roʻyxatiga moslab boʻlmadi', 'explore.notInLibrary' => 'Kutubxonangizda yoʻq', 'explore.inTheseLibraries' => 'Ushbu kutubxonalarda bor', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => 'Kutubxona tekshirilmoqda...', 'explore.emptyTitle' => 'Hali bu yerda hech narsa yoʻq', 'explore.emptyMessage' => ({required Object source}) => '${source} manbasidan olingan qatorlar bu yerda koʻrinadi.', 'explore.searchHint' => ({required Object source}) => '${source} ichidan qidirish', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => '"${query}" boʻyicha natija topilmadi', 'explore.searchPrompt' => ({required Object source}) => '${source} orqali filmlar va seriallarni qidiring.', 'explore.searchFailed' => 'Qidiruv xatoligi. Ulanishni tekshiring.', @@ -4226,12 +4234,12 @@ extension on TranslationsUz { 'companionRemote.errors.failedToConnectAnyAddress' => 'Hech bir manzilga ulanib boʻlmadi', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => '${attempts} urinishdan keyin aloqa uzildi', 'companionRemote.errors.connectionLost' => 'Aloqa uzildi', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => 'Ulanish autentifikatsiyadan oldin yopildi', 'videoSettings.playbackSpeed' => 'Ijro tezligi', 'videoSettings.normalSpeed' => 'Normal', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Faol (${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => 'Masshtab', 'videoSettings.sleepTimer' => 'Uyqu taymeri', 'videoSettings.audioSync' => 'Audio sinxronlash', diff --git a/lib/i18n/strings_zh.g.dart b/lib/i18n/strings_zh.g.dart index 2058f1260..393152c65 100644 --- a/lib/i18n/strings_zh.g.dart +++ b/lib/i18n/strings_zh.g.dart @@ -462,6 +462,10 @@ class Translations$settings$zh extends Translations$settings$en { @override String get seekAndTiming => '跳转与计时'; @override String get behavior => '行为'; @override String get exportDialogTitle => '导出 Plezy 设置'; + @override String get linuxVideoRenderMode => '视频渲染模式'; + @override String get linuxVideoRenderModeDescription => '自动优先使用原生 Wayland 平面(支持 HDR);纹理强制使用 SDR 回退路径。'; + @override String get linuxVideoRenderModeAuto => '自动'; + @override String get linuxVideoRenderModeTexture => '纹理(SDR)'; } // Path: search @@ -3009,6 +3013,10 @@ extension on TranslationsZh { 'settings.seekAndTiming' => '跳转与计时', 'settings.behavior' => '行为', 'settings.exportDialogTitle' => '导出 Plezy 设置', + 'settings.linuxVideoRenderMode' => '视频渲染模式', + 'settings.linuxVideoRenderModeDescription' => '自动优先使用原生 Wayland 平面(支持 HDR);纹理强制使用 SDR 回退路径。', + 'settings.linuxVideoRenderModeAuto' => '自动', + 'settings.linuxVideoRenderModeTexture' => '纹理(SDR)', 'search.hint' => '搜索电影、剧集、音乐…', 'search.tryDifferentTerm' => '尝试不同的搜索词', 'search.searchYourMedia' => '搜索媒体', @@ -3188,12 +3196,12 @@ extension on TranslationsZh { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy 无法确认此操作会删除哪些文件,因此删除范围可能超出上面提到的项目。请取消后重试,或仍然删除。', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => '你的服务器没有提供此项目的文件详情,因此 Plezy 无法确认此操作会删除哪些文件。删除范围可能超出上面提到的项目。', 'mediaMenu.mediaDeletedSuccessfully' => '媒体项已成功删除', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => '删除媒体项失败', 'mediaMenu.rate' => '评分', 'mediaMenu.playFromBeginning' => '从头播放', 'mediaMenu.playVersion' => '播放版本…', - _ => null, - } ?? switch (path) { 'rateSheet.title' => '评分', 'rateSheet.server' => '服务器', 'rateSheet.favorite' => '收藏', @@ -3702,12 +3710,12 @@ extension on TranslationsZh { 'explore.watchlistNoMatch' => '无法将此项目与待看列表匹配', 'explore.notInLibrary' => '不在你的媒体库中', 'explore.inTheseLibraries' => '在这些媒体库中', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => '正在检查你的媒体库…', 'explore.emptyTitle' => '这里还什么都没有', 'explore.emptyMessage' => ({required Object source}) => '当 ${source} 有内容时,相关内容将显示在这里。', 'explore.searchHint' => ({required Object source}) => '搜索 ${source}', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => '没有“${query}”的结果', 'explore.searchPrompt' => ({required Object source}) => '在 ${source} 上搜索电影和剧集。', 'explore.searchFailed' => '搜索失败。请检查网络连接后重试。', @@ -4216,12 +4224,12 @@ extension on TranslationsZh { 'companionRemote.errors.failedToConnectAnyAddress' => '无法连接到任何地址', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => '${attempts} 次尝试后连接丢失', 'companionRemote.errors.connectionLost' => '连接丢失', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => '连接在身份验证前已关闭', 'videoSettings.playbackSpeed' => '播放速度', 'videoSettings.normalSpeed' => '正常', 'videoSettings.sleepTimerActive' => ({required Object duration}) => '运行中(${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => '缩放', 'videoSettings.sleepTimer' => '睡眠定时器', 'videoSettings.audioSync' => '音频同步', diff --git a/lib/i18n/strings_zh_Hant.g.dart b/lib/i18n/strings_zh_Hant.g.dart index d969889ed..0ed2e81c4 100644 --- a/lib/i18n/strings_zh_Hant.g.dart +++ b/lib/i18n/strings_zh_Hant.g.dart @@ -463,6 +463,10 @@ class _Translations$settings$zh_Hant extends Translations$settings$zh { @override String get seekAndTiming => '跳轉與計時'; @override String get behavior => '行為'; @override String get exportDialogTitle => '匯出 Plezy 設定'; + @override String get linuxVideoRenderMode => '影片轉譯模式'; + @override String get linuxVideoRenderModeDescription => '自動偏好原生 Wayland 平面(支援 HDR);紋理強制使用 SDR 備援路徑。'; + @override String get linuxVideoRenderModeAuto => '自動'; + @override String get linuxVideoRenderModeTexture => '紋理(SDR)'; } // Path: search @@ -3010,6 +3014,10 @@ extension on TranslationsZhHant { 'settings.seekAndTiming' => '跳轉與計時', 'settings.behavior' => '行為', 'settings.exportDialogTitle' => '匯出 Plezy 設定', + 'settings.linuxVideoRenderMode' => '影片轉譯模式', + 'settings.linuxVideoRenderModeDescription' => '自動偏好原生 Wayland 平面(支援 HDR);紋理強制使用 SDR 備援路徑。', + 'settings.linuxVideoRenderModeAuto' => '自動', + 'settings.linuxVideoRenderModeTexture' => '紋理(SDR)', 'search.hint' => '搜尋電影、影集、音樂…', 'search.tryDifferentTerm' => '嘗試不同的關鍵字', 'search.searchYourMedia' => '搜尋媒體庫', @@ -3189,12 +3197,12 @@ extension on TranslationsZhHant { 'mediaMenu.deleteScopeUnverifiedProbeFailed' => 'Plezy 無法確認此操作會刪除哪些檔案,因此刪除範圍可能超出上方所列的項目。請取消後重試,或仍要刪除。', 'mediaMenu.deleteScopeUnverifiedNoFileInfo' => '您的伺服器未提供此項目的檔案資訊,因此 Plezy 無法確認此操作會刪除哪些檔案。刪除範圍可能超出上方所列的項目。', 'mediaMenu.mediaDeletedSuccessfully' => '媒體已成功刪除', + _ => null, + } ?? switch (path) { 'mediaMenu.mediaFailedToDelete' => '刪除媒體失敗', 'mediaMenu.rate' => '評分', 'mediaMenu.playFromBeginning' => '從頭播放', 'mediaMenu.playVersion' => '播放版本…', - _ => null, - } ?? switch (path) { 'rateSheet.title' => '評分', 'rateSheet.server' => '伺服器', 'rateSheet.favorite' => '最愛', @@ -3703,12 +3711,12 @@ extension on TranslationsZhHant { 'explore.watchlistNoMatch' => '無法將此項目與待看清單配對', 'explore.notInLibrary' => '不在您的媒體庫中', 'explore.inTheseLibraries' => '在這些媒體庫中', + _ => null, + } ?? switch (path) { 'explore.checkingLibrary' => '正在檢查您的媒體庫…', 'explore.emptyTitle' => '這裡還沒有任何內容', 'explore.emptyMessage' => ({required Object source}) => '當 ${source} 有內容時,相關資訊將顯示在此處。', 'explore.searchHint' => ({required Object source}) => '搜尋 ${source}', - _ => null, - } ?? switch (path) { 'explore.searchEmpty' => ({required Object query}) => '沒有「${query}」的結果', 'explore.searchPrompt' => ({required Object source}) => '在 ${source} 搜尋電影與影集。', 'explore.searchFailed' => '搜尋失敗。請檢查網路連線後重試。', @@ -4217,12 +4225,12 @@ extension on TranslationsZhHant { 'companionRemote.errors.failedToConnectAnyAddress' => '無法連線至任何位址', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => '嘗試 ${attempts} 次後連線中斷', 'companionRemote.errors.connectionLost' => '連線已中斷', + _ => null, + } ?? switch (path) { 'companionRemote.closedBeforeAuth' => '連線在驗證前已關閉', 'videoSettings.playbackSpeed' => '播放速度', 'videoSettings.normalSpeed' => '正常速度', 'videoSettings.sleepTimerActive' => ({required Object duration}) => '執行中(${duration})', - _ => null, - } ?? switch (path) { 'videoSettings.zoom' => '縮放', 'videoSettings.sleepTimer' => '睡眠計時器', 'videoSettings.audioSync' => '音訊同步調整', diff --git a/lib/i18n/sv.i18n.json b/lib/i18n/sv.i18n.json index 619b0d54b..69296a4a1 100644 --- a/lib/i18n/sv.i18n.json +++ b/lib/i18n/sv.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Undertexter och konfiguration", "seekAndTiming": "Spolning och tidsinställningar", "behavior": "Beteende", - "exportDialogTitle": "Exportera Plezy-inställningar" + "exportDialogTitle": "Exportera Plezy-inställningar", + "linuxVideoRenderMode": "Videorenderingsläge", + "linuxVideoRenderModeDescription": "Automatiskt föredrar det inbyggda Wayland-planet (HDR-kompatibelt); Texture tvingar SDR-reservvägen.", + "linuxVideoRenderModeAuto": "Automatiskt", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Sök filmer, serier, musik...", diff --git a/lib/i18n/tr.i18n.json b/lib/i18n/tr.i18n.json index 834b1d69d..3c198bb82 100644 --- a/lib/i18n/tr.i18n.json +++ b/lib/i18n/tr.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Altyazılar ve Yapılandırma", "seekAndTiming": "Sarılma ve Zamanlama", "behavior": "Davranış", - "exportDialogTitle": "Plezy ayarlarını dışa aktar" + "exportDialogTitle": "Plezy ayarlarını dışa aktar", + "linuxVideoRenderMode": "Video işleme modu", + "linuxVideoRenderModeDescription": "Otomatik, yerel Wayland düzlemini tercih eder (HDR destekli); Texture, SDR yedek yolunu zorlar.", + "linuxVideoRenderModeAuto": "Otomatik", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Film, dizi, müzik ara...", diff --git a/lib/i18n/uz.i18n.json b/lib/i18n/uz.i18n.json index 20a43c76a..1a167e233 100644 --- a/lib/i18n/uz.i18n.json +++ b/lib/i18n/uz.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "Subtitrlar va konfiguratsiya", "seekAndTiming": "Oʻtkazish va vaqt sozlamalari", "behavior": "Xatti-harakat", - "exportDialogTitle": "Plezy sozlamalarini eksport qilish" + "exportDialogTitle": "Plezy sozlamalarini eksport qilish", + "linuxVideoRenderMode": "Video ko'rsatish rejimi", + "linuxVideoRenderModeDescription": "Avtomatik rejim mahalliy Wayland tekisligini afzal ko'radi (HDR qo'llab-quvvatlaydi); Texture SDR zaxira yo'lini majbur qiladi.", + "linuxVideoRenderModeAuto": "Avtomatik", + "linuxVideoRenderModeTexture": "Texture (SDR)" }, "search": { "hint": "Filmlar, seriallar, musiqa qidirish...", diff --git a/lib/i18n/zh-Hant.i18n.json b/lib/i18n/zh-Hant.i18n.json index e0713d535..5bc11f739 100644 --- a/lib/i18n/zh-Hant.i18n.json +++ b/lib/i18n/zh-Hant.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "字幕與設定", "seekAndTiming": "跳轉與計時", "behavior": "行為", - "exportDialogTitle": "匯出 Plezy 設定" + "exportDialogTitle": "匯出 Plezy 設定", + "linuxVideoRenderMode": "影片轉譯模式", + "linuxVideoRenderModeDescription": "自動偏好原生 Wayland 平面(支援 HDR);紋理強制使用 SDR 備援路徑。", + "linuxVideoRenderModeAuto": "自動", + "linuxVideoRenderModeTexture": "紋理(SDR)" }, "search": { "hint": "搜尋電影、影集、音樂…", diff --git a/lib/i18n/zh.i18n.json b/lib/i18n/zh.i18n.json index fb020ac3b..45ec699cd 100644 --- a/lib/i18n/zh.i18n.json +++ b/lib/i18n/zh.i18n.json @@ -340,7 +340,11 @@ "subtitlesAndConfig": "字幕与配置", "seekAndTiming": "跳转与计时", "behavior": "行为", - "exportDialogTitle": "导出 Plezy 设置" + "exportDialogTitle": "导出 Plezy 设置", + "linuxVideoRenderMode": "视频渲染模式", + "linuxVideoRenderModeDescription": "自动优先使用原生 Wayland 平面(支持 HDR);纹理强制使用 SDR 回退路径。", + "linuxVideoRenderModeAuto": "自动", + "linuxVideoRenderModeTexture": "纹理(SDR)" }, "search": { "hint": "搜索电影、剧集、音乐…", diff --git a/lib/mpv/player/player.dart b/lib/mpv/player/player.dart index 6ae82a486..0b63d0e89 100644 --- a/lib/mpv/player/player.dart +++ b/lib/mpv/player/player.dart @@ -70,6 +70,12 @@ abstract class Player { /// The type of player backend being used (e.g., 'mpv', 'exoplayer'). String get playerType; + /// The Flutter texture ID video renders through, when the platform + /// composites video as a GL texture (the Linux SDR fallback path). Null + /// when the platform presents through its own surface (the Wayland plane, + /// a child HWND) or no texture has been published yet. + int? get textureId; + /// Open a media source for playback. /// /// [media] - The media source to open. diff --git a/lib/mpv/player/player_base.dart b/lib/mpv/player/player_base.dart index e3adfb20b..61ad2e10c 100644 --- a/lib/mpv/player/player_base.dart +++ b/lib/mpv/player/player_base.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'dart:math' as math; import 'package:collection/collection.dart'; -import 'package:flutter/foundation.dart' show protected, visibleForTesting; +import 'package:flutter/foundation.dart' show ValueListenable, ValueNotifier, protected, visibleForTesting; import 'package:flutter/services.dart'; import '../../media/media_display_criteria.dart'; @@ -30,6 +30,23 @@ import 'player_streams.dart'; abstract class PlayerBase with PlayerStreamControllersMixin implements Player { PlayerState _state = const PlayerState(); + /// The Flutter GL texture id published by the platform when video is + /// composited as a texture (the Linux SDR fallback path). Null everywhere + /// else and before publication; [video.dart] keys its render surface off it. + final ValueNotifier _textureId = ValueNotifier(null); + + @override + int? get textureId => _textureId.value; + + /// Listenable form of [textureId] for widgets that rebuild on publication. + ValueListenable get textureIdListenable => _textureId; + + /// Publishes (or clears) the Flutter texture id backing this player. + @protected + void setTextureId(int? value) { + if (!_disposed) _textureId.value = value; + } + @override PlayerState get state => _state; @@ -1379,6 +1396,10 @@ abstract class PlayerBase with PlayerStreamControllersMixin implements Player { Future dispose({bool preserveDisplayMode = false}) async { if (_disposed) return; _disposed = true; + // The texture is going away with the player; clear the id first so a + // still-mounted Video widget stops keying off it before the notifier is + // disposed below. + _textureId.value = null; final channelName = eventChannel.name; if (identical(_eventChannelOwners[channelName], this)) { @@ -1428,6 +1449,7 @@ abstract class PlayerBase with PlayerStreamControllersMixin implements Player { ); } await closeStreamControllers(); + _textureId.dispose(); } } diff --git a/lib/mpv/player/player_native.dart b/lib/mpv/player/player_native.dart index ae3f5a169..366793a87 100644 --- a/lib/mpv/player/player_native.dart +++ b/lib/mpv/player/player_native.dart @@ -6,6 +6,7 @@ import 'package:flutter/foundation.dart' show visibleForTesting; import 'package:flutter/services.dart'; import '../../media/media_display_criteria.dart'; +import '../../services/settings_service.dart'; import '../../utils/app_logger.dart'; import '../models.dart'; import 'audio_rendering_mode.dart'; @@ -215,8 +216,24 @@ class PlayerNative extends PlayerBase { Future _doInitialize() async { try { - final result = await invoke('initialize'); - if (result != true) { + // Linux render-mode preference: 'texture' forces the SDR Flutter-texture + // fallback (the user-visible workaround for plane-only trouble); + // anything else prefers the Wayland plane and falls back when the plane + // cannot be brought up. + final initArgs = usesLinuxVideoPlane + ? {'renderMode': SettingsService.instance.read(SettingsService.linuxVideoRenderMode)} + : null; + final result = await invoke('initialize', initArgs); + if (result is int) { + // Linux texture path: the native side registers the texture and + // returns its id immediately, but the GPU bootstrap (Flutter invoking + // FlTextureGL::populate, which creates the render context and the + // shared EGL image) completes asynchronously. Playback must not start + // against an unusable texture, so initialization stays gated until + // waitForVideoReady reports the texture usable. + setTextureId(result); + await invoke('waitForVideoReady'); + } else if (result != true) { throw Exception('Failed to initialize player'); } if (_nativeCoreUnavailable) throw StateError('Player was disposed during initialization'); @@ -245,6 +262,10 @@ class PlayerNative extends PlayerBase { if (_nativeCoreUnavailable) throw StateError('Player was disposed during initialization'); initialized = true; } catch (e) { + // A texture published provisionally (Linux fallback) is not usable if + // initialization aborted; drop it so the Video widget stops keying off + // it and falls back to its other surface path. + setTextureId(null); _initFuture = null; if (!_nativeCoreUnavailable) { errorController.add(PlayerError('Initialization failed: $e')); diff --git a/lib/mpv/video.dart b/lib/mpv/video.dart index 93ba464f6..c05221c63 100644 --- a/lib/mpv/video.dart +++ b/lib/mpv/video.dart @@ -123,6 +123,24 @@ class _VideoState extends State