PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → traduire les codes uft 8 d'une requête Api
traduire les codes uft 8 d'une requête Api
Débuté par Michel FOURNIER, 29 oct. 2025 07:07 - 5 réponses
Membre enregistré
1 message
Posté le 29 octobre 2025 - 07:07
Bonjour, j'ai fait un logiciel qui aide à l'apprentissage du vocabulaire.
j'envoie une requête api sur le site mymemory; par exmple :
https://api.mymemory.translated.net/get…=" + "the tree is hidden in the forest" + "&langpair=en|fr

je reçois en réponse (extrait) :
{"responseData":{"translatedText":"\" \"l'arbre est cach\u00e9 dans la for\u00eat\"

Comment obtenir la traduction définitive et dès réception (suppression des codes pour le "é" de "caché" et pour le "ê" de "forêt"
"l'arbre et caché dans la forêt" sans passer par le laborieux système de conversion code par code.

Voici mon code:

sUrl est une chaîne
sReponse est une chaîne UNICODE=SAI_Texte_anglais
sUrl = "https://api.mymemory.translated.net/get…=" + SAI_Texte_anglais + "&langpair=en|fr"

// Envoyer la requête (GET par défaut)
HTTPRequête(sUrl)

sReponse= UTF8ToString(HTTPDonneRésultat(), charsetAnsi)

//UTF8VersChaîne(sTexteTraduit, alphabetCourant)
SAI_Texte_natal = ExtraitChaîne(sReponse,6,"""",DepuisDébut)


merci de votre retour,
Bonne programmation
Michel
Membre enregistré
496 messages
Posté le 29 octobre 2025 - 09:44
Bonjour,

La solution à votre problème est de ne pas passer par une chaîne puis un ExtraitChaîne() très peu adapté pour le futur, mais par le type JSON ou les fonctions JSONVersVariant qui font cette conversion directement pour vous.

jRéponse est un JSON = HTTPDonneRésultat()
SAI_Texte_natal = jRéponse.responseData.translatedText

// ou (au cas où le type JSON ne soit pas disponible)
vRéponse est un Variant = JSONVersVariant(HTTPDonneRésultat())
SAI_Texte_natal = vRéponse.responseData.translatedText


Enfin, il serait idéal de remplacer l'usage de HTTPRequête() et HTTPDonneRésultat() par les types httpRequête et httpRéponse, avec la fonction Envoie() qui va avec. Le résultat se récupère en inspectant la propriété ..Contenu de la variable httpRéponse.
Posté le 29 octobre 2025 - 12:59
bchanudet a écrit :
Bonjour,

La solution à votre problème est de ne pas passer par une chaîne puis un ExtraitChaîne() très peu adapté pour le futur, mais par le type JSON ou les fonctions JSONVersVariant qui font cette conversion directement pour vous.

jRéponse est un JSON = HTTPDonneRésultat()
SAI_Texte_natal = jRéponse.responseData.translatedText

// ou (au cas où le type JSON ne soit pas disponible)
vRéponse est un Variant = JSONVersVariant(HTTPDonneRésultat())
SAI_Texte_natal = vRéponse.responseData.translatedText


Enfin, il serait idéal de remplacer l'usage de HTTPRequête() et HTTPDonneRésultat() par les types httpRequête et httpRéponse, avec la fonction Envoie() qui va avec. Le résultat se récupère en inspectant la propriété ..Contenu de la variable httpRéponse.


===================================================================

Merci pour cette réponse.
je n'ai jamais utilisé Json.

voici mes lignes de programme :
cMaRequête est un httpRequête
cMaRéponse est un httpRéponse
cMaRequête.URL = "https://api.mymemory.translated.net/get…=" + "the tree is hidden in the forest" + "&langpair=en|fr"
cMaRéponse = HTTPEnvoie(cMaRequête.URL)


SI ErreurDétectée ALORS
Erreur(ErreurInfo(errComplet))
SINON
Info(cMaRéponse.Contenu)
FIN

jRéponse est un JSON = HTTPDonneRésultat()
SAI_Texte2 = jRéponse.responseData.translatedText
// ou (au cas où le type JSON ne soit pas disponible)
vRéponse est un Variant = JSONVersVariant(HTTPDonneRésultat())
SAI_Texte2 = vRéponse.responseData.translatedText

Constat :
A la premiere ligne : "SAI_Texte2 = jRéponse.responseData.translatedText "
- j'ai une erreur : ( le variant n'est pas un objet)
- Le contenu de l'info ne contient rien de concret

Merci de votre concours
Michel
Membre enregistré
4 297 messages
Posté le 29 octobre 2025 - 16:39
Bonjour,
Si on avait du code balisé, on pourrait peut être t'aider.
Là c'est comme si on n'avait pas de code et ls gens ne lisent même pas.

--
Il y a peut être plus simple, mais, ça tourne
Quand tout a échoué, utilise l'option RTFM
Membre enregistré
20 messages
Posté le 29 octobre 2025 - 17:24
Hello
En passant par un objet JSON (en ayant traqué la structure de la réponse) , la conversion est automatique

leretour est un JSON

SI httpRequête("https://api.mymemory.translated.net/get?q=the%20tree%20is%20hidden%20in%20the%20forest&langpair=en|fr") ALORS
leretour=HTTPDonneRésultat()
//
POUR TOUT uneReponse de leretour.matches
Trace(uneReponse.translation)
FIN
FIN


Bon dev.
Posté le 30 octobre 2025 - 12:44
Samir BOUCHETIBAT a écrit :
Hello
En passant par un objet JSON (en ayant traqué la structure de la réponse) , la conversion est automatique

leretour est un JSON

SI httpRequête("https://api.mymemory.translated.net/get?q=the%20tree%20is%20hidden%20in%20the%20forest&langpair=en|fr") ALORS
leretour=HTTPDonneRésultat()
//
POUR TOUT uneReponse de leretour.matches
Trace(uneReponse.translation)
FIN
FIN


Bon dev.


Bonjour, merci beaucoup ça fonctionne parfaitement
bon dev
michel