Foros del Web » Programando para Internet » ASP Clásico »

ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Estas en el tema de ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web en el foro de ASP Clásico en Foros del Web. Hola a todos, Como lo prometido es deuda, aqui va mi pequeña aportación para este gran foro XML o eXtensible Markup Language es un lenguaje ...
  #1 (permalink)  
Antiguo 06/10/2007, 02:14
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Hola a todos,

Como lo prometido es deuda, aqui va mi pequeña aportación para este gran foro

XML o eXtensible Markup Language es un lenguaje de marcas, como HTML. Su diferencia radica principalmente en la edad Mientras HTML lleva ya años con nosotros, XML es un recien llegado. Es el hermano pequeño de HTML y como tal todo son mimos y cariños para el nuevo. Le han salido amigos por todos lados: XSLT, XSL, SGML, el híbrido XHTML, y más que le saldrán.

¿Cuál es la gran diferencia entre el maqueteado de HTML y el de XML? En que XML es más “Markable” que HTML. Eso le permite ser utilizado en mútiples campos: transporte de datos (RSS y Servicios Web), archivos de inclusión para maqueteado de páginas (XSL, XSLT) o archivos de configuración. Este ultimo caso es el que vamos a utilizar para hacer una aproximación al uso de archivos XML con ASP 3.0 o Clásico.

Eligiendo un sistema para la gestión de idiomas

Una de las tareas más ingratas que un programador web se encuentra cuando crea una página web es su disponibilidad en varios idiomas. Se necesita algun tipo de conexión que nos dé la información (solo lectura) y sea rápido. Uno se encuentra ante la tesitura de elegir entre varias opciones:
  • Hacer una página web por cada idioma. (descartado, eso es inviable en una web dinámica que se precie )
  • Hacer un archivo con variables (cadenas, arrays, etc) que contengan la información que la página necesita (hay que tener en cuenta el tipo de la variable a elegir, es una buena idea si dispusiéramos de los arrays asociativos que tienen en PHP)
  • Usar el diccionario (Scripting.Dictionary) para emular dichos arrays asociativos. Esta opción es buena pero el mantenimiento nos puede traer más de un dolor de cabeza. (sobre todo teniendo en cuenta que la traducción de los textos suele hacerse por personas ajenas al gremio )
  • Meterlo en una base de datos. Es una gran opción. Más ataques a la BD pero si está cerca tampoco es un problema. Le damos un 8.
  • Usar archivos externos que puedan ser mantenidos por personas ajenas a la programación y que dispongan de herramientas para su mantenimiento: XML
Cada uno puede usar el que más le convenga o le convenza pero en este caso vamos a usar el último por varias razones:

-Es un archivo de texto puro y duro y no hace falta que le demos ningun tipo de permisos especiales.
-Es rápido usando las herramientas adecuadas.
-Dispone de un sistema de búsqueda interna bastante apañado (xPath)
-Nos permite incluir cualquier tipo de dato (exceptuando objetos) permitiendonos crear multitud de subniveles
-Existen miles de herramientas en Internet gratuitas para que el mantenimiento del idioma no sea una tarea “exclusiva” del programador (buff )
-Es la causa de este artículo XD


Hasta aquí la primera parte de este humilde y sencillo artículo sobre XML y su utilización en ASP. Lo próximo que veremos será el objeto intermediario entre ASP y XML: el componente MSXML creado por Microsoft para que jugueteemos con XML



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #2 (permalink)  
Antiguo 06/10/2007, 03:20
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 19 años, 5 meses
Puntos: 9
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Muy buena idea , gracias...

Y sin ánimo de complicar la cosa, pero ¿este sistema podría ser capaz de tener varios idiomas a todos los niveles?? Me refiero a:
  • Mensejes de los procedimientos de base de datos
  • Mensajes y rótulos de ASP/HTML
  • Mensajes (alerts) de javascript

Es que es un problema que me he encontrado, ya que el primero es fácilmente solucionable con una tabla de mensajes en varios idiomas, el segundo pues como tú dices con XML, pero ¿¿el javascript?? Espero que también puedas ayudarnos con eso

En cualquier caso sin el javsacrpt ya es una solución mucho mejor que la que yo me había planteado, así que muchas gracias
  #3 (permalink)  
Antiguo 06/10/2007, 09:19
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Gracias, estamos en espera de la siguiente clase
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 06/10/2007, 14:09
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 2 meses
Puntos: 88
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

excelente idea Tamm , de esta clase tampoco me salgo

la pregunta del millon....... cuando saldra la clase del profe tiguron

en espera de la proxima clase
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #5 (permalink)  
Antiguo 06/10/2007, 15:30
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Buenísimo! La seguiré tal y como sigo la de u_g: silenciosamente agazapado a la espera de cada capítulo
__________________
...___...
  #6 (permalink)  
Antiguo 07/10/2007, 11:28
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Gracias, gracias. Espero que sirva a alguien
Sigamos

El componente MSXML. Hurgando en el laberinto.

El componente de Microsoft dispone de una serie de objetos dependiendo de lo que queramos hacer con nuestro archivo XML o de donde lo leemos. Principalmente son dos:

-HTTPREQUEST
-XMLDOM

El primero de ellos es ampliamente conocido por su uso para trabajar de forma asíncrona con el servidor (es más conocido como AJAX) y nos permite leer archivos desde diferentes localizaciones: una página desde un sitio web, procesar una página dinámica, etc. Este nos devuelve texto plano (ya sea maqueteado o no) o un documento XML: un XMLDOM.

Como vemos, el segundo, el objeto XMLDOM es el objeto que más nos interesa. Es el objeto que va a guardar nuestro documento XML el cual podemos crearlo o bien desde el objeto HTTPREQUEST o bien como un objeto vacío listo para ser usado y cargado. Me recuerda mucho al objeto ADO Recordset. El cual podemos también recibirlo desde una conexión (Connection) o crearlo vacío y listo también para ser usado (lo veremos más adelante )

