Skip to content

openlocaleShip in every language.

Self-hosted translation management with live delivery — edit a string in the dashboard and every connected app updates. No redeploy, no rebuild, no waiting.

openlocale

Sixty seconds to live translations

sh
docker run -p 3000:3000 -v openlocale-data:/data \
  -e OPENLOCALE_DB_URL=file:/data/openlocale.db \
  -e OPENLOCALE_AUTH_SECRET=$(openssl rand -hex 32) \
  openlocale/openlocale
ts
import { createClient } from "@openlocale/sdk";

const ol = createClient({
  endpoint: "https://locale.example.com",
  project: "demo",
  live: true            // SSE with polling fallback
});

await ol.load("es");
ol.t("checkout.title"); // "Pagar"

ol.on("update", () => rerender()); // fires when a translator hits save
ts
import i18next from "i18next";
import { OpenLocaleBackend } from "@openlocale/i18next-backend";

await i18next.use(OpenLocaleBackend).init({
  lng: "es",
  backend: {
    endpoint: "https://locale.example.com",
    project: "demo"
  }
});
// react-i18next / vue bindings re-render on live updates automatically
sh
openlocale init --endpoint https://locale.example.com --project demo
openlocale pull --locale all --format json-nested --out ./locales
openlocale push ./locales/en.json --locale en --dry-run  # fails CI on new duplicates
10
file formats
1
process to run
0 ms
redeploys to ship copy
100%
of your data, on your infra

MIT licensed core. AI features unlock with a license key.