feat(i18n): 팬레터 문구를 반영한다
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
# PRD: 팬Talk 팬레터 Resource 문구 변경
|
||||
|
||||
## 문서 정보
|
||||
|
||||
| 항목 | 내용 |
|
||||
|---|---|
|
||||
| 문서 상태 | 구현 완료 |
|
||||
| 작성일 | `2026-08-14` |
|
||||
| 최종 수정일 | `2026-08-14` |
|
||||
| 대상 제품 | 크리에이터 채널 FanTalk 표시 문구 |
|
||||
| 작성자·결정권자 | 사용자 요청 기준 |
|
||||
| 관련 API Contract | 없음 |
|
||||
| 관련 구현 계획 | `docs/20260814_팬Talk_팬레터_resource_문구_변경/plan-task.md` |
|
||||
| 관련 review | `docs/20260814_팬Talk_팬레터_resource_문구_변경/reviews/phase1-fan-letter-resource-review.md` |
|
||||
|
||||
## 1. Overview
|
||||
|
||||
크리에이터 채널의 FanTalk 기능명 중 사용자에게 노출되는 Android string resource 값을 `팬레터` 계열 표현으로 변경한다. 기능 구조, resource key, Kotlin class/package, layout id는 유지하고 표시 문구만 교체한다.
|
||||
|
||||
## 2. Problem Statement
|
||||
|
||||
현재 크리에이터 채널 일부 resource가 `팬Talk`, `팬톡`, `FanTalk`, `ファントーク` 표현을 사용한다. 서비스 명칭을 `팬레터`로 바꾸려면 한국어, 영어, 일본어 사용자에게 보이는 같은 기능명이 일관되게 표시되어야 한다.
|
||||
|
||||
## 3. Goals
|
||||
|
||||
- 한국어 기본 resource에서 FanTalk 기능명 표현을 `팬레터`로 통일한다.
|
||||
- 영어 resource에서 FanTalk 기능명 표현을 `Fan Letter`로 통일한다.
|
||||
- 일본어 resource에서 FanTalk 기능명 표현을 `ファンレター`로 통일한다.
|
||||
- resource merge로 XML 문법과 placeholder 보존 여부를 확인한다.
|
||||
|
||||
## 4. Non-Goals
|
||||
|
||||
- `creator_channel_*_fantalk` resource key를 rename하지 않는다.
|
||||
- `CreatorChannelFanTalk*` Kotlin class, package, method, layout id, drawable name을 rename하지 않는다.
|
||||
- 기존 PRD/plan-task의 과거 이력 문구를 일괄 치환하지 않는다.
|
||||
- API, DTO, repository, ViewModel 동작을 변경하지 않는다.
|
||||
- UI/계측 테스트, 기기·에뮬레이터 조작, 스크린샷 검증은 수행하지 않는다.
|
||||
|
||||
## 5. Target Users and Permissions
|
||||
|
||||
| 사용자 | 목표 | 주요 작업 | 사용 환경 |
|
||||
|---|---|---|---|
|
||||
| 크리에이터 채널 방문자 | FanTalk 영역을 새 명칭으로 인지 | 탭/홈 섹션/오류 문구 확인 | Android 앱 |
|
||||
|
||||
권한 정책은 변경하지 않는다. 기존 FanTalk 조회 권한과 오류 처리는 그대로 따른다.
|
||||
|
||||
## 6. 기능 요구사항
|
||||
|
||||
| ID | 상태 | 요구사항 | 수용 기준 | 계약/Goal 연결 |
|
||||
|---|---|---|---|---|
|
||||
| `I18N-FANLETTER-001` | 확정 | 기본 한국어 resource의 FanTalk 기능명 노출 문구를 `팬레터`로 변경한다. | `app/src/main/res/values/strings.xml`에서 관련 값에 `팬Talk` 또는 `팬톡`이 남지 않는다. | `P1-T1` |
|
||||
| `I18N-FANLETTER-002` | 확정 | 영어 resource의 FanTalk 기능명 노출 문구를 `Fan Letter`로 변경한다. | `app/src/main/res/values-en/strings.xml`에서 관련 값에 `FanTalk`가 남지 않는다. | `P1-T1` |
|
||||
| `I18N-FANLETTER-003` | 확정 | 일본어 resource의 FanTalk 기능명 노출 문구를 `ファンレター`로 변경한다. | `app/src/main/res/values-ja/strings.xml`에서 관련 값에 `ファントーク`가 남지 않는다. | `P1-T1` |
|
||||
| `I18N-FANLETTER-004` | 확정 | resource 값 변경 외 식별자와 동작을 보존한다. | Kotlin, layout id, drawable, API 관련 파일은 수정하지 않는다. | `P1-GATE` |
|
||||
|
||||
## 7. 변경 대상 Resource
|
||||
|
||||
현재 확인된 변경 대상은 다음 string name으로 한정한다.
|
||||
|
||||
| string name | 한국어 값 | 영어 값 | 일본어 값 |
|
||||
|---|---|---|---|
|
||||
| `creator_channel_tab_fantalk` | `팬레터` | `Fan Letter` | `ファンレター` |
|
||||
| `creator_channel_section_fantalk` | `팬레터` | `Fan Letter` | `ファンレター` |
|
||||
| `creator_channel_fantalk_error_message` | `팬레터를 불러오지 못했습니다.` | `Could not load Fan Letter.` | `ファンレターを読み込めませんでした。` |
|
||||
|
||||
## 8. 성공 기준
|
||||
|
||||
- [x] 기본/영어/일본어 resource의 변경 대상 값이 위 표와 일치한다.
|
||||
- [x] `app/src/main/res/values*`의 변경 대상 범위에 이전 기능명 표현이 남지 않는다.
|
||||
- [x] `./gradlew :app:mergeDebugResources`가 `BUILD SUCCESSFUL`로 통과한다.
|
||||
- [x] `git diff --check`가 공백 오류 없이 통과한다.
|
||||
|
||||
## 9. Open Questions
|
||||
|
||||
| ID | 상태 | 결정 필요 사항 | 현재 권고 | 결정 주체 | 결정 기한/시점 | 영향 Goal |
|
||||
|---|---|---|---|---|---|---|
|
||||
| 없음 | 확정 | 추가 질문 없음 | 확정 범위대로 진행 | 사용자 | 2026-08-14 | `P1-T1` |
|
||||
|
||||
## 10. Decision Log
|
||||
|
||||
| 날짜 | ID | 상태 | 결정 | 근거 | 영향 요구사항·계약·Goal |
|
||||
|---|---|---|---|---|---|
|
||||
| 2026-08-14 | `DEC-001` | 확정 | `팬Talk`, `팬톡`, `FanTalk`, `ファントーク`를 같은 기능명 표현으로 보고 각 언어의 팬레터 표현으로 통일한다. | 사용자 A안 선택 | `I18N-FANLETTER-001~003`, `P1-T1` |
|
||||
| 2026-08-14 | `DEC-002` | 확정 | 변경 범위는 string resource 값으로 한정하고 코드 식별자와 과거 문서 이력은 변경하지 않는다. | 사용자 요청이 `string resource` 변경이며 최소 변경 원칙을 적용 | `I18N-FANLETTER-004`, `P1-GATE` |
|
||||
Reference in New Issue
Block a user