# ✨ Брать у TVDB название на языке настройки и оригинальное название - **Тип:** feature - **Категория:** Ядро продукта - **Зачем:** [general].language правит только TMDB и промпт LLM — TVDB отдаёт primary name, и при language=ru в карточку ревью и имя папки попадает 哪吒之魔童降世 вместо «Нэчжа» - **Теги:** goal:recognition-accuracy Кандидат от TVDB начинает приходить с названием на языке `[general].language` и с отдельно заполненным оригинальным названием — как это уже делает TMDB. Сегодня глобальная настройка до клиента TVDB не доезжает вовсе: `TVDBConfig` (`internal/metadata/tvdb.go`) поля языка не имеет, `serve.go` собирает провайдер без него, `Search` шлёт только `query`/`type`/`year`, а из ответа разбирает единственное поле `name` — это primary name записи, то есть название на языке оригинала. Блок переводов не читается, `OriginalTitle` TVDB не заполняет вовсе, хотя это ось сравнения при матче. Наблюдаемый случай — [movie 131155](https://www.thetvdb.com/movies/131155-): primary name `哪吒之魔童降世`, русский перевод у записи есть («Нэчжа»), но до нас не доходит. Что сделать: - прокинуть локаль в `TVDBConfig` из `cfg.ContentLanguage()`, диалект вывести внутри `tvdb.go` — знание диалекта принадлежит тому, кто на нём говорит ([ADR решения 2 в архиве](../../../openspec/changes/archive/2026-07-24-content-language-switch/design.md)); - разобрать переводы в выдаче поиска (точные имена полей — `name_translated` и блок `translations`; форму сверить с живым API через `TVDB_API_KEY=… go test ./internal/metadata/ -run Integration`, наугад не писать); - фолбэк на primary name, когда перевода на нужный язык нет, — молчаливой пустоты в `Title` быть не должно; - заполнить `OriginalTitle` primary name'ом; - заказать поведение спекой: требование «Локаль запроса к TMDB» ([metadata-match](../../../openspec/specs/metadata-match/spec.md)) написано только под TMDB — либо обобщается на провайдеров, либо получает соседа. ## Критерии приёмки - Запрос поиска TVDB содержит параметр языка, выведенный из `[general].language` (оракул: тест на `httptest`-сервере в `tvdb_test.go` — проверяет строку запроса при `language = ru` и при незаданном, как это сделано для TMDB). - При наличии перевода `Candidate.Title` приходит на языке настройки, при отсутствии — равен primary name (оракул: два случая в одном табличном тесте на фикстуре ответа). - `Candidate.OriginalTitle` у TVDB непуст и равен primary name (оракул: тот же тест; плюс интеграционный прогон за `TVDB_API_KEY` печатает оба поля). - Дельта-спека `metadata-match` заказывает локаль TVDB и фолбэк на оригинал (оракул: `openspec validate --strict`). ## Рамки Матч и гейт авто-раскладки не трогаются — локализованное название косметическое, сравнение идёт по оригинальному; менять из-за него поведение выборки нельзя. Живой API дёргается только вручную под env-гейтом, лимиты ключа беречь. TVMaze вне охвата — переводов не отдаёт.