This window isn't where you type your translations text by text: it's where you manage the project's languages — add them, track their progress, and move the text to translate through a file. The actual translation work happens elsewhere, in a .po file. 🎯
🖱️ 1. Opening the window
Cmd+Shift+K, or the "Translate" entry in the project's main menu.
🆕 2. First launch
If no language has been set up yet, the window first asks you to:
- "Select your project's default language" — the language you write your blocks in.
- "Select the first language you would like to translate your project" — the first language to add.
➕ 3. Adding a language
The "Add a translation" button opens a language picker.
🔺 You cannot pick the project's default language, nor a language that has already been added: each language can only appear once in the list.
📊 4. What the window shows for each language
Once a language is selected in the left panel, the panel shows:
- The creation and last-update dates.
- An overall completion rate, then broken down by category: blocks, menus, character biographies.
A piece of content only counts as "translated" if all of the text it exposes has a translation — a half-translated block counts as untranslated in the percentage.
✍️ 5. Where the text actually gets translated
Nowhere in this window. The flow is:
- "Export a PO file" — generates a
.pofile listing all the text to translate (dialogue, choices, alerts, narrator text, menu text, character biographies…), with any translation you already imported. - You edit that
.pofile outside Celestory, with a translation editor or a plain text editor. - "Import a PO file" — reloads the corrected file. The completion rate updates right away.
🔺 There is no translated-text editor inside the Celestory interface: no "translation" field sitting next to the original text, block by block. Everything goes through exporting and importing the .po file.
🔺 If the imported file has a formatting error, the window lists the lines that failed — the rest of the file is still imported.
🎮 6. How the player sees the right language
Choosing which language is displayed does not happen in this window: the player picks it, from the menu inside the played app. This window only prepares the translated content ahead of time; it doesn't drive what's shown during play.
🚫 7. What is NOT translated automatically
Only the text that a given block type explicitly exposes as translatable goes into the export: dialogue, choices, alerts, narrator text, background changes (the displayed text, not the image), notifications, input fields, QTE, swipe, clickable zones, menu text, character biography.
🔺 Everything else must be translated by hand, inside the block itself: the code in an HTML5, CSS or Javascript block is never extracted to the .po file — you have to duplicate or edit those blocks per language. The same goes for images, sounds and videos: switching language does not automatically swap the displayed media, only the text that comes with it, when such text exists.
→ Next step: open the Labels window to organise the blocks you just spotted as still needing translation. 🏷️