Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    318
    Innanzitutto a video dovresti vedere la pagina di Google, è così ??

    Una volta valorizzato il textarea "source" devi vedere come fare a simulare la pressione del tasto "traduci", vedi qualìè il suo ID e vedi se riesci a capire come fargli simulare il click

    Sergio

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    12
    Quote Originariamente inviata da SirJo Visualizza il messaggio
    Innanzitutto a video dovresti vedere la pagina di Google, è così ??

    Una volta valorizzato il textarea "source" devi vedere come fare a simulare la pressione del tasto "traduci", vedi qualìè il suo ID e vedi se riesci a capire come fargli simulare il click

    Sergio
    Si vedo la pagina di google

  3. #3
    ma perché non usi il traduttore bing che offre le sue api gratuitamente?? Google le ha messa a pagamento quindi invece di studiare le pagine html mi affiderei a bing. Fai una HttpWebRequest, ottieni un WebResponse, leggi lo stream ed ecco la traduzione. Segui questa spiegazione dell'API(verso il fondo c'è qualche dritta per usarla con le applicazioni .NET) https://www.microsoft.com/web/post/u...anslation-apis

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    12
    Quote Originariamente inviata da Jake7zDunn Visualizza il messaggio
    ma perché non usi il traduttore bing che offre le sue api gratuitamente?? Google le ha messa a pagamento quindi invece di studiare le pagine html mi affiderei a bing. Fai una HttpWebRequest, ottieni un WebResponse, leggi lo stream ed ecco la traduzione. Segui questa spiegazione dell'API(verso il fondo c'è qualche dritta per usarla con le applicazioni .NET) https://www.microsoft.com/web/post/u...anslation-apis
    Ti ringrazio... io ho intenzione di fare un "software" dove praticamente puoi scegliere di tradurre il testo sia con Bing Translate che con Google Translate. Per ora era mia intenzione usare Google, anche perchè è leggermente più complicato. Comunque ti ringrazio... spero puoi darmi una mano con Google

    Quote Originariamente inviata da SirJo Visualizza il messaggio
    Innanzitutto a video dovresti vedere la pagina di Google, è così ??

    Una volta valorizzato il textarea "source" devi vedere come fare a simulare la pressione del tasto "traduci", vedi qualìè il suo ID e vedi se riesci a capire come fargli simulare il click

    Sergio
    Allora io ho impostato la textbox 2(quella del campo cerca) con dentro:
    codice:
    WebBrowser1.Navigate("https://translate.google.it/?hl=it&tab=wT")
    WaitWB()
    WebBrowser1.Document.GetElementById("source").SetA ttribute("value", TextBox2.Text)
    Vedo il browser con la pagina di google. L'unico problema è che non so come andare avanti. Più che altro che non so cosa devo trovare. So che mi serve l'ID ma non riesco a trovarlo :\
    Ultima modifica di N2O3; 24-03-2014 a 20:03

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    318
    Se utilizzi Firefox e sopra il pulsante "traduci" fai click destro e "analizza elemento" vedrai che l'id del pulsante è "gt-submit".

    Ma a video vedi la pagina di google con il testo da tradurre correttamente scritto dentro la casella ??

  6. #6
    Ti ho scritto una semplice classe che puoi implementare nella tua applicazione

    GoogleAPI.vb
    codice:
    Imports System.NetImports System.IO
    Imports System.Windows.Forms
    Imports System.Text.RegularExpressions
    
    Public Class GoogleAPI
        Dim Text As String = Nothing
        Dim Lingua1 As String = Nothing
        Dim Lingua2 As String = Nothing
        Friend WithEvents wb As New WebBrowser
        Dim response As String = Nothing
        Public loading = True
    
        Sub New(ByVal text As String, ByVal lingua1 As String, ByVal lingua2 As String)
            Me.Text = text
            Me.Lingua1 = lingua1
            Me.Lingua2 = lingua2
            Try
                wb.ScriptErrorsSuppressed = true
                wb.Url = New Uri(getUrl)
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End Sub
    
        Public Sub translate(ByVal text As String, ByVal lingua1 As String, ByVal lingua2 As String)
            loading = True
            Me.Text = Text
            Me.Lingua1 = Lingua1
            Me.Lingua2 = Lingua2
            Try
                wb.ScriptErrorsSuppressed = True
                wb.Url = New Uri(getUrl)
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End Sub
    
        Private Sub DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles wb.DocumentCompleted
            Do
                Application.DoEvents()
                If wb.Document.DomDocument.body.outerhtml.contains("hps") Then
                    setResponse(wb.Document.GetElementById("result_box").OuterHtml)
                    loading = False
                    Exit Do
                End If
            Loop
        End Sub
    
        Private Sub setResponse(ByVal html As String)
            response = Regex.Replace(html, "<[^>]*>", "")
        End Sub
    
        Private Function getUrl() As String
            Return "http://translate.google.it/#" + Lingua1 + "/" + Lingua2 + "/" + Text
        End Function
    
        Public Function getResponse() As String
            Return response
        End Function
    End Class
    Quando vuoi usarla nel nella tua applicazione usa il codice:
    codice:
            Dim text As String = Nothing
            Dim GoogleTranslate As New GoogleAPI("testo da tradurre", "it", "en")
            Do While GoogleTranslate.loading = True
                Application.DoEvents()
                text = GoogleTranslate.getResponse
            Loop
    Sostituisci "testo da tradurre", "it" e "en" con quello che ti serve, "it" è la lingua iniziale, "en" quella finale(le puoi scambiare o cambiare con altre lingue)

    Ah dimenticavo il testo tradotto lo troverai nella variabile text e per tradurre un nuovo testo senza distruggere l'oggetto usa il codice

    codice:
            Dim text As String = Nothing
            Dim GoogleTranslate.translate("testo da tradurre", "it", "en")
            Do While GoogleTranslate.loading = True
                Application.DoEvents()
                text = GoogleTranslate.getResponse
            Loop

    Spero che tu capisca il codice anche se l'ho scritto di fretta e senza commentarlo... Buona fortuna!!
    Ultima modifica di Jake7zDunn; 24-03-2014 a 23:44

  7. #7

    Google Translate API

    Allora, ho aggiustato un po' il codice e l'ho commentato(penso abbastanza per capirlo), se non lo capite o trovate bug(non l'ho testato molto), postate pure. Ho introdotto anche il supporto per caratteri speciali e la traduzione di stringhe multilinea.

    Ho creato un'applicazione form con un button1 e una textbox1 multilinea, per provarlo basta creare gli oggetti prima citati nel form e poi copiare ed incollare i codici sorgenti scritti sotto nel proprio progetto

    form1.vb
    codice:
    Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            'inizializzo un oggetto GoogleTranslateAPI
            Dim Translate As New GoogleTranslateAPI("Testo da tradurre di prova.èé+*{}ò°@ù§" + vbCrLf + "Jake è il migliore", "it", "en") 'primo campo:testo da tradurre; secondo e terzo campo:lingua iniziale, lingua finale
            Do While Translate.loading = True 'Fino a quando la traduzione non è pronta il ciclo continua
                Application.DoEvents() 'l'applicazione non si blocca mentre aspetta la traduzione
                GoogleTranslateCompleted(Translate.getResponse())
            Loop
        End Sub
    
    
        ''' <summary>
        ''' Evento: Quando la traduzione è pronta viene richiamata questa subroutine dove si può
        ''' </summary>
        ''' <param name="traduzione"></param>
        ''' <remarks></remarks>
        Sub GoogleTranslateCompleted(ByVal traduzione As String)
            TextBox1.Text = traduzione
        End Sub
    End Class
    GoogleTranslateAPI.vb
    codice:
    ' Jake7zDunn [2014]
    ' GoogleTranslate.vb è una classe per applicazioni .NET che permette di usare il famoso servizio di Google
    ' per tradurre testi da una lingua all'altra.
    ' La classe è stata scritta a scopo unicamente informativo, Jake7zDunn non si assume nessuna responsabilità
    ' sull'uso che se ne farà.
    
    
    Imports System.Net.WebUtility          'Codifica URL caratteri speciali
    Imports System.Windows.Forms           'WebBrowser
    Imports System.Text.RegularExpressions 'Regex
    
    
    Public Class GoogleTranslateAPI
        Friend WithEvents wb As New WebBrowser 'Dichiaro un nuovo WebBrowser
        Private response As String = Nothing   'Dichiaro una stringa response in cui verrà depositata la traduzione
        Public loading = True                  'Serve come """evento""" per avere la possibilità di sapere se la traduzione è pronta
    
    
        ''' <summary>
        ''' Costruttore oggetto GoogleTranslate (Inizializza anche la richiesta per la traduzione)
        ''' </summary>
        ''' <param name="text">Testo da tradurre</param>
        ''' <param name="lingua1">Parametro per indicare la lingua iniziale</param>
        ''' <param name="lingua2">Parametro per indicare la lingua finale</param>
        ''' <remarks></remarks>
        Sub New(ByVal text As String, ByVal lingua1 As String, ByVal lingua2 As String)
            wb.ScriptErrorsSuppressed = True
            translate(text, lingua1, lingua2)
        End Sub
    
    
        ''' <summary>
        ''' Inizializza la richiesta http per ottenere la traduzione
        ''' </summary>
        ''' <param name="text">Testo da tradurre</param>
        ''' <param name="lingua1">Parametro per indicare la lingua iniziale</param>
        ''' <param name="lingua2">Parametro per indicare la lingua finale</param>
        ''' <remarks></remarks>
        Public Sub translate(ByVal text As String, ByVal lingua1 As String, ByVal lingua2 As String)
            loading = True
            Try
                wb.Navigate(getUrl(text, lingua1, lingua2))
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End Sub
    
    
        ''' <summary>
        ''' Evento: Pagina Google Translate finisce di caricare
        ''' </summary>
        ''' <param name="sender"></param>
        ''' <param name="e"></param>
        ''' <remarks></remarks>
        Private Sub DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles wb.DocumentCompleted
            Do 'Aspetta che il codice javascript processi la traduzione
                Application.DoEvents() 'intanto l'applicazione continua a funzionare
                If wb.Document.DomDocument.body.outerhtml.contains("class=""hps""") Then 'quando viene caricata la traduzione
                    setResponse(wb.Document.GetElementById("result_box").OuterHtml) 'ottiene la traduzione sotto forma di html che viene processata da setResponse
                    loading = False
                    Exit Do
                End If
            Loop
        End Sub
    
    
        ''' <summary>
        ''' Pulisce la traduzione dal codice html e la salva nella variabile globale response.
        ''' </summary>
        ''' <param name="html">Traduzione sotto forma di html</param>
        ''' <remarks></remarks>
        Private Sub setResponse(ByVal html As String)
            html = html.Replace(" <br>", vbCrLf) 'inserisce i caratteri di fine linea
            response = Regex.Replace(html, "<[^>]*>", "") 'pulisce la traduzione dal codice html tramite le espressioni regolari
        End Sub
    
    
        ''' <summary>
        ''' Ottiene il link da richiedere per ottenere la traduzione
        ''' </summary>
        ''' <param name="text">Testo da tradurre</param>
        ''' <param name="lingua1">Parametro per indicare la lingua iniziale</param>
        ''' <param name="lingua2">Parametro per indicare la lingua finale</param>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Private Function getUrl(ByVal text As String, lingua1 As String, ByVal lingua2 As String) As String
            MsgBox(encodeGoogleLink(text))
            Return "http://translate.google.it/#" + lingua1 + "/" + lingua2 + "/" + encodeGoogleLink(text)
        End Function
    
    
        ''' <summary>
        ''' Ottiene la traduzione :) :)
        ''' </summary>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Function getResponse() As String
            Return response
        End Function
    
    
        ''' <summary>
        ''' Sostituisce il carattere di ritorno a capo con il carattere esadecimale necessario nei link http
        ''' </summary>
        ''' <param name="text"></param>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Function encodeGoogleLink(ByVal text As String)
            Return UrlEncode(text).Replace("+", "%20").Replace("%0D%0A", "%0A") 'codifica il testo per i caratteri speciali
        End Function
    End Class
    Ultima modifica di Jake7zDunn; 26-03-2014 a 00:03

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.