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

Web en varios idiomas

Estas en el tema de Web en varios idiomas en el foro de ASP Clásico en Foros del Web. Hola. Estoy haciendo una web en varios idiomas. A través de una cookie cargo el archivo idioma1.inc o el archivo idioma2.inc. Cada uno de ellos ...
  #1 (permalink)  
Antiguo 28/05/2005, 11:40
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 22 años, 3 meses
Puntos: 2
Web en varios idiomas

Hola. Estoy haciendo una web en varios idiomas. A través de una cookie cargo el archivo idioma1.inc o el archivo idioma2.inc. Cada uno de ellos define palabras como variables en forma txtAtras ="Atrás" o txtAtras = "Back", y luego las recupero en las páginas como <%=txtAtras%>

El problema que no sé bien resolver es que tengo una base de datos con un campo Tipo en el que tengo palabras del tipo 'Apartamento', 'Piso', 'Local', etc.

La pregunta es ¿cómo hago para que estas palabras me aparezcan en los distintos idiomas? ¿Tendría que definir una función para cada palabra del tipo

Function Apartamento(valor)
If Request.Cookie("lang") = "esp" then valor ="Apartamento"
If Request.Cookie("lang") = "eng" then valor ="Apartment"
End function


Y luego llamarla como

<%=Apartamento(rs("tipo"))%>

?

¿Hay alguna forma más eficiente de hacerlo?

Gracias.
  #2 (permalink)  
Antiguo 28/05/2005, 23:38
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
prueba introduciendo en el campo de la BD txtApartamento y en los inc les das los valores????

Saludos y suerte
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #3 (permalink)  
Antiguo 29/05/2005, 02:38
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
otra cosa, no pongas la extensión .inc en los includes, hazlo con extensiones .asp

así, si por un casual alguien pone en la URL el nombre del include, no le saldrá el texto plano de tu aplicación
  #4 (permalink)  
Antiguo 29/05/2005, 02:57
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
Cita:
Iniciado por trasgukabi
otra cosa, no pongas la extensión .inc en los includes, hazlo con extensiones .asp

así, si por un casual alguien pone en la URL el nombre del include, no le saldrá el texto plano de tu aplicación
Nunca lo habia pensado tragu... gracias :D lo voy a aplicar yo tambien... saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #5 (permalink)  
Antiguo 29/05/2005, 03:02
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 22 años, 3 meses
Puntos: 2
pues en mi servidor aunque pongas la url del inc no te la muestra. ¿esto no es habitual en otros servidores?

de todas formas no me habéis dicho casi nada sobre el tema originalmente propuesto. ¿será que lo estoy haciendo más o menos bien por una vez?
  #6 (permalink)  
Antiguo 29/05/2005, 03:19
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
pero lo que te dije que en vez de guardar la palabra apartamento en la base de datos pongas txtapartamento y despues eso supongo que te tira por pantalla el valor de la constante txtapartamento... no se puede que me equivoque pero intentalo no pierdes nada
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #7 (permalink)  
Antiguo 29/05/2005, 07:56
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 5 meses
Puntos: 16
yo lo que hago es que en una pagina que requeria esto en la base de datos tenia doble campo en lo que era el contenido de articulos y titulos, un campo para los datos en español y otro para ingles tipo

tituloes, contenidoes, tituloin, contenidoin

y al llamar a la base de datos llamaba al campo del idioma seleccionado nada mas

esto lo tengo en www.creandowebs.com/hoteles

HEY sin criticar que es un proyecto que nunca termine
  #8 (permalink)  
Antiguo 29/05/2005, 09:51
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 22 años, 3 meses
Puntos: 2
Yo lo que trato de evitar es precisamente duplicar los campos, para evitar cargar la base de datos. Se trata de la web de una inmobiliaria, va en 4 idiomas, y para evitar multiplicar x 4 los campos, cargo las palabras más comunes (precio, price; jardin, garden, etc) a través un archivo idioma.inc (o idioma.asp), que se selecciona a través de una cookie

Sin embargo, lo que no tengo claro es como optimizar el sistema para que esas palabras, recuperadas de un campo de la bd, se muestren en los distintos idiomas
  #9 (permalink)  
