Je souhaite changer la langue de mon site Web. Je pensais que je pouvais le faire en utilisant un Handler, de sorte que le menu déroulant serait http://domain.com/Handler.ashx?language=en-US, f.i.Modification de Thread.CurrentThread.CurrentCulture sur un gestionnaire ASHX
Ainsi, il appelle le gestionnaire, qui a ce code:
string selectedLanguage = context.Request.QueryString["language"];
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");
context.Response.Redirect(context.Request.UrlReferrer.AbsoluteUri.ToString());
Mais quand il remonte, Thread.CurrentThread.CurrentCulture est réglé sur pt-BR, qui était la valeur initiale.
Ma question est: le thread sur le gestionnaire est différent de la page aspx qui charge le contenu? Et que suggérez-vous comme un travail autour?
Merci
Merci. Ça a marché comme je le voulais. Juste par curiosité: que recommanderiez-vous dans ce cas? ty again –
Eh bien, les informations de localisation et de culture devraient être quelque chose que vous essayez de gérer au niveau d'une session. L'utilisation de cette approche de gestionnaire résout le problème pour toutes les demandes qui s'exécutent via ce gestionnaire, mais cela entraîne une contrainte et une confusion inutiles dans votre code. En implémentant un contrôle serveur très simple ou similaire à placer sur vos pages (ou dans votre page maître), OnInit définit la culture des threads à une certaine valeur stockée en session, et vous modifiez cette valeur lorsque l'utilisateur sélectionne un élément dans le menu déroulant. , vous avez résolu le problème pour toute la session. Je ne peux pas comprendre ... – LorenVS
Okay. Cette solution fonctionne. Mais chaque fois que je clique sur un lien, cela «redémarre» simplement la culture, je suppose que c'est pour la même raison que vous avez indiqué sur la réponse originale. Je vais pour la tentative au niveau de la session. –