2011-10-22 42 views
4

我正在尝试使用InAppSettingsKit来管理我的设置。这将使用带.plist文件的Settings.bundle以及所翻译的每种语言的.strings文件。使用InAppSettingsKit从Settings.bundle本地化字符串

我可以使用设置应用程序确认我的字符串的翻译在我的应用程序之外正常工作。但是,当我在我的应用程序中,翻译没有发生。

我认为它归结为这样的代码,从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.strings文件的路径,所以我猜测localizedStringForKey:value:table:方法必须使用指向正确路径的某个全局系统引用。

我已确认字符串文件名全是“Root.strings”,大写字母R,包括Root.plist文件中。

[_bundle localizedInfoDictionary] returns(null);这是对英语和法语的两种语言设置。

我不知道如何调试。谢谢你提供的所有帮助。

回答

1

我使用InAppSettingsKit与本地化的文本没有问题。有两件事我可以想到,你可以检查:你的Root.strings文件位于Settings.bundle的正确子目录中(en.lproj和fr.lproj英文和法文?

是否有“字符串文件名”在你的Root.plist中它应该只包含一个字符串值“Root”

0

我解决这个问题已经有相当长的一段时间了,当时我还没有完全理解它。在结束本问题的关心,我会指向以下文件以供将来参考:

NSBundle Class Reference

是指以下内容:

Resource Programming Guide

在第二份文件,请参考“字符串资源 - >加载字符串资源到你的代码”

该解决方案包含一个正确配置的Root.strings文件,它显示在文件列表中,如下所示:

enter image description here