我正在尝试构建一个允许动态加载Localizable.strings文件的库。如果以编程方式开发视图,那么这不是问题,因为我可以构建一个单独的NSBundle,将.strings文件存储在其中,并使用NSLocalizedStringFromTableInBundle。
我遇到的问题在于故事板。我还没有设法找到一种方法来指定加载哪个.strings文件(而不是使用Apple使用的默认.strings)。
有没有人知道这方面的解决方案?它甚至不必遵循相同的方法,只要我可以动态更新Storyboard上的字符串。 (在应用启动时,字符串将通过API调用从外部源下拉)
答案 0 :(得分:0)
为了克服我遇到的问题,我在Storyboard的视图集上为每个对象创建了IBOutlets。在每个视图的实现文件中,我通过使用NSLocalizedStringFromTableInBundle以编程方式设置每个对象的文本/值,这允许我指定一个自定义包,可以用字符串文件填充。
如果项目同时具有编程和故事板开发的视图,则此方法还允许仅使用一个Localizable.strings文件,而不是混合使用Storyboard生成的文件,以及仅用于编程视图的文件(如果适用) )。
不幸的是,上述方法不允许通过API调用从外部源下载字符串。这样做的原因是,Apple不允许在构建之后编辑应用程序包中的任何文件。
因此,解决方案是在应用程序的DocumentsDirectory中构建数据结构,并在必要时对其进行编辑,然后强制应用程序使用此文件/库以获取本地化字符串。不是一个漂亮的解决方案,但它是我能想到的最佳方法。