Wywoływanie Google Translate z ASP.NET przy użyciu Poczty
Wprowadzenie
Google Translate API jest dobry do wykonywania dosyć złożonych tłumaczeń, a chociaż nie jest doskonałe, przynajmniej daje to czytelnikom podstawowe zrozumienie tego, co próbujesz przekazać.
Choć dokument jest bardzo dobry w wyjaśnianiu tego, co się dzieje, gdy używasz skryptu języka Java, który może przetłumaczyć około 500 znaków, bardzo mało jest, gdy trzeba tłumaczyć większe dokumenty.
Używając POST możesz zwiększyć to 5000 znaków, więc opracowaliśmy własny kod, aby wysłać żądanie wysłania do interfejsu API Google, a następnie otrzymać tłumaczenie.
Najpierw kod, dla tych, którzy po prostu chcą tego.
VB
Text = "q=" + Text
Dim TranslateRequest As New Uri(String.Format("https://www.googleapis.com/language/translate/v2?key={0}&source={1}&target={2}&format=html", key, source, target))
Dim Req As WebRequest = WebRequest.Create(TranslateRequest)
Req.Method = "POST"
Req.Headers.Add("X-https-Method-Override", "GET")
Req.ContentType = "application/x-www-form-urlencoded"
Using wriream As Stream = Req.GetRequestStream()
Dim encoding As New UTF8Encoding()
Dim bytes As Byte() = encoding.GetBytes(Text)
wriream.Write(bytes, 0, bytes.Length)
End Using
Dim ReturnStr As String
Using sr = New StreamReader(Req.GetResponse.GetResponseStream)
ReturnStr = sr.ReadToEnd()
End Using
Dim Reader As New JavaScriptSerializer
Dim TranslateJSON As Dictionary(Of String, Object) = Reader.DeserializeObject(ReturnStr)
Dim TranslateData As Dictionary(Of String, Object)
If TranslateJSON.ContainsKey("data") Then
TranslateData = TranslateJSON("data")
If TranslateData.ContainsKey("translations") Then
For Each pair In TranslateData.Item("translations")(0)
TranslatedString = pair.Value.ToString()
Next
End If
End If
Return TranslatedString
End Function
Wprowadzenie
A teraz krótkie wyjaśnienie. Funkcja wymaga czterech wejść, jest to klucz, język, język i tekst, który chcesz przetłumaczyć.
Następnie ustawiamy typ zapytania, typ zawartości, a co najważniejsze dodaj nagłówek, aby zastąpić metodę pobierania .
Gdy to zrobimy, wyślemy dane jako strumień do Google (wriream).Teraz zadeklarujemy ciąg zwracający (ReturnStr), aby zatrzymać zwracany JSON z Google i przeczytać go w odpowiedzi.
Następnym krokiem jest utworzenie JavaScriptSerializer, to chyba najbardziej mylące, ponieważ jest to najsłabszy obszar moich umiejętności programistycznych. Co to ostatnia sekcja wyciąga każdą sekcję tekstu, dopóki nie dotrzesz do żądanego obszaru i ustawia nasz tekst powrotu jako wartość zwracaną przez Google. To nie może być najbardziej rozbudowany kod na świecie, więc jeśli wypracujesz sposób na porządkowanie go, daj mi znać.
Możesz łatwo umieścić ten kod w udostępnionej klasie i ponownie go używać, jednakże była tylko jedna sekcja witryny, na którą potrzebowaliśmy tego, więc została ona wbudowana w stronę.
Poniższy przykład przedstawia jeden edytor tekstowy AJAX Toolkit z zawartością innego. Proszę zwrócić uwagę na podwójne dekodowanie (z edytora i Google) i zawiera dwa pola tekstowe oznaczające język zi do.
VB
Dim key As String = "Your Key"
Dim source As String = LanguageBase.SelectedItem.Text.ToString
Dim target As String = LanguageTrans.SelectedItem.Text.ToString
Dim PageText As String = httpsUtility.HtmlDecode(ContentText.Content)
Try
ContentTextTran.Content = httpsUtility.HtmlDecode(GetTranslation(key, source, target, PageText))
Str.Text = "Translated"
Catch
Str.Text = key + "," + source + "," + target + ""
End Try
End Sub