How to translate a TyranoBuilder / TyranoScript game to English
Translate TyranoBuilder / TyranoScript visual novels with RuneTranslate — extracting data/scenario/*.ks scripts, masking KAG tags, translating character display names, and exporting a playable HTML5 or Electron build.
TyranoBuilderand the underlying TyranoScript engine power a large catalogue of indie Japanese visual novels — the web-tech (HTML5 / JavaScript) alternative to Kirikiri and Ren'Py, shipped either as standalone HTML5 folders or Electron-wrapped executables. Its scenarios use the same KAG-style .ks syntax as Kirikiri, so the text is easy to reach once you know where it lives. This guide walks through translating a TyranoBuilder game end-to-end with RuneTranslate, including the part most tools miss: character display names.
What you need
- RuneTranslate for Windows— free, every engine and provider unlocked.
- A TyranoBuilder game: a standalone HTML5 folder (loose
data/andtyrano/directories) or an Electron build (aresources/app.asarholdingtyrano/tyrano.jsanddata/scenario/*.ks). RuneTranslate detects both. - A target language — English, Spanish, French, German, Chinese, and 30+ more.
- One provider. Visual novels are dialogue-heavy, so an LLM (OpenAI / Anthropic) or DeepL reads best; free Google Translate works out of the box.
Step 1: Open the game folder
Launch RuneTranslate, click New project, and point it at the game directory (or the folder containing the .exe for Electron builds). Detection recognises TyranoBuilder from its tyrano/ runtime plus data/scenario/ scripts; for Electron builds it reads the app.asar directly, so you never unpack anything. Your original game is never modified.
Step 2: How strings get extracted
RuneTranslate pulls translatable text from everywhere TyranoBuilder stores it:
- Scenario scripts — every
data/scenario/**/*.ksfile, including_preview.ksand thesystem/_*.ksmirrors that encrypted builds rely on. - UI and config —
tyrano/lang.jsanddata/system/Config.tjs. - Character display names— the speaker labels shown above dialogue (next section).
KAG inline tags — [r] line breaks, [p] click-waits, [改ページ] page breaks, [font color=...], and JP-named tags — are masked behind numeric [[U#]] placeholders before anything reaches the provider, then restored on export, so formatting survives intact. Binary or encrypted .ks files are detected via a UTF-8 sniff and never overwritten.
Step 3: Character names — the Tyrano-specific bit
Scenarios often address a speaker with an inline shorthand like [yuki] — a character ID, not display text. RuneTranslate never rewrites those references (that would break the engine's character lookup and crash the scene). Instead it translates the display name and injects a proper [chara_new name=... jname=...] entry into data/system/chara_define.ks on export. The name shown on screen is translated; the ID the script uses stays untouched.
Step 4: Translate and review
Pick a provider and run. An LLM (OpenAI / Anthropic) reads best for character voice; DeepL is fast and clean for narration; free Google Translate covers menus. Glossary your cast and recurring terms first so names render identically across every route — see Glossary 101. Every line lands in the editor beside its source; edit inline (saves on blur or Ctrl+Enter), use find & replace, or run the optional AI refinerfor a context-aware second pass. The free tier is modestly throttled on speed — roughly half the paid throughput on AI providers — with identical output quality.
Step 5: Export a playable build
Click Export. For standalone HTML5 games, RuneTranslate writes the translated .ks scripts, lang.js, config, and the injected chara_define.ks into a copy of the game. For Electron builds it repacks a modified app.asar. Either way you get a full, runnable copy in the location you choose — launch it and it plays in your target language.
Known limitations
- Encrypted
.ksfiles (detected as non-UTF-8) are left untouched, so scenarios in an encrypted build won't translate. - Image text (logos, hand-drawn UI, CG captions) is outside machine-translation scope.
- Custom plugins that build dialogue at runtime may need a quick hand-fix in the editor.
Why this is easier than the old way
The manual route meant unpacking the app.asar, finding every .ks file (including the easy-to-miss system mirrors), translating around the KAG tags by hand, working out the character-name injection, then re-packing the asar without corrupting it. RuneTranslate folds the whole chain into a few clicks, with the editor open so you control the wording.
See the TyranoBuilder engine page for the full feature list, read the Kirikiri guide for the related KAG engine, or download RuneTranslate and try it on a real game.
Ready to try RuneTranslate?
Free tier unlocks every engine + every translation provider. Supporter ($3/mo) unlocks full speed.
Download for Windows