Ios 使用InAppSettings工具包本地化Settings.bundle中的字符串

Ios 使用InAppSettings工具包本地化Settings.bundle中的字符串,ios,localization,settings.bundle,Ios,Localization,Settings.bundle,我正在尝试使用InAppSettingsKit管理我的设置。这将使用Settings.bundle和一个.plist文件以及被翻译的每种语言的.strings文件 我可以使用设置应用程序确认字符串的翻译在我的应用程序之外正常工作。但当我在我的应用程序中时,翻译不会发生 我认为可以归结为这样的代码,来自InAppSettingsKit类IASKSettingsReader,其中包含一些我认为有用的日志语句: - (NSString*)titleForStringId:(NSString*)stri

我正在尝试使用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:
必须使用指向正确路径的全局系统引用

我已经确认strings文件名为“Root.strings”,大写字母R,包括在Root.plist文件中

[\u bundle localizedInfoDictionary]
返回(null);它在英语和法语两种语言环境下进行此操作


我不知道如何调试这个。感谢您提供的帮助。

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


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

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

指的是:

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

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