我正在尝试使用InAppSettingsKit来管理我的设置.这将使用带有.plist文件的Settings.bundle和要翻译的每种语言的.strings文件.
我可以使用Setting应用程序确认我的字符串的翻译在我的应用程序之外正常工作.但是当我在我的应用程序中时,翻译没有发生.
我认为它归结为这样的代码,来自InAppSettingsKit类IASKSettingsReader,有一些我认为对我有用的日志语句:
- (NSString*)titleForStringId:(NSString*)stringId { NSLog(@"%@",[_bundle localizedStringForKey:stringId value:stringId table:self.localizationTable]); NSLog(@"%@",[_bundle localizedInfoDictionary]); return [_bundle localizedStringForKey:stringId value:stringId table:self.localizationTable]; }
如果我理解正确,这应该使用名为self.localizationTable的表作为翻译的来源.这个值只是“Root”.它不是所选语言中Root.strings文件的路径,因此我猜测方法localizedStringForKey:value:table:必须使用一些指向正确路径的全局系统引用.
我已经确认字符串文件名是“Root.strings”,大概是R,包括在Root.plist文件中.
[_bundle localizedInfoDictionary]返回(null);它正在为英语和法语的两种语言设置执行此操作.
我不知道如何调试这个.谢谢你提供的所有帮助.
解决方法
我正在使用InAppSettingsKit本地化文本没有问题.我能想到的两件事你可以检查:你的Root.strings文件是否位于Settings.bundle的正确子目录中(英语和法语的en.lproj和fr.lproj?
Root.plist中是否有“Strings Filename”条目?它应该只包含一个值为“Root”的字符串