원래 요청에 대해 구체적인 구현 초안을 추가로 제시합니다. 방향성이 합리적이라고 판단되시면 PR 작성에 기꺼이 도움을 드리겠습니다.
문제: 카테고리 주제 템플릿(categories.topic_template)은 로컬라이즈할 수 없습니다. CategoryLocalization 모델과 Localizable concern은 name과 description만 처리하며, AI 콘텐츠 로컬라이제이션 파이프라인도 이에 따라 템플릿을 건너뜁니다. 컴포저는 사용자의 로케일과 무관하게 항상 기본 로케일의 템플릿을 삽입합니다.
사용 사례: 우리는 프로덕션 환경에서 자동 번역을 사용하여 Discourse AI 콘텐츠 로컬라이제이션으로 이중 언어(독일어/영어) 커뮤니티를 운영하고 있습니다. 게시물/주제 번역은 잘 작동하지만, 구조화된 콘텐츠의 카테고리 템플릿 — 체크리스트가 있는 버그 리포트 양식, [event] BBCode를 통한 RSVP 플로우 — 은 기능적 BBCode가 정확히 한 번만 존재해야 하므로 언어별로 복제할 수 없습니다. 유일한 우회 방법은 어색한 이중 언어 라벨(“App-Version / App version:”)을 가진 단일 템플릿을 사용하는 것이며, 이는 모든 사용자의 가독성을 해칩니다.
제안:
category_localizations에 nullable한topic_template텍스트 컬럼 추가- 컴포저: 사용자의 현재 로케일에 대한 로컬라이제이션이 존재하면 해당 템플릿을 사용하고, 없으면
category.topic_template로 폴백 - 카테고리 관리 UI에서 로케일별 필드를 노출/영속화(로컬라이즈된 이름/설명 옆에 배치)
- AI 콘텐츠 로컬라이제이션 파이프라인에서 카테고리를 번역할 때
topic_template을 포함(description과 동일하게 처리)
마이그레이션은 자명합니다(add_column :category_localizations, :topic_template, :text). 주요 작업은 컴포저 선택 로직과 관리 UI입니다.
고려된 대안:
- 이중 언어 단일 템플릿(현재 우회 방법) — 기능적 BBCode 블록에서는 작동하지 않음
- 로케일별 텍스트를 주입하는 테마 컴포넌트 — 취약하며, 서버 측 검증이 없고 API 컴포저를 깨뜨림