IntroductionDévelopper des logiciels, n’a jamais été plus excitant qu’aujourd’hui. Nous sommes dans un monde de plus en plus connecté, interactif et mobile. Les ordinateurs n’ont jamais bénéficiés d’autant de puissance, permettant le développement d’interfaces graphiques innovantes, naturelles et plus intuitives, ouvrant la voie ainsi à de nouveaux scénarios et opportunités. Un de ces scénarios est la possibilité de rajouter de la traduction et de la synthèse vocale à son application. Dans cet article, je me propose de vous montrer, comment il est possible d’enrichir une application riche Windows WPF (par opposition à des applications Internet Web) en utilisant justement des services sur le Web de traduction et de synthèse vocale via les Microsoft Translator L’architecture de notre application sera constituée de deux projets:
PrérequisPour réaliser les exemples de cet article il vous faut : Microsoft TranslatorMicrosoft Translator est un outil qui permet de traduire et de synthétiser à la volée du texte dans différent langages. Plusieurs interfaces sont disponibles, comme AJAX, HTTP, ou SOAP. Dans notre exemple, nous utiliserons l’interface SOAP, qui est la plus naturelle pour une application Windows WPF développée avec Visual Studio 2010 C# Express, si vous souhaitez en savoir plus n’hésitez pas à aller à l’adresse https://msdn.microsoft.com/en-us/library/ff512435.aspx Création de la clé Microsoft Translator1. Pour manipuler Microsoft Translator, il faut obtenir une clé (gratuite) à cette adresse 2. Remplissez les champs avec vos informations 3. Cochez la case Click here if you agree to the terms and conditions detailed above 4. Appuyez sur le bouton Agree 5. Copiez ensuite la clé créée, pour la réutiliser ultérieurement Création de la librairie d’appel à Microsoft Translator.Maintenant nous allons créer un nouveau projet de type bibliothèque de classe, nommé Traducteur, qui fera le pont entre les interfaces SOAP de Microsoft Translator et notre client WPF. Nous pourrions bien évidement éviter cette étape, et faire appel directement dans notre client à Microsoft Translator. Mais en règle générale, il est toujours préférable de découper son application en couche, afin d’éviter qu’il y est trop d’adhérence entre les différents niveaux d’une application et arriver à des applications monolithiques, difficiles à maintenir. C’est également utile si vous souhaitez la réutiliser dans un autre projet. Dans cette bibliothèque de classe, nous implémenterons les méthodes Traduire et Synthetiser qui ne feront rien de particulier, si ce n’est que d’appeler les méthodes correspondantes du service Microsoft Translator. Nous notifierons le client par l’intermédiaire d’un événement RequeteTerminee, que la demande de traduction ou de synthèse a abouti, échouée, ou a été annulée. Création de la classe APITranslator1. Lancez Visual Studio C# Express 2. Choisissez le modèle Bibliothèque de classes et nommé le projet Traducteur
3. Renommez la classe Class1 générée automatiquement par APITranslator Création du Proxy WCF pour Microsoft Translator.Pour pouvoir manipuler les API Microsoft Translator, il faut créer un proxy coté client, pour ce faire il vous faut utiliser un point d’entrée SOAP qui permettra à Visual Studio de créer toute la mécanique, en un mot tout le code Windows Communication Foundation que nous manipulerons par la suite. 1. Dans le projet Traducteur, dans l’explorateur de solution, cliquez sur le bouton droit de la souris, et sélectionnez la commande Ajouter une référence de service… : comme illustré sur la figure suivante,
2. Dans le champ Adresse, rentrez l’adresse http://api.microsofttranslator.com/v2/soap.svc
3. Donnez comme espace de nom WEBApiTranslator. 4. Sélectionnez le bouton Avancé 5. Cochez la case Générer des opérations asynchrones. Remarque : En cochant cette case, nous allons créer toutes les APIs qui permettront d’exécuter les requêtes sur le Web en mode asynchrone, évitant de figer ainsi l’application lors d’une demande de traduction ou de synthèse vocale. Pour ceux qui seraient plus familier avec les Service Web non WCF, cliquez sur le bouton Ajouter une référence Web 6. Appuyez successivement sur les boutons OK, pour valider la création du proxy WCF. Implémentation des API Microsoft TranslatorDans la suite de notre démonstration, nous allons donc implémenter toute la mécanique de connexion au service via l’espace de noms Traducteur.WEBApiTranslator 1. Dans l’entête du fichier ajoutez les importations d’espaces de noms suivantes : 2. Dans la classe APITranslator, ajoutez le code suivant :
3. Dans le constructeur de la classe APITranslator ajoutez le code suivant : 4. Implémentons les méthodes Traduire et Synthetiser. Pour ce faire ajoutez le code suivant : Maintenant nous allons implémenter toute la mécanique qui permettra de notifier notre client qu’un résultat est arrivé 5. La première chose à faire est de créer son propre évènement, pour ce faire procédez comme suit : a. Créez les arguments de l’évènement, en ajoutant le code suivant : b. Pour créer un évènement, il faut déclarer un délégué, c. Ensuite déclarez l’évènement lui-même de type TraducteurHandler. d. Enfin, nous implémentons la méthode SurRequeteTerminee qui lèvera l’évènement afin de notifier le client 6. Pour finir, il suffit d’implémenter les deux méthodes de rappels _clientTranslator_TranslateCompleted et _clientTranslator_SpeakCompleted, afin que notre librairie soit notifiée elle-même qu’un résultat est arrivé, et de notifier par la suite le client de ce résultat. Voilà notre bibliothèque est désormais prête à l’emploi, nous allons maintenant créer le client qui la consommera. Création du client WPFNous allons créer un client très simple, qui aura pour interface graphique, deux contrôles de type TextBox, l’un pour le texte à traduire, l’autre pour le texte traduit. Ce dernier servira également comme texte de synthèse vocale, et deux boutons l’un pour la traduction, l’autre pour la synthèse vocale, comme illustré sur la figure suivante :
1. Ajoutez un nouveau projet de type WPF à la solution existante
2. Appelez-le ClientTraducteur. 3. Définissez ce nouveau projet en tant que projet de démarrage
4. Double-cliquez sur le fichier MainWindow.xaml, afin d’ouvrir le designer XAML, et ajoutez lui deux contrôles TextBox, que vous nommez respectivement txtATraduire et txtTraduit. 5. Puis ajoutez deux boutons que vous nommez cmdTraduire et cmdSynthetiser 6. Ajoutez comme référence, le projet Traducteur. Afin de pouvoir manipuler notre librairie que nous venons de créer. Cliquez sur le bouton droit de la souris au niveau du nœud référence, et sélectionnez la commande Ajouter une référence
7. Ouvrez le fichier MainWindow.xaml.cs, afin d’accéder au code sous-jacent de l’interface graphique 8. Ajoutez-y le code suivant : 9. Déclarez en globale à la classe MainWindows les deux variables suivantes : 10. Dans le constructeur de la classe MainWindows, ajoutez le code suivant : 11. Ajoutez une méthode _traducteur_RequeteTerminee 12. Maintenant sur l’évènement click des deux boutons, vous allez ajouter respectivement le code suivant : 13. Compilez l’application, exécutez-la et à vous de jouer. Conclusion :Dans cet article, nous n’avons fait qu’aborder une petite partie de Microsoft Translator, mais il existe pléthore d’API Microsoft Translator qui vous permettrons d’enrichir votre application Windows. Par exemple :
Dans un prochain article nous verrons comment implémenter les services Bing de recherche, et les consommer dans une application Windows. |
A téléchargerUtiliser Microsoft Translator
|