begin process at 2012 05 28 07:57:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

WebForms

 > 

WebControl

 > 

Utilisation de fichiers resources (.resx) pour l'internationnalisation d'un site web


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Utilisation de fichiers resources (.resx) pour l'internationnalisation d'un site web

vendredi 19 juin 2009 à 11:24:36 | Utilisation de fichiers resources (.resx) pour l'internationnalisation d'un site web

nassimpat7

Bonjour à tous,

Je développe actuellement un site web sous Visual Studio Web Developer en ASP.NET / C# avec le .NET FRAMEWORK 3.5 SP1.
Pour la gestion des langues, j'ai choisi d'utiliser les fichiers de ressources qui me semblent être une très bonne solution.
Le problème, c'est que ça ne fonctionne pas! Ou plutôt, je n'arrive à faire fonctionner cette mécannique.
Il n'y a aucun problème concernant les données par défaut, en langue française mais les changements de langue ne se font pas. 

Je vous explique ma démarche:
J'ai créé mes fichiers .resx, le 1er => Dictionnaire.resx et les autres => Dictionnaire.en-GB.resx, Dictionnaire.de.DE.resx, Dictionnaire.es-MX.resx. Dans le répertoire /App_GlobalResources.

Dans le web.config, j'ai mis la balise suivante => <globalizationuiCulture="fr"culture="fr-FR" />, pour indiquer la langue par défaut.

Dans la page .aspx en entête j'ai mis <%@PageLanguage="C#"AutoEventWireup="true"CodeFile="index.aspx.cs"Inherits="_Index"UICulture="auto" %>

Et j'utilise des control ImageButton pour chaque langue avec un petit drapeau dont je vous met un exemplaire: <asp:ImageButtonID="ImgBtEn"runat="server"ImageUrl="/images/en.gif"CssClass="img_langues" AlternateText="en"title="en"onclick="ImgBtEn_Click"ValidationGroup="langue"PostBackUrl="/"/>

Ensuite, pour chaque control que je souhaite traduire j'ai utilisé la propriété Expression et ça donne ceci :
<asp:LabelID="HeaderTitle"runat="Server"Text="<%$ Resources:Dictionnaire, HeaderTitle %>"/>

Dans le code-behind C#, j'ai dans un premier temps fait mes using :
using System.Globalization;
using System.Resources;
using System.Threading;

Puis j'ai fais mes fonctions attachés à mes drapeaux :
(J'ai volontairement laissé du code en commentaire pour vous montrer ce que j'ai essayé et qui n'a pas fonctionné)

//proprités
string langue = "";

protectedvoid Page_Load(object sender, EventArgs e)
{
/*
if (!Page.IsPostBack)
{
HeaderTitle.Text = Resources.Dictionnaire.HeaderTitle;
HeaderSubTitle.Text = Resources.Dictionnaire.HeaderSubTitle;
BodyTitle.Text = Resources.Dictionnaire.BodyTitle;
SearchTitle.Text = Resources.Dictionnaire.SearchTitle;
SideBarActu.Text = Resources.Dictionnaire.SideBarActu;
SideBarFaq.Text = Resources.Dictionnaire.SideBarFaq;
SearchGamme.Text = Resources.Dictionnaire.SearchGamme;
SearchProduit.Text = Resources.Dictionnaire.SearchProduit;
Button2.Text = Resources.Dictionnaire.ButtonSearch;
SideBarLogin.Text = Resources.Dictionnaire.SideBarLogin;
LabelMail.Text = Resources.Dictionnaire.LabelMail;
LabelPass.Text = Resources.Dictionnaire.LabelPass;
Button1.Text = Resources.Dictionnaire.ButtonConnection;
MessageTeam.Text = Resources.Dictionnaire.MessageTeam;
}
*/

}

//Mes fonctions pour traduire les contenus statiques et dynamiques
protectedvoid ImgBtFr_Click(object sender, ImageClickEventArgs e)
{
this.langue = "";
//InitializeCulture();
//FrameworkInitialize()
ChangeLangue();
}

protectedvoid ImgBtEn_Click(object sender, ImageClickEventArgs e)
{
this.langue = "en-US";
//InitializeCulture();
//FrameworkInitialize()
ChangeLangue();
}

protectedvoid ImgBtDe_Click(object sender, ImageClickEventArgs e)

{

this.langue = "de-DE";
//InitializeCulture();
//FrameworkInitialize()
ChangeLangue();
}

protectedvoid ImgBtEs_Click(object sender, ImageClickEventArgs e)
{
this.langue = "es-MX";
//InitializeCulture();
//FrameworkInitialize()
ChangeLangue();
}

protectedvoid ChangeLangue()
{
string selectedLanguage = this.langue;

UICulture = selectedLanguage;
Culture = selectedLanguage;

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
Thread.CurrentThread.CurrentUICulture = newCultureInfo(selectedLanguage);
}
 

/*
protected override void FrameworkInitialize()
{
string selectedLanguage = this.langue;
UICulture = selectedLanguage;

Culture = selectedLanguage;

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);

base.FrameworkInitialize();
}

protected override void InitializeCulture()
{
string selectedLanguage = this.langue;

UICulture = selectedLanguage;
Culture = selectedLanguage;

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);
base.InitializeCulture();
}
*/

Voilà, je pense avoir fait le tour.
Je tiens à préciser que ça fait déjà plusieurs jours que je bloc la dessus.
Donc SVP, si quelqu'un pouvais m'aider ou me donner une solution...

Merci à tous par avance.

mardi 23 juin 2009 à 08:43:08 | Re : Utilisation de fichiers resources (.resx) pour l'internationnalisation d'un site web

nassimpat7

Réponse acceptée !
J'ai enfin trouvé la solution!!!
Il fallait tout simplement un control asp qui supporte l'autopostback, et auquel on peut renseigner la propriété Value.

En faisant comme ci-dessous ça fonctionne
Code-behind :
    protected override void InitializeCulture()     {         string lang = Request["language"];         if (lang != null && lang != "")         {             Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang);             Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang);         }     }

