Skip to content
transglot for startups1 to 20 people

Translate your whole product before you hire for it.

Every string in your app, written in every language you sell in, on every push. 100,000 words to start and 10,000 a month after, free, with no card and no rewrite. From Starter the CLI reads the strings file you already have, and the GitHub Action opens the pull request.

Without
With

Translation is filed as a problem for after product market fit, so the app stays English only.

You switch it on this afternoon, on the free plan, with no card.

An agency retainer signed before there is revenue to pay it.

100,000 words to start and 10,000 a month after at $0, then $19 flat, with overage metered at $0.0008 a word.

The i18n refactor you keep promising the backlog.

From Starter the CLI reads what you already have: JSON, YAML and gettext PO, schema untouched.

first run · acme/app
illustrative run summary
Target languages
3
Checks
4 of 4 green
Keys in the diff
426
Plan
Starter, $19 a month
Pull request on every push
how it works

Your strings file goes in. A pull request comes out.

five steps: the file you already have, the CLI on push, the translation pass, the plural check, a pull request. Nobody runs them by hand
solutions · route consolesolutions / startupsStartups

steps · Startups: A strings file → The CLI, on push → Glossa Flux → The plural check → A pull request

what goes inA strings fileJSON, YAML or gettext PO, schema untouched
how it gets thereThe CLI, on pushreads the file you already have; from Starter the GitHub Action does it on every push
which passGlossa Fluxfast, drafts every push, most rows clear on their ownFluxDeepthe fast pass, on every push
the checkThe plural checkthe first signup you cannot read is grammar before it is vocabularyplaceholderspluralsglossarylengththe check that catches it here
what comes outA pull requestdrafts for every target language, the four checks recorded per row
an illustrative first weekStartups
$ transglot push
found messages/en.json · schema untouched
3 target locales · de-DE fr-FR ja-JP
426 keys · 4 of 4 checks · 1 corrective retry
pull request opened · 3 locales drafted
day 6 · a signup in ja-JP
the plan that fits
Free$0a month
  • 100,000 words to start, then 10,000 a month
  • One project, three seats, 14 target languages
  • No card, and it never meters
Start on Free. The CLI and the Action that open the pull request start at Starter, $19 a month.
See all eight pages
every one of them starts on the same free plan
A fixture, in your browser. The five steps, the two passes, the four checks and the plan rows are the shipped mechanism and the shipped price list; the first-week tape is illustrative and nothing on this plate is sent anywhere.

Translating later, versus translating this afternoon.

Transglot
this afternoon
Time to the first language
One push. The four checks run, the drafts land in the pull request.
Cost at seed stage
$0 for the first 100,000 words and 10,000 a month after, then $19 flat with $0.0008 a word past the allowance.
Engineering debt
None. Your format round-trips natively: plurals, placeholders and comments survive.
Quality control
Four deterministic checks on every row: placeholders, plurals, glossary, length. A broken row gets one corrective retry, and an overrun is held for review.
Who runs it
Nobody. The GitHub Action drafts on push from Starter.
The left column is a mechanism you can read in the documentation. The right column is the process it replaces, not a named competitor.
an illustrative first week

What the first week actually looks like.

day 0 · morning

Connect the repository

One command finds the strings file, reads its format and leaves the schema alone. There is no migration step.

no rewrite
day 0 · afternoon

The pull request arrives

Drafts for your target languages, with the four checks recorded per row and any refused row given one corrective retry before it lands.

4 of 4 checks
day 1

Merged, and then forgotten

Every push after this one drafts itself. Forgetting about it is the point of putting it in CI.

0 meetings
day 6

A signup nobody on the team can read

Someone onboards in a language you do not speak. The glossary held your product terms and the plural check held the grammar.

ja-JP
day 7

The line in the weekly update

You are live in more markets than you have people, and the bill is still the flat plan you started on.

$19/mo
Nothing in that week needs a translation hire, a vendor call or a second tool.
An illustrative week. Every step in it is a documented mechanism, not a customer story.
the numbers

What it costs at seed stage.

Three figures, each one a plan number you can check on the pricing page rather than a measured outcome.
100,000

words to start on the free plan, then 10,000 a month, at $0 and with no card. Source: the Free row of the plan configuration.

$19

a month for Starter: 300,000 words a month, three seats, and the API, webhooks and CLI that Free cannot mint a token for. Source: the pricing page.

$80

per 100k words past the allowance, because overage meters at $0.0008 a word. Source: the overage rate in the plan configuration.

FAQs

What a founder asks before spending an afternoon on this.

How do I translate my app into other languages?
Point Transglot at the strings file your app already reads, pick the languages you want, and every key is drafted in each one. Four checks run on every row before it lands: placeholders, plurals, glossary terms and length. From the Starter plan the CLI and the GitHub Action do this on every push and put the result in the same pull request, so nobody has to remember to run it.
Nothing up to 100,000 words to start and 10,000 a month after, which is the free plan. After that Starter is $19 a month for 300,000 words, Team is $49 for 1,000,000 and Business is $149 for 4,000,000. Words past your allowance meter at $0.0008 each, about $80 per 100,000 words. Annual billing is exactly ten times the monthly price, so two months are free.
One project, 100,000 words to start and 10,000 a month after, three seats, and 15 languages including the one you write in, so 14 translation targets. It is a hard cap rather than a meter, so it cannot produce a bill, and it needs no card. The CLI, the GitHub Action, the REST API, webhooks and the MCP server all need a project token, which the free plan cannot mint, so those start at Starter.
Not if your strings already live in a file. Twenty formats are read and written as they are, including JSON, YAML, gettext PO, Android XML, iOS strings and Flutter ARB, and the schema comes back the way it went in. If your strings are still hard coded inside components, pulling them into a file is the one piece of work you do first, and you would have done it for any translation tool.
One run. The drafting, the four checks and the single corrective retry all happen inside it, and what you review at the end is a pull request rather than a spreadsheet. The part that normally takes weeks is finding a vendor and agreeing a price, and there is none of that here.
Most small teams do not at first. The engine writes every language, and the four checks refuse a row rather than shipping a broken one. When you do want a person, the translator role exists on every plan, including Free, and can be scoped to a single language.
It uses more of your allowance: the meter counts your source words once per language you translate them into. What does not change is the price of the plan. Seats, projects and languages are never billed separately, and an unchanged string that already has an exact translation memory hit skips the engine and costs nothing at all.
Nothing arrives on a card, because there is no card. Free is a hard cap, so the run stops rather than metering. On a paid plan the words past the allowance meter at $0.0008 each and appear on the same invoice, at the rate printed on the pricing page before you sign.
Yes. Adding a language translates the keys that have nothing in it yet and leaves everything else alone. There is no re-import, no second project and no migration step.
Any language tag ICU recognises, which is 708 locales in the current table, plus a structural fallback for tags outside it. There is no fixed list to run out of. Plural handling comes from the 224 CLDR plural languages, so a language that declares six plural forms is held to six of them.
If it keeps its strings in a file, yes. Twenty formats round-trip natively, covering flat and nested JSON, Rails-style YAML, Laravel PHP and JSON, Android XML, iOS strings, stringsdict and xcstrings, Flutter ARB, XLIFF, gettext PO, Java properties, .NET RESX, CSV, XLSX and Markdown. Seven of the twenty carry plurals.
No. Your strings go to our AI subprocessors to be translated and for nothing else, under commercial terms, and the trust page names every one of them and where it runs. The shared exact-match translation memory is anonymised and has a per-project opt-out on every plan.
free plan · no card · cancel any day

Translate your product this afternoon.

Free needs no card and never meters. On paid plans overage is $0.0008 a word, printed on the pricing page before you sign.
Works with the tools you already run