Home/Product/File formats
Import and export

Ten translation file formats, round-tripped unchanged

A translation tool that hands back a format your app cannot load has moved the problem rather than solved it. Every format here round-trips: what you import is what you get back out.

Ten formats

Set one as a platform's default; override per request with ?format=.

.json
Web, React, Vue
.strings
iOS, macOS
.xcstrings
Xcode string catalogs
strings.xml
Android
.xliff
Agencies, CAT tools
.po
gettext, PHP, Python
.yaml
Rails, Symfony
.arb
Flutter
.csv
Spreadsheets
.properties
Java, Spring

Plurals are not an afterthought

Every one of these formats spells plurals differently, and most tools flatten them into a single string. locoloop keeps the forms, and knows which ones a language actually has.

English oneother Polish onefewmanyother Arabic zeroonetwofewmanyother Forms come from CLDR, not from a guess. A missing one is reported by name, on the page and in the API.

Importing what you have

Drop the file in

The format is detected from the file. Nested keys keep their path; flat keys stay flat.

Or push it from CI

The same import runs over HTTP, idempotently, on every merge. See the integrations.

Nothing is silently dropped

Empty values, duplicate keys and unreadable rows are reported back with a sample, not skipped in the dark.

Import your English file and see

It takes one drag. If a format round-trips badly, that is a bug and we want to hear about it.

Start freeLog inBook a demo