Web design and hosting, database, cloud and social media solutions that deliver business results
  • Geschäftslösungen
    • Robotische Prozessautomatisierung
    • Software
    • Datenbank-Beratungsdienste
      • Datawarehouse-Dienste
      • Datenintegration
      • PowerBI
      • Werkzeuge
    • Website Design
      • Weblokalisierung und -übersetzung
      • Website Sicherheit
    • Cloud Services
      • Microsoft Azure
    • Microsoft Office
    • Sozialen Medien
  • Akademie
    • Unsere Testumgebung
    • Datenbankdesign lernen
      • SQL Server 2008 Wartungsplan
      • Offene Abfrage abrufen
      • Verwenden von SQL Server Daten
      • Verwenden von SQL Server Datum
      • Verwenden von SQL Server Funktionen
      • Verwenden von SQL Server Pivot-Unpivot
    • Lern Web Design
      • ASP-NET
      • CSS
      • Verwendung von JavaScript
    • Lernen von IT-Diensten
      • Anfordern von SSL und Generierung von PFX-Datei in OpenSSL Simple Steps
  • Über
    • Bloggen
    • Karriere
    • Mannschaft
      • Adrian Ananda
      • Ali Al-Amine
      • Ayse Hur
      • Chester Copperpot
      • Gavin Clayton
      • Sai Gangu
      • Suneel Kumar
      • Surya Mukkamala
    • Mappe
čeština (CS)Deutsch (DE)English (EN-US)English (EN-GB)Español (ES)Français (FR)हिंदी (HI)italiano (IT)日本語 (JA)polski (PL)Português (PT)русский (RU)Türk (TR)中国的 (ZH)

Aufrufen von Google Translate von ASP.NET

Exemplarische Vorgehensweise: Aufrufen von Google Translate von ASP.NET mit POST für längere Dokumente aus Ihrem Code dahinter.

If you want to run through this walkthrough, please follow the guide on setting up our test environment.

Experience Level - Intermediate

Einführung

Die Google Translate-API eignet sich gut für ziemlich komplexe Übersetzungen, und obwohl sie nicht perfekt ist, vermittelt sie Ihren Lesern zumindest ein grundlegendes Verständnis dessen, was Sie zu vermitteln versuchen.

Während das Dokument sehr gut erklärt, was passiert, wenn Sie Java Script verwenden, das etwa 500 Zeichen übersetzen kann, gibt es sehr wenig, wenn Sie größere Dokumente übersetzen müssen.

Wenn Sie POST verwenden, können Sie dies auf 5000 Zeichen erhöhen, daher haben wir unseren eigenen Code entwickelt, um eine Post-Anfrage an die Google-API zu senden und dann die Übersetzung zu erhalten.

Im ersten Schritt müssen wir unserem App_Code-Ordner eine Klasse hinzufügen und sie Translate nennen. Denken Sie bei der exemplarischen Vorgehensweise daran, die Build-Aktion auf Compile zu setzen.

Dokumentation anzeigen: Zeigen Sie den Google Translate API-Code an

VB

Imports System.IOImports System.NetImports System.Web.Script.SerializationPublic Class Translate    Shared Function GetTranslation(ByVal key As String, ByVal source As String, ByVal target As String, ByVal Text As String) As String        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12        Dim TranslatedString As String = ""        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 ReqStr As Stream = Req.GetRequestStream()            Dim encoding As New UTF8Encoding()            Dim bytes As Byte() = encoding.GetBytes(Text)            ReqStr.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 FunctionEnd Class

Add a page

Within the Pages Section, Add a new page called GoogleTranslate, and then the HTML and code below.

