【问题标题】:Xcode storyboards: Load localizable strings from different fileXcode 故事板:从不同的文件加载可本地化的字符串
【发布时间】:2014-09-17 00:45:48
【问题描述】:

我正在尝试构建一个允许动态加载 Localizable.strings 文件的库。如果视图是以编程方式开发的,那么这不是问题,因为我可以构建一个单独的 NSBundle,将 .strings 文件存储在其中,然后使用 NSLocalizedStringFromTableInBundle。

我遇到的问题在于情节提要。我还没有找到一种方法来指定要从哪个 .strings 文件加载(而不是使用 Apple 使用的默认 .strings)。

有没有人知道这个问题的解决方案?只要我可以动态更新情节提要上的字符串,它甚至不必遵循相同的方法。 (这些字符串将在应用启动时通过 API 调用从外部来源拉下)

【问题讨论】:

  • 在 [Base Internationalizing][1] 上查看此答案。 [1]:stackoverflow.com/a/12731497/2715819
  • 我采取了不同的方法。虽然 Base Internationalizing 指南确实有帮助,但它给我留下了一个充满对象 ID 的 .strings 文件,这可能是不切实际的(不知道为什么 Apple 不允许用户指定 objectName 并改为使用此设置值)。

标签: ios objective-c iphone xcode nslocalizedstring


【解决方案1】:

从单独的包/字符串源加载字符串

为了解决我遇到的问题,我为 Storyboard 视图集合中的每个对象创建了 IBOutlets。在每个视图的实现文件中,我使用 NSLocalizedStringFromTableInBundle 以编程方式设置每个对象的文本/值,它允许我指定一个自定义包,该包可以填充字符串文件。

如果项目同时具有程序化视图和情节提要开发视图,此方法还允许仅使用一个 Localizable.strings 文件,而不是混合使用情节提要生成的文件和仅用于程序化视图的文件(如果适用)。

通过 API 调用将字符串加载到应用中

很遗憾,上述方法不允许通过 API 调用从外部源下载字符串。这样做的原因是,Apple 不允许在构建后编辑 app bundle 中的任何文件。

因此,解决方案是在应用的 DocumentsDirectory 中构建数据结构,并在必要时对其进行编辑,然后强制应用使用此文件/库以获取本地化字符串。不是一个很好的解决方案,但这是我能想到的最佳方法。

【讨论】:

    猜你喜欢
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 2014-11-26
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多