iOS에서 현재 장치 언어를 가져 오십니까?


431

장치 UI가 사용하는 현재 언어를 보여주고 싶습니다. 어떤 코드를 사용해야합니까?

나는 이것을 NSString완전히 철자 된 형식 으로 원합니다 . (@ "en_US"아님)

편집 : 새로운 iOS 릴리스로 답변이 발전함에 따라 여기에 많은 도움이되는 의견이 있습니다.


1
이것은에 내장되어 NSLocale있습니다. 내 대답을 참조하십시오.
Erik B

15
iOS9 의견 : 이상한 이유로 Apple이에서 반환 한 형식을 변경했다는 사실에주의를 기울이십시오 [NSLocale preferredLanguages]. 예를 들어 밑줄로 구분 en_US되었으나 이제 대시로 변경되었습니다.en-US
ishahak

7
iOS9 시뮬레이터에 대한 추가 정보 : iOS 8.4 시뮬레이터와 9.0 시뮬레이터에서 [NSLocale preferredLanguages]를 가져 오는 것도 불일치가 있습니다. 아이폰 OS 8.4에 그것은 "EN-US"입니다 아이폰 OS 9.0 "EN"이고
크리스 Subramanian

이 의견은 저에게 많은 도움이되었습니다! 우리는 귀하의 의견을 볼 때까지 약 1 시간 동안 무엇이 잘못되었는지 궁금해하는 간단한 문제로 고착되었습니다.
thandasoru

3
NSLocale메소드가 componentsFromLocaleIdentifier:있으며 localeIdentifierFromComponents:(잠재적으로 변경 가능한) 형식을 처리하는 올바른 방법 일 것입니다.
Benjohn

답변:


808

제공된 솔루션은 실제로 현재 선택된 언어가 아닌 장치의 현재 영역을 반환합니다. 이들은 종종 하나이며 동일합니다. 그러나 내가 북미에 있고 언어를 일본어로 설정하면 내 지역은 여전히 ​​영어 (미국)가됩니다. 현재 선택된 언어를 검색하려면 다음을 수행하십시오.

NSString * language = [[NSLocale preferredLanguages] firstObject];

현재 선택된 언어에 대한 두 글자 코드를 반환합니다. 영어의 경우 "en", 스페인어의 경우 "es", 독일어의 경우 "de"등이 있습니다. 자세한 예는 다음 Wikipedia 항목 (특히 639-1 열)을 참조하십시오.

ISO 639-1 코드 목록

그런 다음 두 문자 코드를 표시하려는 문자열로 변환하는 것이 간단합니다. "en"이면 "English"를 표시하십시오.

이것이 지역과 현재 선택된 언어를 구별하려는 사람에게 도움이되기를 바랍니다.

편집하다

NSLocale.h에서 헤더 정보를 인용 할 가치가 있습니다.

+ (NSArray *)preferredLanguages NS_AVAILABLE(10_5, 2_0); // note that this list does not indicate what language the app is actually running in; the [NSBundle mainBundle] object determines that at launch and knows that information

앱 언어에 관심이있는 사람들은 @mindvision의 답변을 살펴보십시오.


2
정확히 내가 찾던 것. 지역이 언어와 동일하지 않은 동일한 문제가있었습니다.
Jasarien

12
나쁜 대답 : 중국어에 대해 zh-Hans를 반환하며 iso 코드는 아닙니다.
cyrilchampier

2
처음 두 문자는 국가를, 대시 뒤에는 영역을 제공하고 나머지는 지역을 더 좁히기위한 것입니다 (예 : 지역 방언). zh는 중국어의 ISO 코드로 표시됩니다. 나와 같은 특정 언어를 찾는 사람들을 위해 IANA Registry
Xono

3
zh-Hans가 유일한 예외입니까 아니면 ISO 639-1 표준과 다른 언어 코드가 있습니까?
MPaulo

57
경고 : iOS 9 에서는 반환 값이NSLocale preferredLanguages변경되었습니다. "en"만 받기 전에 iOS 9에서는 "en-US"또는 "en-JP"등이 표시됩니다. 참조 : happyteamlabs.com/blog/…
Dj S

281

선택한 답변은 현재 장치 언어를 반환하지만 앱에서 사용 된 실제 언어는 반환하지 않습니다. 앱에서 사용자가 선호하는 언어로 현지화를 제공하지 않으면 사용자가 선호하는 순서대로 정렬 된 첫 번째 현지화가 사용됩니다.