Entonces, el objeto que nos interesa es el XMLDOM que lo crearemos asi:

Set objXML = Server.CreateObject(“Microsoft.XMLDOM”)

También podemos hacerlo así:

Set objXML = Server.CreateObject(“MSXML2.DOMDocument.3.0”)

Es exactamente lo mismo. La única diferencia es que el segundo contiene algunos métodos más para trabajar con XSL (una forma de maquetar el resultado de un XML) pero como no va a ser así, nos olvidamos de esta segunda forma de instanciar el objeto.

Documentos XML: Centrando nuestra atención (I)

Un archivo XML tiene esta forma:

<?xml version="1.0" encoding="iso-8859-1"?>
<Idioma>
<Nodo atributo=”valor”>Cabecera</Nodo>

</Idioma>

Esto es lo más básico: Su definición (su Content-Type y su charset) y el documento (lo que haya entre <Idioma> e </Idioma>)

El documento está formado por nodos:

<Nodo atributo=”valor”>Cabecera</Nodo>
<Nodo atributo=”valor”>Cabecera</Nodo>
<Nodo atributo=”valor”>Cabecera</Nodo>

<Nodo atributo=”valor”>Cabecera</Nodo>

Los Nodos son el núcleo del documento XML. Estos disponen de propiedades (de forma similar a como asignamos propiedades a los tags HTML: <a ref.=””> ref. es una propiedad del tag a ) y de texto (lo que hay entre el tag de apertura y el de cierre)

¿Qué es lo que pasa si queremos asignar más cosas a un nodo? Pues hacemos subnodos (o childNodes como dicen en inglés). Por ejemplo. Imagina que queremos poner una poesia en la página con un par de fotos pero que esta no sea siempre la misma. Lo podríamos hacer añadiendo al documento XML lo siguiente:

Código:
  <?xml version="1.0" encoding="iso-8859-1"?>
  <Idioma>
     <Nodo atributo=”valor”>Cabecera</Nodo>
              
     <poesias>
           <poesia id=”1”>
                    <autor>Pablo Neruda</autor>
                    <titulo>campesina</titulo>
                    <texto>
                         ……
                    </texto>
           </poesia>
               ….
           <poesia id=”N”>
                   <autor>XXXXX</autor>
                   <titulo>XXXXXXXXX</titulo>
                   <texto>
                      ……
                   </texto>
           </poesia>
     </poesias>
  </Idioma>
Podemos hacer tantos subnodos como queramos. Lo que si que has de tener en cuenta es mantener bien cerrados aquellos nodos que abras. En pocas palabras mantener el documento XML bien-formado (well-formed)

Hay otro tipo de nodo que puede ser de utilidad pero que no vamos a utilizar en este manual. Es este

<nodo id=”1” value=”unvalor” />

Como veis no contiene ningun tag de cierre. Sin embargo si que contiene una marca de cierre. Es muy parecido al tag IMG de HTML o la los INPUT.

Los documentos XML disponen de muchas más formas de estructurar la información pero nos vamos a centrar en estas. Son las más simples; si queremos ahondar en el XML, un buen sitio para empezar sería este: http://es.wikipedia.org/wiki/XML

XMLDOM: Centrando nuestra atención (y II)

Ya tenemos claro lo que es un documento XML y como se hace. Ahora nos toca leerlo y procesarlo desde ASP. Para eso usaremos, como dijimos antes, el objeto XMLDOM.

Como vimos anteriormente, XML es un documento formado por nodos. ¿Qué és entonces XMLDOM? Pues eso mismo: un objeto documento formado por objetos nodos y estos a su vez formados por otros objetos nodos y asi hasta que no haya más nodos. ¿Comprendéis la idea? Podemos ir diseccionando el documento XML en partes mas pequeñas.

Empecemos a crear uno de estos objetos:

Dim objXML

Set objXML = Server.CreateObject(“Microsoft.XMLDOM”)

Necesitamos decirle que el método de sincronización con los datos no es asíncrono. O sea, que lea de una vez y no se quede esperando.

objXML.async = false

Ahora cargamos el archivo XML. Este objeto no es como el HTTPREQUEST. Este necesita que el archivo esté de forma local (a no ser, claro está, que venga directamente de un objeto HTTPREQUEST) en nuestro servidor:

objXML.Load(“c:\missitiosweb\misitioweb\archivo.XM L”)
o usar el Server.MapPath


En el próximo post hablaré de la gestión de errores para que no nos pete la página y nuestros primeros accesos a los datos
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #7 (permalink)  
Antiguo 08/10/2007, 12:36
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Gestión de errores

El componente de Microsoft dispone de otro objeto muy interesante: ParseError Contiene información detallada del último error que se ha producido. Un lugar ideal para usarlo es justo después de leer el archivo XML. Este objeto detecta si existen errores de estructuración dentro del paquete XML.



if objXML.parseError.errorCode <> 0 Then
response.write "Error de Lectura.<br />” & _
“FilePos: " & objXML.parseError.filepos & "<br /> “ & _
“Línea: " & objXML.parseError.Line & "<br />” & _
“Causa: " & objXML.parseError.reason & "<br />” & _
“Ocurrió en: " & objXML.parseError.srcText & "<br />” & _
“Archivo: " & objXML.parseError.URL
Response.End()
End if

Con esto tenemos suficiente para detectar cualquier tipo de error en nuestros archivos XML. Como veis, al final de la linea de error hago un response.End() para para todo el proceso. Es como un die() de PHP: Cierra todo lo que esté abierto y envia el documento al navegador tal y como esté. Existen otras formas de procesar los errores menos drásticas pero un error de estas características inutiliza nuestra página web.

