Skip to main content
Entri supports importing and exporting translation files in the formats your project already uses — no conversion required. Bring your existing translations in on day one, and export finished translations directly into your build pipeline.

Supported Formats

JSON

Flat (json-flat) and nested (json-nested) JSON structures. The most common format for web apps and Node.js projects.

YAML

YAML key-value files (yaml). Common for Rails and other frameworks.

Android XML

Android string resource files (android-xml) for native Android apps.

iOS .strings / .stringsdict

Apple .strings files (ios-strings) and .stringsdict plurals files (ios-stringsdict) for native iOS and macOS apps.

XLIFF

XLIFF 1.2 (xliff) and XLIFF 2.0 (xliff2) — standard XML bilingual formats for translation tooling.

ARB

Application Resource Bundle (arb) — Flutter’s localization format.

Gettext PO/POT/MO

GNU Gettext formats: po (translation files), pot (templates), and mo (compiled binary files).

Importing Translations

Use the import flow to bring existing translation files into Entri. This is typically done once when setting up a project, or when receiving translated files from an external vendor.
1

Open the Import dialog

Navigate to your project and select Import from the toolbar or the project settings page.
2

Choose your file and format

Upload your translation file and select the corresponding format. For JSON projects, Entri auto-detects whether the file uses flat or nested keys.
3

Select a language

Specify which language the file contains. Source language files are used to create or update keys; target language files populate translations.
4

Configure conflict resolution

Choose how Entri handles keys that already exist in the project:
  • Skip — keep the existing translation untouched
  • Overwrite — replace the existing translation with the imported value
5

Review and confirm

Entri shows a preview of how many keys will be created, updated, or skipped before you commit the import.

Namespaces

If your project organizes translations across multiple files (for example, common.json, auth.json, dashboard.json), you can assign a namespace during import. Keys are stored under that namespace so they remain organized by feature or file.

Via API

You can automate imports through the REST API, which is useful for CI/CD pipelines and vendor integrations.
curl -X POST https://api.nt3.io/api/projects/{projectId}/import \
  -H "X-API-Key: your_api_token" \
  -H "Content-Type: application/json" \
  -d '{
    "language": "fr",
    "format": "json-nested",
    "content": "{\"nav\":{\"home\":\"Accueil\"}}",
    "overwrite": false
  }'
Send the file contents as a JSON string in the content field — the import endpoint accepts JSON body, not multipart form data.

Exporting Translations

Export translations to download finished files in the format your codebase expects.

Export a Single Language

curl -O -J \
  -H "X-API-Key: your_api_token" \
  "https://app.entri.io/api/projects/{projectId}/export/fr?format=json-nested"

Export from the UI

  1. Open your project and navigate to Export.
  2. Select the language (or choose All languages to download a ZIP archive).
  3. Choose the output format.
  4. Click Download.
The Entri CLI’s entri pull command is the recommended way to keep your local files in sync during development. It uses the same export API internally and writes files to the correct paths based on your .nt3.yml configuration.

List Supported Formats

To retrieve the list of formats supported by the API at runtime:
GET /api/projects/{projectId}/formats
This returns format identifiers and display names that can be passed to the format parameter on import and export requests.