Aug 22, 2026 · ishimoto

The Localization Editor

The Localization Editor

TreasureBoat localizes with Apple-style .strings files, one per language, inside .lproj folders (from the Project Layout post):

src/main/resources/
    English.lproj/Localizable.strings
    Japanese.lproj/Localizable.strings
    German.lproj/Localizable.strings

A .strings file is just key–value pairs:

/* a comment */
"login.title"    = "Sign In";
"login.username" = "Username";

Editing several languages by hand and keeping their keys in sync is tedious, so the Localization Editor gives you a table with compare and sync built in.

Overview


The layout

  • Left — the key list. Every key/value, with a filter box. Missing values are highlighted so gaps are obvious.
  • Right — edit & compare. Edit the selected value (multi-line supported), and pick a Comparison Language to see another language’s value side by side.

The two features that save time

Compare

Choose a comparison language and the table gains a column showing that language’s value next to the current one — so you can translate against a reference and spot what’s still missing at a glance.

Sync Keys

Sync Keys finds keys that exist in one language but not the other and adds the missing ones (with empty values) to both files, then reports how many it added. Run it whenever you add new keys and every language file stays aligned.

Compare


Good to know

  • Delete vs Delete from AllDelete removes a key from the current language only; Delete from All removes it from every language file. Use the second with care.
  • Use hierarchical keys (login.title, login.button.submit) — they group naturally and read well in code.
  • Use \n for line breaks inside a value; escape quotes as \".
  • This edits the strings. In components and Java you read them through the localizer (e.g. $localizer.login.title) — see the note in the Project Layout post about using the localizer classes rather than multi-language components.


#IntelliJ

← Back to the blog