【问题标题】:NSLocale preferredLanguages objectAtIndex:0 always return "en"NSLocale preferredLanguages objectAtIndex:0 总是返回“en”
【发布时间】:2014-12-21 17:16:34
【问题描述】:

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

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

尝试获取[[NSLocale preferredLanguages] objectAtIndex:2],然后crash显示*** 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"?日语和英语在哪里?

模拟器怎么了?

有什么我错过的吗?

【问题讨论】:

  • 尝试为 OS X 设置您的首选语言(不在模拟器的设置中?)
  • OS X 的首选语言会影响 iPhone 模拟器的语言吗?我不这么认为。无论如何,尝试过但没有用。
  • @Shoaib 你使用的是什么版本的 Xcode?​​span>
  • @Shoaib 6.0.1 还是 6.1?
  • 6.0.1 版,但我认为版本对此无关紧要。

标签: iphone nsuserdefaults region nslocale ios8.1


【解决方案1】:

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

看到这个答案:

iOS8.1 Simulator always uses US keyboard layout despite german hardware keyboard

还有这个:

iOS 8.1 Simulator Localization broken (NSLocalizedString)

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

最好, 吉吉

【讨论】:

  • 没错。在花了一整天安装/卸载/重新安装 Xcode 5.1.1、6.0.1 之后,最终发现 NSLocale 无法正常工作是因为 Xcode 6.1。
  • 是的,很遗憾,我们必须等待 Apple,或者使用架构修复。
  • PS:你应该关闭这个问题:) @s1u
  • @s1u 您必须点击左侧的复选框接受最佳答案。通过这种方式,人们将立即知道要阅读什么内容以获得对该问题的解决方案或最佳解释。此外,该问题不会出现在未验证的问题中。这将使 stackoverflow 保持整洁和高效
【解决方案2】:

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

转载于:

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

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

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

【讨论】:

  • 在 iOS 模拟器中查看 Settings --> General --> Language & Region --> iPhone Language。您会发现模拟器默认设置为“English”,而不是“English (US)”。这就是[NSLocale preferredLanguages] 将“en”报告为系统语言的原因。最奇怪的是,简单的“英语”(没有国家)似乎无法在真实设备上使用,只能在模拟器上使用。
猜你喜欢
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
  • 2019-01-09
  • 1970-01-01
  • 2015-09-27
  • 2014-03-20
  • 2013-04-13
相关资源
最近更新 更多