# 카테고리 주제 템플릿 현지화

**URL:** https://meta.discourse.org/t/localize-category-topic-templates/412279
**Category:** Feature
**Tags:** content-localization
**Created:** [9월 12, 2026, 1:56오후 UTC](https://meta.discourse.org/t/localize-category-topic-templates/412279 "2026-09-12T13:56:49Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![SilentNewt95](https://avatars.discourse-cdn.com/v4/letter/s/848f3c/32.png) [@SilentNewt95](https://meta.discourse.org/u/SilentNewt95)
#### Post date: [9월 12, 2026, 1:56오후 UTC](https://meta.discourse.org/t/localize-category-topic-templates/412279/1 "2026-09-12T13:56:50Z")

</div>

### 문제

Discourse의 콘텐츠 로컬라이제이션(수동 및 Discourse AI를 통한 자동 처리)은 토픽 제목, 게시물, 카테고리 이름 및 카테고리 설명을 훌륭하게 로컬라이제이션합니다. 그러나 카테고리 **토픽 템플릿** (`categories.topic_template`)은 로컬라이제이션할 수 없습니다. 다국어 커뮤니티에서 작성기(Composer)의 사전 입력 내용은 항상 사이트의 기본 언어로 표시됩니다 — 모든 사용자에게 동일하게.

### 현재 동작

- `CategoryLocalization`은 로케일별로 `name`과 `description`을 저장합니다(`Localizable` 관심사(Concern)는 Topic/Post/Category에 대해 "다중 로케일 이름/설명 지원"을 제공합니다).
- 작성기는 항상 멤버의 인터페이스 로케일에 관계없이 로컬라이제이션되지 않은 `topic_template`을 사용합니다.

### 제안된 해결책

- `CategoryLocalization`에 `topic_template`을 추가합니다(관리자 로컬라이제이션 편집기 UI 포함).
- 멤버가 카테고리에서 작성기를 열 때, 해당 멤버의 인터페이스 로케일에 맞는 템플릿을 사용하고, 로컬라이제이션이 없으면 카테고리의 기본 템플릿으로 폴백합니다.
- 동일한 문제가 새로운 카테고리별 **폼 템플릿** 에도 적용됩니다: 폼 템플릿은 카테고리 _사이_에서 다를 수 있지만, 하나의 카테고리 _내부_에서는 로케일 인식 변형이 없습니다 — 다국어 환경에서는 이를 우회하기 위해 커뮤니티를 언어별 별도 카테고리로 분리해야 합니다.

### **사용 사례**

저희는 이중 언어 커뮤니티(기본 언어 독일어, 자동 AI 번역을 통한 영어)를 운영합니다. 일부 카테고리는 체크리스트 항목과 내장된 날짜 선택기를 위한 `[event]` 블록이 포함된 구조화된 작성기 템플릿을 제공합니다. 영어 사용 멤버는 현재 독일어 전용 템플릿만 받고 있습니다. 저희의 우회 방법은 단일 이중 언어 템플릿(각 라벨을 "독일어 / 영어"로 한 줄에 중복 표시)인데, 이는 작동하지만 편집자와 멤버 모두에게 번거롭고 작성기 내용을 두 배로 늘립니다.

관련 항목

- #32464 (로컬라이제이션된 카테고리 경로) — 동일한 로컬라이제이션 영역, 카테고리.

---

<div class="post-metadata">

### Author: ![SilentNewt95](https://avatars.discourse-cdn.com/v4/letter/s/848f3c/32.png) [@SilentNewt95](https://meta.discourse.org/u/SilentNewt95)
#### Post date: [9월 13, 2026, 1:03오후 UTC](https://meta.discourse.org/t/localize-category-topic-templates/412279/2 "2026-09-13T13:03:56Z")

</div>

원래 요청에 대해 구체적인 구현 초안을 추가로 제시합니다. 방향성이 합리적이라고 판단되시면 PR 작성에 기꺼이 도움을 드리겠습니다.

**문제:** 카테고리 주제 템플릿(`categories.topic_template`)은 로컬라이즈할 수 없습니다. `CategoryLocalization` 모델과 `Localizable` concern은 `name`과 `description`만 처리하며, AI 콘텐츠 로컬라이제이션 파이프라인도 이에 따라 템플릿을 건너뜁니다. 컴포저는 사용자의 로케일과 무관하게 항상 기본 로케일의 템플릿을 삽입합니다.

**사용 사례:** 우리는 프로덕션 환경에서 자동 번역을 사용하여 Discourse AI 콘텐츠 로컬라이제이션으로 이중 언어(독일어/영어) 커뮤니티를 운영하고 있습니다. 게시물/주제 번역은 잘 작동하지만, 구조화된 콘텐츠의 카테고리 템플릿 — 체크리스트가 있는 버그 리포트 양식, `[event]` BBCode를 통한 RSVP 플로우 — 은 기능적 BBCode가 정확히 한 번만 존재해야 하므로 언어별로 복제할 수 없습니다. 유일한 우회 방법은 어색한 이중 언어 라벨(“App-Version / App version:”)을 가진 단일 템플릿을 사용하는 것이며, 이는 모든 사용자의 가독성을 해칩니다.

**제안:**

1. `category_localizations`에 nullable한 `topic_template` 텍스트 컬럼 추가
2. 컴포저: 사용자의 현재 로케일에 대한 로컬라이제이션이 존재하면 해당 템플릿을 사용하고, 없으면 `category.topic_template`로 폴백
3. 카테고리 관리 UI에서 로케일별 필드를 노출/영속화(로컬라이즈된 이름/설명 옆에 배치)
4. AI 콘텐츠 로컬라이제이션 파이프라인에서 카테고리를 번역할 때 `topic_template`을 포함(`description`과 동일하게 처리)

마이그레이션은 자명합니다(`add_column :category_localizations, :topic_template, :text`). 주요 작업은 컴포저 선택 로직과 관리 UI입니다.

**고려된 대안:**

- 이중 언어 단일 템플릿(현재 우회 방법) — 기능적 BBCode 블록에서는 작동하지 않음
- 로케일별 텍스트를 주입하는 테마 컴포넌트 — 취약하며, 서버 측 검증이 없고 API 컴포저를 깨뜨림
