• Sábado 21 de Diciembre de 2024, 11:31

Autor Tema:  Sitio Web Multiidioma  (Leído 887 veces)

eidou

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Sitio Web Multiidioma
« en: Martes 16 de Mayo de 2006, 17:16 »
0
Hola a todos,
Necesito crear un sitio web en ASP.NET 2.0 que soporte varios idiomas y lo estoy intentando mendiante la utilizacion de recursos locales.
Tengo la siguiente estructura:


MyApp
  • App_LocalResources      
    • Default.aspx.en.resx</li>
    • Default.aspx.es-ES.resx</li>
    • Default.aspx.resx</li>
    </li>
  • Default.aspx</li>

Y por defecto mi aplicación está en inglés:

<%@ Page Language="VB" ... Culture="en" meta:resourcekey="PageResource1" UICulture="en" %>
Supongamos que mi aplicación solo tiene un label que muestra un mensaje de bienvenida y un linkButton que cuando se haga click en él
cambie el idioma de la aplicacion al Español:

<form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" meta:resourcekey="Label1">
        </asp:Label>
       
        <br />
        <br />
       
        <asp:LinkButton ID="lnk" runat="server" meta:resourcekey="lnk"></asp:LinkButton>
     </div>
</form>

 Protected Sub lnk_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnk.Click

        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("es-ES")
        Thread.CurrentThread.CurrentUICulture = New CultureInfo("es-ES")

          MyBase.InitializeCulture()    

 End Sub


Cuando se carga la página, no hay ningún problema, se muestra en Ingles, pero cuando se pulsa el link, la página no se carga en Español, solo si añado lo siguiente en el evento lnk_Click:

  Label1.Text = GetLocalResourceObject("Label1.Text").ToString()
  lnk.Text = GetLocalResourceObject("lnk.Text").ToString()

¿Es realmente necesario recuperar los valores de los recursos mediante programación?
¿No es suficiente añadiendo el atributo meta:resourcekey="Label1"?

Bueno, espero que alguien me pueda echar una mano, porque llevo más de 2 días navegando por los foros y distintos artículos y no he conseguido resolver esta duda

Muchas gracias de antemano