7

したがって、私のアプリでは、現在設定されている言語とその頭字語を取得しようとしています。だから私はこれを行います:

NSString *fullLanguage = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:[[NSLocale preferredLanguages] objectAtIndex:0]];
NSString *abrlanguage = [[NSLocale preferredLanguages] objectAtIndex:0];

ただし、一部のユーザーは、言語が次のようなものを返していると報告しています: en_UK または同様のもので、アプリの機能が台無しになっています。

とにかく、デバイスの地域設定に関係なく、デバイスの現在設定されている言語を取得する方法はありますか?

ありがとう!

4

1 に答える 1

22

言語コードを取得するには、次を使用します。

NSString *languageCode = [[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode];
NSLog(@"%@", languageCode);  // Prints "en"

言語の完全な名前を取得するには:

NSString *languageName = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:languageCode];
NSLog(@"%@", languageName);  // Prints "English"

地域コード (言語の地域的なバリエーションを提供する) を使用していたことに注意してください。次のように簡単に取得できます。

NSString *regionCode = [[NSLocale currentLocale] objectForKey:NSLocaleIdentifier];
NSLog(@"%@", regionCode);  // Prints "en_US"

地域コードは言語コードで始まり、アンダースコア、地域のバリエーションが続きます。(これは、Apple のドキュメントに従って標準化されています。)

また、 を使用する場合currentLocaleは、ユーザー設定が変更されても更新されないことに注意してください。autoupdatingCurrentLocale変更された場合に同期を維持したい場合は、代わりに使用してください。

于 2012-12-17T04:49:10.767 に答える