Translate your .po catalogs in minutes, structure intact.
Placeholders, plural forms, msgctxt and inline tags survive the round trip. You see the cost before anything runs. Output comes back shaped like your repo, valid gettext, ready to merge.
locale/de/LC_MESSAGES/messages.pointegrity check passedmsgfmtPlural headers read, not guessed, Arabic 6, Polish 3Scoped, revocable API keys · signed webhooksCost preview before every job · prepaid balanceDrop a folder, or POST a job.
The same engine, the same catalogs, the same audit trail. Pick the surface that matches how you work.
See the cost, watch it run, review the misses.
- 01Drop
.pofiles or a whole locale folder, targets read from each header. - 02Pick quality (Draft, Standard or Pro) and see entries, words and cost before you commit.
- 03Watch it run chunk by chunk, per locale.
- 04Review flagged entries, re-run just those, download a repo-shaped zip.
Localization as a pipeline step.
A scoped key, one POST, a signed webhook when it’s done. Pull the catalogs in CI and open the PR.
POST /v1/jobscurl -X POST https://api.echo-lingua.com/v1/jobs \
-H "Authorization: Bearer $ECHO_LINGUA_KEY" \
-H "Content-Type: application/json" \
-d '{
"sourceLanguage": "en",
"contextMode": "ui-label",
"quality": "standard",
"inputs": [
{ "filename": "de/messages.po", "targetLanguage": "de", "content": "…" },
{ "filename": "ar/messages.po", "targetLanguage": "ar", "content": "…" }
]
}'webhook · job.completed (signed){
"id": "whd_3f9c8a",
"type": "job.completed",
"createdAt": 1726669123456,
"data": {
"jobId": "job_8f2c41",
"status": "COMPLETE",
"downloadUrl": "/v1/jobs/job_8f2c41/download"
}
}Six things a script won’t do for you.
Structure-preserving
Placeholders, plurals, msgctxt and HTML survive the round trip, every entry checked, not hoped for.
%1$s · {{code}} · %(date)s · <b><i>Cost you see first
Entries, words and estimated cost before submit. Prepaid balance, drawn down as jobs run. Group caps block new jobs instead of surprising you.
550 entries · ~7,400 words · ~$0.69 draft (illustrative)Context-aware
UI label, marketing or docs mode, plus a glossary whose terms come through verbatim, and per-entry rationale when you need to ask why.
quality=draft · standard · proReview & recover
Entries that fail the integrity check are flagged in the catalog, never shipped silently. Re-run just the misses.
#, el-reviewDeveloper-native
A real HTTP API: scoped keys you can revoke, signed webhooks, per-key spend attribution, CI-ready downloads.
POST /v1/jobs → job.completedDrops into your repo
Output mirrors your input tree, one file per locale, valid gettext. Unzip over locale/ and read the diff.
locale/ar/LC_MESSAGES/messages.poSixty-plus languages, and the dialects that matter.
Translation is model-driven, so any BCP-47 locale in a PO header is accepted. These are the languages we officially support and have validated, including regional variants most tools flatten into one.
Dialects
pt-BR vs pt-PT, es-ES vs es-419, en-GB/US/AU/CA, fr vs fr-CA, zh-Hans vs zh-Hant, Norwegian Bokmål vs Nynorsk, same source, correctly different output (vocabulary and plural rules).
Right-to-left
Arabic, Hebrew, Persian and Urdu render right-to-left, with the layout correctly mirrored.
Plurals
Plural forms are read from each locale’s header, not guessed, Arabic 6, Polish 3.
Your first month’s standing charge is on us.
After that: a flat monthly standing charge, and you pay per word for what you actually translate. Funds are prepaid and drawn down as jobs run, so the bill can’t outrun the balance.
What you’re actually worried about.
“Will it surprise me with a bill?”
Nothing runs before you see the estimate. The balance is prepaid, per-group caps are hard limits, and jobs pause rather than overspend.
“These are production files.”
Output is valid gettext you review before merge. Keys are scoped and revocable, spend is attributed per key, and every job leaves an audit trail.
“We work in CJK and RTL.”
So does this page. Arabic takes six plural forms, Polish three, read from your header, every index filled, laid out right-to-left where it belongs.
Point it at one catalog and see.
Sign up, drop a .po file, read the cost preview. That’s the whole evaluation, no demo call required.