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屏幕截图,了解确切地找到目标中更改的设置的位置.
在目标构建设置中,指定了不同的plist文件(注意:当您添加新目标时,XCode会自动为您执行此操作)

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

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

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

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

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

本地化新的InfoPlist.strings文件:

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

| 归档时间: |
|
| 查看次数: |
11375 次 |
| 最近记录: |