2012-12-16 9 views
7

私のアプリでは、現在設定されているデバイスとその頭字語を取得しようとしています。だから私は、次の操作を行います。今度は私のアプリの機能をめちゃくちゃされ、en_UKまたは類似した何か:NSLocale言語の問題

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

ただし、一部のユーザーは、言語のようなものを返していることを報告しています。

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

ありがとうございます!の地域のバリエーションを提供しますが、地域コードを使用していた

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

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

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

:言語コード、使用を取得するには

+0

「en」の後ろに追加の地域情報がなくても「en」と言うことを期待しています。 –

答えて

22

このように簡単に入手できます:

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

リージョンコードはlangで始まりますその後にアンダースコア、地域別のバリエーションが表示されます。

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