Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fonction pour traduire des texte via DeepL

1 réponse
Avatar
Emile63
Bonjour =C3=A0 tous,
J'ai trouv=C3=A9 sur Youtube la fonction de traduction (via Google translat=
e) mise =C3=A0 disposition par Dinesh Kumar Takyar, et qui est ce que je re=
cherchais. ;-)
Toutefois si c'=C3=A9tait possible je souhaiterais traduire avec DeepL (qui=
est plus pr=C3=A9cis dans le jargon de ma soci=C3=A9t=C3=A9) et vous deman=
de s'il est possible de modifier cette fonction pour qu'elle fonctionne ave=
c ce traducteur.
Je vous remercie d'avance pour votre aide.
Emile=20
---------------------------------------
Public Function Translate(strInput As String, strFromSourceLanguage As Stri=
ng, strToTargetLanguage As String) As String
Dim strURL As String
Dim objHTTP As Object
Dim objHTML As Object
Dim objDivs As Object, objDiv As Object
Dim strTranslated As String
' send query to web page via Google:
strURL =3D "https://translate.google.com/m?hl=3D" & strFromSourceLangua=
ge & _
"&sl=3D" & strFromSourceLanguage & _
"&tl=3D" & strToTargetLanguage & _
"&ie=3DUTF-8&prev=3D_m&q=3D" & strInput
'......................................................
' La m=C3=AAme chose via Deepl
'https://www.deepl.com/translator#fr/en/ceci%20est%20un%20test
'......................................................
Set objHTTP =3D CreateObject("MSXML2.ServerXMLHTTP") 'late binding
objHTTP.Open "GET", strURL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6=
.0; Windows NT 5.0)"
objHTTP.send ""

' create an html document
Set objHTML =3D CreateObject("htmlfile")
With objHTML
.Open
.Write objHTTP.responsetext
.Close
End With
=20
'Range("H1") =3D objHTTP.responsetext
Set objDivs =3D objHTML.getElementsByTagName("div")
For Each objDiv In objDivs
If objDiv.className =3D "t0" Then
strTranslated =3D objDiv.innerText
Translate =3D strTranslated
End If
Next objDiv
Set objHTML =3D Nothing
Set objHTTP =3D Nothing

End Function

1 réponse

Avatar
benoit
Emile63 wrote:
Bonjour à tous,
J'ai trouvé sur Youtube la fonction de traduction (via Google translate)
mise à disposition par Dinesh Kumar Takyar, et qui est ce que je
recherchais. ;-) Toutefois si c'était possible je souhaiterais traduire
avec DeepL (qui est plus précis dans le jargon de ma société) et vous
demande s'il est possible de modifier cette fonction pour qu'elle
fonctionne avec ce traducteur.
Je vous remercie d'avance pour votre aide.
Emile
---------------------------------------
Public Function Translate(strInput As String, strFromSourceLanguage As
String, strToTargetLanguage As String) As String
Dim strURL As String
Dim objHTTP As Object
Dim objHTML As Object
Dim objDivs As Object, objDiv As Object
Dim strTranslated As String
' send query to web page via Google:
strURL = "https://translate.google.com/m?hl=" & strFromSourceLanguage
& _ "&sl=" & strFromSourceLanguage & _ "&tl=" & strToTargetLanguage &
_ "&ie=UTF-8&prev=_m&q=" & strInput
'......................................................
' La même chose via Deepl
'https://www.deepl.com/translator#fr/en/ceci%20est%20un%20test
'......................................................
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") 'late binding
objHTTP.Open "GET", strURL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE
objHTTP.se6.0; Windows NT 5.0)" nd ""
' create an html document
Set objHTML = CreateObject("htmlfile")
With objHTML
.Open
.Write objHTTP.responsetext
.Close
End With
'Range("H1") = objHTTP.responsetext
Set objDivs = objHTML.getElementsByTagName("div")
For Each objDiv In objDivs
If objDiv.className = "t0" Then
strTranslated = objDiv.innerText
Translate = strTranslated
End If
Next objDiv
Set objHTML = Nothing
Set objHTTP = Nothing
End Function

Dans le code de la page j'ai trouvé :
<textarea class="lmt__textarea lmt__source_textarea
lmt__textarea_base_style" data-gramm_editor="false" autofocus=""
tabindex="110" dl-test="translator-source-input" lang="fr"
style="height: 521px;">
Contenu masqué (Agent utilisateur)
<div contenteditable="plaintext-only">ceci est un test</div>
</textarea>
Et un peu plus loin :
<textarea class="lmt__textarea lmt__target_textarea
lmt__textarea_base_style" data-gramm_editor="false" tabindex="110"
dl-test="translator-target-input" lang="en" style="height: 521px;">
Contenu masqué (Agent utilisateur)
<div contenteditable="plaintext-only">this is a test</div> = $0
</textarea>
Si tu enregistres la page html, les zones de texte sont vides. Il y a
donc beaucoup de js derrière. Pour éviter qu'on fasse gratuitement ce
que tu veux faire.
--
Vie : n.f. maladie mortelle sexuellement transmissible
Benoît chez leraillez.com