# Languages

> amodb serves 14 base languages: en, ru, uk, be, zh, pt, bg, he, cs, ro, fr, pl, it and es. Pass a TMDB style tag such as ru-RU, pt-BR or zh-CN in the language parameter. amodb reads the base language from the tag. Any other language falls back to English, so a request never fails because of its tag.

## The 14 languages

| Code | Language   | Native name | Example tag |
| ---- | ---------- | ----------- | ----------- |
| `en` | English    | English     | `en-US`     |
| `ru` | Russian    | Русский     | `ru-RU`     |
| `uk` | Ukrainian  | Українська  | `uk-UA`     |
| `be` | Belarusian | Беларуская  | `be-BY`     |
| `zh` | Chinese    | 中文          | `zh-CN`     |
| `pt` | Portuguese | Português   | `pt-BR`     |
| `bg` | Bulgarian  | Български   | `bg-BG`     |
| `he` | Hebrew     | עברית       | `he-IL`     |
| `cs` | Czech      | Čeština     | `cs-CZ`     |
| `ro` | Romanian   | Română      | `ro-RO`     |
| `fr` | French     | Français    | `fr-FR`     |
| `pl` | Polish     | Polski      | `pl-PL`     |
| `it` | Italian    | Italiano    | `it-IT`     |
| `es` | Spanish    | Español     | `es-ES`     |

## How the parameter works

Add `language` to any TMDB style call. amodb accepts the tag forms TMDB clients send:

- `ru-RU`, `pt-BR` and `zh-CN`, with a region
- `ru` and `pt`, without one
- `pt_BR`, with an underscore

amodb takes the part before the first `-` or `_`, lowercases it, and serves that language when it is one of the 14. Anything else returns English. The edge cache stores each base language once, so `ru` and `ru-RU` share one cache entry.

```bash
curl "https://api.amodb.dev/3/movie/550?language=uk-UA" \
  -H "Authorization: Bearer $AMODB_KEY"
```

```js
const res = await fetch("https://api.amodb.dev/3/tv/1396?language=pl-PL", {
  headers: { Authorization: `Bearer ${process.env.AMODB_KEY}` },
});
const show = await res.json();
console.log(show.name, show.overview);
```

```python
res = requests.get(
    "https://api.amodb.dev/3/search/movie",
    params={"query": "Матрица", "language": "ru-RU"},
    headers={"Authorization": f"Bearer {os.environ['AMODB_KEY']}"},
    timeout=10,
)
```

## What is translated

Translated fields follow TMDB: `title` and `overview` for movies, `name` and `overview` for shows, seasons and episodes, `tagline`, genre names and person biographies. Fields with no translation in a language come back as they do in TMDB, often as an empty string, so keep an English request as a fallback for display.

## Hebrew and right to left text

Hebrew text comes back as plain Unicode. Set `dir="rtl"` or `dir="auto"` on the element that shows it; the API does not add direction marks.

## Questions and answers

### Does pt-PT return different text from pt-BR?

No. amodb reads only the base language, so pt-PT and pt-BR both return Portuguese. The same applies to zh-CN and zh-TW, which both return Chinese.

### What happens with a language outside the 14?

The call succeeds and returns English. For example, language=de-DE returns the English title and overview.

## Related pages

- [Images](https://amodb.dev/images/): Load posters, backdrops and profile photos from img.amodb.dev with TMDB paths and sizes from w92 to original. No key, 30 day cache, one URL pattern for all.
- [Quickstart](https://amodb.dev/quickstart/): Make your first amodb call: get a key, request movie details in curl, JavaScript, Python, PHP or Go, then load the poster from img.amodb.dev. Under 2 minutes.
- [Errors](https://amodb.dev/errors/): Every amodb error with its HTTP status, TMDB status_code and message, plus the OMDb error shape. What each one means and what your client should do next.

Updated: 2026-10-18. Source: https://amodb.dev/languages/