Antiguo 29/05/2005, 15:01
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Pero que tipo de palabras serian, es decir la fuente de esos textos cual es? es algo que tu controlas o es algo que introduce el cliente, o cual es el tema?
Regularmente aunque no lo queramos, en estos sistemas multi lenguajes, necesitaras uno que otro texto en DB, y por ende, necesitaras tener mas campos en tu(s) tabla(s).

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 29/05/2005, 15:21
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 22 años, 3 meses
Puntos: 2
veamos, yo tengo por ejemplo un campo tipo, con las palabras Apartamentos, Chalets, Terrenos, Locales. ESte campo es cerrado, es decir, no se pueden introducir nuevos tipos (esto es fundamental para comprender lo que quiero hacer). Lo que quiero es mostrar esas palabras en los distintos idiomas, pero sin cuadruplicar los campos.
  #11 (permalink)  
Antiguo 29/05/2005, 15:39
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 9 meses
Puntos: 0
<% =palabra%>

Y en un .inc

Palabra = palabra2
  #12 (permalink)  
Antiguo 29/05/2005, 20:10
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 5 meses
Puntos: 16
y si existen mas palabras que no esten en ese campo? o no es posible eso?
  #13 (permalink)  
Antiguo 30/05/2005, 03:43
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 22 años, 3 meses
Puntos: 2
Cita:
Iniciado por sjam7
y si existen mas palabras que no esten en ese campo? o no es posible eso?
No. Las palabras que hay que traducir son campos CERRADOS de la base de datos, es decir, en el campo tipo sólo puede haber hasta 7 palabras: Apartamentos, Chalets, Terrenos..., y cuatro más.

Por eso, lo que quiero es optimizar el código para que cuando recupere la palabra apartamentos como rs("tipo") en alguna parte de la página, lo muestre en el idioma correspondiente, seleccionado a través de una cookie.
  #14 (permalink)  
Antiguo 30/05/2005, 05:24
Avatar de dabadubab  
Fecha de Ingreso: febrero-2005
Ubicación: Sant Hiuston
Mensajes: 157
Antigüedad: 19 años, 3 meses
Puntos: 0
yo hago una cosa que me va bastante bien... creo una tabla de etiquetas en la que pongo todos los "trozos" de texto que aparecerán en la web en un campo (texto) y el idioma en otro (idioma) así quedan registros cómo:

num_etiqueta / texto / idioma
----------------------------
1 / Bienvenido / cas
2 / Welcome / eng

(también se pueden crear otros campos cómo página o capítulo, para organizar mejor las etiquetas -trozos de texto- de las páginas web)

cuando etnran en la web y elijen idioma... se guarda enu na variable global de sesión del usuario y cada vez que llama a una página se mira... en vez de texto que salga hay que crear una función imprime(num_etiqueta,idioma) que te devuelva el texto mirando a la base de datos y poner response.write(imprime(x,v_idioma)).

espero te sirva... es un poco lio de crear, pero va bien para añadir idiomas nuevos a la página.
saludos!!
Bernat
__________________
Programando conseguiremos dinero... :-D
Pero Bush y sus secuaces seguirán aniquilando gente por dinero :Zzz:
Cómo mínimo no trabajemos para los poderosos :-p
  #15 (permalink)  
Antiguo 30/05/2005, 08:18
 
Fecha de Ingreso: mayo-2005
Mensajes: 156
Antigüedad: 19 años, 1 mes
Puntos: 0
yo lo que ago es crear un include mira el idioma y lo saca de la base de datos y los guardo en variables como Icamping = rs("camping") y asi con todas.... le pongo delate la I para saber que esta traducida.
el idioma lo saca por defecto del navegador y si no el usuario lo seleciona y luego solo hay que pintar en ese idioma
__________________
Programador & Diseñador Web
www.ascariz.es
www.ascariz.com
www.telefonica.net/web/tiempoderol
  #16 (permalink)  
Antiguo 30/05/2005, 09:21
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola!

Hay muchas formas, otra forma es tener un archivo con constantes de lenguaje como:

ingles.lang.inc.asp

- saludo = "Hello"
- botonOk = "Ok"

espanol.lang.inc.asp

- saludo = "Hola"
- botonOk = "Aceptar"

De esa forma en tu include de idioma solamente cargas el include del lenguaje que necesitas y en tu ASP tienes todo lo que sale a pantalla en forma de variables, como:

Response.write saludo & ": " & UserName

Ese es otro metodo, resulta menos enerdoso, no puedo decir que mejor o peor que la base de datos, pero si mas practico y mas facil de implementar.

Otro metodo es simplemente redireccionar hacia otro subdominio de tu servidor donde tienes todo en otro idioma.

