# AI Translation пропускает локаль португальского языка (pt) — пост переведён на все языки, кроме португальского

**URL:** https://meta.discourse.org/t/ai-translation-skips-portuguese-pt-locale-post-translated-to-all-languages-except-portuguese/400612
**Category:** Bug
**Tags:** ai, dynaloc
**Created:** [14.Апрель.2026 15:04:01 UTC](https://meta.discourse.org/t/ai-translation-skips-portuguese-pt-locale-post-translated-to-all-languages-except-portuguese/400612 "2026-04-14T15:04:01Z")
**Posts on this page:** 1
**Showing post:** 24

<div class="post-metadata">

### Author: ![Denis\_Kovalenko](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/denis_kovalenko/32/549496_2.png) [@Denis\_Kovalenko](https://meta.discourse.org/u/Denis_Kovalenko)
#### Post date: [22.Апрель.2026 13:28:23 UTC](https://meta.discourse.org/t/ai-translation-skips-portuguese-pt-locale-post-translated-to-all-languages-except-portuguese/400612/24 "2026-04-22T13:28:23Z")

</div>

После тщательного расследования я выяснил, что то, что казалось одной проблемой с переводом, на самом деле представляет собой три отдельные проблемы, возникшие одновременно, что вызвало значительную путаницу.

Особая благодарность Ричарду из Communiteq за его коммуникацию, компетентность и особенно за предложение использовать подход [Data Explorer](https://meta.discourse.org/t/32566?silent=true) — именно благодаря SQL-запросам мне наконец удалось выявить все три проблемы. Большое уважение.

* * *

**Проблема 1: Неверное определение локали LLM**

LLM, используемая для определения локали, ошибочно классифицирует сообщения, написанные на английском языке, но содержащие названия мест на португальском.

Пример: Сообщение с заголовком _«Выставка WA Ханамаро Чаки открылась в крепости Сан-Жуан-ду-Пики»_ написано полностью на английском. Однако детектор локали классифицировал его как `pt-BR` — вероятно, из-за португальских названий мест в тексте («крепость Сан-Жуан-ду-Пики», «Дом культуры Санта-Крус»).

Последствие: поскольку система посчитала, что сообщение уже на португальском, она никогда не переводила его на португальский. Вместо этого она перевела его на английский, воспринимая английский как «отсутствующий» язык.

Это особенно проблематично в многоязычных сообществах, где сообщения на одном языке часто содержат названия мест или собственные имена на другом языке.

**Предлагаемое решение:** Использовать более мощную модель для определения локали (например, Mistral Large), которая лучше понимает контекст и различает язык основного текста и собственные имена, встроенные в него.

* * *

**Проблема 2: Ошибки 503 от API Mistral, приводящие к сбоям заданий в середине пакета**

Mistral периодически возвращает ошибки `503 unreachable_backend`. Хотя функция доукомплектования (backfill) в конечном итоге повторяет некоторые из этих попыток, задание `Jobs::LocalizeTopics` прерывается посередине выполнения при возникновении ошибки 503 — в результате оставшиеся темы в пакете остаются без перевода до следующего запланированного запуска.

Это создает непредсказуемую картину отсутствия переводов для случайных локалей в случайных темах.

Данные из логов:

```plaintext
DiscourseAi::Translation: Переведено 13 тем на de
[сбой в localize_topics.rb:57]

```

Задание перевело 13 тем, затем произошло прерывание. Оставшиеся темы не получили немецкий перевод до следующего цикла доукомплектования.

* * *

**Проблема 3: Целевые категории для перевода ИИ — непоследовательное автоматическое заполнение подкатегорий**

В моем случае я никогда вручную не добавлял категории в настройку «Целевые категории для перевода ИИ» — они, казалось, добавлялись автоматически. Однако две подкатегории (Viewpoints и Beaches) **не** были автоматически добавлены, хотя существовали и содержали контент.

Моя гипотеза: система автоматически добавляет подкатегорию в целевой список только тогда, когда в ней создается новый пост **после** включения перевода. Поскольку Viewpoints и Beaches были заполнены до включения перевода, они никогда не были автоматически добавлены и, следовательно, никогда не переводились.

Это сбивающее с толку поведение. Если логика автоматического заполнения существует, она должна быть последовательной и ретроспективной, либо интерфейс должен гораздо яснее указывать, что подкатегории необходимо добавлять вручную.

* * *

**Итог**

Все три проблемы возникли одновременно, что крайне затруднило диагностику. Сообщение могло остаться без перевода из-за ошибочного определения локали, сбоя с кодом 503 или просто потому, что его категория отсутствовала в целевом списке — и не было способа различить эти случаи без глубокого анализа логов и SQL-запросов.

Запрос [Data Explorer](https://meta.discourse.org/t/32566?silent=true), предложенный Ричардом, стал ключом к расследованию. Надеюсь, эта подробная разбивка будет полезна команде. Готов предоставить дополнительные логи или примеры, если потребуется.

Спасибо команде за активность в этой теме!

 ![ai target](https://global.discourse-cdn.com/meta/original/4X/1/8/0/1809d1582de20fe67e602174265a9f25d2611c83.png)

---

_[View the full topic](https://meta.discourse.org/t/ai-translation-skips-portuguese-pt-locale-post-translated-to-all-languages-except-portuguese/400612)._
