ASP.NET рд╕реЗ Google рдЕрдиреБрд╡рд╛рдж рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛
If you want to run through this walkthrough, please follow the guide on setting up our test environment.
Experience Level - Intermediate
рдкрд░рд┐рдЪрдп
рдЬрдмрдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдЬрд╛рд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд▓рдЧрднрдЧ 500 рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рдЖрдкрдХреЛ рдмрдбрд╝реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддреЛ рдмрд╣реБрдд рдХрдо рд╣реЛрддрд╛ рд╣реИред
POST рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдк рдЗрд╕реЗ 5000 рд╡рд░реНрдгреЛрдВ рддрдХ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ Google API рдХреЛ рдПрдХ рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдФрд░ рдлрд┐рд░ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдХреЛрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ред
рдкрд╣рд▓рд╛ рдХрджрдо, рд╣рдореЗрдВ рдЕрдкрдиреЗ App_Code рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЗрд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрд┐рд▓реНрдб рдПрдХреНрд╢рди рдХреЛ рдХрдВрдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЙрдХрдереНрд░реВ рдХреЗ рд╕рд╛рде рдпрд╛рдж рд░рдЦреЗрдВред
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
рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рдЗрдирдкреБрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпреЗ рдЖрдкрдХреА рдХреБрдВрдЬреА, рднрд╛рд╖рд╛ рд╕реЗ, рднрд╛рд╖рд╛ рд╕реЗ рдФрд░ рд╡рд╣ рдкрд╛рда рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдлрд┐рд░ рд╣рдо рдЕрдиреБрд░реЛрдз рдкреНрд░рдХрд╛рд░, рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдПрдХ рдмрд╛рд░ рдпрд╣ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд░реВрдк рдореЗрдВ Google (ReqStr) рдХреЛ рднреЗрдЬрддреЗ рд╣реИрдВредрдЕрдм рд╣рдо Google рд╕реЗ рд▓реМрдЯреЗ JSON рдХреЛ рд╣реЛрд▓реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рдЯрд░реНрди рд╕реНрдЯреНрд░рд┐рдВрдЧ (ReturnStr) рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрд╕рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрдврд╝рддреЗ рд╣реИрдВред
рдЕрдЧрд▓рд╛ рдХрджрдо рдПрдХ JavaScriptSerializer рдмрдирд╛ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдмрд┐рдЯ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрд╕ рд╕рдордп рдореЗрд░реЗ рд╡рд┐рдХрд╛рд╕ рдХреМрд╢рд▓ рдХрд╛ рд╕рдмрд╕реЗ рдХрдордЬреЛрд░ рдХреНрд╖реЗрддреНрд░ рдерд╛ред рдпрд╣ рдЕрдВрддрд┐рдо рдЦрдВрдб рдЬреЛ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдкрд╛рда рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЦрдВрдб рдХреЛ рддрдм рддрдХ рдЦреАрдВрдЪрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╡рд╣ рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рд░рд┐рдЯрд░реНрди рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ Google рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рджреБрдирд┐рдпрд╛ рдХрд╛ рд╕рдмрд╕реЗ рд╡рд┐рд╕реНрддреГрдд рдХреЛрдб рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред
рдЙрджрд╛рд╣рд░рдг рджреВрд╕рд░реЗ рдХреЛ рдбреАрдЖрдИрд╡реА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдбрдмрд▓ рдбрд┐рдХреЛрдбрд┐рдВрдЧ (рд╕рдВрдкрд╛рджрдХ рдФрд░ Google рд╕реЗ) рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдФрд░ рдЗрд╕рдореЗрдВ рджреЛ рдЯреЗрдХреНрд╕реНрдЯ рдмреЙрдХреНрд╕ рд╣реИрдВ рдЬреЛ рднрд╛рд╖рд╛ рдХреЛ рдФрд░ рд╕реЗ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред