none
Utilisation de Azure Cognitive Services account ( Translator Text API) RRS feed

  • Question

  • Bonjour,

    J'aimerais avoir de l'aide ou un exemple en VB.Net pour pouvoir utiliser Azure Cognitive Services account ( Translator Text API). 

    Voici ce que je veux faire de base : dans un textbox j'ai un text en anglais et sur le clic d'un bouton je veux traduire ce texte en français dans un 2e textbox.

    Si vous êtes des pro et que cela vous tente de m'écrire quelques ligne de code pour la connexion au service Azure Cognitive Services account ( Translator Text API) ainsi que de m'expliquer le fonctionnement j'en serais très heureux!

    Merci!

    mardi 6 décembre 2016 14:11

Réponses

  • Bonjour Patrick,

    Est-ce que vous développez une application Windows Forms ou Windows Presentation Foundation ? Pour vous inscrire dans le but d’accèder gratuitement à l’API Translator Text, je vous propose de suivre cet article :
    Getting Started With Microsoft Azure Cognitive Services - Translator Text API

    En ce qui concerne le code, je vous propose de tester un exemple que j’ai trouvé et converti de C# en Visual Basic :

    Imports System.Net.Http
    
      ' Obtenir un jeton d’accès de manière asynchrone
      ' Le paremètre subscriptionKey contient la clé nécessaire pour l’authentication. Cf. le Resource Manager du premier lien pour plus de précisions en ce qui concerne les clés.
      ' La valeur de retour, c’est le jeton d’accès.
    
    Private Async Function GetAccessTokenAsync(subscriptionKey As String) As Task(Of String)
     Using client = New HttpClient()
      Using request = New HttpRequestMessage()
       request.Method = HttpMethod.Post
       request.RequestUri = New Uri("https://api.cognitive.microsoft.com/sts/v1.0/issueToken")
       request.Content = New StringContent(String.Empty)
       request.Headers.TryAddWithoutValidation("Ocp-Apim-Subscription-Key", subscriptionKey)
       Using response = Await client.SendAsync(request)
        response.EnsureSuccessStatusCode()
        Dim token = Await response.Content.ReadAsStringAsync()
        Trace.WriteLine("token=" & token)
        Return token
       End Using
      End Using
     End Using
    End Function
    
    
      ' Traduire le texte
      ' Le paramètre token est nécessaire pour l’API.
      ' fromLang : langue d’origine ; toLang : langue cible
    
    Private Async Function TranslateText(token As String, text As String, fromLang As String, toLang As String) As Task(Of String)
     Using client = New HttpClient()
      Using request = New HttpRequestMessage()
       Dim escapeText = Uri.EscapeDataString(text)
       Trace.WriteLine("escapeText=" & escapeText)
    
       Dim uriStr = "http://api.microsofttranslator.com/V2/Http.svc/Translate?" + "text=" & escapeText & "&from=" & fromLang & "&to=" & toLang
    
       request.Method = HttpMethod.Get
       request.RequestUri = New Uri(uriStr)
       request.Headers.Authorization = New AuthenticationHeaderValue("Bearer", token)
       Using response = Await client.SendAsync(request)
        response.EnsureSuccessStatusCode()
        Dim resultText = Await response.Content.ReadAsStringAsync()
    
        ' On utilise XDocument parce que le format ressemble à <string>XXXXXX</string>
        Dim xdoc As XDocument = XDocument.Parse(resultText)
    
        Trace.WriteLine("xdoc=" & xdoc.ToString())
    
        ' Pour le but de la vérification au cas où les séquences d’échappement XML ne seront pas converties 
    
    correctement
        Return xdoc.Descendants().First().Value
       End Using
      End Using
     End Using
    End Function
    
    Private Async Sub button_Click(sender As Object, e As EventArgs)
        ' Insérez ici le KEY1 qui est nécessaire pour l’authentification
     Dim subscriptionKey As String = "XXXXXXXXX"
    
        ' On obtient le jeton d’accès. Le temps valide est d’environ dix minutes.
     Dim token = Await GetAccessTokenAsync(subscriptionKey)
    
        ' Affichez le texte traduit.
     textBoxOutput.Text = Await TranslateText(token, textBoxInput.Text, textBoxLangFrom.Text, textBoxLangTo.Text)
    End Sub

    Source: Traduire un texte en utilisant l’API Translator Text via un programme (en japonais)

    Si vous développez un projet WPF, vous trouverez l’extrait de code XAML dans la source ci-dessus. Dans ce cas, déclarez button_Click comme :

    Private Async Sub button_Click(sender As Object, e As RoutedEventArgs)
           '...
    End Sub

    Cordialement,
    Dimitar

    mercredi 7 décembre 2016 14:07
    Modérateur

