La localisation d'applications est une étape cruciale pour offrir une expérience utilisateur optimale. Dans cet article, nous allons explorer comment localiser une application MAUI en utilisant les fichiers de ressources. Nous verrons également comment changer la langue de l'application sans avoir à la redémarrer.
Si cela vous dit quelque chose c'est normal ! J'ai présenté dans le précédent article l'intérêt des Assemblages Satellites qui sont principalement utilisés pour la gestion de la localisation des Apps. Mais je voulais montrer sur un exemple plus parlant la partie qui permet switcher à la volée d'une langue à une autre. Donc privilégier l'angle "localisation" par rapport à celui des "Assemblages satellites". D'où le présent article à comprendre comme un complément sur un sujet … satellite.
Utilisation des fichiers de ressources
Tout comme les autres applications .NET, MAUI utilise des fichiers de ressources pour stocker des chaînes de caractères, des images et d'autres fichiers. Pour commencer, ajoutez deux nouveaux fichiers de ressources : AppResources.resx pour le français et AppResources.en.resx pour l'anglais.
On notera qu'ici on part d'une App MAUI qui s'appelle MauiLocalisation et que je ne montrerai pas intégralement car ce n'est pas l'objet du présent article.
Code XAML
Pour utiliser ces ressources dans votre XAML, importez d'abord l'espace de noms de vos ressources :
xmlns:localisation="clr-namespace:MauiLocalisation.Resources.Localisation"
Ensuite, vous pouvez définir le titre de la page principale comme suit :
Title = {x:Static localisation:AppResources.TitrePagePrincipale}
Code C#
Dans votre fichier .csproj, ajoutez cette ligne :
<GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
Changement de langue à la volée
Si vous souhaitez changer la langue sans redémarrer l'application, vous devrez ajouter un peu de code. Créez une classe GestionnaireRessourcesLocalisation qui implémente INotifyPropertyChanged.
public class GestionnaireRessourcesLocalisation : INotifyPropertyChanged
{
private GestionnaireRessourcesLocalisation()
{
AppResources.Culture = CultureInfo.CurrentCulture;
}
public static GestionnaireRessourcesLocalisation Instance { get; } = new();
public object this[string cleRessource] => AppResources.ResourceManager.GetObject(cleRessource, AppResources.Culture) ?? Array.Empty<byte>();
public event PropertyChangedEventHandler? PropertyChanged;
public void DefinirCulture(CultureInfo culture)
{
AppResources.Culture = culture;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(null));
}
}
En utilisant la méthode DefinirCulture et en passant un objet CultureInfo valide (culture pour laquelle vous avez aussi fourni un assemblage satellite contenant les traductions) vous pouvez maintenant changer de langue à la volée. Pour que cela ait un effet sur l'UI, dans votre XAML lier le titre (ou tout autre texte bien entendu) de la manière suivante :
Title = "{Binding GestionnaireRessourcesLocalisation[TitrePagePrincipale], Mode=OneWay}"
L'avantage de cette classe intermédiaire est d'autoriser la bascule d'une langue à une autre facilement et de mettre à jour l'affichage automatiquement par l'utilisation à la fois d'un Binding sur le texte à afficher et de INPC implémenté dans la classe.
La méthode par chargement de l'assemblage satellite montré dans l'article précédent est tout aussi intéressant. Chacune des méthodes offrant des avantages différents. Désormais vous savoir localiser vos Apss, vous savez aussi comment changer de langue à la volée sans redémarrer l'App, et mieux encore, vous disposez de deux approches différentes pour le faire !
Conclusion
La localisation dans MAUI est un processus assez simple mais puissant. En suivant ces étapes, vous pouvez non seulement localiser votre application mais aussi changer la langue à la volée sans redémarrer l'application.
Stay Tuned !
Le Guide Complet de.NET MAUI ! Lien direct Amazon : https://amzn.eu/d/95wBULD
Près de 500 pages dédiées à l'univers .NET MAUI !
Existe aussi en version Kindle à prix réduit !