相关疑难解决方法(0)

在iOS中获取当前的设备语言?

我想显示设备UI正在使用的当前语言.我会用什么代码?

我希望这是一个NSString完全拼写的格式.(不是@"en_US")

编辑:对于那些开车的人来说,这里有很多有用的评论,因为答案随着新的iOS版本的发展而演变.

cocoa-touch objective-c ios nslocale

420
推荐指数
14
解决办法
23万
查看次数

NSLocale preferredLanguages objectAtIndex:0总是返回"en"

模拟器的语言已经改为日语,为什么[[NSLocale preferredLanguages] objectAtIndex:0] 总是返回"en"

首选语言和地区都与"en"无关,它"en"来自哪里?

这是截图

试图获得[[NSLocale preferredLanguages] objectAtIndex:2],然后崩溃显示*** Terminating app due to uncaught exception 'NSRangeException', reason: '-[__NSCFArray objectAtIndex:]: index (2) beyond bounds (1)

这是否意味着模拟器中没有设置任何语言?太奇怪了!

在使用iOS8.1/7.1升级到Xcode 6.1之前,这种情况从未发生过.

同时,在我的iPhone 5上试过同样的东西,控制台输出正确的东西.

为什么这么奇怪?有没有人有这样的问题?

更新:1

  • 删除Xcode和模拟器,然后从Mac Store下载重新安装.
  • 创建一个新的简单项目,更改simlulator的语言
  • 仍然总是"en".

哦! 怎么了....


更新:2

  • 今天,通过重新格式化HD重新安装了全新的Yosemite
  • 下载Xcode 6.1
  • 启动一个新的简单默认项目
  • 把这些代码
  • 更改/添加模拟器语言,日语,荷兰语,英语,
  • 天啊!只得到了"en"再次,日语和英语没有发现!

为什么还只能"en"找到一个?日语和英语在哪里?

模拟器怎么了?

我错过了什么吗?

iphone nsuserdefaults region nslocale ios8.1

25
推荐指数
1
解决办法
7235
查看次数

xcode 6.1 iOS 8.1 NSLocale displayNameForKey NSLocaleIdentifier返回nil

- (NSString *)countryNameByCode:(NSString*)countryCode
{
    NSString *identifier = [NSLocale localeIdentifierFromComponents:@{NSLocaleCountryCode: countryCode}];
    NSString *countryName = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:identifier];

    return countryName;
}

这回来了nil.为什么?

objective-c ios nslocale

17
推荐指数
3
解决办法
6983
查看次数

应用程序中加载语言的NSLocale

在我的界面中,我显示了一个语言环境的显示名称:

[[NSLocale currentLocale] displayNameForKey: NSLocaleIdentifier value: identifier]
Run Code Online (Sandbox Code Playgroud)

但是这会使用系统的区域设置来显示显示名称,该区域设置并不总是与应用程序的区域设置相同.例如,如果我用法语设置我的系统并且我的应用程序没有法语本地化,它将在英语界面中提供法语显示名称.相反,我想在英文界面中有一个英文显示名称,所以我不混合语言.

objective-c nslocale

6
推荐指数
1
解决办法
1691
查看次数