Chi scrive programmi per professione, o per passione, si trova spesso nella necessità di soddisfare un pubblico distribuito su più paesi, abituato a parlare più lingue. Nonostante ormai l'inglese sia la lingua franca internazionale, con buona pace dell'esperanto, esistono ancora molte persone che non si trovano a proprio agio con questa lingua e che quindi vorrebbero poter utilizzare dei programmi con interfacce scritte nella loro lingua madre. Per un programmatore gestire tutto il lavoro di traduzione può essere complicato, ma grazie alle librerie Qt la costruzione di interfacce multilingua è molto semplice: le varie stringhe da tradurre vengono inserite in file che possono poi essere forniti a dei traduttori professionisti. Questi possono aprire i file usando il programma QtLinguist (di cui esiste anche una versione per Windows e MacOS ), senza bisogno di sapere nulla della programmazione. In questo modo è possibile separare il lavoro del programmatore da quello del traduttore, semplificando la vita a entrambi. Il programmatore non deve poi fare altro che inserire nel proprio programma un menù per la selezione della lingua (usando la funzione installTranslator ).
Prima di tutto sarà necessario che il programmatore specifichi nel proprio file di progetto (.pro) l'elenco delle lingue in cui tradurre:
LANGUAGES = en it de fr es pt
defineReplace(prependAll) {
for(a,$$1):result += $$2$${a}$$3
return($$result)
}
TRANSLATIONS = $$prependAll(LANGUAGES, $$PWD/languages/Translation_,.ts)
La routine permette di creare automaticamente i nomi dei file basandosi sulle lingue indicate nella variabile LANGUAGES . Poi, da QtCreator, si possono aggiornare la stringhe da tradurre con il menù Tools/External/Linguist/Update translation .
Avviato QtLinguist, il traduttore potrà selezionare uno o più file .ts . Ovviamente, ce n'è uno per ogni lingua, come previsto dalla routine che è stata inserita nel progetto dal programmatore. Aperto il file si ottiene innanzitutto l'elenco delle varie classi del programma nell'elenco Context . Questo è utile per capire dove ci si trova e cosa si sta per tradurre in programmi molto complessi.
Le varie stringhe di testo da tradurre si trovano nell'elenco Strings . Vengono ovviamente rpesentate le stringhe originali: cliccando su una di esse, viene visualizzata l'interfaccia grafica o la porzioe di codice che la contiene, così è più facile avere una idea di come apparirà il risultato finale.
Sotto l'anteprima vi sono alcune caselle, in particolare quella chiamata translation : ce ne può essere più di una di queste, almeno una per ogni lingua che è stata aperta. Basta scrivere la traduzione nella casella e poi premere Ctrl+Invio per confermare e passare automaticamente alla traduzione sucessiva.
Per facilitare ulteriormente il lavoro del traduttore, QtLinguist fornisce una serie di suggerimenti ( phrases and guesses ) basati sulle traduzioni fatte in precedenza. Inoltre, dei messaggi di avvertimento appaiono quando c'è qualcosa di strano, come l'uso di una punteggiatura diversa da quella del testo originale.
Completate tutte le traduzioni, il file .ts può essere trasformato dal programmatore in un file binario usando QtCreator, con il menù Tools/External/Linguist/Release translations . Questa operazione può essere autoamtizzata, su GNU/Linux, inserendo nel file di progetto il codice:
unix {
qtPrepareTool(LRELEASE, lrelease)
for(tsfile, TRANSLATIONS) {
command = $$LRELEASE $$tsfile
system($$command)|error("Failed to run: $$command")
}
}