簡體   English   中英

iOS檢查電話語言的最佳和安全方法是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM