Files
UmbraAudio/samples/translations/deal_hunter_sample_ch1_FR.json
B.D. Murphy b63bc5bd0a Fix language selector being invisible; correct sample utterance types
The dropdown was in the HTML all along and still could not be seen. Three
separate causes, found by measuring the rendered element rather than
trusting that the markup existed:

1. Clipped off-screen. The h1 is a flex row with no wrap. Measured at an
   800px viewport: the language span started at x=620 and ended at x=810,
   past the viewport edge, so only its first few pixels were painted. The
   project badge alone took 309px. Adding flex-shrink and truncating the
   badge did not fix it - there is genuinely no room in that row. The
   selector now gets its own bar directly under the header, and the
   project name ellipsises. Verified visible: x=181, right=341 in an
   800px viewport, 34px tall.

2. Empty on every other page. base.html rendered the select from a
   `languages` variable that almost no page supplies, so the login page
   and the rest of the app showed a 38px-wide dropdown with zero options -
   effectively invisible, and a dead control. Pages now opt in by
   overriding a header_bar block. Verified /, /speakers, /chapters-audio
   and /login all still render.

3. Browser cache made my own screenshot lie. It showed a stale Japanese
   string containing the word "decisiveness" that is in no file on disk.
   A cache-busted fetch confirmed the server is clean. Worth remembering:
   a screenshot taken through a warm cache is not evidence.

The screenshot also exposed a data bug. All 12 sample utterances carried
type "narration" - including Kainda, Duchess Victoria, Deal Hunter, Nanny
and Trader Romano, who are all speaking. Every row rendered a narration
badge and the file told UmbraTrans that six characters were not speaking.
SHAPE in build_sample_translations.py now marks 6 dialogue / 6 narration,
and the generated JSONs are regenerated to match.

Also removed a misleading issue. It reported "12 rendered clips have no
staleness marker" as a translation problem; the markers are absent because
render_lang_test.py does not write them, so it was sending the reader after
a defect that does not exist. Replaced with the honest one: only 12 of
4,319 translated and none confirmed - sample only, not publishable.

Suite: 721 passed, 8 pre-existing. ruff clean on changed regions.
2026-10-14 08:06:38 -07:00

84 lines
3.0 KiB
JSON

{
"project": "DealHunterShip_4.0e_whole-to-audio",
"chapter_id": 1,
"chapter_title": "Sample / voice introduction",
"language_name": "French",
"language_code": "fr",
"tts_engine": "Qwen3-TTS",
"is_source_language": false,
"provenance": "LLM-produced sample, single pass, NOT the multi-pass pipeline. Requires native-speaker review.",
"utterances": [
{
"index": 0,
"speaker": "Narrator",
"type": "narration",
"text": "Bienvenue dans le livre audio Deal Hunter. Je suis ton narrateur et je vais te présenter plusieurs des voix que tu vas entendre. Princesse Kainda, dis bonjour !"
},
{
"index": 1,
"speaker": "Kainda",
"type": "dialogue",
"text": "Bonjour ! Je suis la princesse Kainda, l'héroïne principale de cette histoire. Mon aventure commence dans un instant."
},
{
"index": 2,
"speaker": "Narrator",
"type": "narration",
"text": "Merci, Kainda. Duchesse Victoria, dis bonjour !"
},
{
"index": 3,
"speaker": "Duchess Victoria",
"type": "dialogue",
"text": "Bonjour ! Je suis la duchesse Victoria. Je suis aussi la tante de Kainda. J'ai hâte de partager cette aventure avec toi."
},
{
"index": 4,
"speaker": "Narrator",
"type": "narration",
"text": "Tu entendras aussi d'autres voix. Deal Hunter, ou Hunter, dis bonjour !"
},
{
"index": 5,
"speaker": "Deal Hunter",
"type": "dialogue",
"text": "Bonjour ! Je suis l'intelligence artificielle qui dirige le vaisseau. On m'appelle d'ordinaire simplement Hunter. J'ai hâte de te faire découvrir cette histoire. Voici l'un de mes robots, que Kainda a décidé de surnommer Nanny. Dis bonjour, Nanny."
},
{
"index": 6,
"speaker": "Nanny",
"type": "dialogue",
"text": "Bonjour ! Kainda m'a appelée Nanny parce que c'est plus facile à prononcer que ma désignation de robot. Je ferai de mon mieux pour t'être utile."
},
{
"index": 7,
"speaker": "Narrator",
"type": "narration",
"text": "Je vais te présenter une dernière voix. Dis bonjour !"
},
{
"index": 8,
"speaker": "Trader Romano",
"type": "dialogue",
"text": "Bonjour à tous ! Je suis Romano. Je fais commerce de ferraille avec le Deal Hunter, et j'offre toujours le meilleur prix. Viens à la station si tu souhaites échanger."
},
{
"index": 9,
"speaker": "Narrator",
"type": "narration",
"text": "Ces voix, et bien d'autres, ont été créées par B. D. Murphy au sein de son système Umbra Audio pour donner voix à son livre original, Deal Hunter. Le projet est de rendre possible la production de livres audio assistée par IA."
},
{
"index": 10,
"speaker": "Narrator",
"type": "narration",
"text": "Nous avons tous hâte de t'offrir la version audio de Deal Hunter."
},
{
"index": 11,
"speaker": "Deal Hunter",
"type": "dialogue",
"text": "Merci d'avoir écouté !"
}
]
}