Modifico la CurrentCulture pero sigo viendo los textos en el idioma por defecto. ¿Por qué?

2603 vistas

Dos posibles razones:

- la modificación se ha realizado en el código de un evento. Ya se ha pasado por Page_Load y los textos ya se han cargado.
- la página se ha recargado sin redefinir la cultura a usar.

Para solucionar estos problemas se aconseja usar una variable de sesión para almacenar la cultura a usar:



csharp
  1. private void Page_Load(object sender, System.EventArgs e)
  2. {
  3.   if (!Page.IsPostBack || Session["User-Language"] == null)
  4.   {
  5.     CultureInfo CurrentCulture = new CultureInfo(Request.UserLanguages[0]);
  6.     Session["User-Language"] = Request.UserLanguages[0];
  7.   }
  8.   ElTexto.Text = CurrentCulture.Name;
  9.   CargarTextos();
  10. }
  11.  
  12. private void BuChangeLanguage_Click(object sender, EventArgs e)
  13. {
  14.   Thread.CurrentThread.CurrentCulture = new CultureInfo(DdlLanguage.SelectedValue);
  15.   ElTexto.Text = Thread.CurrentThread.CurrentCulture.Name;
  16.   Session["User-Language"] = Thread.CurrentThread.CurrentCulture.Name;
  17.   CargarTextos();
  18. }