Internationaliser vos applications Android [Tutoriel Android n°14]
Bonjour à tous, aujourd’hui nous allons apprendre à internationaliser nos applications Android, car faire une application Android c’est bien mais faire une application Android internationalisée c’est mieux. Ceci peut être extrêmement pratique pour augmenter le nombre de téléchargement de votre application sur le Market (et oui si on touche un public plus important on a forcement plus de téléchargements ! )
Pour ceux qui en ont un peu marre de coder à tout va, nous allons faire une petite pause aujourd’hui, car nous allons très peu de coder.
Par défaut, les fichiers xml présent dans le dossier values et les images contenu dans le dossier drawable correspondent inévitablement à la langue par défaut c’est à dire l’anglais. Nous allons donc commencer par mettre le drapeau du Royaume-Unis (trouvé ici) dans le dossier drawable et renommez-le flag.png. Ensuite allons dans le fichier string.xml situé dans le dossier res >>> values et nous allons modifier la Value pour chaque éléments de ressources. Donc pour le champs app_name mettez comme valeur : Internationalize an Android application | tutomobile.fr et pour le champs hello mettez comme valeur : Hello, this Android Application is in English!
Code XML
Je vous avais promis qu’il n’y aurai que très peu de code je vais donc tenir ma parole, nous allons simplement rajouter une ImageView dans le fichier main.xml, qui devrait ressembler à ceci :
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal|center_vertical" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/flag" android:paddingBottom="20dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
Voilà c’est fini pour le code!
Maintenant si vous lancer votre application vous devriez voir apparaitre ceci :
Bon jusque là rien de bien nouveau, c’est comme un simple Hello World. Maintenant passons à la petite subtilité.
Internationaliser le texte
Parcourez les menus Files >>> New >>> Android XML File et appelez ce nouveau fichier string.xml. Vous allez surement me dire « oui il est bien gentil celui-là mais il existe déjà ce fichier ! »
donc oui il existe déjà mais nous allons faire la version française. Pour cela nous allons sélectionner Language dans la colonne Available Qualifiers et cliquer sur la petite flèche vers la droite pour faire passez Language dans la colonne Chosen Qualifier. Ensuite taper les deux lettre « fr » dans la petite boîte de dialogue qui vient d’apparaître à droite de la fenêtre. Votre fenêtre devrait ressembler à ceci :
Ensuite cliquez sur Finish. Nous allons donc éditer le nouveau fichier string.xml situé dans le dossier res >>> values-fr et ajouter les couple Name/Value suivant : « hello/Bonjour, cette application est en français! » et « app_name/Internationaliser une application Android | tutomobile.fr« .
Internationaliser les images
Nous allons passer à l’internationalisation des images. Créez un dossier drawable-fr-rFR dans le dossier res. Puis mettez l’image du drapeau français (trouvé ici) dans ce nouveau dossier drawable-fr-rFR en n’oubliant pas de le renommer flag.png.
Et voilà nous en avons fini avec les manip’ sous Eclipse vous pouvez lancer votre application… Et normalement vous devez toujours avoir votre texte et votre image en anglais
Ne vous inquiétez pas c’est normal car la langue de l’émulateur est réglé par défaut sur l’anglais. Il suffit dont de modifier la langue du téléphone et allant sur l’application Custom Locale situé dans le volet des applications de l’émulateur. Sélectionnez fr —> French avec un appui long puis cliquez sur Apply. Voilà désormais l’émulateur est en français, relancez votre application et vous devriez voir apparaître ceci :
Donc là nous avons fais un exemple d’application français/anglais mais nous pouvons rajouter toutes les langues que nous voulons comme par exemple l’espagnole :
C’est terminé pour aujourd’hui, j’espère que ce tuto vous a plu (n’oubliez pas de cliquer sur le petit « + » en haut à droite du tuto, merci) et je vous dis à très vite pour un prochain tuto Android. Continuez à nous soutenir via Twitter et FaceBook, cela nous pousse à continuer et merci pour votre soutien.

Cette création par Tuto Mobile est mise à disposition selon les termes de la licence Creative Commons Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique 3.0 Unported.
Encore un peu de lecture :
-
Gestion des Preferences [Tutoriel Android n°25] -
Uri Scheme [Tutoriel WebApps n°2] -
Mon premier Widget sous Android [Tutoriel Android n°25]










