fix(ui): Sprachnamen auf Deutsch - "Undetermined" versteht niemand
Ampel / ampel (push) Successful in 29s
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:
@@ -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>
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user