【问题标题】:VB.net using google translatorVB.net 使用谷歌翻译器
【发布时间】:2012-08-06 13:50:14
【问题描述】:

我试图翻译“测试”这个词,
我的代码:

Imports Google.API.Translate

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox1.Text = "test"
        Dim gtras As New TranslateClient("MY API KEY")
        Label1.Text = gtras.Translate(TextBox1.Text, Language.English, Language.Hebrew, TranslateFormat.Text)

    End Sub
End Class

例外是:

Attempt by method 'Google_Translator.Form1.Button1_Click(System.Object, System.EventArgs)' to access method 'Google.API.Enumeration.op_Implicit(Google.API.Enumeration)' failed.

【问题讨论】:

  • 听起来 Google API 的路径设置不正确。老实说,这只是一个猜测(因此是评论,而不是建议的答案)。
  • 另外,请确保您的项目所针对的 .Net 版本与您正在使用的 Google API 的 .Net 版本相匹配。
  • @sacredfaith 为什么改变 .Net 框架会有所作为?
  • 错误、功能以及可能的向后兼容性。例如,API 可能会利用先前版本中不存在的更高版本框架中的内容。

标签: vb.net winforms


【解决方案1】:

此问题已在更高版本的 API 中得到修复(0.3.1 似乎可以工作):

http://code.google.com/p/google-api-for-dotnet/issues/detail?id=43

【讨论】:

    【解决方案2】:

    这段代码运行良好:

    Imports Newtonsoft.Json
    Imports Newtonsoft.Json.Linq
    Imports System
    Imports System.Net
    Imports System.Text
    Imports System.Web
    Public Class Form1
    
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MsgBox(gtranslate(TextBox1.Text, "it", "en"))'From italian to english, of course you can change it
    End Sub
    
    Public Shared Function gtranslate(ByVal inputtext As String, ByVal fromlangid As String, ByVal tolangid As String) As String
        inputtext = HttpUtility.HtmlAttributeEncode(inputtext)
        Dim step1 As New WebClient
        Dim step2 As String = step1.DownloadString("https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=" & tolangid & "&hl=" & fromlangid & "&dt=t&dt=bd&dj=1&source=icon&q=" & inputtext)
        Dim step3 As Newtonsoft.Json.Linq.JObject = JObject.Parse(step2)
        Dim step4 As String = step3.SelectToken("sentences[0]").SelectToken("trans").ToString()
        Return step4
    End Function
    End Class
    

    dll 库“Newtonsoft.JSON”可从their website 获得,如果您在“HttpUtility”中遇到一些错误,请在添加引用窗口中添加引用“System.Web” -> .net 选项卡

    【讨论】:

      【解决方案3】:

      修复编码和更新代码

      Public Shared Function gtranslate(ByVal inputtext As String, ByVal fromlangid As String, ByVal tolangid As String) As String
          inputtext = HttpUtility.HtmlAttributeEncode(inputtext)
          Dim step1 As New WebClient
          step1.Encoding = Encoding.UTF8
          Dim step2 As String = step1.DownloadString("https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=" & tolangid & "&hl=" & fromlangid & "&dt=t&dt=bd&dj=1&source=icon&q=" & inputtext)
          Dim step3 As Newtonsoft.Json.Linq.JObject = JObject.Parse(step2)
          Dim step4 As String = step3.SelectToken("sentences[0]").SelectToken("trans").ToString()
      
          Return step4
      
      
      End Function
      

      添加:step1.Encoding = Encoding.UTF8

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-08
        • 1970-01-01
        • 2011-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多