Localization infrastructure

Ship every language from one source.

Manage translations, review content, and publish locale updates with confidence.

Nested JSONAPI-readySource fallback
Acme dashboard
AM

Common namespace

Translations

Edit source copy and every target locale in one place.

Common New key

Translation keys

435

Locales

3

Namespace

common

Development CDNLive
Revision 42 · 3/3 artifacts ready
Translation editor435 loaded
Search translations
Key
English · Source
Français
العربية
home.hero.title
Ship in every language
Livrez dans chaque langue
انطلق بكل لغة
home.hero.subtitle
Localize content, ship faster
Localisez le contenu
ترجم المحتوى بسرعة
nav.dashboard
Dashboard
Tableau de bord
لوحة التحكم
checkout.pay
Pay securely
Payer en toute sécurité
ادفع بأمان
All changes saved435 keys · 98% translated

One editing surface

Source and target locales stay aligned.

Deterministic artifacts

Nested JSON remains stable and reviewable.

Safe promotion

Saves update development; production moves only when promoted.

One deliberate workflow

From raw strings to a version your application can trust.

Keyglot keeps editing, publication, and delivery separate so each step stays understandable—and reversible where it should be.

01

Shape the source

Create exact nested keys, import existing JSON, add target locales, and edit every language in one focused grid.

02

Publish a revision

Capture a consistent project revision and compile immutable locale artifacts with deliberate source fallback.

03

Ship resiliently

Load through the framework-neutral web client, revalidate with ETags, and retain the last successful content when delivery is unavailable.

Built for the risky parts

The product protects the work behind every translation.

The dashboard is only useful when edits remain consistent, releases remain reproducible, and delivery can fail gracefully.

Revision-safe editing

Batch saves are atomic. Stale values reject the entire change instead of silently overwriting another editor.

Immutable publishing

Every release points to captured content. Rollback moves a pointer without rewriting working translations.

Failure-tolerant delivery

Cached translations and bundled fallbacks keep applications useful when a network request cannot complete.

Development and production

Save to development. Promote those exact bytes.

Development follows saved translation work automatically. Production keeps an independent active version until you deliberately promote a tested snapshot.

developmentTest safely

Save and see it in development

Every saved revision is captured and built automatically. The development URL moves only after every locale and namespace succeeds.

    Use it in local, preview, or staging buildsNo separate development publish stepRoll development back independently
PromoteCopy the tested artifacts byte for byte
productionServe deliberately

Activate the tested release

Promotion never recompiles newer edits. Production receives the exact completed development artifacts you selected and keeps its own active pointer.

    Draft and development changes stay isolatedImmutable version URLs never change contentRoll production back without touching development

Browser and server delivery

Choose where the translation request is trusted.

The same published artifacts support two project-wide access modes. Public mode serves websites directly; protected mode keeps every delivery credential on a trusted server.

Public mode

Browser client

Use the framework-neutral client in plain JavaScript, TypeScript, or any web framework. Its kg_pub_… key identifies and isolates the project but is intentionally visible to visitors.

    Cross-origin, publicly cacheable deliveryIndexedDB, ETag revalidation, and bundled fallbackRevocable project and environment-scoped key
browser.ts
import { createKeyglotClient } from '@keyglot/core'

const keyglot = createKeyglotClient({
  organization: 'acme-4f3a8c2d',
  project: 'acme-dashboard',
  environment: 'production',
  locale: 'fr',
  namespaces: ['common', 'auth'],
  publishableKey: 'kg_pub_…',
})
Protected mode

Server delivery

Use the server-only entrypoint when translations must not be fetched directly by browsers. Its kg_del_… token stays in a secret manager or server environment variable.

    No public CORS accessPrivate, no-store responsesRevocable project and environment-scoped secret
server.ts
import { createKeyglotServerClient } from '@keyglot/core/server'

const keyglot = createKeyglotServerClient({
  organization: 'acme-4f3a8c2d',
  project: 'acme-dashboard',
  environment: 'production',
  locale: 'fr',
  namespaces: ['common', 'auth'],
  deliveryToken: process.env.KEYGLOT_DELIVERY_TOKEN!,
})
One access mode per project. Keep public mode for direct website delivery. Enable protected mode only after every consumer has moved behind a trusted server with a delivery token.

See the loop for yourself

Your next locale should feel like a release, not a rewrite.

Create a project, save translations directly to development, test them, promote the exact version to production, and load it from your web application.