feat: add sub-ass-override setting

This commit is contained in:
edde746
2026-04-08 19:35:18 +02:00
parent 7f237c9c7b
commit 1cb793d781
34 changed files with 124 additions and 33 deletions
+2 -1
View File
@@ -448,7 +448,8 @@
"borderColor": "Kantfarve",
"backgroundOpacity": "Baggrundsgennemsigtighed",
"backgroundColor": "Baggrundsfarve",
"position": "Position"
"position": "Position",
"assOverride": "ASS-tilsidesættelse"
},
"mpvConfig": {
"title": "mpv.conf",
+2 -1
View File
@@ -448,7 +448,8 @@
"borderColor": "Rahmenfarbe",
"backgroundOpacity": "Hintergrunddeckkraft",
"backgroundColor": "Hintergrundfarbe",
"position": "Position"
"position": "Position",
"assOverride": "ASS-Überschreibung"
},
"mpvConfig": {
"title": "mpv-Konfiguration",
+2 -1
View File
@@ -448,7 +448,8 @@
"borderColor": "Border Color",
"backgroundOpacity": "Background Opacity",
"backgroundColor": "Background Color",
"position": "Position"
"position": "Position",
"assOverride": "ASS Override"
},
"mpvConfig": {
"title": "mpv.conf",
+2 -1
View File
@@ -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",
+2 -1
View File
@@ -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",
+2 -1
View File
@@ -448,7 +448,8 @@
"borderColor": "Colore bordo",
"backgroundOpacity": "Opacità sfondo",
"backgroundColor": "Colore sfondo",
"position": "Posizione"
"position": "Posizione",
"assOverride": "Sovrascrittura ASS"
},
"mpvConfig": {
"title": "Configurazione mpv",
+2 -1
View File
@@ -448,7 +448,8 @@
"borderColor": "枠線の色",
"backgroundOpacity": "背景の不透明度",
"backgroundColor": "背景色",
"position": "位置"
"position": "位置",
"assOverride": "ASSオーバーライド"
},
"mpvConfig": {
"title": "mpv.conf",
+2 -1
View File
@@ -448,7 +448,8 @@
"borderColor": "테두리 색상",
"backgroundOpacity": "배경 불투명도",
"backgroundColor": "배경색",
"position": "위치"
"position": "위치",
"assOverride": "ASS 오버라이드"
},
"mpvConfig": {
"title": "mpv 설정",
+2 -1
View File
@@ -448,7 +448,8 @@
"borderColor": "Kantfarge",
"backgroundOpacity": "Bakgrunnsopasitet",
"backgroundColor": "Bakgrunnsfarge",
"position": "Posisjon"
"position": "Posisjon",
"assOverride": "ASS-overstyring"
},
"mpvConfig": {
"title": "mpv.conf",
+2 -1
View File
@@ -448,7 +448,8 @@
"borderColor": "Randkleur",
"backgroundOpacity": "Achtergrond transparantie",
"backgroundColor": "Achtergrondkleur",
"position": "Positie"
"position": "Positie",
"assOverride": "ASS-overschrijving"
},
"mpvConfig": {
"title": "mpv-configuratie",
+2 -1
View File
@@ -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",
+2 -1
View File
@@ -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",
+2 -1
View File
@@ -448,7 +448,8 @@
"borderColor": "Цвет обводки",
"backgroundOpacity": "Прозрачность фона",
"backgroundColor": "Цвет фона",
"position": "Позиция"
"position": "Позиция",
"assOverride": "Переопределение ASS"
},
"mpvConfig": {
"title": "mpv.conf",
+2 -2
View File
@@ -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
+3 -1
View File
@@ -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',
+3 -1
View File
@@ -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',
+5 -1
View File
@@ -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',
+3 -1
View File
@@ -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',
+3 -1
View File
@@ -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é',
+3 -1
View File
@@ -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',
+3 -1
View File
@@ -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' => 'アイテムが見つかりません',
+3 -1
View File
@@ -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' => '항목이 없습니다',
+3 -1
View File
@@ -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',
+3 -1
View File
@@ -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',
+3 -1
View File
@@ -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',
+3 -1
View File
@@ -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',
+3 -1
View File
@@ -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' => 'Элементы не найдены',
+3 -1
View File
@@ -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',
+3 -1
View File
@@ -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' => '未找到项目',
+2 -1
View File
@@ -448,7 +448,8 @@
"borderColor": "Kantfärg",
"backgroundOpacity": "Bakgrundsopacitet",
"backgroundColor": "Bakgrundsfärg",
"position": "Position"
"position": "Position",
"assOverride": "ASS-åsidosättning"
},
"mpvConfig": {
"title": "mpv-konfiguration",
+2 -1
View File
@@ -448,7 +448,8 @@
"borderColor": "边框颜色",
"backgroundOpacity": "背景不透明度",
"backgroundColor": "背景颜色",
"position": "位置"
"position": "位置",
"assOverride": "ASS 样式覆盖"
},
"mpvConfig": {
"title": "mpv 配置",
@@ -29,6 +29,7 @@ class _SubtitleStylingScreenState extends State<SubtitleStylingScreen> {
String _backgroundColor = '#000000';
int _backgroundOpacity = 0;
int _subtitlePosition = 100;
SubAssOverride _assOverride = SubAssOverride.no;
@override
void initState() {
@@ -48,6 +49,7 @@ class _SubtitleStylingScreenState extends State<SubtitleStylingScreen> {
_backgroundColor = _settingsService.getSubtitleBackgroundColor();
_backgroundOpacity = _settingsService.getSubtitleBackgroundOpacity();
_subtitlePosition = _settingsService.getSubtitlePosition();
_assOverride = _settingsService.getSubAssOverride();
_isLoading = false;
});
}
@@ -146,6 +148,16 @@ class _SubtitleStylingScreenState extends State<SubtitleStylingScreen> {
}
}
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<SubtitleStylingScreen> {
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<SubAssOverride>(
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),
+1 -1
View File
@@ -529,7 +529,7 @@ class VideoPlayerScreenState extends State<VideoPlayerScreen> 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());
+12
View File
@@ -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<void> 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<String, String> getDefaultKeyboardShortcuts() {
return {