跨多个目标本地化iOS应用程序

时间:2013-05-13 17:57:14

标签: ios localization storyboard multiple-instances

我的应用程序有几个目标。我试图以不同的方式本地化它们。我发现在处理Localizable.strings文件和NSLocalizedString宏时,这很容易。为了实现这一点,我只需调整我正在使用的目标的Localizable.strings文件的目标成员资格。所以我的项目文件结构类似于:

  • 项目
    • Target1时
      • en.lproj
        • Localizable.strings
      • it.lproj
        • Localizable.strings
    • TARGET2
      • en.lproj
        • Localizable.strings
      • it.lproj
        • Localizable.strings

现在我的项目有2个目标正在建立完全不同的英文翻译。完美,这就是我想要的。

当我尝试对本地化视图时生成的* .strings文件执行相同操作时,我的困难开始发挥作用。我的部署目标是6.0,我正在使用具有基础国际化的故事板。因此,当我向项目结构添加视图时,它将如下所示:

  • 项目
    • Target1时
      • Base.lproj
        • SomeStoryboard.storyboard
      • en.lproj
        • Localizable.strings
        • SomeStoryboard.strings
      • it.lproj
        • Localizable.strings
        • SomeStoryboard.strings
    • TARGET2
      • en.lproj
        • Localizable.strings
        • SomeStoryboard.strings
      • it.lproj
        • Localizable.strings
        • SomeStoryboard.strings

我的目标是让每个目标针对每个目标进行不同的本地化,同时保持相同的Base故事板。我还想避免这样的事情:命名目标2故事板字符串文件,如REPLACEMENT_SomeStoryboard.string,然后编写一个脚本,为给定目标中的每个文件命名,删除SomeStoryboard.string并将REPLACEMENT_SomeStoryboard.string重命名为SomeStoryboard.string。

尝试#1

所以我试图删除target1 en.lproj / SomeStoryboard.strings&来自target2成员资格的it.lproj / SomeStoryboard.strings。但是这也从target2成员资格中删除了Base.lproj / SomeStoryboard.storyboard。因此,基本上会员资格就像是一个文件一样被管理,这是有道理的。

尝试#2

我尝试的第二件事是将target1 SomeStoryboard.storyboard添加到target2的成员资格,并创建SomeStoryboard.strings文件并将其添加到target2的成员资格。我尝试将这个额外的字符串文件添加到Copy Bundle Resources阶段。我还尝试添加复制文件阶段(在复制捆绑资源阶段之后)。无论哪种方式,它似乎只偶尔从target1替换SomeStoryboard.strings。因此,最终结果是有时target2从target1获取了本地化,有时它从target2本地化。

1 个答案:

答案 0 :(得分:1)

尝试使用http://smoothlocalize.com/中描述的方法(单击第一个主框中的第一个教程)。您下载了一个小型库,允许您使用Localizable.string作为资源字符串,就像对.m文件一样。