我想要显示设备UI使用的当前语言。我应该使用什么代码?
我想把它作为一个NSString完全拼写出来的格式。(@ en_US)
编辑:对于那些开车路过的人来说,这里有大量有用的评论,因为随着新iOS版本的发布,答案也在不断变化。
我想要显示设备UI使用的当前语言。我应该使用什么代码?
我想把它作为一个NSString完全拼写出来的格式。(@ en_US)
编辑:对于那些开车路过的人来说,这里有大量有用的评论,因为随着新iOS版本的发布,答案也在不断变化。
当前回答
对于获得用户设备当前语言使用以下它的代码,它为我工作。
NSString * myString = [[NSLocale preferredlanguage]objectAtIndex:0];
其他回答
斯威夫特3
let locale = Locale.current
let code = (locale as NSLocale).object(forKey: NSLocale.Key.countryCode) as! String?
print(code!)
我试图为自己找出正确的解决办法。当我使用Locale.preferredLanguages.first从你的应用程序设置返回首选语言。
如果你想从用户设备设置中了解语言,你应该使用下面的字符串:
斯威夫特3
let currentDeviceLanguage = Locale.current.languageCode
// Will return the optional String
要展开并使用,请看下面这行:
if let currentDeviceLanguage = Locale.current.languageCode {
print("currentLanguage", currentDeviceLanguage)
// For example
if currentDeviceLanguage == "he" {
UIView.appearance().semanticContentAttribute = .forceRightToLeft
} else {
UIView.appearance().semanticContentAttribute = .forceLeftToRight
}
}
简单Swift 3功能:
@discardableResult
func getLanguageISO() -> String {
let locale = Locale.current
guard let languageCode = locale.languageCode,
let regionCode = locale.regionCode else {
return "de_DE"
}
return languageCode + "_" + regionCode
}
I actually misread the original question, thought it asked for the "app UI" language (that's what I had googled for), not the "device UI", in which case the best answers would be the ones using preferredLocalizations, but those answers still give you a code, there is one more step to get a nice string to display. So, while the "device UI" language is already answered, if you want to display a nice string for which of the UI languages you support is currently in use, obviously the simplest solution is:
NSLocalizedString(@"currentLanguage", @"")
在你的每一个UI本地化中你都指定了你想要的显示方式。例如,在你的。strings文件的en版本中,你会有:
"currentLanguage"="English";
在你的fr版本的.strings文件中,你会有:
"currentLanguage"="Francais";
等。不要混淆代码等,你可以让你自己的字符串很好地匹配你的UI。
斯威夫特
获取设备的当前语言
NSLocale.preferredLanguages()[0] as String
获取应用程序语言
NSBundle.mainBundle().preferredLocalizations[0] as NSString
注意:
它获取你在info.plist的CFBundleDevelopmentRegion中给出的语言
如果CFBundleAllowMixedLocalizations在info中为true。plist然后info中的cfbundlelocizations的第一项。返回Plist