为了本地化我的应用程序,我使用了以下代码:
NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0];
if ([language isEqualToString:@"fr"]) {
}else{
} 但是自从iOS 9之后,我不得不将"fr“改为"fr-FR”。问题是,这只适用于法国。我如何支持所有其他地区(加拿大、比利时、.)?法语的“一般背景”呢?
谢谢
发布于 2015-09-26 18:24:51
如果language返回"fr-FR“和"fr-CA”等其他值,那么您应该在-字符上拆分language。即使你只是简单地得到"fr“,这也是有效的。
NSString *firstLanguage = [[NSLocale preferredLanguages] firstObject];
NSString *language = [[firstLanguage componentsSeparatedByString:@"-"] firstObject];
if ([language isEqualToString:@"fr"]) {
} else {
}发布于 2016-03-15 13:16:35
你不应该分裂NSLocale。NSLocale有一些密钥,您可以使用objectForKey:检索它们
在您的示例中,您可以编写以下内容:
[[[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode]
isEqualToString:@"fr"][NSLocale currentLocale]实际上与[[NSLocale preferredLanguages] firstObject]相同,但是有一些附加信息,可以在其中检索应该使用哪个十进制分隔符或哪个货币符号。
其他相关的密钥可以在苹果的类引用中找到。
发布于 2015-10-27 08:18:19
嘿,不要这样做,当本地化设置不同时,就会产生问题,因为语言具有不同的区域,如es-mx和es-cl。在这种情况下,上述解决方案将产生问题。解决方案使用以下代码:
NSString *selectedLanguage = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];如果您从设置中选择了zh-Hans-US,但是您的应用程序只有zh-Hans-TW和zh-Hans-CN。上面的代码将返回"zh-Hans-TW"第一个首选本地化。
试试这个可能对你有用。
https://stackoverflow.com/questions/32800410
复制相似问题