Die Auswahlliste klappte hinter dem Dialog auf
Ein `<dialog>` mit `showModal()` liegt in der Top-Layer des Browsers, über allem — unabhängig von `z-index`. Die Liste hing am `body` und verschwand deshalb hinter genau dem Dialog, in dem ihr Knopf steht. Jetzt wird sie in den Dialog gehängt, wenn es einen gibt. Mit `elementFromPoint` nachgeprüft: an ihrer Stelle liegt wirklich ein Listeneintrag obenauf. Dazu zwei Stellen, die zu der Vermutung geführt haben, die Spracheinstellung wirke nicht: „Übersetzungen holen" stand stur auf en-US. Neben einem Server, der auf Deutsch steht, liest sich das wie eine Aussage über den Server. Vorgewählt wird jetzt die eigene Sprache, sonst die erste, die nicht schon die des Servers ist — und der Text nennt die Serversprache. Und „Meine Sprache" sagt jetzt deutlich, wenn sie abweicht. Sie ändert nicht, was der Server holt, nur was man selbst sieht: steht sie auf Englisch, während der Server auf Deutsch holt, sieht die ganze Mediathek englisch aus und jedes Auffrischen scheint wirkungslos. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
e87d50e470
commit
ce38da1376
@@ -126,7 +126,13 @@ export function auswahl(optionen: Option[], vorgabe = ''): Auswahlfeld {
|
||||
if (e.key === 'Tab') schliessen();
|
||||
};
|
||||
|
||||
document.body.appendChild(box);
|
||||
// **In den Dialog, wenn es einen gibt.**
|
||||
//
|
||||
// Ein `<dialog>` mit `showModal()` liegt in der Top-Layer des Browsers —
|
||||
// über allem, unabhängig von `z-index`. Eine Liste am `body` verschwand
|
||||
// deshalb hinter dem Dialog, in dem ihr Knopf steht. Im Dialog selbst
|
||||
// liegt sie mit ihm in derselben Ebene.
|
||||
(knopf.closest('dialog') ?? document.body).appendChild(box);
|
||||
offen = box;
|
||||
knopf.setAttribute('aria-expanded', 'true');
|
||||
|
||||
|
||||
@@ -1140,11 +1140,26 @@ function sprachbereich(): HTMLElement {
|
||||
|
||||
// **Die eigene Sprache, getrennt von der des Servers.** Die obere
|
||||
// bestimmt, was geholt wird; diese nur, was man selbst zu sehen bekommt.
|
||||
// **Weicht sie ab, steht das deutlich dabei.**
|
||||
//
|
||||
// Eine eigene Sprache ändert nicht, was der Server holt — nur was man
|
||||
// selbst sieht. Steht sie auf Englisch, während der Server auf Deutsch
|
||||
// holt, sieht die ganze Mediathek englisch aus, und jedes „Metadaten
|
||||
// auffrischen" scheint wirkungslos. Genau in diese Falle läuft man,
|
||||
// ohne je zu erfahren, warum.
|
||||
const weichtAb = eigeneSprache !== null && eigeneSprache !== stand.language;
|
||||
const serversprache = sprachen.find(x => x.wert === stand.language)?.text ?? stand.language;
|
||||
|
||||
liste.appendChild(zeile(
|
||||
'Meine Sprache',
|
||||
weichtAb ? 'Meine Sprache — weicht ab' : 'Meine Sprache',
|
||||
eigeneSprache ? (sprachen.find(x => x.wert === eigeneSprache)?.text ?? eigeneSprache)
|
||||
: 'Wie der Server',
|
||||
'Gilt nur für dich. Was nicht übersetzt vorliegt, erscheint weiterhin in '
|
||||
weichtAb
|
||||
? `Du siehst alles auf ${sprachen.find(x => x.wert === eigeneSprache)?.text ?? eigeneSprache}, `
|
||||
+ `obwohl der Server auf ${serversprache} holt. Titel ohne Übersetzung bleiben `
|
||||
+ `auf ${serversprache}. Auf „Wie der Server" stellen, um zu sehen, was wirklich `
|
||||
+ 'gespeichert ist.'
|
||||
: 'Gilt nur für dich. Was nicht übersetzt vorliegt, erscheint weiterhin in '
|
||||
+ 'der Sprache des Servers.',
|
||||
() => dialog({
|
||||
titel: 'Meine Sprache',
|
||||
@@ -1167,14 +1182,27 @@ function sprachbereich(): HTMLElement {
|
||||
|
||||
liste.appendChild(zeile(
|
||||
'Übersetzungen holen',
|
||||
'Füllt eine zweite Sprache für alle Titel auf',
|
||||
'Kostet je Titel eine Anfrage an TMDB und dauert entsprechend. '
|
||||
+ 'Danach sehen Benutzer mit dieser Sprache die übersetzten Titel.',
|
||||
`Füllt eine zweite Sprache neben ${serversprache} auf`,
|
||||
`Der Bestand liegt auf ${serversprache} vor. Das hier legt zusätzlich `
|
||||
+ 'eine zweite Fassung an, für Benutzer, die eine andere Sprache gewählt '
|
||||
+ 'haben — am Bestand selbst ändert es nichts. Kostet je Titel eine '
|
||||
+ 'Anfrage an TMDB.',
|
||||
() => dialog({
|
||||
titel: 'Übersetzungen holen',
|
||||
text: `Die Titel des Servers bleiben auf ${serversprache}. Geholt wird `
|
||||
+ 'eine zusätzliche Fassung, die nur Benutzer mit genau dieser Sprache '
|
||||
+ 'zu sehen bekommen.',
|
||||
felder: [{
|
||||
name: 'sprache', beschriftung: 'Für welche Sprache',
|
||||
auswahl: sprachen, wert: eigeneSprache ?? 'en-US',
|
||||
// **Nicht stur en-US.** Stand dort „Englisch", während der Server
|
||||
// auf Deutsch steht, las sich das wie eine Aussage über den
|
||||
// Server — und führte zu der Vermutung, die Spracheinstellung
|
||||
// wirke nicht. Vorgewählt wird die eigene Sprache, sonst die
|
||||
// erste, die nicht schon die des Servers ist.
|
||||
auswahl: sprachen,
|
||||
wert: eigeneSprache
|
||||
?? sprachen.find(x => x.wert !== stand.language)?.wert
|
||||
?? stand.language,
|
||||
}],
|
||||
bestaetigen: 'Holen',
|
||||
tun: async wert => {
|
||||
|
||||
Reference in New Issue
Block a user