Foros del Web » Programación para mayores de 30 ;) » Programación General »

XML y manejo de Idiomas

Estas en el tema de XML y manejo de Idiomas en el foro de Programación General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 05/11/2004, 12:32
 
Fecha de Ingreso: abril-2003
Mensajes: 64
Antigüedad: 21 años, 6 meses
Puntos: 0
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
  #2 (permalink)  
Antiguo 05/11/2004, 14:30
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 1 mes
Puntos: 5
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
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #3 (permalink)  
Antiguo 08/11/2004, 09:01
 
Fecha de Ingreso: abril-2003
Mensajes: 64
Antigüedad: 21 años, 6 meses
Puntos: 0
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é
  #4 (permalink)  
Antiguo 08/11/2004, 10:26
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 1 mes
Puntos: 5
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
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #5 (permalink)  
Antiguo 10/11/2004, 02:38
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 1 mes
Puntos: 5
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>
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #6 (permalink)  
Antiguo 17/11/2004, 16:17
 
Fecha de Ingreso: abril-2003
Mensajes: 64
Antigüedad: 21 años, 6 meses
Puntos: 0
Gracias Helbira nuevamente por tu ayuda, te la agradezco mucho

Saludos

José
  #7 (permalink)  
Antiguo 07/12/2004, 04:38
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 1 mes
Puntos: 5
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?
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #8 (permalink)  
Antiguo 15/12/2004, 15:17
 
Fecha de Ingreso: noviembre-2004
Mensajes: 31
Antigüedad: 20 años
Puntos: 0
Pregunta

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!!!

Última edición por ponzonik; 15/12/2004 a las 15:20
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 14:17.