feat: add sub-ass-override setting
This commit is contained in:
@@ -448,7 +448,8 @@
|
||||
"borderColor": "Kantfarve",
|
||||
"backgroundOpacity": "Baggrundsgennemsigtighed",
|
||||
"backgroundColor": "Baggrundsfarve",
|
||||
"position": "Position"
|
||||
"position": "Position",
|
||||
"assOverride": "ASS-tilsidesættelse"
|
||||
},
|
||||
"mpvConfig": {
|
||||
"title": "mpv.conf",
|
||||
|
||||
@@ -448,7 +448,8 @@
|
||||
"borderColor": "Rahmenfarbe",
|
||||
"backgroundOpacity": "Hintergrunddeckkraft",
|
||||
"backgroundColor": "Hintergrundfarbe",
|
||||
"position": "Position"
|
||||
"position": "Position",
|
||||
"assOverride": "ASS-Überschreibung"
|
||||
},
|
||||
"mpvConfig": {
|
||||
"title": "mpv-Konfiguration",
|
||||
|
||||
@@ -448,7 +448,8 @@
|
||||
"borderColor": "Border Color",
|
||||
"backgroundOpacity": "Background Opacity",
|
||||
"backgroundColor": "Background Color",
|
||||
"position": "Position"
|
||||
"position": "Position",
|
||||
"assOverride": "ASS Override"
|
||||
},
|
||||
"mpvConfig": {
|
||||
"title": "mpv.conf",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -448,7 +448,8 @@
|
||||
"borderColor": "Colore bordo",
|
||||
"backgroundOpacity": "Opacità sfondo",
|
||||
"backgroundColor": "Colore sfondo",
|
||||
"position": "Posizione"
|
||||
"position": "Posizione",
|
||||
"assOverride": "Sovrascrittura ASS"
|
||||
},
|
||||
"mpvConfig": {
|
||||
"title": "Configurazione mpv",
|
||||
|
||||
@@ -448,7 +448,8 @@
|
||||
"borderColor": "枠線の色",
|
||||
"backgroundOpacity": "背景の不透明度",
|
||||
"backgroundColor": "背景色",
|
||||
"position": "位置"
|
||||
"position": "位置",
|
||||
"assOverride": "ASSオーバーライド"
|
||||
},
|
||||
"mpvConfig": {
|
||||
"title": "mpv.conf",
|
||||
|
||||
@@ -448,7 +448,8 @@
|
||||
"borderColor": "테두리 색상",
|
||||
"backgroundOpacity": "배경 불투명도",
|
||||
"backgroundColor": "배경색",
|
||||
"position": "위치"
|
||||
"position": "위치",
|
||||
"assOverride": "ASS 오버라이드"
|
||||
},
|
||||
"mpvConfig": {
|
||||
"title": "mpv 설정",
|
||||
|
||||
@@ -448,7 +448,8 @@
|
||||
"borderColor": "Kantfarge",
|
||||
"backgroundOpacity": "Bakgrunnsopasitet",
|
||||
"backgroundColor": "Bakgrunnsfarge",
|
||||
"position": "Posisjon"
|
||||
"position": "Posisjon",
|
||||
"assOverride": "ASS-overstyring"
|
||||
},
|
||||
"mpvConfig": {
|
||||
"title": "mpv.conf",
|
||||
|
||||
@@ -448,7 +448,8 @@
|
||||
"borderColor": "Randkleur",
|
||||
"backgroundOpacity": "Achtergrond transparantie",
|
||||
"backgroundColor": "Achtergrondkleur",
|
||||
"position": "Positie"
|
||||
"position": "Positie",
|
||||
"assOverride": "ASS-overschrijving"
|
||||
},
|
||||
"mpvConfig": {
|
||||
"title": "mpv-configuratie",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -448,7 +448,8 @@
|
||||
"borderColor": "Цвет обводки",
|
||||
"backgroundOpacity": "Прозрачность фона",
|
||||
"backgroundColor": "Цвет фона",
|
||||
"position": "Позиция"
|
||||
"position": "Позиция",
|
||||
"assOverride": "Переопределение ASS"
|
||||
},
|
||||
"mpvConfig": {
|
||||
"title": "mpv.conf",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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é',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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' => 'アイテムが見つかりません',
|
||||
|
||||
@@ -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' => '항목이 없습니다',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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' => 'Элементы не найдены',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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' => '未找到项目',
|
||||
|
||||
@@ -448,7 +448,8 @@
|
||||
"borderColor": "Kantfärg",
|
||||
"backgroundOpacity": "Bakgrundsopacitet",
|
||||
"backgroundColor": "Bakgrundsfärg",
|
||||
"position": "Position"
|
||||
"position": "Position",
|
||||
"assOverride": "ASS-åsidosättning"
|
||||
},
|
||||
"mpvConfig": {
|
||||
"title": "mpv-konfiguration",
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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());
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user