현지화에서 선택한 현재 언어를 찾으려면

[[NSBundle mainBundle] preferredLocalizations];

예:

NSString *language = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];

빠른:

let language = NSBundle.mainBundle().preferredLocalizations.first as NSString

훌륭합니다. 이것도 제가 관심을 보인 것입니다. 테스트되었으며 올바르게 작동합니다!
smileyborg

5
완전한! 내 앱이 선호하는 순서로 현지화 된 원격 리소스 경로를 구성 할 수 있습니다.
Yevhen Dubinin

이 후에 전체 언어 이름을 얻으려면 어떻게해야합니까?
Shabarinath Pabba

preferredLocalization에서 전체 언어 이름을 가져 오려면 [[NSLocale alloc] initWithLocaleIdentifier : language] (위에서)를 사용할 수 있습니다. 그런 다음 로케일이 있고 displayNameForKey를 호출 할 수 있습니다.
Vanessa Forney

87

iOS 9 용 솔루션 :

NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];

언어 = "en-US"

NSDictionary *languageDic = [NSLocale componentsFromLocaleIdentifier:language];

languageDic은 필요한 구성 요소를 갖습니다

NSString *countryCode = [languageDic objectForKey:@"kCFLocaleCountryCodeKey"];

countryCode = "미국"

NSString *languageCode = [languageDic objectForKey:@"kCFLocaleLanguageCodeKey"];

languageCode = "en"


5
kCFLocaleLanguageCodeKey 는 고유 한 문자열을 만드는 대신 사용할 수있는 정의 된 상수입니다.
SNyamathi

1
NSLocaleLanguageCode = @ "kCFLocaleCountryCodeKey"
까마귀

@ "kCFLocaleCountryCodeKey", @ "kCFLocaleLanguageCodeKey"에 대해 NSLocaleCountryCode 및 NSLocaleLanguageCode를 사용하십시오.
crow

65

이것은 아마도 당신이 원하는 것을 줄 것입니다 :

NSLocale *locale = [NSLocale currentLocale];

NSString *language = [locale displayNameForKey:NSLocaleIdentifier 
                                         value:[locale localeIdentifier]];

언어 자체의 언어 이름이 표시됩니다. 예를 들면 다음과 같습니다.

Français (France)
English (United States)

31
잘못 대답이 돌아 로케일이 아닌 다를 수 있습니다 언어, ...
cyrilchampier

4
예를 들어 전화 설정의 언어를 영어로 설정하고 독일어, 독일을 말할 수 있도록 지역 형식을 설정 한 경우 위의 예는 "독일어"를 반환합니다. 여전히 전화 언어는 영어로 설정되어 있습니다.
jake_hetfield

2
이것은 전혀 잘못이 아닙니다. 로캘에는 언어 및 지역 정보가 모두 포함되어 있습니다. 따라서 @jake_hetfield의 예에서는 "German"을 반환하지 않고 "English (Germany)"를 반환합니다. 이것은 dreamlab의 답변과 결합 된 정답이어야합니다.
SeanR

36

경고허용되는 답변과 다른 답변은 모두 선호 언어가 장치 언어 이외의 다른 언어 일 수 있다는 점을 고려하지 않습니다 .

장치 언어는 운영 체제 요소와 애플의 애플 리케이션을 제시하는 언어입니다.

선호하는 언어는 사용자가 애플 만 번역의 제한된 집합을 제공합니다. 현지화 애플 리케이션을하고 싶은 언어입니다. 선호하는 언어가 Apple이 앱을 번역 한 언어 인 경우 장치 언어이기도합니다. 그러나 사용자가 Apple에서 번역을 제공하지 않는 언어를 선호하는 경우 기기와 선호하는 언어가 일치하지 않습니다 . 장치 언어는 기본 언어 목록에서 첫 번째 위치에 있지 않습니다.

다음 함수는 기본 언어 목록을 살펴보고 Apple 프레임 워크에 번역이 있는지 확인합니다. 번역 할 첫 번째 언어는 장치 언어입니다. 함수는 언어 코드를 반환합니다.