bonjour,
je te remercie pour ce article il très intéressant,
il y a aussi cette fonction pour récupère le texte d’un string
String string = getString(R.string.hello);
Oui cette fonction est utile lorsque l’on souhaite récupérer la valeur d’un TextVIew dans le code JAVA mais là je n’en ai pas besoin…
Bonjour,
j’ai utilise pour la fonction setIndicator de TabHost, et dans les comparaison de chaine
a+
Great article, thanks for sharing this. I have subscribed to your RSS feed and am looking forward to reading more from you.
Keep up the good work and don’t stop posting please.
Yeah, ca c’est un tuto super utile ! Merci encore bravo
@Steph : Merci
Très bon tuto simple et utile.
Bonne continuation !!
Salut Axon,
Peux-tu donner les codes des principaux pays ? (fr=France)
J’imagine en pour anglais…
Merci d’avance si tu les as.
@cad13 : Pas de problème !
Allemand –> de
Anglais –> en
Espagnol –> es
Français –> fr
Italien –> it
Japonnais –> ja
Coréen –> ko
Néerlandais –> nl
Polonais –> pl
Russe –> ru
Chinois –>zh
Merci pour cet article qui m’a bien aidé.
J’ai développé une application hydraulique pour mon besoin personnel (nommée Colebrook). Puis, vu le travail, j’ai décidé de la publier en licence GPL. Elle est en anglais et en français, et fonctionne bien dans les 2 langues (selon le paramétrage de la langue du téléphone). Je pensais que si un espagnol la téléchargeait, il l’aurait en anglais car c’est la langue déclarée par défaut sur le market.
Mais si je mets mon téléphone en espagnol ou en italien et que j’installe l’application, elle plante au lancement.
Quelqu’un aurait-il une idée.
Merci
J’ai trouvé la solution tout seul : les fichiers correspondant à la langue par défaut doivent être directement dans les répertoires natifs (res/values, res/raw..). Dans mon projet, il s’agit des fichier en langue anglaise.
Les fichiers de traduction, dans mon cas en langue française, doivent être dans les répertoires res/values-fr, res/raw-fr…
S’il y avait des fichiers espagnols, ils seraient dans res/values-es, res/raw-es…
Si un polonais télécharge l’application et que sa langue n’est pas prévue dans l’application, le système choisira la langue par défaut, présente dans les répertoires natifs (res/values, res/raw..), c’est à dire l’anglais.
a+
Super tuto, bien expliqué. Merci
Merci pour ce super tuto comme toujours…
Petite précision, pour moi en nommant le dossier « drawable-fr-rFR » cela ne marchait pas mais en le nommant « drawable-fr » bien. Mais je travaille avec android 2.2 c’est peut-être ça
Ton site commence à devenir de plus en plus indispensable pour moi. Continu comme ça!
J’ai commencé à adapter mon application à plusieurs langues. Mais j’aurais voulu savoir s’il est possible de prévoir le changement de la langue directement dans l’application.
D’après ce que j’ai compris le choix de la langue ce fait automatiquement en fonction de la langue du téléphone. Mais si un gars anglais décide de passer en français … Est-ce qu’il est obligé de mettre son portable en français ?
A la base j’avais prévu d’utiliser cette méthode et de mettre un bouton « langue » dans le menu de mon application qui permettait de choisir sa langue. Mais là je vois pas comment concilier les deux.
Merci d’avance.
Encore bravo pour tout tes tutos.
Je me pose la même question que Vlad depuis pas mal de temps : comment paramétrer le changement de langue dans le programme?
quelqu’un connait-il la réponse?
Merci
Merci pour le site et les tutos.
J’ai particulièrement adoré le tutos sur sqlite te android. En une nuit, j’ai cerné tout ce qu’il faut faire et très bien. J’ai beaucoup ramé avant de tombé sur ce site et je suis fière de voire que les tutos aident vraiment à avancer. Je ne manquerais pas de partager le site avec mes camarades de la fac.
J’aimerais avoir un tutos sur l’échange de document avec android et une machine via une url.
Merci pour ce site vraiment, c’est trop cool
Super tuto et merci beaucoup pour ce que tu fais c’est en grosse partie grâce à toi que appris tout ce que je sais sur comment développer avec Android
J’aurais tout de même une question, sais-tu comment je pourrais faire pour changer le contenu de mes messages à l’intéreur du code ?
Par exemple pour un Toast.makeText, comment puis-je faire pour changer le contenu en fonction du pays ?
merci d’avance !
Bonne continuation !