2025-09-04 13:01:40 +09:00
|
|
|
# DS_L10N
|
|
|
|
|
|
2025-10-29 13:32:42 +09:00
|
|
|
던전스토커즈 다국어 번역 통합 툴
|
|
|
|
|
|
|
|
|
|
## 🚀 빠른 시작
|
|
|
|
|
|
|
|
|
|
### 1. 라이브러리 설치
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 2. 배치 파일로 실행 (권장)
|
|
|
|
|
|
|
|
|
|
더블클릭으로 실행:
|
|
|
|
|
|
|
|
|
|
- `1_미번역추출.bat` - 미번역 항목 추출
|
|
|
|
|
- `2_번역검증.bat` - 번역 검증 (신규)
|
|
|
|
|
- `3_PO업데이트.bat` - PO 파일 업데이트
|
|
|
|
|
- `4_CSV병합.bat` - CSV 병합
|
|
|
|
|
- `5_파일정리.bat` - 파일 정리 (신규)
|
|
|
|
|
- `전체워크플로우.bat` - 2~5 자동 실행
|
|
|
|
|
|
|
|
|
|
### 3. 명령어로 실행
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
python ds_l10n.py extract # 미번역 추출
|
|
|
|
|
python ds_l10n.py validate # 번역 검증
|
|
|
|
|
python ds_l10n.py update # PO 업데이트
|
|
|
|
|
python ds_l10n.py merge # CSV 병합
|
|
|
|
|
python ds_l10n.py cleanup # 파일 정리
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 📚 상세 가이드
|
|
|
|
|
|
|
|
|
|
자세한 사용법은 [`사용가이드.md`](사용가이드.md) 참조
|
|
|
|
|
|
|
|
|
|
## ✨ 주요 개선사항
|
|
|
|
|
|
|
|
|
|
### 기존 문제점
|
|
|
|
|
- ❌ 매번 파일/폴더 선택이 번거로움
|
|
|
|
|
- ❌ 번역 오류 사전 검증 불가
|
|
|
|
|
- ❌ po_update_from_tsv.py 가끔 오류 발생
|
|
|
|
|
- ❌ 결과물 파일이 너무 많이 쌓임
|
|
|
|
|
|
|
|
|
|
### 개선된 기능
|
|
|
|
|
- ✅ **자동 경로 인식** (config.yaml)
|
|
|
|
|
- ✅ **번역 검증 기능** (변수, 태그, 줄바꿈 확인)
|
|
|
|
|
- ✅ **polib 기반 안정적 업데이트**
|
|
|
|
|
- ✅ **컬러 로그** (오류 원인 명확히 표시)
|
|
|
|
|
- ✅ **자동 백업** (업데이트 전)
|
|
|
|
|
- ✅ **자동 파일 정리** (오래된 파일 보관)
|
|
|
|
|
|
|
|
|
|
## 📁 프로젝트 구조
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
DS_L10N/
|
|
|
|
|
├── ds_l10n.py # 메인 CLI 툴
|
|
|
|
|
├── config.yaml # 설정 파일
|
|
|
|
|
├── 번역업데이트.tsv # 번역 입력 파일
|
|
|
|
|
├── requirements.txt # 필요 라이브러리
|
|
|
|
|
├── 사용가이드.md # 상세 매뉴얼
|
|
|
|
|
│
|
|
|
|
|
├── 1_미번역추출.bat # 배치 스크립트
|
|
|
|
|
├── 2_번역검증.bat
|
|
|
|
|
├── 3_PO업데이트.bat
|
|
|
|
|
├── 4_CSV병합.bat
|
|
|
|
|
├── 5_파일정리.bat
|
|
|
|
|
├── 전체워크플로우.bat
|
|
|
|
|
│
|
|
|
|
|
├── lib/ # 라이브러리 모듈
|
|
|
|
|
│ ├── config_loader.py # 설정 로더
|
|
|
|
|
│ ├── logger.py # 컬러 로깅
|
|
|
|
|
│ ├── validator.py # 번역 검증
|
|
|
|
|
│ ├── po_handler.py # PO 파일 처리
|
|
|
|
|
│ └── file_manager.py # 파일 관리
|
|
|
|
|
│
|
|
|
|
|
├── output/ # 출력 파일 (자동 생성)
|
|
|
|
|
├── logs/ # 로그 파일 (자동 생성)
|
|
|
|
|
├── archive/ # 보관 파일 (자동 생성)
|
|
|
|
|
│
|
|
|
|
|
├── po_extract_untranslated.py # 기존 스크립트 (호환성 유지)
|
|
|
|
|
├── po_update_from_tsv.py # 기존 스크립트 (호환성 유지)
|
|
|
|
|
└── po_merge_to_csv.py # 기존 스크립트 (호환성 유지)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 🔧 설정
|
|
|
|
|
|
|
|
|
|
`config.yaml` 파일에서 경로와 동작 설정:
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
paths:
|
|
|
|
|
unreal_localization: ../WorldStalker/Content/Localization/LocalExport
|
|
|
|
|
output_dir: ./output
|
|
|
|
|
logs_dir: ./logs
|
|
|
|
|
|
|
|
|
|
validation:
|
|
|
|
|
check_variables: true
|
|
|
|
|
check_rich_text_tags: true
|
|
|
|
|
check_newlines: true
|
|
|
|
|
|
|
|
|
|
cleanup:
|
|
|
|
|
keep_recent_files: 5
|
|
|
|
|
auto_archive: true
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 🆚 기존 스크립트와 비교
|
|
|
|
|
|
|
|
|
|
| 기능 | 기존 | 신규 |
|
|
|
|
|
|------|------|------|
|
|
|
|
|
| 미번역 추출 | `po_extract_untranslated.py` | `ds_l10n.py extract` |
|
|
|
|
|
| 번역 검증 | ❌ 없음 | `ds_l10n.py validate` ✨ |
|
|
|
|
|
| PO 업데이트 | `po_update_from_tsv.py` | `ds_l10n.py update` |
|
|
|
|
|
| CSV 병합 | `po_merge_to_csv.py` | `ds_l10n.py merge` |
|
|
|
|
|
| 파일 정리 | ❌ 없음 | `ds_l10n.py cleanup` ✨ |
|
|
|
|
|
| 경로 관리 | GUI 선택 | config.yaml |
|
|
|
|
|
| 로그 | 기본 텍스트 | 컬러 + 아이콘 |
|
|
|
|
|
| 백업 | 수동 | 자동 |
|
|
|
|
|
| 안정성 | 정규식 파싱 | polib 라이브러리 |
|
|
|
|
|
|
|
|
|
|
## 📖 워크플로우
|
|
|
|
|
|
|
|
|
|
### 1단계: 언리얼 에디터
|
|
|
|
|
- 현지화 대시보드 → 텍스트 수집
|
|
|
|
|
- 텍스트 익스포트
|
|
|
|
|
|
|
|
|
|
### 2단계: 미번역 추출
|
|
|
|
|
```bash
|
|
|
|
|
python ds_l10n.py extract
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 3단계: 외부 번역
|
|
|
|
|
- Google AI Studio 번역 앱 사용
|
|
|
|
|
- 결과를 `번역업데이트.tsv`에 저장
|
|
|
|
|
|
|
|
|
|
### 4단계: 번역 검증
|
|
|
|
|
```bash
|
|
|
|
|
python ds_l10n.py validate
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 5단계: PO 업데이트
|
|
|
|
|
```bash
|
|
|
|
|
python ds_l10n.py update
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 6단계: 언리얼 에디터
|
|
|
|
|
- PO 파일 임포트
|
|
|
|
|
- 텍스트 컴파일
|
|
|
|
|
|
|
|
|
|
### 7단계: 사후 관리
|
|
|
|
|
```bash
|
|
|
|
|
python ds_l10n.py merge # CSV로 백업
|
|
|
|
|
python ds_l10n.py cleanup # 파일 정리
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
또는 **4~7단계 자동 실행**:
|
|
|
|
|
```bash
|
|
|
|
|
전체워크플로우.bat
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 💡 팁
|
|
|
|
|
|
|
|
|
|
### GUI 모드 사용
|
|
|
|
|
```bash
|
|
|
|
|
python ds_l10n.py extract --gui
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 시뮬레이션 모드
|
|
|
|
|
```bash
|
|
|
|
|
python ds_l10n.py update --dry-run
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 특정 파일 검증
|
|
|
|
|
```bash
|
|
|
|
|
python ds_l10n.py validate output/untranslated_20251029_123456.tsv
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 🐛 문제 해결
|
|
|
|
|
|
|
|
|
|
### "모듈을 찾을 수 없습니다"
|
|
|
|
|
```bash
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### "PO 파일을 찾을 수 없습니다"
|
|
|
|
|
- `config.yaml`의 경로 확인
|
|
|
|
|
- 언리얼에서 텍스트 익스포트 완료 확인
|
|
|
|
|
|
|
|
|
|
### 업데이트 실패
|
|
|
|
|
- `logs/` 폴더의 최신 로그 파일 확인
|
|
|
|
|
- 실패 원인과 msgctxt 확인
|
|
|
|
|
|
|
|
|
|
## 📄 라이선스
|
|
|
|
|
|
|
|
|
|
Copyright © 2025 OneUniverse. All rights reserved.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
**버전**: 2.0
|
|
|
|
|
**최종 수정**: 2025-01-29
|
|
|
|
|
**작성자**: Claude Code + DS_L10N Team
|