Adapter votre application dans la langue de votre utilisateur

Bonjour à tous ! Aujourd’hui je vais vous présenter un article qui va vous permettre d’adapter votre application dans n’importe quelle langue. En réalité ce n’est pas vrai, toutes les langues ne sont pas représentées, mais la quantité de langues me laisse à penser qu’on as une grande variété. Les langues locales ou régionales sont même représentées. Vous pouvez mêler au sein d’une même application du breton et du catalan et de l’anglais américain. N’est-ce pas fantastique ! L’application va tout simplement s’adapter dans la langue du téléphone de votre utilisateur, si vous l’avez prise en compte dans votre application.

Dans cet article, je vais vous présenter une application qui s’adapte dans plusieurs langues, J’expliquerai la notion de “qualifier”, je vous montrerai comment vous allez pouvoir ajouter une nouvelle langue et jouer sur les spécificités.

Présentation

La démonstration ci-dessous, va vous montrer les spécificités sur lesquelles on peut jouer lorsque qu’on veut que notre application s’adapte à un profil d’utilisateurs.

Dans cette courte démo, l’utilisateur ouvre son application qui est en anglais. Il change la langue anglaise par la langue française de son téléphone. Lorsque, il revient sur l’application le texte et l’image à l’écran ont changé. Comment est-ce possible ? Si vous vous posez cette question, c’est que vous êtes au bon endroit. Je vais vous expliquer, comment vous aller pouvoir procéder dans la suite de l’article.

Les qualifiers

Avant de vous expliquer comment rajouter une nouvelle langue, je dois vous introduire la notion de “qualifiers”.  Les “qualifiers” sont des spécificités rajoutées  à certains fichiers ressources. Quand je parle de spécificité, je parle de fichiers de ressources qui vont s’appliquer dans un certain type de cas. Par exemple le smartphone d’un utilisateur est en suédois, l’application peut alors s’adapter à la langue. “Le qualifier” suédois ajouté au fichier de ressource permet de spécifier à l’application que c’est ce fichier qui doit être pris en compte lors du lancement de l’application et pas un autre. Il existe un bon nombre de qualificateurs différents (taille, langues, orientation, etc…). Un fichier de valeur (fichier xml) peut-être qualifier par plusieurs “qualifiers”. Pour rajouter un qualificateur, il y a plusieurs règles à respecter :

  • On doit nommer le dossier du fichier comportant le nouveau qualificateur comme ceci, <nom_de_la_ressource>-<qualifier>. Par exemple, le qualifier suédois se traduit par le qualifier “sv”. On ajoute un nouveau fichier strings.xml avec nos textes en Suédois dans le dossier qu’on nomme notre dossier “values-sv”

image

  • Il y a un ordre à respecter dans l’ajout de qualifier.  Si vous, souhaiter aligner plusieurs qualificateurs, je vous invite à vous référer ici (la table 2) pour ne pas vous tromper. Par exemple prenons le cas d’une langue, elle peut être parlée dans plusieurs pays.  On peut donc  avoir un dossier comme suivant  pour les Français vivant en Belgique “values-fr-rBE”. Le sigle “fr” pour la langue française et “rBE” pour la localisation (français belge).
  • Si le qualificateur en question n’a pas été défini, c’est les fichiers de ressources par défaut qui sont pris en compte. Ils sont souvent utilisés pour la langue anglaise ou les formats de téléphone standard.

Ajouter une nouvelle langue

Pour ajouter une nouvelle langue, il faut ajouter un nouveau fichier “strings.xml”. C’est dans ce fichier qu’on aura l’ensemble de notre texte dans une autre langue. Pour ajouter ce nouveau fichier, il faut ajouter une nouvelle ressource (clic-droit sur le dossier value –> New  –> Value ressource file).

image

La pop-up “New ressource file” va s’afficher. Dans cette fenêtre on aura un bon nombre de choix pour qualifier la ressource. Pour une langue, on à deux choix de qualificateurs utiles :

New Ressource File

Le qualificateur Country Code : Il correspond à L’indicatif du pays du mobile. Il est pris en compte par la carte SIM de votre téléphone lorsque vous souscrivez à un abonnement. Si vous devez spécifier uniquement en fonction de la langue, utilisez plutôt le qualificateur “Locale”. Les différents codes pays, sont accessibles ici.

