32 lines
1.7 KiB
Markdown
32 lines
1.7 KiB
Markdown
# i18n (다국어 지원) 개발 가이드라인
|
|
|
|
Kord 봇의 모든 유저 노출 기능은 글로벌 시장 대응을 위해 다국어 지원(Internationalization)을 필수로 합니다.
|
|
|
|
## 기본 원칙
|
|
|
|
1. **상시 검토**: 사용자의 명시적인 요청이 없더라도, 유저에게 노출되는 모든 텍스트(메시지, 임베드, 버튼 라벨, 상태 메시지 등)는 i18n 적용 대상입니다.
|
|
2. **하드코딩 금지**: 소스 코드 내에 유저 노출 문자열을 직접 작성하지 마십시오. 반드시 `src/i18n/` 시스템을 사용해야 합니다.
|
|
3. **로케일 우선순위**: `resolveLocale()`을 사용하여 유저 설정 -> 서버 설정 -> 클라이언트 언어 -> 기본 언어(English) 순으로 언어를 결정합니다.
|
|
|
|
## 구현 단계
|
|
|
|
### 1. 키 정의
|
|
- `src/i18n/types.ts`의 `TranslationSchema` 인터페이스에 새로운 구조를 추가합니다.
|
|
|
|
### 2. 번역 데이터 작성
|
|
- `src/i18n/locales/en.ts` (기본 언어, 필수 작성)
|
|
- `src/i18n/locales/ko.ts` (한국어 지원 시 작성)
|
|
|
|
### 3. 코드 연동
|
|
- `t(locale, 'key', { vars })` 함수를 사용하여 번역된 문자열을 가져옵니다.
|
|
|
|
## 테스트 코드 준수 사항
|
|
|
|
테스트 코드에서도 번역된 문자열을 비교할 때는 하드코딩 대신 i18n 시스템을 참조해야 합니다.
|
|
|
|
- **검사 방법**: `npm run check-i18n` 명령어를 실행하여 하드코딩된 i18n 값이 있는지 확인합니다.
|
|
- **예외 처리**: 의도적으로 하드코딩이 필요한 경우(예: i18n 자체 테스트), 해당 줄 끝에 `// i18n-ignore` 주석을 추가합니다.
|
|
|
|
## 변경 이력
|
|
- **2026-03-27**: i18n 필수 적용 원칙 수립 및 가이드라인 생성
|