__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #8 (permalink)  
Antiguo 08/10/2007, 12:37
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

El archivo XML al completo

idiomas/es/general.xml
Código:
  <?xml version="1.0" encoding="iso-8859-1"?>
  <Idioma>
              <NombrePagina>Mi página en Español</NombrePagina>
   
              <!-- Nuestro menú principal -->
              <menues>
                          <menu ref="index.asp" target="">Inicio</menu>
                          <menu ref="quienes.asp" target="">¿Quienes somos?</menu>
                          <menu ref="productos.asp" target="">Nuestros productos</menu>
                          <menu ref="contactar.asp" target="">Contactar</menu>
              </menues>
   
              <!-- Idiomas disponibles -->
              <menuIdiomas>
                          <lenguage id="es" imgUrl="http://www.forosdelweb.com/images/es.jpg" alt="Español" />
                          <lenguage id="en" imgUrl="http://www.forosdelweb.com/images/en.jpg" alt="Inglés" />
              </menuIdiomas>
   
              <!-- Texto del la página principal -->
              <tituloPaginaPrincipal>¡Bienvenidos a mi página web!!</tituloPaginaPrincipal>
              <textoPaginaPrincipal>
              <![CDATA[
                                     <div id="obra">Campesina</div>
                                     <p>
                                      Entre los surcos tu cuerpo moreno<br />
                                     es un racimo que a la tierra llega.<br />
                                     Torna los ojos, mírate los senos,<br />
                                     son dos semillas ácidas y ciegas.
                                     </p>
                                     <p>
                                     Tu carne es tierra que será madura<br />
                                     cuando el otoño te tienda las manos,<br />
                                     y el surco que será tu sepultura<br />
                                     temblará, temblará, como un humano
                                     </p>
                                     <p>
                                     al recibir tus carnes y tus huesos<br />
                                     -rosas de pulpa con rosas de cal:<br />
                                     rosas que en el primero de los besos<br />
                                     vibraron como un vaso de cristal-.
                                     </p>
                                     <p>
                                     La palabra de qué concepto pleno<br />
                                     será tu cuerpo? No lo he de saber!<br />
                                     Torna los ojos, mírate los senos,<br />
                                     tal vez no alcanzarás a florecer.
                                     </p>
                                     <div id="autor">Pablo Neruda (1904 - 1973)</div>
                          ]]>
              </textoPaginaPrincipal>
   
              <!-- Pie de página -->
              <piePagina>
              <![CDATA[
<div align="center">Gracias por visitar nuestra p&aacute;gina en espa&ntilde;ol</div>
                          <table width="80%" border="0" cellspacing="2" cellpadding="0" align="center">
                          <tr>
                          <td width="20%" align="center">Celda 1</td>
                          <td width="60%" align="center">Celda 2 La más grande</td>
                          <td width="20%" align="center">Celda 3</td>
                          </tr>
                          </table>
   
                          ]]>
              </piePagina>
  </Idioma>
idiomas/en/general.xml
Código:
  <?xml version="1.0" encoding="iso-8859-1"?>
  <Idioma>
              <NombrePagina>My page in English</NombrePagina>
   
              <!-- Nuestro menú principal -->
              <menues>
                          <menu ref="index.asp" target="">Home</menu>
                          <menu ref="quienes.asp" target="">Who are we?</menu>
                          <menu ref="productos.asp" target="">Ours Products</menu>
                          <menu ref="contactar.asp" target="">Contact us</menu>
              </menues>
   
              <!-- Idiomas disponibles -->
              <menuIdiomas>
                          <lenguage id="es" imgUrl="http://www.forosdelweb.com/images/es.jpg" alt="Spanish" />
                          <lenguage id="en" imgUrl="http://www.forosdelweb.com/images/en.jpg" alt="English" />
              </menuIdiomas>
   
              <!-- Texto del la página principal -->
              <tituloPaginaPrincipal>¡Wellcome to my web site!!</tituloPaginaPrincipal>
              <textoPaginaPrincipal>
              <![CDATA[
                                     <div id="obra">Sorley’s Weather</div>
                          <p>
                          When outside the icy rain<br />
                          Comes leaping helter-skelter,<br />
                          Shall I tie my restive brain<br />
                          Snugly under shelter?
                          </p>
                          <p>
                          Shall I make a gentle song<br />
                          Here in my firelit study,<br />
                          When outside the winds blow strong<br />
                          And the lanes are muddy?
                          </p>
                          <p>
                          With old wine and drowsy meats<br />
                          Am I to fill my belly?<br />
                          Shall I glutton here with Keats?<br />
                          Shall I drink with Shelley?
                          </p>
                          <p>
                          Tobacco’s pleasant, firelight’s good:<br />
                          Poetry makes both better.<br />
                          Clay is wet and so is mud,<br />
                          Winter rains are wetter.
                          </p>
                          <p>
                          Yet rest there, Shelley, on the sill,<br >
                          For though the winds come frorely,<br />
                          I’m away to the rain-blown hill<br />
                          And the ghost of Sorley.          
                          </p>
                                     <div id="autor">Robert Graves (1895 - 1985)</div>
                          ]]>
              </textoPaginaPrincipal>
   
              <!-- Pie de página -->
              <piePagina>
              <![CDATA[
                          <div align="center">Thank you for visiting my site</div>
                          <table width="80%" border="0" cellspacing="2" cellpadding="0" align="center">
                          <tr>
                          <td width="20%" align="center">Powered by Me</td>
                                     <td width="60%" align="center">Celda 2 La más grande</td>
                          <td width="20%" align="center">Celda 3</td>
                          </tr>
                          </table>
   
                          ]]>
              </piePagina>
  </Idioma>
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #9 (permalink)  
Antiguo 08/10/2007, 12:41
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Buscando información en el objeto

Una vez que todo ha ido bien, nos queda buscar la información que necesitamos dependiendo del momento y del lugar.

Cuando desarrollamos la estructura de nuestro archivo XML decidimos crear 3 tipos diferentes de nodos:

1 – Nodos Simples: Contendrían solo texto. Seria la traducción de partes de nuestra página que no contuvieran demasiada información. Por ejemplo: El nombre de la página

<NombrePagina>Mi sitio web en español</NombrePagina>

2 – Nodos con sección CDATA: Estos nodos son muy parecidos a los anteriores con la salvedad de que todo aquello que contenga no será analizado por el objeto.

<piePagina>
<![CDATA[
Aquí podemos meter etiquetas HTML, etc que no será analizado. La única condición es que el nodo debe contener es la sección CDATA (lo que haya entre lo que está en negrita).
]]>
</piePágina>

Mas info: http://www.w3schools.com/xml/xml_cdata.asp

3 – Nodos contenedores. Son aquellos nodos que van a contener más nodos. Un ejemplo es nuestro sistema de menus:
<menues>
<menu ref="index.asp" target="">Inicio</menu>
<menu ref="quienes.asp" target="">¿Quienes somos?</menu>
<menu ref="productos.asp" target="">Nuestros productos</menu>
<menu ref="contactar.asp" target="">Contactar</menu>
</menues>

Como veis es un nodo que contiene una serie de subnodos llamados todos menú.

-------

Empecemos por un ejemplo sencillo: Ponerle nombre a la página. Como vemos en los archivos XML, el nodo que contiene dicha información está muy cerca del documento raíz:

<Idioma> <----------------- documento raiz
< NombrePagina> <------ Nodo

Y, además, sólo existe un nodo que se llama NombrePagina. ¿Cómo accedemos a su infomación (a su text)? Usando uno de los métodos que contiene el objeto XMLDOM: getElementsByTagName.

Este método busca dentro del documento raiz aquellos elementos que se llamen de una determinada manera y nos devuelven una colección de todo aquellos elementos que encuentre. Esto pueden ser desde un simple nodo a toda una lista de nodos (NodeList)

Por ejemplo:

Set todoElDocumento = objXML.getElementsByTagName(‘*’)

Nos devolvería TODO el documento XML metido en una colección NodeList (una colección de nodos). Sin embargo, nosotros queremos algo muy concreto: Solo queremos el texto que hay en el interior de los tags o elementos.

Texto = idiomaXML.getElementsByTagName(etiqueta).Item(0).T ext

Es decir, nos devuelve el text (lo que hay entre <…> y </…>) del primer elemento de la colección (0).

Pongamos ahora una función:

Código:
  Public function GetIdioma(etiqueta)
              Dim Texto                  
              on error resume next
              Texto = objXML.getElementsByTagName(etiqueta).Item(0).Text
              ‘ Si se produce un error. Por ejemplo, que no encuentra la etiqueta, me devolverá
             ‘ el nombre de la etiqueta que he usado entre corchetes
  if err.number > 0 then
                          GetIdioma = "[" &  etiqueta  & "]"
              else
                          getidioma=texto
              end if
              on error goto 0
                          
  end function
Para usarlo:

[code]
<html>
<head>
<title><%=getIdioma(“NombrePagina”)%></title>
….

[code]


Hemos dado nuestro primer paso en crear nuestra página multi-idiomas con XML. El proximo post lo dedicaré a meter todas las operaciones que hagamos con el objeto XML dentro de una clase para organizarnos mejor y veremos lo interesante que es para poder reutilizar el código ;)

Más infotrmación sobre los objetos que contiene el componente de Microsoft: http://www.devguru.com/technologies/xml_dom/15602.asp
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #10 (permalink)  
Antiguo 11/10/2007, 12:48
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Nuestra clase clsIdioma

Una vez visto como funciona esto de moverse entre los nodos, nos encaminamos a crear las funciones que vamos a utilizar para acceder a la información. Por el momento van a ser de tres tipos:

1 – Genérico: Para obtener los títulos, nombres, texto en general. Por ejemplo: Los botones de un formulario (aceptar, cancelar, imprimir…) o las etiquetas de un formulario: nombre, apellido, dirección, Código Postal. Incluso podemos por trozos enteros de código HTML usando secciones CDATA.

2 – Menu Principal: Este nodo contiene el texto del menú principal, sus enlaces, incluso su target.

3 – El bloque de Idiomas Disponibles: Contendrá los textos y los enlaces que queramos usar.

El Código de clsIdioma

