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

mejor opción para gestionar idiomas

Estas en el tema de mejor opción para gestionar idiomas en el foro de ASPX (.net) en Foros del Web. hola, tengo un site en .asp y necesito pasarlo a otros 4 idiomas. Mirando info por la red, se tiende a usar ficheros de recursos ...
  #1 (permalink)  
Antiguo 16/01/2013, 07:22
 
Fecha de Ingreso: febrero-2006
Mensajes: 233
Antigüedad: 18 años, 2 meses
Puntos: 3
mejor opción para gestionar idiomas

hola, tengo un site en .asp y necesito pasarlo a otros 4 idiomas.
Mirando info por la red, se tiende a usar ficheros de recursos .resx usando Visual Studio o mediante .inc como vi en este hilo ya obsoleto seguramente.
Este hilo tambien es interesante

Leí que en Visual podemos definir recursos globales (textos que siempre aparecen tipo menú) y locales (propias para cada página).
En mi caso trabajo 100% (backend .asp y frontend css) en editor Notepad++ y no en Visual.

¿Qué opción/formato me recomiendan para los idiomas?

como de momento solo tenía un idioma, en los ficheros .asp utilizo las etiquetas simples html de toda la vida:
Código HTML:
<span>Hola</span> 
tendré que cambiarlos por algo parecido a esto, ¿no?
Código HTML:
<asp:Label ID="labelHola" runat="server" Text="<%$ Resources:TxtResources, labelHola %>"></asp:Label> 
Gracias!!!
  #2 (permalink)  
Antiguo 16/01/2013, 13:18
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Respuesta: mejor opción para gestionar idiomas

Movido desde ASP.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 17/01/2013, 01:59
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: mejor opción para gestionar idiomas

Cita:
Iniciado por red_robe Ver Mensaje
hola, tengo un site en .asp y necesito pasarlo a otros 4 idiomas.
Mirando info por la red, se tiende a usar ficheros de recursos .resx usando Visual Studio o mediante .inc como vi en este hilo ya obsoleto seguramente.
Este hilo tambien es interesante

Leí que en Visual podemos definir recursos globales (textos que siempre aparecen tipo menú) y locales (propias para cada página).
En mi caso trabajo 100% (backend .asp y frontend css) en editor Notepad++ y no en Visual.

¿Qué opción/formato me recomiendan para los idiomas?

como de momento solo tenía un idioma, en los ficheros .asp utilizo las etiquetas simples html de toda la vida:
Código HTML:
<span>Hola</span> 
tendré que cambiarlos por algo parecido a esto, ¿no?
Código HTML:
<asp:Label ID="labelHola" runat="server" Text="<%$ Resources:TxtResources, labelHola %>"></asp:Label> 
Gracias!!!
Lo primero de todo a recomendarte es que te pases a Visual Studio. La versión Express tiene muchisima funcionalidad y es totalmente gratuita.

Dicho esto, Visual Studio y .net tiene facilidades para la localización de los textos. Aqui tienes unos enlaces para que veas como funciona. Te recomiendo usar el IDE porque te permite que, una vez creada la web, generar el fichero automaticamente para realizar las traducciones y es realmente cómodo:

http://msdn.microsoft.com/en-us/libr...=vs.80%29.aspx
http://msdn.microsoft.com/es-es/library/gg418542.aspx
__________________
Aviso: No se resuelven dudas por MP!
  #4 (permalink)  
Antiguo 17/01/2013, 06:01
 
Fecha de Ingreso: febrero-2006
Mensajes: 233
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: mejor opción para gestionar idiomas

Gracias Malenko!

ando un poco perdido en el tema, perdona, pero, ¿IDE son los ficheros de recursos .resx?
¿si la web tiene 6 páginas internas y 4 idiomas, tendré solo 4 ficheros de idiomas para todo el web o un fichero de idiomas para cada página?

había pensado en utilizar algun hack directamente todo manual, detectar idioma y cargar fichero de textos:

Código:
pais = Request.ServerVariables("HTTP_ACCEPT_LANGUAGE")

idioma = Left(pais, 2)

select case idioma
case "es"
idioma = "Browser Castellano"
'cargar idioma castellano
case "pt"
idioma = "Browser Portugues"
'cargar idioma portugues
case "en"
idioma = "Browser English"
'cargar idioma inglés
end select
seguiré leyendo, gracias
  #5 (permalink)  
Antiguo 17/01/2013, 06:06
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: mejor opción para gestionar idiomas

Cita:
Iniciado por red_robe Ver Mensaje
Gracias Malenko!

ando un poco perdido en el tema, perdona, pero, ¿IDE son los ficheros de recursos .resx?
El IDE es el entorno de programación de Visual Studio.

Cita:
Iniciado por red_robe Ver Mensaje
¿si la web tiene 6 páginas internas y 4 idiomas, tendré solo 4 ficheros de idiomas para todo el web o un fichero de idiomas para cada página?
Tendrías un fichero de recurso por cada ASPX, en este caso 6. Dentro de cada fichero de recursos tendrias los 4 idiomas. Diria que también podrias juntar todos los recursos en un único fichero, pero luego te dificultaría el mantener la web y no sería práctico.
__________________
Aviso: No se resuelven dudas por MP!
  #6 (permalink)  
Antiguo 24/01/2013, 04:53
 
