[英]IOS What's the best and safe way to check the phone language?
到目前為止,我一直使用此代碼檢索電話語言:
NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0];
正如我們現在所了解的,自IOS 9以來,蘋果已將此功能的返回值從“ en”更改為“ en-GB”。在我的應用程序中,我通常執行“ istostring”以檢查使用哪種語言工作。 現在我需要實現類似該問題的正確答案的方法
而且我必須在每個方法調用中實現一個條件,以檢查設備是否為IOS <9或IOS> = 9。 這個蘋果的變化似乎沒有考慮任何較舊版本的兼容性問題,我對此功能進行了廣泛使用,因此我必須更新我的所有應用程序...也許問題是另外一個,還有一種更好的方法來檢查實際的語言電話?
不幸的是,這是開發人員社區共同的痛苦,我們無能為力。
但是,我通過在UIDevice
上添加如下類別來保護自己:
+ (NSString *)deviceLanguage {
return [[NSLocale preferredLanguages] objectAtIndex:0];
}
然后只需調用:
[UIDevice deviceLanguage]
獲取設備語言。 至少,就像您的情況一樣,如果您在多個地方使用此功能,則只需更改一個地方即可使整個應用程序與新的語言/操作系統支持保持一致。
我想這可能對您有幫助
NSArray *array = [NSLocale preferredLanguages];
for (NSString *lan in array)
{
NSLog(@"%@: %@ %@",lan, [NSLocale canonicalLanguageIdentifierFromString:lan], [[[NSLocale alloc] initWithLocaleIdentifier:lan] displayNameForKey:NSLocaleIdentifier value:lan]);
}
在目標C中
NSString *language = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];
在斯威夫特
let language = NSBundle.mainBundle().preferredLocalizations.first! as NSString
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.