Localization with the safety rails built in.

Extract strings from code or a crawled site, let an agent do the first pass behind a mechanical placeholder gate, review what matters, and ship immutable releases — via committed catalogs or a single script tag. Every feature below is included on every tier, including Free.

Agent translation with a safety gate

An agent produces the first pass for every locale, and a mechanical check runs on every write — human or machine.

  • A translation that drops or renames an ICU placeholder is rejected before it reaches the database
  • Word cost is estimated up front when you queue a job
  • Glossary terms are passed to the agent with every run
  • Rejected translations are automatically re-queued on the next pass

A workbench built for review

Three panes: your keys, the editor, and the context a reviewer actually needs.

  • Placeholder chips show exactly which ICU arguments the translation must keep
  • Translation-memory suggestions insert with one click
  • Glossary hits flag do-not-translate and forced terms inline
  • Filter by namespace, locale, status, or full-text search

Review queue + gated namespaces

Everything the agent produced lands in a queue, oldest first, with approve and reject-with-reason.

  • Mark namespaces like legal or pricing as gated
  • Gated namespaces publish reviewer-approved translations only — machine output never auto-ships
  • Approvals feed the translation memory automatically
  • Statuses: machine → needs review → approved (or rejected, with a reason)

Immutable, diffable releases

Publishing freezes a content-hashed catalog per locale. What shipped is never a mystery.

  • Publishing identical content is a no-op — no duplicate releases
  • Key-level diff between any two releases: added, removed, changed
  • Serving and pull always read from releases, never drafts
  • Fallback chains are resolved per locale (pt-BR → pt → source)

Glossary + cross-project translation memory

Consistency machinery that compounds: every approval makes the next project cheaper.

  • Do-not-translate terms (brand names) and forced translations per locale
  • Glossary scopes: account-wide or per project
  • TM matches suggest exact hits first, then fuzzy candidates
  • TM is shared across all your projects — approved beats machine

Pseudo-locale + CI gate

Catch i18n bugs before you pay for a single translation, and block regressions in CI.

  • en-XA pseudo-locale: accented, padded, bracketed — ICU placeholders intact
  • locavello pseudo runs locally, offline, for free
  • locavello check fails CI on missing keys and placeholder mismatches
  • Warnings for length overflows, glossary violations, and unreviewed strings — strict mode fails on those too

SDK mode: zero runtime dependency

Catalogs are committed to your repo. Your app never calls Locavello in production.

  • locavello extract scans your source for t() calls and pushes keys
  • locavello pull writes catalogs + a generated locavello.d.ts — typed, autocompleted keys
  • @forjio/locavello-next: useT(), getT(), Provider — ICU MessageFormat with fallback chains
  • t() never throws and never renders blank — worst case is your source language

Website mode: one script tag

No code changes. Paste a URL, review the translations, and ship with a single tag.

  • Instant preview from the homepage — no account needed
  • Crawler extracts visible text per page, with per-page status
  • The snippet serves published releases and adds a locale switcher
  • Fails open: if anything breaks, visitors see your original site — never a blank page

Start free — no card, and reviewers never cost a seat.

One project, two locales, 200 keys, and a 1,000-word agent trial. During early access, every paid feature is free.