Page aspx :
<asp:DropDownList runat="server" ID="language" TextAlign="Right" AutoPostBack="true" >          <asp:ListItem Value="fr-FR">                Français          </asp:ListItem>          <asp:ListItem Value="en-GB">                English          </asp:ListItem>          <asp:ListItem Value="de-DE">                Deutsh          </asp:ListItem>          <asp:ListItem Value="es-MX">                Espa&ntilde;ol          </asp:ListItem> </asp:DropDownList>

Et ça fonctionne très bien


Cette discussion est classée dans : text, dictionnaire, resources, langue, selectedlanguage


Répondre à ce message

Sujets en rapport avec ce message

Resources [ par akaii ] Hello,voilà j'ai créé mes fichiers .resx en fonction des différentes langues en les nommants comme suit:..resx.en-US.resxcontenu respectivement dans d Récupérer en javascript un textbox [ par martingal ] Bonjour à tous, Je charge en textbox ( <asp:textbox id="news" Gestion du click dans un objet client d'un WebCustomControl ? Marche pas ! [ par smoitry ] Suite au post de fcampagne, je fais un nouveau post car mon problème est apparemment un peu différent du sien ...En fait, je veux créer un contrôle we FormsAuthentication.Authenticate() [ par akaii ] HelloJe veux tester une méthode d'authentification toute simple avec l'aide du fichier web.config j'ai trouvé de la doc, mais en suivant à la ligne ce smtp [ par gazalii ] bonjour a vous tous j ai une question apropos de l'envoie d'un mail aprtir d'une pas asp.net j'ai fais le code suivant MailMessage maildef=new MailMe asp.net [ par dina_info ] Bonjour ;mon probléme est comment affecter à un champs la somme de la valeure d'autres champs; c'est à dire rendre un champs calculable d'apres des v formview et LinkButton acces [ par mael974 ] Bonjour je dispose dun formview en mode insertion. je voudrais acceder a l'element 'bouton' du formview pr lui donner un url different celon lendroit Pb d'envoi de mail par SMTP [ par ilitman ] Salut, voilà je cherche d'une manière simple à envoyer un mail directement depuis un formulaire ASP en passant par un serveur SMTP necessitant une ide Label1.Text="Ma Chaine" [ par 24 ans ] Salut tout le monde.j'ai ajouter le Master page à mon application,et dans son entete j ai placer un label . je voudrais que lorsque une page est charg Au secours !! Dojo + ASP.NET 2.0 marche pas [ par liliemumue ] Bonjour tout le mondeJ'ai decouvert il y a peu Dojo toolkit dont on me vanter les mérites alor sj me suis dit waouuuuuuuu facile à integrer la chose.B


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,076 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales