Skip to content

Continuous localization, wherever your content lives: it reaches here and goes back.

A REST API, a zero dependency CLI, a GitHub Action that fails the pull request when a row is refused, an MCP server for your own agents, twelve signed webhooks, twenty file formats and forty-one connectors.

push

integrations, none priced
41
integrations, none priced
file formats
20
file formats
MCP tools
16
MCP tools
signed webhooks
12
signed webhooks

Every way it reaches what you already run.

One mark because it is one promise: whatever your content lives in, it reaches here and goes back. There is no private API, the dashboard is a client of the same v1 you get, and every one of the 41 integrations is included rather than sold.
41 integrations
none priced

Wherever the strings already live.

32 sync both ways. 9 are import only, and the card says so.

  • Shopify
  • WordPress
  • Contentful
  • Sanity
  • Storyblok
  • Webflow
  • Figma
  • GitHub
  • GitLab
  • Zapier
  • n8n
  • Make
  • Notion
  • Jira
  • Strapi
mcp server
16 tools

Your agents speak it.

The same verbs, behind the same gates, for whatever agent you already run.

agent which keys fail length in de?
mcp 3 keys
agent re-draft them inside budget
mcp gates 4 of 4 pass
file formats
20

that round trip

JSON, XLIFF, .po, ARB, .strings, YAML, RESX, Markdown, Unity, Unreal, and ten more.

12 events

Signed webhooks.

  • batch.completed
  • translation.reviewed
  • qa.completed
  • source_drift.repaired
the dogfood clause

There is no private API.

The dashboard is a client of the same v1 your token calls.

moving in
free, every plan

Lokalise, Phrase, Crowdin, Transifex, Weblate and POEditor.

Keys, locales and memory come across. Not a retype.

the pipeline

CLI, Action, and a red check.

  • npx transglot push
  • transglot/transglot-action@v1
  • exit 4 on a refusal
  • publish on merge

The same v1 the dashboard uses.

edit the source, pick the locales, send. The path and the rate limit are real. The batch that comes back is a fixture, and it says so
POSTapi.transglot.ai/v1/pushx-ratelimit-remaining: 60 of 60 a minute, per token
request body
{
  "keys": [
    {
      "key": "checkout.cta",
      "source": "Pay {amount} now"
    }
  ],
  "locales": ["de-DE", "fr-FR", "ja-JP", "ar-EG", "pt-BR"]
}
Authorization: Bearer tgl_… · one project, five abilities
response
nothing sent yet_
edit the source on the left, pick locales, and send. The batch streams here
the same request through three other doors, and what comes back
$ npx transglot push
reading transglot.json · 1 key changed
flux: drafting 5 locales
gates: 4 of 4 pass · batch #4181 completed
A simulation, in your browser. POST /v1/push, the abilities and the sixty-a-minute limit are the shipped API; the batch id, the drafts and the timings are a fixture, and nothing here is sent anywhere.
one route per action

Push, translate, gate and pull, each one a REST endpoint.

Every row in the picture below has a route behind it: push, gates, glossary, batches and pull, all reachable from your own code with a project token. The API playground in the console runs the read-only ones live against your project, so you see a real response first.

app.transglot.ai
acme/app · mainpush
gatesplaceholders · plurals · glossary · length
glossary"boring" locked
batch 4181running
pullde-DE · json
  1. You upload a source file
    POST/v1/push
  2. The gates panel fills in
    POST/v1/qa/run
  3. You lock a term
    POST/v1/glossary
  4. The batch view polls itself
    GET/v1/batches/:id
  5. You take the translations back
    GET/v1/pull
one route per panel, 60 a minute, abilities per token · getting your translations out is an endpoint too

One command from any repository.

The CLI reads your format from config, pushes only what changed, and streams the run back locale by locale. The GitHub Action runs the same code on every push and writes the drafted locales into the same pull request, behind a status check that fails when a row is refused.

  • diff aware, so unchanged strings cost nothing
  • the same four gates as the console
  • exit code non zero on a refusal
  • available from the Starter plan
An illustration of a run, not a recording of one.
illustrative run
set up in two commands

Start in the terminal, finish in the pull request.

Initialise a project, push your source file and watch the first run. Put the same commands in CI and the GitHub Action opens the pull request and holds the check. The CLI is published on npm and needs no other dependency.

acme / checkouta sample run
$ npx transglot init
wrote transglot.json, 3 locales mapped
$ npx transglot push
diff: 6 strings changed
drafted 18 rows, Glossa Flux
gates: placeholders, plurals, glossary, length
de-DE length 67 > 48 budget
repaired once, re-gated 41 pass
batch complete, 18 rows gated

What you can automate, and what it costs you.

Counted from the shipped enums and route table, not from the docs.
  • 20

    File formats, both directions

    JSON flat and nested, Android XML, iOS .strings, .stringsdict and .xcstrings, Flutter ARB, Laravel PHP and JSON, XLIFF 1.2 and 2.0, gettext .po, YAML, CSV, XLSX, Java properties, RESX, Markdown, Unity CSV and Unreal PO. Seven carry plurals.

    push
    pull
  • 12

    Webhook events

    batch.completed, batch.failed, key.created, key.updated, key.deleted, translation.updated, translation.reviewed, language.added, language.removed, glossary.updated, qa.completed and source_drift.repaired. Every delivery is HMAC signed with a timestamp.

    signed
    Starter and above
  • 16

    MCP tools

    Project and language reads, translation reads and writes, translate_missing, batch status, listing, retry and cancel, run_qa, four glossary tools, and pull_file and push_file. The same verbs and the same gates as everything else.

    agents
    Starter and above
  • 5

    Token abilities

    push, pull, manage, read and write, with a three ability deploy subset for CI. Least privilege is the default rather than a setting.

    project tokens
  • 6

    Migration importers

    Lokalise, Phrase, Crowdin, Transifex, Weblate and POEditor. Keys, locales and translation memory come across so the move is not a retype.

    one way in
  • 4

    Organization roles

    Owner, admin, developer and translator, scoped per project. On every plan, Free included.

    access control
Tokens, and therefore the CLI, the Action, the API, webhooks and MCP, need a paid plan. The Free plan is the console and the connectors it allows.
copy these into your CI

Three pipelines worth stealing.

Block the merge

Run the Action on every pull request. A refused row fails the check, so the broken string never reaches the branch.

Publish on merge

Push the reviewed bundle to the CDN when main moves, so the running app picks up locales without a redeploy.

Let an agent fix the tail

Point your MCP client at the project and ask it which keys fail length in a locale. It re-drafts, and the gates still decide.

FAQs

Read the docs for the rest. These are the ones that decide whether you start.

Is there a localization API I can call from my own code?
Yes: a REST API v1, a CLI, a GitHub Action, an MCP server with sixteen tools, and twelve signed webhook events. All of them need a project token, which is available from the Starter plan.
That is the intended shape. The GitHub Action drafts every mapped locale on the push, writes them into the same pull request, and fails a required status check when a row is refused. A missing translation stops the merge rather than the launch.
No. The console calls the same v1 endpoints your token calls. When an endpoint changes, it changes for both of us and it lands in the API changelog.
Node and a project token. It is published on npm, has no other dependency, and reads its configuration from a single file in your repository.
Each delivery carries a timestamp header and an HMAC signature over the timestamp and the body. Verify both. We publish the timestamp so you can enforce your own replay window; we do not enforce one for you.
The Free plan cannot mint a token, so the CLI, the Action, the API, webhooks and MCP all start at Starter, which is $19 a month for 300,000 words.
Yes, through the pull endpoint, the CLI, the CDN bundle or file storage sync to S3, Dropbox or Drive. None of it runs through a button in the browser, so wire one of the four into your pipeline before you need it.
works with what you already run

41 connectors, already built.

your turn

Add one step to the pipeline you have.

Initialise, push and watch the first run gate itself. Nothing else in your build changes.

Tokens, CLI, Action, API, webhooks and MCP from the Starter plan at $19 a month.