首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现google翻译

实现google翻译
EN

Stack Overflow用户
提问于 2020-09-10 16:26:29
回答 1查看 334关注 0票数 0

我试过用谷歌翻译把名字从c#翻译成另一种语言,它工作得很好,但现在我正试着用ms access vba做同样的事情,我已经尝试了这么多方法,但都没有成功!这是用c#编写的代码,它运行良好

代码语言:javascript
复制
public string trans_arabic_to_english(string word)
        {
            var toLanguage = "en";//English
            var fromLanguage = "ar";//Deutsch
            var url = $"https://translate.googleapis.com/translate_a/single?client=gtx&sl={fromLanguage}&tl={toLanguage}&dt=t&q={HttpUtility.UrlEncode(word)}";
            var webClient = new WebClient
            {
                Encoding = System.Text.Encoding.UTF8
            };
            var result = webClient.DownloadString(url);
            try
            {
                result = result.Substring(4, result.IndexOf("\"", 4, StringComparison.Ordinal) - 4);
                return result;
            }
            catch
            {
                return "Error";
            }
        }

这是vba中的代码

代码语言:javascript
复制
Private Sub Command0_Click()
Dim toLan As String, fromLan As String, resp As String, s As String, a_name As String, url As String

toLang = "ar"
fromlang = "en"
a_name = "omar khalil"
url = "https://translate.googleapis.com/translate_a/single?"
url = url & "client=gtx&sl={""" & toLang & """}&tl={""" & fromlang & """}&dt=t&q={""" & a_name & """}"

url = "https://translate.googleapis.com/translate_a/single?client=gtx&sl="
url = url & fromlang & "&tl=" & to_lang & "&dt=t&q=" & a_name
'==
Dim ob As Object
Set ob = CreateObject("WinHttp.WinHttpRequest.5.1")
ob.Open "POST", url, False
ob.SetRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
ob.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
ob.Send
If ob.Status <> 200 Then
resp = ob.ResponseText
MsgBox resp
End Sub

我也尝试过使用WinHttp,但是一点运气都没有!任何人都可以帮助我在这个问题上,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-10 16:39:29

请尝试下一个函数:

代码语言:javascript
复制
Private Function GTranslate(strInput As String, strFromLang As String, strToLang As String) As String
    Dim strURL As String, objHTTP As Object, objHTML As Object, objDivs As Object, objDiv As Variant
    
    strURL = "https://translate.google.com/m?hl=" & strFromLang & _
        "&sl=" & strFromLang & _
        "&tl=" & strToLang & _
        "&ie=UTF-8&prev=_m&q=" & strInput
        
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
    objHTTP.Open "GET", strURL, False
    objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
    objHTTP.Send ""
    
    Set objHTML = CreateObject("htmlfile")
    With objHTML
        .Open
        .Write objHTTP.responseText
        .Close
    End With
    
    Set objDivs = objHTML.getElementsByTagName("div")
    For Each objDiv In objDivs
        'If objDiv.className = "t0" Then              'it does not work, anymore
        If objDiv.className = "result-container" Then 'adapted on December 28th
            GTranslate = objDiv.innerText: Exit For
        End If
    Next objDiv
    
    Set objHTML = Nothing: Set objHTTP = Nothing
End Function

它可以通过下一种方式调用:

代码语言:javascript
复制
Sub testTranslateG()
  MsgBox GTranslate("Este es un libro", "auto", "en")
End Sub

第二个参数可以是"auto“(就像在testing Sub中那样),如果需要更准确的翻译,也可以是特定语言的缩写("es”-西班牙语,"ru“-俄语,"ro”-罗马尼亚语等)。

为了找到正确的缩写,你可以打开谷歌翻译页面,右击并选择“查看页面源代码”。然后试着找到一些语言。让我们说西班牙语。在该区域中,您将看到一个包含如下字符串的脚本:"code:'it',name:‘意大利’“。很容易理解"it“是意大利语的缩写...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63825699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档