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

ColumnWhat it is
localeThe language code, e.g. pt-BR. It must be a language you've added, or the grid won't show those rows.
namespaceWhat kind of content the string belongs to (item, quest, npc, dialogue, zone, …). Don't change it.
keyWhich exact string this is. Don't change it: it's how the import finds the string.
sourceYour original text, for reference. The import ignores it.
valueYour 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.
This works whether your game server shares the editor's database or has its own. That covers the desktop app's playtest server and a managed server.

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.
Use Vocabulary to set your game's voice, then Localization to ship that voice in every language.