Projects
Which file formats can I use?
transglot reads and writes twenty localization file formats, covering web, mobile, desktop, game and document workflows.
Every format below works for bringing strings in (browser upload, CLI push, API) and for getting translations out (CLI pull, export, API). Placeholders and plural forms are kept intact, and the automatic checks flag a translation that breaks them before it reaches your app.
| Ecosystem | Formats | Separate plural forms |
|---|---|---|
| Web and JavaScript | JSON (flat), JSON (nested), YAML | No |
| Apple | iOS Strings (.strings), iOS Stringsdict (.stringsdict), Apple String Catalog (.xcstrings) | Stringsdict and String Catalog |
| Android | Android XML | Yes |
| Flutter | Flutter ARB | Yes |
| PHP and Laravel | Laravel JSON, Laravel PHP | No |
| Interchange | XLIFF 1.2 and XLIFF 2.0, gettext PO | gettext PO |
| .NET and Java | .NET .resx, Java .properties | No |
| Spreadsheets | CSV and XLSX | Yes, one row per form |
| Documents | Markdown / MDX | No |
| Games | Unity CSV (Unity Localization string tables), Unreal PO (Unreal Engine Localization Dashboard) | No |
Things to know
- Plurals in any format. Formats without separate plural forms can still hold plurals as ICU messages inside a string, such as
{count, plural, one {# item} other {# items}}. See Plural forms. - Laravel. Use Laravel JSON (
lang/{locale}.json) to bring Laravel strings in. Laravel PHP array files that start with the standard comment header cannot be read, so the browser upload does not offer.phpfiles. - Apple.
.stringsdictholds plural strings only; keep simple strings in.strings, or use a String Catalog for both. - Descriptions. Flutter ARB, XLIFF 1.2, Apple String Catalog, gettext PO, CSV, XLSX, Unity CSV and Unreal PO carry a description for each string, which becomes the key's description. In other formats, write descriptions in the console. See Add or edit a key.
- Detection. transglot detects a file's format from its contents and name. When it guesses wrong in the browser upload, pick the right format on the file's row before importing. See Import content.