我一直在我的应用程序中使用本地化,但由于某种原因,一些字符串(不是所有字符串)都不会翻译,我看到键而不是值.我试图通过这样做来检查应用程序是否找到了本地化文件:
NSString *enPath = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; NSString *hePath = [[NSBundle mainBundle] pathForResource:@"he" ofType:@"lproj"]; NSString *ruPath = [[NSBundle mainBundle] pathForResource:@"ru" ofType:@"lproj"]; NSString *esPath = [[NSBundle mainBundle] pathForResource:@"es" ofType:@"lproj"]; NSString *frPath = [[NSBundle mainBundle] pathForResource:@"fr" ofType:@"lproj"]; NSString *arPath = [[NSBundle mainBundle] pathForResource:@"ar" ofType:@"lproj"];
而且没有一个是零.
我已经检查了本地化文件的名称,Localizable.strings
它应该是这样的.还要检查文件中是否存在密钥Localizable.strings
,确实存在.
我也尝试过:
空缓存
清洁所有目标
删除派生数据文件夹
重新开始
重置模拟器
转换为UTF-16
删除所有本地化文件并重新创建它们.
也尝试做这个问题的一切.
重要的是要说这不仅仅是模拟器/缓存问题.它也在下载应用程序的设备上显示.(我有企业帐户).
我还能做些什么来识别或解决问题?
所以我发现了问题,我想谁为我翻译了这些Localizable.strings
文件是个混蛋.在我的字符串文件中的4个位置,有一行如下:
"KEY" ;= "Value"
这行导致某种崩溃,但让编译器出于某种原因成功构建.这就是为什么我无法找到错误,只有当我决定采用不翻译的最后一个Key和Value并将它们移动到Localizable.strings
文件的顶部时.然后我能够理解并看到问题出现在文件中间的某个位置,顶部的键和值被翻译得很好.