本地化分类主题模板

接着我最初的请求,这里提供一个具体的实现草图——如果这个方向听起来合理,我很乐意帮忙提交 PR。

问题: 分类主题模板(categories.topic_template)无法本地化。CategoryLocalization 模型和 Localizable 关注点(concern)仅覆盖 namedescription,因此 AI 内容本地化流水线会相应地跳过模板。无论用户处于哪种语言环境,编辑器(Composer)始终插入基础语言的模板。

使用场景: 我们在生产环境中运行一个双语(德/英)社区,使用 Discourse AI 内容本地化功能进行自动翻译。帖子和主题的翻译效果很好,但用于结构化内容的分类模板——例如带有检查清单的 Bug 报告表单、通过 [event] BBCode 实现的 RSVP 流程——无法按语言复制,因为功能性 BBCode 必须恰好存在一次。唯一的变通方法是使用包含生硬双语标签(如“App-Version / App version:”)的单一模板,这会降低所有人的可读性。

建议:

  1. category_localizations 中添加一个可空的 topic_template 文本列
  2. 编辑器逻辑:如果存在用户当前语言环境的本地化记录,则使用其模板;否则回退到 category.topic_template
  3. 在分类管理界面中按语言环境暴露/持久化该字段(位于本地化名称/描述旁边)
  4. 在翻译分类时,将 topic_template 纳入 AI 内容本地化流水线(类似 description 的处理方式)

迁移很简单(add_column :category_localizations, :topic_template, :text);主要工作在于编辑器选择逻辑和管理界面。

考虑过的替代方案:

  • 双语单一模板(当前的变通方法)——在遇到功能性 BBCode 块时会失效
  • 通过主题组件注入按语言区分的文本——脆弱,缺乏服务器端验证,会导致 API 编辑器出错