Quais as maneiras de saber o idioma do usuário?

Enviada por Manoel Jr. 
Manoel Jr.
Quais as maneiras de saber o idioma do usuário?
19 de October de 2009 às 05:10PM
Oi Gente!

Como o site vai ter mais de um idioma, eu estou em busca das definições corretas dos idiomas, de acordo com os padrões internacionais estabelecidos. Traduzir já dei jeito, eu quero é "padronizar". Uma das coisas que me incentivou na busca pela padronização internacional foi também os buscadores, como no google que tem aquela opção: "pesquisar páginas só em português", onde o site será identificado por uma máquina e não por um usuário que "viu o desenho da bandeira", e escolheu o idioma por "intuição".

São 4 perguntas.

1) De que maneiras eu faço para saber o idioma do usuário que acessa a página? Além do $_SERVER['HTTP_ACCEPT_LANGUAGE'], há outros jeitos pelo PHP ou Javascript?

2) Onde eu acho uma tabela com as teminações aceitas internacionamente de todos os idiomas, tipo en, es, etc.

3) Das tags <html lang=" " xml:lang=" ">, eu preciso colocar ali a terminação do idioma da página, para identificar corretamente o idioma em que ela foi feita. Mas o que coloco em lang=" " é a mesma coisa que em xml:lang=" "?

4) Técnicamente, a linguagem do Brasil não é "pt" (de português), "pt" na verdade é de "Portugal". Pelo que descobri o correto é "pt-br", mas eu lí em umlugar, e a terminação estava deste jeito "pt-BR", daí veio a dúvida qual é o correto de verdade verdadeira, "pt-br" ou "pt-BR"?


Obrigado
Manoel Jr.
Carlos Eduardo Gomes Monteiro
Re: Quais as maneiras de saber o idioma do usuário?
19 de October de 2009 às 06:21PM
Pra determinar no HTML você usar MetaTAg
<meta name="lang" content="pt-br"/>

Se você quer saber qual lingua especificar
O melhor jeito é pelo $_SERVER['HTTP_ACCEPT_LANGUAGE']
Marcos Regis
Re: Quais as maneiras de saber o idioma do usuário?
19 de October de 2009 às 08:15PM
1-> $_SERVER['HTTP_ACCEPT_LANGUAGE'] indicará qual é o idioma do navegador e quais outros ele aceita. Geralmente o idioma do navegador também é o do sistema.
Existe ainda uma forma que identifica o usuário através de seu IP usando scripts de GLOBAL IP para detectar de que país (e até a rua) é o IP

2-> A melhor lista que encontrei e eu atualmente uso é esta
http://www.livio.net/main/charset.asp (procure por HTTP_ACCEPT_LANGUAGE )

3-> O nosso idioma é pt mas nossa identificação é pt-br (ou pt_BR ou ptb, dependendo do sistema) Use o mesmo valor em ambos ou use lang="pt" e xml:lang="pt-br"

4-> pt-br ou pt_BR ou ptb. Isso varia de acordo com o que se deseja. O padrão aceito é pt-br.
Manoel Jr.
Re: Quais as maneiras de saber o idioma do usuário?
20 de October de 2009 às 05:26AM
Oi Marcos Regis!

Entrei lá no link que você falou e tem a lista completa!

Por em quanto eu preciso liberar rápido a validação de idioma e vou usar o $_SERVER['HTTP_ACCEPT_LANGUAGE'], para direcionar os usuários. E mais para frente mudo para o IP.

Estava penssando, eu uso esta validação só no index.php, ou ponho em todas as páginas do site?

Outra coisa, e se o usuário mudar de idioma da página? Tipo ele está em espanhol, e quis ver em portugues, ai a validação da página iria jogar ele para o espanhol de novo... Eu sempre uso sessão para gravar coisas assim, mas normalmente só na área de administração, onde só existe 1 usuário. Já para usar no site para guardar o idioma atual, é melhor usar sessão ou então usar cookie? dá diferença de performance?

E uma última pergunta, se eu direciono o usuário para a página do idioma dele, mesmo se eu validar por sessão ou cookie, no caso dos robos buscadores, eles criam sessão ou cookie ao entrar no site? Será que então o indexamento ficaria preso ao idioma do robo?


Muito obrigado!

Manoel Jr.
Marcos Regis
Re: Quais as maneiras de saber o idioma do usuário?
20 de October de 2009 às 11:51AM
Use cookies para armazenar o idioma preferido ou escolhido.
O esquema para verificação é idêntico ao de sessões. Tem que ser verificado em todas as páginas.
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.