web-dev-qa-db-ja.com

iOS:デバイスの現在の言語設定を取得する方法?

私のアプリケーションには、それが実行されているデバイスの言語設定に基づいているはずの機能がいくつかあります。

国の設定ではなく、実際の言語を取得したい。たとえば、言語が英語の場合、それが米国、英国、オーストラリアなどであるかどうかは気にしません...

私はNSLocaleオブジェクトに精通していますが、それは_Region Format_設定に関連しているようで、Language設定には関連していないようです(下のスクリーンショットを参照)。 _[locale displayNameForKey:NSLocaleIdentifier value:[locale localeIdentifier]_を使用して言語を取得するには、EnglishではなくEnglish (United States)のようなものを取得します。また、必要なのはLanguageデータであり、Region Formatではない(私は正しいですか?).

言語設定を取得する方法を誰かに教えてもらえますか?

enter image description here

23
Ohad Regev

ユーザーが選択した言語が格納され、配列としてロケールから取得できます。現在の言語識別子はその配列の最初のオブジェクトです。

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

より読みやすい形式の言語が必要な場合は、displayNameForKey:value: NSLocaleのメソッド:

NSString *langID = [[NSLocale preferredLanguages] objectAtIndex:0];
NSString *lang = [[NSLocale currentLocale] displayNameForKey:NSLocaleLanguageCode value:langID];
52
Vladimir

これを試して:

NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSArray* arrayLanguages = [userDefaults objectForKey:@"AppleLanguages"];
NSString* currentLanguage = [arrayLanguages objectAtIndex:0];
5
Sergio

Swiftの言語と地域を取得:

    LF.log("language", NSLocale.preferredLanguages())
    LF.log("locale", NSBundle.mainBundle().preferredLocalizations)

私の場合、私は得ています:

language: '(
    "zh-Hans"
)'
locale: '(
    en
)'
3
superarts.org

Swift 4

let currentLanguage = Locale.current.languageCode

言語コードのみが表示され、国コードは表示されません。

2

実用的なソリューション:

    let language = NSLocale.preferredLanguages()[0]
    let languageDic = NSLocale.componentsFromLocaleIdentifier(language) as NSDictionary
    //let countryCode = languageDic.objectForKey("kCFLocaleCountryCodeKey")
    let languageCode = languageDic.objectForKey("kCFLocaleLanguageCodeKey") as! String
    print(languageCode)
2
iDevAmit

迅速:

let language = NSBundle.mainBundle().preferredLocalizations[0] as NSString
2
Esqarrouth
NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0]; 
1
Mohit

XCodeのヘルパードキュメントで解決策を見つけてください、それは書きました:

現在の言語を取得する

アプリが使用している言語をメインアプリケーションバンドルから取得するには、NSBundleクラスのpreferredLocalizationsメソッドを使用します。

NSString *languageID = [[NSBundle mainBundle] preferredLocalizations].firstObject;

1
liwp_Stephen

以下のコードを使用して、en-india、en-usなどに問題なくローカライズされた言語をフェッチします。

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

Ios9以降では、このコードは考慮に入れる必要があります

0
Esha

ローカリゼーションで選択されている現在の言語を知るには、

[[NSBundle mainBundle] preferredLocalizations]

例:

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

2文字のWordを取得するには

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

迅速:

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