Código:
  <%
  Const adInteger = 3
  Const adVarChar = 200
  Const adDate = 7
   
  Class clsIdioma
   
   
  private idiomaXML
   
  public function Load(strIdioma)
              if len(strIdioma) > 0 then 
                          idiomaXML.load(strIdioma)
   
                          ' Procesamos los errores de lectura
                          if idiomaXML.parseError.errorCode <> 0 Then
                                      Load = "Error de Lectura (Por favor, ponerse en contacto con el webmaster).<br />FilePos: " & idiomaXML.parseError.filepos & "<br /> Línea: " & idiomaXML.parseError.Line & "<br /> Causa: " & idiomaXML.parseError.reason & "<br /> Ocurrió en: " & idiomaXML.parseError.srcText & "<br /> Archivo: " & idiomaXML.parseError.URL
                          else
                                     Load = ""
                          end if
              else
                          Load = "¡Nada que leer!"
              end if
  end function
   
  Public function GetIdioma(etiqueta)
              Dim Texto                   
              on error resume next
      Texto = idiomaXML.getElementsByTagName(etiqueta).Item(0).Text
              if err.number > 0 then
                          GetIdioma = "[" &  etiqueta  & "]"
              else 
                          getidioma=texto
              end if
              on error goto 0
                          
  end function
   
   
  Public function getMenus()
              Dim n, num, arr()
              Dim rs
   
              num = idiomaXML.selectSingleNode("/Idioma/menues").childNodes.length
   
              if num = 0 then 'Ha habido un problema cargando el xml
                          set getMenus = nothing
                          exit function
              end if
              
              Set rs = Server.CreateObject("ADODB.Recordset")
              rs.Fields.Append "url", adVarChar, 255
              rs.Fields.Append "texto", adVarChar, 255
              rs.Fields.Append "target", adVarChar, 25
   
              rs.Open
   
              for n = 0 to num - 1
                          rs.AddNew      
   
                          rs.Fields("url").Value = idiomaXML.selectSingleNode("/Idioma/menues").childNodes(n).attributes(0).Value ' url
                          rs.Fields("target").Value = idiomaXML.selectSingleNode("/Idioma/menues").childNodes(n).attributes(1).Value ' target
                          rs.Fields("texto").Value = idiomaXML.selectSingleNode("/Idioma/menues").childNodes(n).childNodes(0).text ' texto
                          
                          rs.Update
              next
              
              rs.moveFirst
              
              set getMenus = rs
              set rs = nothing
   
  end function
   
  Public function getLangMenus()
              Dim n, num, arr()
              Dim rs
              
              num = idiomaXML.selectSingleNode("/Idioma/menuIdiomas").childNodes.length
   
              if num = 0 then 'Ha habido un problema cargando el xml
                          set getMenus = nothing
                          exit function
              end if
              
              Set rs = Server.CreateObject("ADODB.Recordset")
              rs.Fields.Append "id", adVarChar, 2
              rs.Fields.Append "imgUrl", adVarChar, 255
              rs.Fields.Append "alt", adVarChar, 50
   
              rs.Open
   
              for n = 0 to num - 1
                          rs.AddNew      
                          rs.Fields("id").Value = idiomaXML.selectSingleNode("/Idioma/menuIdiomas").childNodes(n).attributes(0).Value ' id
                          rs.Fields("imgUrl").Value = idiomaXML.selectSingleNode("/Idioma/menuIdiomas").childNodes(n).attributes(1).Value ' imgUrl
                          rs.Fields("alt").Value = idiomaXML.selectSingleNode("/Idioma/menuIdiomas").childNodes(n).attributes(2).Value ' alt
                          rs.Update
              next
              
              rs.moveFirst
              
              set getLangMenus = rs
              set rs = nothing
   
  end function
   
   
    '*********************************************************************
    ' Inicializacion/Terminacion
    '*********************************************************************
   
    Private Sub Class_Initialize()
      Set idiomaXML = Server.CreateObject("Microsoft.XMLDOM")
              
              ' Para evitar que el objeto esté en escucha ya que 
              ' solo lo vamos a abrir una vez
              idiomaXML.async=false
    End Sub
   
    Private Sub Class_Terminate()
      Set idiomaXML = Nothing
    End Sub
  end Class
   
  %>
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #11 (permalink)  
Antiguo 11/10/2007, 12:50
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Describiendo el Código

Nuestra clase clsIdioma contiene 4 métodos, un constructor y un destructor. No contiene propiedades por que no las necesita. Se usa asi de facil:

Dim objIdioma
set objIdioma = new clsIdioma

Solo nos queda cargar el archivo XML

Load

Dim strError
strError = objIdioma.Load(Server.MapPath("idiomas/" & Idioma & "/general.xml"))

Si ocurre algún error al cargar la página, el método Load nos devuelve una cadena con el error para que podamos ponerlo donde queramos. La variable Idioma veremos de donde viene más adelante.

Como ya vimos como cargar un archivo XML en el objeto XMLDOM no me voy a repetir. Pasemos a los otros 3 métodos que se refieren a los 3 tipos que hablábamos al principio de esta sección:

1 – GetIdioma (para los datos genéricos)
2 – getMenus (Devuelve un recordset con los menús.)
3 – getLangMenus (devuelve un Recordset con los idiomas disponibles).

Veámoslos más detenidamente.

getIdioma

Esta función es muy simple: Busca en el archivo XML aquellos nodos cuya etiqueta coincida con la que solicitamos y nos devuelve el texto que contenga. La vimos ligeramente en capítulos anteriores y, como veis, tiene un bloque on error para evitar que nos falle en la búsqueda. Si no la encuentra, nos devolverá la etiqueta solicitada entre corchetes.

Public function GetIdioma(etiqueta)
Dim Texto
on error resume next
Texto = idiomaXML.getElementsByTagName(etiqueta).Item(0).T ext
if err.number > 0 then
GetIdioma = "[" & etiqueta & "]"
else
getidioma=texto
end if
on error goto 0

end function

Quisiera recalcar el método getElementsByTagName. Fijaos en como funciona de una forma práctica:

getElementsByTagName(“NombrePagina”).Item(0).Text

corresponde al texto del primer item que encuentre en el nodo NombrePagina. Si hubiera encontrado varios nodos con la misma etiqueta, nos hubiera devuelto una colección con todos los que hubiera encontrado:

<NombrePagina>Mi Pagina 1</NombrePagina>
<NombrePagina>Mi Pagina 2</NombrePagina>

getElementsByTagName(“NombrePagina”).length nos hubiera devuelto 2
Yo lo uso para encontrar etiquetas únicas ya que si encuentra más de una me devolverá el texto de la primera (0) pero puede usarse para rellenar combos, etc
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #12 (permalink)  
Antiguo 12/10/2007, 12:07
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

getMenus

Esta es algo más compleja ya que devuelve un conjunto de registros con sus campos sin embargo no requiere ningún parámetro. Podriamos haber usado el método anteriormente descrito pero quiero que veais otro mas: selectSingleNode

Veamos el código

num = idiomaXML.selectSingleNode("/Idioma/menues").childNodes.length

