No momento, você está visualizando Adicionando outros idiomas ao seu site  – Google Tradutor

Adicionando outros idiomas ao seu site – Google Tradutor

ESSE CÓDIGO E LINK DE DOWNLOAD FORAM ATUALIZADOS EM UM NOVO POST – VEJA AQUI

Adicionando outros idiomas ao seu site  – Google Tradutor

Olá, um post rapidinho para inserir uma barra de tradução de idioma no seu site/blog.

Sabemos que dá para inserir o google tradutor no site e que é razoavelmente funcional.
Para incluir em seu site é bem simples, basta inserir o código abaixo em seu HTML;

<div id="google_translate_element"></div>
<script src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit" type="text/javascript"></script>

O problema é que fica meio feio, veja abaixo:

google tradutor padrão

Seria legal se não ficasse assim tão “cru”, então o que vamos fazer é:
– Ocultar essa combo padrão do google tradutor.
– Inserir a bandeira de cada idioma disponível no site.

Para ocultar a combo padrão, nós só precisamos dar um display:none em alguns nos elementos, são eles:


#google_translate_element,
.goog-te-banner-frame,
.goog-te-balloon-frame,
#goog-gt-tt,
.goog-te-balloon-frame,
.goog-tooltip,
.goog-tooltip:hover {
 display:none !important;
}

Agora que ocultamos a coisa feia, precisamos utilizar alguns recursos da combo que foi ocultada… pois é, se não está sendo exibida a combo, como poderemos alterar o idioma? Isso mesmo, javascript, você tá ficando esperto ;D

Essas são as funções que precisamos para disparar eventos do google translator.

function ChangeLang(a) {
 var b, elemento = "";
 if (document.createEvent) {
 var c = document.createEvent("HTMLEvents");
 c.initEvent("click", true, true)
 }
 if (a == 'pt') {
 elemento = $(".goog-te-banner-frame:eq(0)").contents().find("button[id*='restore']")
 } else {
 switch (a) {
 case 'de':
 b = "alem";
 break;
 case 'es':
 b = "espanhol";
 break;
 case 'fr':
 b = "fran";
 break;
 case 'en':
 b = "ing";
 break;
 case 'it':
 b = "italiano";
 break
 }
 elemento = $(".goog-te-menu-frame:eq(0)").contents().find("span:contains('" + b + "')");
 }
 if (elemento.length > 0) {
 if (document.createEvent) {
 elemento[0].dispatchEvent(c)
 } else {
 elemento[0].click()
 }
 }
}
function googleTranslateElementInit() {
 new google.translate.TranslateElement({
 pageLanguage: 'pt',
 autoDisplay: false,
 includedLanguages: 'de,es,fr,en,it',
 layout: google.translate.TranslateElement.InlineLayout.SIMPLE
 },
 'google_translate_element');
}

Agora que já temos as funções para disparar os eventos, vamos criar o HTML com nossas bandeirinhas.

<!DOCTYPE html>
<html lang="pt-br">
<head>
<title>Translate</title>
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript" src="js/tradutor.js"></script>
<link href="css/main.css" rel="stylesheet" />
</head>
<body>
<div class="main">
<div id="google_translate_element"></div>
<script src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
<ul class="nav">
<li><a href="javascript:;" class="pt" onclick="ChangeLang('pt')" title="Traduzir para português"><img src="images/pt.gif" /></a></li>
<li><a href="javascript:;" class="en" onclick="ChangeLang('en')" title="Translate to English"><img src="images/en.gif"  /></a></li>
<li><a href="javascript:;" class="es" onclick="ChangeLang('es')" title="Traducir al español"><img src="images/es.gif"  /></a></li>
<li><a href="javascript:;" class="it" onclick="ChangeLang('it')" title="Traduci in italiano"><img src="images/it.png"  /></a></li>
<li><a href="javascript:;" class="de" onclick="ChangeLang('de')" title="Übersetzen in Deutsch"><img src="images/al.png"  /></a></li>
<li><a href="javascript:;" class="fr" onclick="ChangeLang('fr')" title="Traduire en français"><img src="images/fr.png"  /></a></li>
</ul>
<p>Esse texto e qualquer outro contido no site serão traduzidos!</p>
</div>
</body>
</html>

Pronto agora você tem uma “barrinha” mais atraente, é claro que não é uma coisa que se diga “que linda essa barrinha” mas está melhor.



