Appeler Google Translate à partir d'ASP.NET à l'aide de Post
introduction
L' API de Google Translate est bonne pour effectuer des traductions assez complexes, et même si elle n'est pas parfaite, elle fournira au moins à vos lecteurs une compréhension de base de ce que vous essayez de transmettre.
Bien que le document soit très utile pour expliquer ce qui se passe lorsque vous utilisez Java Script qui peut traduire environ 500 caractères, il y a très peu de temps lorsque vous devez traduire des documents plus importants.
Lorsque vous utilisez POST, vous pouvez augmenter cette valeur à 5000 caractères, donc nous avons développé notre propre code pour envoyer une demande de publication à l'API Google et ensuite recevoir la traduction.
D'abord le code, pour ceux qui veulent juste cela.
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
introduction
Et maintenant, pour une brève explication. La fonction nécessite quatre entrées, c'est votre clé, votre langue, votre langue et le texte que vous souhaitez traduire.
Ensuite, nous définissons le type de demande, le type de contenu et, surtout, ajoutons un en-tête pour remplacer la méthode get .
Une fois que cela est fait, nous envoyons ensuite les données en tant que flux vers Google (Wriream).Maintenant, nous déclarons une chaîne de retour (ReturnStr) pour retenir le JSON retourné de Google et lisez la chaîne de réponse dans celui-ci.
La prochaine étape consiste à créer un JavaScriptSerializer, ce bit était probablement le plus déroutant, car c'est le domaine le plus faible de mes compétences de développement. Ce que cette dernière section fait, c'est extraire chaque section du texte jusqu'à ce qu'il atteigne la zone que nous voulons, et définit notre texte de retour comme la valeur renvoyée par Google. Ce n'est peut-être pas le code le plus élaboré au monde, alors, si vous travaillez un moyen de le ranger, faites-le moi savoir.
Vous pourriez facilement mettre ce code dans une classe partagée et le réutiliser, mais il n'y avait qu'une section du site sur laquelle nous avions besoin, donc c'était intégré à la page.
L'exemple ci-dessous génère un éditeur de texte AJAX Toolkit avec le contenu d'un autre. Notez le décodage double (depuis l'éditeur et Google) et dispose de deux zones de texte indiquant la langue à destination et en provenance.
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