Cose che ho letto

mercoledì 27 marzo 2013

Java e le API di Bing Translator

Vediamo oggi come interfacciare il nostro programma Java con il servizio offerto da Bing, per tradurre in maniera automatica i nostri testi. Porto ad esempio un programma da me realizzato per tradurre in maniera semplice semplice e veloce, parti di un testo senza bisogno di aprire alcuna finestra. La traduzione avviene infatti direttamente dalla clipboard del vostro sistema, ossia quando copiato un testo.

Prima di passare ai dettagli vi informo che il programma, essendo scritto in java, funziona su tutte le piattaforme, ma per come l'ho realizzato la resa migliore si ha su windows, su linux è buona, su mac non è granché.

Cominciate scaricando questo archivio --> GurzoTranslate

All'interno troviamo la classe principale GT.java che contiene tutto il programma compreso l'interfacciamento con le API, la classe che si occupa di leggere la clipboard, un'icona che il programma usa per piazzarsi nella tray del vostro sistema (vicino l'orologio), e un file di testo contenente le configurazioni essenziali del vostro programma. Ovviamente quest'ultimo potevo risparmiarmelo, ma avendo già distribuito ad altri questo programma per fare beta test e sopratutto per fare in modo che la gente potesse usarlo, ho preferito rendere semplici per tutti le modifiche.

Perchè Bing e non Google?

Perchè il servizio di traduzione è gratis per chiunque si registri come sviluppatore, fino a un massimo di 2 milioni di caratteri al mese. Mentre google, nonostante offra gratis 24H il suo servizio di traduzione, vuole un pagamento per usarlo attraverso un software. Per carità, ognuno fa le sue scelte, niente da ridire.

Il file di configurazione

Come ho detto bisogna registrarsi come sviluppatori, poi creare un'applicazione, sottoscrivere un accordo per le API Translator. Ecco quindi una serie di link utili allo scopo

Il vostro scopo finale è ottenere
  • Client ID = "latanadelgurzo"
  • Client Secret = "81/cF6D_ALTRO_CODICE_DI_ACCESSO_uB4="
Da inserire nel file di configurazione assieme alle lingue scelte per la traduzione.

Utilizzo del programma

Una volta compilate le classi avviate quella principale e vedrete apparire l'icona e un messaggio di benvenuto


Cliccando di destro avrete le seguenti opzioni che non sto nemmeno a spiegarvi



Struttura del programma
  • Import vari e variabili locali commentate in modo chiaro
  • Il main si occupa di avviare la creazione dell'interfaccia, avviare la lettura dei dati dalla clipboard, leggere i dati dal file di configurazione, ottenere il primo token per sfruttare le api attraverso il nostro account, dare il messaggio di benvenuto, restare in attesa. Questa parte, come tutto il programma, è corredata di scritte di debug visualizzabili sulla consolle, che informano su ogni attività eseguita.
  • Fino alla riga 130 abbiamo sostanzialmente la creazione della piccola interfaccia grafica
  • newClipText: è il metodo chiamato dalla classe che "ascolta" la clipboard, che trasmette ogni tot una stringa. Purtroppo non c'è un metodo che avverte che è stato copiato un testo, quindi la trasmissione è continua, e l'unico modo sensato di gestirla è tradurre solo le stringhe che sono diverse dall'ultima ricevuta.
  • Traduciamo solo le stringhe contengono meno di 200 caratteri per questioni spazio nella nuvoletta che appare nel tray del sistema. In caso contrario traduciamo un messaggio di errore. Quest'ultimo passo non è molto funzionale, ma mi piaceva mettercelo.
  • traduci: è il metodo che si occupa di trasmettere a bing il nostro testo da tradurre, assieme alle lingue scelte, e il nostro token.
  • pulisci: viene usato per compensare un problema con le lettere accentate della lingua italiana; problema che sto cercando di risolvere settando correttamente la codifica dei caratteri in trasmissione. Per il momento non posso offrire di meglio.
  • getAccessToken: si occupa di controllare quando viene richiesto il token corrente, se questo sia scaduto, cosa che accade ogni 10 minuti, e di richiederne uno nuovo.
  • serAccesToken: è dove avviene la richiesta sfruttando i dati contenuti nel file di configurazione.
Mano a mano che mi verranno in mente aggiungerò dettagli, link utili e commenti nelle classi, per il momento è tutto. Chiedete pure se avete bisogno di aiuto ;)


Nessun commento:

Posta un commento