A idéia agora é você alterar o CSS para organizar à sua maneira as bandeiras ou seja lá o que você quiser colocar, desde que chame a function que criamos.

Então,
Até a próxima
Until next time
Hasta la próxima
Fino alla prossima volta
Bis zum nächsten Mal
Jusqu’à la prochaine fois

Demo e Download

 

Este post tem 70 comentários

  1. Gabriel Cunha Moroni

    Muito boa a solução, mas como eu faço para ela funcionar no IE?
    Grato.

    1. Rafael Clares

      Desculpe a demora em responder, estive ausente por algum tempo.
      Qual versão do IE ? Não consegui simular o problema (uso o IE9);
      Abs

  2. Douglas Rodrigues

    Olá Rafael, este tutorial me ajudou muito; funciona no IE e Chrome, porém queria saber porque o mesmo não funciona no firefox.

    1. Rafael Clares

      Douglas, cara, no meu funciona rs rs rs.
      Sei que não é a resposta que gostaria de ler mas não tenho nenhum report deste problema até agora.
      Abs

  3. David

    Rafael, tudo bom?!

    Cara muito boa essa tradução, deu certinho, mas estou com um problema.

    Preciso colocar o site todo em ENG quando o cara entrar no site.

    Já tentei o read function … já tentei o onload, mas ele não entende que é para iniciar o site já traduzido.

    Tem alguma solução para isso?

    1. Rafael Clares

      Olá David, você viu que no script tem essa linha:
      pageLanguage: ‘pt’,

      Já tentou mudar para:
      pageLanguage: ‘en’

      ?? Abs

  4. Marcelo Avelino

    Show de bola, implantei no meu site do jeito que eu queria, forte abraço parabéns pelo site…….

  5. Moises Ventura

    Parabéns, muito bom mesmo. Pede uns donatios aí que eu contribuo pois me poupou algumas horas de trabalho.

    1. Rafael Clares

      Olá Moises, que bom que lhe serviu!
      Há um botão de doação do lado direito, acima da busca! Muito obrigado

  6. Fernando

    amigo meu site esta em ingles, eu gostaria de passar-lo para portugues, gostei muito de seu sistema, mas ele esta funcionando apenas para linguagem principal em portugues, como posso fazer para fazer traduzir o ingles para o portugues ?

    1. Rafael Clares

      Olá Fernando, me passe o link de onde você colocou o script para eu dar uma olhada.

  7. Carlos

    RAfael, bom dia..

    Poderia me auxiliar?
    Meu site é em wordpress e ja add a widget, porém me perdi de agora em diante… como instalar seus scripts?
    grande abraço
    Carlos

    1. Rafael Clares

      Carlos, não entendi bem sua dúvida. O que exatamente está precisando fazer?

  8. matheus

    muito bom, ajudou muito, Obrigado!

  9. Tiago Held

    Como eu add linguagem arabe por exemplo

  10. Sander

    Brother super dica a sua, más não consegui rodar nem a demo que vc postou, com certeza estou fazendo alguma coisa errada, seria pedir demais uma video aula? Más valeu pelo post antecipadamente!

    1. Rafael Clares

      Sander, também acho que há algo errado!
      Vídeo aula, é demais sim rs rs rs. Eu precisaria ter muito tempo para fazer um vídeo para cada script ou dúvida;
      Informe o navegador e versão que está testando o script, e também, não se esqueça de rodar ele no localhost ou site, ex: http://localhost.
      Se estiver simplesmente “abrindo” o arquivo no navegador não vai rolar mesmo.

  11. Sander

    Pow brother eu que tava dando bobeira mesmo! http://www.costamares.xpg.com.br/ hospedei em um provedor gratuito enquanto não termino por completo, da uma conferida.
    Muito obrigado cara. Post mto top.
    Value

      1. Sander

        Nós ja temos um provedor http://www.costamares.com.br só que o dono da pousada não gostou do site que o cara fez e mandou eu fazer outro, é o meu 1º site então eu usei esse ai gratuito só pra testar as coisas mesmo.
        Más valeu brother grande ajuda a sua.
        Abração!

  12. Fernando Zorek

    Pequena contribuição ao código, que evita ele puxar o scroll para cima ao carregar a página:
    function googleTranslateElementInit() {
    new google.translate.TranslateElement({
    pageLanguage: ‘pt’,
    autoDisplay: false,
    includedLanguages: ‘de,es,fr,en,it,ja’,
    layout: google.translate.TranslateElement.InlineLayout.SIMPLE
    },
    ‘google_translate_element’);
    var mostrar_body = document.getElementById(‘body’);
    mostrar_body.style.cssText = ”;
    }

  13. Fernando Zorek

    Obs, o js acima tem que estar após o , e o body tem estar com id=’body’,

  14. tonny

    OLÁ, INSTALEI O GOOGLE TRADUTOR NO MEU GT-S6313, INSTALEI AS LÍNGUAS QUE QUERIA, ING. E PORT., MAS QUANDO QUERO TRADUZIR EM OFFLINE, DÁ MENSAGEM DE ERRO, ” NÃO HÁ CONEXÃO PARA ENTRADA DE FALA(E4). QUE É ISSO…GRATO TONNY

      1. Marcos Rodrigues

        Rafael estou com o mesmo problema que o Tonny e vc diz que usa a internet para traduzir, creio que não, pois nas especificações do app diz off line e vc baixa os pacotes dos idiomas que quer e lá está escrito pacote off line, então deveria funcionar sem conexão sim, como a maioria dos comentários do google play o pessoal consegue off, não é?

  15. victorfreitas1

    Olá Rafal, seu post ficou show de bola, ajudou demais. Tenho uma pergunta, porque alguns países não fazem a tradução? Exemplos: China (zh-TW), Árabe (ar), entre outros. Abraço

    1. Rafael Clares

      Victor, estão inclusos somente os principais idiomas no script, teria que implementar os demais.
      Não sei se percebeu mas esse script é uma gambiarra que serve na verdade para esconder o original do google translate (que te todos idiomas e você pode usar ele tbm).

      1. victorfreitas1

        Eu cheguei a implementar vários idiomas no meu site para ver quais funcionam, e alguns funcionam e outros não, e não consegui saber o porque. Abraço.

  16. Marciano Franco

    Muito bom, está de parabéns, me ajudou muito. Apenas na hora que é selecionado um idioma aparece uma margem superior, deve ser algum erro com meu css ou algo do gênero.

  17. mudancasemcuritiba

    Olá instalei e funcionou, só que o problema é assim quando traduzo os texto com paragrafo e tals, ele retira os e o texto fica tudo junto.

    1. matheus

      Você consegui fazer com que ele leia os paragrafos pois estou com o mesmo problemas?

  18. paulo robson

    Ta de parabéns Clares ajudou de mais aqui vou doar um guarana pq cerveja nao é legal 🙂

  19. Rodolpho

    Eu sou leigo e não sei como fazer!
    Preciso copiar todos os codigos um ebaixo do outro e dai colar?
    Muito obrigado!

  20. Alex Beltrão

    PERFEITO. Só não esta funcionando Safari e Opera =/. Mas seria perfeito até demais se funcionasse. Se tiver algum código que resolva. o problema acontece no script do “tradutor.js”. Enquanto os navegadores entram no if da linha 32 (elemento.lenght), o Opera e Safari não entram.

  21. celso

    ola rafael tudo bom, eu site e feito em wordpress
    http://www.ontrance.com.br

    coloquei no rodape. mas as bandeiras nao consegui

    eu tenho que pegar seus arquivos e por na pasta raiz do servidor?

    js traduor na psta js junto com demais, e isso

    obrigado

    celso

  22. victorfreitas1

    Fala pessoal, para quem estiver com probelmas em adicionar outros idiomas, e o seguinte, basta colocar o mesmo nome ou pelomenos as três iniciais do idioma que ele chama a tradução igual ao que consta no google tradutor online, eu estava tentando colocar os idiomas em meu site tailândes e chines e não funcionavam ai fazendo testes descobri o erro. Exemplo:

    ERRADO
    case ‘th’:
    b = “th”; ou qualquer outro nome que não se refira ao idioma em portugues como está no google
    break;

    CERTO
    case ‘th’:
    b = “tai”; ou tailandes
    break;

    agora o chines

    ERRADO
    case ‘zh-TW’:
    b = “china”; ou qualquer outro nome que não se refira ao idioma em portugues como está no google
    break;

    CERTO
    case ‘th’:
    b = “chi”; ou chines
    break;

    o nome de “b” tem que ser igual ao que consta no https://translate.google.com, e as iniciais do “case” também.

    1. Thiago Soares Maneschy

      Olá amigo, estou tentando, mais ainda não funfou… como faço pra saber o o nome de “b” igual ao do google!?? já fiz algumas tentativas com as 3 iniciais ( chi ).. mais não rolou..
      Valeu..

    2. milton

      gostaria de colocar um tradutor japonês , como faço? os outros funcionaram corretamente!

  23. Rodrigo Miranda

    Obrigado , Muito bom . Funcionou direitinho aqui .

  24. Danielle

    Olá, gostei muito desse tradutor, porém, estou com problema no firefox, não funciona de jeito nenhum.
    Você pode ajudar?

  25. Leonardo

    Fala rafael, comigo o único problema é que está um a baixo do outro, e não um do lado do outro como e exemplo

  26. Leonardo

    Olá, gostei muito mas meu problema está no display, ele está um a baixo do outro, e não um ao lado do outro, sabe como resolvo ? eu fiz o download.

    1. willarrezeb

      Você pode resolver isso no css
      da um ‘display:block;’ e um ‘float:left’ na img

  27. Gerador de CPF

    Muito bom, estou rodando offline para testes, pretendo colocar no ar em breve! Valeu……..

  28. Mariam Acuña Gomez

    Ola! gostei do tradutor, funciono no Chrome e no firefox tambem, agora eu tenho um problema com os navegadores mobiles, nem em todos esta funcionando. voces tem alguma idea de que poderia ser o problema??

  29. William

    Primeiramente gostaria de agradecer, pois funciona perfeitamente e em todos os navegadores que pude testar. Gostaria de saber se dá pra incluir outros idiomas como o Árabe e o Chinês. Desde já agradeço, ótimo post!

  30. cursosortodontiainvisivel

    Olá estou com um problema e gostaria se existe solução. Meu site tem uma palavra q é a minha marca, que é no idioma em inglês, e quando o mesmo vai para o espanhol, ele traduz a marca. Pergunto se é possível excluir alguma palavra da tradução automática, se tem alguma linha ou plugin para isso. Obrigado, meu email [email protected]

  31. alexandre

    Olá Raphael,

    agradeco muito o fomulário. Coloquei num site e ficou ótimo, porém tenho uma dúvida, o nome dos funcionário no site está sendo traduzido para coisas que nao tem nada a ver srsr, tem algum codigo que possa ser colocado somente no texto que não quero que seja traduzido?

  32. walter santos

    como faço pra atualizar o script .. não tá rodando…obrigado!!

    1. walter

      funcionou corretamente …obrigado!!!

  33. Sah

    Olá, você poderia me ajudar? O meu não funcionou :/

  34. Marco aurelio Barbosa

    Boa tarde Rafael Clares
    Estou usando essa técnica para blogspot, mas não traduz para japonês, somente as linguas que vc colocou, tentei usar o mesmo codigo mas não resolveu, vc sabe o que aconteceu? vc tem algum codigo?
    visite o site, e veja que não funciona.

  35. maxxyryogilvan

    como podemos fazer para deixar uma idioma padrao sem ser o portugues, tipo ao carregar o site ja traduzir para o ingles

    obrigado

  36. walter

    Instalei o tradutor no meu site funcionou corretamente..obrigado pelo script..nota 1000…

  37. Suelenn Caxito

    Nota 10!!! Parabéns pelo post! São pessoas como você que enriquecem o nosso planeta!

  38. Joan

    como deixar ele automático em uma determinada linguagem e uma página?

  39. Marcelo

    Porque o meu fica aparecendo a barra do translate do google no topo?

  40. claudio

    Nossa mesmo sendo antigo o tutorial deu certo com alguns ajustes estava tomando uma surra.

  41. Greison

    Obrigado pelo post. O meu deu certo, porém tive que alterar os nomes das linguagens que estão no js neste trecho:

    switch (a) {
    case ‘de’:
    b = “Alemão”;
    break;
    case ‘es’:
    b = “Espanhol”;
    break;
    case ‘fr’:
    b = “Francês”;
    break;
    case ‘en’:
    b = “Inglês”;
    break;
    case ‘it’:
    b = “Italiano”;
    break

    Tive que alterar as iniciais maiúsculas e os acentos, já que a linguagem padrão é pt-br. Espero ter ajudado.

Deixe um comentário