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
3.3 KiB
JSON
84 lines
3.3 KiB
JSON
{
|
|
"project": "DealHunterShip_4.0e_whole-to-audio",
|
|
"chapter_id": 1,
|
|
"chapter_title": "Sample / voice introduction",
|
|
"language_name": "Korean",
|
|
"language_code": "ko",
|
|
"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": "오디오북 『Deal Hunter』에 오신 걸 환영해요! 내레이션은 제가 맡고 있어요. 지금부터 여러분이 듣게 될 목소리 몇 개를 소개할게요. 케이이다 공주님, 인사해 줘요!"
|
|
},
|
|
{
|
|
"index": 1,
|
|
"speaker": "Kainda",
|
|
"type": "dialogue",
|
|
"text": "안녕하세요! 저는 이야기의 주인공 케이이다예요. 제 모험은 곧 시작돼요."
|
|
},
|
|
{
|
|
"index": 2,
|
|
"speaker": "Narrator",
|
|
"type": "narration",
|
|
"text": "고마워요, 케이이다! 빅토리아 공작부님, 인사해 줘요!"
|
|
},
|
|
{
|
|
"index": 3,
|
|
"speaker": "Duchess Victoria",
|
|
"type": "dialogue",
|
|
"text": "안녕하세요! 저는 빅토리아 공작이에요. 케이이다의 이모이기도 해요. 이 모험을 여러분이랑 함께하게 돼서 정말 기뻐요!"
|
|
},
|
|
{
|
|
"index": 4,
|
|
"speaker": "Narrator",
|
|
"type": "narration",
|
|
"text": "아직 들으시지 않은 목소리들도 있어요. 딜 헌터, 아니 헌터, 인사해 줘요!"
|
|
},
|
|
{
|
|
"index": 5,
|
|
"speaker": "Deal Hunter",
|
|
"type": "dialogue",
|
|
"text": "안녕하세요! 저는 이 함선을 운항하는 인공지능이에요. 보통은 그냥 헌터라고 불러요. 이 이야기로 여러분 즐겁게 해 드리는 게 기다려져요. 케이이다가 나니라고 이름 붙여 준 제 로봇 중 한 대가 있어요. 나니, 인사해 줘요!"
|
|
},
|
|
{
|
|
"index": 6,
|
|
"speaker": "Nanny",
|
|
"type": "dialogue",
|
|
"text": "안녕하세요! 케이이다가 제 로봇 번호보다 쓰기 편하라고 저를 나니라고 불렀어요. 최대한 도와드릴게요!"
|
|
},
|
|
{
|
|
"index": 7,
|
|
"speaker": "Narrator",
|
|
"type": "narration",
|
|
"text": "목소리 하나만 더 소개할게요. 인사해 줘요!"
|
|
},
|
|
{
|
|
"index": 8,
|
|
"speaker": "Trader Romano",
|
|
"type": "dialogue",
|
|
"text": "여러분, 안녕하세요! 저는 로마노예요. 딜 헌터하고 폐기물 거래를 하면서 항상 제일 좋은 가격에 사드려요. 거래하고 싶으시면 항대로 오세요!"
|
|
},
|
|
{
|
|
"index": 9,
|
|
"speaker": "Narrator",
|
|
"type": "narration",
|
|
"text": "이 목소기들이랑 그 밖의 목소기들은 B. D. 머피가 자기 Umbra Audio 시스템에서 만들어서 자기 원작 『Deal Hunter』에 음성을 입힌 거예요. 이 프로젝트는 인공지능을 활용한 오디오북 제작을 가능하게 하는 게 목표예요."
|
|
},
|
|
{
|
|
"index": 10,
|
|
"speaker": "Narrator",
|
|
"type": "narration",
|
|
"text": "우리 모두 『Deal Hunter』의 오디오 버전으로 여러분을 즐겁게 해 드리길 기다리고 있어요!"
|
|
},
|
|
{
|
|
"index": 11,
|
|
"speaker": "Deal Hunter",
|
|
"type": "dialogue",
|
|
"text": "들어줘서 고마워요!"
|
|
}
|
|
]
|
|
} |