未加载Xcode本地化字符串



我遇到了一个奇怪的问题与本地化字符串。我只有一个Localizable。弦在我的耳朵里。Lproj文件夹,它工作得很好。所有的字符串都显示在设备上。但是下次我编译并运行它时,它只显示字符串的ID。即使我什么都没改变,只点击构建调试。并且下次它再次工作正常,下一次再次显示id。

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

我的解决方案在底部:

我一直遇到同样的问题:交替运行产生正确的,然后是不正确的翻译(仅适用于英语)。

添加"-NSShowNonLocalizedStrings YES"作为应用程序的参数产生:

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

所以,我尝试直接从包中加载密钥文件作为字符串并转储它。当它不能正常工作时,它会显示一堆内置的iOS消息。因此,我进入构建的APP文件,打开包内容,查看en.lproj/Localizable。字符串文件…瞧! !这个文件被苹果iOS的键/值对填满了。在下一个版本中,它被按预期填充。

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

我的解决方案:

我复制了合法的英文本地化的内容。字符串文件从APP包(不是从我的源代码)到XML文件(编译时,.strings文件被转换为XML),并添加到我的项目。然后我在启动时将这个文件加载到一个字典中,如果对NSLocalizedString的调用返回的是键而不是值,我就会对加载的字典进行查找。从理论上讲,你可以对所有语言都这样做,但我只对英语有这个问题。

是的,这不是问题的答案,但这是一个变通。

检查是否有多个Localizable。项目中的字符串。把它们合二为一解决了我的问题。(检查您使用的任何外部代码,例如ShareKit)

最新更新