Вызов Google Translate из ASP.NET с помощью сообщений
Введение
API Google Translate хорош для выполнения довольно сложных переводов, и, хотя он не идеален, он, по крайней мере, даст вашим читателям базовое представление о том, что вы пытаетесь передать.
Хотя в документе очень хорошо объясняется, что происходит, когда вы используете Java Script, который может переводить около 500 символов, очень мало того, когда вам нужно переводить большие документы.
При использовании POST вы можете увеличить это до 5000 символов, поэтому мы разработали собственный код для отправки почтового запроса в API Google, а затем получите перевод.
Сначала код, для тех, кто просто этого хочет.
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
Введение
И теперь для краткого объяснения. Функция требует четырех входов, это ваш ключ, язык, язык и текст, который вы хотите перевести.
Затем мы устанавливаем тип запроса, тип содержимого и, самое главное, добавляем заголовок для переопределения метода get .
Как только это будет сделано, мы отправим данные в виде потока в Google (wriream).Теперь мы объявляем возвращаемую строку (ReturnStr) для хранения возвращаемого JSON из Google и считываем в нее строку ответов.
Следующий шаг - создание JavaScriptSerializer, этот бит, вероятно, был самым запутанным, так как это самая слабая область моих навыков разработки. То, что делает этот последний раздел, - это вытащить каждую часть текста до тех пор, пока он не попадет в область, которую мы хотим, и устанавливает наш возвращаемый текст как значение, возвращаемое Google. Это может быть не самый сложный код в мире, поэтому, если вы выработаете способ убрать его, то дайте мне знать.
Вы могли бы легко поместить этот код в общий класс и повторно использовать его, однако на нем был только один раздел сайта, поэтому он был встроен в страницу.
В приведенном ниже примере заполняется один текстовый редактор AJAX Toolkit с содержимым из другого. Обратите внимание на двойное декодирование (из редактора и Google) и два текстовых поля, обозначающих язык и из.
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