Localization & i18n

Tolgee

Open-source localization platform with in-context translation, built for developers

tolgee/tolgee-platformTypeScript4,053 as of 2026-07-28
By Jake Luo · Published 2026年7月28日

Tolgee is an open-source localization platform — the repository presents it as an alternative to Crowdin, Phrase or Lokalise — that keeps your translation keys in one place and lets you edit a string by holding ALT and clicking it inside your own running app. It ships SDKs for the main JavaScript frameworks, a CLI, translation memory, machine translation through DeepL, Google Translate and AWS Translate, and an MCP server so an AI coding assistant can manage keys without leaving the editor. It has 4,053 stars as of July 2026, with the core under Apache 2.0 and a separately licensed enterprise directory. For a founder it removes the engineering cost of shipping another language, which is a different thing from earning traffic in one.

What Tolgee is

Tolgee (github.com/tolgee/tolgee-platform) calls itself an open-source localization platform developers enjoy working with, and an open-source alternative to Crowdin, Phrase or Lokalise. What separates it from a shared spreadsheet with an API is in-context editing: with the SDK installed, holding ALT or Option and clicking an element in your own running app opens a dialog to edit that string, without opening a JSON or PO file at all. The README says this works in production too, through a browser extension where you paste an API key, so someone who cannot open a pull request can still fix a sentence. One more click captures a screenshot of the app with the phrase highlighted, which is the context a translator otherwise has to guess at.

The rest is what a translation-management system is expected to own, and the repository is specific about which parts exist: translation memory that suggests previously used translations with a similarity percentage, machine translation through DeepL, Google Translate and AWS Translate, auto-translation of new keys the moment they are created, and per-translation comments, history and an activity log recording who changed or reviewed what. There is also an MCP server, so an AI coding assistant can search keys, create and update translations, manage languages and trigger machine translation from inside the editor. It runs from Docker as a self-hosted instance, or as a hosted account.

What it changes about shipping a second language

Adding a language looks like one task and is really four, which is why teams underestimate it. A platform like this collapses the first two almost completely, helps with the third, and cannot touch the fourth:

  • Getting strings out of the code — the mechanical part. SDKs and a CLI replace hand-maintained files, and the keys become the interface between the code and everyone editing the words.
  • Getting a first translation — machine translation has made this close to free and, for interface strings, close to good enough. This is the step people imagine is the whole job.
  • Keeping translations in step with the source — the part that actually decays. Someone edits an English sentence, and every other language quietly becomes wrong without anything failing. Keyed storage with per-string state is the structural fix: a changed source marks its translations outdated rather than letting them drift.
  • Knowing whether a sentence reads well — the part no tool does. It needs a person who speaks the language and knows the product, and a review workflow only tells you whether someone has looked, not whether they were right.

Where localization fits a founder's growth stack

The honest boundary first: translating a page multiplies what that page already earns and creates nothing by itself. If the English version gets no traffic, six translations of it get no traffic in six languages and add a maintenance burden on top. Whether to translate at all is worked through in should I translate my website for SEO, and the annotation that tells a search engine which version to serve is hreflang — a targeting signal, never a ranking one.

First-party note from building AgentCeres — the AI Growth Officer at agentceres.com: we publish in eight languages, and the failure we did not expect was drift in the direction nobody plans for. A claim on our marketing pages stopped being true after a product change. The correction reached the translated versions first, and for a stretch several translations were more accurate than the English they had been made from — which means anyone regenerating those pages from the source would have silently reverted the fix. Two lessons came out of it. Translations are not a downstream copy that can always be rebuilt from the original, and an automated parity check that proves every language has every key says nothing whatsoever about whether a single sentence is true or reads well.

What a platform decides is the cost of adding a language. What it does not decide is which languages are worth having, and that answer comes from where your signups, support requests and search demand already cluster, not from how cheap the tooling made it. Localization belongs in the same category as better-auth: infrastructure that has to be right, that no customer will ever praise, and that creates no demand on its own. Pick the language your evidence points at, translate the pages that already earn something, and treat the rest as maintenance you have chosen to take on.

FAQ

Is Tolgee free?
The repository's LICENSE file states that the monorepo uses more than one licence: everything under the ee directory and its webapp counterpart falls under a separate enterprise licence, and the rest defaults to Apache 2.0. Self-hosting costs the infrastructure you run it on. The maintainers also operate a hosted service with its own paid plans. Check the LICENSE and pricing for the version you install, since both change independently of any write-up.
Why not just keep JSON translation files in the repository?
For one developer shipping two languages, JSON files plus a machine-translation pass is genuinely fine, and a platform is overhead you do not need yet. It starts paying when more than one person edits translations, when the people best placed to fix a sentence cannot open a pull request, or when there are enough keys that answering "which of these is now stale" stops being something you can do by reading a diff. The in-context editing is the part that is hard to replicate with files, because it puts the string in front of the person editing it.
Does it work with React and other JavaScript frameworks?
The repository lists React, Vue, Svelte and Angular among its topics and documents a JavaScript SDK, a CLI and an integrations section covering the setup guides. Because the in-context editing works through the SDK rather than a build step, the integration is a runtime one. Check the project's own integration docs for your framework and version rather than assuming parity across all of them.
Related projects
PayloadOpen-source, Next.js-native headless CMS and app framework that installs into your existing app folderGhostOpen-source publishing platform — a site, a newsletter, memberships and paid subscriptions in one installBetter AuthFramework-agnostic authentication and authorization for TypeScript, run in your own app against your own databaseOpenSEOOpen-source alternative to Semrush and Ahrefs — keyword research, backlinks, and site audits on a pay-as-you-go model

You built it. Now grow it.

AgentCeres is a managed AI marketing team — specialists draft the SEO, social, and outreach that fill your links, you approve what ships. 14-day free trial, from $19/month.

Start free trialMore projects