Toutes les réponses

  • Bonjour Patrick,

    Est-ce que vous développez une application Windows Forms ou Windows Presentation Foundation ? Pour vous inscrire dans le but d’accèder gratuitement à l’API Translator Text, je vous propose de suivre cet article :
    Getting Started With Microsoft Azure Cognitive Services - Translator Text API

    En ce qui concerne le code, je vous propose de tester un exemple que j’ai trouvé et converti de C# en Visual Basic :

    Imports System.Net.Http
    
      ' Obtenir un jeton d’accès de manière asynchrone
      ' Le paremètre subscriptionKey contient la clé nécessaire pour l’authentication. Cf. le Resource Manager du premier lien pour plus de précisions en ce qui concerne les clés.
      ' La valeur de retour, c’est le jeton d’accès.
    
    Private Async Function GetAccessTokenAsync(subscriptionKey As String) As Task(Of String)
     Using client = New HttpClient()
      Using request = New HttpRequestMessage()
       request.Method = HttpMethod.Post
       request.RequestUri = New Uri("https://api.cognitive.microsoft.com/sts/v1.0/issueToken")
       request.Content = New StringContent(String.Empty)
       request.Headers.TryAddWithoutValidation("Ocp-Apim-Subscription-Key", subscriptionKey)
       Using response = Await client.SendAsync(request)
        response.EnsureSuccessStatusCode()
        Dim token = Await response.Content.ReadAsStringAsync()
        Trace.WriteLine("token=" & token)
        Return token
       End Using
      End Using
     End Using
    End Function
    
    
      ' Traduire le texte
      ' Le paramètre token est nécessaire pour l’API.
      ' fromLang : langue d’origine ; toLang : langue cible
    
    Private Async Function TranslateText(token As String, text As String, fromLang As String, toLang As String) As Task(Of String)
     Using client = New HttpClient()
      Using request = New HttpRequestMessage()
       Dim escapeText = Uri.EscapeDataString(text)
       Trace.WriteLine("escapeText=" & escapeText)
    
       Dim uriStr = "http://api.microsofttranslator.com/V2/Http.svc/Translate?" + "text=" & escapeText & "&from=" & fromLang & "&to=" & toLang
    
       request.Method = HttpMethod.Get
       request.RequestUri = New Uri(uriStr)
       request.Headers.Authorization = New AuthenticationHeaderValue("Bearer", token)
       Using response = Await client.SendAsync(request)
        response.EnsureSuccessStatusCode()
        Dim resultText = Await response.Content.ReadAsStringAsync()
    
        ' On utilise XDocument parce que le format ressemble à <string>XXXXXX</string>
        Dim xdoc As XDocument = XDocument.Parse(resultText)
    
        Trace.WriteLine("xdoc=" & xdoc.ToString())
    
        ' Pour le but de la vérification au cas où les séquences d’échappement XML ne seront pas converties 
    
    correctement
        Return xdoc.Descendants().First().Value
       End Using
      End Using
     End Using
    End Function
    
    Private Async Sub button_Click(sender As Object, e As EventArgs)
        ' Insérez ici le KEY1 qui est nécessaire pour l’authentification
     Dim subscriptionKey As String = "XXXXXXXXX"
    
        ' On obtient le jeton d’accès. Le temps valide est d’environ dix minutes.
     Dim token = Await GetAccessTokenAsync(subscriptionKey)
    
        ' Affichez le texte traduit.
     textBoxOutput.Text = Await TranslateText(token, textBoxInput.Text, textBoxLangFrom.Text, textBoxLangTo.Text)
    End Sub

    Source: Traduire un texte en utilisant l’API Translator Text via un programme (en japonais)

    Si vous développez un projet WPF, vous trouverez l’extrait de code XAML dans la source ci-dessus. Dans ce cas, déclarez button_Click comme :

    Private Async Sub button_Click(sender As Object, e As RoutedEventArgs)
           '...
    End Sub

    Cordialement,
    Dimitar

    mercredi 7 décembre 2016 14:07
    Modérateur
  • bonsoir 

    a titre d'information tu peut aller voir sur > https://azure.microsoft.com/fr-fr/services/cognitive-services/

    mais je pense que Dimitar Denkov a déjà très bien répondu a ta question :) 

    mercredi 7 décembre 2016 18:07
  • Merci Beaucoup cela fonctio0nne à merveille sauf petite erreur dans le code

    remplacer le :

    Dim uriStr = "http://api.microsofttranslator.com/V2/Http.svc/Translate?" + "text=" & "escapeText" & "&from=" & fromLang & "&to=" & toLang

    par

    Dim uriStr = "http://api.microsofttranslator.com/V2/Http.svc/Translate?" + "text=" & escapeText & "&from=" & fromLang & "&to=" & toLang

    vendredi 9 décembre 2016 12:46
  • Bonjour Patrick,

    Merci de m’avoir prévenu. Je viens de corriger l’erreur. Si l’exemple de code vous a aidé à résoudre votre problème, vous pouvez marquer la contribution comme réponse. De la sorte, la contribution contenant la résolution sera soulignée et facile à trouver pour les lecteurs futurs qui ont le même objectif.

    Cordialement,
    Dimitar

    vendredi 9 décembre 2016 15:11
    Modérateur