2009-11-27 4 views
18

J'ai un projet iPhone internationalisé. Dans les différents fichiers ${lang}.lproj/InfoPlist.strings j'ai une seule clé, CFBundleName = "My App Name".XCode - Cibles multiples, noms multiples * internationalisés *?

Cela fonctionne très bien pour une seule cible, mais je ne peux pas le faire fonctionner pour plusieurs cibles.

Je voudrais avoir plusieurs fichiers InfoPlistMyApp.strings traduits pour la cible principale, ainsi que plusieurs fichiers InfoPlistMyAppLite.strings pour la version allégée. Mais je ne peux pas comprendre comment le configurer. Le nom InfoPlist.strings semble être gravé dans la pierre, donc je ne peux pas le remplacer dynamiquement.

Des idées?

Répondre

34

Il s'avère que c'est assez facile, si laborieux. Vous pouvez avoir plusieurs InfoPlist.strings, one-enabled-per-target, et ils peuvent tous être internationalisés, tant que chaque ensemble est dans un groupe Xcode différent.

Mettre en place une structure de répertoire comme ceci:

.../AppName/ 
      en.lproj/InfoPlist.strings <-- Contains CFBundleDisplayName 
      it.lproj/InfoPlist.strings <-- ... 
      ... 
.../AppNameLite/ 
      en.lproj/InfoPlist.strings <-- ... 
      it.lproj/InfoPlist.strings <-- ... 
      ... 

importer ces fichiers dans des groupes Xcode, il ressemble à ceci:

alt text

Faites un clic droit "Groupes & Files" (en haut à gauche de Xcode) et assurez-vous que "Target Membership" est visible, puis passez en revue vos cibles, en vérifiant que le bon jeu de chaînes est activé pour chacune.

+0

fonctionne parfaitement encore! –

+0

peut confirmer que cela fonctionne sur xcode 9. excellent travail !! –