Internationaliser application

Bonjour,


 


Je débute sur xcode (4.6) et souhaiterai internationaliser une application.


J'utilise correctement Localizable.strings pour le texte en dur mais j'ai également des images à  "localiser".


 


Elles se trouvent dans un répertoire "images" puis des sous répertoires selon l'appareil (ipad, iphone...).


J'ai cliqué sur chaque image puis sur "Localize" et sélectionné les langues désirées.


Un répertoire pour chaque langue s'est créé dans le répertoire adéquat.


 


J'ai remplacé les images "françaises" par celles désirées.


 


Mais cela ne fonctionne pas, seuls les images françaises apparaissent dans l'appli.


 


 


Ce qui est assez troublant, c'est que dans le mainstoryboard (peu importe sa langue), les images sont mélangées, des images espagnoles s'affichent au milieu d'images françaises par exemple.


 


Qu'ai-je donc fais de mal ou n'ai pas fait ?


 


Merci.


Mots clés:

Réponses

  • Comment les images sont chargées dans l'application?


    À ma connaissance, la localisation permet d'adapter des strings et des .xib, mais dans ton cas c'est la méthode pour charger les images qui devrait être localisée.


  • CéroceCéroce Membre, Modérateur
    avril 2013 modifié #3

    Le build est fainéant: il va ajouter le répertoire es.lproj, mais pas retirer les anciennes ressources de la racine du bundle de l'appli.


     


    Retire l'appli du simu / iPhone et refais un Run.


  • Merci de vos réponses !


     


    La majorité des images sont directement implantées sur les mainstoryboard.


     


    Le build a bien retiré les anciennes ressources des repertoires de "images" pour les mettre dans les .lproj.


    Ce qui est donc étrange, c'est que seules les fr.lproj apparaissent et ceux quelle que soit la langue.


     


    J'ai beau avoir réinitialisé le tout, il continue ainsi.


     


     


    Une autre question concernant les Localizable.strings, j'ai des bugs à  la con qui surviennent constamment. Du genre, ne plus prendre en compte les changements dans ces fichiers, et cela malgré avoir tout redémarré... comme si un système de cache se mettait en place.


     


    Je fais un pas en avant, le logiciel recule de deux, je reviens à  des bugs ultérieurs sans cesse.



  •  


    Une autre question concernant les Localizable.strings, j'ai des bugs à  la con qui surviennent constamment. Du genre, ne plus prendre en compte les changements dans ces fichiers, et cela malgré avoir tout redémarré... comme si un système de cache se mettait en place.

     



     


    J'ai eu aussi pas mal de souci avec Localizable.strings. À chaque fois il manquait un ; ou un = dans les modifs que j'avais faites.


    Un petit Clean permet de purger les caches récalcitrants.


     


    Capture%20d%E2%80%99%C3%A9cran%202013-04


  • J'ai réussi !


     


    Pour Localizable.strings, me suis pas trop pris la tête, je l'ai supprimé ! (et recréé)


    Et miracle, ça corrige pas mal de mes problèmes.


     


    Pour les images, ça fonctionne aussi, des subtilités très connes. Il faut sélectionner la cible impérativement car étrangement, elle saute dès qu'on "localise".


     


    Merci et à  bientôt :)


  • CéroceCéroce Membre, Modérateur


     


    Pour les images, ça fonctionne aussi, des subtilités très connes. Il faut sélectionner la cible impérativement car étrangement, elle saute dès qu'on "localise".




    C'est bon à  savoir. Peux-tu nous dire quelle version de Xcode tu utilises ?

  • J'utilise xcode 4.6.2.


     


    Et mon problème de Localizable.strings dont les modifs ne sont plus prises en compte est de nouveau de retour ^^


     


    Un clean ne change rien, j'ai beau rebuilder x fois, ça ne bouge pas.


    Je le vide complètement, il n'en tient même pas compte.


     


    Je crois que cette version d'xcode a quelques soucis.


  • jojolebgjojolebg Membre
    avril 2013 modifié #9

    J'ai eu récemment un soucis avec les Localizable.strings car j'utilise cocoapods.


    Plusieurs de mes dépendances avaient aussi des fichiers fr.lproj/Localizable.strings et je me suis rendu compte que seulement 1 seul Localizable.strings était pris en compte.


     


    Moralité: avoir seulement un fichier Localizable.strings dans son application et par la meme occasion avoir une seul occurrence de xxx.strings dans son application.


  • CéroceCéroce Membre, Modérateur


     


    Un clean ne change rien, j'ai beau rebuilder x fois, ça ne bouge pas.


    Je le vide complètement, il n'en tient même pas compte.


     




    Tente de virer les Derived Data (Organizer > Projects), c'est le seul moyen de refaire entièrement le build, et ça résout pas mal de problèmes. 


    (avec les ressources et leur traductions, on a souvent des problèmes, et ma solution habituelle pour les régler est de désinstaller l'appli, et de virer les derived data, et là , on est sûr que c'est propre).

  • AliGatorAliGator Membre, Modérateur


    Moralité: avoir seulement un fichier Localizable.strings dans son application et par la meme occasion avoir une seul occurrence de xxx.strings dans son application.




     


     


    Ou alors utiliser les trucs que j'ai expliqué dans ma conf CocoaHeads-Rennes#12 pour faire des workspaces avec des librairies distinctes qui ont chacune leurs propres ressources, du coup chaque lib peut avoir son propre Localizable.strings indépendant des autres. Bon certes dans ce cas il faut adapter les macros utilisées à  la place de NSLocalizedString (mais bon perso j'ai toujours une macro _T(x) plutôt que le long NSLocalizedString(x, ...) c'est plus simple et plus court à  écrire, donc du coup facile à  adapter pour ce cas aussi) pour que chaque lib pioche dans son propre Localizable.strings et pas celui du voisin, mais ça se fait. Faut juste organiser et configurer proprement son workspace.


     


    Mais tel qu'est fait CocoaPods actuellement, à  savoir générer une unique librairie libpods.a au final et copier toutes les ressources dans le projet de l'appli, au risque d'avoir des conflits sur des fichiers de même nom comme Localizable.strings, par contre ça marche pas. J'en ai déjà  causé avec le mec de CocoaPods, pour la prochaine version ils sont en train d'étudier la question pour migrer vers ma solution (un projet par librairie) pour éviter ce genre de conflit entre les ressources, les build settings & co entre chaque projet. Mais bon y'a du boulot de leur côté donc je sais pas si ça sera dispo de suite (et j'ai pas trop de temps à  leur accorder en ce moment pour leur filer un coup de main sur le sujet :-/)

  • Pour le moment la solution que j'ai retenu c'est d'avoir un dossier malib.bundle dans mes libs, et dans ce dossier mettre toutes les ressources concernant la lib (dont le fameux Localizable.strings).


     


    Mais ce que j'aurai aimé, c'est de pouvoir surcharger au niveau du projet principal, certaine ressources de certaines libs.


    Par exemple un lib X à  des images pour stylisé l'interface. Mon projet utilise la lib X, mais veut rédéfinire l'interface en changé les images, cela n'est pas automatiquement possible avec les bundle.


    A terme je me ferais un macro que j'utiliserais dans mes libs du style: _T(@MonBundle, @MaChaineATraduirequi irait d'abord voir dans le main bundle, si une traduction existe, et si aucune traduction existe utilisé la traduction de MonBundle. Et un truc similaire pour les images, les fichiers etc...


  • Bonjour,


     


    Me revoici pour une nouvelle traduction ! (et de nouveaux problèmes)


     


    Je viens d'ajouter l'allemand au projet et les .xib ont perdu leur localisation... les .xib français ont tout simplement disparus.


     


    Certes, il ne me faudra pas trop de temps pour les remettre en place, mais si à  l'avenir ça se passe toujours ainsi, ça va vite prendre le choux.


     


    Déjà  rencontré ce problème ?


     


    Merci.


  • MG105MG105 Membre
    août 2013 modifié #14

    Salut Robinson86,


     


    Voici une page qui pourrait aider : http://www.raywenderlich.com/2876/how-to-localize-an-iphone-app-tutorial


     


    Sinon, dis moi, as-tu pu facilement localiser les textes en durs ? Si oui, pourrais-tu me donner ta procédure, car de mon côté, bizarrement, ça bloque.


     


    Voici ma procédure :


     


    Je cherche juste à  tester une application multilangue (Anglais, Français, Italien).


     Capture%20d%E2%80%99%C3%A9cran%202013-08


    1/ J'ai donc créé mes différents languages et mes fichiers "Localizable.strings" (voir image ci-dessus).


    2/ Dans le storyboard, j'ai créé un label.


    3/ Dans le fichier "ViewController.h", il y a ceci :



    #import <UIKit/UIKit.h>

    @interface ViewController : UIViewController

    @property (weak, nonatomic) IBOutlet UILabel *monLabel;


    @end

    4/ Dans mon fichier "ViewController.m", il y a ceci :



    @implementation ViewController
    @synthesize monLabel;

    - (void)viewDidLoad
    {
    [super viewDidLoad];
    [monLabel setText: NSLocalizedString (@ "KEY", nil)];

    // Do any additional setup after loading the view, typically from a nib.
    }

    - (void)didReceiveMemoryWarning
    {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
    }

    @end

    5/ Dans le fichier "Localizable.strings (English) : 



    "KEY" = "Anglais"; 

    6/ Dans le fichier "Localizable.strings (French) : 



    "KEY" = "Français"; 

    7/ Dans le fichier "Localizable.strings (Italian) : 



    "KEY" = "Italien"; 

    >>>> Voilà , je lance mon simulateur, et lorsque je change de langue; il bug !


  • CéroceCéroce Membre, Modérateur
    août 2013 modifié #15

    Voilà , je lance mon simulateur, et lorsque je change de langue; il bug !


    Et concrètement, qu'est-ce qui se passe ? Tu n'as pas le bon texte ?
  • denis_13denis_13 Membre
    septembre 2013 modifié #16
    re-bonjour ...
    je ne sais pas si le sujet mérite une nouvelle discussion? mais je n'arrive pas à  ajouter une langue (le français) à  un projet sous XCode 5. Je voulais profiter du super code d'Olivier (OHAutoNIBi18n), pour cela j'ai ajouté un fichier avec toutes mes strings, car marche super bien, mais petits problèmes avec XCode... En premier quand j'ai choisi "localiser" il m'a proposé l'anglais uniquement, en suite il m'a déplacé mon main storyboard dans le dossier en.lproj. Je le l'ai dé-localisé tout en gardant mes strings localisées, mais même en créant à  la main un fr.lproj je n'arrive pas à  ajouter une localisation à  ce fichier. Avez vous rencontré ce problème?
Connectez-vous ou Inscrivez-vous pour répondre.