我一直在我的应用程序中使用本地化,但由于某种原因,一些字符串(不是全部)不会翻译,我看到的是键而不是值。我试图通过这样做来检查应用程序是否找到了本地化文件:
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"];
而且没有一个是 nil。
我已经检查了本地化文件的名称,它应该是 Localizable.strings
。
还检查了 key 是否存在于 Localizable.strings
文件中并且确实存在。
我也试过:
- 清空缓存
- 清理所有目标
- 删除派生数据文件夹
- 重启
- 重置模拟器
- 转换为 UTF-16
- 删除所有本地化文件并重新创建它们。
还尝试执行 this 中的所有操作问题。
重要的是要说这不仅仅是模拟器/缓存问题。它还显示在下载该应用程序的设备上。 (我有企业帐户)。
我还能做些什么来识别或解决问题?
最佳答案
所以我发现了问题,我猜是谁为我翻译了 Localizable.strings
文件是个 SCSS 。在我的字符串文件的 4 个地方有一行如下:
"KEY" ;= "Value"
这一行导致某种崩溃,但由于某种原因让编译器成功构建。这就是为什么我找不到错误的原因,只有当我决定采用最后一个未翻译的键和值并将它们移动到 Localizable.strings
文件的顶部时。然后我能够理解并看到问题出在文件中间的某个地方,并且顶部的键和值翻译得很好。
关于ios - 应用程序本地化显示键而不是 iOS 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34264355/