Otro metodo es que su archivo de ASP carga el HTML en el idioma correcto.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #17 (permalink)  
Antiguo 30/05/2005, 10:34
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, 3 meses
Puntos: 535
Me gusta mucho la solución de dabadubab, tener las palabras en sus diferentes idiomas en registros distintos, no en campos. De ésta manera, incorporar nuevos idiomas es muchísimo más fácil ya que no tendrías que "jugar" con la estructura de la BD ni modificar demaciado código.
__________________
...___...
  #18 (permalink)  
Antiguo 30/05/2005, 12:05
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 22 años, 3 meses
Puntos: 2
Muchas Gracias a todos por vuestras propuestas.

También me parece que la solución que yo busco va en la línea de lo dabudabah,.

Lo que tengo es esto, y supongo que se puede automatizar, pero no sé bien cómo:

<%
If Request.Cookies("lang") = "spa" or Request.Cookies("lang") = "" Then
If rs("tipo") = "Apartamentos" Then lang_tipo = "Apartamentos"
If rs("tipo") = "Casas adosadas" Then lang_tipo = "Casas adosadas"
If rs("tipo") = "Cortijos - Villas" Then lang_tipo = "Casas adosadas"
If rs("tipo") = "Locales" Then lang_tipo = "Locales"
If rs("tipo") = "Terrenos" Then lang_tipo = "Terrenos"
If rs("tipo") = "Inversiones" Then lang_tipo = "Inversiones"
If rs("tipo") = "Proyectos Nuevos" Then lang_tipo = "Proyectos Nuevos"
Elseif Request.Cookies("lang") = "eng" Then
If rs("tipo") = "Apartamentos" Then lang_tipo = "Apartments"
If rs("tipo") = "Casas adosadas" Then lang_tipo = "Townhouses-Duplex"
If rs("tipo") = "Cortijos - Villas" Then lang_tipo = "Country properties"
If rs("tipo") = "Locales" Then lang_tipo = "Commercials"
If rs("tipo") = "Terrenos" Then lang_tipo = "Plots"
If rs("tipo") = "Inversiones" Then lang_tipo = "Investments"
If rs("tipo") = "Proyectos Nuevos" Then lang_tipo = "Developments"
'Elseif otro idioma...
End if
%>

y luego cuando ya está abierto el recordset recupero

<%=lang_tipo%>
  #19 (permalink)  
Antiguo 04/06/2005, 05:48
Avatar de dabadubab  
Fecha de Ingreso: febrero-2005
Ubicación: Sant Hiuston
Mensajes: 157
Antigüedad: 19 años, 3 meses
Puntos: 0
puedes hacer la tabla ETIQUETAS con los campos id, txt, numpag, id_idioma (de otra tabla idiomas con id_idioma, nombre_idioma). Guarda la variables id_idioma en cualquier sitio (cookie, session, tabla con id de usuario...) y cada vez que se ejecute la página en cuestión en vez de hacer response.write("texto en idioma") haces funcion_imprime_etiqueta(v_idioma,v_pag,v_etiq) en dónde v_pag y v_etiq son variables que siempre tienen el mismo valor (definido al principio del programa asp) y idioma se recoje con request.form o querystring.

saludos!!!
Bernat
__________________
Programando conseguiremos dinero... :-D
Pero Bush y sus secuaces seguirán aniquilando gente por dinero :Zzz:
Cómo mínimo no trabajemos para los poderosos :-p
  #20 (permalink)  
Antiguo 04/06/2005, 23:01
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola!

No les parece muy pesado estar llamando a la base de datos para sacar una variable en un idioma?, la parte que mencionaron de etuquitas, include en un idioma, me parece muy bien, muy padre, pero la parte de tener todo en la base de datos y estar consultandola para sacar el idioma por pagina, me parece muy pesado, para mi seria preferible tener un include de idioma con las constantes ya definidas, entonces el response.write saludo, estara asignado el idioma correcto... bueno, segun mi punto de vista me parece mas facil de editar, agregar idiomas y ademas mas ligero. Ademas es un sistema muy común y fácil de manejar por los sistemas multiidioma.

Bueno, es un punto de vista nada mas, no quiero hacer debate de esto

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #21 (permalink)  
Antiguo 08/06/2005, 09:15
Avatar de dabadubab  
Fecha de Ingreso: febrero-2005
Ubicación: Sant Hiuston
Mensajes: 157
Antigüedad: 19 años, 3 meses
Puntos: 0
o sea en vez de en un archivo de base de datos en un archivo de texto??
__________________
Programando conseguiremos dinero... :-D
Pero Bush y sus secuaces seguirán aniquilando gente por dinero :Zzz:
Cómo mínimo no trabajemos para los poderosos :-p
  #22 (permalink)  
