Foros del Web » Programando para Internet » Javascript »

Cambiar un texto corto segun el pais del internauta

Estas en el tema de Cambiar un texto corto segun el pais del internauta en el foro de Javascript en Foros del Web. Hola chicos: Veran estoy diseñando una pagina de agencia de viajes turisticos y tiene versiones de la pagina en otros idiomas y en el diseño ...
  #1 (permalink)  
Antiguo 19/12/2012, 17:06
Avatar de Laura_Berenice  
Fecha de Ingreso: septiembre-2004
Ubicación: Mexico
Mensajes: 79
Antigüedad: 19 años, 7 meses
Puntos: 0
Cambiar un texto corto segun el pais del internauta

Hola chicos:

Veran estoy diseñando una pagina de agencia de viajes turisticos y tiene versiones de la pagina en otros idiomas y en el diseño de la pagina se me ocurrio hacer que cambie el inicio de un texto segun el pais del internauta que esta leyendo el texto.

Por ejemplo:

[Hola amigo Mexicano], bienvenido a nuestra pagina de viajes turisticos donde podras encontrar informacion de los mejores hoteles, restaurantes, playas, parques acuaticos, ruinas arqueologicas y centros nocturnos... etc.

[Hola amigo Mexicano] seria lo que cambiaria a [Hola amigo Argentino, Colombiano, Tico, Peruano, etc.] despues de haber seleccionado la version en Español de la pagina. Porque el internauta habla Español, pero de donde es???

Se poco de javascript, pero me imagino un javascript mas o menos asi...

Código:
<html>
  <head>
  </head>
  <body>

<script type="text/javascript">
 if geoip_country_code() == ES) {
      document.write('Hola amigo Español'); 
    } else if (geoip_country_code() == MX) {
      document.write('Hola amigo Mexicano');
    } else if (geoip_country_code() == MX) {
      document.write('Hola amigo Mexicano');
    } else if (geoip_country_code() == AR) {
      document.write('Hola amigo Argentino');
    } else if (geoip_country_code() == CL) {
      document.write('Hola amigo Colombiano');
  }
 </script>

  </body>
</html>

Imagino que la funcion "geoip_country_code" hay que declararla antes en la <heat> del html, pero yo quiero que este mismo javascript cambie otros pequeños textos en otras parte de una misma pagina, es decir que funcionen tres de estos javascript en una misma pagina, pero la funcion de un text/javascript puede funcionar si hay otro java/script de igual redaccion en la misma pagina.
---

Pregunta aparte: No hay problema si pongo caracteres arabigos o japoneses en el archivo txt, o el problema es que no se ven esos caracteres en archivo txt de mi computadora???

Última edición por Laura_Berenice; 19/12/2012 a las 17:15
  #2 (permalink)  
Antiguo 20/12/2012, 06:20
txemaarbulo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Cambiar un texto corto segun el pais del internauta

Hola Laura_Berenice:

Respecto a tu primera cuestión, para que geoip_country_code() pueda ser leído, tu código debería ser este:
Código HTML:
Ver original
  1.   <head>
  2.     <meta charset="utf-8">
  3.     <script type="text/javascript" src="http://j.maxmind.com/app/geoip.js">
  4.     </script>
  5.   </head>
  6.   <body>
  7.  
  8. <script type="text/javascript">
  9. geoip_country_code();
  10.  if (geoip_country_code() == 'ES') {
  11.       document.write('Hola amigo Español');
  12.     } else if (geoip_country_code() == 'MX') {
  13.       document.write('Hola amigo Mexicano');
  14.     } else if (geoip_country_code() == 'AR') {
  15.       document.write('Hola amigo Argentino');
  16.     } else if (geoip_country_code() == 'CL') {
  17.       document.write('Hola amigo Colombiano');
  18.   }
  19.  </script>
  20.  
  21.   </body>
  22. </html>

De otro modo te encontrarás con: Error: ReferenceError: geoip_country_code() is not defined.

Recuerda declarar antes geoip_country_code(); poner 'ES', 'MX' etc., entre comillas. (además de la codificación de caracteres).

Respecto al cambio de otros textos, tendrás que realizarlo mediante variables que irás cambiando entre if y else if.

Por ejemplo (mejor el script en el <head>):
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.   <head>
  3.     <meta charset="utf-8">
  4.     <title>Mi página</title>
  5.     <script type="text/javascript" src="http://j.maxmind.com/app/geoip.js"></script>
  6. <script type="text/javascript">
  7. window.onload=function(){
  8.       var texto_1 = document.getElementById("texto_1");
  9.       var texto_2 = document.getElementById("texto_2");
  10.       var texto_3 = document.getElementById("texto_3");
  11.       geoip_country_code();
  12.  if (geoip_country_code() == 'ES') {
  13.       texto_1.innerHTML = "Hola amigo español";
  14.       texto_2.innerHTML = "Segundo texto para el español";
  15.       texto_3.innerHTML = "Este es el tercer texto para España";
  16.     } else if (geoip_country_code() == 'MX') {
  17.       texto_1.innerHTML = "Hola amigo mexicano";
  18.       texto_2.innerHTML = "Segundo texto para el mexicano";
  19.       texto_3.innerHTML = "Este es el tercer texto para México";
  20.     };
  21. }
  22.  </script>
  23.  
  24.   </head>
  25.   <body>
  26.     <div id="texto_1"></div>
  27.     <div id="texto_2"></div>
  28.     <div id="texto_3"></div>
  29.   </body>
  30. </html>

