iOS 앱을 개발할 때, 다국어 지원은 중요한 요소 중 하나입니다. 사용자들이 자신의 언어로 앱을 사용할 수 있도록 하는 것은 사용성과 사용자 경험을 향상시키기 위해 필수적입니다.
로컬라이제이션 처리를 할 때, 번역된 문자열을 각각의 인터페이스 파일에 직접 작성하는 대신, SwiftGen을 사용하여 처리할 수 있습니다. SwiftGen은 컴파일 시간에 코드를 생성하여 로컬라이제이션 처리를 더 효율적이고 안전하게 할 수 있도록 도와줍니다.
SwiftGen 소개
SwiftGen은 Swift로 작성된 코드를 생성하는 도구입니다. 다양한 자원 파일들을 읽고, 이를 Swift 코드로 변환하여 앱 개발을 쉽게 할 수 있도록 도와줍니다. 로컬라이제이션 처리는 SwiftGen의 주요 기능 중 하나입니다.
SwiftGen 설치하기
SwiftGen은 CocoaPods 또는 Carthage를 사용하여 설치할 수 있습니다.
CocoaPods를 사용하는 경우, Podfile에 다음과 같이 추가합니다:
pod 'SwiftGen'
Carthage를 사용하는 경우, Cartfile에 다음과 같이 추가합니다:
github "SwiftGen/SwiftGen" ~> 6.0
설치가 완료되면, Xcode의 Build Phase에 SwiftGen을 추가합니다. 다음 스크립트를 추가하여 SwiftGen을 실행하고, 생성된 코드를 앱에 추가할 수 있습니다:
"$PODS_ROOT/SwiftGen/bin/swiftgen" xcassets [경로]/Assets.xcassets --output [경로]/Generated/Assets.swift
"$PODS_ROOT/SwiftGen/bin/swiftgen" strings [경로]/Localizable.strings --output [경로]/Generated/Localizable.swift
로컬라이제이션 처리하기
로컬라이제이션 처리를 위해 다음 세 가지 단계를 수행해야 합니다.
1. Localizable.strings 파일 작성
먼저, 로컬라이제이션에 사용할 문자열을 담은 Localizable.strings
파일을 작성해야 합니다. 이 파일에는 기본 언어와 각 언어에 대한 번역된 문자열 쌍을 작성합니다. 예를 들어, 다음과 같은 형식으로 작성할 수 있습니다:
"welcome_message" = "환영합니다.";
"greeting" = "안녕하세요, %@님.";
"error_message" = "오류가 발생했습니다.";
위의 예시에서 %@
는 문자열 형식 지정자로, 해당 위치에 동적으로 값이 들어갈 수 있음을 나타냅니다.
2. Localizable.swift 파일 생성
SwiftGen을 이용하여 Localizable.swift
파일을 생성합니다. 이 파일은 Localizable.strings
파일의 각 번역된 문자열에 대한 정적 상수를 제공합니다.
import Foundation
enum Localizable {
enum Common {
static let welcomeMessage = L10n.tr("welcome_message")
static func greeting(_ name: String) -> String {
return L10n.tr("greeting", name)
}
static let errorMessage = L10n.tr("error_message")
}
}
L10n
은 SwiftGen이 자동으로 생성한 코드로, tr
함수를 통해 각 문자열에 접근할 수 있습니다.
3. 로컬라이징된 문자열 사용
로컬라이징된 문자열을 사용할 때는, Localizable.swift
파일에서 제공하는 정적 상수를 사용하면 됩니다.
welcomeLabel.text = Localizable.Common.welcomeMessage
greetingLabel.text = Localizable.Common.greeting(userName)
errorMessageLabel.text = Localizable.Common.errorMessage
위의 예시에서 welcomeLabel
, greetingLabel
, errorMessageLabel
은 각각 해당 문자열을 표시할 UI 요소입니다.
로컬라이제이션 처리를 위해 SwiftGen을 사용하면, 문자열 오타나 잘못된 키 사용으로 인한 오류를 사전에 방지할 수 있습니다. 또한, 문자열을 변경하거나 추가할 때마다 다른 코드에서 사용되는 문자열을 자동으로 갱신해주므로, 유지 보수도 편리합니다.
결론
SwiftGen을 활용하여 로컬라이제이션 처리를 간편하고 안전하게 할 수 있습니다. 문자열 파일 작성, 코드 생성, 문자열 사용의 세 단계를 따르면서 앱의 다국어 지원을 향상시킬 수 있습니다. SwiftGen은 번거로운 작업을 줄여주고, 오류를 최소화하여 앱 개발을 보다 쉽고 효율적으로 할 수 있도록 도와줍니다.