Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

[ASP .NET]Localisation dynamique

Pour localiser un site Web en plusieurs langues, il existe différentes façon de faire. L'une d'elle est l'utilisation de fichier ressources. Nous allons voir ici comment générer automatiquement ces fichiers de ressources et comment mettre en place le changement de langues dynamiquement sur une page Web.

Créez un nouveau projet de site Web et construisez la page "Default.aspx". Le mieux est de mettre vos différents textes dans des labels. Pour générer le fichier de ressource associée à votre page, aller dans le menu Tools > Generate Local Ressource (Remarque : il faut être en mode design pour avoir accès à cette option). Visual Studio vous générer un fichier "Default.aspx.resx" dans un répertoire App_LocalRessources.

Si vous regardez rapidement la source de la page vous constaterez que vos label, button... ont été modifiés :

<asp:Label ID="lblMenu1" runat="server" Text="Accueil" />

<asp:Label ID="lblMenu1" runat="server" Text="Accueil" meta:resourcekey="lblMenu1Resource1" />

Pour créer un fichier de ressources pour une autre langue, il suffit de dupliquer le fichier .resx et de la renommer de la forme :

  • /repertoireRessource/nom_de_la_page.extension_de_la_page.resx (pour la page par défault, c'est à dire la page neutre).
  • /repertoireRessource/nom_de_la_page.extension_de_la_page.pays[-region].resx (pour les pages des différentes langues).

Exemple :

  • Default.aspx.resx
  • Default.aspx.en.resx
  • Default.aspx.es-ES.resx

Localisation dynamique
Figure 1

Localisation dynamique
Figure 2

Localisation dynamique
Figure 3

Vous n'avez plus qu'à ouvrir les différents fichiers .resx et à traduire les éléments :

Localisation dynamique
Default.aspx.resx

Localisation dynamique
Default.aspx.en.resx

Maintenant, nos différents fichiers sont prêts. Le but serai de pouvoir change la langue du site "a la volée", par exmple en cliquant sur un drapeaux. Comment faire ? c'est assez simple. Voici une méthode parmis d'autre.

Ajoutez par exemple deux images boutons sur votre site. Nous allons maintenant travaillez le code behind. Dans l'événement click de chaque image bouton, nous allons référencer une variable de session pour stocker la langue :

protected void UK_Click(object sender, ImageClickEventArgs e)
{
     
Session["user-language"] = "en-GB";
     Response.Redirect(Request.ServerVariables["HTTP_REFERER"]);

Ici, sur le click de l'image bouton "UK" on renseigne la variable de session avec le code de la langue. Puis on redirige la page vers elle même.
Il faut encore applique ce changement de langue. Pour cela, redéfinissez la méthode "InitialiseCulture".

protected

override void InitializeCulture()
{
   if (Session["user-language"] != null)
      Thread.CurrentThread.CurrentUICulture = new CultureInfo(Session["user-language"].ToString());
}

Dans une page Web ASP.NET, vous pouvez affecter à deux valeurs de culture les propriétés Culture et UICulture. La valeur Culture détermine les résultats de fonctions spécifiques à une culture, comme la mise en forme de la date, des nombres et de la monnaie, etc. La valeur UICulture détermine les ressources qui sont chargées pour la page.

Il ne vous reste plus qu'à tester. Pour les plus pressé d'entre vous, vous pouvez recupérer un exemple ici.

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: vendredi 4 avril 2008 00:19 par Guillaume Brout
Classé sous :

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Silverlight] En attendant Silverlight 2 RTW par Blog Technique d'Audrey PETIT le il y a 21 heures et 12 minutes

- Le nouveau Gojira, c’est pour lundi… par CoqBlog le 10-11-2008, 01:18

- SharePoint : nouvel article sur la mise en place des Scopes dans MOSS Searchs par Blog Technique de Romelard Fabrice le 10-10-2008, 17:52

- Hello CS par Le Blog de julz le 10-10-2008, 12:26

- MSDN/TechNet/Microsoft Days Tour 2008 à Lille les 13 et 14 Octobre ! par RedoBlog - The .NET Gentleman !!! le 10-10-2008, 09:35

- MVC Pratique #07 - Un projet concret et le transfert des objets avec les ModelBinders par #Rui le 10-09-2008, 23:39

- SQL Server 2008 : Certifié - TS Admin (70-432) par SQL Server vu par Christian Robert le 10-09-2008, 10:58

- [WPF] Comment changer la couleur utilisée pour sélectionner les éléments d’un ItemsControl ? par Thomas Lebrun le 10-09-2008, 10:49

- Hello World! par Hamid's Place le 10-08-2008, 23:38

- SQL Profiler - Configuration pour un développeur - tracer les requêtes SQL de votre application par Atteint de JavaScriptite Aiguë [Cyril Durand] le 10-08-2008, 15:52