首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >preferredLanguages iOS 9

preferredLanguages iOS 9
EN

Stack Overflow用户
提问于 2015-09-26 18:14:27
回答 5查看 4K关注 0票数 3

为了本地化我的应用程序,我使用了以下代码:

代码语言:javascript
复制
NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0];  
             if ([language isEqualToString:@"fr"]) {  
}else{  
}  

但是自从iOS 9之后,我不得不将"fr“改为"fr-FR”。问题是,这只适用于法国。我如何支持所有其他地区(加拿大、比利时、.)?法语的“一般背景”呢?

谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-09-26 18:24:51

如果language返回"fr-FR“和"fr-CA”等其他值,那么您应该在-字符上拆分language。即使你只是简单地得到"fr“,这也是有效的。

代码语言:javascript
复制
NSString *firstLanguage = [[NSLocale preferredLanguages] firstObject];
NSString *language = [[firstLanguage componentsSeparatedByString:@"-"] firstObject];
if ([language isEqualToString:@"fr"]) {
} else {
}
票数 3
EN

Stack Overflow用户

发布于 2016-03-15 13:16:35

你不应该分裂NSLocale。NSLocale有一些密钥,您可以使用objectForKey:检索它们

在您的示例中,您可以编写以下内容:

代码语言:javascript
复制
[[[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode]
            isEqualToString:@"fr"]

[NSLocale currentLocale]实际上与[[NSLocale preferredLanguages] firstObject]相同,但是有一些附加信息,可以在其中检索应该使用哪个十进制分隔符或哪个货币符号。

其他相关的密钥可以在苹果的类引用中找到。

票数 2
EN

Stack Overflow用户

发布于 2015-10-27 08:18:19

嘿,不要这样做,当本地化设置不同时,就会产生问题,因为语言具有不同的区域,如es-mxes-cl。在这种情况下,上述解决方案将产生问题。解决方案使用以下代码:

代码语言:javascript
复制
NSString *selectedLanguage = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];

如果您从设置中选择了zh-Hans-US,但是您的应用程序只有zh-Hans-TWzh-Hans-CN。上面的代码将返回"zh-Hans-TW"第一个首选本地化。

试试这个可能对你有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32800410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档