Gestion très simple des langues (culture) en asp.net 2.0

Soyez le premier à donner votre avis sur cette source.

Vue 27 385 fois - Téléchargée 2 083 fois

Description

Ce code montre quelques exemples très simples de gestion des langues (Cultures) dans un site en ASP.NET.

Grace aux valeurs Culture et UICulture vous pouvez choisir si la langue est sélectionnée automatiquement (auto) ou imposée (par exemple fr-FR pour Français) :
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" Culture="auto:fr-FR" UICulture="auto:fr-FR" %>

- UICulture indique la langue des contrôles et des formats d?affichages.
Par exemple, un montant apparaîtra comme cela pour la France 65 545,42 ? et $65,545.42 pour les USA. Un contrôle Calendar apparaitra en Français ou autre suivant la langue.
- La variable Culture définie la langue utilisée pour les fichiers de ressources.

Le répertoire App_LocalResources contient les fichiers de ressources (traductions) pour une page définie.
Le répertoire App_GlobalResources contient les fichiers de ressources (traductions) utilisable par n?importe quel page de votre site.

Par exemple, Default.aspx.resx contient les traductions par défaut de la page Default.aspx et Default.aspx.en.resx contient la langue anglaise.

Pour tester le code, vous pouvez changer la langue de préférence dans Internet Exeplorer.
Pour cela, cliquer sur le bouton « Langues? » de la boite « Otions Internet ».

Voici un petit exemple pour un contrôle label :
<asp:Label ID="Label1" runat="server" Text="Label" meta:resourceKey="Label1"></asp:Label>
La propriété meta:resourceKey indique le nom de la ressource à utiliser.

Voici le contenu du fichier de ressource par défaut (Default.aspx.resx) : Image 1
Voici le contenu du fichier de ressource anglais (Default.aspx.en.resx) : Image 2

Voici, j?espère avoir été clair et que ce code pourra servir à quelqu?un.

J?attends vos commentaires.

Bon code,

Walter

PS : Cet exemple est inspiré d?un WebCast américain publié par Microsoft.

Source / Exemple :


Imports System.Threading
Imports System.Globalization

Partial Class _Default
    Inherits System.Web.UI.Page

    ' Cette SUB substitue la procédure d?initialisation de la culture.
    Protected Overrides Sub InitializeCulture()

        ' Récupère la valeur de la liste déroulante.
        Dim lang As String = Request("Langage1")

        ' Si la variable n?est pas vide, on définie la nouvelle langue.
        If lang IsNot Nothing OrElse lang <> "" Then

            ' Définie la culture de l'interface utilisateur.
            Thread.CurrentThread.CurrentUICulture = New CultureInfo(lang)

            ' Définie la culture de l'utilisateur.
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang)

        End If

    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        ' Définie une variable qui contient une somme.
        Dim money As Decimal = 65545.42

        ' Place la somme dans le label en formatant celui-ci au format money.
        ' Suivant la culture (et non la UICulture), il sera affiché en euro, dollar, ?
        lbMontant.Text = String.Format("{0:c}", money)

    End Sub

End Class

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mercredi 8 novembre 2006
Statut
Membre
Dernière intervention
8 juillet 2009

Bonjour,

Juste une petite précision sur l'emploi de Culture et UICulture.
Contrairement à ce qui est écrit dans la description, Culture sert au format des dates, des montants,... et UICulture pour déterminer quelles ressources il faut charger.
http://msdn2.microsoft.com/en-us/library/bz9tc508(VS.71).aspx
A part ça, ton code est très utile :)

A++
VinCe
Messages postés
1
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
31 janvier 2007

Bonjour,
je voulais savoir ce que cela donnerai en c#, sa serais super interressant..

Merci
Messages postés
6
Date d'inscription
vendredi 17 septembre 2004
Statut
Membre
Dernière intervention
30 août 2006

salut, esque quelq'un aurait une idée pour modifier ou crée une nouvelle culture le but est d'avoir les dates en format 'fr' jour/mois et des montant en format 'en', merci.
Messages postés
3
Date d'inscription
lundi 11 octobre 2004
Statut
Membre
Dernière intervention
16 juillet 2006

salut, merci pour ton code, c'est vraiment très clair et très pratique.
J'ai essayé d'intégrer ça dans un de mes projets où j'ai utilisé une "master page" et là, ça pose difficulté. On ne peut apparament pas définir de "culture" pour une master page.
Est-ce que je dois copier le code dans chaque page indépendante?
Messages postés
153
Date d'inscription
dimanche 2 octobre 2005
Statut
Membre
Dernière intervention
27 juillet 2006
1
Bsoir, pas mal dutout ta source simple et bien clair...

Mais je me demande toujours comment faire aussi un site multilingue mais en passant la langue via une url ex: Default.aspx?lang=fr... Ta une idée ? :p (et qu'il garde en mêmoire le ?lang=fr lorsqu'on change de page...).

merci

A++
Fabien S. (Alias: fabienfs)
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.