이번 글에서는 iOS 앱에서 다국어(Localization) 지원을 구현하는 방법을 설명합니다.
SwiftUI 기반의 가계부 앱을 한국어/영어 사용자 모두 사용할 수 있도록 설계하여 글로벌 접근성을 높입니다.
1. 다국어 지원의 필요성
- iOS는
Locale
기반으로 앱 언어를 자동 설정 - 글로벌 사용자 확보를 위해 반드시 고려해야 할 기능
- App Store 심사 통과에도 긍정적 영향
2. Localizable.strings 파일 생성
Xcode에서 다국어를 적용하려면 다음 순서를 따릅니다:
Localizable.strings
파일 생성File Inspector
에서 해당 파일의Localization
항목에서 “Korean”과 “English” 추가- 각 언어별
.strings
파일에 대응되는 번역 추가
예시:
Localizable.strings (Korean):
settings_tab = "설정";
income = "수입";
expense = "지출";
all = "전체";
Localizable.strings (English):
settings_tab = "Settings";
income = "Income";
expense = "Expense";
all = "All";
3. NSLocalizedString 사용 예
문자열을 직접 입력하지 않고 NSLocalizedString을 사용하여 다국어 처리를 합니다:
Text(NSLocalizedString("income", comment: "수입"))
.font(.system(size: 15, weight: .regular))
이렇게 하면 시스템 언어에 따라 자동으로 수입/Income 으로 변경됩니다.
4. Picker, Alert, Label 등 다국어 적용
다국어는 화면 내 텍스트뿐만 아니라 다음 UI 요소에도 동일하게 적용됩니다:
- Picker의 tag 값과 label
- Alert 버튼 및 메시지
- NavigationBar 타이틀
- SegmentedPicker 항목
예시:
Picker("Type", selection: $selectedType) {
Text(NSLocalizedString("all", comment: "전체")).tag(NSLocalizedString("all", comment: "전체"))
Text(NSLocalizedString("income", comment: "수입")).tag(NSLocalizedString("income", comment: "수입"))
Text(NSLocalizedString("expense", comment: "지출")).tag(NSLocalizedString("expense", comment: "지출"))
}
5. 저장된 데이터와 다국어 분리
중요: 데이터베이스에 저장되는 값(ex: 카테고리 이름)은 번역된 문자열이 아닌 “원래 언어”로 저장되어야 합니다.
앱 내부 UI에서만 NSLocalizedString을 활용해야 혼란이 없습니다.
잘못된 예:
// ❌ 저장할 때 번역된 문자열 사용
category.type = NSLocalizedString("income", comment: "")
올바른 예:
// ✅ 저장은 고정된 내부 코드 사용
category.type = "income" // 저장
Text(NSLocalizedString("income", comment: "")) // UI 출력
6. 언어 전환 테스트 방법
- iOS 시뮬레이터 또는 기기 설정에서 언어 변경
- 앱 강제 종료 후 재실행
- UI가 정상적으로 변환되는지 확인
8. 마무리
이번 편에서는 SwiftUI 앱에서의 다국어(Localization) 적용 방법을 자세히 다루었습니다.
SwiftUI 가계부 앱 개발기 8편 – iOS 앱 배포를 위한 설정: App Store 심사 준비에서는 iOS 앱 배포 준비 및 App Store 심사 통과를 위한 설정을 안내합니다.
시리즈 목록
- SwiftUI 가계부 앱 개발기 1편 – 프로젝트 생성과 폴더 구조 설계
- SwiftUI 가계부 앱 개발기 2편 – Core Data 모델 구성과 Entity 설계
- SwiftUI 가계부 앱 개발기 3편 – 필터 기능 구현
- SwiftUI 가계부 앱 개발기 4편 – 카테고리 관리 기능 구현
- SwiftUI 가계부 앱 개발기 5편 – 카드 관리 기능: 결제일 및 청구 주기 설정
- SwiftUI 가계부 앱 개발기 6편 – 통계 화면 구성: 월별 그래프 및 유형별 정리
- SwiftUI 가계부 앱 개발기 7편 – 다국어(Localization) 지원: 한국어/영어 국제화 처리
- SwiftUI 가계부 앱 개발기 8편 – iOS 앱 배포를 위한 설정: App Store 심사 준비
- SwiftUI 가계부 앱 개발기 9편 – UI 개선 및 사용자 경험(UX) 향상 전략