Supported AI Models¶
TranslateBot Django supports 100+ AI models through LiteLLM. This page covers the most popular options. Prices are per million tokens as of September 2026; check each provider's pricing page for current numbers.
For a deeper comparison with benchmark results, see Claude vs GPT-6 vs Gemini vs DeepL for Django Translation.
OpenAI¶
gpt-6-luna is TranslateBot's default when TRANSLATEBOT_MODEL isn't set. It's a reasoning model, and TranslateBot asks it to reason at low effort to keep output tokens down. That needs litellm 1.100.3 or newer. On Python 3.10, where litellm is capped below 1.98, litellm doesn't recognise gpt-6-luna as a reasoning model, so set TRANSLATEBOT_MODEL to another model such as gpt-4o-mini.
import os
TRANSLATEBOT_API_KEY = os.getenv("OPENAI_API_KEY")
TRANSLATEBOT_MODEL = "gpt-6-luna"
Available Models¶
| Model | Input / output per 1M tokens | Use it for |
|---|---|---|
gpt-6-luna |
$0.10 / $0.50 | The default; lowest cost |
gpt-6-sol |
$2.00 / $10.00 | High-quality production translations |
gpt-6-astra |
$10.00 / $50.00 | Rarely needed for translation |
gpt-4o-mini |
$0.15 / $0.60 | The previous default; still supported |
Recommendation
Start with gpt-6-luna for low cost, or gpt-6-sol when quality matters more than price.
Anthropic Claude¶
Claude models produce natural-sounding translations and follow TRANSLATING.md instructions closely.
import os
TRANSLATEBOT_API_KEY = os.getenv("ANTHROPIC_API_KEY")
TRANSLATEBOT_MODEL = "claude-sonnet-5"
Available Models¶
| Model | Input / output per 1M tokens | Use it for |
|---|---|---|
claude-haiku-4-5 |
$1.00 / $5.00 | Fast, low-cost runs |
claude-sonnet-5 |
$2.00 / $10.00 | Best quality-to-cost ratio |
claude-opus-5-5 |
$4.00 / $20.00 | Highest quality, such as marketing copy |
Recommendation
claude-sonnet-5 offers the best quality-to-cost ratio for most translation tasks.
Google Gemini¶
Gemini won the WMT25 translation benchmark, and Google offers a free tier with rate limits.
import os
TRANSLATEBOT_API_KEY = os.getenv("GEMINI_API_KEY")
TRANSLATEBOT_MODEL = "gemini/gemini-3.5-flash-lite"
Available Models¶
| Model | Input / output per 1M tokens | Use it for |
|---|---|---|
gemini/gemini-3.5-flash-lite |
$0.30 / $2.50 | Low cost; Google lists translation as a target use |
gemini/gemini-3.8-flash |
$0.75 / $3.75 | Higher quality; price doubles on January 1, 2027 |
gemini/gemini-3.1-pro-preview |
$2.00 / $12.00 | Preview only |
Gemini 2.5
Gemini 2.5 models are only available to projects that already used them. New projects should use the models above.
Azure OpenAI¶
Use Azure-hosted OpenAI models for enterprise deployments.
import os
TRANSLATEBOT_API_KEY = os.getenv("AZURE_API_KEY")
TRANSLATEBOT_MODEL = "azure/<your-deployment-name>"
# Additional Azure configuration
os.environ["AZURE_API_BASE"] = "https://your-resource.openai.azure.com/"
os.environ["AZURE_API_VERSION"] = "2024-02-15-preview"
Other Providers¶
LiteLLM supports many additional providers:
- AWS Bedrock:
bedrock/anthropic.claude-sonnet-5 - Cohere:
command-r-plus - Mistral:
mistral/mistral-large-latest - Ollama (local):
ollama/llama3
See the LiteLLM Providers Documentation for the complete list.
Providers without an API key
TRANSLATEBOT_API_KEY is always required, even for a dry run. For providers that don't use one, such as a local Ollama server, set it to any placeholder value (e.g. TRANSLATEBOT_API_KEY = "unused").
Unrecognized model names
TranslateBot asks LiteLLM for the model's token limits to size its batches. If LiteLLM doesn't know the model, a warning is logged and small fallback batches are used. Translations still work, but take more API calls.
Choosing a Model¶
By Use Case¶
| Use Case | Recommended Model |
|---|---|
| General translation | gpt-6-luna or gemini/gemini-3.5-flash-lite |
| High-quality production | claude-sonnet-5 or gpt-6-sol |
| Marketing copy, launches | claude-opus-5-5 |
| No budget | gemini/gemini-3.5-flash-lite on Gemini's free tier |
| European languages | Any model works well |
By Priority¶
| Priority | Recommended Model |
|---|---|
| Quality | claude-opus-5-5 or claude-sonnet-5 |
| Speed | gpt-6-luna or claude-haiku-4-5 |
| Cost | gpt-6-luna |
| Balance | claude-sonnet-5 |
Cost Estimates¶
A medium Django app with ~500 translatable strings (~10,000 words) takes roughly 15,000 input and 20,000 output tokens per language. Estimated cost per language:
| Model | Cost per language |
|---|---|
gpt-6-luna |
~$0.01 |
gpt-4o-mini |
~$0.01 |
gemini/gemini-3.5-flash-lite |
~$0.05 |
claude-haiku-4-5 |
~$0.12 |
claude-sonnet-5 / gpt-6-sol |
~$0.23 |
claude-opus-5-5 |
~$0.46 |
Reasoning models
Models that reason before answering, such as claude-opus-5-5, bill that reasoning as output tokens, so they can cost more than these estimates. After the first run, TranslateBot only translates new or changed strings.
Testing Different Models¶
Use --llm-model to try a different model for a single run without changing your settings. Since --dry-run doesn't call the model, compare real output on a throwaway branch instead:
git switch -c try-gpt-6-sol
python manage.py translate --target-lang nl --overwrite --llm-model gpt-6-sol
git diff -- '*.po'
--overwrite re-translates every entry so you can compare the full output, which means you pay for the whole file.
Environment variables
TRANSLATEBOT_MODEL is only read from Django settings, not from the environment. If you want to switch models with an environment variable, read it in your settings yourself:
The API key must match the model's provider: switching from an OpenAI model to Claude also means TRANSLATEBOT_API_KEY must hold your Anthropic key. The TRANSLATEBOT_API_KEY environment variable is only used when the setting is missing or None.