func deviceLanguage() -> String? {
    let systemBundle: NSBundle = NSBundle(forClass: UIView.self)
    let englishLocale: NSLocale = NSLocale(localeIdentifier: "en")

    let preferredLanguages: [String] = NSLocale.preferredLanguages()

    for language: String in preferredLanguages {
        let languageComponents: [String : String] = NSLocale.componentsFromLocaleIdentifier(language)

        guard let languageCode: String = languageComponents[NSLocaleLanguageCode] else {
            continue
        }

        // ex: es_MX.lproj, zh_CN.lproj
        if let countryCode: String = languageComponents[NSLocaleCountryCode] {
            if systemBundle.pathForResource("\(languageCode)_\(countryCode)", ofType: "lproj") != nil {
                // returns language and country code because it appears that the actual language is coded within the country code aswell
                // for example: zh_CN probably mandarin, zh_HK probably cantonese
                return language
            }
        }

        // ex: English.lproj, German.lproj
        if let languageName: String = englishLocale.displayNameForKey(NSLocaleIdentifier, value: languageCode) {
            if systemBundle.pathForResource(languageName, ofType: "lproj") != nil {
                return languageCode
            }
        }

        // ex: pt.lproj, hu.lproj
        if systemBundle.pathForResource(languageCode, ofType: "lproj") != nil {
            return languageCode
        }
    }

    return nil
}

선호하는 언어 목록이 다음과 같은 경우에 작동합니다.

  1. 아프리칸스어 (iOS는 아프리칸스어로 번역되지 않음)
  2. 스페인어 (장치 언어)

선호하는 언어 목록이 될 수 편집 : Settings.app -> 일반 -> 언어 및 지역 -> 기본 언어 주문


장치 언어 코드를 사용하여 언어 이름으로 변환 할 수 있습니다. 다음 줄은 장치 언어로 장치 언어를 인쇄합니다. 예를 들어 장치가 스페인어로 설정된 경우 "Español"

if let deviceLanguageCode: String = deviceLanguage() {
    let printOutputLanguageCode: String = deviceLanguageCode
    let printOutputLocale: NSLocale = NSLocale(localeIdentifier: printOutputLanguageCode)

    if let deviceLanguageName: String = printOutputLocale.displayNameForKey(NSLocaleIdentifier, value: deviceLanguageCode) {
        // keep in mind that for some localizations this will print a language and a country
        // see deviceLanguage() implementation above
        print(deviceLanguageName)
    }
} 

내 이해는 번들 인스턴스를 초기화하여 NSBundle(forClass: UIView.self)주어진보기에 가장 구체적인 언어를 제공하려고한다는 것입니다. 그러나 이것을 사용하면 주어진 클래스의 언어가 반환되지 않는 문제가 발생했습니다. 초기화를 변경하고 NSBundle.mainBundle()예상 언어 코드를 반환했습니다.
palmi

명확한 설명 : 함께 번들 초기화 mainBundle()나타납니다하기위한 헤더에 제안 애플에서 권장하는 하나가 NSLocale, // note that this list does not indicate what language the app is actually running in; the [NSBundle mainBundle] object determines that at launch and knows that information.
palmi

@Pouria NSBundle.mainBundle()는 앱 번들을 NSBundle(forClass: UIView.self)반환하고 시스템 UIKit 번들을 반환합니다. 설명 된 방법은 번들에서 디렉토리를 찾습니다. 앱 번들에는 현지화하려는 언어의 언어 만 포함됩니다. 장치 언어를 확인하려면 시스템 번들을 확인해야합니다.
dreamlab

1
@Pouria 문제는 iOS 9가에서 반환 값을 변경했다는 것 NSLocale.preferredLanguages()입니다. 나는 아이폰 OS 9 지원하는 대답을 업데이트 .
dreamlab

@dreamlab 불행히도이 방법은 포드와 같은 타사 구성 요소를 프로젝트 설정에서 지원하지 않는 현지화와 함께 포함 할 때 잘못된 결과를 제공합니다.
kokoko

12

나는 이것을 사용한다

    NSArray *arr = [NSLocale preferredLanguages];
for (NSString *lan in arr) {
    NSLog(@"%@: %@ %@",lan, [NSLocale canonicalLanguageIdentifierFromString:lan], [[[NSLocale alloc] initWithLocaleIdentifier:lan] displayNameForKey:NSLocaleIdentifier value:lan]);
}

메모리 누수를 무시하십시오.

결과는

