24

模拟器的语言已经改成日语了,为什么[[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 下载重新安装。
  • 创建一个新的简单项目,更改模拟器的语言
  • 仍然总是得到“en”。

哦!怎么了....


更新:2

  • 今天,通过重新格式化 HD 重新安装了全新的 Yosemite
  • 下载 Xcode 6.1
  • 启动一个新的简单默认项目
  • 把这些代码
  • 更改/添加模拟器语言,日语,荷兰语,英语,
  • 天啊!又来"en"了,日文英文都找不到!

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

模拟器怎么了?

有什么我错过的吗?

4

2 回答 2

29

这是一个错误。这让我快疯了。苹果已经知道了。

看到这个答案:

尽管有德语硬件键盘,iOS8.1 模拟器始终使用美式键盘布局

和这个:

iOS 8.1 模拟器本地化损坏 (NSLocalizedString)

(在答案中有一个临时修复更改架构)

最好的,吉吉

于 2014-10-29T22:05:36.950 回答
1

我的 iOS 模拟器突然开始报告"en"而不是"en-US",所以这个问题似乎仍然存在。

转载于:

  • Xcode 8.2.1,iOS 10
  • Xcode 9.4.1,iOS 11

我进入语言设置,选择了英语和美国。我选择了加拿大和法语,并得到了"fr-CA". 然后我把它换回来,又开始"en-US"了。从那以后,我一直无法重现该"en"问题。

所以看起来我们不能传递[NSLocale preferredLanguages]on 的值,假设它们是语言-区域对。

于 2017-05-03T16:16:01.077 回答