Soyez le premier à donner votre avis sur cette source.
Vue 5 781 fois - Téléchargée 565 fois
''' ----------------------------------------------------------------------------- ''' <summary> ''' Parse le résultat d'une requête WordReference, afin d'extraire uniquement ''' les traductions. ''' </summary> ''' <param name="theData">String</param> ''' <returns>True : le parsing est Ok</returns> ''' <remarks> ''' La fonction utilise des expressions régulières .NET : pour plus de détails ''' voir http://msdn.microsoft.com/fr-fr/library/az24scfc(v=vs.100).aspx ''' </remarks> ''' ----------------------------------------------------------------------------- Private Function ParseJSON(ByVal theData As String) As Boolean ParseJSON = False Try ' Vérification If Len(theData) <= 0 Then Exit Function ' Allocation si nécessaire If TranslatedTerms Is Nothing Then TranslatedTerms = New List(Of String) Call TranslatedTerms.Clear() ' Découpage du résultat dans un tableau Dim theLines() As String = theData.Split(CChar(vbCr)) ' Recherche d'une ligne de résultat sur la traduction Dim theRegex1 As New Regex("""[a-zA-Z]+Translation""", RegexOptions.Compiled Or RegexOptions.IgnoreCase) Dim theRegex2 As New Regex("""term"" : ""([\w\s,]+)\b""", RegexOptions.Compiled Or RegexOptions.IgnoreCase) ' Boucle sur toutes les lignes conservées dans le tableau For Each aLine As String In theLines If theRegex1.IsMatch(aLine) = True And theRegex2.IsMatch(aLine) = True Then ' Recherche validée : conservation du ou des termes dans une liste ' avec supression des informations liées à la capture Call TranslatedTerms.Add(theRegex2.Match(aLine).Value.Replace("""term"" : """, "").Replace("""", "")) End If Next ' Libération theRegex1 = Nothing : theRegex2 = Nothing ' Valide au moins un résultat If TranslatedTerms.Count > 0 Then Return True Catch Err As Exception Call addError("parsing text operation failed: " & Len(theData) & vbCrLf & Err.Message) End Try End Function ''' ----------------------------------------------------------------------------- ''' <summary> ''' Ouvre une Url sur le service en ligne WordReference, pour la traduction ''' d'un terme (ou une phrase) à partir d'une langue source et d'une de ''' traduction. ''' </summary> ''' <param name="theTerm">String</param> ''' <param name="fromLang">Code Langue source</param> ''' <param name="toLang">Code Langue de traduction</param> ''' <param name="WRkey">Clef d'accès WordReference</param> ''' <param name="WRversion">version WordReference utlisé</param> ''' <returns>Boolean</returns> ''' <remarks> ''' WordReference.com n'est pas un outil de traduction pour des textes, il est ''' préférable de l'utiliser pour la traduction de mot, expression ou couble de ''' termes (ex: au revoir) ''' </remarks> ''' ----------------------------------------------------------------------------- Public Function LaunchTranslation(ByVal theTerm As String, Optional ByVal fromLang As String = "fr", Optional ByVal toLang As String = "en", Optional ByVal WRkey As String = vbNullString, Optional ByVal WRversion As String = WordReferenceVersion, Optional ByVal WRurl As String = WordReferenceUrl) As Boolean LaunchTranslation = False Try ' Création de la requête Dim uri As String = "http://" & WRurl & "/" & WRversion & "/" & WRkey & "/json/" & fromLang & toLang & "/" & theTerm _currentURL = "http://" & WRurl & "/" & WRversion & "/" & "#KEY#" & "/json/" & fromLang & toLang & "/" & theTerm ' Appel Web... Dim request As HttpWebRequest = CType(WebRequest.Create(uri), HttpWebRequest) ' Récuparation du résulat Dim response As WebResponse = request.GetResponse ' Traitement de la réponse.. Dim sr As New StreamReader(response.GetResponseStream) If sr IsNot Nothing Then LaunchTranslation = ParseJSON(sr.ReadToEnd) ' Libération sr = Nothing Call response.Close() Catch Err As Exception Call addError("getting WordReference translation operation failed." & vbCrLf & Err.Message) End Try End Function
13 nov. 2012 à 20:09
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.