[TIL] Localization

박주하·2025년 7월 1일
0

다국어 지원


앱을 사용하는 사용자의 언어 설정에 따라 UI 문자열, 날짜, 통화 등을 자동으로 해당 언어로 보여주는 기능

  • 한국어 → "설정"
  • 영어 → "Settings"
  • 일본어 → "設定"

구현 순서

  1. Localizable.strings 파일 만들기
  2. 다국어 문자열 등록
  3. NSLocalizedString 또는 String(localized:)으로 문자열 사용

1. Localizable.strings 파일 생성

  • Xcode 프로젝트에서 File > New > File > Strings File 선택
  • 이름을 Localizable.strings로 지정
  • 생성 후, 파일 선택 > File Inspector > Localize 버튼 클릭
  • 원하는 언어(예: English, Korean, Japanese 등) 추가
// 이렇게 생긴 구조가 생김
Localizable.strings (Base)
Localizable.strings (English)
Localizable.strings (Korean)
Localizable.strings (Japanese)

2. 문자열 등록

아래처럼 각 파일에 등록

// Localizable.strings (English)
"hello" = "Hello!";
"settings" = "Settings";

// Localizable.strings (Korean)
"hello" = "안녕하세요!";
"settings" = "설정";

// Localizable.strings (Japanese)
"hello" = "こんにちは!";
"settings" = "設定";

3-1. 코드에서 NSLocalizedString 사용

let greeting = NSLocalizedString("hello", comment: "인사 메시지")
label.text = greeting  // 설정된 언어에 따라 자동 표시
  • "hello"은 키 값
  • comment:는 Xcode에서 번역가가 이해할 수 있도록 돕기 위한 설명(실제 앱에는 노출되지 않음)

3-2. 코드에서 String(localized:) 사용

let greeting = String(localized: "hello")
label.text = greeting

NSLocalizedString vs String(localized:) 차이

항목NSLocalizedStringString(localized:)
형태함수 기반Swift 초기화 구문
지원 버전iOS 2.0 이상✅ iOS 15+
SwiftUI 친화성보통매우 좋음
다국어 테이블지원지원
타입 안정성낮음높음

💡 날짜, 숫자, 통화 자동 변환 (예: DateFormatter)

let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.locale = Locale.current   // 현재 사용자의 언어 설정 반영

0개의 댓글