fix(ui): Sprachnamen auf Deutsch - "Undetermined" versteht niemand
Ampel / ampel (push) Successful in 29s

An der echten Akira-Blu-ray gemessen, nachdem die Sprachauswahl live lief:

  Ton:        deu 4x, jpn 2x, und 4x
  Untertitel: deu 4x, und 8x

MakeMKV liefert die Namen englisch ("German", "Japanese") und fuer Spuren ohne
Sprach-Kennzeichnung "Undetermined" - das sind typischerweise Audiokommentare.
Der Commander liest alles auf Deutsch (AGENTS Grundregel 4), und
"Undetermined" ist fuer einen Nicht-Entwickler schlicht keine Auskunft. Jetzt
steht dort "Ohne Sprachangabe", und die zwei Dutzend haeufigsten Codes haben
deutsche Namen. Unbekannte Codes behalten MakeMKVs Namen - geraten wird nichts.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-26 15:22:13 +02:00
parent 9230d0dd7a
commit 848deb1c24
2 changed files with 42 additions and 2 deletions
+2 -2
View File
@@ -4,7 +4,7 @@ import { api } from '../lib/api'
import { Modal } from './ui/Modal' import { Modal } from './ui/Modal'
import { Button } from './ui/Button' import { Button } from './ui/Button'
import { Input, Select } from './ui/Input' import { Input, Select } from './ui/Input'
import { automatikWarnung, externWarnung } from '../lib/encoder' import { automatikWarnung, externWarnung, sprachName } from '../lib/encoder'
interface TargetConfig { interface TargetConfig {
id: string id: string
@@ -524,7 +524,7 @@ export default function RipTargetModal({ isOpen, initialType, discTitle, deviceI
: 'bg-slate-100 dark:bg-slate-900 border-slate-200 dark:border-slate-700 text-slate-600 dark:text-slate-300 hover:border-slate-300 dark:hover:border-slate-600' : 'bg-slate-100 dark:bg-slate-900 border-slate-200 dark:border-slate-700 text-slate-600 dark:text-slate-300 hover:border-slate-300 dark:hover:border-slate-600'
}`} }`}
> >
{s.sprache} {sprachName(s.lang, s.sprache)}
<span className="opacity-70"> ({s.lang})</span> <span className="opacity-70"> ({s.lang})</span>
{s.spuren > 1 && <span className="opacity-70"> · {s.spuren}×</span>} {s.spuren > 1 && <span className="opacity-70"> · {s.spuren}×</span>}
</button> </button>
+40
View File
@@ -33,6 +33,46 @@ interface WorkerFuerBewertung {
info?: { cpu_simd?: string } info?: { cpu_simd?: string }
} }
// --- Sprachnamen für die Auswahl vor dem Rip ---------------------------------
//
// MakeMKV liefert die Namen auf ENGLISCH („German", „Japanese") und für Spuren
// ohne Sprach-Kennzeichnung „Undetermined". Beides an der Akira-Blu-ray gemessen
// (26.07.2026): Ton deu 4×, jpn 2×, und 4× — die „und"-Spuren sind typischerweise
// Audiokommentare, die kein Sprachfeld tragen.
//
// „Undetermined" versteht ein Nicht-Entwickler nicht, und der Commander liest
// alles auf Deutsch (AGENTS Grundregel 4). Unbekannte Codes behalten MakeMKVs
// Namen — geraten wird nichts.
const SPRACHNAMEN: Record<string, string> = {
und: 'Ohne Sprachangabe',
deu: 'Deutsch', ger: 'Deutsch',
eng: 'Englisch',
jpn: 'Japanisch',
fra: 'Französisch', fre: 'Französisch',
spa: 'Spanisch',
ita: 'Italienisch',
nld: 'Niederländisch', dut: 'Niederländisch',
rus: 'Russisch',
kor: 'Koreanisch',
zho: 'Chinesisch', chi: 'Chinesisch',
pol: 'Polnisch',
tur: 'Türkisch',
ces: 'Tschechisch', cze: 'Tschechisch',
por: 'Portugiesisch',
swe: 'Schwedisch',
dan: 'Dänisch',
nor: 'Norwegisch',
fin: 'Finnisch',
hun: 'Ungarisch',
ara: 'Arabisch',
mul: 'Mehrsprachig',
}
/** Sprachname auf Deutsch — sonst der Name, den MakeMKV geliefert hat. */
export function sprachName(lang: string, makemkvName?: string): string {
return SPRACHNAMEN[(lang || '').toLowerCase()] || makemkvName || lang || '?'
}
// --- Erreicht ein EXTERNER Worker die Pfade? --------------------------------- // --- Erreicht ein EXTERNER Worker die Pfade? ---------------------------------
// //
// Befund 26.07.2026, live am Job 95afdc89: Das Routing an den Windows-PC des // Befund 26.07.2026, live am Job 95afdc89: Das Routing an den Windows-PC des