Ello no interfiere a otros javascript o a que enlaces con archivos externos de js.

Respecto al cambio de caracteres, ello tiene que ver con la declaración inicial. <meta charset="utf-8"> (para los caracteres latinos con acentos, eñes, etc). No tengo experiencia pero tienes que evaluar si va a ir toda la página con caracteres chinos, árabes, japoneses etc., o tal vez puedas modificarlo para un tag específico.
  #3 (permalink)  
Antiguo 20/12/2012, 15:46
Avatar de Laura_Berenice  
Fecha de Ingreso: septiembre-2004
Ubicación: Mexico
Mensajes: 79
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Cambiar un texto corto segun el pais del internauta

Hola txemaarbulo:


Woouuu!!! Funciona genial el javascript, se me estan ocurriendo mas ideas para aplicarlo en el diseño de mi pagina.

Entonces para que funcionara geoip_country_code() habia que poner poner las letras codigo de los paises entre comillas ('ES', 'MX'), perfecto.

Y para poner modificar varios textos segun el pais del internauta hay que declarar asi las variables, genial. Son varios textos segun el pais del intarnauta, es exactamente lo que queria.

Voy a checar eso de la funcion <meta charset="utf-8"> para introducir caracteres arabigos, japoneses y hebreos o si se necesita una tag.

super mega gracias, son los mejores.
  #4 (permalink)  
Antiguo 20/12/2012, 18:37
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Cambiar un texto corto segun el pais del internauta

txemaarbulo, espero que no te moleste si te hago algunas correcciones sobre tu código

en la línea 12 invocas la función geoip_country_code(). y no es necesario
por otro lado es mas sencillo de escribir y leer los mensajes que serán imprimidos por pantalla si se usa un objeto
Cita:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Mi página</title>
<script type="text/javascript" src="http://j.maxmind.com/app/geoip.js"></script>
<script type="text/javascript">

var textos = {
"ES" : ["Hola amigo español", "Segundo texto para el español", "Este es el tercer texto para España"],
"MX" : ["Hola amigo mexicano", "Segundo texto para el mexicano", "Este es el tercer texto para Mexicano"]
// etc...
}

window.onload=function(){

for (var nacionalidad in textos) {
if (geoip_country_code() == nacionalidad) {
document.getElementById("texto_1").innerHTML = textos[nacionalidad][0];
document.getElementById("texto_2").innerHTML = textos[nacionalidad][1];
document.getElementById("texto_3").innerHTML = textos[nacionalidad][2];
break;
} else {
// la nacionalidad no está en el objeto
};

}
}
</script>

</head>
<body>
<div id="texto_1"></div>
<div id="texto_2"></div>
<div id="texto_3"></div>
</body>
</html>
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 21/12/2012, 02:42
txemaarbulo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Cambiar un texto corto segun el pais del internauta

Cita:
Iniciado por IsaBelM Ver Mensaje
txemaarbulo, espero que no te moleste si te hago algunas correcciones sobre tu código
Para nada Isabel.

Veo tu código más actual y, posiblemente, más fácil si vamos a trabajar con muchos idiomas.

Me pareció más fácil (tal vez la inercia de lo escrito inicialmente) trabajar el código con los if - else if.

Respecto a
Cita:
Iniciado por IsaBelM Ver Mensaje
en la línea 12 invocas la función geoip_country_code(). y no es necesario
Tienes razón. Tal vez estába aburrido de encontrarme tantas veces con el famoso mensaje variable no declarada que lo incluí aunque sea pecar de exceso (o meter código basura).

Supongo que Laura_Berenice tomará nota para ver que a Roma se llega de muchas maneras: uno puede ir a pie, en coche o en avión.

Yo tadavía, en muchas cosas, camino a la antigua.
  #6 (permalink)  
Antiguo 21/12/2012, 05:35
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Cambiar un texto corto segun el pais del internauta

yo también he de corregirme. si la condición no retorna true, se imprimirá lo que haya en la clausula else. y si hablamos de un objeto con 20 elementos, se imprimirá 19 veces la clausula else. habría que añadir una variable con valor boleano
Cita:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Mi página</title>
<script type="text/javascript" src="http://j.maxmind.com/app/geoip.js"></script>
<script type="text/javascript">
var textos =
{"ES" : ["Hola amigo español", "Segundo texto para el español", "Este es el tercer texto para España"],
"MX" : ["Hola amigo mexicano", "Segundo texto para el mexicano", "Este es el tercer texto para Mexicano"]
// etc ...
}

window.onload=function(){

var boleano = false;

for (var nacionalidad in textos) {

if (geoip_country_code() == nacionalidad) {

document.getElementById("texto_1").innerHTML = textos[nacionalidad][0];
document.getElementById("texto_2").innerHTML = textos[nacionalidad][1];
document.getElementById("texto_3").innerHTML = textos[nacionalidad][2];
boleano = true;
break;

}

}
if (!boleano) alert('no hay mensaje para esta nacionalidad');
}
</script>
</head>
<body>
<div id="texto_1"></div>
<div id="texto_2"></div>
<div id="texto_3"></div>
</body>
</html>
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Etiquetas: corto, funcion, html, pais
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 07:22.