Tous les articles

Traduire le fichier Info.plist (iOS) en Flutter

Il existe une myriade de manières de traduire des applications Flutter, mais comment traduire le contenu propre à chaque plateforme ? C’est notamment le cas sur iOS avec les fichiers Info.plist.

Que contient un fichier Info.plist ?

Le fichier Info.plist ouvert dans Xcode, sous forme de tableau de clés et de valeurs
Le fichier Info.plist sous sa forme visuelle dans Xcode

Les fichiers Info.plist sur iOS et macOS définissent la carte d’identité de l’application : son identifiant, son nom, son numéro de version… Très proches d’un fichier XML sur la forme, ils associent des clés à des valeurs :

<key>CFBundleName</key>
<string>Le nom de mon application</string>

C’est également à cet endroit que l’on définit les messages qui s’affichent dans les popups de demande de permission :

Popup iOS demandant l’accès à la caméra
Un exemple de popup demandant l’accès à la caméra. Le texte en gras et les deux boutons sont fournis par la plateforme : ils ne peuvent donc pas être traduits.

Par exemple, si vous souhaitez accéder à la caméra, vous devrez définir un NSCameraUsageDescription :

<key>NSCameraUsageDescription</key>
<string>Cette application utilise la caméra pour scanner des codes-barres</string>

Apple ne souhaite pas que ces informations puissent être mises à jour dynamiquement : c’est pour cette raison qu’elles sont stockées à part, dans ce fameux fichier Info.plist.

Comment traduire le fichier Info.plist ?

Avant toute chose, il est recommandé de passer par Xcode. Sur un projet Flutter, ouvrez le fichier ios/Runner.xcworkspace, faites un clic droit sur Runner -> Runner et sélectionnez New File…. La popup suivante apparaît :

Fenêtre de création de fichier de Xcode, avec le modèle Strings File sélectionné
Sur cette popup, choisissez Strings File dans la partie Resource

Depuis cet écran, descendez jusqu’à la partie Resource, sélectionnez Strings File, puis cliquez sur Next. Indiquez ensuite le nom de fichier InfoPlist.strings.

Champ du nom de fichier rempli avec InfoPlist.strings
Attention à bien respecter la casse !

Pour terminer, validez cet écran. Un fichier de ce type apparaît alors :

/*
  InfoPlist.strings
  Runner

  Created by Edouard Marquez on 13/04/2022.

*/

Pour traduire le NSCameraUsageDescription, il suffit d’ajouter dans ce fichier :

"NSCameraUsageDescription"="My English translation"

Comment ajouter une langue ?

Nous avons certes créé le fichier InfoPlist.strings, mais il ne couvre pour le moment que la langue par défaut.

Pour ajouter des langues, cliquez sur l’icône bleue Runner (à gauche de l’écran), puis allez dans la section Localizations. Vous n’avez plus qu’à cliquer sur le bouton +.

Section Localizations du projet Runner dans Xcode, avec le bouton d’ajout de langue
Ajouter une langue

Sélectionnez une langue, puis cochez uniquement InfoPlist.strings en indiquant la langue de base (normalement l’anglais).

Liste des fichiers à traduire, avec seulement InfoPlist.strings coché
Sélectionnez uniquement InfoPlist.strings

Une nouvelle variante de InfoPlist.strings apparaît alors : c’est elle qui accueille la traduction.

Arborescence de Xcode avec les variantes anglaise et française de InfoPlist.strings
La variante française est désormais visible dans l’arborescence.

Il ne vous reste plus qu’à traduire InfoPlist.strings (French) de cette manière :

"NSCameraUsageDescription"="Ma traduction française"

Voilà tout ce qu’il y a à faire pour traduire les textes du fichier Info.plist : permissions d’accès à la caméra, au GPS…

Côté fichiers, chaque traduction est désormais hébergée dans un dossier nomdelalangue.lproj, où vous trouverez son InfoPlist.strings.