# API multilingv de metadate pentru filme

> Acest API multilingv de metadate pentru filme servește titluri, descrieri, sloganuri, nume de genuri și biografii în 14 limbi: engleză, rusă, ucraineană, belarusă, chineză, portugheză, bulgară, ebraică, cehă, română, franceză, poloneză, italiană și spaniolă. Transmite o etichetă TMDB precum ru-RU în parametrul language.

## Obține date despre filme în 14 limbi

`GET /3/movie/{movie_id}?language=ru-RU` întoarce titlul, descrierea, sloganul și numele genurilor în rusă. Parametrul `language` primește etichete TMDB precum `ru-RU` sau `pt-BR` și funcționează pe fiecare endpoint care întoarce text. ID-urile rămân aceleași în orice limbă, deci un singur rând din baza ta de date le servește pe toate.

Primești 14 limbi cu o singură cheie, `original_title` pentru fiecare film, un endpoint de traduceri care listează toate limbile unui titlu și nume de genuri localizate. Lista completă este la [limbi](https://amodb.dev/ro/languages/).

## Cele 14 limbi servite

| Limbă      | Cod  | Etichetă exemplu |
| ---------- | ---- | ---------------- |
| Engleză    | `en` | `en-US`          |
| Rusă       | `ru` | `ru-RU`          |
| Ucraineană | `uk` | `uk-UA`          |
| Belarusă   | `be` | `be-BY`          |
| Chineză    | `zh` | `zh-CN`          |
| Portugheză | `pt` | `pt-BR`          |
| Bulgară    | `bg` | `bg-BG`          |
| Ebraică    | `he` | `he-IL`          |
| Cehă       | `cs` | `cs-CZ`          |
| Română     | `ro` | `ro-RO`          |
| Franceză   | `fr` | `fr-FR`          |
| Poloneză   | `pl` | `pl-PL`          |
| Italiană   | `it` | `it-IT`          |
| Spaniolă   | `es` | `es-ES`          |

Orice altă etichetă revine la `en`. Japoneza și coreeana nu sunt servite ca limbi de interfață. Titlurile lor originale revin în continuare în `original_title` pentru filme și în `original_name` pentru seriale TV.

## Ce date primești

| Endpoint                                   | Conținut localizat                                                           |
| ------------------------------------------ | ---------------------------------------------------------------------------- |
| `GET /3/movie/{movie_id}`                  | `title`, `overview`, `tagline`, numele genurilor                             |
| `GET /3/tv/{tv_id}`                        | `name`, `overview`, `tagline`, numele genurilor                              |
| `GET /3/tv/{tv_id}/season/{season_number}` | `name` și `overview` de sezon și de episod                                   |
| `GET /3/person/{person_id}`                | `biography`                                                                  |
| `GET /3/genre/movie/list`                  | Nume de genuri pentru filtre și meniuri                                      |
| `GET /3/movie/{movie_id}/translations`     | Toate limbile unui titlu într-un singur răspuns                              |
| `GET /3/movie/{movie_id}/images`           | Postere etichetate după limbă, filtrate cu `include_image_language`          |
| `GET /3/movie/{movie_id}/videos`           | Videoclipuri etichetate cu `iso_639_1`, toate limbile într-un singur răspuns |

## Începe în 3 pași

1. Alege un plan la [prețuri](https://amodb.dev/ro/pricing/). Numărul de limbi nu se schimbă cu planul, doar ritmul cererilor.
2. Creează o cheie în panoul contului tău.
3. Apelează orice endpoint cu o etichetă `language` și trimite cheia ca `api_key` sau într-un antet Bearer.

## Exemplu de cerere

Exemplul bash afișează titlul din Fight Club (ID `550`) în trei limbi. Folosește `jq` ca să afișeze un câmp. Exemplul PHP cere belarusa și revine la engleză când descrierea este goală.

```bash
for lang in en-US ru-RU he-IL; do
  curl -s "https://api.amodb.dev/3/movie/550?language=$lang" \
    -H "Authorization: Bearer $AMODB_KEY" | jq -r '.title'
done
```

```php
<?php
function amodb(string $path, array $query = []): array
{
    $url = 'https://api.amodb.dev/3' . $path . '?' . http_build_query($query);
    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('AMODB_KEY')],
    ]);
    $body = curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if ($status !== 200) {
        throw new RuntimeException("amodb returned $status");
    }
    return json_decode($body, true);
}

function localizedMovie(int $id, string $lang): array
{
    $movie = amodb("/movie/$id", ['language' => $lang]);
    $movie['text_language'] = $lang;
    if (trim($movie['overview'] ?? '') === '') {
        $fallback = amodb("/movie/$id", ['language' => 'en-US']);
        $movie['overview'] = $fallback['overview'] ?? '';
        $movie['text_language'] = 'en-US';
    }
    return $movie;
}

$movie = localizedMovie(550, 'be-BY');
echo $movie['title'], ' (', $movie['original_title'], ')', PHP_EOL;
echo '[', $movie['text_language'], '] ', $movie['overview'], PHP_EOL;
```

Răspuns pentru `language=ru-RU`, scurtat la câteva câmpuri. Cheia `text_language` din exemplul PHP este adăugată de codul tău, nu de API.

```json
{
  "genres": [
    {
      "id": 18,
      "name": "драма"
    },
    {
      "id": 53,
      "name": "триллер"
    }
  ],
  "id": 550,
  "original_language": "en",
  "original_title": "Fight Club",
  "overview": "Сотрудник страховой компании страдает хронической бессонницей и отчаянно пытается вырваться из мучительно скучной жизни. Однажды в очередной командировке он...",
  "poster_path": "/66RvLrRJTm4J8l3uHXWF09AICol.jpg",
  "tagline": "«Интриги. Хаос. Мыло»",
  "title": "Бойцовский клуб"
}
```

## Revenirea când un câmp este gol

Nu orice titlu are text în orice limbă. Un `overview` poate veni gol când nu există traducere, iar un `title` sau un `tagline` poate veni în engleză. API-ul nu inventează text. Folosește o ordine fixă, ca pagina să arate mereu ceva:

1. Cere limba pe care o afișezi.
2. Dacă un câmp este gol, cere `en-US` pentru același ID sau citește intrarea în engleză din lista de traduceri.
3. Dacă titlul este gol, arată `original_title`.
4. Stochează din ce limbă provine fiecare câmp, ca să poți încerca din nou mai târziu.

Cache-ul la margine ține o copie pe limbă pentru fiecare cale ținută în cache, așa că revenirea la engleză pentru un titlu popular este de obicei servită din cache.

## Listează toate traducerile unui titlu

`GET /3/movie/{movie_id}/translations` întoarce un array `translations`, câte o intrare pentru fiecare limbă care are date. Lista poate fi mai lungă decât cele 14 limbi servite: Fight Club are 50 de intrări. Folosește-o ca să construiești un selector de limbă sau ca să stochezi toate textele unui titlu într-un singur rând.

| Câmp                                                                       | Semnificație                           |
| -------------------------------------------------------------------------- | -------------------------------------- |
| `iso_639_1`, `iso_3166_1`                                                  | Codurile de limbă și de țară           |
| `english_name`                                                             | Numele limbii în engleză               |
| `data.title` (filme) sau `data.name` (TV), `data.overview`, `data.tagline` | Text localizat, titlul poate fi gol    |
| `data.homepage`, `data.runtime`                                            | Valori opționale pentru acea traducere |

Același endpoint există pentru serialele TV și pentru episoade. Intrările TV au `data.name` și nu au `runtime`, iar intrările de episod au doar `name` și `overview`. Sezoanele răspund cu o listă goală, iar persoanele și colecțiile nu au endpoint de traduceri. Detaliile sunt la [traduceri](https://amodb.dev/ro/translations/). Un apel de traduceri înlocuiește până la 14 apeluri de detalii când vrei toate limbile deodată.

## Postere și videoclipuri pe limbi

Imaginile și videoclipurile au propriile etichete de limbă în `iso_639_1`. Pe endpoint-urile de imagini, transmite o listă separată prin virgulă și adaugă `null` pentru elementele fără limbă, precum posterele fără text. Răspunsul conține elementele care se potrivesc, așa că ordonează-le în codul tău.

| Parametru                | Folosit pe              | Exemplu      |
| ------------------------ | ----------------------- | ------------ |
| `include_image_language` | Endpoint-uri de imagini | `ru,en,null` |

Endpoint-urile de videoclipuri întorc toate limbile într-un singur răspuns și ignoră `include_video_language`, așa că filtrează tu după `iso_639_1`. Vezi [imagini](https://amodb.dev/ro/images-api/) pentru dimensiuni și CDN.

## Ebraica și textul de la dreapta la stânga

Ebraica este singura limbă din cele 14 care se scrie de la dreapta la stânga. Tratează-o în pagină, nu în date:

- Setează `lang="he"` și `dir="rtl"` pe elementul care conține textul.
- Învelește titlurile latine din textul ebraic într-un element `<bdi>`, ca punctuația să nu sară pe partea greșită.
- Folosește proprietăți CSS logice precum `margin-inline-start` în loc de stânga și dreapta.

## Cum se compară

| Capacitate                   | Extragi singur paginile               | Set de date doar în engleză | amodb                             |
| ---------------------------- | ------------------------------------- | --------------------------- | --------------------------------- |
| Limbi                        | O limbă a site-ului pe cerere         | Engleză                     | 14 limbi cu `language`            |
| Același ID în toate limbile  | URL-uri diferite pentru fiecare limbă | Nu se aplică                | Același ID numeric peste tot      |
| Toate traducerile unui titlu | Preiei pagina fiecărei limbi          | Nu se aplică                | Un singur apel `translations`     |
| Postere localizate           | URL-uri de imagini pe limbă           | Vezi documentația lor       | Filtrul `include_image_language`  |
| Titlul original              | Îl extragi din textul paginii         | Vezi documentația lor       | `original_title`, `original_name` |

## Prețuri

Setul de limbi este același la fiecare plan, așa că plătești doar pentru ritm și perioadă. Cumperi 1, 3, 6, 12 sau 24 de luni plătite în avans, cu reduceri de 0, 10, 20, 30 sau 40 la sută la cele mai lungi și fără reînnoire automată. Planurile de 20, 40 și 120 de cereri pe minut includ toate limbile și toate endpoint-urile. Un site în cinci limbi are nevoie de până la cinci apeluri de detalii pe titlu, iar cererile repetate sunt servite din cache-ul la margine 6 ore. Nu există nivel gratuit. Vezi [prețuri](https://amodb.dev/ro/pricing/).

## Întrebări și răspunsuri

### Ce limbi servește API-ul?

Paisprezece: engleză, rusă, ucraineană, belarusă, chineză, portugheză, bulgară, ebraică, cehă, română, franceză, poloneză, italiană și spaniolă, cu codurile en ru uk be zh pt bg he cs ro fr pl it es.

### Ce se întâmplă dacă trimit o etichetă de limbă care nu este servită?

Răspunsul revine la engleză. O etichetă precum ja-JP întoarce text în engleză, iar titlul original japonez ajunge în continuare în original_title pentru filme și în original_name pentru seriale TV.

### Pot obține toate traducerile unui titlu într-o singură cerere?

Da. GET /3/movie/{movie_id}/translations listează câte o intrare pentru fiecare limbă care are date, fiecare cu title, overview, tagline, homepage și runtime. Serialele TV și episoadele au același endpoint, cu name în loc de title. Sezoanele, persoanele și colecțiile nu au traduceri.

### Cum tratez o descriere lipsă în limba aleasă?

Verifică dacă este un șir gol, apoi cere același ID cu en-US sau citește intrarea în engleză din lista de traduceri. Arată original_title ca ultimă soluție de rezervă și marchează textul ca fiind în engleză. Titlurile și sloganurile pot veni deja în engleză.

### Sunt localizate și posterele?

Posterele au o etichetă de limbă. Cere-le cu include_image_language, de exemplu ru,en,null, și ordonează potrivirile în codul tău. Fișierele de imagine vin de la img.amodb.dev și nu cer cheie.

## Pagini conexe

- [Limbi](https://amodb.dev/ro/languages/): amodb servește titluri, descrieri și nume în 14 limbi. Trimite în language o etichetă în stil TMDB, precum ru-RU sau pt-BR; altă etichetă revine la engleză.
- [API traduceri](https://amodb.dev/ro/translations/): API traduceri filme cu căi TMDB v3: citește fiecare titlu, descriere și slogan stocat al unui film, serial sau episod în toate limbile deodată.
- [API detalii film](https://amodb.dev/ro/movies/): API detalii film cu aceleași căi și același JSON ca TMDB v3. Preia un film după ID, adaugă credite, evaluări și atmosferă cu append_to_response, în 14 limbi.
- [API seriale TV](https://amodb.dev/ro/tv-series/): API seriale TV cu căile și JSON-ul TMDB v3. Preia un serial după ID cu sezoane, rețele și următorul episod, plus clasificări de conținut și furnizori.
- [API imagini și gazdă de imagini](https://amodb.dev/ro/images-api/): API imagini filme cu căi TMDB v3: listează postere, imagini de fundal, logouri și cadre, apoi încarcă-le de la img.amodb.dev în 10 dimensiuni, fără cheie.
- [Ghid rapid](https://amodb.dev/ro/quickstart/): Fă primul apel amodb: ia o cheie, cere detaliile unui film în curl, JavaScript, Python, PHP sau Go, apoi încarcă posterul de pe img.amodb.dev. Sub 2 minute.

Actualizat: 2026-10-18. Source: https://amodb.dev/ro/multilingual-movie-metadata-api/
