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?
2 respuestas
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");
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.
Preguntas relacionadas
Preguntas vinculadas
Nuevas preguntas
javascript
Para preguntas sobre la programación en ECMAScript (JavaScript / JS) y sus diversos dialectos / implementaciones (excepto ActionScript). Incluya todas las etiquetas relevantes en su pregunta; por ejemplo, [node.js], [jquery], [json], etc.