En PHP podemos obtener facilmente el idioma en el que nuestro usuario tiene configurado su navegador web, para en base a esto, poder tomar decisiones.
Imagina que tienes una web en WordPress y quieres traducirla a varios idiomas. Puedes valerte de plugins como Loco Transtale para traducir cadenas de texto de tus plugins y temas.
Y puedes usar Polylang para duplicar tus páginas y entradas en los nuevos idiomas y hacer el «switch» entre ellos.
Pero, ¿y si tienes textos escritos directamente en tu plantilla? ¿Cómo traducirlos sin duplicar la web?
Aquí en donde entra PHP…
Crea una función para obtener el código de idioma del navegador
<?php
$idioma = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
echo $idioma;
?>
$_SERVER es una variable PHP desde la que podemos obtener bastantes datos del servidor, entre ellos el idioma del navegador que realiza las peticiones HTTP.
Si ejecutamos el código anterior y nuestro navegador está configurado en español de España, obtendremos algo como:
es-ES,en;q=0.5
Lo que nos interesa son los 2 primeros caracteres de la respuesta «es» con los que rápidamente identificamos el idioma:
- es: español
- en: inglés
- fr: francés…
<?php
function obtenerIdioma(){
$idioma = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
return $idioma;
}
?>
La función substr() extrae el número de caracteres que indiquemos como segundo parámetro de la función, en nuestro caso, 2 caracteres.
Ahora podemos pasar el resultado a una variable para la comprobación posterior:
$idioma_usuario = obtenerIdioma();
Y hacemos la comprobación con if:
<?php
if($idioma_usuario == "es"){
//Ejecuto el código para español
}
elseif($idioma_usuario == "en"){
//Ejecuto el código para inglés
}
elseif($idioma_usuario == "fr"){
//Ejecuto el código para francés
}
else{
//Ejecuto el código para el resto de idiomas
}
?>
Con esto ya podemos adaptar nuestros textos o funciones personalizadas a todos los idiomas que necesitemos.