diff --git a/lib/i18n/da.i18n.json b/lib/i18n/da.i18n.json index a1fa1b62..34503c17 100644 --- a/lib/i18n/da.i18n.json +++ b/lib/i18n/da.i18n.json @@ -448,7 +448,8 @@ "borderColor": "Kantfarve", "backgroundOpacity": "Baggrundsgennemsigtighed", "backgroundColor": "Baggrundsfarve", - "position": "Position" + "position": "Position", + "assOverride": "ASS-tilsidesættelse" }, "mpvConfig": { "title": "mpv.conf", diff --git a/lib/i18n/de.i18n.json b/lib/i18n/de.i18n.json index fd53bb38..29f27aa6 100644 --- a/lib/i18n/de.i18n.json +++ b/lib/i18n/de.i18n.json @@ -448,7 +448,8 @@ "borderColor": "Rahmenfarbe", "backgroundOpacity": "Hintergrunddeckkraft", "backgroundColor": "Hintergrundfarbe", - "position": "Position" + "position": "Position", + "assOverride": "ASS-Überschreibung" }, "mpvConfig": { "title": "mpv-Konfiguration", diff --git a/lib/i18n/en.i18n.json b/lib/i18n/en.i18n.json index d9ebaed0..16eaa8a8 100644 --- a/lib/i18n/en.i18n.json +++ b/lib/i18n/en.i18n.json @@ -448,7 +448,8 @@ "borderColor": "Border Color", "backgroundOpacity": "Background Opacity", "backgroundColor": "Background Color", - "position": "Position" + "position": "Position", + "assOverride": "ASS Override" }, "mpvConfig": { "title": "mpv.conf", diff --git a/lib/i18n/es.i18n.json b/lib/i18n/es.i18n.json index aa379631..00730e25 100644 --- a/lib/i18n/es.i18n.json +++ b/lib/i18n/es.i18n.json @@ -448,7 +448,8 @@ "borderColor": "Color de Borde", "backgroundOpacity": "Opacidad de Fondo", "backgroundColor": "Color de Fondo", - "position": "Posición" + "position": "Posición", + "assOverride": "Sobreescritura ASS" }, "mpvConfig": { "title": "Configuración de mpv", diff --git a/lib/i18n/fr.i18n.json b/lib/i18n/fr.i18n.json index f2b53852..72c96460 100644 --- a/lib/i18n/fr.i18n.json +++ b/lib/i18n/fr.i18n.json @@ -448,7 +448,8 @@ "borderColor": "Couleur de la bordure", "backgroundOpacity": "Opacité d'arrière-plan", "backgroundColor": "Couleur d'arrière-plan", - "position": "Position" + "position": "Position", + "assOverride": "Remplacement ASS" }, "mpvConfig": { "title": "Configuration mpv", diff --git a/lib/i18n/it.i18n.json b/lib/i18n/it.i18n.json index 25286630..e9eefcbc 100644 --- a/lib/i18n/it.i18n.json +++ b/lib/i18n/it.i18n.json @@ -448,7 +448,8 @@ "borderColor": "Colore bordo", "backgroundOpacity": "Opacità sfondo", "backgroundColor": "Colore sfondo", - "position": "Posizione" + "position": "Posizione", + "assOverride": "Sovrascrittura ASS" }, "mpvConfig": { "title": "Configurazione mpv", diff --git a/lib/i18n/ja.i18n.json b/lib/i18n/ja.i18n.json index 9447eee2..fdcbfcb5 100644 --- a/lib/i18n/ja.i18n.json +++ b/lib/i18n/ja.i18n.json @@ -448,7 +448,8 @@ "borderColor": "枠線の色", "backgroundOpacity": "背景の不透明度", "backgroundColor": "背景色", - "position": "位置" + "position": "位置", + "assOverride": "ASSオーバーライド" }, "mpvConfig": { "title": "mpv.conf", diff --git a/lib/i18n/ko.i18n.json b/lib/i18n/ko.i18n.json index 945d6564..3a415387 100644 --- a/lib/i18n/ko.i18n.json +++ b/lib/i18n/ko.i18n.json @@ -448,7 +448,8 @@ "borderColor": "테두리 색상", "backgroundOpacity": "배경 불투명도", "backgroundColor": "배경색", - "position": "위치" + "position": "위치", + "assOverride": "ASS 오버라이드" }, "mpvConfig": { "title": "mpv 설정", diff --git a/lib/i18n/nb.i18n.json b/lib/i18n/nb.i18n.json index b88e1f89..8ff61299 100644 --- a/lib/i18n/nb.i18n.json +++ b/lib/i18n/nb.i18n.json @@ -448,7 +448,8 @@ "borderColor": "Kantfarge", "backgroundOpacity": "Bakgrunnsopasitet", "backgroundColor": "Bakgrunnsfarge", - "position": "Posisjon" + "position": "Posisjon", + "assOverride": "ASS-overstyring" }, "mpvConfig": { "title": "mpv.conf", diff --git a/lib/i18n/nl.i18n.json b/lib/i18n/nl.i18n.json index a519fd92..28c22e91 100644 --- a/lib/i18n/nl.i18n.json +++ b/lib/i18n/nl.i18n.json @@ -448,7 +448,8 @@ "borderColor": "Randkleur", "backgroundOpacity": "Achtergrond transparantie", "backgroundColor": "Achtergrondkleur", - "position": "Positie" + "position": "Positie", + "assOverride": "ASS-overschrijving" }, "mpvConfig": { "title": "mpv-configuratie", diff --git a/lib/i18n/pl.i18n.json b/lib/i18n/pl.i18n.json index 552c1e1d..f1b6a19f 100644 --- a/lib/i18n/pl.i18n.json +++ b/lib/i18n/pl.i18n.json @@ -448,7 +448,8 @@ "borderColor": "Kolor obramowania", "backgroundOpacity": "Przezroczystość tła", "backgroundColor": "Kolor tła", - "position": "Pozycja" + "position": "Pozycja", + "assOverride": "Nadpisywanie ASS" }, "mpvConfig": { "title": "mpv.conf", diff --git a/lib/i18n/pt.i18n.json b/lib/i18n/pt.i18n.json index 1bcac131..f221795e 100644 --- a/lib/i18n/pt.i18n.json +++ b/lib/i18n/pt.i18n.json @@ -448,7 +448,8 @@ "borderColor": "Cor da Borda", "backgroundOpacity": "Opacidade do Fundo", "backgroundColor": "Cor de Fundo", - "position": "Posição" + "position": "Posição", + "assOverride": "Substituição ASS" }, "mpvConfig": { "title": "mpv.conf", diff --git a/lib/i18n/ru.i18n.json b/lib/i18n/ru.i18n.json index bf78618c..282714c6 100644 --- a/lib/i18n/ru.i18n.json +++ b/lib/i18n/ru.i18n.json @@ -448,7 +448,8 @@ "borderColor": "Цвет обводки", "backgroundOpacity": "Прозрачность фона", "backgroundColor": "Цвет фона", - "position": "Позиция" + "position": "Позиция", + "assOverride": "Переопределение ASS" }, "mpvConfig": { "title": "mpv.conf", diff --git a/lib/i18n/strings.g.dart b/lib/i18n/strings.g.dart index 7800c3bd..5b8a76d3 100644 --- a/lib/i18n/strings.g.dart +++ b/lib/i18n/strings.g.dart @@ -4,9 +4,9 @@ /// To regenerate, run: `dart run slang` /// /// Locales: 15 -/// Strings: 12840 (856 per locale) +/// Strings: 12855 (857 per locale) /// -/// Built on 2026-04-08 at 10:00 UTC +/// Built on 2026-04-08 at 17:29 UTC // coverage:ignore-file // ignore_for_file: type=lint, unused_import diff --git a/lib/i18n/strings_da.g.dart b/lib/i18n/strings_da.g.dart index adc0b318..8719a82a 100644 --- a/lib/i18n/strings_da.g.dart +++ b/lib/i18n/strings_da.g.dart @@ -610,6 +610,7 @@ class _TranslationsSubtitlingStylingDa implements TranslationsSubtitlingStylingE @override String get backgroundOpacity => 'Baggrundsgennemsigtighed'; @override String get backgroundColor => 'Baggrundsfarve'; @override String get position => 'Position'; + @override String get assOverride => 'ASS-tilsidesættelse'; } // Path: mpvConfig @@ -1768,6 +1769,7 @@ extension on TranslationsDa { 'subtitlingStyling.backgroundOpacity' => 'Baggrundsgennemsigtighed', 'subtitlingStyling.backgroundColor' => 'Baggrundsfarve', 'subtitlingStyling.position' => 'Position', + 'subtitlingStyling.assOverride' => 'ASS-tilsidesættelse', 'mpvConfig.title' => 'mpv.conf', 'mpvConfig.description' => 'Avancerede videoafspillerindstillinger', 'mpvConfig.presets' => 'Forudindstillinger', @@ -1864,9 +1866,9 @@ extension on TranslationsDa { 'serverSelection.noServersFoundForAccount' => ({required Object username, required Object email}) => 'Ingen servere fundet for ${username} (${email})', 'serverSelection.failedToLoadServers' => ({required Object error}) => 'Kunne ikke indlæse servere: ${error}', 'hubDetail.title' => 'Titel', - 'hubDetail.releaseYear' => 'Udgivelsesår', _ => null, } ?? switch (path) { + 'hubDetail.releaseYear' => 'Udgivelsesår', 'hubDetail.dateAdded' => 'Tilføjelsesdato', 'hubDetail.rating' => 'Bedømmelse', 'hubDetail.noItemsFound' => 'Ingen elementer fundet', diff --git a/lib/i18n/strings_de.g.dart b/lib/i18n/strings_de.g.dart index 4bc35e08..a3ff3d70 100644 --- a/lib/i18n/strings_de.g.dart +++ b/lib/i18n/strings_de.g.dart @@ -610,6 +610,7 @@ class _TranslationsSubtitlingStylingDe implements TranslationsSubtitlingStylingE @override String get backgroundOpacity => 'Hintergrunddeckkraft'; @override String get backgroundColor => 'Hintergrundfarbe'; @override String get position => 'Position'; + @override String get assOverride => 'ASS-Überschreibung'; } // Path: mpvConfig @@ -1768,6 +1769,7 @@ extension on TranslationsDe { 'subtitlingStyling.backgroundOpacity' => 'Hintergrunddeckkraft', 'subtitlingStyling.backgroundColor' => 'Hintergrundfarbe', 'subtitlingStyling.position' => 'Position', + 'subtitlingStyling.assOverride' => 'ASS-Überschreibung', 'mpvConfig.title' => 'mpv-Konfiguration', 'mpvConfig.description' => 'Erweiterte Videoplayer-Einstellungen', 'mpvConfig.presets' => 'Voreinstellungen', @@ -1864,9 +1866,9 @@ extension on TranslationsDe { 'serverSelection.noServersFoundForAccount' => ({required Object username, required Object email}) => 'Keine Server gefunden für ${username} (${email})', 'serverSelection.failedToLoadServers' => ({required Object error}) => 'Server konnten nicht geladen werden: ${error}', 'hubDetail.title' => 'Titel', - 'hubDetail.releaseYear' => 'Erscheinungsjahr', _ => null, } ?? switch (path) { + 'hubDetail.releaseYear' => 'Erscheinungsjahr', 'hubDetail.dateAdded' => 'Hinzugefügt am', 'hubDetail.rating' => 'Bewertung', 'hubDetail.noItemsFound' => 'Keine Elemente gefunden', diff --git a/lib/i18n/strings_en.g.dart b/lib/i18n/strings_en.g.dart index 87f2ee6c..8382ab96 100644 --- a/lib/i18n/strings_en.g.dart +++ b/lib/i18n/strings_en.g.dart @@ -1393,6 +1393,9 @@ class TranslationsSubtitlingStylingEn { /// en: 'Position' String get position => 'Position'; + + /// en: 'ASS Override' + String get assOverride => 'ASS Override'; } // Path: mpvConfig @@ -3487,6 +3490,7 @@ extension on Translations { 'subtitlingStyling.backgroundOpacity' => 'Background Opacity', 'subtitlingStyling.backgroundColor' => 'Background Color', 'subtitlingStyling.position' => 'Position', + 'subtitlingStyling.assOverride' => 'ASS Override', 'mpvConfig.title' => 'mpv.conf', 'mpvConfig.description' => 'Advanced video player settings', 'mpvConfig.presets' => 'Presets', @@ -3583,9 +3587,9 @@ extension on Translations { 'serverSelection.noServersFoundForAccount' => ({required Object username, required Object email}) => 'No servers found for ${username} (${email})', 'serverSelection.failedToLoadServers' => ({required Object error}) => 'Failed to load servers: ${error}', 'hubDetail.title' => 'Title', - 'hubDetail.releaseYear' => 'Release Year', _ => null, } ?? switch (path) { + 'hubDetail.releaseYear' => 'Release Year', 'hubDetail.dateAdded' => 'Date Added', 'hubDetail.rating' => 'Rating', 'hubDetail.noItemsFound' => 'No items found', diff --git a/lib/i18n/strings_es.g.dart b/lib/i18n/strings_es.g.dart index a4e0ed28..49be179c 100644 --- a/lib/i18n/strings_es.g.dart +++ b/lib/i18n/strings_es.g.dart @@ -610,6 +610,7 @@ class _TranslationsSubtitlingStylingEs implements TranslationsSubtitlingStylingE @override String get backgroundOpacity => 'Opacidad de Fondo'; @override String get backgroundColor => 'Color de Fondo'; @override String get position => 'Posición'; + @override String get assOverride => 'Sobreescritura ASS'; } // Path: mpvConfig @@ -1768,6 +1769,7 @@ extension on TranslationsEs { 'subtitlingStyling.backgroundOpacity' => 'Opacidad de Fondo', 'subtitlingStyling.backgroundColor' => 'Color de Fondo', 'subtitlingStyling.position' => 'Posición', + 'subtitlingStyling.assOverride' => 'Sobreescritura ASS', 'mpvConfig.title' => 'Configuración de mpv', 'mpvConfig.description' => 'Ajustes avanzados del reproductor de video', 'mpvConfig.presets' => 'Ajustes preestablecidos', @@ -1864,9 +1866,9 @@ extension on TranslationsEs { 'serverSelection.noServersFoundForAccount' => ({required Object username, required Object email}) => 'No se encontraron servidores para ${username} (${email})', 'serverSelection.failedToLoadServers' => ({required Object error}) => 'Error al cargar servidores: ${error}', 'hubDetail.title' => 'Título', - 'hubDetail.releaseYear' => 'Año de lanzamiento', _ => null, } ?? switch (path) { + 'hubDetail.releaseYear' => 'Año de lanzamiento', 'hubDetail.dateAdded' => 'Añadido el', 'hubDetail.rating' => 'Calificación', 'hubDetail.noItemsFound' => 'No se encontraron elementos', diff --git a/lib/i18n/strings_fr.g.dart b/lib/i18n/strings_fr.g.dart index 4a2de9fd..4e5bd24e 100644 --- a/lib/i18n/strings_fr.g.dart +++ b/lib/i18n/strings_fr.g.dart @@ -610,6 +610,7 @@ class _TranslationsSubtitlingStylingFr implements TranslationsSubtitlingStylingE @override String get backgroundOpacity => 'Opacité d\'arrière-plan'; @override String get backgroundColor => 'Couleur d\'arrière-plan'; @override String get position => 'Position'; + @override String get assOverride => 'Remplacement ASS'; } // Path: mpvConfig @@ -1768,6 +1769,7 @@ extension on TranslationsFr { 'subtitlingStyling.backgroundOpacity' => 'Opacité d\'arrière-plan', 'subtitlingStyling.backgroundColor' => 'Couleur d\'arrière-plan', 'subtitlingStyling.position' => 'Position', + 'subtitlingStyling.assOverride' => 'Remplacement ASS', 'mpvConfig.title' => 'Configuration mpv', 'mpvConfig.description' => 'Paramètres avancés du lecteur vidéo', 'mpvConfig.presets' => 'Préréglages', @@ -1864,9 +1866,9 @@ extension on TranslationsFr { 'serverSelection.noServersFoundForAccount' => ({required Object username, required Object email}) => 'Aucun serveur trouvé pour ${username} (${email})', 'serverSelection.failedToLoadServers' => ({required Object error}) => 'Échec du chargement des serveurs: ${error}', 'hubDetail.title' => 'Titre', - 'hubDetail.releaseYear' => 'Année de sortie', _ => null, } ?? switch (path) { + 'hubDetail.releaseYear' => 'Année de sortie', 'hubDetail.dateAdded' => 'Date d\'ajout', 'hubDetail.rating' => 'Évaluation', 'hubDetail.noItemsFound' => 'Aucun élément trouvé', diff --git a/lib/i18n/strings_it.g.dart b/lib/i18n/strings_it.g.dart index d8caee2c..fb76da4a 100644 --- a/lib/i18n/strings_it.g.dart +++ b/lib/i18n/strings_it.g.dart @@ -610,6 +610,7 @@ class _TranslationsSubtitlingStylingIt implements TranslationsSubtitlingStylingE @override String get backgroundOpacity => 'Opacità sfondo'; @override String get backgroundColor => 'Colore sfondo'; @override String get position => 'Posizione'; + @override String get assOverride => 'Sovrascrittura ASS'; } // Path: mpvConfig @@ -1768,6 +1769,7 @@ extension on TranslationsIt { 'subtitlingStyling.backgroundOpacity' => 'Opacità sfondo', 'subtitlingStyling.backgroundColor' => 'Colore sfondo', 'subtitlingStyling.position' => 'Posizione', + 'subtitlingStyling.assOverride' => 'Sovrascrittura ASS', 'mpvConfig.title' => 'Configurazione mpv', 'mpvConfig.description' => 'Impostazioni avanzate del lettore video', 'mpvConfig.presets' => 'Preset', @@ -1864,9 +1866,9 @@ extension on TranslationsIt { 'serverSelection.noServersFoundForAccount' => ({required Object username, required Object email}) => 'Nessun server trovato per ${username} (${email})', 'serverSelection.failedToLoadServers' => ({required Object error}) => 'Impossibile caricare i server: ${error}', 'hubDetail.title' => 'Titolo', - 'hubDetail.releaseYear' => 'Anno rilascio', _ => null, } ?? switch (path) { + 'hubDetail.releaseYear' => 'Anno rilascio', 'hubDetail.dateAdded' => 'Data aggiunta', 'hubDetail.rating' => 'Valutazione', 'hubDetail.noItemsFound' => 'Nessun elemento trovato', diff --git a/lib/i18n/strings_ja.g.dart b/lib/i18n/strings_ja.g.dart index 4a9ed062..da66c8c5 100644 --- a/lib/i18n/strings_ja.g.dart +++ b/lib/i18n/strings_ja.g.dart @@ -610,6 +610,7 @@ class _TranslationsSubtitlingStylingJa implements TranslationsSubtitlingStylingE @override String get backgroundOpacity => '背景の不透明度'; @override String get backgroundColor => '背景色'; @override String get position => '位置'; + @override String get assOverride => 'ASSオーバーライド'; } // Path: mpvConfig @@ -1768,6 +1769,7 @@ extension on TranslationsJa { 'subtitlingStyling.backgroundOpacity' => '背景の不透明度', 'subtitlingStyling.backgroundColor' => '背景色', 'subtitlingStyling.position' => '位置', + 'subtitlingStyling.assOverride' => 'ASSオーバーライド', 'mpvConfig.title' => 'mpv.conf', 'mpvConfig.description' => '高度な動画プレーヤー設定', 'mpvConfig.presets' => 'プリセット', @@ -1864,9 +1866,9 @@ extension on TranslationsJa { 'serverSelection.noServersFoundForAccount' => ({required Object username, required Object email}) => '${username} (${email})のサーバーが見つかりません', 'serverSelection.failedToLoadServers' => ({required Object error}) => 'サーバーの読み込みに失敗しました: ${error}', 'hubDetail.title' => 'タイトル', - 'hubDetail.releaseYear' => '公開年', _ => null, } ?? switch (path) { + 'hubDetail.releaseYear' => '公開年', 'hubDetail.dateAdded' => '追加日', 'hubDetail.rating' => '評価', 'hubDetail.noItemsFound' => 'アイテムが見つかりません', diff --git a/lib/i18n/strings_ko.g.dart b/lib/i18n/strings_ko.g.dart index 4595a249..9e63c03d 100644 --- a/lib/i18n/strings_ko.g.dart +++ b/lib/i18n/strings_ko.g.dart @@ -610,6 +610,7 @@ class _TranslationsSubtitlingStylingKo implements TranslationsSubtitlingStylingE @override String get backgroundOpacity => '배경 불투명도'; @override String get backgroundColor => '배경색'; @override String get position => '위치'; + @override String get assOverride => 'ASS 오버라이드'; } // Path: mpvConfig @@ -1768,6 +1769,7 @@ extension on TranslationsKo { 'subtitlingStyling.backgroundOpacity' => '배경 불투명도', 'subtitlingStyling.backgroundColor' => '배경색', 'subtitlingStyling.position' => '위치', + 'subtitlingStyling.assOverride' => 'ASS 오버라이드', 'mpvConfig.title' => 'mpv 설정', 'mpvConfig.description' => '고급 비디오 플레이어 설정', 'mpvConfig.presets' => '사전 설정', @@ -1864,9 +1866,9 @@ extension on TranslationsKo { 'serverSelection.noServersFoundForAccount' => ({required Object username, required Object email}) => '${username} (${email})의 서버를 찾을 수 없습니다.', 'serverSelection.failedToLoadServers' => ({required Object error}) => '서버를 로드할 수 없습니다: ${error}', 'hubDetail.title' => '제목', - 'hubDetail.releaseYear' => '출시 연도', _ => null, } ?? switch (path) { + 'hubDetail.releaseYear' => '출시 연도', 'hubDetail.dateAdded' => '추가 날짜', 'hubDetail.rating' => '평점', 'hubDetail.noItemsFound' => '항목이 없습니다', diff --git a/lib/i18n/strings_nb.g.dart b/lib/i18n/strings_nb.g.dart index 841818ff..89380319 100644 --- a/lib/i18n/strings_nb.g.dart +++ b/lib/i18n/strings_nb.g.dart @@ -610,6 +610,7 @@ class _TranslationsSubtitlingStylingNb implements TranslationsSubtitlingStylingE @override String get backgroundOpacity => 'Bakgrunnsopasitet'; @override String get backgroundColor => 'Bakgrunnsfarge'; @override String get position => 'Posisjon'; + @override String get assOverride => 'ASS-overstyring'; } // Path: mpvConfig @@ -1768,6 +1769,7 @@ extension on TranslationsNb { 'subtitlingStyling.backgroundOpacity' => 'Bakgrunnsopasitet', 'subtitlingStyling.backgroundColor' => 'Bakgrunnsfarge', 'subtitlingStyling.position' => 'Posisjon', + 'subtitlingStyling.assOverride' => 'ASS-overstyring', 'mpvConfig.title' => 'mpv.conf', 'mpvConfig.description' => 'Avanserte videospillerinnstillinger', 'mpvConfig.presets' => 'Forhåndsinnstillinger', @@ -1864,9 +1866,9 @@ extension on TranslationsNb { 'serverSelection.noServersFoundForAccount' => ({required Object username, required Object email}) => 'Ingen servere funnet for ${username} (${email})', 'serverSelection.failedToLoadServers' => ({required Object error}) => 'Kunne ikke laste servere: ${error}', 'hubDetail.title' => 'Tittel', - 'hubDetail.releaseYear' => 'Utgivelsesår', _ => null, } ?? switch (path) { + 'hubDetail.releaseYear' => 'Utgivelsesår', 'hubDetail.dateAdded' => 'Dato lagt til', 'hubDetail.rating' => 'Vurdering', 'hubDetail.noItemsFound' => 'Ingen elementer funnet', diff --git a/lib/i18n/strings_nl.g.dart b/lib/i18n/strings_nl.g.dart index 748a68b9..61430d42 100644 --- a/lib/i18n/strings_nl.g.dart +++ b/lib/i18n/strings_nl.g.dart @@ -610,6 +610,7 @@ class _TranslationsSubtitlingStylingNl implements TranslationsSubtitlingStylingE @override String get backgroundOpacity => 'Achtergrond transparantie'; @override String get backgroundColor => 'Achtergrondkleur'; @override String get position => 'Positie'; + @override String get assOverride => 'ASS-overschrijving'; } // Path: mpvConfig @@ -1768,6 +1769,7 @@ extension on TranslationsNl { 'subtitlingStyling.backgroundOpacity' => 'Achtergrond transparantie', 'subtitlingStyling.backgroundColor' => 'Achtergrondkleur', 'subtitlingStyling.position' => 'Positie', + 'subtitlingStyling.assOverride' => 'ASS-overschrijving', 'mpvConfig.title' => 'mpv-configuratie', 'mpvConfig.description' => 'Geavanceerde videospeler-instellingen', 'mpvConfig.presets' => 'Voorinstellingen', @@ -1864,9 +1866,9 @@ extension on TranslationsNl { 'serverSelection.noServersFoundForAccount' => ({required Object username, required Object email}) => 'Geen servers gevonden voor ${username} (${email})', 'serverSelection.failedToLoadServers' => ({required Object error}) => 'Kon servers niet laden: ${error}', 'hubDetail.title' => 'Titel', - 'hubDetail.releaseYear' => 'Uitgavejaar', _ => null, } ?? switch (path) { + 'hubDetail.releaseYear' => 'Uitgavejaar', 'hubDetail.dateAdded' => 'Datum toegevoegd', 'hubDetail.rating' => 'Beoordeling', 'hubDetail.noItemsFound' => 'Geen items gevonden', diff --git a/lib/i18n/strings_pl.g.dart b/lib/i18n/strings_pl.g.dart index 6ef0cfa6..fa87b326 100644 --- a/lib/i18n/strings_pl.g.dart +++ b/lib/i18n/strings_pl.g.dart @@ -610,6 +610,7 @@ class _TranslationsSubtitlingStylingPl implements TranslationsSubtitlingStylingE @override String get backgroundOpacity => 'Przezroczystość tła'; @override String get backgroundColor => 'Kolor tła'; @override String get position => 'Pozycja'; + @override String get assOverride => 'Nadpisywanie ASS'; } // Path: mpvConfig @@ -1768,6 +1769,7 @@ extension on TranslationsPl { 'subtitlingStyling.backgroundOpacity' => 'Przezroczystość tła', 'subtitlingStyling.backgroundColor' => 'Kolor tła', 'subtitlingStyling.position' => 'Pozycja', + 'subtitlingStyling.assOverride' => 'Nadpisywanie ASS', 'mpvConfig.title' => 'mpv.conf', 'mpvConfig.description' => 'Zaawansowane ustawienia odtwarzacza wideo', 'mpvConfig.presets' => 'Presety', @@ -1864,9 +1866,9 @@ extension on TranslationsPl { 'serverSelection.noServersFoundForAccount' => ({required Object username, required Object email}) => 'Nie znaleziono serwerów dla ${username} (${email})', 'serverSelection.failedToLoadServers' => ({required Object error}) => 'Nie udało się załadować serwerów: ${error}', 'hubDetail.title' => 'Tytuł', - 'hubDetail.releaseYear' => 'Rok premiery', _ => null, } ?? switch (path) { + 'hubDetail.releaseYear' => 'Rok premiery', 'hubDetail.dateAdded' => 'Data dodania', 'hubDetail.rating' => 'Ocena', 'hubDetail.noItemsFound' => 'Nie znaleziono elementów', diff --git a/lib/i18n/strings_pt.g.dart b/lib/i18n/strings_pt.g.dart index 4731717a..7bbd9921 100644 --- a/lib/i18n/strings_pt.g.dart +++ b/lib/i18n/strings_pt.g.dart @@ -610,6 +610,7 @@ class _TranslationsSubtitlingStylingPt implements TranslationsSubtitlingStylingE @override String get backgroundOpacity => 'Opacidade do Fundo'; @override String get backgroundColor => 'Cor de Fundo'; @override String get position => 'Posição'; + @override String get assOverride => 'Substituição ASS'; } // Path: mpvConfig @@ -1768,6 +1769,7 @@ extension on TranslationsPt { 'subtitlingStyling.backgroundOpacity' => 'Opacidade do Fundo', 'subtitlingStyling.backgroundColor' => 'Cor de Fundo', 'subtitlingStyling.position' => 'Posição', + 'subtitlingStyling.assOverride' => 'Substituição ASS', 'mpvConfig.title' => 'mpv.conf', 'mpvConfig.description' => 'Configurações avançadas do player de vídeo', 'mpvConfig.presets' => 'Predefinições', @@ -1864,9 +1866,9 @@ extension on TranslationsPt { 'serverSelection.noServersFoundForAccount' => ({required Object username, required Object email}) => 'Nenhum servidor encontrado para ${username} (${email})', 'serverSelection.failedToLoadServers' => ({required Object error}) => 'Falha ao carregar servidores: ${error}', 'hubDetail.title' => 'Título', - 'hubDetail.releaseYear' => 'Ano de Lançamento', _ => null, } ?? switch (path) { + 'hubDetail.releaseYear' => 'Ano de Lançamento', 'hubDetail.dateAdded' => 'Data de Adição', 'hubDetail.rating' => 'Avaliação', 'hubDetail.noItemsFound' => 'Nenhum item encontrado', diff --git a/lib/i18n/strings_ru.g.dart b/lib/i18n/strings_ru.g.dart index 236a3e89..fe4159d9 100644 --- a/lib/i18n/strings_ru.g.dart +++ b/lib/i18n/strings_ru.g.dart @@ -610,6 +610,7 @@ class _TranslationsSubtitlingStylingRu implements TranslationsSubtitlingStylingE @override String get backgroundOpacity => 'Прозрачность фона'; @override String get backgroundColor => 'Цвет фона'; @override String get position => 'Позиция'; + @override String get assOverride => 'Переопределение ASS'; } // Path: mpvConfig @@ -1768,6 +1769,7 @@ extension on TranslationsRu { 'subtitlingStyling.backgroundOpacity' => 'Прозрачность фона', 'subtitlingStyling.backgroundColor' => 'Цвет фона', 'subtitlingStyling.position' => 'Позиция', + 'subtitlingStyling.assOverride' => 'Переопределение ASS', 'mpvConfig.title' => 'mpv.conf', 'mpvConfig.description' => 'Расширенные настройки видеоплеера', 'mpvConfig.presets' => 'Пресеты', @@ -1864,9 +1866,9 @@ extension on TranslationsRu { 'serverSelection.noServersFoundForAccount' => ({required Object username, required Object email}) => 'Серверы не найдены для ${username} (${email})', 'serverSelection.failedToLoadServers' => ({required Object error}) => 'Не удалось загрузить серверы: ${error}', 'hubDetail.title' => 'Название', - 'hubDetail.releaseYear' => 'Год выпуска', _ => null, } ?? switch (path) { + 'hubDetail.releaseYear' => 'Год выпуска', 'hubDetail.dateAdded' => 'Дата добавления', 'hubDetail.rating' => 'Рейтинг', 'hubDetail.noItemsFound' => 'Элементы не найдены', diff --git a/lib/i18n/strings_sv.g.dart b/lib/i18n/strings_sv.g.dart index 87a25416..024e70ec 100644 --- a/lib/i18n/strings_sv.g.dart +++ b/lib/i18n/strings_sv.g.dart @@ -610,6 +610,7 @@ class _TranslationsSubtitlingStylingSv implements TranslationsSubtitlingStylingE @override String get backgroundOpacity => 'Bakgrundsopacitet'; @override String get backgroundColor => 'Bakgrundsfärg'; @override String get position => 'Position'; + @override String get assOverride => 'ASS-åsidosättning'; } // Path: mpvConfig @@ -1768,6 +1769,7 @@ extension on TranslationsSv { 'subtitlingStyling.backgroundOpacity' => 'Bakgrundsopacitet', 'subtitlingStyling.backgroundColor' => 'Bakgrundsfärg', 'subtitlingStyling.position' => 'Position', + 'subtitlingStyling.assOverride' => 'ASS-åsidosättning', 'mpvConfig.title' => 'mpv-konfiguration', 'mpvConfig.description' => 'Avancerade videospelares inställningar', 'mpvConfig.presets' => 'Förval', @@ -1864,9 +1866,9 @@ extension on TranslationsSv { 'serverSelection.noServersFoundForAccount' => ({required Object username, required Object email}) => 'Inga servrar hittades för ${username} (${email})', 'serverSelection.failedToLoadServers' => ({required Object error}) => 'Misslyckades att ladda servrar: ${error}', 'hubDetail.title' => 'Titel', - 'hubDetail.releaseYear' => 'Utgivningsår', _ => null, } ?? switch (path) { + 'hubDetail.releaseYear' => 'Utgivningsår', 'hubDetail.dateAdded' => 'Datum tillagd', 'hubDetail.rating' => 'Betyg', 'hubDetail.noItemsFound' => 'Inga objekt hittades', diff --git a/lib/i18n/strings_zh.g.dart b/lib/i18n/strings_zh.g.dart index a7a0ff4d..90df0179 100644 --- a/lib/i18n/strings_zh.g.dart +++ b/lib/i18n/strings_zh.g.dart @@ -610,6 +610,7 @@ class _TranslationsSubtitlingStylingZh implements TranslationsSubtitlingStylingE @override String get backgroundOpacity => '背景不透明度'; @override String get backgroundColor => '背景颜色'; @override String get position => '位置'; + @override String get assOverride => 'ASS 样式覆盖'; } // Path: mpvConfig @@ -1768,6 +1769,7 @@ extension on TranslationsZh { 'subtitlingStyling.backgroundOpacity' => '背景不透明度', 'subtitlingStyling.backgroundColor' => '背景颜色', 'subtitlingStyling.position' => '位置', + 'subtitlingStyling.assOverride' => 'ASS 样式覆盖', 'mpvConfig.title' => 'mpv 配置', 'mpvConfig.description' => '高级视频播放器设置', 'mpvConfig.presets' => '预设', @@ -1864,9 +1866,9 @@ extension on TranslationsZh { 'serverSelection.noServersFoundForAccount' => ({required Object username, required Object email}) => '未找到 ${username} (${email}) 的服务器', 'serverSelection.failedToLoadServers' => ({required Object error}) => '无法加载服务器: ${error}', 'hubDetail.title' => '标题', - 'hubDetail.releaseYear' => '发行年份', _ => null, } ?? switch (path) { + 'hubDetail.releaseYear' => '发行年份', 'hubDetail.dateAdded' => '添加日期', 'hubDetail.rating' => '评分', 'hubDetail.noItemsFound' => '未找到项目', diff --git a/lib/i18n/sv.i18n.json b/lib/i18n/sv.i18n.json index addbaa6f..dc2d47ab 100644 --- a/lib/i18n/sv.i18n.json +++ b/lib/i18n/sv.i18n.json @@ -448,7 +448,8 @@ "borderColor": "Kantfärg", "backgroundOpacity": "Bakgrundsopacitet", "backgroundColor": "Bakgrundsfärg", - "position": "Position" + "position": "Position", + "assOverride": "ASS-åsidosättning" }, "mpvConfig": { "title": "mpv-konfiguration", diff --git a/lib/i18n/zh.i18n.json b/lib/i18n/zh.i18n.json index e393b975..26cb9b6a 100644 --- a/lib/i18n/zh.i18n.json +++ b/lib/i18n/zh.i18n.json @@ -448,7 +448,8 @@ "borderColor": "边框颜色", "backgroundOpacity": "背景不透明度", "backgroundColor": "背景颜色", - "position": "位置" + "position": "位置", + "assOverride": "ASS 样式覆盖" }, "mpvConfig": { "title": "mpv 配置", diff --git a/lib/screens/settings/subtitle_styling_screen.dart b/lib/screens/settings/subtitle_styling_screen.dart index 1addb09a..abca9894 100644 --- a/lib/screens/settings/subtitle_styling_screen.dart +++ b/lib/screens/settings/subtitle_styling_screen.dart @@ -29,6 +29,7 @@ class _SubtitleStylingScreenState extends State { String _backgroundColor = '#000000'; int _backgroundOpacity = 0; int _subtitlePosition = 100; + SubAssOverride _assOverride = SubAssOverride.no; @override void initState() { @@ -48,6 +49,7 @@ class _SubtitleStylingScreenState extends State { _backgroundColor = _settingsService.getSubtitleBackgroundColor(); _backgroundOpacity = _settingsService.getSubtitleBackgroundOpacity(); _subtitlePosition = _settingsService.getSubtitlePosition(); + _assOverride = _settingsService.getSubAssOverride(); _isLoading = false; }); } @@ -146,6 +148,16 @@ class _SubtitleStylingScreenState extends State { } } + String _assOverrideLabel(SubAssOverride value) { + return switch (value) { + SubAssOverride.no => 'No', + SubAssOverride.yes => 'Yes', + SubAssOverride.scale => 'Scale', + SubAssOverride.force => 'Force', + SubAssOverride.strip => 'Strip', + }; + } + String _formatPosition(int value) { if (value == 0) return 'Top'; if (value == 100) return 'Bottom'; @@ -168,6 +180,26 @@ class _SubtitleStylingScreenState extends State { delegate: SliverChildListDelegate([ // --- Text --- SettingsSectionHeader(t.subtitlingStyling.text), + ListTile( + leading: const AppIcon(Symbols.subtitles_rounded, fill: 1), + title: Text(t.subtitlingStyling.assOverride), + subtitle: Text(_assOverrideLabel(_assOverride)), + trailing: const AppIcon(Symbols.chevron_right_rounded, fill: 1), + onTap: () async { + final value = await showSelectionDialog( + context: context, + title: t.subtitlingStyling.assOverride, + options: SubAssOverride.values + .map((v) => DialogOption(value: v, title: _assOverrideLabel(v))) + .toList(), + currentValue: _assOverride, + ); + if (value != null) { + setState(() => _assOverride = value); + await _settingsService.setSubAssOverride(value); + } + }, + ), ListTile( leading: const AppIcon(Symbols.format_size_rounded, fill: 1), title: Text(t.subtitlingStyling.fontSize), diff --git a/lib/screens/video_player_screen.dart b/lib/screens/video_player_screen.dart index cfebe074..cd944376 100644 --- a/lib/screens/video_player_screen.dart +++ b/lib/screens/video_player_screen.dart @@ -529,7 +529,7 @@ class VideoPlayerScreenState extends State with WidgetsBindin 'sub-back-color', '#${bgOpacity.toRadixString(16).padLeft(2, '0').toUpperCase()}$bgColor', ); - await player!.setProperty('sub-ass-override', 'no'); + await player!.setProperty('sub-ass-override', settingsService.getSubAssOverride().name); await player!.setProperty('sub-ass-video-aspect-override', '1'); await player!.setProperty('sub-pos', settingsService.getSubtitlePosition().toString()); diff --git a/lib/services/settings_service.dart b/lib/services/settings_service.dart index 24f697e0..d698abb9 100644 --- a/lib/services/settings_service.dart +++ b/lib/services/settings_service.dart @@ -28,6 +28,8 @@ enum ViewMode { grid, list } enum EpisodePosterMode { seriesPoster, seasonPoster, episodeThumbnail } +enum SubAssOverride { no, yes, scale, force, strip } + class SettingsService extends BaseSharedPreferencesService { static const String _keyThemeMode = 'theme_mode'; static const String _keyEnableDebugLogging = 'enable_debug_logging'; @@ -63,6 +65,7 @@ class SettingsService extends BaseSharedPreferencesService { static const String _keySubtitleBackgroundColor = 'subtitle_background_color'; static const String _keySubtitleBackgroundOpacity = 'subtitle_background_opacity'; static const String _keySubtitlePosition = 'subtitle_position'; + static const String _keySubAssOverride = 'sub_ass_override'; static const String _keyAppLocale = 'app_locale'; static const String _keyRememberTrackSelections = 'remember_track_selections'; static const String _keyClickVideoTogglesPlayback = 'click_video_toggles_playback'; @@ -448,6 +451,15 @@ class SettingsService extends BaseSharedPreferencesService { return prefs.getInt(_keySubtitlePosition) ?? 100; // Default: bottom } + // Sub ASS Override + Future setSubAssOverride(SubAssOverride mode) async { + await prefs.setString(_keySubAssOverride, mode.name); + } + + SubAssOverride getSubAssOverride() { + return _getEnumValue(_keySubAssOverride, SubAssOverride.values, SubAssOverride.no); + } + // Keyboard Shortcuts (Legacy String-based) Map getDefaultKeyboardShortcuts() { return {