image

Le qualificateur Locale : Il correspond à la langue et région du périphérique. Souvent, la langue utilisée est définie dans les paramètres de l’appareil. La langue est définie en premier suivi de la région, s’il y en une de défini. Le “r” en préfixe est utilisé pour distinguer la partie région. Une région ne peut pas être spécifiée seule. Les différents pays et régions sont accessibles ici.

Pour notre part, on utilisera le qualificateur Locale. Ce qui nous intéresse c’est la langue choisie par l’utilisateur plutôt que la langue choisie par l’opérateur. Par défaut, les fichiers de ressource seront en langue anglaise. Je vais ajouter une nouvelle langue pour permettre d’avoir une variante, si on change la langue du téléphone.

image

J’ai choisi la langue “french” française, je n’ai pas spécifié de région “Any Region”. Lorsque le téléphone sera en français, le fichier strings.xml du dossier “value-fr/strings” sera appelé.

image

Il ne reste plus qu’à configurer, Les fichiers string.xml et le fichier activity_main.xml.

La configuration

main_activity

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
xmlns:app=”http://schemas.android.com/apk/res-auto”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:gravity=”center”
android:orientation=”vertical”
tools:context=”.MainActivity”>

<TextView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/Hello”
android:textSize=”32dp”
android:textStyle=”bold”
android:textColor=”#000000″
/>
<ImageView
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
app:srcCompat=”@drawable/flag”
android:id=”@+id/imageView”/></LinearLayout>

android:text=”@string/Hello”  signifie que je vais venir afficher la valeur (le texte) de l’attribut “Hello” contenue dans le fichier string.xml.

app:srcCompat=”@drawable/flag”  signifie que je vais venir chercher dans le dossier “drawable” l’image qui correspond à “flag”.

string.xml

<resources>
<string name=”app_name”>Langues</string>
<string name=”Hello”>Hello World!</string>
</resources>

string.xml (fr)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Langues</string>
<string name="Hello">Bonjour tous le monde !</string>
</resources>

Les deux fichiers possèdent les mêmes noms d’attributs mais ils possèdent des valeurs différentes. L’attribut “hello” est appelé dans le fichier activity_main.xml, la valeur qui est prise en compte dépend de la langue du périphérique android.

Pour aller plus loin

Avec les qualificateurs, on peut faire faire des applications avec beaucoup de spécificité. On peut adapter, l’application à un type d’écran par exemple notamment en jouant sur la taille de l’écran. Je vous invite, à lire l’article “Comment adapter son application au format de l’écran ?” qui permettra d’en savoir un peu plus sur les particularités des tailles d’écran.

Pour aller plus loin, je vais vous montrer comment vous allez pouvoir insérer des images avec le même nom qui change selon la langue du périphérique Android. Pour ce faire, j’utilise les deux images ci-dessous :

Ces deux images portent le même nom “flag”. Dans le fichier “main_activity.xml”, une des deux images sera appelée. Grâce à l’attribut app:srcCompat=”@drawable/flag”. Android fera alors la distinction en fonction de la langue définie par l’utilisateur. Pour ajouter, une des images il suffit de faire un copié-coller où de déplacer l’image dans le dossier “drawable”.

Lorsque le pop-up s’ouvre, il faut spécifier pour l’une des images un chemin différent. Ci-dessous, pour l’image représentant le drapeau français, j’ai rajouté le qualificateur “-fr” . Ce qualificateur précise à android que c’est cette image qui sera appelée, si la langue de l’appareil est française.

Pour l’autre image, qui est celle par défaut je définis donc le chemin classique.

Merci d’avoir lu ! Maintenant, si vous avez aimé le contenu de l’article, si  vous connaissez une personne à qui cet article peut intéresser, n’hésitez pas à le liker et à le partager sur les réseaux sociaux. Si vous souhaitez me faire part de vos remarques, de vos problèmes, de vos suggestions de prochain article ou tout simplement de votre soutien n’hésitez pas à m’en faire part dans les commentaires, je vous en remercie.

Partager l'article :
  •  
  •  
  •  
  •  

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *