I programmatori su certe cose sono proprio fissati… o meglio “i programmatori sono proprio fissati e basta” :-D
Una delle nostre fisse e’ che il codice, le variabili, le costanti, i commenti etc. devono essere sempre in inglese.
Questo e’ giusto per diversi motivi, ad esempio:
- per convenzione
- per consentirne l’utilizzo/la modifica a programmatori non locali (vitale per il software libero)
Il problema e’ che sviluppando software per realta’ locali e per utenza inesperta (non programmatori o tecnici in generale) almeno cio’ che viene visualizzato dall’interfaccia deve essere assolutamente localizzata… italianizzato nel nostro caso.
La localizzazione in un applicazione Mozilla-based avviene attraverso due meccanismi:
- i fogli DTD per definire le entities di localizzazione dei documenti XUL
- i file properties per definire stringhe localizzate da utilizzare nel codice javascript
Di documentazione su come scrivere questi file e di come utilizzarne le risorse nei documenti XUL e negli script javascript se ne trova in abbondanza:
- una guida veloce nel tutorial xul (http://xul-planet.com)
- documentazione approfondita su http://developer.mozilla.org
- alcune sezioni nel ebook Creating Applications with Mozilla (http://books.mozdev.org)
Quello che non ho trovato facilmente e’ come utilizzare il sistema di localizzazione piu’ diffuso su GNU/Linux (gettext e i file po) e i tool basati su questo standard per localizzare un’applicazione Mozilla-based.
WorldForge: translate-toolkit
Googlando un po’ ho scoperto dell’esistenza del progetto WorldForge (www.worldforge.org) il quale ha lo scopo di coordinare/agevolare la localizzazione delle applicazioni libere.
Uno dei progetti di WorldForge e’ il translate-toolkit (http://translate.sf.net), una collezione di tool in linea di comando per manipolare file po ed effettuare conversioni tra formati diversi, tra cui ci sono naturalmente i formati utilizzati da Mozilla.
Localizzazione: il processo
Il processo di localizzazione si compone di diverse fasi:
Localization Process
-
creazione/modifica DTD e properties del linguaggio scelto come linguaggio template (in genere en-US)
-
conversione dei file DTD e properties in file pot:
moz2po -P en-US pot.en-US
-
generazione del file po del linguaggio in cui vogliamo localizzare (ad esempio it-IT): puo’ essere effettuata aprendo i file pot con il nostro editor po preferito (poEdit, pootle, gettext-el) e salvandolo come file po nel linguaggio di destinazione (se i file sono conviene raccoglierli in una directory po.it-IT)
-
traduzione delle stringhe non ancora localizzate: la maggior parte dei tool orientati all’editing dei file po contiene una notevole quantita’ di funzioni per velocizzare il lavoro di traduzione nei suoi passi piu’ ripetitivi, rimanendo comunque possibile editare i file po come comuni file di testo
-
conversione dei nuovi file po nei file DTD e properties localizzati:
po2moz -l it-IT -t en-US po.it-IT it-IT
-
merging dell’ultima versione dei file po con la nuova versione dei template:
moz2po -P en-US pot.en-US–LAST mv po.it-IT po.it-IT–old pomigrate2 po.it-IT–old po.it-IT pot.en-US–LAST rm -rf pot.en-US–LAST
Externalize strings
Ora che sappiamo come funziona la localizzazione di una applicazione xul-based ci aspetta un tedioso lavoro di estrazione delle stringhe dai documenti XUL e dai sorgenti Javascript... credetemi... è divertente quanto un'appuntamento dal dentista X-)
Prima che assumiate qualcuno a cui subappaltare questa mansione da "amanuense" sappiate che esiste un estensione per firefox Externalize strings con cui rendere la fare di estrazione moooolto più piacevole ;-)
Per una guida passo passo su come utilizzare Externalize
strings per eseguire la selezione ed estrazione delle stringhe da internazionalizzare, naturale completamento
dei passi descritti in questo breve articolo, proseguite all'url: http://babelwiki.babelzilla.org/index.php?title=Externalize_It
Happy localization,
Luca Greco a.k.a. "rpl" (http://claimid.com/lucagreco)
Articolo veramente interessante. Externalize la conoscevo già ovviamente (grande dafi ;) ) ma il processo per i file .po no.
Devo ammettere che non ho mai localizzato niente che avesse bisogno di quel tipo di file e quindi non ho mai usato un editor apposito. Solitamente utilizzo un comune editor di testo e a manina vado a tradurre i file necessari nei punti necessari o al limite utilizzo l'interfaccia WTS di babelzilla. Puoi spiegarmi quali vantaggi concreti offrirebbe la conversione dei .dtd e dei .properties in .po?
Spero di essermi spiegato bene :P
Grazie in anticipo
Pedro