私のアプリケーションには、それが実行されているデバイスの言語設定に基づいているはずの機能がいくつかあります。
国の設定ではなく、実際の言語を取得したい。たとえば、言語が英語の場合、それが米国、英国、オーストラリアなどであるかどうかは気にしません...
私はNSLocale
オブジェクトに精通していますが、それは_Region Format
_設定に関連しているようで、Language設定には関連していないようです(下のスクリーンショットを参照)。 _[locale displayNameForKey:NSLocaleIdentifier value:[locale localeIdentifier]
_を使用して言語を取得するには、English
ではなくEnglish (United States)
のようなものを取得します。また、必要なのはLanguageデータであり、Region Formatではない(私は正しいですか?).
言語設定を取得する方法を誰かに教えてもらえますか?
ユーザーが選択した言語が格納され、配列としてロケールから取得できます。現在の言語識別子はその配列の最初のオブジェクトです。
NSString *currentLanguage = [[NSLocale preferredLanguages] objectAtIndex:0];
より読みやすい形式の言語が必要な場合は、displayNameForKey:value:
NSLocaleのメソッド:
NSString *langID = [[NSLocale preferredLanguages] objectAtIndex:0];
NSString *lang = [[NSLocale currentLocale] displayNameForKey:NSLocaleLanguageCode value:langID];
これを試して:
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSArray* arrayLanguages = [userDefaults objectForKey:@"AppleLanguages"];
NSString* currentLanguage = [arrayLanguages objectAtIndex:0];
Swift
の言語と地域を取得:
LF.log("language", NSLocale.preferredLanguages())
LF.log("locale", NSBundle.mainBundle().preferredLocalizations)
私の場合、私は得ています:
language: '(
"zh-Hans"
)'
locale: '(
en
)'
Swift 4:
let currentLanguage = Locale.current.languageCode
言語コードのみが表示され、国コードは表示されません。
実用的なソリューション:
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)
迅速:
let language = NSBundle.mainBundle().preferredLocalizations[0] as NSString
NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0];
XCodeのヘルパードキュメントで解決策を見つけてください、それは書きました:
現在の言語を取得する
アプリが使用している言語をメインアプリケーションバンドルから取得するには、NSBundleクラスのpreferredLocalizationsメソッドを使用します。
NSString *languageID = [[NSBundle mainBundle] preferredLocalizations].firstObject;
以下のコードを使用して、en-india、en-usなどに問題なくローカライズされた言語をフェッチします。
NSString *Ph = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];
Ios9以降では、このコードは考慮に入れる必要があります
ローカリゼーションで選択されている現在の言語を知るには、
[[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