Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Will Up

[Resolvido] Tradução automática

Recommended Posts

Olá, já faz algum tempo que estou procurando uma forma de traduzir meu site.

 

Desta forma: http://meusite.com/?lang=en ele traduz normalmente, mas tem q inserir o ?lang=en no fim de todas as páginas. É muito chato para o usuário.

 

Este é o script responsável pela tradução:

<?PHP

 

switch ($_GET['lang'])

{

	case 'pt':

		require("portugues.php");

		break;

	case 'en':

		require("ingles.php");

		break;

	default:

		require("portugues.php");

}

?>

Como faço para deixar o idioma gravado? Não tem como traduzir automaticamente? (GeoIP?)

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o seu site só tem dois idiomas (Português e Inglês), e presumindo que o idioma Português é para ser exibido para usuários brasileiros, você pode fazer uma simples comparação para verificar se o IP do visitante é do Brasil.

 

Dê uma olhada nesse tópico: http://forum.imaster...nalidade-do-ip/

 

GeoIP também seria uma solução, mas ao meu ver não é necessário e você teria que pagar se quisesse ter um serviço confiável e estável para realizar as consultas.

 

Você também pode colocar uma opção no topo do site com um listmenu ou duas bandeirinhas (Brasil e EUA) para o visitante ter a possibilidade de alterar o idioma, daí você salva o idioma de preferência em um Cookie e sempre consulta esse Cookie para saber qual o idioma do usuário. Assim não precisa ficar passando via URL.

 

Um abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, fiz mas não salvou o cookie. Apenas exibiu um warning (Warning: Cannot modify header information).

Fiz assim:

 

<?php
switch ($_GET['lang'])

{

	case 'pt':

		require("portugues.php");

		break;

	case 'en':

		require("ingles.php");

		break;

	default:

		require("portugues.php");

}

if (isset($_GET['lang']))
{
        setcookie('lang', $_GET['lang'], time()+108000, '/');
}

?>

O que houve?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você só pode setar cookie antes de enviar algum header para o navegador.

Ou seja coloque esse código antes de todos os headers( coloque antes da tag <html> )

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim

 

 

if (!isset($_GET['lang'])) {

//se ?lang=en não for definido, cria padrão PT

setcookie('lang', 'pt', time()+108000, '/');

} else {

//se ?lang=en estiver definido usa o valor

setcookie('lang', $_GET['lang'], time()+108000, '/');

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
switch ($_GET['lang'])

{

        case 'pt':

                require("portugues.php");

                break;

        case 'en':

                require("ingles.php");

                break;

        default:

                require("portugues.php");

}

if (isset($_GET['lang']))
{
        setcookie('lang', $_GET['lang'], time()+108000, '/');
}

?>

você precisa mudar esse switch ($_GET['lang']) pelo cookie

se você não mudou ainda, bastava mudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.