FAQ ASP.NET/VB.NETConsultez toutes les FAQ

Nombre d'auteurs : 38, nombre de questions : 369, dernière mise à jour : 28 juin 2013 

 
OuvrirSommaireVisual StudioInternationalisation

Il existe différentes solutions pour internationaliser une application:

- Utilisation de fichiers texte
- Utilisation d'une base de données
- Traduction dans le code
- Utilisation des fichiers ressources

Chacune de ces techniques a ses avantages et ses inconvénients. Il faut trouver une technique permet d'allier facilité de maintenance et rapidité d'exécution.

Plusieurs techniques sont prévues par .NET et celle qui paraît être la meilleure est la solution des fichiers ressources. Effectivement, les fichiers ressources sont des fichiers textes optimisés puisqu'au chargement, ils sont entièrement triés afin de limiter les accès qu'ils soient au niveau de la mémoire ou des différents disques.

Créé le 3 octobre 2005  par Didier Danse

Lien : Internationalisation d'un site web avec Visual Studio 2005 sans une seule ligne de code
Lien : Internationalisation d'une application ASP.NET (1.1)
Lien : Comment permettre à un utilisateur de choisir sa langue d'affichage des textes?

Une grande quantité de sites proposent de choisir la langue d'affichage des textes. Pour faire cela, il suffit d'ajouter une liste déroulante dont les valeurs sont, par exemple, "fr", "fr-BE", "en-US".

En récupérant cette valeur, il suffit alors d'effectuer une modification dynamique de la culture à utiliser ou encore d'utiliser:

 
Sélectionnez

Dim Lang As String = Request.UserLanguages(0) ' Principal Language
Dim CurrentCulture As New CultureInfo(Lang)

Select Case CurrentCulture.Name.Substring(0, 2).ToUpper()
	Case "FR"
		LaText.Text = "Texte en français..."
		Exit Select
	Case "EN", Else
		LaText.Text = "Text written in English..."
	Exit Select
End Select
				
Créé le 3 octobre 2005  par Didier Danse

Lien : Internationalisation d'une application asp.NET (1.1)
Lien : Quelle est la meilleure technique pour internationaliser une application ?
Lien : Je modifie le CurrentCulture et pourtant mes textes sont toujours affichés dans la langue par défaut, pourquoi?

Plus exactement, il s'agit de se baser sur les paramètres définis dans le navigateur du client...

Lorsqu'un client se connecte à un site, le navigateur, lors de la demande, envoie toute une série d'informations telles que la langue de prédilection et bien d'autres choses.

Il reste donc à récupérer cette valeur et à l'utiliser...

Pour mettre à jour de manière dynamique la culture à utiliser:

Mise à jour dynamique de la culture
Sélectionnez

Dim lang As String = Request.UserLanguages(0)
Thread.CurrentThread.CurrentCulture = New CultureInfo(lang)
				

Dès lors, toutes les dates seront formatées selon la culture du client.

Créé le 3 octobre 2005  par Didier Danse

Lien : Internationalisation d'une application asp.NET (1.1)

Deux raisons sortent du lot:

- la modification se fait dans le code d'un événement. On est donc déjà passé par le Page_Load et les textes sont déjà chargés. Il faut donc s'arranger pour mettre le chargement des textes dans une autre méthode et l'appeler dans le code de l'évènement.
- la page est rechargée sans redéfinir la culture à utiliser.

Il est donc conseillé d'utiliser une variable de session pour stocker la culture à utiliser:

Changement dynamique de la langue de l'utilisateur
Sélectionnez

Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
	If Not Page.IsPostBack OrElse Session("User-Language") Is Nothing Then
		Dim CurrentCulture As CultureInfo = New CultureInfo(Request.UserLanguages(0))
		Session("User-Language") = Request.UserLanguages(0)
	End If
	LaText.Text = CurrentCulture.Name
	ChargerTextes
End Sub

Private Sub BuChangeLanguage_Click(ByVal sender As Object, ByVal e As EventArgs)
	Thread.CurrentThread.CurrentCulture = New CultureInfo(DdlLanguage.SelectedValue)
	LaText.Text = Thread.CurrentThread.CurrentCulture.Name
	Session("User-Language") = Thread.CurrentThread.CurrentCulture.Name
	ChargerTextes
End Sub
				
Créé le 3 octobre 2005  par Didier Danse

Lien : Internationalisation d'une application asp.NET (1.1)
Lien : Comment permettre à un utilisateur de choisir sa langue d'affichage des textes?

Il s'agit d'un fichier xml utilisé principalement lors de l'internationalisation d'une application.

Il comprend des chaînes de caractères qui sont lues pour modifier le contenu et l'affichage d'une application.

Créé le 4 septembre 2006  par Didier Danse

Lorsque vous utilisez les fichiers ressources et que vous compilez sous Visual Studio, celui-ci se charge de générer le fichier .resources à partir du fichier .resx qui est un simple fichier xml.

Pour générer un fichier et ajouter des valeurs dynamiquement, quelques lignes de code suffisent:

Génération dynamique d'un fichier .resources
Sélectionnez

Dim fs As FileStream = New FileStream(" items.resources ", FileMode.OpenOrCreate, FileAccess.Write)
Dim writer As IResourceWriter = New ResourceWriter(fs)
writer.AddResource(" clé ", " valeur ")
writer.Generate
writer.Close
				
Créé le 3 octobre 2005  par Didier Danse

Lien : Internationalisation d'une application asp.NET (1.1)
Lien : Comment utiliser un fichier .resources qui ne se trouve pas dans une dll?

La plupart des tutoriaux présents sur le net expliquent comment utiliser un fichier ressources provenant d'une dll. Lorsque l'on génére le fichier de manière dynamique, le code est légèrement différent:

Utiliser un fichier .resources non inclus dans une dll
Sélectionnez

Dim manager As ResourceManager = ResourceManager.CreateFileBasedResourceManager("nom fichier sans extension ni culture", _
	"chemin d'accès au fichier", Nothing)
				

Exemple:

Utiliser un fichier .resources non inclus dans une dll
Sélectionnez

Dim manager As ResourceManager = ResourceManager.CreateFileBasedResourceManager("items", Server.MapPath("."), Nothing)
				
Créé le 3 octobre 2005  par Didier Danse

Lien : Internationalisation d'une application asp.NET (1.1)
Lien : Comment générer un fichier .resources dynamiquement?

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Dotnet Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.