Soyez le premier à donner votre avis sur cette source.
Vue 20 087 fois - Téléchargée 819 fois
'Pour voir tout le code, veuillez télécharger le code source 'Côté code de la web form: '---------------------------------------- Imports System.Resources Imports System.Globalization Imports System.Threading Public Class WebForm2 Inherits System.Web.UI.Page Private rm As ResourceManager #Region " Code généré par le Concepteur Web Form " 'Cet appel est requis par le Concepteur Web Form. <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub Protected WithEvents Label1 As System.Web.UI.WebControls.Label Protected WithEvents Button1 As System.Web.UI.WebControls.Button Protected WithEvents Button2 As System.Web.UI.WebControls.Button Protected WithEvents Button3 As System.Web.UI.WebControls.Button 'REMARQUE : la déclaration d'espace réservé suivante est requise par le Concepteur Web Form. 'Ne pas supprimer ou déplacer. Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN : cet appel de méthode est requis par le Concepteur Web Form 'Ne le modifiez pas en utilisant l'éditeur de code. InitializeComponent() rm = Application("myRM") End Sub #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Placez ici le code utilisateur pour initialiser la page mDisplay_Language() End Sub Private Sub mDisplay_Language() 'On appelle les traductions par cette méthode Label1.Text = rm.GetString("IdMessage1") End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Pour changer de langue, on change la culture en cours 'ATTENTION: si vous mettez juste "fr", vous aurez une erreur, il faut préciser 'pour chaque langue la région: "fr-FR" Thread.CurrentThread.CurrentCulture = New CultureInfo("fr-FR", True) Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture mDisplay_Language() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US", True) Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture mDisplay_Language() End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Thread.CurrentThread.CurrentCulture = New CultureInfo("es-ES", True) Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture mDisplay_Language() End Sub End Class 'Côté code du global.asax: '---------------------------------------- Imports System.Web Imports System.Web.SessionState Imports System.Globalization Imports System.Threading Public Class Global Inherits System.Web.HttpApplication #Region " Code généré par le Concepteur de composants " Public Sub New() MyBase.New() 'Cet appel est requis par le Concepteur de composants. InitializeComponent() 'Ajoutez une initialisation quelconque après l'appel InitializeComponent() End Sub 'Requis par le Concepteur de composants Private components As System.ComponentModel.IContainer 'REMARQUE : la procédure suivante est requise par le Concepteur de composants 'Elle peut être modifiée à l'aide du Concepteur de composants. 'Ne la modifiez pas en utilisant l'éditeur de code. <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() components = New System.ComponentModel.Container End Sub #End Region Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) ' Se déclenche lorsque l'application est démarrée '**ATTENTION: Si on met pas le nom du projet devant le nom de la ressource : marche pas !!(eh oui c précisé nulle part). Application("MyRM") = New System.Resources.ResourceManager("Ressource.test", System.Reflection.Assembly.GetExecutingAssembly()) 'Note: pour charger le fichier ressource qui est généré automatiquement par visual studio, il 'existe plusieurs techniques, malheureusement celle que je présente ici est la seule que j'ai réussi 'à faire fonctionner. End Sub Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs) ' Se déclenche lorsque la session est démarrée 'Détection de la langue Try 'On regarde si il y a des langues indiqué dans le navigateur If Not Request.UserLanguages() Is Nothing Then 'Récupére la premiére langue du navigateur Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages(0)) Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture End If Catch ex As Exception 'Si pas trouvé de langue par défaut on peut en attribuer une par défaut ou laisser 'le .NET rechercher par lui même le language racine Thread.CurrentThread.CurrentCulture = New CultureInfo("fr-FR") Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture End Try End Sub
Il faut utiliser resgen.exe et al.exe avec l'invite de commande VS .net 2003 pour générer les dll et ensuite les placer ds les dossiers de langues du repertoire bin
Je suis en train de galérer pour rendre mon appli multilangue, j'ai trouvé cette source complète sauf sur un point qu'il me manque, le passage des .resx en .dll ...
Quelqu'un pourrait-il m'apporter des infos complémentaires ? merci !
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.