Es posible saber qué idioma está definido actualmente en el navegador del usuario mediante la súper variable global de PHP $_SERVER, consultando el índice 'HTTP_ACCEPT_LANGUAGE'.
PHP
<?php echo $_SERVER['HTTP_ACCEPT_LANGUAGE']; # Se espera algo asi: es,pt-BR,en;q=0.5 ?>
Para obtener solo la parte que importa, que son las dos primeras letras:
PHP
<?php echo substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) # Se espera algo asi: es ?>
Para crear un script en PHP donde el usuario puede definir el idioma mediante una solicitud GET desde un formulario y si no se elige ningún idioma, se usa el idioma actual del navegador si se encuentra entre ciertos idiomas predeterminados.
PHP
<?php if (isset($_GET['lang'])) { $lang = $_GET['lang']; } else { $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); } if (!in_array($lang, array("es","pt","en"))) $lang = "es"; ?>
La función in_array de este script verifica si el idioma está entre los configurados en el arreglo (es, pt, en), es decir, Español, Portugués o Inglés y si no encuentra el idioma, lo configura en Español (es). Esto garantiza que la variable $lang siempre tendrá un valor válido y esperado.