xcode本地化字符串未加载

时间:2011-07-15 15:21:38

标签: xcode nslocalizedstring

我遇到了本地化字符串的一个奇怪问题。我的'en.lproj'文件夹中只有一个'Localizable.strings',它运行正常。所有字符串都显示在设备上。但是下次我编译并运行时,它只显示字符串的ID。即使我什么也没做,只点击构建和调试。并且下次再次正常工作,下次再次显示ID。

所以有人知道为什么会这样吗?我总是需要建立两次,这有点烦人。

2 个答案:

答案 0 :(得分:4)

我的解决方案在底部:

我遇到了同样的问题:交替运行产生正确,然后错误的翻译(虽然只有英文)。

将“-NSShowNonLocalizedStrings YES”作为参数添加到应用程序中:

Localizable string "MyKey" not found in strings table "Localizable" of bundle CFBundle

所以,我尝试直接从包中加载密钥文件作为字符串并转储它。好吧,它没有正常工作的时间,它显示了一堆内置的iOS消息。所以,我去了构建的APP文件,打开了包内容,并查看了en.lproj / Localizable.strings文件......瞧!该文件已填充Apple iOS键/值对。在下一个版本中,它按预期填充。

当然,这与文件的编码无关(应该是UTF-16)。我提到这个具体问题时找不到任何东西。

我的解决方案:

我将合法英语Localizable.strings文件的内容从APP PACKAGE (不是从我的来源)复制到XML文件中(编译时,.strings文件转换为XML)和添加到我的项目中。然后我在启动时将此文件加载到字典中,如果对NSLocalizedString的调用返回了键而不是值,我对我加载的字典进行了查找。从理论上讲,你可以为所有语言做到这一点,但我只是遇到了英语问题。

是的,这不是问题的答案,但这是一种解决方法。

答案 1 :(得分:3)

检查项目中是否有多个Localizable.strings。将它们合并为一个解决了它。 (检查您使用的任何外部代码,例如ShareKit)