Estoy tratando de cambiar el idioma de mi sitio directamente sin volver a cargar la página cuando hago clic en cualquiera de mis tres banderas de idioma (alemán, francés e inglés).

Para corresponder con el idioma, estoy guardando una cookie llamada lang después de hacer clic en una bandera. Tengo una función LangText($de, $fr, $en); que muestra el texto correcto según lo que haya almacenado la cookie del cliente.

Esta es mi función:

function LangText($de, $fr, $us){
    if(!isset($_COOKIE["lang"]) || $_COOKIE["lang"] == "de") echo $de;
    else if($_COOKIE["lang"] == "fr") echo $fr;
    else if($_COOKIE["lang"] == "us") echo $us;
    else return 0;
}

Hasta ahora, estaba redirigiendo al usuario en un php que almacenaba la cookie y lo redirigía al sitio anterior. ¿Existe la posibilidad de realizar esto sin recargar?

0
PoTTii 31 ago. 2014 a las 02:28

2 respuestas

La mejor respuesta

También recomiendo encarecidamente los URI específicos del idioma, pero esto debería funcionar. Requiere jQuery .

function changeLanguage(lang){
    // Replace "lang" cookie with new language
    document.cookie = "lang="+lang;
    // Get html of current URI and replace page contents.
    $("body").load(window.location.href);
}

// Call this to switch to German, for example
changeLanguage("de");
0
Richard Foster 31 ago. 2014 a las 05:55

Si está administrando su sitio multilingüe solo con PHP, ya que PHP es un lenguaje del lado del servidor, deberá volver a cargarlo (porque debe ir al servidor para calcular la nueva página).

No hay nada malo en esto. En el arranque de su aplicación, debe buscar la cookie de idioma, verificar su valor y establecer el valor del entorno de idioma.

Le recomendaría que gestione varios idiomas sin cookies porque las cookies son molestas y ahora tiene que lidiar con las políticas legales sobre el uso de cookies.

Puede administrar varios idiomas, simplemente usando una ruta URI como en/ o pt/. Casi todos los frameworks PHP hacen esto de forma inmediata.

0
PauloASilva 30 ago. 2014 a las 23:14