Foros del Web » Programando para Internet » Javascript »

Web en 2 idiomas con javascript y CSS (problema con frames)

Estas en el tema de Web en 2 idiomas con javascript y CSS (problema con frames) en el foro de Javascript en Foros del Web. Tengo que hacer una web en 2 idiomas (castellano y valenciano) y lo estoy haciendo con javascript y CSS, con un ejemplo que encontré a ...
  #1 (permalink)  
Antiguo 10/09/2009, 01:59
 
Fecha de Ingreso: diciembre-2007
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Web en 2 idiomas con javascript y CSS (problema con frames)

Tengo que hacer una web en 2 idiomas (castellano y valenciano) y lo estoy haciendo con javascript y CSS, con un ejemplo que encontré a través de internet.

Para ello creo 2 CSS:
-Una llamada "castellano" cuyo contenido es: .valenciano { display:none; }
-Otra "valenciano" cuyo contenido es: .castellano {display:none; }

Y en cada página añado lo siguiente:
<link rel="stylesheet" type="text/css" href="castellano.css" title="castellano"/>
<link rel="alternate stylesheet" type="text/css" href="valenciano.css" title="valenciano"/>


Por ejemplo, en una página escribo algo como lo siguiente:
<p class="castellano">Texto escrito en castellano</p>
<p class="valenciano">Text escrit en valencià</p>

Esto hace que solo se muestre el texto correspondiente al idioma seleccionado.

Para ello se dispone de un enlace para escoger el idioma como el que sigue:
<a href="#" onclick="setActiveStyleSheet('valenciano'); return false;" class="valenciano" target="mainFrame">Valenci&agrave;</a>
<a href="#" onclick="setActiveStyleSheet('castellano'); return false;" class="castellano" target="mainFrame">Castellano</a>


Al clickar en uno de estos enlaces se invoca a un javascript con el siguiente contenido, el cual permite alternar entre los CSS de "castellano" y "valenciano":
[I]function setActiveStyleSheet(title) {
var i, a, main;
for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
a.disabled = true;
if(a.getAttribute("title") == title) a.disabled = false;
}
}
}

function getActiveStyleSheet() {
var i, a;
for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
}
return null;
}

function getPreferredStyleSheet() {
var i, a;
for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
if(a.getAttribute("rel").indexOf("style") != -1
&& a.getAttribute("rel").indexOf("alt") == -1
&& a.getAttribute("title")
) return a.getAttribute("title");
}
return null;
}

function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca;
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}

window.onload = function(e) {
var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);
}

window.onunload = function(e) {
var title = getActiveStyleSheet();
createCookie("style", title, 365);
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);


Todo ello funciona correctamente. El problema es que dispongo de 2 frames, uno superior y otro principal. En el superior están los enlaces que permiten cambiar el idioma además de los enlaces al resto de las páginas de la web. El caso es que cuando pincho para cambiar el idioma, se me cambia en el frame superior, pero el frame principal sigue como estaba, y aunque pinche otra vez en alguno de los enlaces sigue mostrándose en el mismo idioma. Es decir, el frame superior funciona correctamente, pero el principal siempre lo muestra en castellano.

A ver si alguien me puede echar una mano.
Gracias.
  #2 (permalink)  
Antiguo 10/09/2009, 04:08
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Respuesta: Web en 2 idiomas con javascript y CSS (problema con frames)

Hola:

Si cambias de idioma con una página abierta, tienes que recargar la página o usar el script en esa página abierta (debería estar duplicado en cada página... además en cada enlace, yo suelo añadirle un parámetro que indique el idioma... enlace.php?idioma=es...

Entonces al cambiar de idioma en el frame de los enlaces, quedan accesibles solo los enlaces con la coletilla del lenguaje seleccionado... si es mucho el contenido de las páginas, incluso podrías crear 2 página, una por cada idioma... Te paso un enlace: Páginas multilenguaje con javascript.

saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 09:39.