Antiguo 08/06/2005, 20:50
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola!

Algo así, pero seria un include de constantes con el valor en el idioma correcto:

Tienes algo con esta estructura:

ingles.lang.inc.asp

const saludo = "Hello"
const botonOk = "Ok"

espanol.lang.inc.asp

const saludo = "Hola"
const botonOk = "Aceptar"

En el asp tienes un include como lang.inc.asp, entonces ahi se encuentra la funcion que dice,

if lang = 1 then
include ingles.lang.inc.asp
elseif lang = 2 then
include espanol.lang.inc.asp
end if

Entonces, en el ASP siempre mandas escribir las variables de lenguaje, como:

Response.write $saludo

Ahi tu aseguras que la variables esta definida y cargada en el idioma correcto, eso es lo mas facil para manejar muchos idiomas, y es mucho menos pesado que una base de datos.

Por otra parte si piensan que es pesado porque igual, cada pagina carga un include propio, bien, pues eso se puede adaptar a tener un DLL para eso, asi el caso de la memoria pues no seria un pretexto.

Algo como

Response.wrote objIdioma("saludo")

Donde saludo es el nombre de la variable, o indice de un objDict dentro del DLL que debe ser el valor a imprimir para esa variable.

Aunque bueno, en mi opinion no es tan pesado tener ese include de idiomas normal en ASP.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #23 (permalink)  
Antiguo 11/06/2005, 13:18
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 22 años, 3 meses
Puntos: 2
Vamos por partes: en unos casos hay que consultar BD obligatoriamente y en otras no porque:

1. Volviendo al origen de mi consulta: Hay que consultar la BD para sacar el valor del campor tipo (puede ser Apartamento, Piso, etc.). A partir de hay, dicho valor hay que convertirlo al idioma correspondiente. El tema es ¿cómo optimizar esta tarea?

2. En la misma web hay palabras fijas que no varían según la BD. Para estas palabras probé a hacer un if ... elseif... end if con includes como en el último post de neuron_376, pero NO FUNCIONA, porque los includes SE CARGAN ANTES QUE SE EJECUTE EL CODIGO ASP. Todavía no he encontrado una solución a este tema, así que he he tenido que hacer un unico archivo lang.inc con if.... end if, pero con todos los idiomas uno detrás de otro.
  #24 (permalink)  
Antiguo 11/06/2005, 15:40
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 5 meses
Puntos: 16
yo tengo un include en el que las palabras fijas las tengo como variables algo asi:

if session("lang")="es"
casa="casa"
carro="carro"
else
casa="house"
carro="car"
end if

y en el inicio de todas las paginas (o donde lo vayas a necesitar solo llamas al include y usas las variables asi: <%=casa%>
  #25 (permalink)  
Antiguo 13/06/2005, 09:46
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola!

Humm... creo que tal como te puse y como menciona sjam debe de funcionar, lo que no entiendo es donde necesitas sacar valores de la base de datos para presentar, en que parte o para que necesitas sacar valores de la base de datos?
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #26 (permalink)  
Antiguo 13/06/2005, 15:58
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 5 meses
Puntos: 16
en mi caso tenia articulos completos en los que era imposible solo cambiar algunas palabras sino que debia tener las 2 opciones
  #27 (permalink)  
Antiguo 13/06/2005, 16:56
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola!

Lo que mencionas es realmente otro metodo, que bueno, quizas sea el mas facil de todos, en el cual tienes las 2 versiones separadas y completas, por ejemplo:

tudominio.mx --> Subdominio con todo en español
tudominio.en --> Subdominio con todo en ingles

Donde todo es realmente igual, solamente que cada dominio tiene sus archivo, imagenes, banners, etc, en el idioma correcto y asi no te preocupas de nada

Son otras opciones, segun lo complejo de la aplicacion, porque aparte del lenguaje (texto), te enfrentas a las imagenes, botones, animaciones flash, banners, etc., los cuales tambien deben respetar el lenguaje seleccionado, pero bueno, eso tambien lo logras como:

images_#lenguaje#/imagen.ext
images_#lenguaje#/imagen.ext

Entonces el tag de lenguaje lo cambias por la carpeta correcta.

O bueno, algo así.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
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 17:09.