Skip to main content
LazyLocales uses OpenAI’s GPT-4o for translations. Each project can configure the model and temperature in the dashboard settings.
No. LazyLocales uses incremental translation. When you push a source file update, a diff is computed against the previous version. Only new and modified keys are sent to the AI. Existing translations are preserved.
LazyLocales works with flat and nested JSON locale files — the same format used by i18next, react-intl, and most i18n libraries. Each key maps to a string value.
{
  "greeting": "Hello",
  "auth": {
    "login": "Log in",
    "logout": "Log out"
  }
}
Add __context__ keys to your source JSON. These are sent to the AI as context but are excluded from the translated output.
{
  "cta.start": "Get started",
  "__context__cta.start": "Call-to-action button on homepage, keep it short"
}
Yes. Use __lock__ annotations to mark keys that should not be translated (like brand names or technical terms). The source value will be copied to all locale files.
{
  "brand": "LazyLocales",
  "__lock__brand": true,
  "tagline": "AI-powered translation management"
}
Locked keys are counted separately and don’t consume translation credits.
Yes. Generate a read_write API token in your project settings, store it as a CI secret named LAZYLOCALES_API_KEY, and the CLI will use it automatically. See the CI/CD guide for examples with GitHub Actions, GitLab CI, and Vercel.
The CLI writes translated JSON files directly to your project. Import them in your i18next config or serve them from your public directory with i18next-http-backend for dynamic loading. See the i18next integration guide.
Endpoint categoryLimit
Locale file fetches (GET)300/min, burst 100
Translation triggers (POST)10/hour
Source file pushes (PUT)60/min
General API calls120/min, burst 30
Rate-limited responses return a 429 status with a Retry-After header.
LazyLocales supports all BCP 47 language tags, including regional variants. Common examples:en, en-US, en-GB, es, fr, fr-FR, de, nl-NL, ja, ko, zh-CN, zh-TW, ar, hi, pt-BRThe CLI includes a built-in locale picker with 60+ languages.
CLI credentials are stored locally in ~/.config/lazylocales/ using the conf library. Run lazylocales logout to clear them.
Currently, each project supports a single source locale file. If your app uses multiple namespaces, combine them into a nested JSON structure:
{
  "common": { "save": "Save", "cancel": "Cancel" },
  "auth": { "login": "Log in", "signup": "Sign up" }
}