Локализация шаблонов тем категорий

Возвращаюсь к моему первоначальному запросу с конкретным наброском реализации — готов помочь с PR, если направление кажется разумным.

Проблема: Шаблоны тем категорий (categories.topic_template) не локализуемы. Модель CategoryLocalization и concern Localizable покрывают только name и description, а конвейер AI Content Localization соответственно пропускает шаблоны. Композер всегда вставляет шаблон базового локали, независимо от локали пользователя.

Сценарий использования: Мы ведём двуязычное (DE/EN) сообщество на Discourse AI Content Localization с автопереводом в продакшене. Перевод постов/тем работает отлично, но шаблоны категорий для структурированного контента — формы отчётов об ошибках с чек-листами, RSVP-потоки через BBCode [event] — нельзя дублировать для каждого языка, поскольку функциональный BBCode должен существовать ровно один раз. Единственный обходной путь — один шаблон с неловкими двуязычными подписями (“App-Version / App version:”), что ухудшает читаемость для всех.

Предложение:

  1. Добавить nullable текстовую колонку topic_template в category_localizations
  2. Композер: если для текущей локали пользователя существует локализация, использовать её шаблон; в противном случае откатываться к category.topic_template
  3. Экспонировать/сохранять поле для каждой локали в административном интерфейсе категории (рядом с локализованными name/description)
  4. Включить topic_template в конвейер AI Content Localization при переводе категорий (как description)

Миграция тривиальна (add_column :category_localizations, :topic_template, :text); основная работа — логика выбора в композере и административный интерфейс.

Рассмотренные альтернативы:

  • Двуязычный единый шаблон (текущий обходной путь) — не работает с функциональными блоками BBCode
  • Компонент темы, внедряющий текст для каждой локали — хрупкое решение, нет серверной валидации, ломает API-композеры