El método tiene un funcionamiento muy parecido a getElementsByTagName salvo que no nos devuelve todos los nodos que encuentre con una determinada etiqueta, sino solo aquel nodo que encuentre donde le pedimos ya sea una ruta absoluta como uso yo, o un comando xPath de búsqueda. xPath es un lenguaje de búsqueda dentro de XML. Es el SQL del XML. Un cursillo interesante sobre xPath lo podeis encontrar aqui.

Como veis uso la ruta completa: “/Idioma/menues” y me devolverá todos los childNodes que encuentre bajo el siempre que haya alguno:


if num = 0 then 'Ha habido un problema cargando el xml
set getMenus = nothing
exit function
end if

El significado de “/Idioma/menues” es “Desde el documento (/), baja al nodo raiz Idioma, baja a el nodo menues

Ahora vamos a crear un objeto recordset mucho más manejable en ASP. Lo creamos vacio y asignamos los campos que necesitamos usando el método Append:

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Fields.Append "url", adVarChar, 255
rs.Fields.Append "texto", adVarChar, 255
rs.Fields.Append "target", adVarChar, 25

Abrimos el recordset y empezamos a insertar los datos que buscamos en el XML en él

rs.Open

for n = 0 to num - 1
rs.AddNew

Fijaos en los valores que buscamos en el XML
rs.Fields("url").Value = idiomaXML.selectSingleNode("/Idioma/menues").childNodes(n).attributes(0).Value ' url

equivale a <menu ref="index.asp" target="">Inicio</menu>

rs.Fields("target").Value = idiomaXML.selectSingleNode("/Idioma/menues").childNodes(n).attributes(1).Value ' target

equivale a <menu ref="index.asp" target="">Inicio</menu>

rs.Fields("texto").Value = idiomaXML.selectSingleNode("/Idioma/menues").childNodes(n).childNodes(0).text ' texto

equivale a <menu ref="index.asp" target="">Inicio</menu>

rs.Update
next

Ponemos el cursor del recordset al inicio de éste y devolvemos el recordset.
rs.moveFirst

set getMenus = rs
set rs = nothing

end function

En términos generales, usaremos selectSingleNode cuando queramos acceder directamente a un nodo determinado y que éste nos devuelva todo lo que haya por debajo. getElementsByTagName nos devolverá todos aquellos nodos que contengan una determinada etiqueta. La elección entre uno y otro dependerá de nuestras necesidades (por ejemplo, getElementsByTagName es ideal para leer bloques completos de una etiqueta determinada –por ejemplo <noticia>- en un RSS)

getLangMenus

Este método es muy similar al anterior por lo que no voy a extender en él. Sólo decir que podríamos haber usado un solo método para ambos (por ejemplo, getItems) enviándole como parámetro la localización del/los nodo(s) que deseemos y que nos lo devolviera en un recordset:

getItems(“/Idioma/menuIdiomas”)
o
getItems(“/Idioma/menues”)
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #13 (permalink)  
Antiguo 17/10/2007, 12:16
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Disculpad la tardanza. He estado fuera y no he podido continuarlo. Aqui voy


Directivas sobre recepción y grabación de de datos de Idioma

Uno de los problemas a los que nos vamos a enfrentar cuando hagamos un sistema de idiomas es la forma en que vamos a recibir la información sobre el idioma y donde la vamos a guardar.

La recepción de cambio de Idioma

Generalmente cuando queramos cambiar de idioma lo haremos creando un enlace donde parametrizaremos el cambio en la dirección URL (GET):

<a ref.=”<%= request.ServerVariables("SCRIPT_NAME") %>?lang=en”>Inglés</a>

Esta es la forma más facil: creando un parámetro que defina el cambio. En este caso es el par lang=en. Y así lo haríamos con todos los idiomas disponibles.

Otra forma similar es usar un form para enviar la misma información pero a través del método POST:

<form method=”post” action=” request.ServerVariables("SCRIPT_NAME") %>”>
<input type=”hidden” name=”lang” value=”en” />
<input type=”submit” value=”Inglés” />
</form>

Método mucho mas enrevesado que el anterior a mi entender.

Ya tenemos la el método que utilizaremos para generar el cambio de idioma: a través de GET usando luego el request.QueryString para identificarlo.

La grabación del nuevo Idioma

El otro problema que tenemos es cómo vamos a mantener ese idioma durante la navegación del usuario por nuestras páginas. Tenemos varias alternativas:

1 – Usando el mismo método que usamos para cambiar el idioma: Parametrizamos todos los enlaces que haya en nuestro sitio web. Este es un método artesanal, seguro (no depende de cookies) y fiable: simplemente añadimos el par variable=Idioma a todos los enlaces. Es tedioso pero robusto.

2 – Usando cookies: Es rápido y muy facil de implementar. Usando response.cookies(variable) = Idioma para guardar la información y request.cookies(variable) para recuperarla. El único inconveniente que tiene es que dependemos de que el usuario tenga habilitado las cookies.

3 – Usando variables de sesión: Aunque usar variables de sesión parezca el mejor método tenemos el mismo problema que usando cookies: Si está deshabilitado el uso de cookies en el cliente, no podremos usar sesiones. Recordad que IIS guarda una cookie con el sessionID del usuario para poder asignarle entre una página y otra las variables y sus valores que le corresponda a cada usuario.

Tenemos 3 posibilidades. Cada cual puede elegir el método que prefiera o hacer una mezcla entre ellos (si vemos que el usuario no acepta cookies pues lo hacemos parametrizando, en caso contrario lo hacemos con sesiones, por ejemplo). Yo voy a optar por el método más sencillo: voy a guardarlo en una sesión.

Definiendo el idioma por defecto

Nos queda una cosa más: la primera vez que el usuario entra en nuestro sitio web, ¿cómo sabemos que idioma poner si el usuario todavía no nos lo ha dicho?. Existen dos posiblilidades:

