具有本地化应用名称的多个目标的本地化项目

Pau*_*len 26 xcode localization dry ios info-plist

我最近将我的5个独立项目合并到一个项目中,以拥有一个共同的代码库.所以现在我有一个项目有5个目标.

每个目标具有相同的文件集,但每个目标不同的某些文件除外(例如Default.png和其他图标文件).我的应用程序被翻译成7种语言,默认为英语.其他语言包括:瑞典语,荷兰语,德语,法语,波兰语和西班牙语.
现在我还想根据使用的语言翻译应用程序的名称.例如,对于我的瑞典航空应用程序,该应用程序应该在瑞典语中称为"Flyget ARN",但对于英语,它应该被称为"航空ARN".这一切都不是问题,因为这是在完成InfoPlist.string,但结合这与应用程序的本地化是一个问题.

我最近写了这个问题:几个本地化仍然只显示英语,并发现我无法组合几个.strings文件.(见我写的答案).

所以我的问题如下:
如何从包含多个目标的项目中获得本地化应用程序,并且本地化我的应用程序名称而不会出现DRY违规(重复代码).

更新
这仍然是一个问题,给出的答案并不能解决我的问题.

Cla*_*fou 18

我在一个XCode项目中破解了这个问题,我认为,该项目解决了你所遇到的同样问题,所以希望这对你有所帮助.该解决方案包含两个使用相同代码库(具有不同的应用程序名称)构建的目标,这两个目标是完全本地化的,包括应用程序的名称.(它构建了我的免费增值应用程序,名为Growth(法语:Croissance,西班牙语:Crecer)和付费版本名为Growth +(法语:Croissance +,西班牙语:Crecer +).

我还偶然发现了InfoPlist.string文件(仅包含应用程序的名称).我通过在我的解决方案中使用子文件夹来解决这个问题,并更改目标以包含来自相关子文件夹的本地化InfoPlist.strings集.具体来说,我有这个结构:


    Root
    +-- en.lproj
    ¦   +-- Localizable.strings
    ¦   +-- SomeXib.xib
    +-- es.lproj
    ¦   +-- Localizable.strings
    ¦   +-- SomeXib.xib
    +-- fr.lproj
    ¦   +-- Localizable.strings
    ¦   +-- SomeXib.xib
    +-- OnlyInAppA
    ¦   +-- en.lproj
    ¦   ¦   +-- InfoPlist.strings
    ¦   +-- es.lproj
    ¦   ¦   +-- InfoPlist.strings
    ¦   +-- fr.lproj
    ¦       +-- InfoPlist.strings
    +-- OnlyInAppB
    ¦   +-- en.lproj
    ¦   ¦   +-- InfoPlist.strings
    ¦   +-- es.lproj
    ¦   ¦   +-- InfoPlist.strings
    ¦   +-- fr.lproj
    ¦       +-- InfoPlist.strings
    +-- AppA.plist
    +-- AppB.plist

我的目标(除了不同的预处理器符号和不同的.plist文件)之间的唯一区别是AppA的构建设置包括OnlyInAppA下的Info.Plist.strings文件,而AppB的构建设置包括OnlyInAppB下的Info.Plist.strings文件.

我个人认为,我使用的命名约定(OnlyInAppA/OnlyInAppB文件夹,AppB/AppB plist文件)显而易见,足以使其成为一种令人满意的方法.

编辑:

请查看这两个XCode 4屏幕截图,了解确切地找到目标中更改的设置的位置.

  1. 在目标构建设置中,指定了不同的plist文件(注意:当您添加新目标时,XCode会自动为您执行此操作) 构建设置截图

  2. 在目标构建阶段,在Copy Bundle Resources部分中,从相关的OnlyInAppX子文件夹中选择InfoPlist.strings的版本(请注意此屏幕截图中InfoPlist.strings旁边的灰色文本 - 这将显示另一个目标的不同位置) .您可以使用+/-按钮将文件替换为预期的文件来实现此目的. 构建阶段截图


Wla*_*ala 5

如果这个问题仍然存在:我找到了一个如何为项目中的每个目标添加多个InfoPlist.string的解决方案.请按以下步骤操作:

  1. 我假设你已经有多个目标.
  2. 转到Finder中的项目文件夹.
  3. 创建特定于每个目标的文件夹:

    创建文件夹

  4. 在每个文件夹中创建InfoPlist.strings文件:

    创建文件

  5. 向目标添加文件夹,为项目中的每个文件夹指定正确(且仅限!)的目标:

    将文件夹添加到目标

  6. 删除每个新目标的原始InfoPlist.strings文件的目标依赖项.

    删除旧.strings文件的目标依赖项

  7. 本地化新的InfoPlist.strings文件:

    本地化新文件 本地化新文件

  8. 通过更改语言设置来构建目标和检查:

    法语版 英文版