Formats

Translation files that survive the round trip

locamorph reads and writes seven translation file formats: JSON, YAML, Android strings.xml, iOS .strings, Flutter ARB, Java properties and XLIFF. Import any of them, translate, and export files your toolchain accepts without a cleanup pass.

Every implemented format ships with a round trip test: what locamorph exports parses back identically, and translator notes travel in both directions.

At a glance

Seven formats, one pipeline

Files enter through uploads, repo syncs, S3 or the CLI, and leave the same ways. The format decides what can be expressed; locamorph maps everything onto one model of keys, values, plurals and notes.

Format Extensions Used by Plurals Import Export
JSON .json Web apps, i18next, react-intl ICU messages Yes Yes
YAML .yml .yaml Ruby on Rails ICU messages Yes Yes
Android XML .xml Native Android Native <plurals> Yes Yes
iOS Strings .strings iOS, macOS None in format Yes No
ARB .arb Flutter Native ICU Yes Yes
Java Properties .properties Java, Spring ICU in values Yes Yes
XLIFF .xlf .xliff CAT tools, Angular Native Yes Yes

Guarantees

What holds across every format

round trip

Exports parse back identically

Each format's exporter is tested against its own parser. A file that leaves locamorph and comes back carries the same keys, values, plurals and notes.

plurals

Plural forms are never dropped

Plurals normalize to CLDR categories internally. Android plurals blocks, ARB ICU messages and XLIFF groups convert without losing a form.

detection

Content based detection

Imports identify the format from the content itself with confidence scoring, so a YAML file named .txt or an ARB served as JSON still lands right.

Exports are also deterministic. Indentation, key order, nesting and plural style follow the project’s settings rather than whoever exported last, so the same keys always serialize to the same bytes and a translation diff stays down to the strings that changed.

Bring the files you already have

Drop a file on a free project and locamorph identifies the format, reads the plurals and keeps the notes. When you export, your toolchain gets exactly the shape it expects.