Idioma
Categoria
Pesquisar

Detectar o idioma utilizado no navegador do usuário usando PHP

Como descobrir a linguagem definida no navegador em PHP e como usar esta informação para criar um script que recebe este valor caso nenhum idioma seja configurado

Em PHP Por Rudi Drusian
Publicado em
Última atualização

É 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.

Referências