Oltre al più famoso Google Translator, in rete esistono altri validi traduttori di testo tra i quali Bing Translator di Microsoft.
L'aspetto che andremo ad analizzare è quello relativo all'integrazione del traduttore in un progetto .NET.
Il caso di studio
Realizzeremo una semplice applicazione web dove l'utente potrà scrivere un testo in italiano e tradurlo in inglese automaticamente grazie al traduttore di Microsoft collegato tramite Web Service.
Microsoft permette infatti di comunicare e consumare i servizi di Bing Translator attraverso diverse tecnologie, come si può verificare nella pagina dedicata allo sviluppo. Noi andremo ad utilizzare il protocollo SOAP.
Strumenti
Il progetto sarà sviluppato attraverso l'editor Microsoft Visual Studio 2010.
Prima di iniziare a programmare...
Come prima cosa è necessario registrarsi ai servizi Microsoft per poter utilizzare i suoi strumenti per sviluppatori. Il risultato sarà una chiave unica, AppId, da utilizzare ogni volta che invieremo una richiesta con il testo da tradurre.
Per far ciò bisogna seguire questi steps:
1. Collegatevi al sito: search.live.com/developers e selezionate la voce "Accesso - Bing API per la ricerca";
2. Loggatevi con il vostro account Windows Live (quello generalmente usato per MSN) o se non ce l'avete createne uno;
3. Nella pagina riservata agli sviluppatori che si apre, selezionate la voce ADD e compilate il form con i dati richiesti;
4. Dopo aver compilato e salvato vi sarà assegnata un Application ID: per il momento, mettetela da parte perchè servirà dopo.
Si parte!
Apriamo il nostro Visual Studio e creamo un nuovo progetto di tipo Visual C# -> Web -> ASP.NET Web Application e lo chiamamo BingTranslatorTutorial.

Selezioniamo quindi Create e il progetto verrà creato e salvato nella cartella da noi selezionata.
Ndr: Andremo a lavorare su un solo file aspx; se Visual Studio crea automaticamente il template di un sito web standard con login, collegamenti a script, pagina About, ecc... cancellate tutto quel che non vi serve e lavorate solo sul file default.aspx, l'esempio è solo a titolo esplicativo, poi ognuno potrà adattarlo ai propri progetti.
Il nostro file default.aspx conterrà semplicemente due textbox multi-line e un button. Lato design avremmo quindi questo il codice:
<h1>FactoryLab Tutorial - Come utilizzare Bing Translator in un progetto .NET</h1>
<h2>Testo da tradurre</h2>
<p>Qui sotto andiamo ad inserire il testo (in italiano) che vogliamo tradurre.</p>
<p><asp:TextBox ID="txtTextToTranslate" runat="server" TextMode="MultiLine" Rows="15" Columns="100"></asp:TextBox></p>
<asp:Button ID="btnProceed" Text="Traduci" runat="server" OnClick="btnProceed_OnClick"/>
<h2>Testo tradotto in inglese</h2>
<p><asp:TextBox ID="txtTextTranslated" runat="server" TextMode="MultiLine" Rows="15" Columns="100"></asp:TextBox></p>
Lo user case da riprodurre sarà il seguente: l'utente scrive il testo da tradurre nella textbox txtTextToTranslate, clicca sul button btnProceed che, attraverso l'evento onClick btnProceed_OnClick, chiamerà il web service di Bing Translator passandogli il testo da tradurre; quest'ultimo tradurrà il testo che verrà visualizzato nella seconda textbox txtTextTranslated.
Referenziare il webservice
Come scritto all'inizio del post, andremo ad utilizzare il protocollo SOAP e per poterlo fare dobbiamo collegare il webservice alla nostra web application attraverso lo strumento del Service Reference messo a disposizione da Visual Studio.
Tasto destro sul nostro progetto (nella Solution Explorer) e selezioniamo Add Service Reference. Inseriamo come address l'URL del servizio svc: http://api.microsofttranslator.com/V2/Soap.svc e poi seleziamo il tasto Go.
Nel riquadro Services seleziamo infine LanguageService e diamo un nome al nostro NameSpace, ad esempio Service.Microsoft.Translator

Confermiamo con OK e il web service verrà referenziato nel nostro web.config e quindi utilizzabile nella nostra applicazione.
Traduci!
A questo punto non ci resta nient'altro da fare che richiamare il webservice, o meglio - come si dice tecnicamente - a consumare il servizio.
Iniziamo con l'instanziare il servizio in modo statico:
// Webservice instance.
private static LanguageService msTranslator = new LanguageServiceClient();
Poi dichiariamo ed inizializziamo le nostre variabili da passare al traduttore, come l'AppId creata sul sito di Microsoft e le lingue:
// AppId -> Write here your appId (search.live.com/developers)
private string appId = "1234567890ABCDEFGHILMHNOPQRSTUVZ";
// Languages
private string fromLang = "it";
private string toLang = "en";
Infine, nel nostro evento onClick btnProceed_OnClick, leggiamo il testo da tradurre, lo inviamo al traduttore tramite il web service e lo salviamo nella seconda textbox. Tutto in una sola riga di codice:
// Translate txtTextToTranslate.Text and set in txtTextTranslated.Text
txtTextTranslated.Text = msTranslator.Translate(appId, txtTextToTranslate.Text, fromLang, toLang, "text/html", "general");
Come potete vedere il metodo base per le traduzioni è molto semplice da implementare, questa la sua sintassi:
string Microsoft.Translator.Translate(appId, text, from, to, contentType, category);
// PARAMETERS
// - appId : Application Id
// - text : Text to translate
// - from : Language code of the translation text.
// - to : Language code to translate the text into.
// - contentType : The supported formats, "text/plain" or "text/html"
// - category : Only supported category is "general"
E questo il risultato:

Conclusioni
Abbiamo visto come è semplice integrare Microsoft Translator in un progetto .NET, bastano davvero poche righe di codice. Bing Translator offre altri metodi interessanti per replicare il sistema di traduzione, come ad esempio la possibilità di ascoltare il testo tradotto attraverso il metodo Speak.
Nel nostro tutorial abbiamo preso come esempio una web application ma tutto è ovviamente applicabile a tutti i progetti sviluppati con Visual Studio.
Le funzionalità a disposizione permettono di integrare dei veri e propri sistemi di traduzione automatica nei nostri progetti. Se si volesse utilizzare il sistema di traduzione con le applicazioni mobile consiglio di utilizzare l'interfaccia AJAX con javascript e quindi far tutto lato client.
Qui trovate il progetto Visual Studio 2010 del tutorial, ricordatevi di cambiare l'AppId sostituendolo con il vostro: FactoryLab - BingTranslatorTutorial.zip (25,30 kb)
025e3cfc-86e4-415c-99a4-3b34b31f5601|0|.0