2013-03-02 20:01:57.457 xx[12334:907] zh-Hans: zh-Hans 中文(简体中文)
2013-03-02 20:01:57.460 xx[12334:907] en: en English
2013-03-02 20:01:57.462 xx[12334:907] ja: ja 日本語
2013-03-02 20:01:57.465 xx[12334:907] fr: fr français
2013-03-02 20:01:57.468 xx[12334:907] de: de Deutsch
2013-03-02 20:01:57.472 xx[12334:907] nl: nl Nederlands
2013-03-02 20:01:57.477 xx[12334:907] it: it italiano
2013-03-02 20:01:57.481 xx[12334:907] es: es español

호기심을 위해서 메모리 누수가 어디에 있습니까?
Can Poyrazoğlu

누출-[[[NSLocale alloc] initWithLocaleIdentifier : lan].
Pavel

1
ARC 이외의 프로젝트에만 해당됩니다.
Josh Hinman

12

같은 번역 언어 코드 ko 페이지영어 (미국) a는의 기능이 내장되어 NSLocaleNSLocale당신의 언어 코드를 얻을 경우 상관하지 않는다. 따라서 받아 들여진 대답에서 알 수 있듯이 자신의 번역을 구현할 이유가 없습니다.

// Example code - try changing the language codes and see what happens
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en"];
NSString *l1 = [locale displayNameForKey:NSLocaleIdentifier value:@"en"];
NSString *l2 = [locale displayNameForKey:NSLocaleIdentifier value:@"de"];
NSString *l3 = [locale displayNameForKey:NSLocaleIdentifier value:@"sv"];
NSLog(@"%@, %@, %@", l1, l2, l3);

인쇄 : 영어, 독일어, 스웨덴어


1
실제로 [NSLocale autoupdatingCurrentLocale]을 사용하여 로캘 인스턴스를 초기화해야합니다. 그렇게하면 언어 이름이 사용자 모국어로 표시됩니다. 예를 들어 스웨덴어는 Svenska가됩니다.
Maciej Swic

8

현재 장치 언어를 얻는 더 좋은 방법이 있습니다. 아래 코드로 시도해보십시오-

NSLog(@"Current Language - %@", [[NSLocale preferredLanguages] firstObject]);

에 의해 제안 Abizern여기


7

다음 displayNameForKey:value:방법을 사용할 수 있습니다 NSLocale.

// get a French locale instance
NSLocale *frLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"] autorelease];

// use it to get translated display names of fr_FR and en_US
NSLog(@"%@", [frLocale displayNameForKey:NSLocaleIdentifier value:@"fr_FR"]);
NSLog(@"%@", [frLocale displayNameForKey:NSLocaleIdentifier value:@"en_US"]);

인쇄됩니다 :

français (France)
anglais tats-Unis)

initWithLocaleIdentifier:displayNameForKey:value:메서드에 동일한 로캘 식별자를 지정 하면 언어의 기본 이름이 제공됩니다. 난 당신이 국가 코드를 제거하고 바로 사용하면 것을 발견했습니다 fren, 또한 (확실하지 아이폰 OS에 대해, 적어도 맥 OS X에) 표시 이름에서 국가를 생략 할 것이다.


6

빠른

장치의 현재 언어를 얻으려면

NSLocale.preferredLanguages()[0] as String

응용 프로그램 언어를 얻으려면

NSBundle.mainBundle().preferredLocalizations[0] as NSString

노트 :

info.plist의 CFBundleDevelopmentRegion 에서 제공 한 언어를 가져옵니다.

경우 CFBundleAllowMixedLocalizations이 의의 Info.plist 후 첫 번째 항목에 사실 CFBundleLocalizations 의 Info.plist가 반환됩니다에


6

나는 나에게 맞는 해결책을 찾으려고 노력했다. 사용했을 때 Locale.preferredLanguages.first앱 설정에서 기본 언어가 반환되었습니다.

사용자 장치 설정에서 언어를 알고 싶다면 아래 문자열을 사용해야합니다.

스위프트 3

let currentDeviceLanguage = Locale.current.languageCode
// Will return the optional String

포장을 풀고 사용하려면 아래 줄을보십시오.

if let currentDeviceLanguage = Locale.current.languageCode {
    print("currentLanguage", currentDeviceLanguage)

    // For example
    if currentDeviceLanguage == "he" {
        UIView.appearance().semanticContentAttribute = .forceRightToLeft
    } else {
        UIView.appearance().semanticContentAttribute = .forceLeftToRight
    }
}

