我有一个令我困惑的 iPhone 本地化问题。我正在本地化我的应用程序,并且英语以及简体中文和繁体中文都可以正常工作。我有两个已本地化的文件,Localizable.strings 和sounds.plist。两个文件中的字符串在设备和模拟器上都正确显示。
现在昨天我添加了西班牙语、意大利语和德语。当我在模拟器中测试时,一切都正确显示。但是当我部署到设备时,Localizable.strings 中包含的字符串正确显示,但sounds.plist 中包含的字符串始终以英文显示。甚至中文字符串也无法正确显示。
我尝试清理构建,将翻译后的文本复制回sounds.plist文件,甚至对文件进行核对,删除lproj文件夹,删除本地化并重新开始。
我在 XCode 中设置了一个断点,似乎对于这个文件,它没有检测到 loc 文件夹。从sounds.plist 加载字符串的代码是:
+ (NSDictionary*) getSounds
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"sounds" ofType:@"plist"];
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
return dict;
}
我已经验证文件名是sounds.plist,都是小写的。在这一点上,我不知所措。有没有人经历过这样的事情?有人对如何修复有建议吗?
谢谢!
更新:我在模拟器和设备上比较了以下行的结果:
NSString *path = [[NSBundle mainBundle] pathForResource:@"sounds" ofType:@"plist"];
在模拟器上,路径正确报告为/Users/Steve/.../de.lproj/sounds.plist。在设备上,路径报告为/var/mobile/.../sounds.plist。请注意,de.lproj 不在路径中。所以它从根目录加载sounds.plist,这就解释了为什么文本没有出现本地化。现在我的问题是为什么代码没有得到本地化文件夹中文件的路径?