refactor: restyle subtitle styling and external player settings screens

This commit is contained in:
edde746
2026-04-03 17:25:02 +02:00
parent c9db6e528e
commit d1d45c4998
33 changed files with 393 additions and 450 deletions
+4
View File
@@ -439,6 +439,9 @@
},
"subtitlingStyling": {
"stylingOptions": "Stilindstillinger",
"text": "Tekst",
"border": "Kant",
"background": "Baggrund",
"fontSize": "Skriftstørrelse",
"textColor": "Tekstfarve",
"borderSize": "Kantstørrelse",
@@ -847,6 +850,7 @@
"useExternalPlayer": "Brug ekstern afspiller",
"useExternalPlayerDescription": "Åbn videoer i en ekstern app i stedet for den indbyggede afspiller",
"selectPlayer": "Vælg afspiller",
"customPlayers": "Brugerdefinerede afspillere",
"systemDefault": "Systemstandard",
"addCustomPlayer": "Tilføj brugerdefineret afspiller",
"playerName": "Afspillernavn",
+4
View File
@@ -439,6 +439,9 @@
},
"subtitlingStyling": {
"stylingOptions": "Stiloptionen",
"text": "Text",
"border": "Rahmen",
"background": "Hintergrund",
"fontSize": "Schriftgröße",
"textColor": "Textfarbe",
"borderSize": "Rahmengröße",
@@ -847,6 +850,7 @@
"useExternalPlayer": "Externen Player verwenden",
"useExternalPlayerDescription": "Videos in einer externen App statt im integrierten Player öffnen",
"selectPlayer": "Player auswählen",
"customPlayers": "Benutzerdefinierte Player",
"systemDefault": "Systemstandard",
"addCustomPlayer": "Benutzerdefinierten Player hinzufügen",
"playerName": "Playername",
+4
View File
@@ -439,6 +439,9 @@
},
"subtitlingStyling": {
"stylingOptions": "Styling Options",
"text": "Text",
"border": "Border",
"background": "Background",
"fontSize": "Font Size",
"textColor": "Text Color",
"borderSize": "Border Size",
@@ -847,6 +850,7 @@
"useExternalPlayer": "Use External Player",
"useExternalPlayerDescription": "Open videos in an external app instead of the built-in player",
"selectPlayer": "Select Player",
"customPlayers": "Custom Players",
"systemDefault": "System Default",
"addCustomPlayer": "Add Custom Player",
"playerName": "Player Name",
+4
View File
@@ -439,6 +439,9 @@
},
"subtitlingStyling": {
"stylingOptions": "Opciones de Estilo",
"text": "Texto",
"border": "Borde",
"background": "Fondo",
"fontSize": "Tamaño de Fuente",
"textColor": "Color de Texto",
"borderSize": "Tamaño de Borde",
@@ -847,6 +850,7 @@
"useExternalPlayer": "Usar reproductor externo",
"useExternalPlayerDescription": "Abrir vídeos en una app externa en lugar del reproductor integrado",
"selectPlayer": "Seleccionar reproductor",
"customPlayers": "Reproductores personalizados",
"systemDefault": "Predeterminado del sistema",
"addCustomPlayer": "Añadir reproductor personalizado",
"playerName": "Nombre del reproductor",
+4
View File
@@ -439,6 +439,9 @@
},
"subtitlingStyling": {
"stylingOptions": "Options de style",
"text": "Texte",
"border": "Bordure",
"background": "Arrière-plan",
"fontSize": "Taille de la police",
"textColor": "Couleur du texte",
"borderSize": "Taille de la bordure",
@@ -847,6 +850,7 @@
"useExternalPlayer": "Utiliser un lecteur externe",
"useExternalPlayerDescription": "Ouvrir les vidéos dans une application externe au lieu du lecteur intégré",
"selectPlayer": "Sélectionner le lecteur",
"customPlayers": "Lecteurs personnalisés",
"systemDefault": "Par défaut du système",
"addCustomPlayer": "Ajouter un lecteur personnalisé",
"playerName": "Nom du lecteur",
+4
View File
@@ -439,6 +439,9 @@
},
"subtitlingStyling": {
"stylingOptions": "Opzioni stile",
"text": "Testo",
"border": "Bordo",
"background": "Sfondo",
"fontSize": "Dimensione",
"textColor": "Colore testo",
"borderSize": "Dimensione bordo",
@@ -847,6 +850,7 @@
"useExternalPlayer": "Usa lettore esterno",
"useExternalPlayerDescription": "Apri i video in un'app esterna invece del lettore integrato",
"selectPlayer": "Seleziona lettore",
"customPlayers": "Lettori personalizzati",
"systemDefault": "Predefinito di sistema",
"addCustomPlayer": "Aggiungi lettore personalizzato",
"playerName": "Nome lettore",
+4
View File
@@ -439,6 +439,9 @@
},
"subtitlingStyling": {
"stylingOptions": "スタイルオプション",
"text": "テキスト",
"border": "枠線",
"background": "背景",
"fontSize": "フォントサイズ",
"textColor": "テキストの色",
"borderSize": "枠線サイズ",
@@ -847,6 +850,7 @@
"useExternalPlayer": "外部プレーヤーを使用",
"useExternalPlayerDescription": "内蔵プレーヤーの代わりに外部アプリで動画を開く",
"selectPlayer": "プレーヤーを選択",
"customPlayers": "カスタムプレーヤー",
"systemDefault": "システムデフォルト",
"addCustomPlayer": "カスタムプレーヤーを追加",
"playerName": "プレーヤー名",
+4
View File
@@ -439,6 +439,9 @@
},
"subtitlingStyling": {
"stylingOptions": "스타일 옵션",
"text": "텍스트",
"border": "테두리",
"background": "배경",
"fontSize": "글자 크기",
"textColor": "텍스트 색상",
"borderSize": "테두리 크기",
@@ -847,6 +850,7 @@
"useExternalPlayer": "외부 플레이어 사용",
"useExternalPlayerDescription": "내장 플레이어 대신 외부 앱에서 동영상 열기",
"selectPlayer": "플레이어 선택",
"customPlayers": "사용자 정의 플레이어",
"systemDefault": "시스템 기본값",
"addCustomPlayer": "사용자 정의 플레이어 추가",
"playerName": "플레이어 이름",
+4
View File
@@ -439,6 +439,9 @@
},
"subtitlingStyling": {
"stylingOptions": "Stilalternativer",
"text": "Tekst",
"border": "Kantlinje",
"background": "Bakgrunn",
"fontSize": "Skriftstørrelse",
"textColor": "Tekstfarge",
"borderSize": "Kantstørrelse",
@@ -847,6 +850,7 @@
"useExternalPlayer": "Bruk ekstern spiller",
"useExternalPlayerDescription": "Åpne videoer i en ekstern app i stedet for den innebygde spilleren",
"selectPlayer": "Velg spiller",
"customPlayers": "Egendefinerte spillere",
"systemDefault": "Systemstandard",
"addCustomPlayer": "Legg til egendefinert spiller",
"playerName": "Spillernavn",
+4
View File
@@ -439,6 +439,9 @@
},
"subtitlingStyling": {
"stylingOptions": "Opmaak opties",
"text": "Tekst",
"border": "Rand",
"background": "Achtergrond",
"fontSize": "Lettergrootte",
"textColor": "Tekstkleur",
"borderSize": "Rand grootte",
@@ -847,6 +850,7 @@
"useExternalPlayer": "Externe speler gebruiken",
"useExternalPlayerDescription": "Open video's in een externe app in plaats van de ingebouwde speler",
"selectPlayer": "Speler selecteren",
"customPlayers": "Aangepaste spelers",
"systemDefault": "Systeemstandaard",
"addCustomPlayer": "Aangepaste speler toevoegen",
"playerName": "Spelernaam",
+4
View File
@@ -439,6 +439,9 @@
},
"subtitlingStyling": {
"stylingOptions": "Opcje stylu",
"text": "Tekst",
"border": "Obramowanie",
"background": "Tło",
"fontSize": "Rozmiar czcionki",
"textColor": "Kolor tekstu",
"borderSize": "Rozmiar obramowania",
@@ -847,6 +850,7 @@
"useExternalPlayer": "Użyj zewnętrznego odtwarzacza",
"useExternalPlayerDescription": "Otwieraj wideo w zewnętrznej aplikacji zamiast wbudowanego odtwarzacza",
"selectPlayer": "Wybierz odtwarzacz",
"customPlayers": "Niestandardowe odtwarzacze",
"systemDefault": "Domyślny systemowy",
"addCustomPlayer": "Dodaj niestandardowy odtwarzacz",
"playerName": "Nazwa odtwarzacza",
+4
View File
@@ -439,6 +439,9 @@
},
"subtitlingStyling": {
"stylingOptions": "Opções de Estilo",
"text": "Texto",
"border": "Borda",
"background": "Fundo",
"fontSize": "Tamanho da Fonte",
"textColor": "Cor do Texto",
"borderSize": "Tamanho da Borda",
@@ -847,6 +850,7 @@
"useExternalPlayer": "Usar Player Externo",
"useExternalPlayerDescription": "Abrir vídeos em um app externo em vez do player integrado",
"selectPlayer": "Selecionar Player",
"customPlayers": "Players Personalizados",
"systemDefault": "Padrão do Sistema",
"addCustomPlayer": "Adicionar Player Personalizado",
"playerName": "Nome do Player",
+4
View File
@@ -439,6 +439,9 @@
},
"subtitlingStyling": {
"stylingOptions": "Параметры стиля",
"text": "Текст",
"border": "Обводка",
"background": "Фон",
"fontSize": "Размер шрифта",
"textColor": "Цвет текста",
"borderSize": "Размер обводки",
@@ -847,6 +850,7 @@
"useExternalPlayer": "Использовать внешний плеер",
"useExternalPlayerDescription": "Открывать видео во внешнем приложении вместо встроенного плеера",
"selectPlayer": "Выбрать плеер",
"customPlayers": "Свои плееры",
"systemDefault": "Системный по умолчанию",
"addCustomPlayer": "Добавить свой плеер",
"playerName": "Название плеера",
+2 -2
View File
@@ -4,9 +4,9 @@
/// To regenerate, run: `dart run slang`
///
/// Locales: 15
/// Strings: 12690 (846 per locale)
/// Strings: 12750 (850 per locale)
///
/// Built on 2026-04-02 at 13:51 UTC
/// Built on 2026-04-03 at 15:21 UTC
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
+10 -2
View File
@@ -600,6 +600,9 @@ class _TranslationsSubtitlingStylingDa implements TranslationsSubtitlingStylingE
// Translations
@override String get stylingOptions => 'Stilindstillinger';
@override String get text => 'Tekst';
@override String get border => 'Kant';
@override String get background => 'Baggrund';
@override String get fontSize => 'Skriftstørrelse';
@override String get textColor => 'Tekstfarve';
@override String get borderSize => 'Kantstørrelse';
@@ -1063,6 +1066,7 @@ class _TranslationsExternalPlayerDa implements TranslationsExternalPlayerEn {
@override String get useExternalPlayer => 'Brug ekstern afspiller';
@override String get useExternalPlayerDescription => 'Åbn videoer i en ekstern app i stedet for den indbyggede afspiller';
@override String get selectPlayer => 'Vælg afspiller';
@override String get customPlayers => 'Brugerdefinerede afspillere';
@override String get systemDefault => 'Systemstandard';
@override String get addCustomPlayer => 'Tilføj brugerdefineret afspiller';
@override String get playerName => 'Afspillernavn';
@@ -1748,6 +1752,9 @@ extension on TranslationsDa {
'messages.logsUploadFailed' => 'Kunne ikke uploade logs',
'messages.logId' => 'Log-ID',
'subtitlingStyling.stylingOptions' => 'Stilindstillinger',
'subtitlingStyling.text' => 'Tekst',
'subtitlingStyling.border' => 'Kant',
'subtitlingStyling.background' => 'Baggrund',
'subtitlingStyling.fontSize' => 'Skriftstørrelse',
'subtitlingStyling.textColor' => 'Tekstfarve',
'subtitlingStyling.borderSize' => 'Kantstørrelse',
@@ -1852,11 +1859,11 @@ extension on TranslationsDa {
'serverSelection.failedToLoadServers' => ({required Object error}) => 'Kunne ikke indlæse servere: ${error}',
'hubDetail.title' => 'Titel',
'hubDetail.releaseYear' => 'Udgivelsesår',
_ => null,
} ?? switch (path) {
'hubDetail.dateAdded' => 'Tilføjelsesdato',
'hubDetail.rating' => 'Bedømmelse',
'hubDetail.noItemsFound' => 'Ingen elementer fundet',
_ => null,
} ?? switch (path) {
'logs.clearLogs' => 'Ryd logs',
'logs.copyLogs' => 'Kopiér logs',
'logs.uploadLogs' => 'Upload logs',
@@ -2108,6 +2115,7 @@ extension on TranslationsDa {
'externalPlayer.useExternalPlayer' => 'Brug ekstern afspiller',
'externalPlayer.useExternalPlayerDescription' => 'Åbn videoer i en ekstern app i stedet for den indbyggede afspiller',
'externalPlayer.selectPlayer' => 'Vælg afspiller',
'externalPlayer.customPlayers' => 'Brugerdefinerede afspillere',
'externalPlayer.systemDefault' => 'Systemstandard',
'externalPlayer.addCustomPlayer' => 'Tilføj brugerdefineret afspiller',
'externalPlayer.playerName' => 'Afspillernavn',
+10 -2
View File
@@ -600,6 +600,9 @@ class _TranslationsSubtitlingStylingDe implements TranslationsSubtitlingStylingE
// Translations
@override String get stylingOptions => 'Stiloptionen';
@override String get text => 'Text';
@override String get border => 'Rahmen';
@override String get background => 'Hintergrund';
@override String get fontSize => 'Schriftgröße';
@override String get textColor => 'Textfarbe';
@override String get borderSize => 'Rahmengröße';
@@ -1063,6 +1066,7 @@ class _TranslationsExternalPlayerDe implements TranslationsExternalPlayerEn {
@override String get useExternalPlayer => 'Externen Player verwenden';
@override String get useExternalPlayerDescription => 'Videos in einer externen App statt im integrierten Player öffnen';
@override String get selectPlayer => 'Player auswählen';
@override String get customPlayers => 'Benutzerdefinierte Player';
@override String get systemDefault => 'Systemstandard';
@override String get addCustomPlayer => 'Benutzerdefinierten Player hinzufügen';
@override String get playerName => 'Playername';
@@ -1748,6 +1752,9 @@ extension on TranslationsDe {
'messages.logsUploadFailed' => 'Protokolle konnten nicht hochgeladen werden',
'messages.logId' => 'Protokoll-ID',
'subtitlingStyling.stylingOptions' => 'Stiloptionen',
'subtitlingStyling.text' => 'Text',
'subtitlingStyling.border' => 'Rahmen',
'subtitlingStyling.background' => 'Hintergrund',
'subtitlingStyling.fontSize' => 'Schriftgröße',
'subtitlingStyling.textColor' => 'Textfarbe',
'subtitlingStyling.borderSize' => 'Rahmengröße',
@@ -1852,11 +1859,11 @@ extension on TranslationsDe {
'serverSelection.failedToLoadServers' => ({required Object error}) => 'Server konnten nicht geladen werden: ${error}',
'hubDetail.title' => 'Titel',
'hubDetail.releaseYear' => 'Erscheinungsjahr',
_ => null,
} ?? switch (path) {
'hubDetail.dateAdded' => 'Hinzugefügt am',
'hubDetail.rating' => 'Bewertung',
'hubDetail.noItemsFound' => 'Keine Elemente gefunden',
_ => null,
} ?? switch (path) {
'logs.clearLogs' => 'Protokolle löschen',
'logs.copyLogs' => 'Protokolle kopieren',
'logs.uploadLogs' => 'Protokolle hochladen',
@@ -2108,6 +2115,7 @@ extension on TranslationsDe {
'externalPlayer.useExternalPlayer' => 'Externen Player verwenden',
'externalPlayer.useExternalPlayerDescription' => 'Videos in einer externen App statt im integrierten Player öffnen',
'externalPlayer.selectPlayer' => 'Player auswählen',
'externalPlayer.customPlayers' => 'Benutzerdefinierte Player',
'externalPlayer.systemDefault' => 'Systemstandard',
'externalPlayer.addCustomPlayer' => 'Benutzerdefinierten Player hinzufügen',
'externalPlayer.playerName' => 'Playername',
+18 -2
View File
@@ -1364,6 +1364,15 @@ class TranslationsSubtitlingStylingEn {
/// en: 'Styling Options'
String get stylingOptions => 'Styling Options';
/// en: 'Text'
String get text => 'Text';
/// en: 'Border'
String get border => 'Border';
/// en: 'Background'
String get background => 'Background';
/// en: 'Font Size'
String get fontSize => 'Font Size';
@@ -2385,6 +2394,9 @@ class TranslationsExternalPlayerEn {
/// en: 'Select Player'
String get selectPlayer => 'Select Player';
/// en: 'Custom Players'
String get customPlayers => 'Custom Players';
/// en: 'System Default'
String get systemDefault => 'System Default';
@@ -3447,6 +3459,9 @@ extension on Translations {
'messages.logsUploadFailed' => 'Failed to upload logs',
'messages.logId' => 'Log ID',
'subtitlingStyling.stylingOptions' => 'Styling Options',
'subtitlingStyling.text' => 'Text',
'subtitlingStyling.border' => 'Border',
'subtitlingStyling.background' => 'Background',
'subtitlingStyling.fontSize' => 'Font Size',
'subtitlingStyling.textColor' => 'Text Color',
'subtitlingStyling.borderSize' => 'Border Size',
@@ -3551,11 +3566,11 @@ extension on Translations {
'serverSelection.failedToLoadServers' => ({required Object error}) => 'Failed to load servers: ${error}',
'hubDetail.title' => 'Title',
'hubDetail.releaseYear' => 'Release Year',
_ => null,
} ?? switch (path) {
'hubDetail.dateAdded' => 'Date Added',
'hubDetail.rating' => 'Rating',
'hubDetail.noItemsFound' => 'No items found',
_ => null,
} ?? switch (path) {
'logs.clearLogs' => 'Clear Logs',
'logs.copyLogs' => 'Copy Logs',
'logs.uploadLogs' => 'Upload Logs',
@@ -3807,6 +3822,7 @@ extension on Translations {
'externalPlayer.useExternalPlayer' => 'Use External Player',
'externalPlayer.useExternalPlayerDescription' => 'Open videos in an external app instead of the built-in player',
'externalPlayer.selectPlayer' => 'Select Player',
'externalPlayer.customPlayers' => 'Custom Players',
'externalPlayer.systemDefault' => 'System Default',
'externalPlayer.addCustomPlayer' => 'Add Custom Player',
'externalPlayer.playerName' => 'Player Name',
+10 -2
View File
@@ -600,6 +600,9 @@ class _TranslationsSubtitlingStylingEs implements TranslationsSubtitlingStylingE
// Translations
@override String get stylingOptions => 'Opciones de Estilo';
@override String get text => 'Texto';
@override String get border => 'Borde';
@override String get background => 'Fondo';
@override String get fontSize => 'Tamaño de Fuente';
@override String get textColor => 'Color de Texto';
@override String get borderSize => 'Tamaño de Borde';
@@ -1063,6 +1066,7 @@ class _TranslationsExternalPlayerEs implements TranslationsExternalPlayerEn {
@override String get useExternalPlayer => 'Usar reproductor externo';
@override String get useExternalPlayerDescription => 'Abrir vídeos en una app externa en lugar del reproductor integrado';
@override String get selectPlayer => 'Seleccionar reproductor';
@override String get customPlayers => 'Reproductores personalizados';
@override String get systemDefault => 'Predeterminado del sistema';
@override String get addCustomPlayer => 'Añadir reproductor personalizado';
@override String get playerName => 'Nombre del reproductor';
@@ -1748,6 +1752,9 @@ extension on TranslationsEs {
'messages.logsUploadFailed' => 'Error al subir registros',
'messages.logId' => 'ID de registro',
'subtitlingStyling.stylingOptions' => 'Opciones de Estilo',
'subtitlingStyling.text' => 'Texto',
'subtitlingStyling.border' => 'Borde',
'subtitlingStyling.background' => 'Fondo',
'subtitlingStyling.fontSize' => 'Tamaño de Fuente',
'subtitlingStyling.textColor' => 'Color de Texto',
'subtitlingStyling.borderSize' => 'Tamaño de Borde',
@@ -1852,11 +1859,11 @@ extension on TranslationsEs {
'serverSelection.failedToLoadServers' => ({required Object error}) => 'Error al cargar servidores: ${error}',
'hubDetail.title' => 'Título',
'hubDetail.releaseYear' => 'Año de lanzamiento',
_ => null,
} ?? switch (path) {
'hubDetail.dateAdded' => 'Añadido el',
'hubDetail.rating' => 'Calificación',
'hubDetail.noItemsFound' => 'No se encontraron elementos',
_ => null,
} ?? switch (path) {
'logs.clearLogs' => 'Borrar Logs',
'logs.copyLogs' => 'Copiar Logs',
'logs.uploadLogs' => 'Subir registros',
@@ -2108,6 +2115,7 @@ extension on TranslationsEs {
'externalPlayer.useExternalPlayer' => 'Usar reproductor externo',
'externalPlayer.useExternalPlayerDescription' => 'Abrir vídeos en una app externa en lugar del reproductor integrado',
'externalPlayer.selectPlayer' => 'Seleccionar reproductor',
'externalPlayer.customPlayers' => 'Reproductores personalizados',
'externalPlayer.systemDefault' => 'Predeterminado del sistema',
'externalPlayer.addCustomPlayer' => 'Añadir reproductor personalizado',
'externalPlayer.playerName' => 'Nombre del reproductor',
+10 -2
View File
@@ -600,6 +600,9 @@ class _TranslationsSubtitlingStylingFr implements TranslationsSubtitlingStylingE
// Translations
@override String get stylingOptions => 'Options de style';
@override String get text => 'Texte';
@override String get border => 'Bordure';
@override String get background => 'Arrière-plan';
@override String get fontSize => 'Taille de la police';
@override String get textColor => 'Couleur du texte';
@override String get borderSize => 'Taille de la bordure';
@@ -1063,6 +1066,7 @@ class _TranslationsExternalPlayerFr implements TranslationsExternalPlayerEn {
@override String get useExternalPlayer => 'Utiliser un lecteur externe';
@override String get useExternalPlayerDescription => 'Ouvrir les vidéos dans une application externe au lieu du lecteur intégré';
@override String get selectPlayer => 'Sélectionner le lecteur';
@override String get customPlayers => 'Lecteurs personnalisés';
@override String get systemDefault => 'Par défaut du système';
@override String get addCustomPlayer => 'Ajouter un lecteur personnalisé';
@override String get playerName => 'Nom du lecteur';
@@ -1748,6 +1752,9 @@ extension on TranslationsFr {
'messages.logsUploadFailed' => 'Échec de l\'envoi des logs',
'messages.logId' => 'ID du log',
'subtitlingStyling.stylingOptions' => 'Options de style',
'subtitlingStyling.text' => 'Texte',
'subtitlingStyling.border' => 'Bordure',
'subtitlingStyling.background' => 'Arrière-plan',
'subtitlingStyling.fontSize' => 'Taille de la police',
'subtitlingStyling.textColor' => 'Couleur du texte',
'subtitlingStyling.borderSize' => 'Taille de la bordure',
@@ -1852,11 +1859,11 @@ extension on TranslationsFr {
'serverSelection.failedToLoadServers' => ({required Object error}) => 'Échec du chargement des serveurs: ${error}',
'hubDetail.title' => 'Titre',
'hubDetail.releaseYear' => 'Année de sortie',
_ => null,
} ?? switch (path) {
'hubDetail.dateAdded' => 'Date d\'ajout',
'hubDetail.rating' => 'Évaluation',
'hubDetail.noItemsFound' => 'Aucun élément trouvé',
_ => null,
} ?? switch (path) {
'logs.clearLogs' => 'Effacer les logs',
'logs.copyLogs' => 'Copier les logs',
'logs.uploadLogs' => 'Envoyer les logs',
@@ -2108,6 +2115,7 @@ extension on TranslationsFr {
'externalPlayer.useExternalPlayer' => 'Utiliser un lecteur externe',
'externalPlayer.useExternalPlayerDescription' => 'Ouvrir les vidéos dans une application externe au lieu du lecteur intégré',
'externalPlayer.selectPlayer' => 'Sélectionner le lecteur',
'externalPlayer.customPlayers' => 'Lecteurs personnalisés',
'externalPlayer.systemDefault' => 'Par défaut du système',
'externalPlayer.addCustomPlayer' => 'Ajouter un lecteur personnalisé',
'externalPlayer.playerName' => 'Nom du lecteur',
+10 -2
View File
@@ -600,6 +600,9 @@ class _TranslationsSubtitlingStylingIt implements TranslationsSubtitlingStylingE
// Translations
@override String get stylingOptions => 'Opzioni stile';
@override String get text => 'Testo';
@override String get border => 'Bordo';
@override String get background => 'Sfondo';
@override String get fontSize => 'Dimensione';
@override String get textColor => 'Colore testo';
@override String get borderSize => 'Dimensione bordo';
@@ -1063,6 +1066,7 @@ class _TranslationsExternalPlayerIt implements TranslationsExternalPlayerEn {
@override String get useExternalPlayer => 'Usa lettore esterno';
@override String get useExternalPlayerDescription => 'Apri i video in un\'app esterna invece del lettore integrato';
@override String get selectPlayer => 'Seleziona lettore';
@override String get customPlayers => 'Lettori personalizzati';
@override String get systemDefault => 'Predefinito di sistema';
@override String get addCustomPlayer => 'Aggiungi lettore personalizzato';
@override String get playerName => 'Nome lettore';
@@ -1748,6 +1752,9 @@ extension on TranslationsIt {
'messages.logsUploadFailed' => 'Caricamento log fallito',
'messages.logId' => 'ID log',
'subtitlingStyling.stylingOptions' => 'Opzioni stile',
'subtitlingStyling.text' => 'Testo',
'subtitlingStyling.border' => 'Bordo',
'subtitlingStyling.background' => 'Sfondo',
'subtitlingStyling.fontSize' => 'Dimensione',
'subtitlingStyling.textColor' => 'Colore testo',
'subtitlingStyling.borderSize' => 'Dimensione bordo',
@@ -1852,11 +1859,11 @@ extension on TranslationsIt {
'serverSelection.failedToLoadServers' => ({required Object error}) => 'Impossibile caricare i server: ${error}',
'hubDetail.title' => 'Titolo',
'hubDetail.releaseYear' => 'Anno rilascio',
_ => null,
} ?? switch (path) {
'hubDetail.dateAdded' => 'Data aggiunta',
'hubDetail.rating' => 'Valutazione',
'hubDetail.noItemsFound' => 'Nessun elemento trovato',
_ => null,
} ?? switch (path) {
'logs.clearLogs' => 'Cancella log',
'logs.copyLogs' => 'Copia log',
'logs.uploadLogs' => 'Carica log',
@@ -2108,6 +2115,7 @@ extension on TranslationsIt {
'externalPlayer.useExternalPlayer' => 'Usa lettore esterno',
'externalPlayer.useExternalPlayerDescription' => 'Apri i video in un\'app esterna invece del lettore integrato',
'externalPlayer.selectPlayer' => 'Seleziona lettore',
'externalPlayer.customPlayers' => 'Lettori personalizzati',
'externalPlayer.systemDefault' => 'Predefinito di sistema',
'externalPlayer.addCustomPlayer' => 'Aggiungi lettore personalizzato',
'externalPlayer.playerName' => 'Nome lettore',
+10 -2
View File
@@ -600,6 +600,9 @@ class _TranslationsSubtitlingStylingJa implements TranslationsSubtitlingStylingE
// Translations
@override String get stylingOptions => 'スタイルオプション';
@override String get text => 'テキスト';
@override String get border => '枠線';
@override String get background => '背景';
@override String get fontSize => 'フォントサイズ';
@override String get textColor => 'テキストの色';
@override String get borderSize => '枠線サイズ';
@@ -1063,6 +1066,7 @@ class _TranslationsExternalPlayerJa implements TranslationsExternalPlayerEn {
@override String get useExternalPlayer => '外部プレーヤーを使用';
@override String get useExternalPlayerDescription => '内蔵プレーヤーの代わりに外部アプリで動画を開く';
@override String get selectPlayer => 'プレーヤーを選択';
@override String get customPlayers => 'カスタムプレーヤー';
@override String get systemDefault => 'システムデフォルト';
@override String get addCustomPlayer => 'カスタムプレーヤーを追加';
@override String get playerName => 'プレーヤー名';
@@ -1748,6 +1752,9 @@ extension on TranslationsJa {
'messages.logsUploadFailed' => 'ログのアップロードに失敗しました',
'messages.logId' => 'ログID',
'subtitlingStyling.stylingOptions' => 'スタイルオプション',
'subtitlingStyling.text' => 'テキスト',
'subtitlingStyling.border' => '枠線',
'subtitlingStyling.background' => '背景',
'subtitlingStyling.fontSize' => 'フォントサイズ',
'subtitlingStyling.textColor' => 'テキストの色',
'subtitlingStyling.borderSize' => '枠線サイズ',
@@ -1852,11 +1859,11 @@ extension on TranslationsJa {
'serverSelection.failedToLoadServers' => ({required Object error}) => 'サーバーの読み込みに失敗しました: ${error}',
'hubDetail.title' => 'タイトル',
'hubDetail.releaseYear' => '公開年',
_ => null,
} ?? switch (path) {
'hubDetail.dateAdded' => '追加日',
'hubDetail.rating' => '評価',
'hubDetail.noItemsFound' => 'アイテムが見つかりません',
_ => null,
} ?? switch (path) {
'logs.clearLogs' => 'ログをクリア',
'logs.copyLogs' => 'ログをコピー',
'logs.uploadLogs' => 'ログをアップロード',
@@ -2108,6 +2115,7 @@ extension on TranslationsJa {
'externalPlayer.useExternalPlayer' => '外部プレーヤーを使用',
'externalPlayer.useExternalPlayerDescription' => '内蔵プレーヤーの代わりに外部アプリで動画を開く',
'externalPlayer.selectPlayer' => 'プレーヤーを選択',
'externalPlayer.customPlayers' => 'カスタムプレーヤー',
'externalPlayer.systemDefault' => 'システムデフォルト',
'externalPlayer.addCustomPlayer' => 'カスタムプレーヤーを追加',
'externalPlayer.playerName' => 'プレーヤー名',
+10 -2
View File
@@ -600,6 +600,9 @@ class _TranslationsSubtitlingStylingKo implements TranslationsSubtitlingStylingE
// Translations
@override String get stylingOptions => '스타일 옵션';
@override String get text => '텍스트';
@override String get border => '테두리';
@override String get background => '배경';
@override String get fontSize => '글자 크기';
@override String get textColor => '텍스트 색상';
@override String get borderSize => '테두리 크기';
@@ -1063,6 +1066,7 @@ class _TranslationsExternalPlayerKo implements TranslationsExternalPlayerEn {
@override String get useExternalPlayer => '외부 플레이어 사용';
@override String get useExternalPlayerDescription => '내장 플레이어 대신 외부 앱에서 동영상 열기';
@override String get selectPlayer => '플레이어 선택';
@override String get customPlayers => '사용자 정의 플레이어';
@override String get systemDefault => '시스템 기본값';
@override String get addCustomPlayer => '사용자 정의 플레이어 추가';
@override String get playerName => '플레이어 이름';
@@ -1748,6 +1752,9 @@ extension on TranslationsKo {
'messages.logsUploadFailed' => '로그 업로드 실패',
'messages.logId' => '로그 ID',
'subtitlingStyling.stylingOptions' => '스타일 옵션',
'subtitlingStyling.text' => '텍스트',
'subtitlingStyling.border' => '테두리',
'subtitlingStyling.background' => '배경',
'subtitlingStyling.fontSize' => '글자 크기',
'subtitlingStyling.textColor' => '텍스트 색상',
'subtitlingStyling.borderSize' => '테두리 크기',
@@ -1852,11 +1859,11 @@ extension on TranslationsKo {
'serverSelection.failedToLoadServers' => ({required Object error}) => '서버를 로드할 수 없습니다: ${error}',
'hubDetail.title' => '제목',
'hubDetail.releaseYear' => '출시 연도',
_ => null,
} ?? switch (path) {
'hubDetail.dateAdded' => '추가 날짜',
'hubDetail.rating' => '평점',
'hubDetail.noItemsFound' => '항목이 없습니다',
_ => null,
} ?? switch (path) {
'logs.clearLogs' => '로그 지우기',
'logs.copyLogs' => '로그 복사',
'logs.uploadLogs' => '로그 업로드',
@@ -2108,6 +2115,7 @@ extension on TranslationsKo {
'externalPlayer.useExternalPlayer' => '외부 플레이어 사용',
'externalPlayer.useExternalPlayerDescription' => '내장 플레이어 대신 외부 앱에서 동영상 열기',
'externalPlayer.selectPlayer' => '플레이어 선택',
'externalPlayer.customPlayers' => '사용자 정의 플레이어',
'externalPlayer.systemDefault' => '시스템 기본값',
'externalPlayer.addCustomPlayer' => '사용자 정의 플레이어 추가',
'externalPlayer.playerName' => '플레이어 이름',
+10 -2
View File
@@ -600,6 +600,9 @@ class _TranslationsSubtitlingStylingNb implements TranslationsSubtitlingStylingE
// Translations
@override String get stylingOptions => 'Stilalternativer';
@override String get text => 'Tekst';
@override String get border => 'Kantlinje';
@override String get background => 'Bakgrunn';
@override String get fontSize => 'Skriftstørrelse';
@override String get textColor => 'Tekstfarge';
@override String get borderSize => 'Kantstørrelse';
@@ -1063,6 +1066,7 @@ class _TranslationsExternalPlayerNb implements TranslationsExternalPlayerEn {
@override String get useExternalPlayer => 'Bruk ekstern spiller';
@override String get useExternalPlayerDescription => 'Åpne videoer i en ekstern app i stedet for den innebygde spilleren';
@override String get selectPlayer => 'Velg spiller';
@override String get customPlayers => 'Egendefinerte spillere';
@override String get systemDefault => 'Systemstandard';
@override String get addCustomPlayer => 'Legg til egendefinert spiller';
@override String get playerName => 'Spillernavn';
@@ -1748,6 +1752,9 @@ extension on TranslationsNb {
'messages.logsUploadFailed' => 'Kunne ikke laste opp logger',
'messages.logId' => 'Logg-ID',
'subtitlingStyling.stylingOptions' => 'Stilalternativer',
'subtitlingStyling.text' => 'Tekst',
'subtitlingStyling.border' => 'Kantlinje',
'subtitlingStyling.background' => 'Bakgrunn',
'subtitlingStyling.fontSize' => 'Skriftstørrelse',
'subtitlingStyling.textColor' => 'Tekstfarge',
'subtitlingStyling.borderSize' => 'Kantstørrelse',
@@ -1852,11 +1859,11 @@ extension on TranslationsNb {
'serverSelection.failedToLoadServers' => ({required Object error}) => 'Kunne ikke laste servere: ${error}',
'hubDetail.title' => 'Tittel',
'hubDetail.releaseYear' => 'Utgivelsesår',
_ => null,
} ?? switch (path) {
'hubDetail.dateAdded' => 'Dato lagt til',
'hubDetail.rating' => 'Vurdering',
'hubDetail.noItemsFound' => 'Ingen elementer funnet',
_ => null,
} ?? switch (path) {
'logs.clearLogs' => 'Tøm logger',
'logs.copyLogs' => 'Kopier logger',
'logs.uploadLogs' => 'Last opp logger',
@@ -2108,6 +2115,7 @@ extension on TranslationsNb {
'externalPlayer.useExternalPlayer' => 'Bruk ekstern spiller',
'externalPlayer.useExternalPlayerDescription' => 'Åpne videoer i en ekstern app i stedet for den innebygde spilleren',
'externalPlayer.selectPlayer' => 'Velg spiller',
'externalPlayer.customPlayers' => 'Egendefinerte spillere',
'externalPlayer.systemDefault' => 'Systemstandard',
'externalPlayer.addCustomPlayer' => 'Legg til egendefinert spiller',
'externalPlayer.playerName' => 'Spillernavn',
+10 -2
View File
@@ -600,6 +600,9 @@ class _TranslationsSubtitlingStylingNl implements TranslationsSubtitlingStylingE
// Translations
@override String get stylingOptions => 'Opmaak opties';
@override String get text => 'Tekst';
@override String get border => 'Rand';
@override String get background => 'Achtergrond';
@override String get fontSize => 'Lettergrootte';
@override String get textColor => 'Tekstkleur';
@override String get borderSize => 'Rand grootte';
@@ -1063,6 +1066,7 @@ class _TranslationsExternalPlayerNl implements TranslationsExternalPlayerEn {
@override String get useExternalPlayer => 'Externe speler gebruiken';
@override String get useExternalPlayerDescription => 'Open video\'s in een externe app in plaats van de ingebouwde speler';
@override String get selectPlayer => 'Speler selecteren';
@override String get customPlayers => 'Aangepaste spelers';
@override String get systemDefault => 'Systeemstandaard';
@override String get addCustomPlayer => 'Aangepaste speler toevoegen';
@override String get playerName => 'Spelernaam';
@@ -1748,6 +1752,9 @@ extension on TranslationsNl {
'messages.logsUploadFailed' => 'Uploaden van logs mislukt',
'messages.logId' => 'Log-ID',
'subtitlingStyling.stylingOptions' => 'Opmaak opties',
'subtitlingStyling.text' => 'Tekst',
'subtitlingStyling.border' => 'Rand',
'subtitlingStyling.background' => 'Achtergrond',
'subtitlingStyling.fontSize' => 'Lettergrootte',
'subtitlingStyling.textColor' => 'Tekstkleur',
'subtitlingStyling.borderSize' => 'Rand grootte',
@@ -1852,11 +1859,11 @@ extension on TranslationsNl {
'serverSelection.failedToLoadServers' => ({required Object error}) => 'Kon servers niet laden: ${error}',
'hubDetail.title' => 'Titel',
'hubDetail.releaseYear' => 'Uitgavejaar',
_ => null,
} ?? switch (path) {
'hubDetail.dateAdded' => 'Datum toegevoegd',
'hubDetail.rating' => 'Beoordeling',
'hubDetail.noItemsFound' => 'Geen items gevonden',
_ => null,
} ?? switch (path) {
'logs.clearLogs' => 'Wis logs',
'logs.copyLogs' => 'Kopieer logs',
'logs.uploadLogs' => 'Logs uploaden',
@@ -2108,6 +2115,7 @@ extension on TranslationsNl {
'externalPlayer.useExternalPlayer' => 'Externe speler gebruiken',
'externalPlayer.useExternalPlayerDescription' => 'Open video\'s in een externe app in plaats van de ingebouwde speler',
'externalPlayer.selectPlayer' => 'Speler selecteren',
'externalPlayer.customPlayers' => 'Aangepaste spelers',
'externalPlayer.systemDefault' => 'Systeemstandaard',
'externalPlayer.addCustomPlayer' => 'Aangepaste speler toevoegen',
'externalPlayer.playerName' => 'Spelernaam',
+10 -2
View File
@@ -600,6 +600,9 @@ class _TranslationsSubtitlingStylingPl implements TranslationsSubtitlingStylingE
// Translations
@override String get stylingOptions => 'Opcje stylu';
@override String get text => 'Tekst';
@override String get border => 'Obramowanie';
@override String get background => 'Tło';
@override String get fontSize => 'Rozmiar czcionki';
@override String get textColor => 'Kolor tekstu';
@override String get borderSize => 'Rozmiar obramowania';
@@ -1063,6 +1066,7 @@ class _TranslationsExternalPlayerPl implements TranslationsExternalPlayerEn {
@override String get useExternalPlayer => 'Użyj zewnętrznego odtwarzacza';
@override String get useExternalPlayerDescription => 'Otwieraj wideo w zewnętrznej aplikacji zamiast wbudowanego odtwarzacza';
@override String get selectPlayer => 'Wybierz odtwarzacz';
@override String get customPlayers => 'Niestandardowe odtwarzacze';
@override String get systemDefault => 'Domyślny systemowy';
@override String get addCustomPlayer => 'Dodaj niestandardowy odtwarzacz';
@override String get playerName => 'Nazwa odtwarzacza';
@@ -1748,6 +1752,9 @@ extension on TranslationsPl {
'messages.logsUploadFailed' => 'Nie udało się przesłać logów',
'messages.logId' => 'ID logu',
'subtitlingStyling.stylingOptions' => 'Opcje stylu',
'subtitlingStyling.text' => 'Tekst',
'subtitlingStyling.border' => 'Obramowanie',
'subtitlingStyling.background' => 'Tło',
'subtitlingStyling.fontSize' => 'Rozmiar czcionki',
'subtitlingStyling.textColor' => 'Kolor tekstu',
'subtitlingStyling.borderSize' => 'Rozmiar obramowania',
@@ -1852,11 +1859,11 @@ extension on TranslationsPl {
'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.dateAdded' => 'Data dodania',
'hubDetail.rating' => 'Ocena',
'hubDetail.noItemsFound' => 'Nie znaleziono elementów',
_ => null,
} ?? switch (path) {
'logs.clearLogs' => 'Wyczyść logi',
'logs.copyLogs' => 'Kopiuj logi',
'logs.uploadLogs' => 'Prześlij logi',
@@ -2108,6 +2115,7 @@ extension on TranslationsPl {
'externalPlayer.useExternalPlayer' => 'Użyj zewnętrznego odtwarzacza',
'externalPlayer.useExternalPlayerDescription' => 'Otwieraj wideo w zewnętrznej aplikacji zamiast wbudowanego odtwarzacza',
'externalPlayer.selectPlayer' => 'Wybierz odtwarzacz',
'externalPlayer.customPlayers' => 'Niestandardowe odtwarzacze',
'externalPlayer.systemDefault' => 'Domyślny systemowy',
'externalPlayer.addCustomPlayer' => 'Dodaj niestandardowy odtwarzacz',
'externalPlayer.playerName' => 'Nazwa odtwarzacza',
+10 -2
View File
@@ -600,6 +600,9 @@ class _TranslationsSubtitlingStylingPt implements TranslationsSubtitlingStylingE
// Translations
@override String get stylingOptions => 'Opções de Estilo';
@override String get text => 'Texto';
@override String get border => 'Borda';
@override String get background => 'Fundo';
@override String get fontSize => 'Tamanho da Fonte';
@override String get textColor => 'Cor do Texto';
@override String get borderSize => 'Tamanho da Borda';
@@ -1063,6 +1066,7 @@ class _TranslationsExternalPlayerPt implements TranslationsExternalPlayerEn {
@override String get useExternalPlayer => 'Usar Player Externo';
@override String get useExternalPlayerDescription => 'Abrir vídeos em um app externo em vez do player integrado';
@override String get selectPlayer => 'Selecionar Player';
@override String get customPlayers => 'Players Personalizados';
@override String get systemDefault => 'Padrão do Sistema';
@override String get addCustomPlayer => 'Adicionar Player Personalizado';
@override String get playerName => 'Nome do Player';
@@ -1748,6 +1752,9 @@ extension on TranslationsPt {
'messages.logsUploadFailed' => 'Falha ao enviar logs',
'messages.logId' => 'ID do Log',
'subtitlingStyling.stylingOptions' => 'Opções de Estilo',
'subtitlingStyling.text' => 'Texto',
'subtitlingStyling.border' => 'Borda',
'subtitlingStyling.background' => 'Fundo',
'subtitlingStyling.fontSize' => 'Tamanho da Fonte',
'subtitlingStyling.textColor' => 'Cor do Texto',
'subtitlingStyling.borderSize' => 'Tamanho da Borda',
@@ -1852,11 +1859,11 @@ extension on TranslationsPt {
'serverSelection.failedToLoadServers' => ({required Object error}) => 'Falha ao carregar servidores: ${error}',
'hubDetail.title' => 'Título',
'hubDetail.releaseYear' => 'Ano de Lançamento',
_ => null,
} ?? switch (path) {
'hubDetail.dateAdded' => 'Data de Adição',
'hubDetail.rating' => 'Avaliação',
'hubDetail.noItemsFound' => 'Nenhum item encontrado',
_ => null,
} ?? switch (path) {
'logs.clearLogs' => 'Limpar Logs',
'logs.copyLogs' => 'Copiar Logs',
'logs.uploadLogs' => 'Enviar Logs',
@@ -2108,6 +2115,7 @@ extension on TranslationsPt {
'externalPlayer.useExternalPlayer' => 'Usar Player Externo',
'externalPlayer.useExternalPlayerDescription' => 'Abrir vídeos em um app externo em vez do player integrado',
'externalPlayer.selectPlayer' => 'Selecionar Player',
'externalPlayer.customPlayers' => 'Players Personalizados',
'externalPlayer.systemDefault' => 'Padrão do Sistema',
'externalPlayer.addCustomPlayer' => 'Adicionar Player Personalizado',
'externalPlayer.playerName' => 'Nome do Player',
+10 -2
View File
@@ -600,6 +600,9 @@ class _TranslationsSubtitlingStylingRu implements TranslationsSubtitlingStylingE
// Translations
@override String get stylingOptions => 'Параметры стиля';
@override String get text => 'Текст';
@override String get border => 'Обводка';
@override String get background => 'Фон';
@override String get fontSize => 'Размер шрифта';
@override String get textColor => 'Цвет текста';
@override String get borderSize => 'Размер обводки';
@@ -1063,6 +1066,7 @@ class _TranslationsExternalPlayerRu implements TranslationsExternalPlayerEn {
@override String get useExternalPlayer => 'Использовать внешний плеер';
@override String get useExternalPlayerDescription => 'Открывать видео во внешнем приложении вместо встроенного плеера';
@override String get selectPlayer => 'Выбрать плеер';
@override String get customPlayers => 'Свои плееры';
@override String get systemDefault => 'Системный по умолчанию';
@override String get addCustomPlayer => 'Добавить свой плеер';
@override String get playerName => 'Название плеера';
@@ -1748,6 +1752,9 @@ extension on TranslationsRu {
'messages.logsUploadFailed' => 'Не удалось загрузить логи',
'messages.logId' => 'ID лога',
'subtitlingStyling.stylingOptions' => 'Параметры стиля',
'subtitlingStyling.text' => 'Текст',
'subtitlingStyling.border' => 'Обводка',
'subtitlingStyling.background' => 'Фон',
'subtitlingStyling.fontSize' => 'Размер шрифта',
'subtitlingStyling.textColor' => 'Цвет текста',
'subtitlingStyling.borderSize' => 'Размер обводки',
@@ -1852,11 +1859,11 @@ extension on TranslationsRu {
'serverSelection.failedToLoadServers' => ({required Object error}) => 'Не удалось загрузить серверы: ${error}',
'hubDetail.title' => 'Название',
'hubDetail.releaseYear' => 'Год выпуска',
_ => null,
} ?? switch (path) {
'hubDetail.dateAdded' => 'Дата добавления',
'hubDetail.rating' => 'Рейтинг',
'hubDetail.noItemsFound' => 'Элементы не найдены',
_ => null,
} ?? switch (path) {
'logs.clearLogs' => 'Очистить логи',
'logs.copyLogs' => 'Скопировать логи',
'logs.uploadLogs' => 'Загрузить логи',
@@ -2108,6 +2115,7 @@ extension on TranslationsRu {
'externalPlayer.useExternalPlayer' => 'Использовать внешний плеер',
'externalPlayer.useExternalPlayerDescription' => 'Открывать видео во внешнем приложении вместо встроенного плеера',
'externalPlayer.selectPlayer' => 'Выбрать плеер',
'externalPlayer.customPlayers' => 'Свои плееры',
'externalPlayer.systemDefault' => 'Системный по умолчанию',
'externalPlayer.addCustomPlayer' => 'Добавить свой плеер',
'externalPlayer.playerName' => 'Название плеера',
+10 -2
View File
@@ -600,6 +600,9 @@ class _TranslationsSubtitlingStylingSv implements TranslationsSubtitlingStylingE
// Translations
@override String get stylingOptions => 'Stilalternativ';
@override String get text => 'Text';
@override String get border => 'Kantlinje';
@override String get background => 'Bakgrund';
@override String get fontSize => 'Teckenstorlek';
@override String get textColor => 'Textfärg';
@override String get borderSize => 'Kantstorlek';
@@ -1063,6 +1066,7 @@ class _TranslationsExternalPlayerSv implements TranslationsExternalPlayerEn {
@override String get useExternalPlayer => 'Använd extern spelare';
@override String get useExternalPlayerDescription => 'Öppna videor i en extern app istället för den inbyggda spelaren';
@override String get selectPlayer => 'Välj spelare';
@override String get customPlayers => 'Anpassade spelare';
@override String get systemDefault => 'Systemstandard';
@override String get addCustomPlayer => 'Lägg till anpassad spelare';
@override String get playerName => 'Spelarnamn';
@@ -1748,6 +1752,9 @@ extension on TranslationsSv {
'messages.logsUploadFailed' => 'Uppladdning av loggar misslyckades',
'messages.logId' => 'Logg-ID',
'subtitlingStyling.stylingOptions' => 'Stilalternativ',
'subtitlingStyling.text' => 'Text',
'subtitlingStyling.border' => 'Kantlinje',
'subtitlingStyling.background' => 'Bakgrund',
'subtitlingStyling.fontSize' => 'Teckenstorlek',
'subtitlingStyling.textColor' => 'Textfärg',
'subtitlingStyling.borderSize' => 'Kantstorlek',
@@ -1852,11 +1859,11 @@ extension on TranslationsSv {
'serverSelection.failedToLoadServers' => ({required Object error}) => 'Misslyckades att ladda servrar: ${error}',
'hubDetail.title' => 'Titel',
'hubDetail.releaseYear' => 'Utgivningsår',
_ => null,
} ?? switch (path) {
'hubDetail.dateAdded' => 'Datum tillagd',
'hubDetail.rating' => 'Betyg',
'hubDetail.noItemsFound' => 'Inga objekt hittades',
_ => null,
} ?? switch (path) {
'logs.clearLogs' => 'Rensa loggar',
'logs.copyLogs' => 'Kopiera loggar',
'logs.uploadLogs' => 'Ladda upp loggar',
@@ -2108,6 +2115,7 @@ extension on TranslationsSv {
'externalPlayer.useExternalPlayer' => 'Använd extern spelare',
'externalPlayer.useExternalPlayerDescription' => 'Öppna videor i en extern app istället för den inbyggda spelaren',
'externalPlayer.selectPlayer' => 'Välj spelare',
'externalPlayer.customPlayers' => 'Anpassade spelare',
'externalPlayer.systemDefault' => 'Systemstandard',
'externalPlayer.addCustomPlayer' => 'Lägg till anpassad spelare',
'externalPlayer.playerName' => 'Spelarnamn',
+10 -2
View File
@@ -600,6 +600,9 @@ class _TranslationsSubtitlingStylingZh implements TranslationsSubtitlingStylingE
// Translations
@override String get stylingOptions => '样式选项';
@override String get text => '文本';
@override String get border => '边框';
@override String get background => '背景';
@override String get fontSize => '字号';
@override String get textColor => '文本颜色';
@override String get borderSize => '边框大小';
@@ -1063,6 +1066,7 @@ class _TranslationsExternalPlayerZh implements TranslationsExternalPlayerEn {
@override String get useExternalPlayer => '使用外部播放器';
@override String get useExternalPlayerDescription => '在外部应用中打开视频,而不是使用内置播放器';
@override String get selectPlayer => '选择播放器';
@override String get customPlayers => '自定义播放器';
@override String get systemDefault => '系统默认';
@override String get addCustomPlayer => '添加自定义播放器';
@override String get playerName => '播放器名称';
@@ -1748,6 +1752,9 @@ extension on TranslationsZh {
'messages.logsUploadFailed' => '上传日志失败',
'messages.logId' => '日志 ID',
'subtitlingStyling.stylingOptions' => '样式选项',
'subtitlingStyling.text' => '文本',
'subtitlingStyling.border' => '边框',
'subtitlingStyling.background' => '背景',
'subtitlingStyling.fontSize' => '字号',
'subtitlingStyling.textColor' => '文本颜色',
'subtitlingStyling.borderSize' => '边框大小',
@@ -1852,11 +1859,11 @@ extension on TranslationsZh {
'serverSelection.failedToLoadServers' => ({required Object error}) => '无法加载服务器: ${error}',
'hubDetail.title' => '标题',
'hubDetail.releaseYear' => '发行年份',
_ => null,
} ?? switch (path) {
'hubDetail.dateAdded' => '添加日期',
'hubDetail.rating' => '评分',
'hubDetail.noItemsFound' => '未找到项目',
_ => null,
} ?? switch (path) {
'logs.clearLogs' => '清除日志',
'logs.copyLogs' => '复制日志',
'logs.uploadLogs' => '上传日志',
@@ -2108,6 +2115,7 @@ extension on TranslationsZh {
'externalPlayer.useExternalPlayer' => '使用外部播放器',
'externalPlayer.useExternalPlayerDescription' => '在外部应用中打开视频,而不是使用内置播放器',
'externalPlayer.selectPlayer' => '选择播放器',
'externalPlayer.customPlayers' => '自定义播放器',
'externalPlayer.systemDefault' => '系统默认',
'externalPlayer.addCustomPlayer' => '添加自定义播放器',
'externalPlayer.playerName' => '播放器名称',
+4
View File
@@ -439,6 +439,9 @@
},
"subtitlingStyling": {
"stylingOptions": "Stilalternativ",
"text": "Text",
"border": "Kantlinje",
"background": "Bakgrund",
"fontSize": "Teckenstorlek",
"textColor": "Textfärg",
"borderSize": "Kantstorlek",
@@ -847,6 +850,7 @@
"useExternalPlayer": "Använd extern spelare",
"useExternalPlayerDescription": "Öppna videor i en extern app istället för den inbyggda spelaren",
"selectPlayer": "Välj spelare",
"customPlayers": "Anpassade spelare",
"systemDefault": "Systemstandard",
"addCustomPlayer": "Lägg till anpassad spelare",
"playerName": "Spelarnamn",
+4
View File
@@ -439,6 +439,9 @@
},
"subtitlingStyling": {
"stylingOptions": "样式选项",
"text": "文本",
"border": "边框",
"background": "背景",
"fontSize": "字号",
"textColor": "文本颜色",
"borderSize": "边框大小",
@@ -847,6 +850,7 @@
"useExternalPlayer": "使用外部播放器",
"useExternalPlayerDescription": "在外部应用中打开视频,而不是使用内置播放器",
"selectPlayer": "选择播放器",
"customPlayers": "自定义播放器",
"systemDefault": "系统默认",
"addCustomPlayer": "添加自定义播放器",
"playerName": "播放器名称",
@@ -9,6 +9,7 @@ import '../../i18n/strings.g.dart';
import '../../models/external_player_models.dart';
import '../../services/settings_service.dart';
import '../../widgets/focused_scroll_scaffold.dart';
import '../../widgets/settings_section.dart';
class ExternalPlayerScreen extends StatefulWidget {
const ExternalPlayerScreen({super.key});
@@ -57,53 +58,31 @@ class _ExternalPlayerScreenState extends State<ExternalPlayerScreen> {
return FocusedScrollScaffold(
title: Text(t.externalPlayer.title),
slivers: [
SliverPadding(
padding: const EdgeInsets.all(16),
sliver: SliverList(
delegate: SliverChildListDelegate([
Card(
child: SwitchListTile(
secondary: const AppIcon(Symbols.open_in_new_rounded, fill: 1),
title: Text(t.externalPlayer.useExternalPlayer),
subtitle: Text(t.externalPlayer.useExternalPlayerDescription),
value: _useExternalPlayer,
onChanged: (value) async {
setState(() => _useExternalPlayer = value);
await _settingsService.setUseExternalPlayer(value);
},
),
SliverList(
delegate: SliverChildListDelegate([
SwitchListTile(
secondary: const AppIcon(Symbols.open_in_new_rounded, fill: 1),
title: Text(t.externalPlayer.useExternalPlayer),
subtitle: Text(t.externalPlayer.useExternalPlayerDescription),
value: _useExternalPlayer,
onChanged: (value) async {
setState(() => _useExternalPlayer = value);
await _settingsService.setUseExternalPlayer(value);
},
),
if (_useExternalPlayer) ...[
SettingsSectionHeader(t.externalPlayer.selectPlayer),
...knownPlayers.map((player) => _buildPlayerTile(player)),
SettingsSectionHeader(t.externalPlayer.customPlayers),
..._customPlayers.map((player) => _buildPlayerTile(player, isCustom: true)),
ListTile(
leading: const AppIcon(Symbols.add_rounded, fill: 1),
title: Text(t.externalPlayer.addCustomPlayer),
onTap: _showAddCustomPlayerDialog,
),
if (_useExternalPlayer) ...[
const SizedBox(height: 16),
Card(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.all(16),
child: Text(
t.externalPlayer.selectPlayer,
style: Theme.of(context).textTheme.titleMedium?.copyWith(fontWeight: FontWeight.bold),
),
),
// Known players
...knownPlayers.map((player) => _buildPlayerTile(player)),
// Custom players
if (_customPlayers.isNotEmpty) const Divider(),
..._customPlayers.map((player) => _buildPlayerTile(player, isCustom: true)),
// Add custom player button
const Divider(),
ListTile(
leading: const AppIcon(Symbols.add_rounded, fill: 1),
title: Text(t.externalPlayer.addCustomPlayer),
onTap: _showAddCustomPlayerDialog,
),
],
),
),
],
]),
),
],
const SizedBox(height: 24),
]),
),
],
);
+148 -372
View File
@@ -3,12 +3,13 @@ import 'package:plezy/widgets/app_icon.dart';
import 'package:material_symbols_icons/symbols.dart';
import 'package:flex_color_picker/flex_color_picker.dart';
import '../../focus/focusable_button.dart';
import '../../focus/input_mode_tracker.dart';
import '../../i18n/strings.g.dart';
import '../../services/settings_service.dart';
import '../../focus/input_mode_tracker.dart';
import '../../widgets/focused_scroll_scaffold.dart';
import '../../widgets/settings_section.dart';
import '../../widgets/tv_color_picker.dart';
import '../../widgets/tv_number_spinner.dart';
import 'settings_utils.dart';
class SubtitleStylingScreen extends StatefulWidget {
const SubtitleStylingScreen({super.key});
@@ -17,101 +18,6 @@ class SubtitleStylingScreen extends StatefulWidget {
State<SubtitleStylingScreen> createState() => _SubtitleStylingScreenState();
}
// Composable widget for slider sections
class _StylingSliderSection extends StatelessWidget {
final String label;
final int value;
final double min;
final double max;
final int divisions;
final ValueChanged<double> onChanged;
final ValueChanged<double>? onChangeEnd;
final String Function(int)? valueFormatter;
const _StylingSliderSection({
required this.label,
required this.value,
required this.min,
required this.max,
required this.divisions,
required this.onChanged,
this.onChangeEnd,
this.valueFormatter,
});
@override
Widget build(BuildContext context) {
final formattedValue = valueFormatter?.call(value) ?? value.toString();
return Padding(
padding: const EdgeInsets.fromLTRB(16, 16, 16, 8),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [Text(label), Text(formattedValue)]),
const SizedBox(height: 8),
Row(
children: [
Text(
valueFormatter?.call(min.toInt()) ?? min.toInt().toString(),
style: const TextStyle(fontSize: 12, color: Colors.grey),
),
Expanded(
child: Slider(
value: value.toDouble(),
min: min,
max: max,
divisions: divisions,
label: formattedValue,
onChanged: onChanged,
onChangeEnd: onChangeEnd,
),
),
Text(
valueFormatter?.call(max.toInt()) ?? max.toInt().toString(),
style: const TextStyle(fontSize: 12, color: Colors.grey),
),
],
),
],
),
);
}
}
// Composable widget for color picker tiles
class _ColorSettingTile extends StatelessWidget {
final String label;
final String currentColor;
final VoidCallback onTap;
final Color Function(String) hexToColor;
const _ColorSettingTile({
required this.label,
required this.currentColor,
required this.onTap,
required this.hexToColor,
});
@override
Widget build(BuildContext context) {
return ListTile(
leading: Container(
width: 40,
height: 40,
decoration: BoxDecoration(
color: hexToColor(currentColor),
border: const Border.fromBorderSide(BorderSide(color: Colors.grey)),
borderRadius: const BorderRadius.all(Radius.circular(4)),
),
),
title: Text(label),
subtitle: Text(currentColor),
trailing: const AppIcon(Symbols.chevron_right_rounded, fill: 1),
onTap: onTap,
);
}
}
class _SubtitleStylingScreenState extends State<SubtitleStylingScreen> {
late SettingsService _settingsService;
bool _isLoading = true;
@@ -158,72 +64,6 @@ class _SubtitleStylingScreenState extends State<SubtitleStylingScreen> {
.toUpperCase();
}
void _showTvSpinnerDialog({
required String title,
required int currentValue,
required int min,
required int max,
int step = 1,
String? suffix,
required ValueChanged<int> onSave,
}) {
int spinnerValue = currentValue;
final saveFocusNode = FocusNode();
showDialog(
context: context,
builder: (BuildContext dialogContext) {
return StatefulBuilder(
builder: (context, setDialogState) {
return AlertDialog(
title: Text(title),
content: Column(
mainAxisSize: MainAxisSize.min,
children: [
TvNumberSpinner(
value: spinnerValue,
min: min,
max: max,
step: step,
suffix: suffix,
autofocus: true,
onChanged: (value) {
setDialogState(() {
spinnerValue = value;
});
},
onConfirm: () => saveFocusNode.requestFocus(),
onCancel: () => Navigator.pop(dialogContext),
),
],
),
actions: [
FocusableButton(
onPressed: () => Navigator.pop(dialogContext),
child: TextButton(onPressed: () => Navigator.pop(dialogContext), child: Text(t.common.cancel)),
),
FocusableButton(
focusNode: saveFocusNode,
onPressed: () {
onSave(spinnerValue);
Navigator.pop(dialogContext);
},
child: TextButton(
onPressed: () {
onSave(spinnerValue);
Navigator.pop(dialogContext);
},
child: Text(t.common.save),
),
),
],
);
},
);
},
).then((_) => saveFocusNode.dispose());
}
Future<void> _showColorPicker(String title, String currentColor, Function(String) onColorSelected) async {
Color initialColor = _hexToColor(currentColor);
@@ -298,240 +138,176 @@ class _SubtitleStylingScreenState extends State<SubtitleStylingScreen> {
).then((_) => saveFocusNode.dispose());
}
@override
Widget build(BuildContext context) {
return FocusedScrollScaffold(
title: Text(t.screens.subtitleStyling),
slivers: _isLoading
? [const SliverFillRemaining(child: Center(child: CircularProgressIndicator()))]
: [
SliverPadding(
padding: const EdgeInsets.all(16),
sliver: SliverList(
delegate: SliverChildListDelegate([_buildStylingCard(), const SizedBox(height: 24)]),
),
),
],
);
void _openColorPicker(String title, String currentColor, Function(String) onColorSelected) {
if (InputModeTracker.isKeyboardMode(context)) {
_showTvColorPicker(title, currentColor, onColorSelected);
} else {
_showColorPicker(title, currentColor, onColorSelected);
}
}
Widget _buildStylingCard() {
final useDpadControls = InputModeTracker.isKeyboardMode(context);
String _formatPosition(int value) {
if (value == 0) return 'Top';
if (value == 100) return 'Bottom';
return '$value%';
}
return Card(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.all(16),
child: Text(
t.subtitlingStyling.stylingOptions,
style: Theme.of(context).textTheme.titleMedium?.copyWith(fontWeight: FontWeight.bold),
),
),
// Font Size Slider
if (useDpadControls)
@override
Widget build(BuildContext context) {
if (_isLoading) {
return FocusedScrollScaffold(
title: Text(t.screens.subtitleStyling),
slivers: [const SliverFillRemaining(child: Center(child: CircularProgressIndicator()))],
);
}
return FocusedScrollScaffold(
title: Text(t.screens.subtitleStyling),
slivers: [
SliverList(
delegate: SliverChildListDelegate([
// --- Text ---
SettingsSectionHeader(t.subtitlingStyling.text),
ListTile(
leading: const AppIcon(Symbols.format_size_rounded, fill: 1),
title: Text(t.subtitlingStyling.fontSize),
trailing: Text('$_fontSize'),
onTap: () => _showTvSpinnerDialog(
subtitle: Text('$_fontSize'),
trailing: const AppIcon(Symbols.chevron_right_rounded, fill: 1),
onTap: () => showNumericInputDialog(
context: context,
title: t.subtitlingStyling.fontSize,
currentValue: _fontSize,
labelText: t.subtitlingStyling.fontSize,
suffixText: '',
min: 10,
max: 80,
onSave: (value) {
currentValue: _fontSize,
onSave: (value) async {
setState(() => _fontSize = value);
_settingsService.setSubtitleFontSize(value);
await _settingsService.setSubtitleFontSize(value);
},
),
)
else
_StylingSliderSection(
label: t.subtitlingStyling.fontSize,
value: _fontSize,
min: 10,
max: 80,
divisions: 70,
onChanged: (value) {
setState(() {
_fontSize = value.toInt();
});
},
onChangeEnd: (value) {
_settingsService.setSubtitleFontSize(_fontSize);
},
),
const Divider(),
// Subtitle Position Slider
if (useDpadControls)
ListTile(
title: Text(t.subtitlingStyling.position),
trailing: Text(() {
if (_subtitlePosition == 0) return 'Top';
if (_subtitlePosition == 100) return 'Bottom';
return '$_subtitlePosition%';
}()),
onTap: () => _showTvSpinnerDialog(
title: t.subtitlingStyling.position,
currentValue: _subtitlePosition,
min: 0,
max: 100,
step: 5,
onSave: (value) {
setState(() => _subtitlePosition = value);
_settingsService.setSubtitlePosition(value);
},
leading: Container(
width: 24,
height: 24,
decoration: BoxDecoration(
color: _hexToColor(_textColor),
border: const Border.fromBorderSide(BorderSide(color: Colors.grey)),
borderRadius: const BorderRadius.all(Radius.circular(4)),
),
),
)
else
_StylingSliderSection(
label: t.subtitlingStyling.position,
value: _subtitlePosition,
min: 0,
max: 100,
divisions: 20,
valueFormatter: (value) {
if (value == 0) return 'Top';
if (value == 100) return 'Bottom';
return '$value%';
},
onChanged: (value) {
setState(() {
_subtitlePosition = value.toInt();
});
},
onChangeEnd: (value) {
_settingsService.setSubtitlePosition(_subtitlePosition);
},
),
const Divider(),
// Text Color
_ColorSettingTile(
label: t.subtitlingStyling.textColor,
currentColor: _textColor,
hexToColor: _hexToColor,
onTap: () {
void onColorSelected(String color) {
title: Text(t.subtitlingStyling.textColor),
subtitle: Text(_textColor),
trailing: const AppIcon(Symbols.chevron_right_rounded, fill: 1),
onTap: () => _openColorPicker(t.subtitlingStyling.textColor, _textColor, (color) {
setState(() => _textColor = color);
_settingsService.setSubtitleTextColor(color);
}
if (useDpadControls) {
_showTvColorPicker(t.subtitlingStyling.textColor, _textColor, onColorSelected);
} else {
_showColorPicker(t.subtitlingStyling.textColor, _textColor, onColorSelected);
}
},
),
const Divider(),
// Border Size Slider
if (useDpadControls)
ListTile(
title: Text(t.subtitlingStyling.borderSize),
trailing: Text('$_borderSize'),
onTap: () => _showTvSpinnerDialog(
title: t.subtitlingStyling.borderSize,
currentValue: _borderSize,
min: 0,
max: 5,
onSave: (value) {
setState(() => _borderSize = value);
_settingsService.setSubtitleBorderSize(value);
},
),
)
else
_StylingSliderSection(
label: t.subtitlingStyling.borderSize,
value: _borderSize,
min: 0,
max: 5,
divisions: 5,
onChanged: (value) {
setState(() {
_borderSize = value.toInt();
});
},
onChangeEnd: (value) {
_settingsService.setSubtitleBorderSize(_borderSize);
},
}),
),
const Divider(),
// Border Color
_ColorSettingTile(
label: t.subtitlingStyling.borderColor,
currentColor: _borderColor,
hexToColor: _hexToColor,
onTap: () {
void onColorSelected(String color) {
setState(() => _borderColor = color);
_settingsService.setSubtitleBorderColor(color);
}
if (useDpadControls) {
_showTvColorPicker(t.subtitlingStyling.borderColor, _borderColor, onColorSelected);
} else {
_showColorPicker(t.subtitlingStyling.borderColor, _borderColor, onColorSelected);
}
},
),
const Divider(),
// Background Opacity Slider
if (useDpadControls)
ListTile(
title: Text(t.subtitlingStyling.backgroundOpacity),
trailing: Text('$_backgroundOpacity%'),
onTap: () => _showTvSpinnerDialog(
title: t.subtitlingStyling.backgroundOpacity,
currentValue: _backgroundOpacity,
leading: const AppIcon(Symbols.vertical_align_bottom_rounded, fill: 1),
title: Text(t.subtitlingStyling.position),
subtitle: Text(_formatPosition(_subtitlePosition)),
trailing: const AppIcon(Symbols.chevron_right_rounded, fill: 1),
onTap: () => showNumericInputDialog(
context: context,
title: t.subtitlingStyling.position,
labelText: t.subtitlingStyling.position,
suffixText: '%',
min: 0,
max: 100,
step: 5,
suffix: '%',
onSave: (value) {
setState(() => _backgroundOpacity = value);
_settingsService.setSubtitleBackgroundOpacity(value);
currentValue: _subtitlePosition,
onSave: (value) async {
setState(() => _subtitlePosition = value);
await _settingsService.setSubtitlePosition(value);
},
),
)
else
_StylingSliderSection(
label: t.subtitlingStyling.backgroundOpacity,
value: _backgroundOpacity,
min: 0,
max: 100,
divisions: 20,
valueFormatter: (value) => '$value%',
onChanged: (value) {
setState(() {
_backgroundOpacity = value.toInt();
});
},
onChangeEnd: (value) {
_settingsService.setSubtitleBackgroundOpacity(_backgroundOpacity);
},
),
const Divider(),
// Background Color
_ColorSettingTile(
label: t.subtitlingStyling.backgroundColor,
currentColor: _backgroundColor,
hexToColor: _hexToColor,
onTap: () {
void onColorSelected(String color) {
// --- Border ---
SettingsSectionHeader(t.subtitlingStyling.border),
ListTile(
leading: const AppIcon(Symbols.border_style_rounded, fill: 1),
title: Text(t.subtitlingStyling.borderSize),
subtitle: Text('$_borderSize'),
trailing: const AppIcon(Symbols.chevron_right_rounded, fill: 1),
onTap: () => showNumericInputDialog(
context: context,
title: t.subtitlingStyling.borderSize,
labelText: t.subtitlingStyling.borderSize,
suffixText: '',
min: 0,
max: 5,
currentValue: _borderSize,
onSave: (value) async {
setState(() => _borderSize = value);
await _settingsService.setSubtitleBorderSize(value);
},
),
),
ListTile(
leading: Container(
width: 24,
height: 24,
decoration: BoxDecoration(
color: _hexToColor(_borderColor),
border: const Border.fromBorderSide(BorderSide(color: Colors.grey)),
borderRadius: const BorderRadius.all(Radius.circular(4)),
),
),
title: Text(t.subtitlingStyling.borderColor),
subtitle: Text(_borderColor),
trailing: const AppIcon(Symbols.chevron_right_rounded, fill: 1),
onTap: () => _openColorPicker(t.subtitlingStyling.borderColor, _borderColor, (color) {
setState(() => _borderColor = color);
_settingsService.setSubtitleBorderColor(color);
}),
),
// --- Background ---
SettingsSectionHeader(t.subtitlingStyling.background),
ListTile(
leading: const AppIcon(Symbols.opacity_rounded, fill: 1),
title: Text(t.subtitlingStyling.backgroundOpacity),
subtitle: Text('$_backgroundOpacity%'),
trailing: const AppIcon(Symbols.chevron_right_rounded, fill: 1),
onTap: () => showNumericInputDialog(
context: context,
title: t.subtitlingStyling.backgroundOpacity,
labelText: t.subtitlingStyling.backgroundOpacity,
suffixText: '%',
min: 0,
max: 100,
currentValue: _backgroundOpacity,
onSave: (value) async {
setState(() => _backgroundOpacity = value);
await _settingsService.setSubtitleBackgroundOpacity(value);
},
),
),
ListTile(
leading: Container(
width: 24,
height: 24,
decoration: BoxDecoration(
color: _hexToColor(_backgroundColor),
border: const Border.fromBorderSide(BorderSide(color: Colors.grey)),
borderRadius: const BorderRadius.all(Radius.circular(4)),
),
),
title: Text(t.subtitlingStyling.backgroundColor),
subtitle: Text(_backgroundColor),
trailing: const AppIcon(Symbols.chevron_right_rounded, fill: 1),
onTap: () => _openColorPicker(t.subtitlingStyling.backgroundColor, _backgroundColor, (color) {
setState(() => _backgroundColor = color);
_settingsService.setSubtitleBackgroundColor(color);
}
if (useDpadControls) {
_showTvColorPicker(t.subtitlingStyling.backgroundColor, _backgroundColor, onColorSelected);
} else {
_showColorPicker(t.subtitlingStyling.backgroundColor, _backgroundColor, onColorSelected);
}
},
),
],
),
}),
),
const SizedBox(height: 24),
]),
),
],
);
}
}