1 – Que nos lo diga su navegador. Las variables del servidor nos pueden dar muchos datos del navegador del cliente: el nombre, la versión, su IP, su idioma… ¿su idioma? Si. Existe una variable de servidor que nos da su idioma (el que tiene instalado en su navegador). Esta variable es: Http_Accept_Language

Esta variable nos va a devolver algo asi : es-es,es;q=0.5

De todo asta información lo que realmente nos interesa son los dos primeros dígitos ya que nuestro sistema se basa en la codificación de paises en dos letras (2-letter-iso-code). Para ello nos hacemos una pequeña función

Idioma = Trim(left(request.ServerVariables("HTTP_ACCEPT_LAN GUAGE"),2))

2 – Se lo decimos nosotros. Si nuestro eficiente sistema, a pesar de todo no reconoce nada de nada siempre nos queda usar una constante para asignarle el idioma:

Const DEFAULT_LANGUAGE = “es”

Y luego asignárselo a la variable que ha estado pasando la criba, al final de esta:

Idioma = request.QueryString(“lang”)
If Idioma = “” then Idioma = Session(“Idioma”)
If Idioma =”” then Idioma = Trim(left(request.ServerVariables("HTTP_ACCEPT_LAN GUAGE"),2))

If Idioma = “” then Idioma = DEFAULT_LANGUAGE
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #14 (permalink)  
Antiguo 17/10/2007, 12:17
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Terminando…

Bueno, llegamos al final de este cursillo. Nos queda montar el esqueleto de nuestra página web. Vamos allá. Aquí esta el código:

