Config file reference
i18nme.config.json, created by i18nme init and read by every CLI command.
{
"sourceLocale": "en",
"targetLocales": ["de", "fr", "es"],
"files": "locales/{locale}.json",
"format": "json"
}Fields
sourceLocale (required)
The locale your source strings are written in, e.g. "en". This is the locale sync reads from and translates out of — it's never a target.
targetLocales (required)
Array of locale codes to translate into, e.g. ["de", "fr", "es"]. Each one maps to a locale file via files.
files (required)
Path template for locale files. Must contain the literal string {locale}, substituted per language:
"locales/{locale}.json" -> locales/en.json, locales/de.json, ...Paths are resolved relative to the directory containing i18nme.config.json.
format
One of "json" (default), "arb", or "rails-yaml" — see Adapters. Determines how each locale file is parsed and re-serialized.
apiBaseUrl / portalBaseUrl
Override the default hosted endpoints — only needed for a self-hosted deployment. Can also be set via the I18NME_API_URL / I18NME_PORTAL_URL environment variables, which take priority if both are set.
| Field | Default | Used by |
|---|---|---|
apiBaseUrl | https://sapi.i18nme.com | status (read-only) |
portalBaseUrl | https://api.i18nme.com | sync (costs translation units) |
.i18nme-lock.json
Written by sync, not init. Maps each key to a hash of the source text as of the last successful sync — this is the local diff state that makes repeated sync runs translate only what changed. Commit it alongside your source locale file. Losing it isn't destructive (the server re-checks translation memory regardless), just slower — everything looks "changed" once and gets re-diffed against the server's cache.
Environment variables
| Variable | Purpose |
|---|---|
I18NME_API_KEY | Project API key — required for sync and status |
I18NME_API_URL | Overrides apiBaseUrl |
I18NME_PORTAL_URL | Overrides portalBaseUrl |