Fecha de Ingreso: febrero-2006
Mensajes: 233
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: mejor opción para gestionar idiomas

Malenko, de momento no me instalaré el Visual.

Mediante Notepadd, no hay manera de incluir un fichero de recursos (.resx), XML o similar para ir leyendo y parseando las variables? busqué por la red pero no encontré algo similar.

Gracias!
  #7 (permalink)  
Antiguo 24/01/2013, 04:57
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: mejor opción para gestionar idiomas

Cita:
Iniciado por red_robe Ver Mensaje
Malenko, de momento no me instalaré el Visual.

Mediante Notepadd, no hay manera de incluir un fichero de recursos (.resx), XML o similar para ir leyendo y parseando las variables? busqué por la red pero no encontré algo similar.

Gracias!
Claro que puedes, al fin y al cabo son simples ficheros de texto plano (en formato xml). Visual Studio lo que hace es facilitarte la faena porque te crea el fichero con todos los objetos que tiene tu página y que se pueden traducir. Pero vamos, que puedes hacerlo a mano con un editor de textos cualquiera.
__________________
Aviso: No se resuelven dudas por MP!
  #8 (permalink)  
Antiguo 24/01/2013, 07:23
 
Fecha de Ingreso: febrero-2006
Mensajes: 233
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: mejor opción para gestionar idiomas

gracias Malenko!

he estado mirando rápidamente opciones de gestión y veo que las 3 más habituales son:

- tablas mediante BBDD: gestión SQL, inicio puede ser tedioso
- XML: pensar bien la jerarquía de tags
- mediante constantes, opción más fácil, un fichero para cada idioma, ejemplo:
Código:
//archivo 'en.php' 

define("NEW_USER", "New User"); 
define("WELCOME_MESSAGE", "Welcome to site.com!"); 
...
En sendas opciones, un usuario/cliente que quiera mantener/añadir/cambiar nuevas opciones, le será igual de complicado, quizás más fácil mediante constantes.

Creo que me inclinaré por constantes, con un único fichero para cada idioma (cada fichero de idioma contendrá todas las traducciones de todo el site). ¿Cómo lo ves? Creo que es eficaz pero no sé si algo obsoleto.
  #9 (permalink)  
Antiguo 25/01/2013, 10:40
Avatar de thegodinez  
Fecha de Ingreso: octubre-2010
Ubicación: Culiacán, Sinaloa
Mensajes: 54
Antigüedad: 13 años, 7 meses
Puntos: 5
Respuesta: mejor opción para gestionar idiomas

red_robe yo te recomiendo archivos xml.

Por ejemplo, este seria tu archivo "Idioma.xml":
Código HTML:
<?xml version="1.0" encoding="iso-8859-1"?>
<Idiomas>
  <Español>
    <Pagina_Login>
      <Label_Usuario>Usuario: </Label_Usuario>
      <Label_Contraseña>Contraseña: </Label_Contraseña>
      <Boton_Entrar>Entrar</Boton_Entrar>
    </Pagina_Login>
  </Español>
  <English>
    <Pagina_Login>
      <Label_Usuario>User: </Label_Usuario>
      <Label_Contraseña>Password: </Label_Contraseña>
      <Boton_Entrar>OK</Boton_Entrar>
    </Pagina_Login>
  </English>
  <Português>
    <Pagina_Login>
      <Label_Usuario>Usuário: </Label_Usuario>
      <Label_Contraseña>Senha: </Label_Contraseña>
      <Boton_Entrar>Entrar</Boton_Entrar>
    </Pagina_Login>
  </Português>
</Idiomas> 
Y este codigo para leerlo en la pagina que traduciras, ahora bien, puedes crear un clase que se llame Idioma, que le envies por parametros la pagina que vas a traducir y que te retorne un arreglo, con los textos traducidos, etc, es decir, hay formas de pulirlo más:

Código:
       public void Traducir(string Idioma)
        {
            XmlNodeList V_Label_Usuario, V_Label_Contraseña,V_Boton_Entrar;
            string Usuario = string.Empty;
            string Contraseña = string.Empty;
            string Entrar = string.Empty;
            string Lat = string.Empty, Lon = string.Empty;

            string xml = String.Format("{0}\\Idiomas.xml", Application.StartupPath);

            if (System.IO.File.Exists(xml) && !string.IsNullOrEmpty(xml))
            {
                XmlDocument xDoc = new XmlDocument();
                xDoc.Load(xml);
                XmlNodeList resultado = xDoc.GetElementsByTagName(Idioma);
                XmlNodeList lista = ((XmlElement)resultado[0]).GetElementsByTagName("Pagina_Login");
                if (lista.Count >= 1)
                {
                    foreach (XmlElement nodo in lista)
                    {
                        int i = 0;
                        V_Label_Usuario = nodo.GetElementsByTagName("Label_Usuario");
                        V_Label_Contraseña = nodo.GetElementsByTagName("Label_Contraseña");
                        V_Boton_Entrar = nodo.GetElementsByTagName("Boton_Entrar");
                        Usuario = V_Label_Usuario[i].InnerText;
                        Contraseña = V_Label_Contraseña[i].InnerText;
                        Entrar = V_Boton_Entrar[i].InnerText;
                        Label_Contraseña.Text = Contraseña;
                        Label_Usuario.Text = Usuario;
                        Boton_Entrar.Text = Entrar;
                    }
                }
            }
        }
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 01:45.