Código:
   
  <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
  <!--#include file="clases/clsidioma.asp"-->
  <%
   
  ‘ Nuestra constante :-)
  Const DEFAULT_LANGUAGE = "es"
  Dim Idioma
   
  Idioma = request.QueryString(“lang”)
  If Idioma = “” then Idioma = Session(“Idioma”)
  If Idioma =”” then Idioma =  Trim(left(request.ServerVariables("HTTP_ACCEPT_LANGUAGE"),2))
   
  ‘ Si, viene vacia después de todo lo que ha pasado, pues le asignamos la constante
   
  If Idioma = “” then Idioma = DEFAULT_LANGUAGE
   
  ‘ Creamos nuestro objeto para leer XML
  Dim objIdioma
  set objIdioma = new clsIdioma
   
  Dim strError
  ‘ Fijaos como he hecho la estructura de directorios
  ‘ Dentro del directorio Idiomas hay tantos subdirectorios
  ‘ como idiomas haya. Y dentro de estas subcarpetas
  ‘ los archivos XML que quiera leer
  strError = objIdioma.Load(Server.MapPath("idiomas/" & Idioma & "/general.xml"))
   
   
  %>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <title><%=objIdioma.getIdioma("NombrePagina")%></title>
  <link href="estilo.css" rel="stylesheet" type="text/css" />
  </head>
   
  <body>
  <div id="errores"><%=strError%></div>
  <div id="contenedor">
      <h1>
         <%=objIdioma.getIdioma("NombrePagina")%> 
      </h1>
                                     <%
                                     Dim Menues
                                     ‘ Si os fijais vereis que lo usar como si
                                     ‘ fuera un recordset de toda la vida ;)
                                     set Menues = objIdioma.getMenus()
                                     ‘ Si no esta vacio…
                                     if not Menues is Nothing then
                                     %>
                                                 <div id="nav">
                          <ul>
                                                 <%
  ‘ Me paseo por cada registro
                                                 do while not Menues.EOF
                                                 %>
                  <li><a href="<%=Menues("url")%>" target="<%=Menues("target")%>"><%=Menues("texto")%></a></li>
                                                 <%
                                                             Menues.moveNext()
                                                 loop
                                                 %>
                          </ul>
                                     </div>
                                                 
                                     <%
                                     end if
                                     
                                     set Menues = nothing
                                     
                                     ‘ Lo mismo con los idiomas disponibles
                                     Dim LangMenues
                                     
                                     set LangMenues = objIdioma.getLangMenus()
                                     if not LangMenues is Nothing then
                                                 do while not LangMenues.EOF
                                                             response.Write("<a href=""" & request.ServerVariables("SCRIPT_NAME") & "?lang=" & LangMenues("id") & """>")
                                                             response.Write("<img src=""" & LangMenues("imgUrl") & """ border=""0"" alt=""" & LangMenues("alt") & """ />")
                                                             response.Write("</a>&nbsp; &nbsp;")
                                                             LangMenues.moveNext()
                                                 loop
                                     end if
                                     
                                     set LangMenues = nothing
                                     %>
                                     
                                     
      <div id="cuerpo">
          <h2>
              <%=objIdioma.getIdioma("tituloPaginaPrincipal")%> 
          </h2>
              <blockquote>
              <%=objIdioma.getIdioma("textoPaginaPrincipal")%> 
              </blockquote>
      </div>
      <div id="pie">
          <%=objIdioma.getIdioma("piePagina")%> 
      </div>
  </div>
   
  </body>
  </html>
  <%
  set objIdioma = nothing
  %>
Como veis, es muy facil de entender. Os dejo a continuación el archivo CSS para que se vea en condiciones nuestra página web

Código:
  body
  {
      text-align: center;
      background: #B0BFC2;
      color: #444;
  }
   
  #contenedor
  {
      text-align: left;
      margin: 0 auto;
      width: 700px;
      background: #FFF;
  }
   
  h1
  {
      background: #D36832;
      color: #FFF;
      padding: 20px;
      margin: 0;
      border-bottom: 5px solid #387A9B;
  }
   
  blockquote {
      background: #D36832;
      color: #FFF;
              border: #000000 thin dotted;
  }
   
  blockquote p {
              padding:0.8em;
              font-size:80%;
              font-style:italic;
  }
   
  blockquote div#autor {
              padding:0.6em;
              text-align:right;
              
              font-size:70%;
              font-style:italic;
              font-weight:bold;
  }
   
  blockquote div#obra {
              color:#FFF;
              padding-top:0.5em;
              text-align:center;
              
              font-size:120%;
              font-weight:bold;
              font-variant:small-caps;
              text-transform:capitalize;
  }
   
   
  #nav
  {
      float: left;
      width: 140px;
      display: inline;
      margin-left: 5px;
      padding: 15px 0;
  }
   
  #nav ul
  {
      margin: 0;
      padding: 0;
      list-style-type: none;
      text-align: right;
  }
   
  #nav li
  {
      padding: 0 10px 5px 0;
  }
   
  #cuerpo
  {
      float: left;
      width: 475px;
      margin-left: 45px;
      padding: 15px 0;
  }
   
  #pie
  {
      clear: both;
      background: #387A9B;
      color: #fff;
      padding: 5px 10px;
      text-align: right;
      font-size: 80%;
  }
   
  h2
  {
      margin-top: 0;
      color: #B23B00;
      font-weight: normal;
  }
   
  a:link
  {
      color: #175B7D;
  }
   
  a:visited
  {
      color: #600;
  }
   
  a:hover, a:active
  {
      color: #fff;
      background: #175B7D;
  }
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -

Última edición por tammander; 17/10/2007 a las 12:28
  #15 (permalink)  
Antiguo 17/10/2007, 12:18
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Bueno, espero que hayáis llegado hasta aquí. Eso significa que os ha perecido interesante y no demasiado aburrido. Mi intención principal es explicar el funcionamiento del objeto XMLDOM usando como excusa la creación de una web multi-idioma. Como habeis podido ver, no es difícil de entender. Se parece en buena medida a cómo se estructuran los objetos dentro de cualquier lenguaje orientado a ellos y en gran medida a como se estructura un archivo de Flash en MovieClip. Junto a él, hemos visto de pasada un lenguaje nuevo muy interesante para buscar información dentro del archivo XML: xPath. Tambien hemos visto que, realmente, para manejarse medianamente bien dentro de la estructura XML no hace falta muchos métodos: nosotros hemos usado dos.

En fin, lo dicho, espero que os haya gustado ;)

He dejado un archivo rar con todo los archivos usados en el curso, la estructura de directorio y algo más (jejeje)

Bajar de aquí

Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #16 (permalink)  
Antiguo 17/10/2007, 12:20
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Gracias tammander, estuvo genial!


P.D. Ya me estoy bajando el código, espero que el algo más no sea un troyano
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #17 (permalink)  
Antiguo 17/10/2007, 12:25
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 3 meses
Puntos: 7
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Nooo, es una clase :)=



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #18 (permalink)  
Antiguo 17/10/2007, 12:30
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 2 meses
Puntos: 88
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

muy interesante tu curso Tamm (), muy educativo y sencillo de llevar a cabo

algo que en mi personal experiencia no he tenido el placer de poner en practica, pero lo tomare en consideracion para un proyecto propio, ademas, esta clase aunada a la que el gran profe U_G desarrolla en el otro salon, hara que elimine muchas costumbres de programacion que en su momento son buenas para solvertar los problemas, pero es mas sencillo como lo escriben ustedes

gracias por compartir tus conocimientos en el tema
Saludos
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #19 (permalink)  
Antiguo 18/10/2007, 16:06
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 19 años, 5 meses
Puntos: 9
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Muchas gracias por el curso, aún no tuve tiempo de leerlo del todo, pero prometo leerlo enterito y además usarlo, ya que me va a hacer falta traducir mi aplicación

Mil gracias
  #20 (permalink)  
Antiguo 26/11/2007, 14:13
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 6 meses
Puntos: 27
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

hey no descarga el rar

http://www.tammander.com/documents/cursoxml.rar

spanish ebook amman jordan jordan.com at tammander.com

a ver si alguien lo pone en otro lado

jejej
__________________
JuanRa Pérez
San Salvador, El Salvador
  #21 (permalink)  
Antiguo 26/11/2007, 14:21
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 2 meses
Puntos: 88
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Descarga del Curso
Curso de XML Tammander

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #22 (permalink)  
Antiguo 26/11/2007, 14:25
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 6 meses
Puntos: 27
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

gracias!!!!
__________________
JuanRa Pérez
San Salvador, El Salvador
  #23 (permalink)  
Antiguo 30/11/2007, 19:01
 
Fecha de Ingreso: noviembre-2007
Mensajes: 1
Antigüedad: 16 años, 5 meses
Puntos: 0
grax ahoranlo pirateo

grax taba weno el dato ahora lo voy aplicar a mi proyecto... jeje grax
  #24 (permalink)  
Antiguo 23/09/2010, 05:31
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 1 mes
Puntos: 3
Respuesta: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Hola a tod@s:

Estaba buscando como referescarme en ASP y, por ejemplo, adaptar una web a varios idiomas.

A través de otro post, llegue a este que por lo que he leído (no al completo aún) parece muy interesante.

Al llegar al enlace para descargar los archivos, éste ya no funciona o no existe, tampoco los otros que se pusieron.

¿¿Alguno dispondría de los archivos mencionados y me los podría pasar??. O habilitar de nuevo alguno de los enlaces disponibles. Gracias
__________________
Saludos,

zacktagnan.
=================================================
  #25 (permalink)  
Antiguo 23/09/2010, 16:37
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 17 años, 9 meses
Puntos: 41
Respuesta: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

No te extrañes, son casi 3 años los que han pasado... es normal que los links se pierdan... abre un tema nuevo y genera tu problema, seguramente recibiras una ayuda algo mas fresca...
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:31.