Возвращаюсь к моему первоначальному запросу с конкретным наброском реализации — готов помочь с 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:”), что ухудшает читаемость для всех.
Предложение:
- Добавить nullable текстовую колонку
topic_templateвcategory_localizations - Композер: если для текущей локали пользователя существует локализация, использовать её шаблон; в противном случае откатываться к
category.topic_template - Экспонировать/сохранять поле для каждой локали в административном интерфейсе категории (рядом с локализованными name/description)
- Включить
topic_templateв конвейер AI Content Localization при переводе категорий (какdescription)
Миграция тривиальна (add_column :category_localizations, :topic_template, :text); основная работа — логика выбора в композере и административный интерфейс.
Рассмотренные альтернативы:
- Двуязычный единый шаблон (текущий обходной путь) — не работает с функциональными блоками BBCode
- Компонент темы, внедряющий текст для каждой локали — хрупкое решение, нет серверной валидации, ломает API-композеры