feat: replace mpv config UI with raw text editor

This commit is contained in:
edde746
2026-03-02 23:06:05 +01:00
parent b5904bc477
commit a00e2b78d6
22 changed files with 289 additions and 682 deletions
+4 -14
View File
@@ -64,7 +64,7 @@
"licenses": "Lizenzen", "licenses": "Lizenzen",
"switchProfile": "Profil wechseln", "switchProfile": "Profil wechseln",
"subtitleStyling": "Untertitel-Stil", "subtitleStyling": "Untertitel-Stil",
"mpvConfig": "MPV-Konfiguration", "mpvConfig": "mpv.conf",
"logs": "Protokolle" "logs": "Protokolle"
}, },
"update": { "update": {
@@ -128,7 +128,7 @@
"playerBackend": "Player-Backend", "playerBackend": "Player-Backend",
"exoPlayer": "ExoPlayer (Empfohlen)", "exoPlayer": "ExoPlayer (Empfohlen)",
"exoPlayerDescription": "Android-nativer Player mit besserer Hardware-Unterstützung", "exoPlayerDescription": "Android-nativer Player mit besserer Hardware-Unterstützung",
"mpv": "MPV", "mpv": "mpv",
"mpvDescription": "Erweiterter Player mit mehr Funktionen und ASS-Untertitel-Unterstützung", "mpvDescription": "Erweiterter Player mit mehr Funktionen und ASS-Untertitel-Unterstützung",
"hardwareDecoding": "Hardware-Decodierung", "hardwareDecoding": "Hardware-Decodierung",
"hardwareDecodingDescription": "Hardwarebeschleunigung verwenden, sofern verfügbar", "hardwareDecodingDescription": "Hardwarebeschleunigung verwenden, sofern verfügbar",
@@ -420,19 +420,10 @@
"position": "Position" "position": "Position"
}, },
"mpvConfig": { "mpvConfig": {
"title": "MPV-Konfiguration", "title": "mpv-Konfiguration",
"description": "Erweiterte Videoplayer-Einstellungen", "description": "Erweiterte Videoplayer-Einstellungen",
"properties": "Eigenschaften",
"presets": "Voreinstellungen", "presets": "Voreinstellungen",
"noProperties": "Keine Eigenschaften konfiguriert",
"noPresets": "Keine gespeicherten Voreinstellungen", "noPresets": "Keine gespeicherten Voreinstellungen",
"addProperty": "Eigenschaft hinzufügen",
"editProperty": "Eigenschaft bearbeiten",
"deleteProperty": "Eigenschaft löschen",
"propertyKey": "Eigenschaftsschlüssel",
"propertyKeyHint": "z.B. hwdec, demuxer-max-bytes",
"propertyValue": "Eigenschaftswert",
"propertyValueHint": "z.B. auto, 256000000",
"saveAsPreset": "Als Voreinstellung speichern...", "saveAsPreset": "Als Voreinstellung speichern...",
"presetName": "Name der Voreinstellung", "presetName": "Name der Voreinstellung",
"presetNameHint": "Namen für diese Voreinstellung eingeben", "presetNameHint": "Namen für diese Voreinstellung eingeben",
@@ -442,8 +433,7 @@
"presetLoaded": "Voreinstellung geladen", "presetLoaded": "Voreinstellung geladen",
"presetDeleted": "Voreinstellung gelöscht", "presetDeleted": "Voreinstellung gelöscht",
"confirmDeletePreset": "Möchten Sie diese Voreinstellung wirklich löschen?", "confirmDeletePreset": "Möchten Sie diese Voreinstellung wirklich löschen?",
"confirmDeleteProperty": "Möchten Sie diese Eigenschaft wirklich löschen?", "configPlaceholder": "gpu-api=vulkan\nhwdec=auto\n# comment"
"entriesCount": "${count} Einträge"
}, },
"dialog": { "dialog": {
"confirmAction": "Aktion bestätigen" "confirmAction": "Aktion bestätigen"
+4 -14
View File
@@ -64,7 +64,7 @@
"licenses": "Licenses", "licenses": "Licenses",
"switchProfile": "Switch Profile", "switchProfile": "Switch Profile",
"subtitleStyling": "Subtitle Styling", "subtitleStyling": "Subtitle Styling",
"mpvConfig": "MPV Configuration", "mpvConfig": "mpv.conf",
"logs": "Logs" "logs": "Logs"
}, },
"update": { "update": {
@@ -128,7 +128,7 @@
"playerBackend": "Player Backend", "playerBackend": "Player Backend",
"exoPlayer": "ExoPlayer (Recommended)", "exoPlayer": "ExoPlayer (Recommended)",
"exoPlayerDescription": "Android native player with better hardware support", "exoPlayerDescription": "Android native player with better hardware support",
"mpv": "MPV", "mpv": "mpv",
"mpvDescription": "Advanced player with more features and ASS subtitle support", "mpvDescription": "Advanced player with more features and ASS subtitle support",
"hardwareDecoding": "Hardware Decoding", "hardwareDecoding": "Hardware Decoding",
"hardwareDecodingDescription": "Use hardware acceleration when available", "hardwareDecodingDescription": "Use hardware acceleration when available",
@@ -420,19 +420,10 @@
"position": "Position" "position": "Position"
}, },
"mpvConfig": { "mpvConfig": {
"title": "MPV Configuration", "title": "mpv.conf",
"description": "Advanced video player settings", "description": "Advanced video player settings",
"properties": "Properties",
"presets": "Presets", "presets": "Presets",
"noProperties": "No properties configured",
"noPresets": "No saved presets", "noPresets": "No saved presets",
"addProperty": "Add Property",
"editProperty": "Edit Property",
"deleteProperty": "Delete Property",
"propertyKey": "Property Key",
"propertyKeyHint": "e.g., hwdec, demuxer-max-bytes",
"propertyValue": "Property Value",
"propertyValueHint": "e.g., auto, 256000000",
"saveAsPreset": "Save as Preset...", "saveAsPreset": "Save as Preset...",
"presetName": "Preset Name", "presetName": "Preset Name",
"presetNameHint": "Enter a name for this preset", "presetNameHint": "Enter a name for this preset",
@@ -442,8 +433,7 @@
"presetLoaded": "Preset loaded", "presetLoaded": "Preset loaded",
"presetDeleted": "Preset deleted", "presetDeleted": "Preset deleted",
"confirmDeletePreset": "Are you sure you want to delete this preset?", "confirmDeletePreset": "Are you sure you want to delete this preset?",
"confirmDeleteProperty": "Are you sure you want to delete this property?", "configPlaceholder": "gpu-api=vulkan\nhwdec=auto\n# comment"
"entriesCount": "${count} entries"
}, },
"dialog": { "dialog": {
"confirmAction": "Confirm Action" "confirmAction": "Confirm Action"
+4 -14
View File
@@ -64,7 +64,7 @@
"licenses": "Licencias", "licenses": "Licencias",
"switchProfile": "Cambiar Perfil", "switchProfile": "Cambiar Perfil",
"subtitleStyling": "Estilo de Subtítulos", "subtitleStyling": "Estilo de Subtítulos",
"mpvConfig": "Configuración de MPV", "mpvConfig": "mpv.conf",
"logs": "Logs" "logs": "Logs"
}, },
"update": { "update": {
@@ -128,7 +128,7 @@
"playerBackend": "Reproductor", "playerBackend": "Reproductor",
"exoPlayer": "ExoPlayer (Recomendado)", "exoPlayer": "ExoPlayer (Recomendado)",
"exoPlayerDescription": "Reproductor nativo de Android con mejor soporte de hardware", "exoPlayerDescription": "Reproductor nativo de Android con mejor soporte de hardware",
"mpv": "MPV", "mpv": "mpv",
"mpvDescription": "Reproductor avanzado con más funciones y soporte de subtítulos ASS", "mpvDescription": "Reproductor avanzado con más funciones y soporte de subtítulos ASS",
"hardwareDecoding": "Decodificación por Hardware", "hardwareDecoding": "Decodificación por Hardware",
"hardwareDecodingDescription": "Usar aceleración por hardware cuando esté disponible", "hardwareDecodingDescription": "Usar aceleración por hardware cuando esté disponible",
@@ -420,19 +420,10 @@
"position": "Position" "position": "Position"
}, },
"mpvConfig": { "mpvConfig": {
"title": "Configuración de MPV", "title": "Configuración de mpv",
"description": "Ajustes avanzados del reproductor de video", "description": "Ajustes avanzados del reproductor de video",
"properties": "Propiedades",
"presets": "Ajustes preestablecidos", "presets": "Ajustes preestablecidos",
"noProperties": "No hay propiedades configuradas",
"noPresets": "No hay ajustes guardados", "noPresets": "No hay ajustes guardados",
"addProperty": "Añadir Propiedad",
"editProperty": "Editar Propiedad",
"deleteProperty": "Eliminar Propiedad",
"propertyKey": "Clave de la Propiedad",
"propertyKeyHint": "ej., hwdec, demuxer-max-bytes",
"propertyValue": "Valor de la Propiedad",
"propertyValueHint": "ej., auto, 256000000",
"saveAsPreset": "Guardar como Ajuste...", "saveAsPreset": "Guardar como Ajuste...",
"presetName": "Nombre del Ajuste", "presetName": "Nombre del Ajuste",
"presetNameHint": "Introduce un nombre para este ajuste", "presetNameHint": "Introduce un nombre para este ajuste",
@@ -442,8 +433,7 @@
"presetLoaded": "Ajuste cargado", "presetLoaded": "Ajuste cargado",
"presetDeleted": "Ajuste eliminado", "presetDeleted": "Ajuste eliminado",
"confirmDeletePreset": "¿Estás seguro de que quieres eliminar este ajuste?", "confirmDeletePreset": "¿Estás seguro de que quieres eliminar este ajuste?",
"confirmDeleteProperty": "¿Estás seguro de que quieres eliminar esta propiedad?", "configPlaceholder": "gpu-api=vulkan\nhwdec=auto\n# comment"
"entriesCount": "${count} entradas"
}, },
"dialog": { "dialog": {
"confirmAction": "Confirmar Acción" "confirmAction": "Confirmar Acción"
+4 -14
View File
@@ -64,7 +64,7 @@
"licenses": "Licenses", "licenses": "Licenses",
"switchProfile": "Changer de profil", "switchProfile": "Changer de profil",
"subtitleStyling": "Configuration des sous-titres", "subtitleStyling": "Configuration des sous-titres",
"mpvConfig": "Configuration MPV", "mpvConfig": "mpv.conf",
"logs": "Logs" "logs": "Logs"
}, },
"update": { "update": {
@@ -128,7 +128,7 @@
"playerBackend": "Moteur de lecture", "playerBackend": "Moteur de lecture",
"exoPlayer": "ExoPlayer (Recommandé)", "exoPlayer": "ExoPlayer (Recommandé)",
"exoPlayerDescription": "Lecteur natif Android avec meilleur support matériel", "exoPlayerDescription": "Lecteur natif Android avec meilleur support matériel",
"mpv": "MPV", "mpv": "mpv",
"mpvDescription": "Lecteur avancé avec plus de fonctionnalités et support des sous-titres ASS", "mpvDescription": "Lecteur avancé avec plus de fonctionnalités et support des sous-titres ASS",
"hardwareDecoding": "Décodage matériel", "hardwareDecoding": "Décodage matériel",
"hardwareDecodingDescription": "Utilisez l'accélération matérielle lorsqu'elle est disponible.", "hardwareDecodingDescription": "Utilisez l'accélération matérielle lorsqu'elle est disponible.",
@@ -420,19 +420,10 @@
"position": "Position" "position": "Position"
}, },
"mpvConfig": { "mpvConfig": {
"title": "Configuration MPV", "title": "Configuration mpv",
"description": "Paramètres avancés du lecteur vidéo", "description": "Paramètres avancés du lecteur vidéo",
"properties": "Propriétés",
"presets": "Préréglages", "presets": "Préréglages",
"noProperties": "Aucune propriété configurée",
"noPresets": "Aucun préréglage enregistré", "noPresets": "Aucun préréglage enregistré",
"addProperty": "Ajouter une propriété",
"editProperty": "Modifier la propriété",
"deleteProperty": "Supprimer la propriété",
"propertyKey": "Clé",
"propertyKeyHint": "e.g., hwdec, demuxer-max-bytes",
"propertyValue": "Valeur",
"propertyValueHint": "e.g., auto, 256000000",
"saveAsPreset": "Enregistrer comme préréglage...", "saveAsPreset": "Enregistrer comme préréglage...",
"presetName": "Nom du préréglage", "presetName": "Nom du préréglage",
"presetNameHint": "Entrez un nom pour ce préréglage", "presetNameHint": "Entrez un nom pour ce préréglage",
@@ -442,8 +433,7 @@
"presetLoaded": "Préréglage chargé", "presetLoaded": "Préréglage chargé",
"presetDeleted": "Préréglage supprimé", "presetDeleted": "Préréglage supprimé",
"confirmDeletePreset": "Êtes-vous sûr de vouloir supprimer ce préréglage ?", "confirmDeletePreset": "Êtes-vous sûr de vouloir supprimer ce préréglage ?",
"confirmDeleteProperty": "Êtes-vous sûr de vouloir supprimer cette propriété ?", "configPlaceholder": "gpu-api=vulkan\nhwdec=auto\n# comment"
"entriesCount": "${count} entrées"
}, },
"dialog": { "dialog": {
"confirmAction": "Confirmer l'action" "confirmAction": "Confirmer l'action"
+4 -14
View File
@@ -64,7 +64,7 @@
"licenses": "Licenze", "licenses": "Licenze",
"switchProfile": "Cambia profilo", "switchProfile": "Cambia profilo",
"subtitleStyling": "Stile sottotitoli", "subtitleStyling": "Stile sottotitoli",
"mpvConfig": "Configurazione MPV", "mpvConfig": "mpv.conf",
"logs": "Registro" "logs": "Registro"
}, },
"update": { "update": {
@@ -128,7 +128,7 @@
"playerBackend": "Motore di riproduzione", "playerBackend": "Motore di riproduzione",
"exoPlayer": "ExoPlayer (Consigliato)", "exoPlayer": "ExoPlayer (Consigliato)",
"exoPlayerDescription": "Lettore nativo Android con migliore supporto hardware", "exoPlayerDescription": "Lettore nativo Android con migliore supporto hardware",
"mpv": "MPV", "mpv": "mpv",
"mpvDescription": "Lettore avanzato con più funzionalità e supporto sottotitoli ASS", "mpvDescription": "Lettore avanzato con più funzionalità e supporto sottotitoli ASS",
"hardwareDecoding": "Decodifica Hardware", "hardwareDecoding": "Decodifica Hardware",
"hardwareDecodingDescription": "Utilizza l'accelerazione hardware quando disponibile", "hardwareDecodingDescription": "Utilizza l'accelerazione hardware quando disponibile",
@@ -420,19 +420,10 @@
"position": "Position" "position": "Position"
}, },
"mpvConfig": { "mpvConfig": {
"title": "Configurazione MPV", "title": "Configurazione mpv",
"description": "Impostazioni avanzate del lettore video", "description": "Impostazioni avanzate del lettore video",
"properties": "Proprietà",
"presets": "Preset", "presets": "Preset",
"noProperties": "Nessuna proprietà configurata",
"noPresets": "Nessun preset salvato", "noPresets": "Nessun preset salvato",
"addProperty": "Aggiungi proprietà",
"editProperty": "Modifica proprietà",
"deleteProperty": "Elimina proprietà",
"propertyKey": "Chiave proprietà",
"propertyKeyHint": "es. hwdec, demuxer-max-bytes",
"propertyValue": "Valore proprietà",
"propertyValueHint": "es. auto, 256000000",
"saveAsPreset": "Salva come preset...", "saveAsPreset": "Salva come preset...",
"presetName": "Nome preset", "presetName": "Nome preset",
"presetNameHint": "Inserisci un nome per questo preset", "presetNameHint": "Inserisci un nome per questo preset",
@@ -442,8 +433,7 @@
"presetLoaded": "Preset caricato", "presetLoaded": "Preset caricato",
"presetDeleted": "Preset eliminato", "presetDeleted": "Preset eliminato",
"confirmDeletePreset": "Sei sicuro di voler eliminare questo preset?", "confirmDeletePreset": "Sei sicuro di voler eliminare questo preset?",
"confirmDeleteProperty": "Sei sicuro di voler eliminare questa proprietà?", "configPlaceholder": "gpu-api=vulkan\nhwdec=auto\n# comment"
"entriesCount": "${count} voci"
}, },
"dialog": { "dialog": {
"confirmAction": "Conferma azione" "confirmAction": "Conferma azione"
+4 -14
View File
@@ -64,7 +64,7 @@
"licenses": "라이선스", "licenses": "라이선스",
"switchProfile": "프로필 전환", "switchProfile": "프로필 전환",
"subtitleStyling": "자막 스타일 설정", "subtitleStyling": "자막 스타일 설정",
"mpvConfig": "MPV 설정", "mpvConfig": "mpv.conf",
"logs": "로그" "logs": "로그"
}, },
"update": { "update": {
@@ -128,7 +128,7 @@
"playerBackend": "플레이어 백엔드", "playerBackend": "플레이어 백엔드",
"exoPlayer": "ExoPlayer (권장)", "exoPlayer": "ExoPlayer (권장)",
"exoPlayerDescription": "더 나은 하드웨어 지원을 제공하는 Android 네이티브 플레이어", "exoPlayerDescription": "더 나은 하드웨어 지원을 제공하는 Android 네이티브 플레이어",
"mpv": "MPV", "mpv": "mpv",
"mpvDescription": "더 많은 기능과 ASS 자막을 지원하는 고급 플레이어", "mpvDescription": "더 많은 기능과 ASS 자막을 지원하는 고급 플레이어",
"hardwareDecoding": "하드웨어 디코딩", "hardwareDecoding": "하드웨어 디코딩",
"hardwareDecodingDescription": "가능한 경우 하드웨어 가속을 사용합니다", "hardwareDecodingDescription": "가능한 경우 하드웨어 가속을 사용합니다",
@@ -420,19 +420,10 @@
"position": "Position" "position": "Position"
}, },
"mpvConfig": { "mpvConfig": {
"title": "MPV 설정", "title": "mpv 설정",
"description": "고급 비디오 플레이어 설정", "description": "고급 비디오 플레이어 설정",
"properties": "속성",
"presets": "사전 설정", "presets": "사전 설정",
"noProperties": "설정된 속성이 없습니다",
"noPresets": "저장된 사전 설정이 없습니다", "noPresets": "저장된 사전 설정이 없습니다",
"addProperty": "속성 추가",
"editProperty": "속성 편집",
"deleteProperty": "속성 삭제",
"propertyKey": "속성 키",
"propertyKeyHint": "예: hwdec, demuxer-max-bytes",
"propertyValue": "속성값",
"propertyValueHint": "예: auto, 256000000",
"saveAsPreset": "프리셋으로 저장...", "saveAsPreset": "프리셋으로 저장...",
"presetName": "프리셋 이름", "presetName": "프리셋 이름",
"presetNameHint": "이 프리셋의 이름을 입력하세요", "presetNameHint": "이 프리셋의 이름을 입력하세요",
@@ -442,8 +433,7 @@
"presetLoaded": "프리셋이 로드 되었습니다", "presetLoaded": "프리셋이 로드 되었습니다",
"presetDeleted": "프리셋이 삭제 되었습니다", "presetDeleted": "프리셋이 삭제 되었습니다",
"confirmDeletePreset": "이 프리셋을 삭제 하시겠습니까?", "confirmDeletePreset": "이 프리셋을 삭제 하시겠습니까?",
"confirmDeleteProperty": "이 속성을 삭제 하시겠습니까?", "configPlaceholder": "gpu-api=vulkan\nhwdec=auto\n# comment"
"entriesCount": "${count} 항목"
}, },
"dialog": { "dialog": {
"confirmAction": "확인" "confirmAction": "확인"
+4 -14
View File
@@ -64,7 +64,7 @@
"licenses": "Licenties", "licenses": "Licenties",
"switchProfile": "Wissel van profiel", "switchProfile": "Wissel van profiel",
"subtitleStyling": "Ondertitel opmaak", "subtitleStyling": "Ondertitel opmaak",
"mpvConfig": "MPV-configuratie", "mpvConfig": "mpv.conf",
"logs": "Logbestanden" "logs": "Logbestanden"
}, },
"update": { "update": {
@@ -128,7 +128,7 @@
"playerBackend": "Speler backend", "playerBackend": "Speler backend",
"exoPlayer": "ExoPlayer (Aanbevolen)", "exoPlayer": "ExoPlayer (Aanbevolen)",
"exoPlayerDescription": "Android-native speler met betere hardware-ondersteuning", "exoPlayerDescription": "Android-native speler met betere hardware-ondersteuning",
"mpv": "MPV", "mpv": "mpv",
"mpvDescription": "Geavanceerde speler met meer functies en ASS-ondertitelondersteuning", "mpvDescription": "Geavanceerde speler met meer functies en ASS-ondertitelondersteuning",
"hardwareDecoding": "Hardware decodering", "hardwareDecoding": "Hardware decodering",
"hardwareDecodingDescription": "Gebruik hardware versnelling indien beschikbaar", "hardwareDecodingDescription": "Gebruik hardware versnelling indien beschikbaar",
@@ -420,19 +420,10 @@
"position": "Position" "position": "Position"
}, },
"mpvConfig": { "mpvConfig": {
"title": "MPV-configuratie", "title": "mpv-configuratie",
"description": "Geavanceerde videospeler-instellingen", "description": "Geavanceerde videospeler-instellingen",
"properties": "Eigenschappen",
"presets": "Voorinstellingen", "presets": "Voorinstellingen",
"noProperties": "Geen eigenschappen geconfigureerd",
"noPresets": "Geen opgeslagen voorinstellingen", "noPresets": "Geen opgeslagen voorinstellingen",
"addProperty": "Eigenschap toevoegen",
"editProperty": "Eigenschap bewerken",
"deleteProperty": "Eigenschap verwijderen",
"propertyKey": "Eigenschapssleutel",
"propertyKeyHint": "bijv. hwdec, demuxer-max-bytes",
"propertyValue": "Eigenschapswaarde",
"propertyValueHint": "bijv. auto, 256000000",
"saveAsPreset": "Opslaan als voorinstelling...", "saveAsPreset": "Opslaan als voorinstelling...",
"presetName": "Naam voorinstelling", "presetName": "Naam voorinstelling",
"presetNameHint": "Voer een naam in voor deze voorinstelling", "presetNameHint": "Voer een naam in voor deze voorinstelling",
@@ -442,8 +433,7 @@
"presetLoaded": "Voorinstelling geladen", "presetLoaded": "Voorinstelling geladen",
"presetDeleted": "Voorinstelling verwijderd", "presetDeleted": "Voorinstelling verwijderd",
"confirmDeletePreset": "Weet je zeker dat je deze voorinstelling wilt verwijderen?", "confirmDeletePreset": "Weet je zeker dat je deze voorinstelling wilt verwijderen?",
"confirmDeleteProperty": "Weet je zeker dat je deze eigenschap wilt verwijderen?", "configPlaceholder": "gpu-api=vulkan\nhwdec=auto\n# comment"
"entriesCount": "${count} items"
}, },
"dialog": { "dialog": {
"confirmAction": "Bevestig actie" "confirmAction": "Bevestig actie"
+2 -2
View File
@@ -4,9 +4,9 @@
/// To regenerate, run: `dart run slang` /// To regenerate, run: `dart run slang`
/// ///
/// Locales: 9 /// Locales: 9
/// Strings: 7263 (807 per locale) /// Strings: 7173 (797 per locale)
/// ///
/// Built on 2026-03-02 at 20:21 UTC /// Built on 2026-03-02 at 21:41 UTC
// coverage:ignore-file // coverage:ignore-file
// ignore_for_file: type=lint, unused_import // ignore_for_file: type=lint, unused_import
+10 -30
View File
@@ -169,7 +169,7 @@ class _TranslationsScreensDe implements TranslationsScreensEn {
@override String get licenses => 'Lizenzen'; @override String get licenses => 'Lizenzen';
@override String get switchProfile => 'Profil wechseln'; @override String get switchProfile => 'Profil wechseln';
@override String get subtitleStyling => 'Untertitel-Stil'; @override String get subtitleStyling => 'Untertitel-Stil';
@override String get mpvConfig => 'MPV-Konfiguration'; @override String get mpvConfig => 'mpv.conf';
@override String get logs => 'Protokolle'; @override String get logs => 'Protokolle';
} }
@@ -247,7 +247,7 @@ class _TranslationsSettingsDe implements TranslationsSettingsEn {
@override String get playerBackend => 'Player-Backend'; @override String get playerBackend => 'Player-Backend';
@override String get exoPlayer => 'ExoPlayer (Empfohlen)'; @override String get exoPlayer => 'ExoPlayer (Empfohlen)';
@override String get exoPlayerDescription => 'Android-nativer Player mit besserer Hardware-Unterstützung'; @override String get exoPlayerDescription => 'Android-nativer Player mit besserer Hardware-Unterstützung';
@override String get mpv => 'MPV'; @override String get mpv => 'mpv';
@override String get mpvDescription => 'Erweiterter Player mit mehr Funktionen und ASS-Untertitel-Unterstützung'; @override String get mpvDescription => 'Erweiterter Player mit mehr Funktionen und ASS-Untertitel-Unterstützung';
@override String get hardwareDecoding => 'Hardware-Decodierung'; @override String get hardwareDecoding => 'Hardware-Decodierung';
@override String get hardwareDecodingDescription => 'Hardwarebeschleunigung verwenden, sofern verfügbar'; @override String get hardwareDecodingDescription => 'Hardwarebeschleunigung verwenden, sofern verfügbar';
@@ -595,19 +595,10 @@ class _TranslationsMpvConfigDe implements TranslationsMpvConfigEn {
final TranslationsDe _root; // ignore: unused_field final TranslationsDe _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'MPV-Konfiguration'; @override String get title => 'mpv-Konfiguration';
@override String get description => 'Erweiterte Videoplayer-Einstellungen'; @override String get description => 'Erweiterte Videoplayer-Einstellungen';
@override String get properties => 'Eigenschaften';
@override String get presets => 'Voreinstellungen'; @override String get presets => 'Voreinstellungen';
@override String get noProperties => 'Keine Eigenschaften konfiguriert';
@override String get noPresets => 'Keine gespeicherten Voreinstellungen'; @override String get noPresets => 'Keine gespeicherten Voreinstellungen';
@override String get addProperty => 'Eigenschaft hinzufügen';
@override String get editProperty => 'Eigenschaft bearbeiten';
@override String get deleteProperty => 'Eigenschaft löschen';
@override String get propertyKey => 'Eigenschaftsschlüssel';
@override String get propertyKeyHint => 'z.B. hwdec, demuxer-max-bytes';
@override String get propertyValue => 'Eigenschaftswert';
@override String get propertyValueHint => 'z.B. auto, 256000000';
@override String get saveAsPreset => 'Als Voreinstellung speichern...'; @override String get saveAsPreset => 'Als Voreinstellung speichern...';
@override String get presetName => 'Name der Voreinstellung'; @override String get presetName => 'Name der Voreinstellung';
@override String get presetNameHint => 'Namen für diese Voreinstellung eingeben'; @override String get presetNameHint => 'Namen für diese Voreinstellung eingeben';
@@ -617,8 +608,7 @@ class _TranslationsMpvConfigDe implements TranslationsMpvConfigEn {
@override String get presetLoaded => 'Voreinstellung geladen'; @override String get presetLoaded => 'Voreinstellung geladen';
@override String get presetDeleted => 'Voreinstellung gelöscht'; @override String get presetDeleted => 'Voreinstellung gelöscht';
@override String get confirmDeletePreset => 'Möchten Sie diese Voreinstellung wirklich löschen?'; @override String get confirmDeletePreset => 'Möchten Sie diese Voreinstellung wirklich löschen?';
@override String get confirmDeleteProperty => 'Möchten Sie diese Eigenschaft wirklich löschen?'; @override String get configPlaceholder => 'gpu-api=vulkan\nhwdec=auto\n# comment';
@override String entriesCount({required Object count}) => '${count} Einträge';
} }
// Path: dialog // Path: dialog
@@ -1362,7 +1352,7 @@ extension on TranslationsDe {
'screens.licenses' => 'Lizenzen', 'screens.licenses' => 'Lizenzen',
'screens.switchProfile' => 'Profil wechseln', 'screens.switchProfile' => 'Profil wechseln',
'screens.subtitleStyling' => 'Untertitel-Stil', 'screens.subtitleStyling' => 'Untertitel-Stil',
'screens.mpvConfig' => 'MPV-Konfiguration', 'screens.mpvConfig' => 'mpv.conf',
'screens.logs' => 'Protokolle', 'screens.logs' => 'Protokolle',
'update.available' => 'Update verfügbar', 'update.available' => 'Update verfügbar',
'update.versionAvailable' => ({required Object version}) => 'Version ${version} ist verfügbar', 'update.versionAvailable' => ({required Object version}) => 'Version ${version} ist verfügbar',
@@ -1422,7 +1412,7 @@ extension on TranslationsDe {
'settings.playerBackend' => 'Player-Backend', 'settings.playerBackend' => 'Player-Backend',
'settings.exoPlayer' => 'ExoPlayer (Empfohlen)', 'settings.exoPlayer' => 'ExoPlayer (Empfohlen)',
'settings.exoPlayerDescription' => 'Android-nativer Player mit besserer Hardware-Unterstützung', 'settings.exoPlayerDescription' => 'Android-nativer Player mit besserer Hardware-Unterstützung',
'settings.mpv' => 'MPV', 'settings.mpv' => 'mpv',
'settings.mpvDescription' => 'Erweiterter Player mit mehr Funktionen und ASS-Untertitel-Unterstützung', 'settings.mpvDescription' => 'Erweiterter Player mit mehr Funktionen und ASS-Untertitel-Unterstützung',
'settings.hardwareDecoding' => 'Hardware-Decodierung', 'settings.hardwareDecoding' => 'Hardware-Decodierung',
'settings.hardwareDecodingDescription' => 'Hardwarebeschleunigung verwenden, sofern verfügbar', 'settings.hardwareDecodingDescription' => 'Hardwarebeschleunigung verwenden, sofern verfügbar',
@@ -1686,19 +1676,10 @@ extension on TranslationsDe {
'subtitlingStyling.backgroundOpacity' => 'Hintergrunddeckkraft', 'subtitlingStyling.backgroundOpacity' => 'Hintergrunddeckkraft',
'subtitlingStyling.backgroundColor' => 'Hintergrundfarbe', 'subtitlingStyling.backgroundColor' => 'Hintergrundfarbe',
'subtitlingStyling.position' => 'Position', 'subtitlingStyling.position' => 'Position',
'mpvConfig.title' => 'MPV-Konfiguration', 'mpvConfig.title' => 'mpv-Konfiguration',
'mpvConfig.description' => 'Erweiterte Videoplayer-Einstellungen', 'mpvConfig.description' => 'Erweiterte Videoplayer-Einstellungen',
'mpvConfig.properties' => 'Eigenschaften',
'mpvConfig.presets' => 'Voreinstellungen', 'mpvConfig.presets' => 'Voreinstellungen',
'mpvConfig.noProperties' => 'Keine Eigenschaften konfiguriert',
'mpvConfig.noPresets' => 'Keine gespeicherten Voreinstellungen', 'mpvConfig.noPresets' => 'Keine gespeicherten Voreinstellungen',
'mpvConfig.addProperty' => 'Eigenschaft hinzufügen',
'mpvConfig.editProperty' => 'Eigenschaft bearbeiten',
'mpvConfig.deleteProperty' => 'Eigenschaft löschen',
'mpvConfig.propertyKey' => 'Eigenschaftsschlüssel',
'mpvConfig.propertyKeyHint' => 'z.B. hwdec, demuxer-max-bytes',
'mpvConfig.propertyValue' => 'Eigenschaftswert',
'mpvConfig.propertyValueHint' => 'z.B. auto, 256000000',
'mpvConfig.saveAsPreset' => 'Als Voreinstellung speichern...', 'mpvConfig.saveAsPreset' => 'Als Voreinstellung speichern...',
'mpvConfig.presetName' => 'Name der Voreinstellung', 'mpvConfig.presetName' => 'Name der Voreinstellung',
'mpvConfig.presetNameHint' => 'Namen für diese Voreinstellung eingeben', 'mpvConfig.presetNameHint' => 'Namen für diese Voreinstellung eingeben',
@@ -1708,8 +1689,7 @@ extension on TranslationsDe {
'mpvConfig.presetLoaded' => 'Voreinstellung geladen', 'mpvConfig.presetLoaded' => 'Voreinstellung geladen',
'mpvConfig.presetDeleted' => 'Voreinstellung gelöscht', 'mpvConfig.presetDeleted' => 'Voreinstellung gelöscht',
'mpvConfig.confirmDeletePreset' => 'Möchten Sie diese Voreinstellung wirklich löschen?', 'mpvConfig.confirmDeletePreset' => 'Möchten Sie diese Voreinstellung wirklich löschen?',
'mpvConfig.confirmDeleteProperty' => 'Möchten Sie diese Eigenschaft wirklich löschen?', 'mpvConfig.configPlaceholder' => 'gpu-api=vulkan\nhwdec=auto\n# comment',
'mpvConfig.entriesCount' => ({required Object count}) => '${count} Einträge',
'dialog.confirmAction' => 'Aktion bestätigen', 'dialog.confirmAction' => 'Aktion bestätigen',
'discover.title' => 'Entdecken', 'discover.title' => 'Entdecken',
'discover.switchProfile' => 'Profil wechseln', 'discover.switchProfile' => 'Profil wechseln',
@@ -1816,8 +1796,6 @@ extension on TranslationsDe {
'liveTv.noChannels' => 'Keine Kanäle verfügbar', 'liveTv.noChannels' => 'Keine Kanäle verfügbar',
'liveTv.noDvr' => 'Kein DVR auf einem Server konfiguriert', 'liveTv.noDvr' => 'Kein DVR auf einem Server konfiguriert',
'liveTv.tuneFailed' => 'Kanal konnte nicht eingestellt werden', 'liveTv.tuneFailed' => 'Kanal konnte nicht eingestellt werden',
_ => null,
} ?? switch (path) {
'liveTv.loading' => 'Kanäle werden geladen...', 'liveTv.loading' => 'Kanäle werden geladen...',
'liveTv.nowPlaying' => 'Läuft gerade', 'liveTv.nowPlaying' => 'Läuft gerade',
'liveTv.noPrograms' => 'Keine Programmdaten verfügbar', 'liveTv.noPrograms' => 'Keine Programmdaten verfügbar',
@@ -1828,6 +1806,8 @@ extension on TranslationsDe {
'liveTv.reloadGuide' => 'Programmführer neu laden', 'liveTv.reloadGuide' => 'Programmführer neu laden',
'liveTv.allChannels' => 'Alle Kanäle', 'liveTv.allChannels' => 'Alle Kanäle',
'liveTv.now' => 'Jetzt', 'liveTv.now' => 'Jetzt',
_ => null,
} ?? switch (path) {
'liveTv.today' => 'Heute', 'liveTv.today' => 'Heute',
'liveTv.midnight' => 'Mitternacht', 'liveTv.midnight' => 'Mitternacht',
'liveTv.overnight' => 'Nacht', 'liveTv.overnight' => 'Nacht',
+14 -54
View File
@@ -289,8 +289,8 @@ class TranslationsScreensEn {
/// en: 'Subtitle Styling' /// en: 'Subtitle Styling'
String get subtitleStyling => 'Subtitle Styling'; String get subtitleStyling => 'Subtitle Styling';
/// en: 'MPV Configuration' /// en: 'mpv.conf'
String get mpvConfig => 'MPV Configuration'; String get mpvConfig => 'mpv.conf';
/// en: 'Logs' /// en: 'Logs'
String get logs => 'Logs'; String get logs => 'Logs';
@@ -487,8 +487,8 @@ class TranslationsSettingsEn {
/// en: 'Android native player with better hardware support' /// en: 'Android native player with better hardware support'
String get exoPlayerDescription => 'Android native player with better hardware support'; String get exoPlayerDescription => 'Android native player with better hardware support';
/// en: 'MPV' /// en: 'mpv'
String get mpv => 'MPV'; String get mpv => 'mpv';
/// en: 'Advanced player with more features and ASS subtitle support' /// en: 'Advanced player with more features and ASS subtitle support'
String get mpvDescription => 'Advanced player with more features and ASS subtitle support'; String get mpvDescription => 'Advanced player with more features and ASS subtitle support';
@@ -1313,45 +1313,18 @@ class TranslationsMpvConfigEn {
// Translations // Translations
/// en: 'MPV Configuration' /// en: 'mpv.conf'
String get title => 'MPV Configuration'; String get title => 'mpv.conf';
/// en: 'Advanced video player settings' /// en: 'Advanced video player settings'
String get description => 'Advanced video player settings'; String get description => 'Advanced video player settings';
/// en: 'Properties'
String get properties => 'Properties';
/// en: 'Presets' /// en: 'Presets'
String get presets => 'Presets'; String get presets => 'Presets';
/// en: 'No properties configured'
String get noProperties => 'No properties configured';
/// en: 'No saved presets' /// en: 'No saved presets'
String get noPresets => 'No saved presets'; String get noPresets => 'No saved presets';
/// en: 'Add Property'
String get addProperty => 'Add Property';
/// en: 'Edit Property'
String get editProperty => 'Edit Property';
/// en: 'Delete Property'
String get deleteProperty => 'Delete Property';
/// en: 'Property Key'
String get propertyKey => 'Property Key';
/// en: 'e.g., hwdec, demuxer-max-bytes'
String get propertyKeyHint => 'e.g., hwdec, demuxer-max-bytes';
/// en: 'Property Value'
String get propertyValue => 'Property Value';
/// en: 'e.g., auto, 256000000'
String get propertyValueHint => 'e.g., auto, 256000000';
/// en: 'Save as Preset...' /// en: 'Save as Preset...'
String get saveAsPreset => 'Save as Preset...'; String get saveAsPreset => 'Save as Preset...';
@@ -1379,11 +1352,8 @@ class TranslationsMpvConfigEn {
/// en: 'Are you sure you want to delete this preset?' /// en: 'Are you sure you want to delete this preset?'
String get confirmDeletePreset => 'Are you sure you want to delete this preset?'; String get confirmDeletePreset => 'Are you sure you want to delete this preset?';
/// en: 'Are you sure you want to delete this property?' /// en: 'gpu-api=vulkan hwdec=auto # comment'
String get confirmDeleteProperty => 'Are you sure you want to delete this property?'; String get configPlaceholder => 'gpu-api=vulkan\nhwdec=auto\n# comment';
/// en: '${count} entries'
String entriesCount({required Object count}) => '${count} entries';
} }
// Path: dialog // Path: dialog
@@ -2983,7 +2953,7 @@ extension on Translations {
'screens.licenses' => 'Licenses', 'screens.licenses' => 'Licenses',
'screens.switchProfile' => 'Switch Profile', 'screens.switchProfile' => 'Switch Profile',
'screens.subtitleStyling' => 'Subtitle Styling', 'screens.subtitleStyling' => 'Subtitle Styling',
'screens.mpvConfig' => 'MPV Configuration', 'screens.mpvConfig' => 'mpv.conf',
'screens.logs' => 'Logs', 'screens.logs' => 'Logs',
'update.available' => 'Update Available', 'update.available' => 'Update Available',
'update.versionAvailable' => ({required Object version}) => 'Version ${version} is available', 'update.versionAvailable' => ({required Object version}) => 'Version ${version} is available',
@@ -3043,7 +3013,7 @@ extension on Translations {
'settings.playerBackend' => 'Player Backend', 'settings.playerBackend' => 'Player Backend',
'settings.exoPlayer' => 'ExoPlayer (Recommended)', 'settings.exoPlayer' => 'ExoPlayer (Recommended)',
'settings.exoPlayerDescription' => 'Android native player with better hardware support', 'settings.exoPlayerDescription' => 'Android native player with better hardware support',
'settings.mpv' => 'MPV', 'settings.mpv' => 'mpv',
'settings.mpvDescription' => 'Advanced player with more features and ASS subtitle support', 'settings.mpvDescription' => 'Advanced player with more features and ASS subtitle support',
'settings.hardwareDecoding' => 'Hardware Decoding', 'settings.hardwareDecoding' => 'Hardware Decoding',
'settings.hardwareDecodingDescription' => 'Use hardware acceleration when available', 'settings.hardwareDecodingDescription' => 'Use hardware acceleration when available',
@@ -3307,19 +3277,10 @@ extension on Translations {
'subtitlingStyling.backgroundOpacity' => 'Background Opacity', 'subtitlingStyling.backgroundOpacity' => 'Background Opacity',
'subtitlingStyling.backgroundColor' => 'Background Color', 'subtitlingStyling.backgroundColor' => 'Background Color',
'subtitlingStyling.position' => 'Position', 'subtitlingStyling.position' => 'Position',
'mpvConfig.title' => 'MPV Configuration', 'mpvConfig.title' => 'mpv.conf',
'mpvConfig.description' => 'Advanced video player settings', 'mpvConfig.description' => 'Advanced video player settings',
'mpvConfig.properties' => 'Properties',
'mpvConfig.presets' => 'Presets', 'mpvConfig.presets' => 'Presets',
'mpvConfig.noProperties' => 'No properties configured',
'mpvConfig.noPresets' => 'No saved presets', 'mpvConfig.noPresets' => 'No saved presets',
'mpvConfig.addProperty' => 'Add Property',
'mpvConfig.editProperty' => 'Edit Property',
'mpvConfig.deleteProperty' => 'Delete Property',
'mpvConfig.propertyKey' => 'Property Key',
'mpvConfig.propertyKeyHint' => 'e.g., hwdec, demuxer-max-bytes',
'mpvConfig.propertyValue' => 'Property Value',
'mpvConfig.propertyValueHint' => 'e.g., auto, 256000000',
'mpvConfig.saveAsPreset' => 'Save as Preset...', 'mpvConfig.saveAsPreset' => 'Save as Preset...',
'mpvConfig.presetName' => 'Preset Name', 'mpvConfig.presetName' => 'Preset Name',
'mpvConfig.presetNameHint' => 'Enter a name for this preset', 'mpvConfig.presetNameHint' => 'Enter a name for this preset',
@@ -3329,8 +3290,7 @@ extension on Translations {
'mpvConfig.presetLoaded' => 'Preset loaded', 'mpvConfig.presetLoaded' => 'Preset loaded',
'mpvConfig.presetDeleted' => 'Preset deleted', 'mpvConfig.presetDeleted' => 'Preset deleted',
'mpvConfig.confirmDeletePreset' => 'Are you sure you want to delete this preset?', 'mpvConfig.confirmDeletePreset' => 'Are you sure you want to delete this preset?',
'mpvConfig.confirmDeleteProperty' => 'Are you sure you want to delete this property?', 'mpvConfig.configPlaceholder' => 'gpu-api=vulkan\nhwdec=auto\n# comment',
'mpvConfig.entriesCount' => ({required Object count}) => '${count} entries',
'dialog.confirmAction' => 'Confirm Action', 'dialog.confirmAction' => 'Confirm Action',
'discover.title' => 'Discover', 'discover.title' => 'Discover',
'discover.switchProfile' => 'Switch Profile', 'discover.switchProfile' => 'Switch Profile',
@@ -3437,8 +3397,6 @@ extension on Translations {
'liveTv.noChannels' => 'No channels available', 'liveTv.noChannels' => 'No channels available',
'liveTv.noDvr' => 'No DVR configured on any server', 'liveTv.noDvr' => 'No DVR configured on any server',
'liveTv.tuneFailed' => 'Failed to tune channel', 'liveTv.tuneFailed' => 'Failed to tune channel',
_ => null,
} ?? switch (path) {
'liveTv.loading' => 'Loading channels...', 'liveTv.loading' => 'Loading channels...',
'liveTv.nowPlaying' => 'Now Playing', 'liveTv.nowPlaying' => 'Now Playing',
'liveTv.noPrograms' => 'No program data available', 'liveTv.noPrograms' => 'No program data available',
@@ -3449,6 +3407,8 @@ extension on Translations {
'liveTv.reloadGuide' => 'Reload Guide', 'liveTv.reloadGuide' => 'Reload Guide',
'liveTv.allChannels' => 'All Channels', 'liveTv.allChannels' => 'All Channels',
'liveTv.now' => 'Now', 'liveTv.now' => 'Now',
_ => null,
} ?? switch (path) {
'liveTv.today' => 'Today', 'liveTv.today' => 'Today',
'liveTv.midnight' => 'Midnight', 'liveTv.midnight' => 'Midnight',
'liveTv.overnight' => 'Overnight', 'liveTv.overnight' => 'Overnight',
+10 -30
View File
@@ -169,7 +169,7 @@ class _TranslationsScreensEs implements TranslationsScreensEn {
@override String get licenses => 'Licencias'; @override String get licenses => 'Licencias';
@override String get switchProfile => 'Cambiar Perfil'; @override String get switchProfile => 'Cambiar Perfil';
@override String get subtitleStyling => 'Estilo de Subtítulos'; @override String get subtitleStyling => 'Estilo de Subtítulos';
@override String get mpvConfig => 'Configuración de MPV'; @override String get mpvConfig => 'mpv.conf';
@override String get logs => 'Logs'; @override String get logs => 'Logs';
} }
@@ -247,7 +247,7 @@ class _TranslationsSettingsEs implements TranslationsSettingsEn {
@override String get playerBackend => 'Reproductor'; @override String get playerBackend => 'Reproductor';
@override String get exoPlayer => 'ExoPlayer (Recomendado)'; @override String get exoPlayer => 'ExoPlayer (Recomendado)';
@override String get exoPlayerDescription => 'Reproductor nativo de Android con mejor soporte de hardware'; @override String get exoPlayerDescription => 'Reproductor nativo de Android con mejor soporte de hardware';
@override String get mpv => 'MPV'; @override String get mpv => 'mpv';
@override String get mpvDescription => 'Reproductor avanzado con más funciones y soporte de subtítulos ASS'; @override String get mpvDescription => 'Reproductor avanzado con más funciones y soporte de subtítulos ASS';
@override String get hardwareDecoding => 'Decodificación por Hardware'; @override String get hardwareDecoding => 'Decodificación por Hardware';
@override String get hardwareDecodingDescription => 'Usar aceleración por hardware cuando esté disponible'; @override String get hardwareDecodingDescription => 'Usar aceleración por hardware cuando esté disponible';
@@ -595,19 +595,10 @@ class _TranslationsMpvConfigEs implements TranslationsMpvConfigEn {
final TranslationsEs _root; // ignore: unused_field final TranslationsEs _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'Configuración de MPV'; @override String get title => 'Configuración de mpv';
@override String get description => 'Ajustes avanzados del reproductor de video'; @override String get description => 'Ajustes avanzados del reproductor de video';
@override String get properties => 'Propiedades';
@override String get presets => 'Ajustes preestablecidos'; @override String get presets => 'Ajustes preestablecidos';
@override String get noProperties => 'No hay propiedades configuradas';
@override String get noPresets => 'No hay ajustes guardados'; @override String get noPresets => 'No hay ajustes guardados';
@override String get addProperty => 'Añadir Propiedad';
@override String get editProperty => 'Editar Propiedad';
@override String get deleteProperty => 'Eliminar Propiedad';
@override String get propertyKey => 'Clave de la Propiedad';
@override String get propertyKeyHint => 'ej., hwdec, demuxer-max-bytes';
@override String get propertyValue => 'Valor de la Propiedad';
@override String get propertyValueHint => 'ej., auto, 256000000';
@override String get saveAsPreset => 'Guardar como Ajuste...'; @override String get saveAsPreset => 'Guardar como Ajuste...';
@override String get presetName => 'Nombre del Ajuste'; @override String get presetName => 'Nombre del Ajuste';
@override String get presetNameHint => 'Introduce un nombre para este ajuste'; @override String get presetNameHint => 'Introduce un nombre para este ajuste';
@@ -617,8 +608,7 @@ class _TranslationsMpvConfigEs implements TranslationsMpvConfigEn {
@override String get presetLoaded => 'Ajuste cargado'; @override String get presetLoaded => 'Ajuste cargado';
@override String get presetDeleted => 'Ajuste eliminado'; @override String get presetDeleted => 'Ajuste eliminado';
@override String get confirmDeletePreset => '¿Estás seguro de que quieres eliminar este ajuste?'; @override String get confirmDeletePreset => '¿Estás seguro de que quieres eliminar este ajuste?';
@override String get confirmDeleteProperty => '¿Estás seguro de que quieres eliminar esta propiedad?'; @override String get configPlaceholder => 'gpu-api=vulkan\nhwdec=auto\n# comment';
@override String entriesCount({required Object count}) => '${count} entradas';
} }
// Path: dialog // Path: dialog
@@ -1362,7 +1352,7 @@ extension on TranslationsEs {
'screens.licenses' => 'Licencias', 'screens.licenses' => 'Licencias',
'screens.switchProfile' => 'Cambiar Perfil', 'screens.switchProfile' => 'Cambiar Perfil',
'screens.subtitleStyling' => 'Estilo de Subtítulos', 'screens.subtitleStyling' => 'Estilo de Subtítulos',
'screens.mpvConfig' => 'Configuración de MPV', 'screens.mpvConfig' => 'mpv.conf',
'screens.logs' => 'Logs', 'screens.logs' => 'Logs',
'update.available' => 'Actualización disponible', 'update.available' => 'Actualización disponible',
'update.versionAvailable' => ({required Object version}) => 'Versión ${version} disponible', 'update.versionAvailable' => ({required Object version}) => 'Versión ${version} disponible',
@@ -1422,7 +1412,7 @@ extension on TranslationsEs {
'settings.playerBackend' => 'Reproductor', 'settings.playerBackend' => 'Reproductor',
'settings.exoPlayer' => 'ExoPlayer (Recomendado)', 'settings.exoPlayer' => 'ExoPlayer (Recomendado)',
'settings.exoPlayerDescription' => 'Reproductor nativo de Android con mejor soporte de hardware', 'settings.exoPlayerDescription' => 'Reproductor nativo de Android con mejor soporte de hardware',
'settings.mpv' => 'MPV', 'settings.mpv' => 'mpv',
'settings.mpvDescription' => 'Reproductor avanzado con más funciones y soporte de subtítulos ASS', 'settings.mpvDescription' => 'Reproductor avanzado con más funciones y soporte de subtítulos ASS',
'settings.hardwareDecoding' => 'Decodificación por Hardware', 'settings.hardwareDecoding' => 'Decodificación por Hardware',
'settings.hardwareDecodingDescription' => 'Usar aceleración por hardware cuando esté disponible', 'settings.hardwareDecodingDescription' => 'Usar aceleración por hardware cuando esté disponible',
@@ -1686,19 +1676,10 @@ extension on TranslationsEs {
'subtitlingStyling.backgroundOpacity' => 'Opacidad de Fondo', 'subtitlingStyling.backgroundOpacity' => 'Opacidad de Fondo',
'subtitlingStyling.backgroundColor' => 'Color de Fondo', 'subtitlingStyling.backgroundColor' => 'Color de Fondo',
'subtitlingStyling.position' => 'Position', 'subtitlingStyling.position' => 'Position',
'mpvConfig.title' => 'Configuración de MPV', 'mpvConfig.title' => 'Configuración de mpv',
'mpvConfig.description' => 'Ajustes avanzados del reproductor de video', 'mpvConfig.description' => 'Ajustes avanzados del reproductor de video',
'mpvConfig.properties' => 'Propiedades',
'mpvConfig.presets' => 'Ajustes preestablecidos', 'mpvConfig.presets' => 'Ajustes preestablecidos',
'mpvConfig.noProperties' => 'No hay propiedades configuradas',
'mpvConfig.noPresets' => 'No hay ajustes guardados', 'mpvConfig.noPresets' => 'No hay ajustes guardados',
'mpvConfig.addProperty' => 'Añadir Propiedad',
'mpvConfig.editProperty' => 'Editar Propiedad',
'mpvConfig.deleteProperty' => 'Eliminar Propiedad',
'mpvConfig.propertyKey' => 'Clave de la Propiedad',
'mpvConfig.propertyKeyHint' => 'ej., hwdec, demuxer-max-bytes',
'mpvConfig.propertyValue' => 'Valor de la Propiedad',
'mpvConfig.propertyValueHint' => 'ej., auto, 256000000',
'mpvConfig.saveAsPreset' => 'Guardar como Ajuste...', 'mpvConfig.saveAsPreset' => 'Guardar como Ajuste...',
'mpvConfig.presetName' => 'Nombre del Ajuste', 'mpvConfig.presetName' => 'Nombre del Ajuste',
'mpvConfig.presetNameHint' => 'Introduce un nombre para este ajuste', 'mpvConfig.presetNameHint' => 'Introduce un nombre para este ajuste',
@@ -1708,8 +1689,7 @@ extension on TranslationsEs {
'mpvConfig.presetLoaded' => 'Ajuste cargado', 'mpvConfig.presetLoaded' => 'Ajuste cargado',
'mpvConfig.presetDeleted' => 'Ajuste eliminado', 'mpvConfig.presetDeleted' => 'Ajuste eliminado',
'mpvConfig.confirmDeletePreset' => '¿Estás seguro de que quieres eliminar este ajuste?', 'mpvConfig.confirmDeletePreset' => '¿Estás seguro de que quieres eliminar este ajuste?',
'mpvConfig.confirmDeleteProperty' => '¿Estás seguro de que quieres eliminar esta propiedad?', 'mpvConfig.configPlaceholder' => 'gpu-api=vulkan\nhwdec=auto\n# comment',
'mpvConfig.entriesCount' => ({required Object count}) => '${count} entradas',
'dialog.confirmAction' => 'Confirmar Acción', 'dialog.confirmAction' => 'Confirmar Acción',
'discover.title' => 'Descubrir', 'discover.title' => 'Descubrir',
'discover.switchProfile' => 'Cambiar Perfil', 'discover.switchProfile' => 'Cambiar Perfil',
@@ -1816,8 +1796,6 @@ extension on TranslationsEs {
'liveTv.noChannels' => 'No hay canales disponibles', 'liveTv.noChannels' => 'No hay canales disponibles',
'liveTv.noDvr' => 'No hay DVR configurado en ningún servidor', 'liveTv.noDvr' => 'No hay DVR configurado en ningún servidor',
'liveTv.tuneFailed' => 'Error al sintonizar el canal', 'liveTv.tuneFailed' => 'Error al sintonizar el canal',
_ => null,
} ?? switch (path) {
'liveTv.loading' => 'Cargando canales...', 'liveTv.loading' => 'Cargando canales...',
'liveTv.nowPlaying' => 'Reproduciendo ahora', 'liveTv.nowPlaying' => 'Reproduciendo ahora',
'liveTv.noPrograms' => 'No hay datos de programación disponibles', 'liveTv.noPrograms' => 'No hay datos de programación disponibles',
@@ -1828,6 +1806,8 @@ extension on TranslationsEs {
'liveTv.reloadGuide' => 'Recargar guía', 'liveTv.reloadGuide' => 'Recargar guía',
'liveTv.allChannels' => 'Todos los canales', 'liveTv.allChannels' => 'Todos los canales',
'liveTv.now' => 'Ahora', 'liveTv.now' => 'Ahora',
_ => null,
} ?? switch (path) {
'liveTv.today' => 'Hoy', 'liveTv.today' => 'Hoy',
'liveTv.midnight' => 'Medianoche', 'liveTv.midnight' => 'Medianoche',
'liveTv.overnight' => 'Madrugada', 'liveTv.overnight' => 'Madrugada',
+10 -30
View File
@@ -169,7 +169,7 @@ class _TranslationsScreensFr implements TranslationsScreensEn {
@override String get licenses => 'Licenses'; @override String get licenses => 'Licenses';
@override String get switchProfile => 'Changer de profil'; @override String get switchProfile => 'Changer de profil';
@override String get subtitleStyling => 'Configuration des sous-titres'; @override String get subtitleStyling => 'Configuration des sous-titres';
@override String get mpvConfig => 'Configuration MPV'; @override String get mpvConfig => 'mpv.conf';
@override String get logs => 'Logs'; @override String get logs => 'Logs';
} }
@@ -247,7 +247,7 @@ class _TranslationsSettingsFr implements TranslationsSettingsEn {
@override String get playerBackend => 'Moteur de lecture'; @override String get playerBackend => 'Moteur de lecture';
@override String get exoPlayer => 'ExoPlayer (Recommandé)'; @override String get exoPlayer => 'ExoPlayer (Recommandé)';
@override String get exoPlayerDescription => 'Lecteur natif Android avec meilleur support matériel'; @override String get exoPlayerDescription => 'Lecteur natif Android avec meilleur support matériel';
@override String get mpv => 'MPV'; @override String get mpv => 'mpv';
@override String get mpvDescription => 'Lecteur avancé avec plus de fonctionnalités et support des sous-titres ASS'; @override String get mpvDescription => 'Lecteur avancé avec plus de fonctionnalités et support des sous-titres ASS';
@override String get hardwareDecoding => 'Décodage matériel'; @override String get hardwareDecoding => 'Décodage matériel';
@override String get hardwareDecodingDescription => 'Utilisez l\'accélération matérielle lorsqu\'elle est disponible.'; @override String get hardwareDecodingDescription => 'Utilisez l\'accélération matérielle lorsqu\'elle est disponible.';
@@ -595,19 +595,10 @@ class _TranslationsMpvConfigFr implements TranslationsMpvConfigEn {
final TranslationsFr _root; // ignore: unused_field final TranslationsFr _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'Configuration MPV'; @override String get title => 'Configuration mpv';
@override String get description => 'Paramètres avancés du lecteur vidéo'; @override String get description => 'Paramètres avancés du lecteur vidéo';
@override String get properties => 'Propriétés';
@override String get presets => 'Préréglages'; @override String get presets => 'Préréglages';
@override String get noProperties => 'Aucune propriété configurée';
@override String get noPresets => 'Aucun préréglage enregistré'; @override String get noPresets => 'Aucun préréglage enregistré';
@override String get addProperty => 'Ajouter une propriété';
@override String get editProperty => 'Modifier la propriété';
@override String get deleteProperty => 'Supprimer la propriété';
@override String get propertyKey => 'Clé';
@override String get propertyKeyHint => 'e.g., hwdec, demuxer-max-bytes';
@override String get propertyValue => 'Valeur';
@override String get propertyValueHint => 'e.g., auto, 256000000';
@override String get saveAsPreset => 'Enregistrer comme préréglage...'; @override String get saveAsPreset => 'Enregistrer comme préréglage...';
@override String get presetName => 'Nom du préréglage'; @override String get presetName => 'Nom du préréglage';
@override String get presetNameHint => 'Entrez un nom pour ce préréglage'; @override String get presetNameHint => 'Entrez un nom pour ce préréglage';
@@ -617,8 +608,7 @@ class _TranslationsMpvConfigFr implements TranslationsMpvConfigEn {
@override String get presetLoaded => 'Préréglage chargé'; @override String get presetLoaded => 'Préréglage chargé';
@override String get presetDeleted => 'Préréglage supprimé'; @override String get presetDeleted => 'Préréglage supprimé';
@override String get confirmDeletePreset => 'Êtes-vous sûr de vouloir supprimer ce préréglage ?'; @override String get confirmDeletePreset => 'Êtes-vous sûr de vouloir supprimer ce préréglage ?';
@override String get confirmDeleteProperty => 'Êtes-vous sûr de vouloir supprimer cette propriété ?'; @override String get configPlaceholder => 'gpu-api=vulkan\nhwdec=auto\n# comment';
@override String entriesCount({required Object count}) => '${count} entrées';
} }
// Path: dialog // Path: dialog
@@ -1362,7 +1352,7 @@ extension on TranslationsFr {
'screens.licenses' => 'Licenses', 'screens.licenses' => 'Licenses',
'screens.switchProfile' => 'Changer de profil', 'screens.switchProfile' => 'Changer de profil',
'screens.subtitleStyling' => 'Configuration des sous-titres', 'screens.subtitleStyling' => 'Configuration des sous-titres',
'screens.mpvConfig' => 'Configuration MPV', 'screens.mpvConfig' => 'mpv.conf',
'screens.logs' => 'Logs', 'screens.logs' => 'Logs',
'update.available' => 'Mise à jour disponible', 'update.available' => 'Mise à jour disponible',
'update.versionAvailable' => ({required Object version}) => 'Version ${version} disponible', 'update.versionAvailable' => ({required Object version}) => 'Version ${version} disponible',
@@ -1422,7 +1412,7 @@ extension on TranslationsFr {
'settings.playerBackend' => 'Moteur de lecture', 'settings.playerBackend' => 'Moteur de lecture',
'settings.exoPlayer' => 'ExoPlayer (Recommandé)', 'settings.exoPlayer' => 'ExoPlayer (Recommandé)',
'settings.exoPlayerDescription' => 'Lecteur natif Android avec meilleur support matériel', 'settings.exoPlayerDescription' => 'Lecteur natif Android avec meilleur support matériel',
'settings.mpv' => 'MPV', 'settings.mpv' => 'mpv',
'settings.mpvDescription' => 'Lecteur avancé avec plus de fonctionnalités et support des sous-titres ASS', 'settings.mpvDescription' => 'Lecteur avancé avec plus de fonctionnalités et support des sous-titres ASS',
'settings.hardwareDecoding' => 'Décodage matériel', 'settings.hardwareDecoding' => 'Décodage matériel',
'settings.hardwareDecodingDescription' => 'Utilisez l\'accélération matérielle lorsqu\'elle est disponible.', 'settings.hardwareDecodingDescription' => 'Utilisez l\'accélération matérielle lorsqu\'elle est disponible.',
@@ -1686,19 +1676,10 @@ extension on TranslationsFr {
'subtitlingStyling.backgroundOpacity' => 'Opacité d\'arrière-plan', 'subtitlingStyling.backgroundOpacity' => 'Opacité d\'arrière-plan',
'subtitlingStyling.backgroundColor' => 'Couleur d\'arrière-plan', 'subtitlingStyling.backgroundColor' => 'Couleur d\'arrière-plan',
'subtitlingStyling.position' => 'Position', 'subtitlingStyling.position' => 'Position',
'mpvConfig.title' => 'Configuration MPV', 'mpvConfig.title' => 'Configuration mpv',
'mpvConfig.description' => 'Paramètres avancés du lecteur vidéo', 'mpvConfig.description' => 'Paramètres avancés du lecteur vidéo',
'mpvConfig.properties' => 'Propriétés',
'mpvConfig.presets' => 'Préréglages', 'mpvConfig.presets' => 'Préréglages',
'mpvConfig.noProperties' => 'Aucune propriété configurée',
'mpvConfig.noPresets' => 'Aucun préréglage enregistré', 'mpvConfig.noPresets' => 'Aucun préréglage enregistré',
'mpvConfig.addProperty' => 'Ajouter une propriété',
'mpvConfig.editProperty' => 'Modifier la propriété',
'mpvConfig.deleteProperty' => 'Supprimer la propriété',
'mpvConfig.propertyKey' => 'Clé',
'mpvConfig.propertyKeyHint' => 'e.g., hwdec, demuxer-max-bytes',
'mpvConfig.propertyValue' => 'Valeur',
'mpvConfig.propertyValueHint' => 'e.g., auto, 256000000',
'mpvConfig.saveAsPreset' => 'Enregistrer comme préréglage...', 'mpvConfig.saveAsPreset' => 'Enregistrer comme préréglage...',
'mpvConfig.presetName' => 'Nom du préréglage', 'mpvConfig.presetName' => 'Nom du préréglage',
'mpvConfig.presetNameHint' => 'Entrez un nom pour ce préréglage', 'mpvConfig.presetNameHint' => 'Entrez un nom pour ce préréglage',
@@ -1708,8 +1689,7 @@ extension on TranslationsFr {
'mpvConfig.presetLoaded' => 'Préréglage chargé', 'mpvConfig.presetLoaded' => 'Préréglage chargé',
'mpvConfig.presetDeleted' => 'Préréglage supprimé', 'mpvConfig.presetDeleted' => 'Préréglage supprimé',
'mpvConfig.confirmDeletePreset' => 'Êtes-vous sûr de vouloir supprimer ce préréglage ?', 'mpvConfig.confirmDeletePreset' => 'Êtes-vous sûr de vouloir supprimer ce préréglage ?',
'mpvConfig.confirmDeleteProperty' => 'Êtes-vous sûr de vouloir supprimer cette propriété ?', 'mpvConfig.configPlaceholder' => 'gpu-api=vulkan\nhwdec=auto\n# comment',
'mpvConfig.entriesCount' => ({required Object count}) => '${count} entrées',
'dialog.confirmAction' => 'Confirmer l\'action', 'dialog.confirmAction' => 'Confirmer l\'action',
'discover.title' => 'Découvrez', 'discover.title' => 'Découvrez',
'discover.switchProfile' => 'Changer de profil', 'discover.switchProfile' => 'Changer de profil',
@@ -1816,8 +1796,6 @@ extension on TranslationsFr {
'liveTv.noChannels' => 'Aucune chaîne disponible', 'liveTv.noChannels' => 'Aucune chaîne disponible',
'liveTv.noDvr' => 'Aucun DVR configuré sur les serveurs', 'liveTv.noDvr' => 'Aucun DVR configuré sur les serveurs',
'liveTv.tuneFailed' => 'Impossible de syntoniser la chaîne', 'liveTv.tuneFailed' => 'Impossible de syntoniser la chaîne',
_ => null,
} ?? switch (path) {
'liveTv.loading' => 'Chargement des chaînes...', 'liveTv.loading' => 'Chargement des chaînes...',
'liveTv.nowPlaying' => 'En cours de lecture', 'liveTv.nowPlaying' => 'En cours de lecture',
'liveTv.noPrograms' => 'Aucune donnée de programme disponible', 'liveTv.noPrograms' => 'Aucune donnée de programme disponible',
@@ -1828,6 +1806,8 @@ extension on TranslationsFr {
'liveTv.reloadGuide' => 'Recharger le guide', 'liveTv.reloadGuide' => 'Recharger le guide',
'liveTv.allChannels' => 'Toutes les chaînes', 'liveTv.allChannels' => 'Toutes les chaînes',
'liveTv.now' => 'Maintenant', 'liveTv.now' => 'Maintenant',
_ => null,
} ?? switch (path) {
'liveTv.today' => 'Aujourd\'hui', 'liveTv.today' => 'Aujourd\'hui',
'liveTv.midnight' => 'Minuit', 'liveTv.midnight' => 'Minuit',
'liveTv.overnight' => 'Nuit', 'liveTv.overnight' => 'Nuit',
+10 -30
View File
@@ -169,7 +169,7 @@ class _TranslationsScreensIt implements TranslationsScreensEn {
@override String get licenses => 'Licenze'; @override String get licenses => 'Licenze';
@override String get switchProfile => 'Cambia profilo'; @override String get switchProfile => 'Cambia profilo';
@override String get subtitleStyling => 'Stile sottotitoli'; @override String get subtitleStyling => 'Stile sottotitoli';
@override String get mpvConfig => 'Configurazione MPV'; @override String get mpvConfig => 'mpv.conf';
@override String get logs => 'Registro'; @override String get logs => 'Registro';
} }
@@ -247,7 +247,7 @@ class _TranslationsSettingsIt implements TranslationsSettingsEn {
@override String get playerBackend => 'Motore di riproduzione'; @override String get playerBackend => 'Motore di riproduzione';
@override String get exoPlayer => 'ExoPlayer (Consigliato)'; @override String get exoPlayer => 'ExoPlayer (Consigliato)';
@override String get exoPlayerDescription => 'Lettore nativo Android con migliore supporto hardware'; @override String get exoPlayerDescription => 'Lettore nativo Android con migliore supporto hardware';
@override String get mpv => 'MPV'; @override String get mpv => 'mpv';
@override String get mpvDescription => 'Lettore avanzato con più funzionalità e supporto sottotitoli ASS'; @override String get mpvDescription => 'Lettore avanzato con più funzionalità e supporto sottotitoli ASS';
@override String get hardwareDecoding => 'Decodifica Hardware'; @override String get hardwareDecoding => 'Decodifica Hardware';
@override String get hardwareDecodingDescription => 'Utilizza l\'accelerazione hardware quando disponibile'; @override String get hardwareDecodingDescription => 'Utilizza l\'accelerazione hardware quando disponibile';
@@ -595,19 +595,10 @@ class _TranslationsMpvConfigIt implements TranslationsMpvConfigEn {
final TranslationsIt _root; // ignore: unused_field final TranslationsIt _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'Configurazione MPV'; @override String get title => 'Configurazione mpv';
@override String get description => 'Impostazioni avanzate del lettore video'; @override String get description => 'Impostazioni avanzate del lettore video';
@override String get properties => 'Proprietà';
@override String get presets => 'Preset'; @override String get presets => 'Preset';
@override String get noProperties => 'Nessuna proprietà configurata';
@override String get noPresets => 'Nessun preset salvato'; @override String get noPresets => 'Nessun preset salvato';
@override String get addProperty => 'Aggiungi proprietà';
@override String get editProperty => 'Modifica proprietà';
@override String get deleteProperty => 'Elimina proprietà';
@override String get propertyKey => 'Chiave proprietà';
@override String get propertyKeyHint => 'es. hwdec, demuxer-max-bytes';
@override String get propertyValue => 'Valore proprietà';
@override String get propertyValueHint => 'es. auto, 256000000';
@override String get saveAsPreset => 'Salva come preset...'; @override String get saveAsPreset => 'Salva come preset...';
@override String get presetName => 'Nome preset'; @override String get presetName => 'Nome preset';
@override String get presetNameHint => 'Inserisci un nome per questo preset'; @override String get presetNameHint => 'Inserisci un nome per questo preset';
@@ -617,8 +608,7 @@ class _TranslationsMpvConfigIt implements TranslationsMpvConfigEn {
@override String get presetLoaded => 'Preset caricato'; @override String get presetLoaded => 'Preset caricato';
@override String get presetDeleted => 'Preset eliminato'; @override String get presetDeleted => 'Preset eliminato';
@override String get confirmDeletePreset => 'Sei sicuro di voler eliminare questo preset?'; @override String get confirmDeletePreset => 'Sei sicuro di voler eliminare questo preset?';
@override String get confirmDeleteProperty => 'Sei sicuro di voler eliminare questa proprietà?'; @override String get configPlaceholder => 'gpu-api=vulkan\nhwdec=auto\n# comment';
@override String entriesCount({required Object count}) => '${count} voci';
} }
// Path: dialog // Path: dialog
@@ -1362,7 +1352,7 @@ extension on TranslationsIt {
'screens.licenses' => 'Licenze', 'screens.licenses' => 'Licenze',
'screens.switchProfile' => 'Cambia profilo', 'screens.switchProfile' => 'Cambia profilo',
'screens.subtitleStyling' => 'Stile sottotitoli', 'screens.subtitleStyling' => 'Stile sottotitoli',
'screens.mpvConfig' => 'Configurazione MPV', 'screens.mpvConfig' => 'mpv.conf',
'screens.logs' => 'Registro', 'screens.logs' => 'Registro',
'update.available' => 'Aggiornamento disponibile', 'update.available' => 'Aggiornamento disponibile',
'update.versionAvailable' => ({required Object version}) => 'Versione ${version} disponibile', 'update.versionAvailable' => ({required Object version}) => 'Versione ${version} disponibile',
@@ -1422,7 +1412,7 @@ extension on TranslationsIt {
'settings.playerBackend' => 'Motore di riproduzione', 'settings.playerBackend' => 'Motore di riproduzione',
'settings.exoPlayer' => 'ExoPlayer (Consigliato)', 'settings.exoPlayer' => 'ExoPlayer (Consigliato)',
'settings.exoPlayerDescription' => 'Lettore nativo Android con migliore supporto hardware', 'settings.exoPlayerDescription' => 'Lettore nativo Android con migliore supporto hardware',
'settings.mpv' => 'MPV', 'settings.mpv' => 'mpv',
'settings.mpvDescription' => 'Lettore avanzato con più funzionalità e supporto sottotitoli ASS', 'settings.mpvDescription' => 'Lettore avanzato con più funzionalità e supporto sottotitoli ASS',
'settings.hardwareDecoding' => 'Decodifica Hardware', 'settings.hardwareDecoding' => 'Decodifica Hardware',
'settings.hardwareDecodingDescription' => 'Utilizza l\'accelerazione hardware quando disponibile', 'settings.hardwareDecodingDescription' => 'Utilizza l\'accelerazione hardware quando disponibile',
@@ -1686,19 +1676,10 @@ extension on TranslationsIt {
'subtitlingStyling.backgroundOpacity' => 'Opacità sfondo', 'subtitlingStyling.backgroundOpacity' => 'Opacità sfondo',
'subtitlingStyling.backgroundColor' => 'Colore sfondo', 'subtitlingStyling.backgroundColor' => 'Colore sfondo',
'subtitlingStyling.position' => 'Position', 'subtitlingStyling.position' => 'Position',
'mpvConfig.title' => 'Configurazione MPV', 'mpvConfig.title' => 'Configurazione mpv',
'mpvConfig.description' => 'Impostazioni avanzate del lettore video', 'mpvConfig.description' => 'Impostazioni avanzate del lettore video',
'mpvConfig.properties' => 'Proprietà',
'mpvConfig.presets' => 'Preset', 'mpvConfig.presets' => 'Preset',
'mpvConfig.noProperties' => 'Nessuna proprietà configurata',
'mpvConfig.noPresets' => 'Nessun preset salvato', 'mpvConfig.noPresets' => 'Nessun preset salvato',
'mpvConfig.addProperty' => 'Aggiungi proprietà',
'mpvConfig.editProperty' => 'Modifica proprietà',
'mpvConfig.deleteProperty' => 'Elimina proprietà',
'mpvConfig.propertyKey' => 'Chiave proprietà',
'mpvConfig.propertyKeyHint' => 'es. hwdec, demuxer-max-bytes',
'mpvConfig.propertyValue' => 'Valore proprietà',
'mpvConfig.propertyValueHint' => 'es. auto, 256000000',
'mpvConfig.saveAsPreset' => 'Salva come preset...', 'mpvConfig.saveAsPreset' => 'Salva come preset...',
'mpvConfig.presetName' => 'Nome preset', 'mpvConfig.presetName' => 'Nome preset',
'mpvConfig.presetNameHint' => 'Inserisci un nome per questo preset', 'mpvConfig.presetNameHint' => 'Inserisci un nome per questo preset',
@@ -1708,8 +1689,7 @@ extension on TranslationsIt {
'mpvConfig.presetLoaded' => 'Preset caricato', 'mpvConfig.presetLoaded' => 'Preset caricato',
'mpvConfig.presetDeleted' => 'Preset eliminato', 'mpvConfig.presetDeleted' => 'Preset eliminato',
'mpvConfig.confirmDeletePreset' => 'Sei sicuro di voler eliminare questo preset?', 'mpvConfig.confirmDeletePreset' => 'Sei sicuro di voler eliminare questo preset?',
'mpvConfig.confirmDeleteProperty' => 'Sei sicuro di voler eliminare questa proprietà?', 'mpvConfig.configPlaceholder' => 'gpu-api=vulkan\nhwdec=auto\n# comment',
'mpvConfig.entriesCount' => ({required Object count}) => '${count} voci',
'dialog.confirmAction' => 'Conferma azione', 'dialog.confirmAction' => 'Conferma azione',
'discover.title' => 'Esplora', 'discover.title' => 'Esplora',
'discover.switchProfile' => 'Cambia profilo', 'discover.switchProfile' => 'Cambia profilo',
@@ -1816,8 +1796,6 @@ extension on TranslationsIt {
'liveTv.noChannels' => 'Nessun canale disponibile', 'liveTv.noChannels' => 'Nessun canale disponibile',
'liveTv.noDvr' => 'Nessun DVR configurato su nessun server', 'liveTv.noDvr' => 'Nessun DVR configurato su nessun server',
'liveTv.tuneFailed' => 'Impossibile sintonizzare il canale', 'liveTv.tuneFailed' => 'Impossibile sintonizzare il canale',
_ => null,
} ?? switch (path) {
'liveTv.loading' => 'Caricamento canali...', 'liveTv.loading' => 'Caricamento canali...',
'liveTv.nowPlaying' => 'In riproduzione', 'liveTv.nowPlaying' => 'In riproduzione',
'liveTv.noPrograms' => 'Nessun dato di programma disponibile', 'liveTv.noPrograms' => 'Nessun dato di programma disponibile',
@@ -1828,6 +1806,8 @@ extension on TranslationsIt {
'liveTv.reloadGuide' => 'Ricarica guida', 'liveTv.reloadGuide' => 'Ricarica guida',
'liveTv.allChannels' => 'Tutti i canali', 'liveTv.allChannels' => 'Tutti i canali',
'liveTv.now' => 'Ora', 'liveTv.now' => 'Ora',
_ => null,
} ?? switch (path) {
'liveTv.today' => 'Oggi', 'liveTv.today' => 'Oggi',
'liveTv.midnight' => 'Mezzanotte', 'liveTv.midnight' => 'Mezzanotte',
'liveTv.overnight' => 'Notte', 'liveTv.overnight' => 'Notte',
+10 -30
View File
@@ -169,7 +169,7 @@ class _TranslationsScreensKo implements TranslationsScreensEn {
@override String get licenses => '라이선스'; @override String get licenses => '라이선스';
@override String get switchProfile => '프로필 전환'; @override String get switchProfile => '프로필 전환';
@override String get subtitleStyling => '자막 스타일 설정'; @override String get subtitleStyling => '자막 스타일 설정';
@override String get mpvConfig => 'MPV 설정'; @override String get mpvConfig => 'mpv.conf';
@override String get logs => '로그'; @override String get logs => '로그';
} }
@@ -247,7 +247,7 @@ class _TranslationsSettingsKo implements TranslationsSettingsEn {
@override String get playerBackend => '플레이어 백엔드'; @override String get playerBackend => '플레이어 백엔드';
@override String get exoPlayer => 'ExoPlayer (권장)'; @override String get exoPlayer => 'ExoPlayer (권장)';
@override String get exoPlayerDescription => '더 나은 하드웨어 지원을 제공하는 Android 네이티브 플레이어'; @override String get exoPlayerDescription => '더 나은 하드웨어 지원을 제공하는 Android 네이티브 플레이어';
@override String get mpv => 'MPV'; @override String get mpv => 'mpv';
@override String get mpvDescription => '더 많은 기능과 ASS 자막을 지원하는 고급 플레이어'; @override String get mpvDescription => '더 많은 기능과 ASS 자막을 지원하는 고급 플레이어';
@override String get hardwareDecoding => '하드웨어 디코딩'; @override String get hardwareDecoding => '하드웨어 디코딩';
@override String get hardwareDecodingDescription => '가능한 경우 하드웨어 가속을 사용합니다'; @override String get hardwareDecodingDescription => '가능한 경우 하드웨어 가속을 사용합니다';
@@ -595,19 +595,10 @@ class _TranslationsMpvConfigKo implements TranslationsMpvConfigEn {
final TranslationsKo _root; // ignore: unused_field final TranslationsKo _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'MPV 설정'; @override String get title => 'mpv 설정';
@override String get description => '고급 비디오 플레이어 설정'; @override String get description => '고급 비디오 플레이어 설정';
@override String get properties => '속성';
@override String get presets => '사전 설정'; @override String get presets => '사전 설정';
@override String get noProperties => '설정된 속성이 없습니다';
@override String get noPresets => '저장된 사전 설정이 없습니다'; @override String get noPresets => '저장된 사전 설정이 없습니다';
@override String get addProperty => '속성 추가';
@override String get editProperty => '속성 편집';
@override String get deleteProperty => '속성 삭제';
@override String get propertyKey => '속성 키';
@override String get propertyKeyHint => '예: hwdec, demuxer-max-bytes';
@override String get propertyValue => '속성값';
@override String get propertyValueHint => '예: auto, 256000000';
@override String get saveAsPreset => '프리셋으로 저장...'; @override String get saveAsPreset => '프리셋으로 저장...';
@override String get presetName => '프리셋 이름'; @override String get presetName => '프리셋 이름';
@override String get presetNameHint => '이 프리셋의 이름을 입력하세요'; @override String get presetNameHint => '이 프리셋의 이름을 입력하세요';
@@ -617,8 +608,7 @@ class _TranslationsMpvConfigKo implements TranslationsMpvConfigEn {
@override String get presetLoaded => '프리셋이 로드 되었습니다'; @override String get presetLoaded => '프리셋이 로드 되었습니다';
@override String get presetDeleted => '프리셋이 삭제 되었습니다'; @override String get presetDeleted => '프리셋이 삭제 되었습니다';
@override String get confirmDeletePreset => '이 프리셋을 삭제 하시겠습니까?'; @override String get confirmDeletePreset => '이 프리셋을 삭제 하시겠습니까?';
@override String get confirmDeleteProperty => '이 속성을 삭제 하시겠습니까?'; @override String get configPlaceholder => 'gpu-api=vulkan\nhwdec=auto\n# comment';
@override String entriesCount({required Object count}) => '${count} 항목';
} }
// Path: dialog // Path: dialog
@@ -1362,7 +1352,7 @@ extension on TranslationsKo {
'screens.licenses' => '라이선스', 'screens.licenses' => '라이선스',
'screens.switchProfile' => '프로필 전환', 'screens.switchProfile' => '프로필 전환',
'screens.subtitleStyling' => '자막 스타일 설정', 'screens.subtitleStyling' => '자막 스타일 설정',
'screens.mpvConfig' => 'MPV 설정', 'screens.mpvConfig' => 'mpv.conf',
'screens.logs' => '로그', 'screens.logs' => '로그',
'update.available' => '사용 가능한 업데이트', 'update.available' => '사용 가능한 업데이트',
'update.versionAvailable' => ({required Object version}) => '버전 ${version} 출시됨', 'update.versionAvailable' => ({required Object version}) => '버전 ${version} 출시됨',
@@ -1422,7 +1412,7 @@ extension on TranslationsKo {
'settings.playerBackend' => '플레이어 백엔드', 'settings.playerBackend' => '플레이어 백엔드',
'settings.exoPlayer' => 'ExoPlayer (권장)', 'settings.exoPlayer' => 'ExoPlayer (권장)',
'settings.exoPlayerDescription' => '더 나은 하드웨어 지원을 제공하는 Android 네이티브 플레이어', 'settings.exoPlayerDescription' => '더 나은 하드웨어 지원을 제공하는 Android 네이티브 플레이어',
'settings.mpv' => 'MPV', 'settings.mpv' => 'mpv',
'settings.mpvDescription' => '더 많은 기능과 ASS 자막을 지원하는 고급 플레이어', 'settings.mpvDescription' => '더 많은 기능과 ASS 자막을 지원하는 고급 플레이어',
'settings.hardwareDecoding' => '하드웨어 디코딩', 'settings.hardwareDecoding' => '하드웨어 디코딩',
'settings.hardwareDecodingDescription' => '가능한 경우 하드웨어 가속을 사용합니다', 'settings.hardwareDecodingDescription' => '가능한 경우 하드웨어 가속을 사용합니다',
@@ -1686,19 +1676,10 @@ extension on TranslationsKo {
'subtitlingStyling.backgroundOpacity' => '배경 불투명도', 'subtitlingStyling.backgroundOpacity' => '배경 불투명도',
'subtitlingStyling.backgroundColor' => '배경색', 'subtitlingStyling.backgroundColor' => '배경색',
'subtitlingStyling.position' => 'Position', 'subtitlingStyling.position' => 'Position',
'mpvConfig.title' => 'MPV 설정', 'mpvConfig.title' => 'mpv 설정',
'mpvConfig.description' => '고급 비디오 플레이어 설정', 'mpvConfig.description' => '고급 비디오 플레이어 설정',
'mpvConfig.properties' => '속성',
'mpvConfig.presets' => '사전 설정', 'mpvConfig.presets' => '사전 설정',
'mpvConfig.noProperties' => '설정된 속성이 없습니다',
'mpvConfig.noPresets' => '저장된 사전 설정이 없습니다', 'mpvConfig.noPresets' => '저장된 사전 설정이 없습니다',
'mpvConfig.addProperty' => '속성 추가',
'mpvConfig.editProperty' => '속성 편집',
'mpvConfig.deleteProperty' => '속성 삭제',
'mpvConfig.propertyKey' => '속성 키',
'mpvConfig.propertyKeyHint' => '예: hwdec, demuxer-max-bytes',
'mpvConfig.propertyValue' => '속성값',
'mpvConfig.propertyValueHint' => '예: auto, 256000000',
'mpvConfig.saveAsPreset' => '프리셋으로 저장...', 'mpvConfig.saveAsPreset' => '프리셋으로 저장...',
'mpvConfig.presetName' => '프리셋 이름', 'mpvConfig.presetName' => '프리셋 이름',
'mpvConfig.presetNameHint' => '이 프리셋의 이름을 입력하세요', 'mpvConfig.presetNameHint' => '이 프리셋의 이름을 입력하세요',
@@ -1708,8 +1689,7 @@ extension on TranslationsKo {
'mpvConfig.presetLoaded' => '프리셋이 로드 되었습니다', 'mpvConfig.presetLoaded' => '프리셋이 로드 되었습니다',
'mpvConfig.presetDeleted' => '프리셋이 삭제 되었습니다', 'mpvConfig.presetDeleted' => '프리셋이 삭제 되었습니다',
'mpvConfig.confirmDeletePreset' => '이 프리셋을 삭제 하시겠습니까?', 'mpvConfig.confirmDeletePreset' => '이 프리셋을 삭제 하시겠습니까?',
'mpvConfig.confirmDeleteProperty' => '이 속성을 삭제 하시겠습니까?', 'mpvConfig.configPlaceholder' => 'gpu-api=vulkan\nhwdec=auto\n# comment',
'mpvConfig.entriesCount' => ({required Object count}) => '${count} 항목',
'dialog.confirmAction' => '확인', 'dialog.confirmAction' => '확인',
'discover.title' => '발견', 'discover.title' => '발견',
'discover.switchProfile' => '사용자 전환', 'discover.switchProfile' => '사용자 전환',
@@ -1816,8 +1796,6 @@ extension on TranslationsKo {
'liveTv.noChannels' => '사용 가능한 채널이 없습니다', 'liveTv.noChannels' => '사용 가능한 채널이 없습니다',
'liveTv.noDvr' => '서버에 DVR이 구성되어 있지 않습니다', 'liveTv.noDvr' => '서버에 DVR이 구성되어 있지 않습니다',
'liveTv.tuneFailed' => '채널 튜닝에 실패했습니다', 'liveTv.tuneFailed' => '채널 튜닝에 실패했습니다',
_ => null,
} ?? switch (path) {
'liveTv.loading' => '채널 로딩 중...', 'liveTv.loading' => '채널 로딩 중...',
'liveTv.nowPlaying' => '현재 재생 중', 'liveTv.nowPlaying' => '현재 재생 중',
'liveTv.noPrograms' => '프로그램 데이터가 없습니다', 'liveTv.noPrograms' => '프로그램 데이터가 없습니다',
@@ -1828,6 +1806,8 @@ extension on TranslationsKo {
'liveTv.reloadGuide' => '편성표 새로고침', 'liveTv.reloadGuide' => '편성표 새로고침',
'liveTv.allChannels' => '전체 채널', 'liveTv.allChannels' => '전체 채널',
'liveTv.now' => '지금', 'liveTv.now' => '지금',
_ => null,
} ?? switch (path) {
'liveTv.today' => '오늘', 'liveTv.today' => '오늘',
'liveTv.midnight' => '자정', 'liveTv.midnight' => '자정',
'liveTv.overnight' => '심야', 'liveTv.overnight' => '심야',
+10 -30
View File
@@ -169,7 +169,7 @@ class _TranslationsScreensNl implements TranslationsScreensEn {
@override String get licenses => 'Licenties'; @override String get licenses => 'Licenties';
@override String get switchProfile => 'Wissel van profiel'; @override String get switchProfile => 'Wissel van profiel';
@override String get subtitleStyling => 'Ondertitel opmaak'; @override String get subtitleStyling => 'Ondertitel opmaak';
@override String get mpvConfig => 'MPV-configuratie'; @override String get mpvConfig => 'mpv.conf';
@override String get logs => 'Logbestanden'; @override String get logs => 'Logbestanden';
} }
@@ -247,7 +247,7 @@ class _TranslationsSettingsNl implements TranslationsSettingsEn {
@override String get playerBackend => 'Speler backend'; @override String get playerBackend => 'Speler backend';
@override String get exoPlayer => 'ExoPlayer (Aanbevolen)'; @override String get exoPlayer => 'ExoPlayer (Aanbevolen)';
@override String get exoPlayerDescription => 'Android-native speler met betere hardware-ondersteuning'; @override String get exoPlayerDescription => 'Android-native speler met betere hardware-ondersteuning';
@override String get mpv => 'MPV'; @override String get mpv => 'mpv';
@override String get mpvDescription => 'Geavanceerde speler met meer functies en ASS-ondertitelondersteuning'; @override String get mpvDescription => 'Geavanceerde speler met meer functies en ASS-ondertitelondersteuning';
@override String get hardwareDecoding => 'Hardware decodering'; @override String get hardwareDecoding => 'Hardware decodering';
@override String get hardwareDecodingDescription => 'Gebruik hardware versnelling indien beschikbaar'; @override String get hardwareDecodingDescription => 'Gebruik hardware versnelling indien beschikbaar';
@@ -595,19 +595,10 @@ class _TranslationsMpvConfigNl implements TranslationsMpvConfigEn {
final TranslationsNl _root; // ignore: unused_field final TranslationsNl _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'MPV-configuratie'; @override String get title => 'mpv-configuratie';
@override String get description => 'Geavanceerde videospeler-instellingen'; @override String get description => 'Geavanceerde videospeler-instellingen';
@override String get properties => 'Eigenschappen';
@override String get presets => 'Voorinstellingen'; @override String get presets => 'Voorinstellingen';
@override String get noProperties => 'Geen eigenschappen geconfigureerd';
@override String get noPresets => 'Geen opgeslagen voorinstellingen'; @override String get noPresets => 'Geen opgeslagen voorinstellingen';
@override String get addProperty => 'Eigenschap toevoegen';
@override String get editProperty => 'Eigenschap bewerken';
@override String get deleteProperty => 'Eigenschap verwijderen';
@override String get propertyKey => 'Eigenschapssleutel';
@override String get propertyKeyHint => 'bijv. hwdec, demuxer-max-bytes';
@override String get propertyValue => 'Eigenschapswaarde';
@override String get propertyValueHint => 'bijv. auto, 256000000';
@override String get saveAsPreset => 'Opslaan als voorinstelling...'; @override String get saveAsPreset => 'Opslaan als voorinstelling...';
@override String get presetName => 'Naam voorinstelling'; @override String get presetName => 'Naam voorinstelling';
@override String get presetNameHint => 'Voer een naam in voor deze voorinstelling'; @override String get presetNameHint => 'Voer een naam in voor deze voorinstelling';
@@ -617,8 +608,7 @@ class _TranslationsMpvConfigNl implements TranslationsMpvConfigEn {
@override String get presetLoaded => 'Voorinstelling geladen'; @override String get presetLoaded => 'Voorinstelling geladen';
@override String get presetDeleted => 'Voorinstelling verwijderd'; @override String get presetDeleted => 'Voorinstelling verwijderd';
@override String get confirmDeletePreset => 'Weet je zeker dat je deze voorinstelling wilt verwijderen?'; @override String get confirmDeletePreset => 'Weet je zeker dat je deze voorinstelling wilt verwijderen?';
@override String get confirmDeleteProperty => 'Weet je zeker dat je deze eigenschap wilt verwijderen?'; @override String get configPlaceholder => 'gpu-api=vulkan\nhwdec=auto\n# comment';
@override String entriesCount({required Object count}) => '${count} items';
} }
// Path: dialog // Path: dialog
@@ -1362,7 +1352,7 @@ extension on TranslationsNl {
'screens.licenses' => 'Licenties', 'screens.licenses' => 'Licenties',
'screens.switchProfile' => 'Wissel van profiel', 'screens.switchProfile' => 'Wissel van profiel',
'screens.subtitleStyling' => 'Ondertitel opmaak', 'screens.subtitleStyling' => 'Ondertitel opmaak',
'screens.mpvConfig' => 'MPV-configuratie', 'screens.mpvConfig' => 'mpv.conf',
'screens.logs' => 'Logbestanden', 'screens.logs' => 'Logbestanden',
'update.available' => 'Update beschikbaar', 'update.available' => 'Update beschikbaar',
'update.versionAvailable' => ({required Object version}) => 'Versie ${version} is beschikbaar', 'update.versionAvailable' => ({required Object version}) => 'Versie ${version} is beschikbaar',
@@ -1422,7 +1412,7 @@ extension on TranslationsNl {
'settings.playerBackend' => 'Speler backend', 'settings.playerBackend' => 'Speler backend',
'settings.exoPlayer' => 'ExoPlayer (Aanbevolen)', 'settings.exoPlayer' => 'ExoPlayer (Aanbevolen)',
'settings.exoPlayerDescription' => 'Android-native speler met betere hardware-ondersteuning', 'settings.exoPlayerDescription' => 'Android-native speler met betere hardware-ondersteuning',
'settings.mpv' => 'MPV', 'settings.mpv' => 'mpv',
'settings.mpvDescription' => 'Geavanceerde speler met meer functies en ASS-ondertitelondersteuning', 'settings.mpvDescription' => 'Geavanceerde speler met meer functies en ASS-ondertitelondersteuning',
'settings.hardwareDecoding' => 'Hardware decodering', 'settings.hardwareDecoding' => 'Hardware decodering',
'settings.hardwareDecodingDescription' => 'Gebruik hardware versnelling indien beschikbaar', 'settings.hardwareDecodingDescription' => 'Gebruik hardware versnelling indien beschikbaar',
@@ -1686,19 +1676,10 @@ extension on TranslationsNl {
'subtitlingStyling.backgroundOpacity' => 'Achtergrond transparantie', 'subtitlingStyling.backgroundOpacity' => 'Achtergrond transparantie',
'subtitlingStyling.backgroundColor' => 'Achtergrondkleur', 'subtitlingStyling.backgroundColor' => 'Achtergrondkleur',
'subtitlingStyling.position' => 'Position', 'subtitlingStyling.position' => 'Position',
'mpvConfig.title' => 'MPV-configuratie', 'mpvConfig.title' => 'mpv-configuratie',
'mpvConfig.description' => 'Geavanceerde videospeler-instellingen', 'mpvConfig.description' => 'Geavanceerde videospeler-instellingen',
'mpvConfig.properties' => 'Eigenschappen',
'mpvConfig.presets' => 'Voorinstellingen', 'mpvConfig.presets' => 'Voorinstellingen',
'mpvConfig.noProperties' => 'Geen eigenschappen geconfigureerd',
'mpvConfig.noPresets' => 'Geen opgeslagen voorinstellingen', 'mpvConfig.noPresets' => 'Geen opgeslagen voorinstellingen',
'mpvConfig.addProperty' => 'Eigenschap toevoegen',
'mpvConfig.editProperty' => 'Eigenschap bewerken',
'mpvConfig.deleteProperty' => 'Eigenschap verwijderen',
'mpvConfig.propertyKey' => 'Eigenschapssleutel',
'mpvConfig.propertyKeyHint' => 'bijv. hwdec, demuxer-max-bytes',
'mpvConfig.propertyValue' => 'Eigenschapswaarde',
'mpvConfig.propertyValueHint' => 'bijv. auto, 256000000',
'mpvConfig.saveAsPreset' => 'Opslaan als voorinstelling...', 'mpvConfig.saveAsPreset' => 'Opslaan als voorinstelling...',
'mpvConfig.presetName' => 'Naam voorinstelling', 'mpvConfig.presetName' => 'Naam voorinstelling',
'mpvConfig.presetNameHint' => 'Voer een naam in voor deze voorinstelling', 'mpvConfig.presetNameHint' => 'Voer een naam in voor deze voorinstelling',
@@ -1708,8 +1689,7 @@ extension on TranslationsNl {
'mpvConfig.presetLoaded' => 'Voorinstelling geladen', 'mpvConfig.presetLoaded' => 'Voorinstelling geladen',
'mpvConfig.presetDeleted' => 'Voorinstelling verwijderd', 'mpvConfig.presetDeleted' => 'Voorinstelling verwijderd',
'mpvConfig.confirmDeletePreset' => 'Weet je zeker dat je deze voorinstelling wilt verwijderen?', 'mpvConfig.confirmDeletePreset' => 'Weet je zeker dat je deze voorinstelling wilt verwijderen?',
'mpvConfig.confirmDeleteProperty' => 'Weet je zeker dat je deze eigenschap wilt verwijderen?', 'mpvConfig.configPlaceholder' => 'gpu-api=vulkan\nhwdec=auto\n# comment',
'mpvConfig.entriesCount' => ({required Object count}) => '${count} items',
'dialog.confirmAction' => 'Bevestig actie', 'dialog.confirmAction' => 'Bevestig actie',
'discover.title' => 'Ontdekken', 'discover.title' => 'Ontdekken',
'discover.switchProfile' => 'Wissel van profiel', 'discover.switchProfile' => 'Wissel van profiel',
@@ -1816,8 +1796,6 @@ extension on TranslationsNl {
'liveTv.noChannels' => 'Geen zenders beschikbaar', 'liveTv.noChannels' => 'Geen zenders beschikbaar',
'liveTv.noDvr' => 'Geen DVR geconfigureerd op een server', 'liveTv.noDvr' => 'Geen DVR geconfigureerd op een server',
'liveTv.tuneFailed' => 'Kan zender niet afstemmen', 'liveTv.tuneFailed' => 'Kan zender niet afstemmen',
_ => null,
} ?? switch (path) {
'liveTv.loading' => 'Zenders laden...', 'liveTv.loading' => 'Zenders laden...',
'liveTv.nowPlaying' => 'Nu aan het afspelen', 'liveTv.nowPlaying' => 'Nu aan het afspelen',
'liveTv.noPrograms' => 'Geen programmagegevens beschikbaar', 'liveTv.noPrograms' => 'Geen programmagegevens beschikbaar',
@@ -1828,6 +1806,8 @@ extension on TranslationsNl {
'liveTv.reloadGuide' => 'Gids herladen', 'liveTv.reloadGuide' => 'Gids herladen',
'liveTv.allChannels' => 'Alle zenders', 'liveTv.allChannels' => 'Alle zenders',
'liveTv.now' => 'Nu', 'liveTv.now' => 'Nu',
_ => null,
} ?? switch (path) {
'liveTv.today' => 'Vandaag', 'liveTv.today' => 'Vandaag',
'liveTv.midnight' => 'Middernacht', 'liveTv.midnight' => 'Middernacht',
'liveTv.overnight' => 'Nacht', 'liveTv.overnight' => 'Nacht',
+10 -30
View File
@@ -169,7 +169,7 @@ class _TranslationsScreensSv implements TranslationsScreensEn {
@override String get licenses => 'Licenser'; @override String get licenses => 'Licenser';
@override String get switchProfile => 'Byt profil'; @override String get switchProfile => 'Byt profil';
@override String get subtitleStyling => 'Undertext-styling'; @override String get subtitleStyling => 'Undertext-styling';
@override String get mpvConfig => 'MPV-konfiguration'; @override String get mpvConfig => 'mpv.conf';
@override String get logs => 'Loggar'; @override String get logs => 'Loggar';
} }
@@ -247,7 +247,7 @@ class _TranslationsSettingsSv implements TranslationsSettingsEn {
@override String get playerBackend => 'Spelarmotor'; @override String get playerBackend => 'Spelarmotor';
@override String get exoPlayer => 'ExoPlayer (Rekommenderad)'; @override String get exoPlayer => 'ExoPlayer (Rekommenderad)';
@override String get exoPlayerDescription => 'Android-nativ spelare med bättre hårdvarustöd'; @override String get exoPlayerDescription => 'Android-nativ spelare med bättre hårdvarustöd';
@override String get mpv => 'MPV'; @override String get mpv => 'mpv';
@override String get mpvDescription => 'Avancerad spelare med fler funktioner och ASS-undertextstöd'; @override String get mpvDescription => 'Avancerad spelare med fler funktioner och ASS-undertextstöd';
@override String get hardwareDecoding => 'Hårdvaruavkodning'; @override String get hardwareDecoding => 'Hårdvaruavkodning';
@override String get hardwareDecodingDescription => 'Använd hårdvaruacceleration när tillgängligt'; @override String get hardwareDecodingDescription => 'Använd hårdvaruacceleration när tillgängligt';
@@ -595,19 +595,10 @@ class _TranslationsMpvConfigSv implements TranslationsMpvConfigEn {
final TranslationsSv _root; // ignore: unused_field final TranslationsSv _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'MPV-konfiguration'; @override String get title => 'mpv-konfiguration';
@override String get description => 'Avancerade videospelares inställningar'; @override String get description => 'Avancerade videospelares inställningar';
@override String get properties => 'Egenskaper';
@override String get presets => 'Förval'; @override String get presets => 'Förval';
@override String get noProperties => 'Inga egenskaper konfigurerade';
@override String get noPresets => 'Inga sparade förval'; @override String get noPresets => 'Inga sparade förval';
@override String get addProperty => 'Lägg till egenskap';
@override String get editProperty => 'Redigera egenskap';
@override String get deleteProperty => 'Ta bort egenskap';
@override String get propertyKey => 'Egenskapsnyckel';
@override String get propertyKeyHint => 't.ex. hwdec, demuxer-max-bytes';
@override String get propertyValue => 'Egenskapsvärde';
@override String get propertyValueHint => 't.ex. auto, 256000000';
@override String get saveAsPreset => 'Spara som förval...'; @override String get saveAsPreset => 'Spara som förval...';
@override String get presetName => 'Förvalnamn'; @override String get presetName => 'Förvalnamn';
@override String get presetNameHint => 'Ange ett namn för detta förval'; @override String get presetNameHint => 'Ange ett namn för detta förval';
@@ -617,8 +608,7 @@ class _TranslationsMpvConfigSv implements TranslationsMpvConfigEn {
@override String get presetLoaded => 'Förval laddat'; @override String get presetLoaded => 'Förval laddat';
@override String get presetDeleted => 'Förval borttaget'; @override String get presetDeleted => 'Förval borttaget';
@override String get confirmDeletePreset => 'Är du säker på att du vill ta bort detta förval?'; @override String get confirmDeletePreset => 'Är du säker på att du vill ta bort detta förval?';
@override String get confirmDeleteProperty => 'Är du säker på att du vill ta bort denna egenskap?'; @override String get configPlaceholder => 'gpu-api=vulkan\nhwdec=auto\n# comment';
@override String entriesCount({required Object count}) => '${count} poster';
} }
// Path: dialog // Path: dialog
@@ -1362,7 +1352,7 @@ extension on TranslationsSv {
'screens.licenses' => 'Licenser', 'screens.licenses' => 'Licenser',
'screens.switchProfile' => 'Byt profil', 'screens.switchProfile' => 'Byt profil',
'screens.subtitleStyling' => 'Undertext-styling', 'screens.subtitleStyling' => 'Undertext-styling',
'screens.mpvConfig' => 'MPV-konfiguration', 'screens.mpvConfig' => 'mpv.conf',
'screens.logs' => 'Loggar', 'screens.logs' => 'Loggar',
'update.available' => 'Uppdatering tillgänglig', 'update.available' => 'Uppdatering tillgänglig',
'update.versionAvailable' => ({required Object version}) => 'Version ${version} är tillgänglig', 'update.versionAvailable' => ({required Object version}) => 'Version ${version} är tillgänglig',
@@ -1422,7 +1412,7 @@ extension on TranslationsSv {
'settings.playerBackend' => 'Spelarmotor', 'settings.playerBackend' => 'Spelarmotor',
'settings.exoPlayer' => 'ExoPlayer (Rekommenderad)', 'settings.exoPlayer' => 'ExoPlayer (Rekommenderad)',
'settings.exoPlayerDescription' => 'Android-nativ spelare med bättre hårdvarustöd', 'settings.exoPlayerDescription' => 'Android-nativ spelare med bättre hårdvarustöd',
'settings.mpv' => 'MPV', 'settings.mpv' => 'mpv',
'settings.mpvDescription' => 'Avancerad spelare med fler funktioner och ASS-undertextstöd', 'settings.mpvDescription' => 'Avancerad spelare med fler funktioner och ASS-undertextstöd',
'settings.hardwareDecoding' => 'Hårdvaruavkodning', 'settings.hardwareDecoding' => 'Hårdvaruavkodning',
'settings.hardwareDecodingDescription' => 'Använd hårdvaruacceleration när tillgängligt', 'settings.hardwareDecodingDescription' => 'Använd hårdvaruacceleration när tillgängligt',
@@ -1686,19 +1676,10 @@ extension on TranslationsSv {
'subtitlingStyling.backgroundOpacity' => 'Bakgrundsopacitet', 'subtitlingStyling.backgroundOpacity' => 'Bakgrundsopacitet',
'subtitlingStyling.backgroundColor' => 'Bakgrundsfärg', 'subtitlingStyling.backgroundColor' => 'Bakgrundsfärg',
'subtitlingStyling.position' => 'Position', 'subtitlingStyling.position' => 'Position',
'mpvConfig.title' => 'MPV-konfiguration', 'mpvConfig.title' => 'mpv-konfiguration',
'mpvConfig.description' => 'Avancerade videospelares inställningar', 'mpvConfig.description' => 'Avancerade videospelares inställningar',
'mpvConfig.properties' => 'Egenskaper',
'mpvConfig.presets' => 'Förval', 'mpvConfig.presets' => 'Förval',
'mpvConfig.noProperties' => 'Inga egenskaper konfigurerade',
'mpvConfig.noPresets' => 'Inga sparade förval', 'mpvConfig.noPresets' => 'Inga sparade förval',
'mpvConfig.addProperty' => 'Lägg till egenskap',
'mpvConfig.editProperty' => 'Redigera egenskap',
'mpvConfig.deleteProperty' => 'Ta bort egenskap',
'mpvConfig.propertyKey' => 'Egenskapsnyckel',
'mpvConfig.propertyKeyHint' => 't.ex. hwdec, demuxer-max-bytes',
'mpvConfig.propertyValue' => 'Egenskapsvärde',
'mpvConfig.propertyValueHint' => 't.ex. auto, 256000000',
'mpvConfig.saveAsPreset' => 'Spara som förval...', 'mpvConfig.saveAsPreset' => 'Spara som förval...',
'mpvConfig.presetName' => 'Förvalnamn', 'mpvConfig.presetName' => 'Förvalnamn',
'mpvConfig.presetNameHint' => 'Ange ett namn för detta förval', 'mpvConfig.presetNameHint' => 'Ange ett namn för detta förval',
@@ -1708,8 +1689,7 @@ extension on TranslationsSv {
'mpvConfig.presetLoaded' => 'Förval laddat', 'mpvConfig.presetLoaded' => 'Förval laddat',
'mpvConfig.presetDeleted' => 'Förval borttaget', 'mpvConfig.presetDeleted' => 'Förval borttaget',
'mpvConfig.confirmDeletePreset' => 'Är du säker på att du vill ta bort detta förval?', 'mpvConfig.confirmDeletePreset' => 'Är du säker på att du vill ta bort detta förval?',
'mpvConfig.confirmDeleteProperty' => 'Är du säker på att du vill ta bort denna egenskap?', 'mpvConfig.configPlaceholder' => 'gpu-api=vulkan\nhwdec=auto\n# comment',
'mpvConfig.entriesCount' => ({required Object count}) => '${count} poster',
'dialog.confirmAction' => 'Bekräfta åtgärd', 'dialog.confirmAction' => 'Bekräfta åtgärd',
'discover.title' => 'Upptäck', 'discover.title' => 'Upptäck',
'discover.switchProfile' => 'Byt profil', 'discover.switchProfile' => 'Byt profil',
@@ -1816,8 +1796,6 @@ extension on TranslationsSv {
'liveTv.noChannels' => 'Inga kanaler tillgängliga', 'liveTv.noChannels' => 'Inga kanaler tillgängliga',
'liveTv.noDvr' => 'Ingen DVR konfigurerad på någon server', 'liveTv.noDvr' => 'Ingen DVR konfigurerad på någon server',
'liveTv.tuneFailed' => 'Kunde inte ställa in kanalen', 'liveTv.tuneFailed' => 'Kunde inte ställa in kanalen',
_ => null,
} ?? switch (path) {
'liveTv.loading' => 'Laddar kanaler...', 'liveTv.loading' => 'Laddar kanaler...',
'liveTv.nowPlaying' => 'Spelas nu', 'liveTv.nowPlaying' => 'Spelas nu',
'liveTv.noPrograms' => 'Ingen programdata tillgänglig', 'liveTv.noPrograms' => 'Ingen programdata tillgänglig',
@@ -1828,6 +1806,8 @@ extension on TranslationsSv {
'liveTv.reloadGuide' => 'Ladda om programguide', 'liveTv.reloadGuide' => 'Ladda om programguide',
'liveTv.allChannels' => 'Alla kanaler', 'liveTv.allChannels' => 'Alla kanaler',
'liveTv.now' => 'Nu', 'liveTv.now' => 'Nu',
_ => null,
} ?? switch (path) {
'liveTv.today' => 'Idag', 'liveTv.today' => 'Idag',
'liveTv.midnight' => 'Midnatt', 'liveTv.midnight' => 'Midnatt',
'liveTv.overnight' => 'Natt', 'liveTv.overnight' => 'Natt',
+10 -30
View File
@@ -169,7 +169,7 @@ class _TranslationsScreensZh implements TranslationsScreensEn {
@override String get licenses => '许可证'; @override String get licenses => '许可证';
@override String get switchProfile => '切换用户'; @override String get switchProfile => '切换用户';
@override String get subtitleStyling => '字幕样式'; @override String get subtitleStyling => '字幕样式';
@override String get mpvConfig => 'MPV 配置'; @override String get mpvConfig => 'mpv.conf';
@override String get logs => '日志'; @override String get logs => '日志';
} }
@@ -247,7 +247,7 @@ class _TranslationsSettingsZh implements TranslationsSettingsEn {
@override String get playerBackend => '播放器引擎'; @override String get playerBackend => '播放器引擎';
@override String get exoPlayer => 'ExoPlayer(推荐)'; @override String get exoPlayer => 'ExoPlayer(推荐)';
@override String get exoPlayerDescription => 'Android 原生播放器,硬件支持更好'; @override String get exoPlayerDescription => 'Android 原生播放器,硬件支持更好';
@override String get mpv => 'MPV'; @override String get mpv => 'mpv';
@override String get mpvDescription => '功能更多的高级播放器,支持 ASS 字幕'; @override String get mpvDescription => '功能更多的高级播放器,支持 ASS 字幕';
@override String get hardwareDecoding => '硬件解码'; @override String get hardwareDecoding => '硬件解码';
@override String get hardwareDecodingDescription => '如果可用,使用硬件加速'; @override String get hardwareDecodingDescription => '如果可用,使用硬件加速';
@@ -595,19 +595,10 @@ class _TranslationsMpvConfigZh implements TranslationsMpvConfigEn {
final TranslationsZh _root; // ignore: unused_field final TranslationsZh _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'MPV 配置'; @override String get title => 'mpv 配置';
@override String get description => '高级视频播放器设置'; @override String get description => '高级视频播放器设置';
@override String get properties => '属性';
@override String get presets => '预设'; @override String get presets => '预设';
@override String get noProperties => '未配置任何属性';
@override String get noPresets => '没有保存的预设'; @override String get noPresets => '没有保存的预设';
@override String get addProperty => '添加属性';
@override String get editProperty => '编辑属性';
@override String get deleteProperty => '删除属性';
@override String get propertyKey => '属性键';
@override String get propertyKeyHint => '例如 hwdec, demuxer-max-bytes';
@override String get propertyValue => '属性值';
@override String get propertyValueHint => '例如 auto, 256000000';
@override String get saveAsPreset => '保存为预设...'; @override String get saveAsPreset => '保存为预设...';
@override String get presetName => '预设名称'; @override String get presetName => '预设名称';
@override String get presetNameHint => '输入此预设的名称'; @override String get presetNameHint => '输入此预设的名称';
@@ -617,8 +608,7 @@ class _TranslationsMpvConfigZh implements TranslationsMpvConfigEn {
@override String get presetLoaded => '预设已加载'; @override String get presetLoaded => '预设已加载';
@override String get presetDeleted => '预设已删除'; @override String get presetDeleted => '预设已删除';
@override String get confirmDeletePreset => '确定要删除此预设吗?'; @override String get confirmDeletePreset => '确定要删除此预设吗?';
@override String get confirmDeleteProperty => '确定要删除此属性吗?'; @override String get configPlaceholder => 'gpu-api=vulkan\nhwdec=auto\n# comment';
@override String entriesCount({required Object count}) => '${count} 条目';
} }
// Path: dialog // Path: dialog
@@ -1362,7 +1352,7 @@ extension on TranslationsZh {
'screens.licenses' => '许可证', 'screens.licenses' => '许可证',
'screens.switchProfile' => '切换用户', 'screens.switchProfile' => '切换用户',
'screens.subtitleStyling' => '字幕样式', 'screens.subtitleStyling' => '字幕样式',
'screens.mpvConfig' => 'MPV 配置', 'screens.mpvConfig' => 'mpv.conf',
'screens.logs' => '日志', 'screens.logs' => '日志',
'update.available' => '有可用更新', 'update.available' => '有可用更新',
'update.versionAvailable' => ({required Object version}) => '版本 ${version} 已发布', 'update.versionAvailable' => ({required Object version}) => '版本 ${version} 已发布',
@@ -1422,7 +1412,7 @@ extension on TranslationsZh {
'settings.playerBackend' => '播放器引擎', 'settings.playerBackend' => '播放器引擎',
'settings.exoPlayer' => 'ExoPlayer(推荐)', 'settings.exoPlayer' => 'ExoPlayer(推荐)',
'settings.exoPlayerDescription' => 'Android 原生播放器,硬件支持更好', 'settings.exoPlayerDescription' => 'Android 原生播放器,硬件支持更好',
'settings.mpv' => 'MPV', 'settings.mpv' => 'mpv',
'settings.mpvDescription' => '功能更多的高级播放器,支持 ASS 字幕', 'settings.mpvDescription' => '功能更多的高级播放器,支持 ASS 字幕',
'settings.hardwareDecoding' => '硬件解码', 'settings.hardwareDecoding' => '硬件解码',
'settings.hardwareDecodingDescription' => '如果可用,使用硬件加速', 'settings.hardwareDecodingDescription' => '如果可用,使用硬件加速',
@@ -1686,19 +1676,10 @@ extension on TranslationsZh {
'subtitlingStyling.backgroundOpacity' => '背景不透明度', 'subtitlingStyling.backgroundOpacity' => '背景不透明度',
'subtitlingStyling.backgroundColor' => '背景颜色', 'subtitlingStyling.backgroundColor' => '背景颜色',
'subtitlingStyling.position' => 'Position', 'subtitlingStyling.position' => 'Position',
'mpvConfig.title' => 'MPV 配置', 'mpvConfig.title' => 'mpv 配置',
'mpvConfig.description' => '高级视频播放器设置', 'mpvConfig.description' => '高级视频播放器设置',
'mpvConfig.properties' => '属性',
'mpvConfig.presets' => '预设', 'mpvConfig.presets' => '预设',
'mpvConfig.noProperties' => '未配置任何属性',
'mpvConfig.noPresets' => '没有保存的预设', 'mpvConfig.noPresets' => '没有保存的预设',
'mpvConfig.addProperty' => '添加属性',
'mpvConfig.editProperty' => '编辑属性',
'mpvConfig.deleteProperty' => '删除属性',
'mpvConfig.propertyKey' => '属性键',
'mpvConfig.propertyKeyHint' => '例如 hwdec, demuxer-max-bytes',
'mpvConfig.propertyValue' => '属性值',
'mpvConfig.propertyValueHint' => '例如 auto, 256000000',
'mpvConfig.saveAsPreset' => '保存为预设...', 'mpvConfig.saveAsPreset' => '保存为预设...',
'mpvConfig.presetName' => '预设名称', 'mpvConfig.presetName' => '预设名称',
'mpvConfig.presetNameHint' => '输入此预设的名称', 'mpvConfig.presetNameHint' => '输入此预设的名称',
@@ -1708,8 +1689,7 @@ extension on TranslationsZh {
'mpvConfig.presetLoaded' => '预设已加载', 'mpvConfig.presetLoaded' => '预设已加载',
'mpvConfig.presetDeleted' => '预设已删除', 'mpvConfig.presetDeleted' => '预设已删除',
'mpvConfig.confirmDeletePreset' => '确定要删除此预设吗?', 'mpvConfig.confirmDeletePreset' => '确定要删除此预设吗?',
'mpvConfig.confirmDeleteProperty' => '确定要删除此属性吗?', 'mpvConfig.configPlaceholder' => 'gpu-api=vulkan\nhwdec=auto\n# comment',
'mpvConfig.entriesCount' => ({required Object count}) => '${count} 条目',
'dialog.confirmAction' => '确认操作', 'dialog.confirmAction' => '确认操作',
'discover.title' => '发现', 'discover.title' => '发现',
'discover.switchProfile' => '切换用户', 'discover.switchProfile' => '切换用户',
@@ -1816,8 +1796,6 @@ extension on TranslationsZh {
'liveTv.noChannels' => '没有可用的频道', 'liveTv.noChannels' => '没有可用的频道',
'liveTv.noDvr' => '没有服务器配置了DVR', 'liveTv.noDvr' => '没有服务器配置了DVR',
'liveTv.tuneFailed' => '无法调谐频道', 'liveTv.tuneFailed' => '无法调谐频道',
_ => null,
} ?? switch (path) {
'liveTv.loading' => '正在加载频道...', 'liveTv.loading' => '正在加载频道...',
'liveTv.nowPlaying' => '正在播放', 'liveTv.nowPlaying' => '正在播放',
'liveTv.noPrograms' => '没有可用的节目数据', 'liveTv.noPrograms' => '没有可用的节目数据',
@@ -1828,6 +1806,8 @@ extension on TranslationsZh {
'liveTv.reloadGuide' => '重新加载节目指南', 'liveTv.reloadGuide' => '重新加载节目指南',
'liveTv.allChannels' => '所有频道', 'liveTv.allChannels' => '所有频道',
'liveTv.now' => '现在', 'liveTv.now' => '现在',
_ => null,
} ?? switch (path) {
'liveTv.today' => '今天', 'liveTv.today' => '今天',
'liveTv.midnight' => '午夜', 'liveTv.midnight' => '午夜',
'liveTv.overnight' => '凌晨', 'liveTv.overnight' => '凌晨',
+4 -14
View File
@@ -64,7 +64,7 @@
"licenses": "Licenser", "licenses": "Licenser",
"switchProfile": "Byt profil", "switchProfile": "Byt profil",
"subtitleStyling": "Undertext-styling", "subtitleStyling": "Undertext-styling",
"mpvConfig": "MPV-konfiguration", "mpvConfig": "mpv.conf",
"logs": "Loggar" "logs": "Loggar"
}, },
"update": { "update": {
@@ -128,7 +128,7 @@
"playerBackend": "Spelarmotor", "playerBackend": "Spelarmotor",
"exoPlayer": "ExoPlayer (Rekommenderad)", "exoPlayer": "ExoPlayer (Rekommenderad)",
"exoPlayerDescription": "Android-nativ spelare med bättre hårdvarustöd", "exoPlayerDescription": "Android-nativ spelare med bättre hårdvarustöd",
"mpv": "MPV", "mpv": "mpv",
"mpvDescription": "Avancerad spelare med fler funktioner och ASS-undertextstöd", "mpvDescription": "Avancerad spelare med fler funktioner och ASS-undertextstöd",
"hardwareDecoding": "Hårdvaruavkodning", "hardwareDecoding": "Hårdvaruavkodning",
"hardwareDecodingDescription": "Använd hårdvaruacceleration när tillgängligt", "hardwareDecodingDescription": "Använd hårdvaruacceleration när tillgängligt",
@@ -420,19 +420,10 @@
"position": "Position" "position": "Position"
}, },
"mpvConfig": { "mpvConfig": {
"title": "MPV-konfiguration", "title": "mpv-konfiguration",
"description": "Avancerade videospelares inställningar", "description": "Avancerade videospelares inställningar",
"properties": "Egenskaper",
"presets": "Förval", "presets": "Förval",
"noProperties": "Inga egenskaper konfigurerade",
"noPresets": "Inga sparade förval", "noPresets": "Inga sparade förval",
"addProperty": "Lägg till egenskap",
"editProperty": "Redigera egenskap",
"deleteProperty": "Ta bort egenskap",
"propertyKey": "Egenskapsnyckel",
"propertyKeyHint": "t.ex. hwdec, demuxer-max-bytes",
"propertyValue": "Egenskapsvärde",
"propertyValueHint": "t.ex. auto, 256000000",
"saveAsPreset": "Spara som förval...", "saveAsPreset": "Spara som förval...",
"presetName": "Förvalnamn", "presetName": "Förvalnamn",
"presetNameHint": "Ange ett namn för detta förval", "presetNameHint": "Ange ett namn för detta förval",
@@ -442,8 +433,7 @@
"presetLoaded": "Förval laddat", "presetLoaded": "Förval laddat",
"presetDeleted": "Förval borttaget", "presetDeleted": "Förval borttaget",
"confirmDeletePreset": "Är du säker på att du vill ta bort detta förval?", "confirmDeletePreset": "Är du säker på att du vill ta bort detta förval?",
"confirmDeleteProperty": "Är du säker på att du vill ta bort denna egenskap?", "configPlaceholder": "gpu-api=vulkan\nhwdec=auto\n# comment"
"entriesCount": "${count} poster"
}, },
"dialog": { "dialog": {
"confirmAction": "Bekräfta åtgärd" "confirmAction": "Bekräfta åtgärd"
+4 -14
View File
@@ -64,7 +64,7 @@
"licenses": "许可证", "licenses": "许可证",
"switchProfile": "切换用户", "switchProfile": "切换用户",
"subtitleStyling": "字幕样式", "subtitleStyling": "字幕样式",
"mpvConfig": "MPV 配置", "mpvConfig": "mpv.conf",
"logs": "日志" "logs": "日志"
}, },
"update": { "update": {
@@ -128,7 +128,7 @@
"playerBackend": "播放器引擎", "playerBackend": "播放器引擎",
"exoPlayer": "ExoPlayer(推荐)", "exoPlayer": "ExoPlayer(推荐)",
"exoPlayerDescription": "Android 原生播放器,硬件支持更好", "exoPlayerDescription": "Android 原生播放器,硬件支持更好",
"mpv": "MPV", "mpv": "mpv",
"mpvDescription": "功能更多的高级播放器,支持 ASS 字幕", "mpvDescription": "功能更多的高级播放器,支持 ASS 字幕",
"hardwareDecoding": "硬件解码", "hardwareDecoding": "硬件解码",
"hardwareDecodingDescription": "如果可用,使用硬件加速", "hardwareDecodingDescription": "如果可用,使用硬件加速",
@@ -420,19 +420,10 @@
"position": "Position" "position": "Position"
}, },
"mpvConfig": { "mpvConfig": {
"title": "MPV 配置", "title": "mpv 配置",
"description": "高级视频播放器设置", "description": "高级视频播放器设置",
"properties": "属性",
"presets": "预设", "presets": "预设",
"noProperties": "未配置任何属性",
"noPresets": "没有保存的预设", "noPresets": "没有保存的预设",
"addProperty": "添加属性",
"editProperty": "编辑属性",
"deleteProperty": "删除属性",
"propertyKey": "属性键",
"propertyKeyHint": "例如 hwdec, demuxer-max-bytes",
"propertyValue": "属性值",
"propertyValueHint": "例如 auto, 256000000",
"saveAsPreset": "保存为预设...", "saveAsPreset": "保存为预设...",
"presetName": "预设名称", "presetName": "预设名称",
"presetNameHint": "输入此预设的名称", "presetNameHint": "输入此预设的名称",
@@ -442,8 +433,7 @@
"presetLoaded": "预设已加载", "presetLoaded": "预设已加载",
"presetDeleted": "预设已删除", "presetDeleted": "预设已删除",
"confirmDeletePreset": "确定要删除此预设吗?", "confirmDeletePreset": "确定要删除此预设吗?",
"confirmDeleteProperty": "确定要删除此属性吗?", "configPlaceholder": "gpu-api=vulkan\nhwdec=auto\n# comment"
"entriesCount": "${count} 条目"
}, },
"dialog": { "dialog": {
"confirmAction": "确认操作" "confirmAction": "确认操作"
+4 -27
View File
@@ -1,45 +1,22 @@
/// Represents a single MPV configuration entry
class MpvConfigEntry {
final String key;
final String value;
final bool isEnabled;
const MpvConfigEntry({required this.key, required this.value, this.isEnabled = true});
factory MpvConfigEntry.fromJson(Map<String, dynamic> json) {
return MpvConfigEntry(
key: json['key'] as String,
value: json['value'] as String,
isEnabled: json['isEnabled'] as bool? ?? true,
);
}
Map<String, dynamic> toJson() => {'key': key, 'value': value, 'isEnabled': isEnabled};
MpvConfigEntry copyWith({String? key, String? value, bool? isEnabled}) {
return MpvConfigEntry(key: key ?? this.key, value: value ?? this.value, isEnabled: isEnabled ?? this.isEnabled);
}
}
/// Represents a saved preset of MPV configurations /// Represents a saved preset of MPV configurations
class MpvPreset { class MpvPreset {
final String name; final String name;
final List<MpvConfigEntry> entries; final String text;
final DateTime createdAt; final DateTime createdAt;
const MpvPreset({required this.name, required this.entries, required this.createdAt}); const MpvPreset({required this.name, required this.text, required this.createdAt});
factory MpvPreset.fromJson(Map<String, dynamic> json) { factory MpvPreset.fromJson(Map<String, dynamic> json) {
return MpvPreset( return MpvPreset(
name: json['name'] as String, name: json['name'] as String,
entries: (json['entries'] as List).map((e) => MpvConfigEntry.fromJson(e as Map<String, dynamic>)).toList(), text: json['text'] as String,
createdAt: DateTime.parse(json['createdAt'] as String), createdAt: DateTime.parse(json['createdAt'] as String),
); );
} }
Map<String, dynamic> toJson() => { Map<String, dynamic> toJson() => {
'name': name, 'name': name,
'entries': entries.map((e) => e.toJson()).toList(), 'text': text,
'createdAt': createdAt.toIso8601String(), 'createdAt': createdAt.toIso8601String(),
}; };
} }
+79 -207
View File
@@ -1,6 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:plezy/widgets/app_icon.dart'; import 'package:plezy/widgets/app_icon.dart';
import 'package:material_symbols_icons/symbols.dart'; import 'package:material_symbols_icons/symbols.dart';
import '../../focus/dpad_navigator.dart';
import '../../focus/key_event_utils.dart';
import '../../i18n/strings.g.dart'; import '../../i18n/strings.g.dart';
import '../../models/mpv_config_models.dart'; import '../../models/mpv_config_models.dart';
import '../../focus/focusable_button.dart'; import '../../focus/focusable_button.dart';
@@ -20,158 +23,41 @@ class _MpvConfigScreenState extends State<MpvConfigScreen> {
late SettingsService _settingsService; late SettingsService _settingsService;
bool _isLoading = true; bool _isLoading = true;
List<MpvConfigEntry> _entries = []; late TextEditingController _textController;
final _savePresetFocusNode = FocusNode();
List<MpvPreset> _presets = []; List<MpvPreset> _presets = [];
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_textController = TextEditingController();
_loadSettings(); _loadSettings();
} }
@override
void dispose() {
_textController.dispose();
_savePresetFocusNode.dispose();
super.dispose();
}
Future<void> _loadSettings() async { Future<void> _loadSettings() async {
_settingsService = await SettingsService.getInstance(); _settingsService = await SettingsService.getInstance();
if (!mounted) return; if (!mounted) return;
setState(() { setState(() {
_entries = _settingsService.getMpvConfigEntries(); _textController.text = _settingsService.getMpvConfigText();
_presets = _settingsService.getMpvPresets(); _presets = _settingsService.getMpvPresets();
_isLoading = false; _isLoading = false;
}); });
} }
Future<void> _saveEntries() async { Future<void> _saveText() async {
await _settingsService.setMpvConfigEntries(_entries); await _settingsService.setMpvConfigText(_textController.text);
}
void _toggleEntry(int index) {
setState(() {
_entries[index] = _entries[index].copyWith(isEnabled: !_entries[index].isEnabled);
});
_saveEntries();
}
void _deleteEntry(int index) {
setState(() {
_entries.removeAt(index);
});
_saveEntries();
}
void _addEntry(MpvConfigEntry entry) {
setState(() {
_entries.add(entry);
});
_saveEntries();
}
void _updateEntry(int index, MpvConfigEntry entry) {
setState(() {
_entries[index] = entry;
});
_saveEntries();
}
Future<void> _showEntryDialog({int? editIndex}) async {
final isEdit = editIndex != null;
final existingEntry = isEdit ? _entries[editIndex] : null;
final keyController = TextEditingController(text: existingEntry?.key ?? '');
final valueController = TextEditingController(text: existingEntry?.value ?? '');
final keyFocusNode = FocusNode();
final valueFocusNode = FocusNode();
final saveFocusNode = FocusNode();
final result = await showDialog<bool>(
context: context,
builder: (context) => AlertDialog(
title: Text(isEdit ? t.mpvConfig.editProperty : t.mpvConfig.addProperty),
content: Column(
mainAxisSize: MainAxisSize.min,
children: [
TextField(
controller: keyController,
focusNode: keyFocusNode,
decoration: InputDecoration(labelText: t.mpvConfig.propertyKey, hintText: t.mpvConfig.propertyKeyHint),
autofocus: true,
textInputAction: TextInputAction.next,
onSubmitted: (_) => valueFocusNode.requestFocus(),
),
const SizedBox(height: 16),
TextField(
controller: valueController,
focusNode: valueFocusNode,
decoration: InputDecoration(
labelText: t.mpvConfig.propertyValue,
hintText: t.mpvConfig.propertyValueHint,
),
textInputAction: TextInputAction.done,
onSubmitted: (_) => saveFocusNode.requestFocus(),
),
],
),
actions: [
FocusableButton(
onPressed: () => Navigator.pop(context, false),
child: TextButton(onPressed: () => Navigator.pop(context, false), child: Text(t.common.cancel)),
),
FocusableButton(
focusNode: saveFocusNode,
onPressed: () {
if (keyController.text.isNotEmpty && valueController.text.isNotEmpty) {
Navigator.pop(context, true);
}
},
child: TextButton(
onPressed: () {
if (keyController.text.isNotEmpty && valueController.text.isNotEmpty) {
Navigator.pop(context, true);
}
},
child: Text(t.common.save),
),
),
],
),
);
if (result == true) {
final entry = MpvConfigEntry(
key: keyController.text.trim(),
value: valueController.text.trim(),
isEnabled: existingEntry?.isEnabled ?? true,
);
if (isEdit) {
_updateEntry(editIndex, entry);
} else {
_addEntry(entry);
}
}
keyController.dispose();
valueController.dispose();
keyFocusNode.dispose();
valueFocusNode.dispose();
saveFocusNode.dispose();
}
Future<bool> _showConfirmDeleteDialog({required String title, required String content}) {
return showDeleteConfirmation(context, title: title, message: content);
}
Future<void> _showDeleteEntryDialog(int index) async {
final confirmed = await _showConfirmDeleteDialog(
title: t.mpvConfig.deleteProperty,
content: t.mpvConfig.confirmDeleteProperty,
);
if (confirmed) {
_deleteEntry(index);
}
} }
Future<void> _showSavePresetDialog() async { Future<void> _showSavePresetDialog() async {
if (_entries.isEmpty) return; if (_textController.text.trim().isEmpty) return;
final nameController = TextEditingController(); final nameController = TextEditingController();
final saveFocusNode = FocusNode(); final saveFocusNode = FocusNode();
@@ -215,7 +101,7 @@ class _MpvConfigScreenState extends State<MpvConfigScreen> {
saveFocusNode.dispose(); saveFocusNode.dispose();
if (result == true) { if (result == true) {
await _settingsService.saveMpvPreset(nameController.text.trim(), _entries); await _settingsService.saveMpvPreset(nameController.text.trim(), _textController.text);
if (!mounted) return; if (!mounted) return;
setState(() { setState(() {
_presets = _settingsService.getMpvPresets(); _presets = _settingsService.getMpvPresets();
@@ -233,7 +119,7 @@ class _MpvConfigScreenState extends State<MpvConfigScreen> {
await _settingsService.loadMpvPreset(preset.name); await _settingsService.loadMpvPreset(preset.name);
if (!mounted) return; if (!mounted) return;
setState(() { setState(() {
_entries = _settingsService.getMpvConfigEntries(); _textController.text = _settingsService.getMpvConfigText();
}); });
if (mounted) { if (mounted) {
@@ -242,9 +128,10 @@ class _MpvConfigScreenState extends State<MpvConfigScreen> {
} }
Future<void> _deletePreset(MpvPreset preset) async { Future<void> _deletePreset(MpvPreset preset) async {
final confirmed = await _showConfirmDeleteDialog( final confirmed = await showDeleteConfirmation(
context,
title: t.mpvConfig.deletePreset, title: t.mpvConfig.deletePreset,
content: t.mpvConfig.confirmDeletePreset, message: t.mpvConfig.confirmDeletePreset,
); );
if (confirmed) { if (confirmed) {
@@ -271,9 +158,9 @@ class _MpvConfigScreenState extends State<MpvConfigScreen> {
padding: const EdgeInsets.all(16), padding: const EdgeInsets.all(16),
sliver: SliverList( sliver: SliverList(
delegate: SliverChildListDelegate([ delegate: SliverChildListDelegate([
_buildPresetsCard(), _buildConfigEditor(),
const SizedBox(height: 16), const SizedBox(height: 16),
_buildEntriesCard(), _buildPresetsCard(),
const SizedBox(height: 24), const SizedBox(height: 24),
]), ]),
), ),
@@ -282,6 +169,58 @@ class _MpvConfigScreenState extends State<MpvConfigScreen> {
); );
} }
Widget _buildConfigEditor() {
return Focus(
canRequestFocus: false,
onKeyEvent: (_, event) {
// Back/Escape: move focus to the save preset button instead of exiting.
// Suppress the KeyUp so it doesn't reach handleBackKeyNavigation
// on the new focus chain after focus moves away from the text field.
if (event.logicalKey.isBackKey) {
if (event is KeyDownEvent) {
BackKeyUpSuppressor.suppressBackUntilKeyUp();
_savePresetFocusNode.requestFocus();
}
return KeyEventResult.handled;
}
// We must consume Enter to prevent parent handlers from unfocusing,
// but that also blocks Flutter's text editing shortcuts (which are
// higher in the focus tree). So we manually insert newlines here.
if (event.logicalKey == LogicalKeyboardKey.enter ||
event.logicalKey == LogicalKeyboardKey.numpadEnter) {
if (event is KeyDownEvent || event is KeyRepeatEvent) {
final sel = _textController.selection;
if (sel.isValid) {
final text = _textController.text;
_textController.value = TextEditingValue(
text: text.replaceRange(sel.start, sel.end, '\n'),
selection: TextSelection.collapsed(offset: sel.start + 1),
);
_saveText();
}
}
return KeyEventResult.handled;
}
if (event.logicalKey.isSelectKey) {
return KeyEventResult.handled;
}
return KeyEventResult.ignored;
},
child: TextField(
controller: _textController,
maxLines: null,
minLines: 12,
decoration: InputDecoration(
hintText: t.mpvConfig.configPlaceholder,
border: const OutlineInputBorder(),
contentPadding: const EdgeInsets.all(12),
),
style: const TextStyle(fontFamily: 'monospace', fontSize: 13),
onChanged: (_) => _saveText(),
),
);
}
Widget _buildPresetsCard() { Widget _buildPresetsCard() {
return Card( return Card(
child: Column( child: Column(
@@ -295,10 +234,11 @@ class _MpvConfigScreenState extends State<MpvConfigScreen> {
), ),
), ),
ListTile( ListTile(
focusNode: _savePresetFocusNode,
leading: const AppIcon(Symbols.save_rounded, fill: 1), leading: const AppIcon(Symbols.save_rounded, fill: 1),
title: Text(t.mpvConfig.saveAsPreset), title: Text(t.mpvConfig.saveAsPreset),
enabled: _entries.isNotEmpty, enabled: _textController.text.trim().isNotEmpty,
onTap: _entries.isNotEmpty ? _showSavePresetDialog : null, onTap: _textController.text.trim().isNotEmpty ? _showSavePresetDialog : null,
), ),
if (_presets.isNotEmpty) ...[ if (_presets.isNotEmpty) ...[
const Divider(), const Divider(),
@@ -306,7 +246,6 @@ class _MpvConfigScreenState extends State<MpvConfigScreen> {
(preset) => ListTile( (preset) => ListTile(
leading: const AppIcon(Symbols.folder_rounded, fill: 1), leading: const AppIcon(Symbols.folder_rounded, fill: 1),
title: Text(preset.name), title: Text(preset.name),
subtitle: Text(t.mpvConfig.entriesCount(count: preset.entries.length)),
trailing: PopupMenuButton<String>( trailing: PopupMenuButton<String>(
onSelected: (value) { onSelected: (value) {
if (value == 'load') { if (value == 'load') {
@@ -337,71 +276,4 @@ class _MpvConfigScreenState extends State<MpvConfigScreen> {
), ),
); );
} }
Widget _buildEntriesCard() {
return Card(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.all(16),
child: Row(
children: [
Expanded(
child: Text(
t.mpvConfig.properties,
style: Theme.of(context).textTheme.titleMedium?.copyWith(fontWeight: FontWeight.bold),
),
),
IconButton(
icon: const AppIcon(Symbols.add_rounded, fill: 1),
onPressed: () => _showEntryDialog(),
tooltip: t.mpvConfig.addProperty,
),
],
),
),
if (_entries.isNotEmpty) ...[
const Divider(height: 1),
...List.generate(_entries.length, (index) {
final entry = _entries[index];
return ListTile(
leading: Switch(value: entry.isEnabled, onChanged: (_) => _toggleEntry(index)),
title: Text(
entry.key,
style: TextStyle(color: entry.isEnabled ? null : Theme.of(context).colorScheme.onSurfaceVariant),
),
subtitle: Text(
entry.value,
style: TextStyle(color: entry.isEnabled ? null : Theme.of(context).colorScheme.onSurfaceVariant),
),
trailing: PopupMenuButton<String>(
onSelected: (value) {
if (value == 'edit') {
_showEntryDialog(editIndex: index);
} else if (value == 'delete') {
_showDeleteEntryDialog(index);
}
},
itemBuilder: (context) => [
PopupMenuItem(value: 'edit', child: Text(t.mpvConfig.editProperty)),
PopupMenuItem(value: 'delete', child: Text(t.mpvConfig.deleteProperty)),
],
),
);
}),
] else
Padding(
padding: const EdgeInsets.only(left: 16, right: 16, bottom: 16),
child: Text(
t.mpvConfig.noProperties,
style: Theme.of(
context,
).textTheme.bodyMedium?.copyWith(color: Theme.of(context).colorScheme.onSurfaceVariant),
),
),
],
),
);
}
} }
+74 -26
View File
@@ -62,7 +62,8 @@ class SettingsService extends BaseSharedPreferencesService {
static const String _keyDownloadOnWifiOnly = 'download_on_wifi_only'; static const String _keyDownloadOnWifiOnly = 'download_on_wifi_only';
static const String _keyVideoPlayerNavigationEnabled = 'video_player_navigation_enabled'; static const String _keyVideoPlayerNavigationEnabled = 'video_player_navigation_enabled';
static const String _keyShowPerformanceOverlay = 'show_performance_overlay'; static const String _keyShowPerformanceOverlay = 'show_performance_overlay';
static const String _keyMpvConfigEntries = 'mpv_config_entries'; static const String _keyMpvConfigEntries = 'mpv_config_entries'; // Legacy
static const String _keyMpvConfigText = 'mpv_config_text';
static const String _keyMpvConfigPresets = 'mpv_config_presets'; static const String _keyMpvConfigPresets = 'mpv_config_presets';
static const String _keyMaxVolume = 'max_volume'; static const String _keyMaxVolume = 'max_volume';
static const String _keyEnableDiscordRPC = 'enable_discord_rpc'; static const String _keyEnableDiscordRPC = 'enable_discord_rpc';
@@ -923,31 +924,61 @@ class SettingsService extends BaseSharedPreferencesService {
return prefs.getBool(_keyDownloadOnWifiOnly) ?? false; return prefs.getBool(_keyDownloadOnWifiOnly) ?? false;
} }
// MPV Config Entries // MPV Config (raw text)
/// Get all MPV config entries /// Get the raw MPV config text. Migrates from legacy JSON entries on first read.
List<MpvConfigEntry> getMpvConfigEntries() { String getMpvConfigText() {
final jsonString = prefs.getString(_keyMpvConfigEntries); final text = prefs.getString(_keyMpvConfigText);
if (jsonString == null) return []; if (text != null) return text;
try { // Migrate from legacy JSON entries
final List<dynamic> decoded = json.decode(jsonString); final legacyJson = prefs.getString(_keyMpvConfigEntries);
return decoded.map((e) => MpvConfigEntry.fromJson(e as Map<String, dynamic>)).toList(); if (legacyJson != null) {
} catch (e) { try {
return []; final List<dynamic> decoded = json.decode(legacyJson);
final lines = <String>[];
for (final item in decoded) {
if (item is Map<String, dynamic>) {
final key = item['key'] as String? ?? '';
final value = item['value'] as String? ?? '';
final enabled = item['isEnabled'] as bool? ?? true;
if (key.isNotEmpty) {
lines.add(enabled ? '$key=$value' : '#$key=$value');
}
}
}
final migrated = lines.join('\n');
prefs.setString(_keyMpvConfigText, migrated);
return migrated;
} catch (_) {}
} }
return '';
} }
/// Save all MPV config entries /// Save the raw MPV config text
Future<void> setMpvConfigEntries(List<MpvConfigEntry> entries) async { Future<void> setMpvConfigText(String text) async {
final jsonString = json.encode(entries.map((e) => e.toJson()).toList()); await prefs.setString(_keyMpvConfigText, text);
await prefs.setString(_keyMpvConfigEntries, jsonString);
} }
/// Get only enabled MPV config entries (for player initialization) /// Parse raw config text into a Map<String, String> (skip blanks and # comments)
static Map<String, String> parseMpvConfigText(String text) {
final result = <String, String>{};
for (final line in text.split('\n')) {
final trimmed = line.trim();
if (trimmed.isEmpty || trimmed.startsWith('#')) continue;
final eqIndex = trimmed.indexOf('=');
if (eqIndex <= 0) continue;
final key = trimmed.substring(0, eqIndex).trim();
final value = trimmed.substring(eqIndex + 1).trim();
if (key.isNotEmpty) result[key] = value;
}
return result;
}
/// Get enabled MPV config entries (for player initialization)
Map<String, String> getEnabledMpvConfigEntries() { Map<String, String> getEnabledMpvConfigEntries() {
final entries = getMpvConfigEntries(); return parseMpvConfigText(getMpvConfigText());
return Map.fromEntries(entries.where((e) => e.isEnabled).map((e) => MapEntry(e.key, e.value)));
} }
// MPV Presets // MPV Presets
@@ -959,20 +990,36 @@ class SettingsService extends BaseSharedPreferencesService {
try { try {
final List<dynamic> decoded = json.decode(jsonString); final List<dynamic> decoded = json.decode(jsonString);
return decoded.map((e) => MpvPreset.fromJson(e as Map<String, dynamic>)).toList(); return decoded.map((e) {
final map = e as Map<String, dynamic>;
// Migrate legacy presets with entries list to text
if (map.containsKey('entries') && !map.containsKey('text')) {
final entries = map['entries'] as List;
final lines = <String>[];
for (final item in entries) {
if (item is Map<String, dynamic>) {
final key = item['key'] as String? ?? '';
final value = item['value'] as String? ?? '';
final enabled = item['isEnabled'] as bool? ?? true;
if (key.isNotEmpty) {
lines.add(enabled ? '$key=$value' : '#$key=$value');
}
}
}
map['text'] = lines.join('\n');
}
return MpvPreset.fromJson(map);
}).toList();
} catch (e) { } catch (e) {
return []; return [];
} }
} }
/// Save a new preset (overwrites existing with same name) /// Save a new preset (overwrites existing with same name)
Future<void> saveMpvPreset(String name, List<MpvConfigEntry> entries) async { Future<void> saveMpvPreset(String name, String text) async {
final presets = getMpvPresets(); final presets = getMpvPresets();
// Remove existing preset with same name
presets.removeWhere((p) => p.name == name); presets.removeWhere((p) => p.name == name);
presets.add(MpvPreset(name: name, text: text, createdAt: DateTime.now()));
presets.add(MpvPreset(name: name, entries: entries, createdAt: DateTime.now()));
final jsonString = json.encode(presets.map((p) => p.toJson()).toList()); final jsonString = json.encode(presets.map((p) => p.toJson()).toList());
await prefs.setString(_keyMpvConfigPresets, jsonString); await prefs.setString(_keyMpvConfigPresets, jsonString);
@@ -987,12 +1034,12 @@ class SettingsService extends BaseSharedPreferencesService {
await prefs.setString(_keyMpvConfigPresets, jsonString); await prefs.setString(_keyMpvConfigPresets, jsonString);
} }
/// Load a preset (replaces current entries) /// Load a preset (replaces current config text)
Future<void> loadMpvPreset(String name) async { Future<void> loadMpvPreset(String name) async {
final presets = getMpvPresets(); final presets = getMpvPresets();
final preset = presets.firstWhere((p) => p.name == name, orElse: () => throw Exception('Preset not found: $name')); final preset = presets.firstWhere((p) => p.name == name, orElse: () => throw Exception('Preset not found: $name'));
await setMpvConfigEntries(preset.entries); await setMpvConfigText(preset.text);
} }
// Discord Rich Presence // Discord Rich Presence
@@ -1248,6 +1295,7 @@ class SettingsService extends BaseSharedPreferencesService {
prefs.remove(_keyVideoPlayerNavigationEnabled), prefs.remove(_keyVideoPlayerNavigationEnabled),
prefs.remove(_keyShowPerformanceOverlay), prefs.remove(_keyShowPerformanceOverlay),
prefs.remove(_keyMpvConfigEntries), prefs.remove(_keyMpvConfigEntries),
prefs.remove(_keyMpvConfigText),
prefs.remove(_keyMpvConfigPresets), prefs.remove(_keyMpvConfigPresets),
prefs.remove(_keyEnableDiscordRPC), prefs.remove(_keyEnableDiscordRPC),
prefs.remove(_keyAutoPip), prefs.remove(_keyAutoPip),