반응형
국가별 대응하다보니 Language와 Region 리스트가 필요하게 되었고, 위의 리스트를 찾아서 사용하게 되었습니다.
제가 개발하는 앱은 기본적으로 Device Locale을 이용하고, 코드는 다음과 같이 사용합니다.
public enum LocaleCodeEnum: String {
// ko-KR
case kr = "kr"
// en-US
case others = "us" // 모든 언어 번역이 안되어 있거나, 국가별 서비스 정책이 명확히 안 정해진 상태일 경우 default는 us로 잡아둠.
// ja-JP
case jp = "jp"
}
public enum LanguageCodeEnum: String {
// ko-KR
case korean = "ko"
// en-US
case english = "en" // 모든 언어 번역이 안 되어있는 상태일 경우 default는 en으로 잡아둠.
// ja-JP
case japanese = "ja"
}
/// 사용 지역 Return
public func getDeviceLocale() -> LocaleCodeEnum {
guard let reg = NSLocale.current.regionCode else {
return .others
}
NSLog("LOCALE :: Device REGION: \(reg)")
if reg.lowercased().elementsEqual(LocaleCodeEnum.kr.rawValue) {
return .kr
} else if reg.lowercased().elementsEqual(LocaleCodeEnum.jp.rawValue) {
return .jp
} else {
return .others
}
}
/// 사용되는 언어 Return
public func getDeviceLanguage() -> LanguageCodeEnum {
guard let lang = NSLocale.current.languageCode else {
return .english
}
NSLog("LOCALE :: Device LANGUAGE: \(lang)")
if lang.lowercased().elementsEqual(LanguageCodeEnum.korean.rawValue) {
return .korean
} else if lang.lowercased().elementsEqual(LanguageCodeEnum.japanese.rawValue) {
return .japanese
} else {
return .english
}
}
중국과 같이 특이한 정책을 자체적으로 고수하는 케이스가 아니라면 현재는 기본을 en-US를 기준으로 개발을 하고 있어서 위처럼 사용하고 있습니다.
반응형
'모바일 프로그래밍 > IOS참고자료' 카테고리의 다른 글
[CocoaPods] Error : You may have encountered a bug in the Ruby interpreter or extension libraries. (0) | 2022.03.22 |
---|---|
[ReactorKit] 기초 정리 (0) | 2021.11.23 |
[Swift] MarkUp 정리 (0) | 2021.11.05 |
[Swift] Architecture - MVVM Pattern(예제들 포함) (작성 중) (0) | 2021.08.25 |
[Swift] Reference to generic type 'Map' requires arguments in <…> (Realm, ObjectMapper 동시 사용시) (0) | 2021.08.09 |