【问题标题】:Localizing strings from the Settings.bundle using InAppSettingsKit使用 InAppSettingsKit 从 Settings.bundle 本地化字符串
【发布时间】:2011-10-22 07:17:39
【问题描述】:

我正在尝试使用 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] 返回 (null);它针对英语和法语两种语言设置执行此操作。

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

【问题讨论】:

    标签: ios localization settings.bundle


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      NSBundle Class Reference

      指的是以下内容:

      Resource Programming Guide

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-25
        • 2011-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-17
        • 1970-01-01
        • 2023-03-18
        相关资源
        最近更新 更多