FAQ ASP.NET/C#Consultez toutes les FAQ

Nombre d'auteurs : 39, nombre de questions : 371, dernière mise à jour : 30 mars 2017 

 
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

string Lang = Request.UserLanguages[0]; // Principal Language
CultureInfo CurrentCulture = new CultureInfo(Lang);

switch (CurrentCulture.Name.Substring(0, 2).ToUpper())
{
	case "FR":
		LaText.Text = "Texte en français...";
		break;
	case "EN":
	default:
		LaText.Text = "Text written in English...";
		break;
}
				
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

string lang = 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 void Page_Load(object sender, System.EventArgs e)
{
	if (!Page.IsPostBack || Session["User-Language"] == null)
	{
		CultureInfo CurrentCulture = new CultureInfo(Request.UserLanguages[0]);
		Session["User-Language"] = Request.UserLanguages[0];
	}
	LaText.Text = CurrentCulture.Name;
	ChargerTextes();
}

private void BuChangeLanguage_Click(object sender, EventArgs e)
{
	Thread.CurrentThread.CurrentCulture = new CultureInfo(DdlLanguage.SelectedValue);
	LaText.Text = Thread.CurrentThread.CurrentCulture.Name;
	Session["User-Language"] = Thread.CurrentThread.CurrentCulture.Name;
	ChargerTextes();
}
				
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

FileStream fs = new FileStream(" items.resources " , FileMode.OpenOrCreate, FileAccess.Write);
IResourceWriter writer = 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

ResourceManager manager = ResourceManager.CreateFileBasedResourceManager(
	"nom fichier sans extension ni culture", "chemin d'accès au fichier", null);
				

Exemple:

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

ResourceManager manager = ResourceManager.CreateFileBasedResourceManager("items", Server.MapPath("."), null);
				
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.