24

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

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

私はNSLocaleオブジェクトに精通していますが、言語Region Format設定ではなく設定に関連しているようです(下のスクリーンショットを参照)。そのため、を使用してオブジェクトから言語を取得しようとすると、代わりに次のようになります。また、必要なのは言語データであり、地域フォーマットではないと思います(私は正しいですか?)。[locale displayNameForKey:NSLocaleIdentifier value:[locale localeIdentifier]English (United States)English

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

ここに画像の説明を入力してください

4

10 に答える 10

52

保存されているユーザーの優先言語は、ロケールから配列として取得でき、現在の言語識別子はその配列の最初のオブジェクトです。

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

より読みやすい形式の言語が必要な場合displayNameForKey:value:は、NSLocaleのメソッドを使用してください。

NSString *langID = [[NSLocale preferredLanguages] objectAtIndex:0];
NSString *lang = [[NSLocale currentLocale] displayNameForKey:NSLocaleLanguageCode value:langID];
于 2011-07-26T11:49:11.630 に答える
5

これを試して:

NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSArray* arrayLanguages = [userDefaults objectForKey:@"AppleLanguages"];
NSString* currentLanguage = [arrayLanguages objectAtIndex:0];
于 2011-07-26T11:54:33.133 に答える
3

言語と地域の取得Swift

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

私の場合、次のようになります。

language: '(
    "zh-Hans"
)'
locale: '(
    en
)'
于 2015-05-08T02:45:49.520 に答える
3

Swift 4の場合:

let currentLanguage = Locale.current.languageCode

国コードではなく、言語コードのみが表示されます。

于 2018-11-09T06:09:24.150 に答える
2

迅速:

let language = NSBundle.mainBundle().preferredLocalizations[0] as NSString
于 2014-12-21T16:05:52.647 に答える
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)
于 2017-01-03T07:41:39.440 に答える
1
NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0]; 
于 2014-03-10T13:22:43.030 に答える
1

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

現在の言語を取得する

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

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

于 2016-09-05T09:35:29.937 に答える
0

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

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

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

于 2015-12-18T10:33:19.067 に答える
-1

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

[[NSBundle mainBundle] preferredLocalizations]

例:

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

2文字の単語を取得するには

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

迅速:

let language = NSBundle.mainBundle().preferredLocalizations.first as NSString
于 2015-09-28T13:39:41.207 に答える