iOS模拟器缺少语言选项

8
当我运行我的应用程序时,我的iPhone/iPad模拟器只给了我6种语言选择(英语,德语,日语,意大利语,西班牙语和匈牙利语)。在谷歌搜索后,似乎应该至少有18种语言可用。
我已经重新安装了Xcode 4.3.1,并安装了iOS 5.1模拟器,但它仍然存在相同的问题,相同的语言。
有人知道这些语言是在哪里定义的,以及为什么模拟器没有所有可用选项吗?谷歌和苹果开发者论坛都没有帮助。
以下是屏幕截图:
更新:我决定安装稍旧的5.0模拟器(而不是5.1),每当我使用5.0模拟器时,似乎我有所有的语言。如果我切换回5.1模拟器,我仍然只有上面截图中显示的6种语言。

1
+1 鼓励你的研究。我认为你应该向苹果公司提交一个错误报告。如果他们有意在5.1中删除了这些语言(为了节省空间或其他原因),那么他们至少应该知道这些语言被想念,如果这是一个错误,他们也应该得到通知。 - Erik B
我已经与一些使用5.1的其他开发人员进行了核对,其中一些人拥有所有语言,但似乎有些人也缺少某些语言。我不确定这个问题是否与版本有关,但可能只是安装不同版本的新版本可以解决问题。老实说,我只是好奇苹果在哪里指定模拟器应该显示哪些语言。 - Nic Foster
我仍然会提交那个错误报告。如果这不是一个错误,他们希望能够告诉你如何解决问题。当他们有了答案后,您可以回到这里并发布答案。 - Erik B
我已经提交了一个错误报告,我们会看看他们会说什么。 - Nic Foster
2个回答

5
我认为您的模拟器安装出了问题,而不是苹果删除了语言。如果他们要将模拟器的语言数量削减到仅有6种,那么匈牙利语将是一个奇怪的选择(只有大约1250万名使用者)。
我还检查了我的Xcode 4.3.3 / iPhone 5.1模拟器,我认为我已经装备了所有语言。您可以尝试重新安装您的模拟器!
模拟器在“设置”应用程序中显示的语言列表可以在以下路径中找到: /Applications/Xcode-4.3.3.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/System/Library/PrivateFrameworks/Preferences.framework/GlobalPreferences.plist。 它以二进制格式呈现,因此您需要将其复制到临时目录并使用plutil -convert xml1 将其转换为可读格式。您可以检查一下此列表中是否缺少语言。
供参考,这是我的语言列表长这样:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>AppleLanguages</key>
        <array>
                <string>en</string>
                <string>fr</string>
                <string>de</string>
                <string>ja</string>
                <string>nl</string>
                <string>it</string>
                <string>es</string>
                <string>pt</string>
                <string>pt-PT</string>
                <string>da</string>
                <string>fi</string>
                <string>nb</string>
                <string>sv</string>
                <string>ko</string>
                <string>zh-Hans</string>
                <string>zh-Hant</string>
                <string>ru</string>
                <string>pl</string>
                <string>tr</string>
                <string>uk</string>
                <string>ar</string>
                <string>hr</string>
                <string>cs</string>
                <string>el</string>
                <string>he</string>
                <string>ro</string>
                <string>sk</string>
                <string>th</string>
                <string>id</string>
                <string>ms</string>
                <string>en-GB</string>
                <string>ca</string>
                <string>hu</string>
                <string>vi</string>
        </array>
        <key>AppleLocale</key>
        <string>en_US</string>
</dict>
</plist>

他们没有删除它们,我有同事使用5.1模拟器并拥有所有语言,但其他人缺少某些语言。我可以尝试重新安装,但更重要的是,我现在很好奇为什么多个人会缺少这些语言。 - Nic Foster
1
@NicFoster 我在我的回答中添加了关于语言列表位置的一些信息。因此,如果该列表缺少某些开发人员所缺少的语言条目,这可能是一个线索。 - idz
谢谢这个信息,看起来GlobalPreferences.plist文件没问题,和你的一模一样。但是在Preferences.framework目录下,我只有6种语言的.lproj文件夹。当我查看5.0模拟器文件夹时,我有所有的.lproj目录。我把5.0语言的.lproj目录复制到5.1位置,问题就解决了。 - Nic Foster

0
根据用户idz发布的答案中的信息,我成功地找到了解决方法。
我之前使用的是5.1版本,我不得不安装之前的模拟器版本(5.0),然后找到5.0版本的语言目录并将其复制到5.1正确的位置,最后重新启动iPhone模拟器。以下是一些详细步骤:
  1. 找到5.0模拟器的语言.lproj目录。/Applications/Xcode-4.3.3.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/PrivateFrameworks/Preferences.framework/
  2. 在此文件夹中,您将看到许多带有.lproj扩展名的文件夹,例如English.lproj。复制您在此处找到的所有.lproj文件夹。
  3. 找到5.1模拟器的.lproj目录文件夹。/Applications/Xcode-4.3.3.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/System/Library/PrivateFrameworks/Preferences.framework/
  4. 将您复制的文件夹粘贴到此目录中。我选择在执行此操作时不覆盖任何现有文件夹。
  5. 重新启动您的iPhone模拟器。
  6. 确保您的iPhone模拟器设置为5.1。选择iPhone模拟器后,转到硬件->版本->5.1。现在,当您选择模拟器的语言时,您应该可以使用从5.0文件夹复制的所有语言。

另外,有些人说你可以通过简单地卸载Xcode SDK并重新安装来解决此问题,但我发现这种方法更快。

我向苹果提交了一个错误报告,一周后没有回应。 我已经向他们指出了这个页面以解决问题,但我仍然不确定首次发生了什么问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接