使用InAppSettingsKit本地化来自Settings.bundle的字符串

4
我正在尝试使用InAppSettingsKit来管理我的设置。这个库使用了Settings.bundle文件夹中的.plist文件和每种语言对应的.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",包括Root.plist文件。 [_bundle localizedInfoDictionary]返回(null)。对于英语和法语两种语言设置,它都是这样做的。
我不知道如何调试这个问题。感谢您能提供的任何帮助。
2个回答

1
我正在使用InAppSettingsKit和本地化文本,没有任何问题。我能想到的两件事情是你可以检查的:你的Root.strings文件是否位于正确的Settings.bundle子目录中(en.lproj和fr.lproj用于英语和法语)?
你的Root.plist中是否有一个“Strings Filename”条目?它应该只包含一个值为“Root”的字符串。

0

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

NSBundle类参考

它引用了以下内容:

资源编程指南

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

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

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接