이 Bundle.main.preferredLocalizations [0]를 문자열로 사용하면 줄 바꿈 할 필요가 없습니다
μολὼν.λαβέ

5

사용자 장치의 현재 언어를 얻으려면 다음 코드를 사용하십시오.

NSString * myString = [[NSLocale preferredlanguage]objectAtIndex:0];

4

iOS13, 스위프트 5 이상, WWDC2019 https://developer.apple.com/videos/play/wwdc2019/403/

사용자는 OS 언어와 독립적으로 앱의 기본 언어를 선택할 수 있습니다.

다음을 사용할 수 있습니다.

    // Returns a list of the user's preferred languages.
    // Maybe more than (or none of) your app supports!
    Locale.preferredLanguages

    // a subset of this bundle's localizations, re-ordered into the preferred order
    // for this process's current execution environment; the main bundle's preferred localizations
    // indicate the language (of text) the user is most likely seeing in the UI
    Bundle.main.preferredLocalizations



    // The current running app language
    Bundle.main.preferredLocalizations.first

    // list of language names this bundle appears to be localized to
    Bundle.main.localizations

3

MonoTouch C # 개발자는 다음을 사용하십시오.

NSLocale.PreferredLanguages.FirstOrDefault() ?? "en"

참고 : 이것이 iOS 질문이라는 것을 알고 있지만 MonoTouch 개발자 이므로이 페이지의 답변으로 올바른 방향으로 나아 갔으며 결과를 공유 할 것이라고 생각했습니다.


현재 NSLocale.PreferredLanguages를 사용하고 있으며 빈 배열이 나타납니다. 나는 당신이 문서에서 결코 비워지지 않을 것이라고 읽었지만 어디에서도 이것을 볼 수 없다고 가정합니까?
JFoulkes

아니, 솔직히 그것은 내 자신의 가정이었습니다.
척 새비지

@LarryF이 비디오보기 : jonas.follesoe.no/2011/07/22/cross-platform-mobile-ndc-2011 코드 / 멀티 플랫폼 앱을 구성하는 방법에 대해 매우 유익합니다.
척 새비지

3

에서 Swift:

let languageCode = NSLocale.currentLocale().objectForKey(NSLocaleLanguageCode) as? String

3

스위프트 3

let locale = Locale.current
let code = (locale as NSLocale).object(forKey: NSLocale.Key.countryCode) as! String?
print(code!)

스택 오버플로에 오신 것을 환영합니다! 이 코드는 질문에 대답 할 수 있지만 문제의 내용과 코드가 주어진 문제를 해결하는 방법에 대한 설명을 포함하는 것이 좋습니다. 앞으로 스택 오버플로 에서 멋진 답변 을 얻는 방법에 대한 정보가 있습니다 .
dirtydanee

3

간단한 스위프트 3 기능 :

  @discardableResult
  func getLanguageISO() -> String {
    let locale = Locale.current
    guard let languageCode = locale.languageCode,
          let regionCode = locale.regionCode else {
        return "de_DE"
    }
    return languageCode + "_" + regionCode
  }

3

선호하는 언어 코드 ( "en", "de", "es"...) 및 현지화 된 선호 언어 이름 (현재 로케일)을 찾고있는 경우 Swift의 간단한 확장은 다음과 같습니다.

extension Locale {
static var preferredLanguageIdentifier: String {
    let id = Locale.preferredLanguages.first!
    let comps = Locale.components(fromIdentifier: id)
    return comps.values.first!
}

static var preferredLanguageLocalizedString: String {
    let id = Locale.preferredLanguages.first!
    return Locale.current.localizedString(forLanguageCode: id)!
}

}


2
-(NSString *)returnPreferredLanguage { //as written text

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
NSArray *preferredLanguages = [defaults objectForKey:@"AppleLanguages"];
NSString *preferredLanguageCode = [preferredLanguages objectAtIndex:0]; //preferred device language code
NSLocale *enLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en"]; //language name will be in English (or whatever)
NSString *languageName = [enLocale displayNameForKey:NSLocaleIdentifier value:preferredLanguageCode]; //name of language, eg. "French"
return languageName;

}

2

당신이 여기에 언어를 원한다면 내 대답은 다음과 같습니다.

