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.
84 lines
2.9 KiB
JSON
84 lines
2.9 KiB
JSON
{
|
|
"project": "DealHunterShip_4.0e_whole-to-audio",
|
|
"chapter_id": 1,
|
|
"chapter_title": "Sample / voice introduction",
|
|
"language_name": "Italian",
|
|
"language_code": "it",
|
|
"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": "Benvenuti all'audiolibro Deal Hunter. Sono il tuo narratore e ti presenterò alcune delle voci che potrai sentire. Principessa Kainda, per favore, saluta."
|
|
},
|
|
{
|
|
"index": 1,
|
|
"speaker": "Kainda",
|
|
"type": "dialogue",
|
|
"text": "Ciao! Sono la principessa Kainda, la protagonista della storia. La mia avventura inizierà tra poco."
|
|
},
|
|
{
|
|
"index": 2,
|
|
"speaker": "Narrator",
|
|
"type": "narration",
|
|
"text": "Grazie, Kainda. Duchessa Victoria, per favore, saluta."
|
|
},
|
|
{
|
|
"index": 3,
|
|
"speaker": "Duchess Victoria",
|
|
"type": "dialogue",
|
|
"text": "Ciao! Sono la duchessa Victoria. Sono anche la zia di Kainda. Non vedo l'ora di condividere questa avventura con te."
|
|
},
|
|
{
|
|
"index": 4,
|
|
"speaker": "Narrator",
|
|
"type": "narration",
|
|
"text": "Sentirai anche altre voci. Deal Hunter, o Hunter, per favore, saluta."
|
|
},
|
|
{
|
|
"index": 5,
|
|
"speaker": "Deal Hunter",
|
|
"type": "dialogue",
|
|
"text": "Ciao! Sono l'intelligenza artificiale che governa la nave. Di solito mi chiamano solo Hunter. Non vedo l'ora di intrattenerti con questa storia. Ecco uno dei miei robot, che Kainda ha deciso di chiamare Nanny. Saluta, Nanny."
|
|
},
|
|
{
|
|
"index": 6,
|
|
"speaker": "Nanny",
|
|
"type": "dialogue",
|
|
"text": "Ciao! Kainda mi ha chiamata Nanny perché è più semplice da usare della mia designazione di robot. Farò il mio meglio per essere utile."
|
|
},
|
|
{
|
|
"index": 7,
|
|
"speaker": "Narrator",
|
|
"type": "narration",
|
|
"text": "Ti presenterò un'altra voce. Per favore, saluta."
|
|
},
|
|
{
|
|
"index": 8,
|
|
"speaker": "Trader Romano",
|
|
"type": "dialogue",
|
|
"text": "Ciao a tutti! Sono Romano. Compro rottami dal Deal Hunter e offro sempre il prezzo migliore. Vieni alla stazione se vuoi scambiare."
|
|
},
|
|
{
|
|
"index": 9,
|
|
"speaker": "Narrator",
|
|
"type": "narration",
|
|
"text": "Queste voci, e molte altre, sono state create da B. D. Murphy nel suo sistema Umbra Audio per dare voce al suo libro originale, Deal Hunter. Il progetto è rendere possibile la produzione di audiolibri assistita dall'IA."
|
|
},
|
|
{
|
|
"index": 10,
|
|
"speaker": "Narrator",
|
|
"type": "narration",
|
|
"text": "Non vediamo l'ora di intrattenerti con la versione audio di Deal Hunter."
|
|
},
|
|
{
|
|
"index": 11,
|
|
"speaker": "Deal Hunter",
|
|
"type": "dialogue",
|
|
"text": "Grazie per aver ascoltato!"
|
|
}
|
|
]
|
|
} |