nat
(Natalie T)
10.Февраль.2026 14:53:22
5
У нас есть исправление здесь:
main ← fancy-title-write
merged 02:22PM - 10 Feb 26 UTC
Related: https://meta.discourse.org/t/yet-another-title-localization-issue/39546… 9
### bug context
tldr; `Topic#fancy_title` saves a fancy_title to db when the fancy_title is null.
This bug requires a certain incantation to trigger.
- Topic 395465 exists with `title = "Notification level button always says \"tracking\""` and
`fancy_title = NULL` in the DB
- A `TopicLocalization` exists for this topic in `zh_CN`
- `content_localization_enabled` is on
When a crawler hits `GET /t/.../395465?tl=zh_CN`, localization replacement happens on the topic, which writes the title attribute, so the state is now
- `title` = Chinese (modified)
- `fancy_title` = NULL (untouched, still what was loaded from DB)
When serializing via `TopicViewSerializer` which uses `LocalizedFancyTopicTitleMixin`, we call `topic.fancy_title`. The `topic#fancy_title` generates the fancy_title from the title value, then writes the chinese fancy title to db 😢
https://github.com/discourse/discourse/blob/e935ed63b28a30ee7ae6a7783ae05fe33edf3367/app/models/topic.rb#L532-L545
### fix
This PR fixes the issue by ensuring the fancy_title is always written along with the title, preventing the need for invoking the part of `topic#fancy_title` which saves the fancy_title to db.
The added controller tests fail without the fix.
Это решение технически должно исправить проблему, с которой мы сталкивались. Главный вопрос, который я пока не решил, — почему fancy_title затронутой темы может быть пустым в базе данных, поскольку именно этот сценарий должен был бы привести к сохранению локализации.
Я продолжу отслеживать ситуацию здесь. Оставлю этот запрос открытым до выходных.
2 лайка