Will Up 0 Denunciar post Postado Outubro 26, 2010 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
Leozitho 81 Denunciar post Postado Outubro 26, 2010 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
Will Up 0 Denunciar post Postado Outubro 26, 2010 Pode me dar um exemplo de como salvar o cookie? Compartilhar este post Link para o post Compartilhar em outros sites
Leozitho 81 Denunciar post Postado Outubro 26, 2010 Você pode fazer assim: if (isset($_GET['lang'])) { setcookie('lang', $_GET['lang'], time()+108000, '/'); } Compartilhar este post Link para o post Compartilhar em outros sites
Will Up 0 Denunciar post Postado Outubro 26, 2010 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
criatividade zero 17 Denunciar post Postado Outubro 26, 2010 nao seria assim? if (!isset($_GET['lang'])) { setcookie('lang', $_GET['lang'], time()+108000, '/'); } Compartilhar este post Link para o post Compartilhar em outros sites
Will Up 0 Denunciar post Postado Outubro 27, 2010 Foi assim que eu fiz, dá erro Compartilhar este post Link para o post Compartilhar em outros sites
Lord... 0 Denunciar post Postado Outubro 27, 2010 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
Will Up 0 Denunciar post Postado Outubro 27, 2010 Ok, não mais o Warning, mas não grava o cookie Compartilhar este post Link para o post Compartilhar em outros sites
criatividade zero 17 Denunciar post Postado Outubro 27, 2010 você colocou o ! no if como mostrei? Compartilhar este post Link para o post Compartilhar em outros sites
Will Up 0 Denunciar post Postado Outubro 27, 2010 Sim, veja você mesmo. Acesse http://theimageup.com?lang=en Nas configurações do navegador, aparece gravado, mas ao acessar http://theimageup.com, tá em português Compartilhar este post Link para o post Compartilhar em outros sites
criatividade zero 17 Denunciar post Postado Outubro 27, 2010 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
Will Up 0 Denunciar post Postado Outubro 27, 2010 Continua em PT Compartilhar este post Link para o post Compartilhar em outros sites
criatividade zero 17 Denunciar post Postado Outubro 27, 2010 você esta usando o cookie??? if (!isset($_GET['lang'])) { echo 'cria padrão PT'; } else { echo $_GET['lang']; } poste o codigo caso não apareca EN Compartilhar este post Link para o post Compartilhar em outros sites
Will Up 0 Denunciar post Postado Outubro 27, 2010 Apareceu o EN, a página traduziu, mas não fica gravado. Cada vez q acesso o theimageup.com tenho q pôr o ?lang=en na URL Compartilhar este post Link para o post Compartilhar em outros sites
criatividade zero 17 Denunciar post Postado Outubro 27, 2010 <?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
Will Up 0 Denunciar post Postado Outubro 27, 2010 Como? Assim: switch ($_COOKIE['$_GET['lang']']) ? Compartilhar este post Link para o post Compartilhar em outros sites
criatividade zero 17 Denunciar post Postado Outubro 27, 2010 seria switch ($_COOKIE['lang']) Compartilhar este post Link para o post Compartilhar em outros sites
Will Up 0 Denunciar post Postado Outubro 27, 2010 Obrigado, amigo, consegui. Abraços :) Compartilhar este post Link para o post Compartilhar em outros sites
criatividade zero 17 Denunciar post Postado Outubro 27, 2010 http://forum.imasters.com.br/public/style_emoticons/default/joia.gif mas isso foi o basicão você precisa verificar antes se ja contem o cookie, senão cria ... e implementa qq verificação pertinente abraços Compartilhar este post Link para o post Compartilhar em outros sites