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.
Set one as a platform's default; override per request with ?format=.
.json.strings.xcstringsstrings.xml.xliff.po.yaml.arb.csv.propertiesEvery 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.
The format is detected from the file. Nested keys keep their path; flat keys stay flat.
The same import runs over HTTP, idempotently, on every merge. See the integrations.
Empty values, duplicate keys and unreadable rows are reported back with a sample, not skipped in the dark.
It takes one drag. If a format round-trips badly, that is a bug and we want to hear about it.