Translate your game's content strings into multiple locales.
Localization
The Localization editor turns your game into a multi-language product. It's a full pipeline: define locales, author translated strings in the editor, serve locale bundles from the game server, and translate at runtime in the client.
How It Works
1. Locales — define the languages your game supports (e.g. en, es, fr), with a base/fallback locale.
2. Strings — content-facing text (UI labels, item/quest/NPC names and descriptions, and system messages) is collected as translatable keys.
3. Authoring — the Localization page lets you fill in translations per locale, key by key, and see what's missing.
4. Serving — the game server exposes locale bundles over HTTP; the client fetches the player's locale and swaps text at runtime.
Translating in a spreadsheet
For more than a handful of strings, it's faster to translate a whole language in Excel, Google Sheets, or a translator's tool and bring it back in one go.
1. Open Database → Localization and add the language under Locales if it isn't there yet. 2. In the Translations grid, pick that language in the target-language dropdown (top right). 3. Under Import / Export, click Export … template (CSV). You get one row for every string in your game, for that language. 4. Fill in the value column. Use the source column to see what each string says. Leave rows you haven't translated yet blank. 5. Save the file as CSV. Any spreadsheet's CSV works, including one that saves with semicolons. 6. Back in Localization, click Open file…, choose the file, then click Import. You can also paste the text into the box. 7. Read the import report under the box. The translations show in the grid right away.
The file's columns
| Column | What it is |
|---|---|
| locale | The language code, e.g. pt-BR. It must be a language you've added, or the grid won't show those rows. |
| namespace | What kind of content the string belongs to (item, quest, npc, dialogue, zone, …). Don't change it. |
| key | Which exact string this is. Don't change it: it's how the import finds the string. |
| source | Your original text, for reference. The import ignores it. |
| value | Your translation. This is the only column you fill in. |
Gotchas
- A blank cell never erases a translation. Importing a half-finished file, or the same template twice, only adds what's filled in. To remove a translation, clear its cell in the grid.
- Keys must stay exactly as exported. If a translation tool or a find-and-replace changes a key, that row can't match any string. The import report lists every key that matched nothing, so you can fix the file and import it again.
- A quote that never closes stops the import. If one cell opens a
"and never closes it, the import tells you which row it's on instead of reading the rest of the file as one cell. Fix that row and import again. - Accents look wrong in Excel? Open the file with Data → From Text/CSV and choose UTF-8. Exported files are already marked as UTF-8, and Open file… reads both UTF-8 and older Windows encodings.
- Export all (CSV / JSON) is a backup of every translation in every language, not a template. It only contains strings that already have a translation.
- Finding what's left. Tick Untranslated only above the grid to hide every string that already has a translation in the target language. The grid shows 500 rows at a time; click Show … more at the bottom for the rest.
Getting translations into the game
Your languages, translations and Vocabulary terms travel to your game server the same way the rest of your content does:
- When you save, if the game server is running, the change is sent to it straight away. Players who are already in the game see it after they reload.
- When you Publish, every translation, language setting and Vocabulary term is sent, so a server that was stopped while you worked catches up. Translations you deleted are removed from the server too.
If a publish warns that translations, language settings or vocabulary can't be received yet, your game server is on an older version. Nothing is lost: they arrive with the first publish after the server updates.
Vocabulary vs. Localization
These are two different tools that pair well:
- Vocabulary customizes the engine's own terminology for your game — renaming "silver" to "credits", or "guild" to "clan" — within a single language.
- Localization translates your authored content into other languages.