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. Generate a read_write API token in your project settings, store it as a CI secret, and set apiToken in your config to process.env.LAZYLOCALES_API_TOKEN. See the CI/CD guide for examples with GitHub Actions, GitLab CI, and Vercel.
Use the LazyLocales API with i18next-http-backend. The GET /v1/projects/:projectId/locales/:locale endpoint returns translated JSON with caching headers (Cache-Control, ETag). 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" }
}