inlang

The Git-based translation management system

Translations are files in your repo. Your coding agent translates them with your code as context. It runs inlang check, fixes failures and opens a pull request. Translators edit in Fink, a web editor. Open source. Nothing to host.

  • translate
  • check
  • fix
  • open a pull request
TranslatorsFink, web editor
DevelopersSherlock, VS Code
DesignersParrot, Figma
your Git repoproject.inlangopen file format
Your appParaglide JS
CIinlang CLI
Custom tools+ Build your own
  • Open source
  • Nothing to host
  • Agents need no account or API key
  • Kraft Heinz
  • Bose
  • Disney
  • ETH Zurich
  • Brave
  • Michelin
  • idealista
  • Lovable

20.8M npm downloads of @inlang/sdk in 12 months

What is a translation management system?

A translation management system (TMS) stores an app's translations and manages how they are edited and reviewed.

Most TMSs are hosted web apps. inlang keeps translations as files in your repo, where AI agents can read, edit and check them.

Who does the work
Hosted TMS
DDeveloper
TTranslator
RReviewer
People work in the vendor's app. Agents use the vendor's API.
inlang
Claude Code
Codex
RYou review
AI agents do the work. You review it.
Where translations live
Hosted TMS
In a vendor's database
The vendor keeps the main copy and syncs it to your repo.
inlang
In your Git repo
Plain files. Nothing to host.
How mistakes are caught
Hosted TMS
Reviewers proofread
In the vendor app.
inlang
inlang check finds errors
AI agents fix the errors.
How changes are reviewed
Hosted TMS
In a separate vendor app
Separate from code review.
inlang
In a pull request
Your existing Git workflow.

AI agents handle your translations, with guardrails

inlang check finds errors and the agents fix them. CI runs the same check on every pull request. You review and merge.

1 · you ask
› Add German.

You ask your coding agent in plain words.

2 · agent translates
messages/de.json
+ "greeting": "Hallo!"
+ "home": "Startseite"
+ "total": "Summe"

The agent writes the translations into your repo.

3 · inlang check
✕ missing {name}
↓
✓ passes

The check finds a missing {name}. The agent adds {name}.

4 · you review
Add German#142
inlang checkpassed
+412 −3Merge

CI runs inlang check on the pull request. You review and merge.

Translators edit in the browser

Fink is a web editor for translators. They need a free GitHub account, not Git. They edit all languages side by side. Fink pushes the changes to a branch. You review them in a pull request. Only edited messages change.

Fink showing the plural message files_remaining in English and German, with a warning that the German text is missing {count}

Plugins for any translation format

Plugins import and export your translation files. Pick the plugin for your format, or write your own for a format that is missing.

  • i18next
  • next-intl
  • ICU MessageFormat
  • Apple .strings, .xcstrings
  • Android XML
  • JSON
  • + your format

A tool for every localization need

The inlang ecosystem has tools for translators, developers, designers and CI. They all work on the same project.inlang folder in your repo.

Adoption

Weekly npm downloads of @inlang/sdk · 1.4M last week

500k1M
october 2025through Nov 1, 2026

When to use inlang

Use inlang if

  • Your app's text lives in your repo: i18next, next-intl, Paraglide JS, JSON, iOS or Android files.
  • Developers and AI agents do most of the translation work.
  • You want translation changes reviewed in pull requests and checked in CI.

Use Crowdin or Lokalise if

  • You manage agencies or freelancers in one tool.
  • Your translators cannot use a GitHub account.
  • Your text lives in a CMS, not in code.

FAQ

Which AI agents work with inlang?
Any coding agent that can edit files and run a command, like Claude Code, Codex or Cursor. The agent edits the translation files and runs npx @inlang/cli check --format json. No inlang account or API key.
How good are agent translations?
Agents translate with your code and a glossary file in your repo as context. Generic machine translation has no such context. inlang check catches missing and empty translations, missing variables, missing plural forms and unused messages. People review the wording in the pull request.
How do I move from Crowdin or Lokalise?
Export your translation files into your repo in a format a plugin reads, for example i18next JSON. inlang reads them directly. Copy your glossary into a file in your repo so the agent can read it.
Does inlang have translation memory and glossaries?
Your translations are the memory. Agents reuse the translations in your repo and follow a glossary file you keep there. There is no separate database to sync. inlang Cloud may add hosted versions if there is demand.
Do translators need Git or a GitHub account?
No Git. To save changes in Fink, translators need a free GitHub account. Without write access, they push to a fork and open a pull request.
How is inlang different from Crowdin or Lokalise?
Crowdin and Lokalise keep translations in their database and sync them to your repo. inlang keeps them in your repo. Use Crowdin or Lokalise if you manage agencies or freelancers in one tool.
Do I have to change my files or i18n library?
No. Plugins read your existing files. Paraglide JS is inlang's own i18n library for new projects.
Is inlang free?
Yes. inlang, the CLI, Paraglide JS and the plugins are open source. You need no inlang account. You host nothing.

Keep your translations in your repo.

Free and open source. Works with i18next, next-intl, ICU and JSON.

Get started