xcode本地化字符串未加载

bor*_*eas 5 xcode nslocalizedstring

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

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

Gto*_*heB 5

我的解决方案在底部:

我遇到了同样的问题:交替运行会产生正确的翻译,然后产生错误的翻译(尽管仅适用于英语)。

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

Localizable string "MyKey" not found in strings table "Localizable" of bundle CFBundle
Run Code Online (Sandbox Code Playgroud)

因此,我尝试直接从捆绑包中以字符串形式加载密钥文件并将其转储。好吧,有时它无法正常工作,它会显示一堆内置的 iOS 消息。因此,我转到构建的 APP 文件,打开包内容,然后查看 en.lproj/Localizes.strings 文件...瞧!该文件已填充 Apple iOS 键/值对。在下一个版本中,它按预期被填满。

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

我的解决方案:

我将合法的英文 Localized.strings 文件从应用程序包(不是从我的源)复制到 XML 文件(编译时,.strings 文件将转换为 XML)并添加到我的项目中。然后,我在启动时将此文件加载到字典中,如果对 NSLocalizedString 的调用返回键而不是值,我会对加载的字典进行查找。理论上,你可以对所有语言执行此操作,但我只遇到英语问题。

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


reg*_*ian 3

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