Sim, meus caros, é possível traduzirmos alguns textos com certa velocidade e comodidade usado um código VBA que utiliza o Google Tradutor pela automação do Internet Explorer controlados via Excel.
Mas talvez esteja neste exato momento como que atônito imaginando como isso pode ser útil num Relatório, ou num Dashboard. Talvez pergunte-se: Seria útil na minha aplicação?Meus caros, todos nós desenvolvemos soluções por aí. De vez em quando, ou quase sempre no caso de alguns, precisamos desenvolver soluções para a América Latina ou para a Europa. Isso demanda camadas e mais camadas de interfaces para Formulários, Relatórios, Gráficos, Infográficos, Dashboards, Scorecards, etc...Com as funcionalidades que veremos mais abaixo no artigo, poderemos resolver tudo isso no início da aplicação, talvez atualizando uma tabela interna que contenha todos os títulos usados nela e Voilá temos a nossa interface traduzida para os mais diversos idiomas!
Este programa grava automaticamente o texto do Excel no Internet Explorer e usa o serviço do Google Tradutor para traduzir o texto na linguagem que desejarmos. Será possível traduzir de e para vários idiomas diferentes, bastando alterar o código deste no programa.
O que é o Google Tradutor?O Google Tradutor é um serviço de tradução gratuito que fornece traduções instantâneas em 64 idiomas diferentes (em Janeiro de 2013). Ele pode traduzir palavras, frases e páginas da web em qualquer combinação dos idiomas aceitos. Com o Google Tradutor, esperamos disponibilizar informações úteis para todos, independentemente do idioma em que estiverem escritas.Como funciona?Quando gera uma tradução, o Google Tradutor procura padrões em centenas de milhares de documentos para ajudar a decidir qual é a melhor tradução. Ao detectar padrões em documentos que já foram traduzidos por tradutores humanos, o Google Tradutor pode fazer escolhas inteligentes e determinar qual é a tradução apropriada. Esse processo de procurar padrões em grandes quantidades de texto é chamado de "tradução automática estatística". Como as traduções são geradas por máquinas, nem todas serão perfeitas. Quanto mais documentos traduzidos por humanos o Google Tradutor puder analisar em um idioma específico, melhor será a qualidade da tradução. É por esse motivo que a precisão da tradução às vezes varia de acordo com o idioma.
Hoje, todos os principais idiomas estão disponíveis no Google Translate. É um dos poucos serviços que permite a tradução de frases inteiras não apenas palavras. O serviço é gratuito e pode ser executado através de API.
Divirta-se!
Public Sub Google_Translate()Dim Google_Translate_Internet_Explorer_Automation As Object
Set Google_Translate_Internet_Explorer_Automation = CreateObject("InternetExplorer.Application")
Google_Translate_Internet_Explorer_Automation.Visible = TrueWait_Between_Google_Translate_Cycles = Range("G1").ValueLet Column = 0
While Range("f9").Offset(0, Column).Value <> tomDo While Google_Translate_Internet_Explorer_Automation.busyCall WaitSeconds(Wait_Between_Google_Translate_Cycles)LoopLet to_language_code = Range("f9").Offset(0, Column).ValueDo While Google_Translate_Internet_Explorer_Automation.busyCall WaitSeconds (Wait_Between_Google_Translate_Cycles)LoopLet Google_Translate_Internet_Explorer_Automation.document.forms("text_form").elements(5).Value = to_language_codeDo While Google_Translate_Internet_Explorer_Automation.busyCall WaitSeconds (Wait_Between_Google_Translate_Cycles)LoopLet rad = 0While Range("c10").Offset(rad, 0).Value <> tomIf Range("f10").Offset(rad, Column).Value = tom ThenLet from_language_code = Range("a10").Offset(rad, 0).ValueLet Google_Translate_Internet_Explorer_Automation.document.forms("text_form").elements(4).Value = from_language_codeDo While Google_Translate_Internet_Explorer_Automation.busyCall WaitSeconds (Wait_Between_Google_Translate_Cycles)LoopLet Google_Translate_Text = Range("c10").Offset(rad, 0).Value
While Google_Translate_Internet_Explorer_Automation.busyCall WaitSeconds (Wait_Between_Google_Translate_Cycles)WendLet Google_Translate_Internet_Explorer_Automation.document.forms("text_form").elements("source").Value = Google_Translate_TextWhile Google_Translate_Internet_Explorer_Automation.busyCall WaitSeconds (Wait_Between_Google_Translate_Cycles)WendGoogle_Translate_Internet_Explorer_Automation.document.getElementById("text_form").submitWhile Google_Translate_Internet_Explorer_Automation.busyCall WaitSeconds (Wait_Between_Google_Translate_Cycles)WendLet dd2 = Google_Translate_Internet_Explorer_Automation.document.forms(1).elements(4).ValueWhile Google_Translate_Internet_Explorer_Automation.busyCall WaitSeconds (Wait_Between_Google_Translate_Cycles)WendLet Google_Translate_Variable1 = Replace(dd2, Chr(13), "")Let Range("f10").Offset(rad, Column).Value = Google_Translate_Variable1End If
Let rad = rad + 1WendLet Column = Column + 1WendGoogle_Translate_Internet_Explorer_Automation.QuitSet Google_Translate_Internet_Explorer_Automation = Nothing
End SubPublic Sub WaitSeconds(sek)
Let newHour = Hour(Now())
Let newMinute = Minute(Now())
Let newSecond = Second(Now()) + sek
Let waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
End Sub