Foros del Web » Programando para Internet » ASPX (.net) »

Uso de ficheros resx

Estas en el tema de Uso de ficheros resx en el foro de ASPX (.net) en Foros del Web. Buenas, Ahora se me plantea el tema de manejar varios idiomas en la misma web. Quiero hacerlo a través de los ficheros de recursos. Como ...
  #1 (permalink)  
Antiguo 03/05/2006, 07:55
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Uso de ficheros resx

Buenas,
Ahora se me plantea el tema de manejar varios idiomas en la misma web. Quiero hacerlo a través de los ficheros de recursos.
Como he estado mirando, he creado el fichero de recursos "principal" llamado "Home.aspx.resx"
Le he completado algunas partes y parece que puedo ver esos textos en la página. Hasta aquí perfecto.
Luego he creado un nuevo fichero "Home.aspx.en-GB.resx" y le puse los textos en inglés.

Bien, estoy intentando que mi aplicación utilice este fichero de recursos en vez del otro. Para ello, al presionar un botón, ejecuto esto:

Thread.CurrentThread.CurrentCulture = New Globalization.CultureInfo("en-GB")

Luego, al mostrar la página, puedo ver que se ha cambiado el valor del CurrentCulture, porqué lo muestro por pantalla. Pero me sigue sacando los textos del fichero "Home.aspx.resx", en vez de sacarme los del "Home.aspx.en-GB.resx"

Debo hacer algo más a parte de esa linea donde cambio el CurrentCulture, para que la aplicación tome como fichero de recursos el otro?

Gracias por sus aclaraciones.
Saludos cordiales
__________________
..:: moNTeZIon ::..
  #2 (permalink)  
Antiguo 03/05/2006, 09:13
 
Fecha de Ingreso: abril-2006
Mensajes: 40
Antigüedad: 18 años
Puntos: 0
Utiliza el CurrentUICulture, en este proceso se establece la cultura de la interfaz, en CurrentCulture se establece la cultura para el calendario, numeros, formatos... segun la cultura de un pais.

Código:
Thread.CurrentThread.CurrentUICulture = New Globalization.CultureInfo("en-GB")
  #3 (permalink)  
Antiguo 03/05/2006, 10:19
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Hola mcEmmanuel, gracias por responder.
Mira te comento. Este es el código que he probado:
Código:
Session("Idioma") = "ENG"
Dim cI As New System.Globalization.CultureInfo("en-GB", False)
System.Threading.Thread.CurrentThread.CurrentCulture = cI
System.Threading.Thread.CurrentThread.CurrentUICulture = cI
Este codigo lo tengo en el Page_Load de una página de la que heredan todas las demás. Entonces, este es el codigo que se ejecuta primero de todo.
Bien. En la página Home.aspx muestro los dos datos, para ver si los ha cambiado, y esto es lo que devuelve:

System.Threading.Thread.CurrentThread.CurrentCultu re --> en-GB
System.Threading.Thread.CurrentThread.CurrentUICul ture --> en-GB

Entonces los ha cambiado. Por qué, si ha cambiado los valores, sigue mostrandome los textos del fichero "Home.aspx.resx" en vez de mostrar los del fichero "Home.aspx.en-GB.resx" ??

Por otro lado, matizo que mi interés es cambiar los valores, no solo para una página o un proceso, sino para que a partir de ese momento, la aplicación entera trabaje con esa cultura. Espero haberme explicado.

Thanks man
__________________
..:: moNTeZIon ::..
  #4 (permalink)  
Antiguo 03/05/2006, 10:28
 
Fecha de Ingreso: abril-2006
Mensajes: 40
Antigüedad: 18 años
Puntos: 0
Estas trabajando con asp.net 2.0 ?
  #5 (permalink)  
Antiguo 03/05/2006, 10:34
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Siento no haberlo indicado antes
Si, trabajo con ASP.NET 2.0
__________________
..:: moNTeZIon ::..
  #6 (permalink)  
Antiguo 03/05/2006, 10:38
 
Fecha de Ingreso: abril-2006
Mensajes: 40
Antigüedad: 18 años
Puntos: 0
Tengo poco tiempo trabajando con asp.net 2.0, he utilizado poco los metodos de localizacion y globalizacion de una aplicacion en la version 2.0, pero por lo que he leido si varia la forma de accesar a los recursos, pero en un articulo que leia, parece que no es tan complicado te paso el link y espero te sea de utilidad.

Código HTML:
http://quickstart.developerfusion.co.uk/QuickStart/aspnet/doc/localization/localization.aspx
un saludo
  #7 (permalink)  
Antiguo 03/05/2006, 11:29
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Hola mcEmmanuel,

Muchas gracias por el link. Me llevó a éste otro que acabé de entender mejor:

http://msdn2.microsoft.com/en-US/library/bz9tc508.aspx

Bien. Pues el problema radica en el evento que ejecuto el cambio de cultura. como lo hacia en el Page_Load, resulta que en ese punto ya se ha ejecutado el método "InitializeCulture()", que forma parte de la clase Page, y se ejecuta antes que el Page_Load, ya que es donde se define la cultura para poder trabajar ya con los valores correctos para la cultura especificada.

Así pues, sólo hay que sobreescribir el método con nuestro código, y entonces si, lee los textos del Fichero de Recursos que corresponda.

Les dejo mi código. Lo manejo a través de una variable de sesion:
Código:
Protected Overrides Sub InitializeCulture()

  Dim IdiomaActual As String

  Select Case Session("Idioma")
  Case "ENG"
    IdiomaActual = "en-GB"
  Case "FRA"
    IdiomaActual = "fr-FR"
  Case Else
    Session("Idioma") = "ESP"
    IdiomaActual = "es-ES"
  End Select

  UICulture = IdiomaActual
  Culture = IdiomaActual
  Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(IdiomaActual)
  Thread.CurrentThread.CurrentUICulture = New CultureInfo(IdiomaActual)

  MyBase.InitializeCulture()

End Sub
Espero que les sirva!
Y gracias una vez más mcEmmanuel!
__________________
..:: moNTeZIon ::..
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:57.