如何正确检测设备objective-c的语言用户?

问题描述 投票:0回答:2

我有关于 iOS 的疑问。我想检测我的设备的语言,如果语言是英语,则更改我的应用程序中的任何文本,如果不是英语,则更改其他文本。但是当我检测语言时,总是检测区域而不检测语言。换句话说,如果我去改变语言,这不会改变。如果我改变地区,语言就会改变。

我的代码是:

 NSString *userLocale = [[NSLocale currentLocale] localeIdentifier];
NSString *userLanguage = [userLocale substringToIndex:2];
NSLog(@"%@", userLanguage); // return format "en", "es"... (english or spanish)

这个问题的出现可能是因为使用 [NSLocale currentLocale] 获取 en_Us 并且该参数取决于区域?

谢谢!

ios objective-c nslocale
2个回答
3
投票

如果你想要语言尝试

[NSLocale preferredLanguages];

它将返回用户语言首选项的数组,最喜欢的语言将是列表中的第一个。

NSLocale 封装的不仅仅是当前语言。货币标识符和小数点分隔符的使用等只是其中的一小部分。美国西北部的西班牙语用户可能希望看到西班牙语的内容,但可能仍然希望看到美元货币。

话虽如此,我怀疑您真正寻找的是成熟的本地化支持,在这种情况下,有大量关于如何本地化您的应用程序的信息。宏观

NSLocalizedString 

及其兄弟姐妹允许您编写与语言无关的代码(大部分)。


0
投票

另一种选择:

AVSpeechSynthesisVoice.currentLanguageCode() 
// return format "en-GB", "en-AU", "zh-CN"
© www.soinside.com 2019 - 2024. All rights reserved.