Ios Xcode情节提要:从不同的文件加载可本地化的字符串

Ios Xcode情节提要:从不同的文件加载可本地化的字符串,ios,objective-c,iphone,xcode,nslocalizedstring,Ios,Objective C,Iphone,Xcode,Nslocalizedstring,我正在尝试构建一个库,允许动态加载Localizable.strings文件。如果视图是以编程方式开发的,那么这不是问题,因为我可以构建一个单独的NSBundle,将.strings文件存储在其中,并使用NSLocalizedStringFromTableInBundle 我的问题在于故事板。我还没有找到指定从哪个.strings文件加载的方法(而不是使用Apple使用的默认.strings) 有人知道这个问题的解决方案吗?它甚至不必遵循相同的方法,只要我可以动态更新故事板上的字符串。(在应用程

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

我的问题在于故事板。我还没有找到指定从哪个.strings文件加载的方法(而不是使用Apple使用的默认.strings)

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

从单独的捆绑包/字符串源加载字符串 为了克服这个问题,我为故事板视图集合中的每个对象创建了iboutlet。在每个视图的实现文件中,我通过使用NSLocalizedStringFromTableInBundle以编程方式设置每个对象的文本/值,它允许我指定一个自定义捆绑包,该捆绑包可以用字符串文件填充

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

通过API调用将字符串加载到应用程序中 不幸的是,上述方法不允许通过API调用从外部源下载字符串。原因是,苹果不允许在应用包中的任何文件在构建后进行编辑


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

在[Base Internationalization][1]上查看这个答案。[1] 当前位置我采取了不同的方法。虽然基本国际化指南确实有帮助,但它留给我的是一个充满对象ID的.strings文件,这可能是不切实际的(不确定苹果为什么不允许用户指定objectName并使用此设置值)。