使用InAppSettingsKit从Settings.bundle本地化字符串

时间:2011-10-22 07:17:40

标签: ios localization settings.bundle

我正在尝试使用InAppSettingsKit来管理我的设置。这将使用带有.plist文件的Settings.bundle和要翻译的每种语言的.strings文件。

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

我认为它来自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);它正在为英语和法语两种语言设置执行此操作。

我不确定如何调试它。感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:1)

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

Root.plist中是否有“Strings Filename”条目?它应该只包含一个值为“Root”的字符串

答案 1 :(得分:0)

自从我解决这个问题已经有一段时间了,当时我并没有完全理解它。但是,为了结束这个问题,我将指出以下文档以供将来参考:

NSBundle Class Reference

指的是以下内容:

Resource Programming Guide

在第二个文档中,请参阅“字符串资源 - >将字符串资源加载到代码中”部分

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

enter image description here