É possível saber qual a linguagem esta definida atualmente no navegador do usuário usando a variável super global do PHP $_SERVER, consultando o index 'HTTP_ACCEPT_LANGUAGE'.
PHP
<?php echo $_SERVER['HTTP_ACCEPT_LANGUAGE']; # Esperado algo como: pt-BR,en;q=0.5 ?>
Para pegar somente a parte que interessa que são primeiras duas letras:
PHP
<?php echo substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) # Esperado algo como: pt ?>
Para criar um script PHP em que o usuário possa definir a linguagem através de um formulário usando requisição GET e caso nenhuma linguagem seja escolhida utiliza-se a linguagem atual do navegador se está estiver entre certas linguagens pré determinadas.
PHP
<?php if (isset($_GET['lang'])) { $lang = $_GET['lang']; } else { $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); } if (!in_array($lang, array("pt","en","es"))) $lang = "pt"; ?>
A função in_array neste script checa se a linguagem esta entre as configuradas no array (pt, en, es), ou seja, Português, Inglês ou Espanhol, e caso não encontre a linguagem define a mesma como Português (pt). Assim garante que a variável $lang sempre terá um valor válido e esperado.