모바일 프로그래밍/IOS참고자료

[참고자료] Locale Identifier 관련 리스트 링크 및 사용 예제

Dannian 2021. 11. 17. 12:25
반응형

 

iOS Locale Identifiers

iOS Locale Identifiers. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

국가별 대응하다보니 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를 기준으로 개발을 하고 있어서 위처럼 사용하고 있습니다.

반응형