Le terme n’étant pas connu de tous, il est préférable de débuter ces quelques lignes par une petite explication sur la localisation : la localisation permet à votre application de détecter la langue utilisée par le périphérique et proposer ainsi du contenu de la même langue.
Ainsi, avec une seule et même application :
- si un Français l’utilise, il aura une application en Français
- si un américain la télécharge, il l’aura également dans sa langue
- si un suédois la télécharge et que vous ne disposez pas d’une traduction en suédois, vous pourrez par exemple lui proposer la version anglaise.
Récemment nous avons du, pour le compte d’un client, localiser (traduire) une application iPhone en plusieurs langues. Lors du développement initial de l’application, nous n’avions pas anticipé cette évolution et donc rien n’était prévu en ce sens. Par exemple, certains textes étaient embarqués dans les images. Grave erreur! La conversion de l’application en multilingues a été une vraie gageure et nous a servi de leçon.
Dans un premier lieu, à part dans des cas extrêmes, il ne faut pas embarquer les textes dans les images, il faut préférer des UILabel que l’on pourra traduire aisément. Les libellés sont regroupés dans le fichier Localizable.strings avec une version par langue. Il s’agit d’un fichier simple avec mécanisme de clé/valeur. Par héritage du développement en Java, j’ai pour habitude d’utiliser des clés en majuscule mais rien n’est imposé de facto.
Lors de la création de ce fichier et des variantes dans chaque langue, veillez à bien gérer votre gestionnaire de code source. Dans notre cas, il s’agit de SVN. Pourquoi cette remarque? Il est intéressant d’étudier la structure physique (sur votre disque) de ces fichiers de localisation. Pour chaque langue, un dossier nommé xx.lproj (exemple: fr.lproj) est créé et regroupe tous les fichiers localisés dans cette langue. On y retrouvera donc un fichier physique Localizable.strings. Dans le projet sous Xcode, on retrouvera sous le nom de fichier Localizable.strings, toutes les variantes linguistiques (exemple: fr). Comme l’archivage physique de ces données de localisation est fait dans des répertoires, il faut bien veiller à les intégrer correctement dans SVN (ou autre outil de gestion de code source).
Dans certains cas, pour des raisons d’esthétisme évidentes, il est tout à fait possible de localiser les images et d’avoir dans ce cas une image par langue. L’iPhone (ou l’iPad), comme pour les textes, choisira automatiquement la bonne image en fonction de la langue actuelle du périphérique. Les images seront physiquement stockées dans le répertoire de type xx.lproj (comme pour le fichier Localizable.strings).
Il est également possible de localiser le nom de l’application. Pour cela il faut activer l’option « Application has localized display name« dans le fichier Info.plist et créer un fichier InfoPlist.strings avec la clé « CFBundleDisplayName ».
Il est certain qu’à l’avenir nos applications seront localisées par défaut ce qui permettra, entre autres, de fournir au client l’ensemble des libellés utilisés dans l’application afin qu’il affine le « Wording » de l’application.
Et vous, localisez-vous vos applications par défaut?








