ASP.NET'ten Google Çeviri'yi Çağırma
If you want to run through this walkthrough, please follow the guide on setting up our test environment.
Experience Level - Intermediate
giriiş
Belge, yaklaşık 500 karakter çevirebilen Java Script kullandığınızda neler olduğunu açıklamakta çok iyi olsa da, daha büyük belgeleri çevirmeniz gerektiğinde çok az şey vardır.
POST kullanırken bunu 5000 karaktere yükseltebilirsiniz, bu nedenle Google API'sine bir gönderi isteği göndermek ve ardından çeviriyi almak için kendi kodumuzu geliştirdik.
İlk adım, App_Code klasörümüze bir sınıf eklememiz ve onu Translate olarak adlandırmamız gerekiyor, İnşa Eylemini Derlemek için ayarlamayı unutmayın.
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
Bu ne yapar
İşlev dört giriş gerektirir, bunlar sizin anahtarınız, başlangıç diliniz, gideceğiniz dil ve çevirmek istediğiniz metindir.
Ardından istek türünü, içerik türünü belirleriz ve en önemlisi get yöntemini geçersiz kılmak için bir başlık ekleriz.
Bu yapıldıktan sonra verileri akış olarak Google'a göndeririz (ReqStr).Şimdi, Google'dan döndürülen JSON'u tutmak için bir dönüş dizesi (ReturnStr) bildiriyoruz ve yanıt dizesini buna okuyoruz.
Sonraki adım bir JavaScriptSerializer oluşturmaktır, bu kısım muhtemelen en kafa karıştırıcı olan kısımdı, çünkü bu o sırada geliştirme becerilerimin en zayıf alanıydı. Bu son bölümün yaptığı, metnin her bölümünü istediğimiz alana gelene kadar çekip çıkarmak ve dönüş metnimizi Google tarafından döndürülen değer olarak ayarlamaktır. Bu, dünyadaki en ayrıntılı kod olmayabilir, bu yüzden onu düzenlemenin bir yolunu bulursanız bana bildirin.
Örnek, DIV içeriğini diğerine yerleştirir. Lütfen çift kod çözmeye (düzenleyiciden ve Google'dan) dikkat edin ve gelen ve giden dili gösteren iki metin kutusu vardır.