iOS:本地化间歇性中断
Posted
技术标签:
【中文标题】iOS:本地化间歇性中断【英文标题】:iOS: Localization intermittently broken 【发布时间】:2012-01-06 02:56:15 【问题描述】:我在应用本地化方面遇到了一个奇怪的问题。它在以前的版本中运行良好,但最近不知何故停止运行,本地化文件没有明显的变化(我确实添加了一种语言,但仅此而已)。
当我使用 Xcode Organizer (Xcode 3.2.5) 安装构建时,本地化有时会起作用。更改操作系统中的语言设置似乎没有任何作用。从 Xcode Organizer 卸载,然后重新安装没有帮助。
本地化 API 似乎找不到我的资源。我在我的一个 ViewController 中添加了一些 NSLog() 语句来打印出一个应该本地化的字符串,使用这个函数:
NSLog(@"Value: %@", [[NSBundle mainBundle] localizedStringForKey:@"MY_KEY" value:@"none found" table:nil]);
当本地化工作时,这会打印出预期的结果。当本地化不起作用时,这会打印出“未找到”。我检查了包的内容,.lproj 文件都在那里。我错过了什么?
编辑:我发现在构建之后,某些生成的用于各种语言的 *.lproj/Localizable.strings 文件没有正确创建 - 有时。我可以触摸德语文件,它会正确生成,但是下次我运行构建时它不正确。所有 Localizable.strings 文件的编码当前都设置为 UTF-16,我尝试切换到 UTF-8,但没有成功。我在构建日志中没有看到任何警告或错误表明字符串文件存在问题。
【问题讨论】:
【参考方案1】:由于您的项目中有多个localizable.strings
文件,我之前已经看到过这种情况。如果您将开源库放入您的解决方案(例如 ShareKit,它带有自己的 localizable.strings
文件),这很容易发生。请参阅Localisation strings not always work having ShareKit in a project 上的问题,以了解有关您问题的可能原因的更多信息。
【讨论】:
看来这就是原因。对于已添加到项目中的另一个目标,还有另一组翻译。一旦我重新命名这些,一切似乎都很好。以上是关于iOS:本地化间歇性中断的主要内容,如果未能解决你的问题,请参考以下文章
垃圾收集似乎关闭了本地执行程序并导致 RejectedExecutionException
使用 (Power)Mockito 跟踪本地对象状态和中断流程?