4.1k stars · Apache-2.0 core + Tolgee Enterprise Licence over parts · v3.221.0 (2026-09-07) · Track this in Scout
Self-hosted localisation platform with in-context editing — the way the Russian version of Grasppy stops being a forked codebase.
▶Repo detailsthe review · specs · pros & cons
What it is
A self-hosted localisation platform — the open-source answer to Crowdin, Lokalise and Phrase. Every user-facing string lives in one server, SDKs for React and a dozen other frameworks pull them at build or run time, and its distinguishing trick is in-context editing: you alt-click a piece of text in your running app and correct the translation right there.
What it is good for. A bilingual maker can write the copy, record the tutorial and answer the support email in two languages. What is usually missing is a way to keep two versions of an interface in step. Maintaining two JSON files by hand is precisely the job that gets abandoned in week three, and a half-translated interface is worse than a monolingual one. Tolgee turns the second language from a code problem into a data problem: adding Russian to a new screen becomes a translation someone types, not a release someone ships. And the in-context editing matters more on a one-person project than in a team, because the translator is the person looking at the screen — being able to fix an awkward Russian phrase while looking at the actual button is the difference between doing it and meaning to.
- In-context editing: alt-click a string in the running app and correct it in place
- React SDK plus a CLI, so Claude Code can wire it into both the app and the Astro site
- Machine-translation providers plug in, so the first pass is automatic and you only edit
- Not one licence: an Apache-2.0 core with a separate Tolgee Enterprise Licence over parts of it. Check which features you actually get before depending on one
- Kotlin/JVM server plus its own database — another container, and JVM containers are not the light ones
- Only pays off if you keep using it. Abandoned halfway, it is worse than the two JSON files
