Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Programación General (http://www.forosdelweb.com/f14/)
-   -   XML y manejo de Idiomas (http://www.forosdelweb.com/f14/xml-manejo-idiomas-244733/)

josedes 05/11/2004 12:32

XML y manejo de Idiomas
 
Ante todo mis saludos a todos. Tengo el siguiente problema:
He desarrollado un site con JSP+Servlets+tomcat sin utilizar nada de XML, pero ahora es necesario tener la aplicación tanto en Español como en Portugues, así cuando el usuario se logea a la aplicación se le muestre en el idioma seleccionado por él.

Como XML me puede ayudar en esto y no tener que replicar todas las páginas con los textos en Portugues.

Creo que la solución es muy simple, pero no se como puedo hacer esto.

Gracias

Helbira 05/11/2004 14:30

No tendrás que duplicar tus páginas en JSP pero sí tus páginas XML.
Eso lo entiendes?
Es decir, no se que nivel tienes de XML. Entiendes el concepto de separar contenido de diseño que es en lo que se basa el uso de XML?

Besos

josedes 08/11/2004 09:01

Gracias Helbira por tu atención. Tengo cierta idea de la separación de "contenido de diseño", eso lo se y creo estar claro, pero no veo como trabajar diferentes idiomas?

José

Helbira 08/11/2004 10:26

Tendras tantos XML como idiomas. Estos XML tendran la misma estructura de etiquetas y atributos pero los contenidos de texto son distintos... es decir. son los mismos pero escritos en sus respectivos idiomas.

Otra opcion es en un solo XML tener las etiquetas repetidas pero con algun prefijo o sufijo que te distinga el idioma en el que esta escriot sus contenidos. Pero esta opcion hace mas pesada la carga del XML.

BEsos

Helbira 10/11/2004 02:38

en.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<saludo>Hello</saludo>
</root>


es.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<saludo>Hola</saludo>
</root>

O bien.. la segunda solución que te propongo que es tener las dos traducciones en un solo XML seria algo asi:

saludo.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<saludo lang="en">Hello</saludo>
<saludo lang="es">Hola</saludo>
</root>

josedes 17/11/2004 16:17

Gracias Helbira nuevamente por tu ayuda, te la agradezco mucho

Saludos

José

Helbira 07/12/2004 04:38

Pero sigues sin entenderlo, no?
Quizás se me olvidó ponerte luego un ejemplo de como usar eso en XSL para mostrar solo los contenidos en el idioma seleccionado... es eso lo que te falta?

ponzonik 15/12/2004 15:17

hola gente... posteo acá porque tengo la misma consulta que josedes
estoy armando el sitio de una agencia de turismo, y quiero poder seleccionar con facilidad el idioma. ahora, no se hasta que punto usar el script ASP para transformar los datos del xml en xhtml de la pagina y no XSLT.

me explico:

el .asp seria en principio asi:
Código:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Response.Charset = "iso-8859-1"
'Response.ContentType = "text/plain"
%>
<!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>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<% Set XMLdoc = Server.CreateObject("Msxml2.DOMDocument.4.0")
        XMLdoc.async = False
        XMLdoc.validateOnParse = False
        XMLdoc.Load (Server.MapPath("interfaz.xml"))
        XMLdoc.setProperty "SelectionLanguage", "XPath"
        If XMLdoc.parseError.errorCode <> 0 Then
                Response.Write(Cstr(XMLdoc.parseError.filepos & "<br>"))
                Response.Write(Cstr(XMLdoc.parseError.line & "<br>"))
                Response.Write(Cstr(XMLdoc.parseError.linepos & "<br>"))
                Response.Write(Cstr(XMLdoc.parseError.reason & "<br>"))
                Response.Write(Cstr(XMLdoc.parseError.srctext & "<br>"))
                Response.Write(Cstr(XMLdoc.parseError.errorCode & "<br>"))
        End If
        lang = "espaniol"
        Set elementos = XMLdoc.selectNodes ("/secciones/navegacion/menu/elemento[@ocultar!='si']/" & lang & "[@ocultar!='si']/nombre")
        Set titulos = XMLdoc.selectNodes ("/secciones/navegacion/menu/elemento[@ocultar!='si']/" & lang & "[@ocultar!='si']/titulo")
        Set urls = XMLdoc.selectNodes ("/secciones/navegacion/menu/elemento[@ocultar!='si']/url")
        For i = 0 to elementos.length - 1
                Set colElementos = elementos.nextNode
                Set colUrls = urls.nextNode
                Set colTitulos = titulos.nextNode
                html = "<a href=" & Chr(34) & colUrls.text & Chr(34) & " title=" & Chr(34) & colTitulos.text & Chr(34) & ">" & colElementos.text & "</a><br />"
                Response.Write (html)
                'Response.Write(SelectSingleNode("/secciones/navegacion/menu/elemento[@ocultar!='si']["&Cstr(i)&"]/espaniol[@ocultar!='si']/nombre").Text)
        Next
 %>
</body>
</html>

y el .xml es el siguiente:
Código:

<?xml version="1.0" encoding="iso-8859-1"?>
<secciones>
        <navegacion>
                <menu>
                        <elemento ocultar="" destacado="si">
                                <nombre>Home</nombre>
                                <espaniol ocultar="">
                                        <nombre>Home</nombre>
                                        <titulo>Página principal de Partir Viajes E.V.T.</titulo>
                                </espaniol>
                                <inglés ocultar="">
                                        <nombre>Home                        </nombre>
                                        <titulo>Home page of Partir Viajes.</titulo>
                                </inglés>
                                <url>../index.asp</url>
                        </elemento>
                        <elemento ocultar="" destacado="">
                                <nombre>Aereos</nombre>
                                <espaniol ocultar="">
                                        <nombre>Pasajes Aéreos</nombre>
                                        <titulo>Información sobre pasajes aéreos en la Argentina y hacia el exterior.</titulo>
                                </espaniol>
                                <inglés ocultar="">
                                        <nombre>Plane tickets</nombre>
                                        <titulo>View details and prices of plane tickets to travel within Argentina.</titulo>
                                </inglés>
                                <url>./aereos.asp</url>
                        </elemento>
                        <elemento ocultar="" destacado="">
                                <nombre>Destinos</nombre>
                                <espaniol ocultar="">
                                        <nombre>Destinos turísticos.</nombre>
                                        <titulo>Información sobre paquetes turísticos en la Argentina y hacia el exterior.</titulo>
                                </espaniol>
                                <inglés ocultar="si">
                                        <nombre/>
                                        <titulo/>
                                </inglés>
                                <url>./destinos.asp</url>
                        </elemento>
                        <elemento ocultar="" destacado="">
                                <nombre>Argentina</nombre>
                                <espaniol ocultar="si">
                                        <nombre/>
                                        <titulo/>
                                </espaniol>
                                <inglés ocultar="">
                                        <nombre>Visit Argentina.</nombre>
                                        <titulo>Choose among different ways to enjoy your vacations in Argentina and which places to visit.</titulo>
                                </inglés>
                                <url>./argentina.asp</url>
                        </elemento>
                        <elemento ocultar="" destacado="">
                                <nombre>Institucional</nombre>
                                <espaniol ocultar="">
                                        <nombre>La Empresa</nombre>
                                        <titulo>Conozca nuestra trayectoria y por qué somos la opción más confiable a la hora de planear su viaje o ayudar a su empresa a alcanzar nuevos mercados. Vea nuestra información de contacto.</titulo>
                                </espaniol>
                                <inglés ocultar="">
                                        <nombre>About Us</nombre>
                                        <titulo>Know about us and why our clients trust us for the planning of their vacations or their professional needs.</titulo>
                                </inglés>
                                <url>./institucional.asp</url>
                        </elemento>
                </menu>
                <mapa>
                        <elemento mostrar="" destacado="">
                                <nombre>Argentina</nombre>
                                <espaniol>
                                        <nombre>Argentina</nombre>
                                        <titulo>Conozca distintas opciones para pasar sus vacaciones en Argentina.</titulo>
                                </espaniol>
                                <inglés>
                                        <nombre>
                                        </nombre>
                                        <titulo>
                                        </titulo>
                                </inglés>
                                <url>arg
                                </url>
                        </elemento>
                </mapa>
        </navegacion>
</secciones>

en el xml tengo un nodo /secciones/navegacion/menu que tiene los links de uno de los menues (horizontal y arriba) de la p'agina.
el asp selecciona todos los elementos que no sean ocultos y los transforma en links.

el problema llega cuando, por ejemplo, tengo un elemento en el que quiero esconder el boton en castellano. la agencia de turismo esta en buenos aires, entonces si entra alguien de argentina deberia ver la siguiente barra de menus:
home | pasajes | destinos turisticos | la empresa
pero quiero que un angloparlante vea:
home | visit argentina | about us
por eso los nodos elemento/espaniol tienen un atributo que se llama ocultar.

ahora, con la consulta XPath que mande ("/secciones/navegacion/menu/elemento[@ocultar!='si']/"&lang&"[@ocultar!='si']/nombre") el asp me devuelve una coleccion de 4 de los 5 objetos, que son los childs elemento #1,2,4 y 5 de menu. ahora, cuando lo tengo que juntar con la URL, el script agarra las primeras 4, por lo que en los dos ultimos links no coinciden la URL con el titulo del link. es un quilombo, ¿se entiende? de cualquier forma en http://www.partirviajes.com.ar/v3/xml/xml.asp pueden ver el codigo que generan los archivos que pase.



---------------------------------------------------------------------

ahora MÁS EN GENERAL, ¿cómo me convendría hacer con el tema de la interfaz? ¿usar ASP o XSLT (el problema que le veo al XSLT es que cada parte del sitio tendría que transformar el xhtml según donde se encuentre... para la barra de menú tendría que transformar en una lista, etc)? ¿debería cambiar la estructura del XML?



mil gracias desde ya!!!


La zona horaria es GMT -6. Ahora son las 10:04.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.