Etiqueta: Thread
Forzar cambio de idioma en ASP.NET
por José Jorge Márquez Gómez a abr.28, 2009, bajo General, Medio
Bueno, para comenzar diremos que los estándares admitidos por .NET para los idiomas los podéis ver en la MSDN http://msdn.microsoft.com/es-es/library/system.globalization.cultureinfo(VS.80).aspx, deciros tambíen que la cultura en un WebForm se establece automáticamente por cada sesión de usuario que se inice en el web, dependiendo del idioma que esté configurado en el navegador del cliente.
Ahora nos surge el problema de forzar el idioma a escoger, bien porque nuestra página permite otros idiomas o bien por necesidad intrínseca del funcionamiento de nuestra página. Teniendo en cuenta los estándares mencionados arriba, podemos variar la cultura de nuestra página de la siguiente manera:
Thread.CurrentThread.CurrentCulture = New CultureInfo("es-ES")
Thread.CurrentThread.CurrentUICulture = New CultureInfo("es-ES")
Bien, explico un poco esto, en las lineas podemos ver que vamos a variar la cultura actual del sitio web y la cultura de la interfaz, esto se hace con CurrentCulture y CurrentUICulture, en primera instancia debemos de establecer la cultura principal del programa a través del hilo principal de ejecución del mismo, esto se hace cogiendo este hilo principal, Thread.CurrentThread, y estableciendo la cultura en ese instante.
Otro problema que nos encontramos es que en el momento de cambiar la cultura, podríamos establecer esta cultura en el hilo en el instante que nos apetezca, pero ocurre que la página Webform ya ha establecido su cultura previamente a nosotros cambiarla, ya que hay un procedimiento en un nivel superior de la jerarquia de clases de la Webform que ha hecho este trabajo y ha escogido el idioma previamente. Pues bien, para solventar este problema y que el cambio de idioma lo veamos reflejado en nuestra web en el momento del cambio, hay otra solución, sobrecargar el método “InitializeCulture” de la clase padre “System.Web.UI.Page” de nuestro WebForm, y ahí colocar el código del cambio de cultura, ya que este procedimiento es el que se encarga de inicializar la cultura de nuestra página antes de ser mostrada en el cliente. Esto quedaría así:
Protected Overrides Sub InitializeCulture()
Thread.CurrentThread.CurrentCulture = New CultureInfo("es-ES")
Thread.CurrentThread.CurrentUICulture = New CultureInfo("es-ES")
End Sub
Bueno, y esto abre a la imaginación tanto como os apetezca, por cierto en el valor “es-ES” se pueden poner todos los valores aceptados por este método descrito en la web de arriba. Así que ya podeís cambiar el idioma de vuestra web “cuando os apetezca”
.
Saludos!






