lingodotdev/lingo.dev

Open-source localization engineering tools. Connects to Lingo.dev localization engineering platform for consistent, quality translations.

TypeScript

5,401

1,940 commits

updated Oct 7, 2026

See the code

README

Lingo.dev – localization engineering platform

Lingo.dev is the localization engineering platform: the best way to measure translation quality, translate with LLMs, and proofread with native speakers.

Docs • Platform • Discord

Product Hunt #1 DevTool of the Month License Last commit


Teams build localization engines on Lingo.dev

A localization engine is a stateful translation API your team configures and Lingo.dev runs. Build one per product, per content type, or per brand. Every request through an engine applies everything you configured in it, in a fixed order of precedence:

LayerWhat you configureFrom the docs
LLM modelsWhich model handles each language pair, with ranked fallbacks400+ models; the response names the model that ran
Brand voiceHow your product speaks in each language, one text per localeTone and formality per market
RulesThe linguistic conventions a generic model missesAdjective position in Spanish, a space before percentage signs
GlossaryExact term mappings per locale, matched by meaning"911" becomes "112" for European markets; product names pass through
AI reviewersScoring that runs after every translationGEMBA scores, BERTScore, glossary compliance

Glossaries, rulesets, and brand voices belong to your organization, and an engine applies them by attachment. One glossary governs five engines, and one edit reaches all five. Test a change in the Playground before it goes live: compare an engine against a raw model, or two engines side by side. The engines are configured on the platform, where the localization team runs the localization infrastructure.

Reach your engines from code

Translate the content in a repository. lingo push sends the files to the engine named in .lingo/config.json, and lingo pull writes the translations back from any machine:

npm install -g @lingo.dev/cli
lingo init && lingo link
lingo push

Or call an engine directly, naming it by ID:

const res = await fetch("https://api.lingo.dev/process/localize", {
  method: "POST",
  headers: { "X-API-Key": process.env.LINGO_API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({
    engineId: "eng_abc123",
    sourceLocale: "en",
    targetLocale: "de",
    data: { greeting: "Hello, world!", cta: "Get started" },
  }),
});

const { data, model, usage } = await res.json();
// data:  { greeting: "Hallo, Welt!", cta: "Jetzt starten" }
// model: "anthropic/claude-sonnet-4.5"
// usage: { inputTokens: 2789, outputTokens: 861, cost: 0.023012 }
Lingo.dev MCPYour coding agent creates an engine, adds glossary terms, tunes rules, and compares two engines, from the conversation where the problem surfaced
Lingo.dev CLIPush source files, pull translations, from a terminal or from CI. Eighteen formats: JSON, YAML, Markdown, MDX, PO, XLIFF, Flutter ARB, Android and Xcode strings, SubRip, PHP
Lingo.dev in CI/CDInstall the CLI and run lingo push as a step in GitHub Actions, GitLab CI/CD, Bitbucket Pipelines, or any runner with Node.js 22+
Lingo.dev GitHub AppInstall once and every push to the default branch opens or updates a translation pull request, or translations land as a commit in the pull request that changed the source. No runner, no API key secret, no lockfile to manage
Lingo.dev APIOne synchronous call per language pair, or an async job that fans one request out to many locales and delivers results as they land

Build your first localization engine →

i18n
javascript
react
react-native
typescript

lingodotdev/lingo.dev

Open-source localization engineering tools. Connects to Lingo.dev localization engineering platform for consistent, quality translations.

TypeScript

5,401

1,940 commits

updated Oct 7, 2026

See the code

README

Lingo.dev – localization engineering platform

Lingo.dev is the localization engineering platform: the best way to measure translation quality, translate with LLMs, and proofread with native speakers.

Docs • Platform • Discord

Product Hunt #1 DevTool of the Month License Last commit


Teams build localization engines on Lingo.dev

A localization engine is a stateful translation API your team configures and Lingo.dev runs. Build one per product, per content type, or per brand. Every request through an engine applies everything you configured in it, in a fixed order of precedence:

LayerWhat you configureFrom the docs
LLM modelsWhich model handles each language pair, with ranked fallbacks400+ models; the response names the model that ran
Brand voiceHow your product speaks in each language, one text per localeTone and formality per market
RulesThe linguistic conventions a generic model missesAdjective position in Spanish, a space before percentage signs
GlossaryExact term mappings per locale, matched by meaning"911" becomes "112" for European markets; product names pass through
AI reviewersScoring that runs after every translationGEMBA scores, BERTScore, glossary compliance

Glossaries, rulesets, and brand voices belong to your organization, and an engine applies them by attachment. One glossary governs five engines, and one edit reaches all five. Test a change in the Playground before it goes live: compare an engine against a raw model, or two engines side by side. The engines are configured on the platform, where the localization team runs the localization infrastructure.

Reach your engines from code

Translate the content in a repository. lingo push sends the files to the engine named in .lingo/config.json, and lingo pull writes the translations back from any machine:

npm install -g @lingo.dev/cli
lingo init && lingo link
lingo push

Or call an engine directly, naming it by ID:

const res = await fetch("https://api.lingo.dev/process/localize", {
  method: "POST",
  headers: { "X-API-Key": process.env.LINGO_API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({
    engineId: "eng_abc123",
    sourceLocale: "en",
    targetLocale: "de",
    data: { greeting: "Hello, world!", cta: "Get started" },
  }),
});

const { data, model, usage } = await res.json();
// data:  { greeting: "Hallo, Welt!", cta: "Jetzt starten" }
// model: "anthropic/claude-sonnet-4.5"
// usage: { inputTokens: 2789, outputTokens: 861, cost: 0.023012 }
Lingo.dev MCPYour coding agent creates an engine, adds glossary terms, tunes rules, and compares two engines, from the conversation where the problem surfaced
Lingo.dev CLIPush source files, pull translations, from a terminal or from CI. Eighteen formats: JSON, YAML, Markdown, MDX, PO, XLIFF, Flutter ARB, Android and Xcode strings, SubRip, PHP
Lingo.dev in CI/CDInstall the CLI and run lingo push as a step in GitHub Actions, GitLab CI/CD, Bitbucket Pipelines, or any runner with Node.js 22+
Lingo.dev GitHub AppInstall once and every push to the default branch opens or updates a translation pull request, or translations land as a commit in the pull request that changed the source. No runner, no API key secret, no lockfile to manage
Lingo.dev APIOne synchronous call per language pair, or an async job that fans one request out to many locales and delivers results as they land

Build your first localization engine →

i18n
javascript
react
react-native
typescript

Project health

Latest release

0.138.10 · Oct 7, 2026

Releases this year

131

Significant stargazers

(top 24 of 53)

kazuya kawaguchi

4,362 followers · starred Apr 2025

Grey Baker

449 followers · starred Apr 2025

Rudrank Riyam

1,071 followers · starred Feb 2025

Pedro Piñera Buendía

1,011 followers · starred May 2025