Die Sprache lässt sich jetzt auch je Serie und je Mediathek sagen

Das Regelwerk stand schon und wurde abgefragt — es gab nur keinen Ort, an
dem man etwas hineinschreiben konnte. Jetzt steht die Wahl auf der
Serienseite und im Filter-Sheet der Mediathek, beide über denselben
Auswahlknopf: zwei mit demselben Inhalt liefen unweigerlich auseinander.

Bei der Mediathek in einem eigenen Abschnitt, nicht zwischen den Filtern.
Ein Filter schränkt ein, was zu sehen ist; das hier bestimmt, was zu hören
ist — dazwischengestellt läse es sich als „nur Titel mit deutscher Tonspur
zeigen".

Die Rangfolge Serie → Mediathek → allgemein ist dabei von den Einstellungen
zu `AudioTrackChooser.resolve` gewandert. Sie ist eine Regel, keine Ablage,
und im App-Ziel gibt es kein Unit-Test-Ziel — dort liesse sie sich nicht
durchspielen. Sechs Tests decken sie jetzt ab, darunter der Fall, an dem
man sonst lange sucht: eine leere Zeichenkette steht in den Einstellungen
für „soll der Server entscheiden" und darf nicht als Sprache gelten, sonst
schaltet sie die Ebene darüber stillschweigend ab.

Nebenbei bekommt das Filter-Sheet die Mediathek selbst statt nur ihrer Art.
Die Genres wurden vorher über irgendeine Mediathek dieser Art nachgeschlagen
— bei zwei Filmmediatheken also über die falsche.

Und der Puffer steht auf einer Minute statt auf 25 Sekunden. Es ist ein
Mindestwunsch, keine Obergrenze; der harte Deckel liegt ohnehin woanders,
nämlich darin, wie weit der Transcoder schon produziert hat.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-28 17:12:17 +02:00
co-authored by Claude Opus 5
parent 596a143545
commit 983015b9ad
9 changed files with 329 additions and 21 deletions
+89
View File
@@ -5,6 +5,10 @@
"comment": "A separator between different parts of the episode metadata.",
"isCommentAutoGenerated": true
},
"%@": {
"comment": "A number in a list.",
"isCommentAutoGenerated": true
},
"%@ GB": {
"comment": "A picker option in the settings view that lets the user select the maximum amount of storage space that can be used for downloaded content. The value is given in gigabytes.",
"isCommentAutoGenerated": true
@@ -1751,6 +1755,23 @@
}
}
},
"filter.librarySettings": {
"extractionState": "manual",
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Diese Mediathek"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "This library"
}
}
}
},
"filter.reset": {
"extractionState": "stale",
"localizations": {
@@ -2301,6 +2322,57 @@
}
}
},
"languages.forThisLibrary": {
"extractionState": "manual",
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Tonsprache für diese Mediathek"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Audio language for this library"
}
}
}
},
"languages.forThisLibraryExplanation": {
"extractionState": "manual",
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Gilt für alle Titel dieser Mediathek. Eine Serie kann es überstimmen, und was du im Player von Hand wählst, überstimmt beides."
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Applies to every title in this library. A series can override it, and what you pick by hand in the player overrides both."
}
}
}
},
"languages.forThisSeries": {
"extractionState": "manual",
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Tonsprache für diese Serie"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Audio language for this series"
}
}
}
},
"languages.headerExplanation": {
"extractionState": "stale",
"localizations": {
@@ -2318,6 +2390,23 @@
}
}
},
"languages.inherit": {
"extractionState": "manual",
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Wie allgemein"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "As set generally"
}
}
}
},
"languages.serverDefault": {
"localizations": {
"de": {