Derniers Articles
Vous êtes ici : Accueil / Tutoriaux / Windev : Traduire des phrases avec l’API Google Cloud Translate dans vos applications

Windev : Traduire des phrases avec l’API Google Cloud Translate dans vos applications

L’utilisation de cette API, qui s’appelait autrefois plus simplement Google Translate API, nécessite que vous récupériez une clé (Google Cloud Translate API Key).

Comme l’interface de la plateforme cloud de développement de Google a beaucoup changé ces derniers temps, je vous laisse chercher sur google ou Youtube les tutoriels les plus récents qui vous expliqueront comment créer une clé API de ce type, depuis la console de développement cloud : https://console.cloud.google.com/?hl=fr&pli=1
Vous devriez vous retrouver au final avec une clé mélangeant des lettres et des chiffres, d’une longueur de 40 caractères.
 
Exemple de clé : AUzih4iuzdhi_kjznjkdnkedzoirhjjsoidekz18 (ne fonctionnera pas, je viens de l’inventer)
Dans la pratique voici donc une procédure qui vous montre comment exploiter cette API via une requête de type REST. Vous pouvez l’utiliser telle qu’elle,  mais je vous encourage à chercher à comprendre comment cela fonctionne.
Pour les traductions précisez le code langue en paramètre exemple ‘en’ pour anglais, ‘fr’ pour français, ou ‘ja’ pour japonais. Attention donc à bien utiliser les bons codes (et non pas ‘fra’,  ‘gb’ ou ‘jp’ dans notre cas, qui poseraient problème. Il semblerait que google utilise la norme ISO 339-1, soit la première colonne du tableau disponible sur Wikipedia à cette adresse :
Procédure Traduire
Voici un exemple sous Windev de traduction obtenue du français vers le japonais dans mon applicatif :
exemple de traduction
Vous remarquerez donc que l’UNICODE est géré, pour pouvoir exploiter aussi les langues orientales.
Mon seul regret dans ce cas de figure,c ‘est que la requête REST ne renvoie pas la « translitération », alors que sur le site de google translate, elle y figure.
En clair, dans notre exemple, j’aurais aimé pouvoir aussi récupérer « saru tame no jikan desu »
transliteration
———————– LE CODE EN BRUT A COPIER/COLLER ————————-
PROCEDURE Traduire(LOCAL sSourceATraduire est une chaîne UNICODE,sCodeLangueSource est une chaîne = »auto »,sCodeLangueDest est une chaîne = »en » ):chaîne UNICODE
// définitions des objets de notre requête REST
JSONRequest est une restRequête
JSONReponse est une restRéponse
// !!!! ATTENTION ICI METTRE VOTRE CLE API !!!
GOOGLE_KEY_TRANSLATE_API est une chaîne = « insérerz ici votre clé API »
// configuration de la requête :
// on prévient qu’on utilise un format JSON
JSONRequest.ContentType = typeMimeJSON
// on prépare aussi l’URL qui pointe vers l’API de Google Translate
JSONRequest.url = « https://translation.googleapis.com/language/translate/v2?key= » + GOOGLE_KEY_TRANSLATE_API
// préparation du contenu au format JSON de la requête telle que l’attend l’API pour bien fonctionner
JSONRequest.Contenu = [
 {« q »: »%1″,
 « source »: »%2″,
 « target »: »%3″,
 « format »: »text »
 }
]
// on y insère notre demande spécifique (en remplaçant les %1,%2,%3 par les vrais mots ou expressions :
JSONRequest.Contenu = ChaîneConstruit(JSONRequest.Contenu,ChaîneVersUTF8(sSourceATraduire),sCodeLangueSource,sCodeLangueDest)
// On envoie notre demande au serveur google
JSONReponse = RESTEnvoie(JSONRequest)
// gestion d’une éventuelle erreur
SI ErreurDétectée ALORS
Erreur(ErreurInfo(errComplet))
RENVOYER «  »
FIN
// et récupération du contenu JSON dans un Variant
soit v = JSONVersVariant(JSONReponse..Contenu)
// l’avantage de cette méthode c’est que l’objet v de type variant doit contenir
// toute l’arborescence de l’objet de retour (que Windev reconstitue de lui même)
// il ne nous reste plus qu’à renvoyer la partie de l’objet qui nous intéresse, à savoir la traduction.
RENVOYER «  » + v.data.translations[1].translatedText
—————————- FIN DU CODE A COPIER / COLLER —————————-

3 commentaires

  1. Super Job
    ça m »a été très utile

    • Bonjour cette procédure ne marche plus
      Le passage du paramètre 1 a provoqué une erreur.
      Conversion ambiguë d’un buffer vers une chaîne Ansi ou Unicode.

      Pile des appels :
      Procédure locale Traduire (FEN_EXEMPLE.PROCEDURE.Traduire), ligne 21
      Clic sur BTN_Traduction (FEN_EXEMPLE.BTN_Traduction), ligne 2

      JSONRequest.Contenu = ChaîneConstruit(JSONRequest.Contenu,ChaîneVersUTF8(sSourceATraduire),sCodeLangueSource,sCodeLangueDest)
      Pouvez-vous me dire pourquoi ?
      Merci
      Bonne journée

Répondre

Votre adresse email ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

shared on wplocker.com