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

- [WPF] Nouvel article sur c2i.fr par Richard Clark le il y a 12 heures et 58 minutes

- F# nouvelle CTP 1.9.6.2 (update) par Pierrick's Blog le il y a 17 heures et 3 minutes

- La suite ...Proposition de collaboration rédactionnelle entre les communautés de développeurs et Microsoft France par LucasR le 09-05-2008, 17:45

- [Fun] Votre simulateur de vol avec Microsoft ESP par Julien Chable le 09-05-2008, 12:02

- [Best Practices] Customisation du My Site : Comment le modifier en amont et en aval par The Mit's Blog le 09-05-2008, 10:47

- Patrick Tisseghem s'en est allé ... par The Mit's Blog le 09-05-2008, 10:04

- MS AutoCollage par alex# le 09-05-2008, 09:18

- Un grand SharePointeur nous a quitte : Patrick Tisseghem manquera à la communauté ! par RedoBlog - The .NET Gentleman !!! le 09-05-2008, 08:52

- [WPF] Comment charger dynamiquement un fichier XAML qui définit des eventhandler ? par Thomas Lebrun le 09-04-2008, 10:56

- Article sur le filtrage des modèles de site SharePoint par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le 09-04-2008, 00:11