Volání Google Translate From ASP.NET pomocí Post
Úvod
Aplikace Google Translate API je dobrá pro provádění poměrně složitých překladů, a přestože to není dokonalé, přinejmenším poskytne čtenářům základní přehled o tom, co se snažíte vyslovit.
Zatímco dokument je velmi dobrý v vysvětlení toho, co se stane, když používáte Java Script, který může přeložit asi 500 znaků, je velmi málo, když potřebujete překládat větší dokumenty.
Při použití POST můžete toto číslo zvýšit na 5000 znaků, proto jsme vyvinuli vlastní kód, který nám pošle požadavek na zasílání pošty do rozhraní Google API a poté obdrží překlad.
Nejprve kód, pro ty, kteří to prostě chtějí.
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
Úvod
A teď pro stručné vysvětlení. Funkce vyžaduje čtyři vstupy, to je klíč, jazyk, jazyk a text, který chcete přeložit.
Poté nastavíme typ požadavku, typ obsahu a nejdůležitější je přidat záhlaví, aby se předešlo metodě get .
Jakmile to bude hotovo, pošleme údaje jako proud do Googlu (wriream).Nyní deklarujeme návratový řetězec (ReturnStr), který zadá vrácenou JSON od Googlu a čte do něj řetězec odpovědí.
Dalším krokem je vytvoření JavaScriptSerializeru, tento bit byl pravděpodobně nejvíce matoucí, neboť toto je nejslabší oblast svých rozvojových dovedností. Co dělá tato poslední část, je vytáhnout každou část textu, dokud se nedostane do oblasti, kterou chceme, a nastaví náš návratový text jako hodnotu vrácenou společností Google. Možná nejde o nejpodrobnější kód na světě, takže pokud vyřešíte způsob, jak to vyřídit, dejte mi vědět.
Tento kód můžete docela snadno umístit do sdílené třídy a znovu ji použít, nicméně tam byla jen jedna část webu, o které jsme to potřebovali, a tak byl zabudován do stránky.
Níže uvedený příklad obsahuje jeden textový editor AJAX Toolkit s obsahem z jiného. Vezměte prosím na vědomí dvojité dekódování (z editoru a Google) a má dvě textová pole označující jazyk do az.
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