How do I set up translation providers (DeepL, Google, Azure, Amazon)?
Better i18n gives you several ways to get the actual translation done — built-in AI, a machine-translation engine of your own, human translators, or files handed to an agency.
Option 1: AI translation (built-in) #
The fastest path: translate keys with LLMs from the project, in bulk. Nothing to configure.
Best for: getting to full coverage quickly, internal tools, early-stage products Watch out for: brand tone — review user-facing copy before it ships
Option 2: Bring your own machine-translation engine #
Four engines can be connected per organization:
| Provider | Engine used |
|---|---|
| DeepL | DeepL Professional |
| Google Translate | Translation API v3 |
| Azure Translator | Translator v3 |
| Amazon Translate | Amazon Translate v1 |
To connect one:
- Open the project's Integrations
- Pick the provider
- Paste the credentials
The credentials are validated as you save them, so a wrong key fails there rather than silently failing on your first translation run.
Once connected you can:
- set a default provider, so bulk translation uses it without asking
- disable a provider without deleting your configuration
- check provider health when translations start failing — that tells you whether the problem is your quota or ours
- see usage per provider, which is what you'll want before renewing a plan
Glossaries are pushed to the provider #
Engines like DeepL keep glossaries as their own resources, so your Better i18n glossary is synced to the provider rather than applied on top of whatever came back. That is why there is a sync step, and why a glossary term you added a minute ago should be synced before you kick off a large translation run.
A consequence worth knowing: a term list that lives only in the provider's console will not be visible in Better i18n, and the sync overwrites in one direction. Keep the glossary here and let it flow out.
Option 3: Human translators in the dashboard #
Invite people with the role that matches what they should do:
| Role | For |
|---|---|
translator | Writing translations — cannot approve |
reviewer | Approving what translators wrote |
developer | Keys, integrations, publishing |
admin | Everything, including members and billing |
Invites live at the organization level, not inside a project: Members → Invite member. See How do I invite team members?.
Option 4: Files out to an agency, files back in #
There is no XLIFF export screen. The paths that exist:
Out — pull your translations as files, or read them from the CDN:
better-i18n pullIn — upload the returned files in the dashboard. The importer accepts JSON, YAML, XML/XLIFF and .properties, several languages at once, up to 5 MB per file.
So an agency round-trip works today, and XLIFF is fine as the interchange format — just note that the export side is a CLI pull rather than a button.
Combining approaches #
Most teams end up hybrid:
- AI translates everything first — a cheap, fast baseline
- Humans review what matters — marketing, legal, anything a customer reads closely
- An MT engine covers long-tail languages where a human pass is not worth it
| Scenario | Reasonable approach |
|---|---|
| 1–3 languages | AI + light review |
| 4–10 languages | AI + MT for coverage, humans on the core surfaces |
| 10+ languages | AI primary, MT fallback, agency for your top markets |
Roles are what make this shape safe: the machine sets the baseline, and only someone with approve rights can ship it. See How do I review and approve translations?.
Better I18N