TIP: Changer la langue par défaut d’une application en debug

Si vous développez des applications en plusieurs langues, vous testez certainement celles-ci dans toutes les langues sur votre appareil.
Voici une petite astuce pour éviter de vous faire changer la langue du téléphone dans les Réglages et perdre quelques secondes à attendre que le SpringBoard redémarre.

Avec Xcode, il est possible de passer à votre application en debug certains arguments qui seront pris en compte au lancement de votre application.

Si vous forcez le changement de langue (ou si vous vous y êtes intéressés à un moment), vous avez sans doute entendu parler du tableau de langues « AppleLanguages ». En changeant l’ordre des langues du tableau, vous définissez ainsi que la première langue sera celle utilisée par l’application.

Ce tour de force est possible en « écrasant » le paramètre utilisateur (NSUserDefaults) « AppleLanguages » avant la génération des interfaces (au début du AppDelegate en général). Ainsi, toutes les instructions NSLocalized[…] utiliseront la 1ère langue du tableau pour chercher la traduction.
Attention, vous prendrez note que les contrôleurs système (ActivityController par ex.) gardent la langue spécifiée au lancement de l’application, c’est à dire avant votre modification de « AppleLanguages ».
Les éléments système seront bien traduits au second lancement (si « AppleLanguages » ne change pas) car l’application lira votre tableau enregistré lors de la dernière session d’utilisation de l’application.

Pour palier à ce léger contre-temps et éviter d’introduire du code que l’on oublierait de retirer, nous allons utiliser les « Arguments passés au lancement ». Il s’agit ici de surcharger « AppleLanguages » avant que l’application ne se lance afin de tester notre produit dans une autre langue.
Pour cela, rendez-vous dans le menu Products > Scheme > Edit scheme…. Dans la fenêtre qui s’ouvre, choisissez Run dans la colonne de gauche, puis Arguments.
schemes-xcode-arguments
Ensuite, ajoutez la ligne suivante :

-AppleLanguages (English, French, Italian)

La ligne commence bien par un tiret, suivi d’un espace avant la parenthèse ouvrante. Les langues spécifiées dans les parenthèses doivent correspondre aux dossiers lproj où se trouvent vos traductions.

Lancez l’application et vous pourrez la visualiser dans la langue choisie.
Avec ce système, aucun risque d’introduire des erreurs de « forçage » de langue en production puisque les arguments sont définis en debug.

Toutefois, notez que cet argument change la langue principale et non pas le format régional qui restera celui choisi dans les Réglages de l’appareil.

Auteur: Benoit DELDICQUE

Actuellement en poste sur Strasbourg, je suis en charge de la conception et la réalisation d'applications iOS pour iPhone, iPad et iPod touch.

Articles similaires