Foros del Web » Programando para Internet » Javascript »

Reemplazar un texto por otro texto

Estas en el tema de Reemplazar un texto por otro texto en el foro de Javascript en Foros del Web. Cómo están amigos del foro? Verán soy bastante nuevo en la programación WEB, en este momento estoy haciendo una traducción de una página pero no ...
  #1 (permalink)  
Antiguo 04/08/2014, 14:53
 
Fecha de Ingreso: agosto-2014
Ubicación: Guadalajara
Mensajes: 3
Antigüedad: 9 años, 8 meses
Puntos: 0
Pregunta Reemplazar un texto por otro texto

Cómo están amigos del foro?
Verán soy bastante nuevo en la programación WEB, en este momento estoy haciendo una traducción de una página pero no se cómo reemplazar todos los textos, he tratado de hacerlo con c# buscando con etiquetas en particular(como labels) y también ya traté con algo de javascript. El problema con javascript es que tengo recursos externos (como imágenes) o algún scripting aplicado (generalmente eventos) y colapsan, es decir, ya no reaccionan para nada sea un botón, imagen, etc...
He buscado con DOM pero los ejemplos que veo únicamente reemplazan por tags y sólo una palabra. Yo necesito que agarre datos desde los labels hasta el texto plano en la página ("<tag>Texto plano<tag>").
Si me pudieran ayudar me salvarían la vida
  #2 (permalink)  
Antiguo 07/08/2014, 20:40
Avatar de AitorDB  
Fecha de Ingreso: agosto-2014
Ubicación: Cádiz, España
Mensajes: 52
Antigüedad: 9 años, 8 meses
Puntos: 5
Sino he entendido mal, lo que tienes es una web y quieres que al pulsar un botón o algo cambies el idioma, ¿me equivoco?
  #3 (permalink)  
Antiguo 08/08/2014, 02:52
 
Fecha de Ingreso: enero-2011
Ubicación: Barcelona
Mensajes: 36
Antigüedad: 13 años, 3 meses
Puntos: 5
Respuesta: Reemplazar un texto por otro texto

Hola Viend,

Si lo que quieres es una traducción de la web, yo optaría por base de datos o ficheros php.

Base de datos: Creas la tabla idiomas con un id y el texto en los idiomas que necesites, y para cada texto de la web haces una consulta que te devuelva el idioma correspondiente.
Ficheros php: Creas un fichero para cada idioma y dentro creas variables que se han de llamar igual pero con distinto contenido.
Ej:
traduccion_es.php->$titulo="Titulo de la web" ;
traduccion_en.php->$titulo="Title of web";
Una vez hecho eso al principio de la página cargas el fichero que te interese según el idioma que quieras mostrar. include("traduccion_".$SESSION[idioma].".php");

Estos métodos son los que yo conozco para hacer traducciones, espero que te sirva y si necesitas más información sobre alguno de los métodos coméntalo.

Saludos, Alex.

Última edición por alx1417; 08/08/2014 a las 02:59
  #4 (permalink)  
Antiguo 08/08/2014, 07:26
Avatar de AitorDB  
Fecha de Ingreso: agosto-2014
Ubicación: Cádiz, España
Mensajes: 52
Antigüedad: 9 años, 8 meses
Puntos: 5
Respuesta: Reemplazar un texto por otro texto

Aunque al igual que te comenta alx1417 yo usaría unos de esos dos métodos, posiblemente la de los ficheros, yo te dejo uno más por si lo prefieres y porque como has escrito dentro del foro de Javascript puede que sea más de tu interés, te dejo un ejemplo:


Código HTML:
Ver original
  1. <select name="idioma" onchange="Idioma(this.value)">  
  2.     <option value="ES">Espa&ntilde;ol</option>
  3.     <option value="EN">English</option>                
  4.  
  5. <div id="Texto1">Hola</div>
  6. <div id="Texto2">Azul</div>



Código Javascript:
Ver original
  1. function Idioma(Valor){
  2.  
  3.     if(Valor == "ES"){
  4.         document.getElementById('Texto1').innerHTML = "Hola";
  5.         document.getElementById('Texto2').innerHTML = "Azul";
  6.     }
  7.  
  8.     else {
  9.         document.getElementById('Texto1').innerHTML = "Hello";
  10.         document.getElementById('Texto2').innerHTML = "Blue";
  11.     }
  12.  
  13. }

Si quieres algo más ordenado y sobretodo cuando haya más textos, puedes ayudarte de un array:


Código Javascript:
Ver original
  1. var ES = ["Hola","Azul"];
  2.  
  3. var EN = ["Hello","Blue"];
  4.  
  5.  
  6. function Idioma(Valor){
  7.  
  8.     if(Valor == "ES"){
  9.         document.getElementById('Texto1').innerHTML = ES[0];
  10.         document.getElementById('Texto2').innerHTML = ES[1];
  11.     }
  12.  
  13.     else {
  14.         document.getElementById('Texto1').innerHTML = EN[0];
  15.         document.getElementById('Texto2').innerHTML = EN[1];
  16.     }
  17.  
  18. }

