我一直在使用excel中的公共函数进行基本翻译已有一段时间了。在过去的一周里,我开始接受" #VALUE!"对于结果,我已将其缩小到代码的MSXML2.XMLHTTP部分。这是功能:
Public Function Translate(ByVal strText As String, _
Optional ByVal eFrom As eLanguage = auto_detect, _
Optional ByVal eTo As eLanguage = english, _
Optional ByVal blnPhonetic As Boolean = False) As String
Dim strUrl
Dim strTransText As String
Dim strResult As String
Dim varSplitText As Variant
Dim lngItem As Long
Dim delimitChar As String
delimitChar = Chr(34) & "," 'Chr(34) is the character for "
If strText = "" Then
Translate = ""
Exit Function
End If
strText = URLEncode(strText)
strUrl = "http://translate.google.com/translate_a/t?client=s&text={S}&hl=en&sl={F}&tl={T}&multires=1&pc=0&rom=1&sc=1"
strUrl = Replace$(strUrl, "{S}", strText)
strUrl = Replace$(strUrl, "{F}", Split(strSHORTCODES, ",")(eFrom))
strUrl = Replace$(strUrl, "{T}", Split(strSHORTCODES, ",")(eTo))
With CreateObject("MSXML2.XMLHTTP")
Call .Open("get", strUrl, False)
Call .Send
strResult = .responseText
End With
varSplitText = Split(Split(strResult, "]],")(0), "[")
If Not blnPhonetic Then
For lngItem = 3 To UBound(varSplitText)
strTransText = strTransText & Split(varSplitText(lngItem), delimitChar)(0)
Next
Else
For lngItem = 3 To UBound(varSplitText)
strTransText = strTransText & Split(varSplitText(lngItem), ",")(2)
Next
End If
strResult = Replace(strTransText, """", "")
Translate = strResult
End Function
在strURL发送之后发生问题:
With CreateObject("MSXML2.XMLHTTP")
Call .Open("get", strUrl, False)
Call .Send
strResult = .responseText
End With
我已经验证正确创建了strURL并将其输入浏览器并获得了积极的结果。我发现的唯一问题是,在第一次尝试进入浏览器时,我被带入CAPTCHA页面以验证我的存在。当我调用translate函数时,这会产生一个问题。有没有办法解决这个问题?
在执行函数期间创建的strURL示例: http://translate.google.com/translate_a/t?client=s&text=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF&hl=en&sl=&tl=en&multires=1&pc=0&rom=1&sc=1 如果您在浏览器中输入此内容,则可能会收到CAPTCHA响应。这个网址只是日语中你好的翻译。
答案 0 :(得分:1)
如果您无法找到解决CAPTCHA错误的方法(这可能很困难,因为您尝试完成的任务是CAPTCHAs首先存在的原因),您可以考虑下面列出的一些替代方案。
我正在寻找谷歌翻译API的替代品(因为这需要花钱,我相信每100万个字符20美元),而且我确实发现微软提供免费的200万字符/月选项。我还从previous SO question和一些快速的独立研究中找到了其他一些付费选项。
免:
付费
您(希望)可以找到适合您需求的网站ProgrammableWeb has 60+ results for translation APIs。
在列出的所有内容中,如果您想让它免费,Microsoft Translate似乎是赢家。你知道这个名字,它有很好的记录,可靠等等。
答案 1 :(得分:0)
您使用的是实际的网站翻译工具,这不是使用翻译API的正确方法 - 请查看正确的REST API: https://cloud.google.com/translate/v2/