Il existe une myriade de manières de traduire des applications Flutter, mais comment effectuer la traduction du 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 sous sa forme visuelle dans XCode

Les fichiers Info.plist sur iOS et macOS permettent de définir la carte d'identité de l'application : son identifiant, son nom, son numéro de version… Très ressemblant à un fichier XML sur la forme, vous allez mettre des clés avec des valeurs :

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

C'est également à cet endroit que l'on définit les messages venant s'afficher sur les popups expliquant les permissions :

Un exemple de popup demandant la permission d'accès à la caméra. Le texte en gras, ainsi que les deux boutons sont fournis par la plateforme (et 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 code-barres</string>

Apple ne souhaite pas que ces informations puissent être mises à jour dynamiquement et 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 nommé ios/Runner.xcworkspace, puis faites un clic droit depuis Runner -> Runner et sélectionnez New file…. La popup suivante apparaîtra :

Sur cette popup, choisissez Strings File dans la partie Resource

Depuis cette écran, descendez jusqu'à la partie Resource, puis sélectionnez Strings File, puis cliquez sur Next. Ensuite, indiquez que le nom de fichier est InfoPlist.strings.

Attention à bien respecter la casse !

Pour terminer, validez cet écran. Vous verrez alors un fichier de ce type apparaître :

/* 
  InfoPlist.strings
  Runner

  Created by Edouard Marquez on 13/04/2022.
  
*/

Imaginons que nous souhaitions traduire le NSCameraUsageDescription, il faut alors mettre dans le fichier :

"NSCameraUsageDescription"="My English translation"

Comment ajouter une langue ?

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

Pour ajouter des langues, il faut cliquer sur l'icône bleue Runner (sur la gauche de l'écran), puis aller dans la section Localizations. A cet endroit, vous n'aurez qu'à cliquer sur le bouton +.

Ajouter une langue

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

Sélectionnez uniquement InfoPlist.strings

Vous devriez alors voir apparaître une nouvelle variante du InfoPlist.strings, vous permettant ainsi d'effectuer la traduction.

La variante française est désormais visible dans l'arborescence.

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

"NSCameraUsageDescription"="Ma traduction française"

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

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