Skip to content

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

uv add --dev translatebot-django[deepl]
poetry add --group dev translatebot-django[deepl]
pip install translatebot-django[deepl]

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

settings.py
import os

TRANSLATEBOT_PROVIDER = "deepl"
TRANSLATEBOT_API_KEY = os.getenv("DEEPL_API_KEY")

That's it! Run the translate command as usual:

python manage.py translate --target-lang de

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:

📋 Found TRANSLATING.md but DeepL does not support custom context - ignoring

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:

uv remove litellm

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.