NSString *langplusreg = [[NSLocale preferredLanguages] objectAtIndex:0];
NSString * langonly = [[langplusreg componentsSeparatedByString:@"-"] 
objectAtIndex:0];

제 경우에는 로캘 지역이 아닌 로캘 언어 만 원했습니다.

출력 : 로케일 언어가 일본어이고 로케일 지역이 일본인 경우 :

langplusreg = ja-JP

langonly = ja


1

스위프트의 @amir 응답 :

// Get language prefered by user
    let langageRegion = NSLocale.preferredLanguages().first!
    let languageDic = NSLocale.componentsFromLocaleIdentifier(langageRegion)
    let language = languageDic[NSLocaleLanguageCode]

1

분명히, 예를 들어

[[NSLocale preferredLanguages] objectAtIndex:0]

일반적으로 잘 작동하고 현재 장치 언어를 반환합니다.

그러나 어떤 경우에는 오해의 소지가 있습니다.

이 값을 얻으려는 앱이 이미 이러한 종류의 코드로 언어를 변경 한 경우 :

NSString *lg = @"en"; // or anything like @"en", @"fr", etc.
[[NSUserDefaults standardUserDefaults] 
    setObject:[NSArray arrayWithObjects:lg, nil]  
    forKey:@"AppleLanguages"]

이 경우 [NSLocale preferredLanguages] 는 현재 장치 언어가 아니라이 특정 앱에서 선호하는 언어 세트 (및 사용 된 언어)를 실제로 반환합니다!

그리고 ...이 경우 실제 현재 장치 언어를 올바르게 얻는 유일한 방법은 (이전에 앱에서 설정되지 않은) NSUserDefaults에서 다음과 같이 @ "appleLanguages"키를 지우는 것입니다.

[[NSUserDefaults standardUserDefaults]removeObjectForKey:@"AppleLanguages"];

그런 다음 [NSLocale preferredLanguages]가 올바른 값을 반환합니다.

이 도움을 바랍니다.


1

Swift 4에 대한 업데이트 된 답변

let language = Bundle.main.preferredLocalizations.first

이렇게하면 사용 가능한 (번들에 의해 지원되는 ) 현지화 (사용자가 선호 ) 의 집계 된 목록을 가져옵니다 . NSLocale.preferredLanguages번들에서 지원하는 항목에 대한 비용을 지불하지 않고 사용자가 선호하는 항목을 반환해야합니다.
Jonny

1

Swift 3.0의 경우 아래 코드를 사용하여 질문에 대답 할 수 있습니다.

 let language = Bundle.main.preferredLocalizations.first! as NSString

1

Swift 4.2 및 Xcode 10.1에서

let language = NSLocale.preferredLanguages[0]
print(language)//en

0

Apple 문서 에 따르면

NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defs objectForKey:@"AppleLanguages"];
NSString* preferredLang = [languages objectAtIndex:0];


0

스위프트 3의 경우 :

NSLocale.preferredLanguages ​​[0]을 문자열로


0

iOS 9부터 국가 코드가없는 언어 코드 만 원한다면 언어에 국가 코드가 포함되어 있기 때문에 이런 종류의 도우미 기능이 필요합니다.

// gets the language code without country code in uppercase format, i.e. EN or DE
NSString* GetLanguageCode()
{
    static dispatch_once_t onceToken;
    static NSString* lang;
    dispatch_once(&onceToken, ^
    {
        lang = [[[NSLocale preferredLanguages] objectAtIndex:0] uppercaseString];
        NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:@"^[A-Za-z]+" options:0 error:nil];
        NSTextCheckingResult* match = [regex firstMatchInString:lang options:0 range:NSMakeRange(0, lang.length)];
        if (match.range.location != NSNotFound)
        {
            lang = [lang substringToIndex:match.range.length];
        }
    });
    return lang;
}

0

스위프트 -4

 // To get device default selected language. It will print like short name of zone. For english, en or spain, es.



let language = Bundle.main.preferredLocalizations.first! as NSString
    print("device language",language)

이렇게하면 사용 가능한 (번들에 의해 지원되는 ) 현지화 (사용자가 선호 ) 의 집계 된 목록을 가져옵니다 . NSLocale.preferredLanguages번들에서 지원하는 항목에 대한 비용을 지불하지 않고 사용자가 선호하는 항목을 반환해야합니다.
Jonny
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.