HTML

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <title></title>    <script>        function UpdateHiddenField(el, id) {            nextElSibling(el).value = el.innerHTML;        }        function nextElSibling(el) {            if (el.nextSibling)                do { el = el.nextSibling } while (el && el.nodeType !== 1);            return el;        }    </script></head><body>    <form id="form1" runat="server">        <div style="max-width:1000px;margin:auto;">              <div style="clear:both;">                <asp:Label ID="KeyLabel" runat="server" AssociatedControlID="LgTo" Text="API Key"></asp:Label>                <asp:TextBox ID="KeyValue" runat="server"></asp:TextBox>            </div>            <div style="float:left;width:50%;background-color:#ddd;">                <div>                <asp:Label ID="LgFromLabel" runat="server" AssociatedControlID="LgFrom" Text="From"></asp:Label>                <asp:DropDownList runat="server" ID="LgFrom">                    <asp:ListItem Text="English" Value="en"></asp:ListItem>                    <asp:ListItem Text="Français" Value="fr"></asp:ListItem>                    <asp:ListItem Text="Deutsch" Value="de"></asp:ListItem>                </asp:DropDownList>                </div>                <div style="min-height:400px;border:1px solid #ccc;" contenteditable="true" onkeyup="UpdateHiddenField(this)" id="ContentTextInput" runat="server"></div>                <asp:HiddenField ID="ContentText" runat="server"/>            </div>            <div style="float:left;width:50%;background-color:#ccc;">                <div>                <asp:Label ID="LgToLabel" runat="server" AssociatedControlID="LgTo" Text="To"></asp:Label>                <asp:DropDownList runat="server" ID="LgTo">                    <asp:ListItem Text="English" Value="en"></asp:ListItem>                    <asp:ListItem Text="Français" Value="fr"></asp:ListItem>                    <asp:ListItem Text="Deutsch" Value="de" Selected="True"></asp:ListItem>                </asp:DropDownList>                </div>                <div style="min-height:400px;border:1px solid #bbb;" runat="server" id="ContentTrans"></div>            </div>             <div style="clear:both;text-align:center;">                <asp:Button runat="server" ID="Translation" Text="Translate"/>            </div>        </div>    </form></body></html>

VB

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load    End Sub    Protected Sub GetTranslation_Click(sender As Object, e As EventArgs) Handles Translation.Click        Dim Key As String = "Your Key"        Dim source As String = LgTo.SelectedItem.Text.ToString        Dim target As String = LgFrom.SelectedItem.Text.ToString        Dim PageText As String = HttpUtility.HtmlDecode(ContentText.InnerHtml)        Try            ContentTrans.InnerHtml = HttpUtility.HtmlDecode(Translate.GetTranslation(Key, source, target, PageText))        Catch        End Try    End Sub

Was es macht

Die Funktion erfordert vier Eingaben, dies sind Ihr Schlüssel, Sprache von, Sprache bis und der Text, den Sie übersetzen möchten.

Wir deklarieren dann eine Rückgabezeichenfolge, erstellen eine Anforderungs-URL-Zeichenfolge, die schnell in eine neue Webanforderung (Req) geparst wird.

Dann legen wir den Anforderungstyp und den Inhaltstyp fest und fügen vor allem einen Header hinzu, um die get-Methode zu überschreiben .

Anschließend senden wir die Daten als Stream an Google (ReqStr).

Jetzt deklarieren wir einen Rückgabe-String (ReturnStr), um den zurückgegebenen JSON von Google zu enthalten, und lesen den Antwort-String hinein.

Der nächste Schritt ist das Erstellen eines JavaScriptSerializers, dieser Teil war wahrscheinlich der verwirrendste, da dies zu dieser Zeit der schwächste Bereich meiner Entwicklungsfähigkeiten war. Dieser letzte Abschnitt zieht jeden Textabschnitt heraus, bis er den gewünschten Bereich erreicht, und legt unseren Rückgabetext als den von Google zurückgegebenen Wert fest. Dies ist vielleicht nicht der aufwändigste Code der Welt, also lassen Sie es mich wissen, wenn Sie einen Weg finden, ihn aufzuräumen.

Das Beispiel füllt DIV-Inhalte ineinander. Bitte beachten Sie die doppelte Dekodierung (vom Editor und Google) und hat zwei Textfelder, die die Sprache von und nach angeben.

Autor

Helpful?

Please note, this commenting system is still in final testing.
Copyright Claytabase Ltd 2020

Registered in England and Wales 08985867

RSSLoginLink Cookie-RichtlinieSeitenverzeichnis

Social Media

facebook.com/Claytabaseinstagram.com/claytabase/twitter.com/Claytabaselinkedin.com/company/claytabase-ltd

Get in Touch

+442392064871info@claytabase.comClaytabase Ltd, Unit 3d, Rink Road Industrial Estate, PO33 2LT, United Kingdom
Die Einstellungen auf dieser Seite sind so eingestellt, dass alle Cookies zulässig sind. Diese können auf unserer Cookie Policy & Settings Seite geändert werden. Wenn Sie diese Seite weiter nutzen, stimmen Sie der Verwendung von Cookies zu.
Ousia Logo
Logout
Ousia CMS Loader