Última edición por AitorDB; 08/08/2014 a las 07:33
  #5 (permalink)  
Antiguo 08/08/2014, 10:09
 
Fecha de Ingreso: agosto-2014
Ubicación: Guadalajara
Mensajes: 3
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Reemplazar un texto por otro texto

Cita:
Iniciado por AitorDB Ver Mensaje
Sino he entendido mal, lo que tienes es una web y quieres que al pulsar un botón o algo cambies el idioma, ¿me equivoco?
Si, necesito "traducir" la página, el problema con el Javascript es que, si no entiendo mal por propia experiencia, el innerHTML hace tronar a la página, es decir, todos los scripting que hay dentro de la página dejan de funcionar y mi idea es tratar con una BD que mande los datos con un webservice, de echo he estado tratando un buen rato con los árboles e iteradores aunque ahora tengo problemas con el regex
  #6 (permalink)  
Antiguo 08/08/2014, 11:30
Avatar de AitorDB  
Fecha de Ingreso: agosto-2014
Ubicación: Cádiz, España
Mensajes: 52
Antigüedad: 9 años, 8 meses
Puntos: 5
Respuesta: Reemplazar un texto por otro texto

En sustitución de innerHTML tiene html simplemente si usaras JQuery:

Código HTML:
Ver original
  1. <script src="http://code.jquery.com/jquery-2.1.0.min.js" type="text/javascript"></script>
  2. var ES = ["Hola",
  3.           "Azul"];
  4.  
  5. var EN = ["Hello",
  6.           "Blue"];
  7.  
  8.  
  9. function Idioma(Valor){
  10.  
  11.     if(Valor == "ES"){
  12.         $('#Texto1').html(ES[0]);
  13.         $('#Texto2').html(ES[1];
  14.     }
  15.  
  16.     else {
  17.         $('#Texto1').html(EN[0]);
  18.         $('#Texto2').html(EN[1]);
  19.     }
  20.  
  21. }
  22.  
  23. <select name="idioma" onchange="Idioma(this.value)">  
  24.     <option value="ES">Espa&ntilde;ol</option>
  25.     <option value="EN">English</option>                
  26.  
  27. <div id="Texto1">Hola</div>
  28. <div id="Texto2">Azul</div>

Para el caso de usar BBDD + PHP te adjunto un [URL="http://www.desarrolloweb.com/articulos/2353.php"]enlace[/URL] a un tutorial bastante fácil .

Suerte!
  #7 (permalink)  
Antiguo 08/08/2014, 11:31
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Reemplazar un texto por otro texto

Yo te recomendaría echar mando de alguna API, por ejemplo, la de Google, aunque como ya no es gratuita después del millón de palabras traducidas, puedes hacer algo como lo que se indica en este artículo. Lo mejor de todo es que aunque el cliente deshabilite JavaScript de su navegador o simplemente este no lo soporte, no habrá problemas pues todo se ejecuta en el lado del servidor.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 08/08/2014, 14:19
 
Fecha de Ingreso: agosto-2014
Ubicación: Guadalajara
Mensajes: 3
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Reemplazar un texto por otro texto

Gracias me ha servido para darme una idea, continué insistiendo con el DOM de la página e hice un iterador para recorrer todos los nodos de texto y al final le agregué una sentencia redex (fruits) que me mandará a la BD (con algo de AJAX) los datos que necesito.
Este fue el código que use.

Código HTML:
Ver original
  1. <script type="text/javascript" language="javascript">
  2.  function test() {
  3.  
  4.                     var dataDB = [["Username", "Nombre de usuario"], ["Password", "Contraseña"], ["English", "Inglés"], ["Badge", "Gafete"]];
  5.  
  6.                     var a = document.documentElement.innerHTML;
  7.                     var n = a.match(/(>[A-Za-z0-9-.-: ]{1,}<)/g);
  8.                    var fruits = [];
  9.  
  10.                    for (i = 0; i < n.length; i++)
  11.                    {
  12.                        fruits.push(n[i].replace(">", "").replace("<", "").replace(":","") + "\n");
  13.                    }
  14.                    iterator = document.createNodeIterator(document.body, NodeFilter.SHOW_TEXT, null, true);
  15.                    while (iter = iterator.nextNode()) {
  16.                        for (j = 0; j < dataDB.length; j++) {
  17.                            if (iter.textContent.indexOf(dataDB[j][0]) > -1)
  18.                                 iter.textContent = dataDB[j][1].toString();
  19.                         }
  20.                        
  21.                     }
  22.                 }
  23.                 test();

Etiquetas: dom, javascript+html
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 20:12.