DeepL¶
DeepL is a dedicated translation service known for high-quality translations, especially for European languages. TranslateBot supports DeepL as an alternative to LLM-based translation.
Why DeepL?¶
- Free tier: 500,000 characters/month at no cost
- Fast: Direct translation API, no prompt engineering overhead
- Quality: Consistently high quality for supported language pairs
- Simple: No model selection needed, just an API key
Setup¶
1. Install the DeepL extra¶
2. Get an API key¶
Sign up for a DeepL API account at deepl.com/pro-api. The free tier includes 500,000 characters per month.
3. Configure Django settings¶
import os
TRANSLATEBOT_PROVIDER = "deepl"
TRANSLATEBOT_API_KEY = os.getenv("DEEPL_API_KEY")
That's it! Run the translate command as usual:
Supported Languages¶
DeepL supports 30+ target languages. TranslateBot automatically converts Django language codes to DeepL's format:
| Django code | DeepL code | Language |
|---|---|---|
de |
DE |
German |
fr |
FR |
French |
nl |
NL |
Dutch |
es |
ES |
Spanish |
pt-br |
PT-BR |
Portuguese (Brazil) |
en |
EN-US |
English (US) |
zh-hans |
ZH-HANS |
Chinese (Simplified) |
ja |
JA |
Japanese |
For the full list of supported languages, see the DeepL API documentation.
Regional defaults
When you use en or pt without a region suffix, TranslateBot defaults to EN-US and PT-BR respectively, as DeepL requires a regional variant for these languages.
Limitations¶
No TRANSLATING.md support¶
DeepL's API does not accept custom instructions like LLM providers do. If your project has a TRANSLATING.md file, TranslateBot will show a warning and ignore it when using DeepL:
For custom terminology with DeepL, consider using DeepL glossaries directly.
Lightweight installation¶
If you only use DeepL, you can uninstall litellm to significantly reduce your dependency footprint:
TranslateBot will continue to work normally with DeepL. If you later try to use an LLM provider, you'll get a clear error message with install instructions.
Placeholder protection¶
TranslateBot automatically protects format placeholders (%(name)s, {placeholder}, %s, etc.) from being mangled by DeepL during translation. Placeholders are wrapped in XML ignore tags before sending to DeepL and restored in the result.
API limits¶
DeepL enforces per-request limits. TranslateBot handles batching automatically:
- Max 50 texts per API request
- Max 128 KB total request size
Free tier character limit¶
The free tier allows 500,000 characters per month. TranslateBot's incremental translation (only translating new/changed strings) helps you stay within this limit.
DeepL vs LLM Providers¶
| DeepL | LLM (GPT, Claude, etc.) | |
|---|---|---|
| Cost | Free tier available | Pay per token |
| Speed | Fast | Varies by model |
| Custom context | Not supported | TRANSLATING.md support |
| Terminology control | Via DeepL glossaries | Via TRANSLATING.md |
| Language coverage | 30+ languages | Any language |
| Model selection | None needed | Many options |
When to use DeepL
DeepL is a great choice when you want fast, high-quality translations without configuring an LLM provider, especially if your target languages are well-supported by DeepL and you don't need custom context via TRANSLATING.md.
When to use an LLM
LLM providers are better when you need custom terminology or tone guidelines via TRANSLATING.md, or when translating to languages not supported by DeepL.