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 से) पर ध्यान दें, और इसमें दो टेक्स्ट बॉक्स हैं जो भाषा को और से दर्शाते हैं।