我遇到了本地化字符串的一个奇怪问题。我的'en.lproj'文件夹中只有一个'Localizable.strings',它工作正常。所有的字符串都显示在设备上。但下次我编译并运行时,它只显示字符串的ID。即使我没有改变,只需点击编译&调试。下一次再次正常工作,下一次再次显示ID。xcode本地化字符串未加载
因此,有谁知道为什么会发生这种情况?我总是需要建造两次,这有点令人讨厌。
我遇到了本地化字符串的一个奇怪问题。我的'en.lproj'文件夹中只有一个'Localizable.strings',它工作正常。所有的字符串都显示在设备上。但下次我编译并运行时,它只显示字符串的ID。即使我没有改变,只需点击编译&调试。下一次再次正常工作,下一次再次显示ID。xcode本地化字符串未加载
因此,有谁知道为什么会发生这种情况?我总是需要建造两次,这有点令人讨厌。
检查您的项目中是否有多个Localizable.strings。将它们合并为一个解决了它对我来说。 (请检查您使用例如ShareKit任何外部代码)
如果您有多种语言,这并不能解决问题。对于每种语言,您需要包含多个
@GtotheB如果我正确理解你,你想合并所有的语言?不,不要那样做!只合并使用SAME语言的文件(例如,合并来自所有en.lproj的Localizable.strings和所有de.lproj的所有Localizable.strings)分开 – Reggian
我认为这就是你的意思。是的,合并语言表会产生不好的结果。但是,组合(例如)英文表格也可能导致重复的键。所以,如果这样做,确保在整个[现在]单个表中的键是唯一的。 – GtotheB
我的解决办法是在底部:
我已经运行到同一个问题:交替运行产生正确的,那么不正确的翻译(只适用于英语,虽然)。
添加“-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的调用返回了键而不是值,我对加载的字典进行了查找。从理论上讲,你可以为所有语言做到这一点,但我只是遇到了英语问题。
是的,这不是问题的答案,但它是一种解决方法。
它显示任何错误?不知何故文件没有被复制。 –
不,根本没有错误信息。 – boreas