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.strings所选语言的文件路径,所以我猜测该方法localizedStringForKey:value:table:必须使用一些指向正确路径的全局系统引用。

我已经确认字符串文件名周围都是“Root.strings”,带有大写字母 R,包括在 Root.plist 文件中。

[_bundle localizedInfoDictionary]返回(空);它针对英语和法语两种语言设置执行此操作。

我不确定如何调试它。谢谢你提供的所有帮助。

4

2 回答 2

1

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

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

于 2012-12-30T14:55:08.313 回答
0

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

NSBundle 类参考

这是指以下内容:

资源编程指南

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

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

在此处输入图像描述

于 2013-01-09T18:51:42.103 回答