Aiutare il Software Libero Carlo Contavalli, Stefano Melchior, Cristian Rigamonti, Fabio Pani, Emanuele Rocca, Francesco Donadon Per aiutare il Software Libero non è necessario essere dei tecnici o conoscere un linguaggio di programmazione. Riveste grande importanza infatti l'internazionalizzazione del software, ovvero la presenza di software scritti in una lingua comprensibile per gli utenti. Per tradurre del Software Libero è sufficiente conoscere l'utilizzo di un editor di testi, conoscere sia l'Italiano che l'Inglese e avere un minimo di dimestichezza con alcuni strumenti. Introduzione

Esistono diverse parti del sistema operativo Debian GNU (o comunque GNU) che dovrebbero essere internazionalizzate: le pagine di manuale (file troff) la documentazione dei programmi e le HOWTO/FAQ/... (docbook, sgml, xml, latex) l'output dei comandi ed il contenuto delle interfacce (.po di gettext) In più, per quanto riguarda Debian GNU, è importante che vengano tradotti: la descrizione dei pacchetti (ddtp) - visibili con ``apt-cache'' ed i vari frontend per apt e dpkg (dselect, aptitude, ...) i menú di installazione (.po per debconf) - visibili durante l'installazione di un pacchetto le pagine web del sito Debian - (sorgenti .wml) Questo documento è il frutto del primo Debian Translation Party, tenutosi a Milano il 13 Dicembre 2003 ed organizzato da: <fabiux at fabiopani.it> <stefano.melchior at openlabs.it> <cri at linux.it> <ccontavalli at debian.org> In collaborazione con e l'associazione culturale . Raccomandazioni generiche

In questo documento non si entrerà nel merito delle traduzioni. Ovvero, si parlerà di come fisicamente effettuare una traduzione, cioè di dove reperire il materiale da tradurre e quali strumenti utilizzare per tradurlo, ma non delle forme grammaticali né di come scrivere delle buone traduzioni, anche se nel corso del documento verrà dato qualche spunto. Per maggiori informazioni sullo stile linguistico da utilizzare e su come tradurre la terminologia tecnica, vi consigliamo di consultare: ed il glossario ufficiale dei traduttori italiani . Ad ogni modo, sulle mailing list indicate, vi sapranno dare degli ottimi consigli. Utilizzate le mailing list: sono uno strumento indispensabile. Nessuno è lì per giudicare la vostra abilità o per prendersi gioco di voi. Scopo principale delle mailing list è coordinare il lavoro di persone lontane tra loro, conoscersi e tentare insieme di raggiungere un determinato scopo. Per cui, non vergognatevi a chiedere! Nella peggiore delle ipotesi, nessuno vi risponderà! Solitamente, invece, avrete la possibilità di conoscere un sacco di persone. Accertatevi che la vostra traduzione sia comprensibile non solo per un neofita, ma anche per un ``tecnico''. Se un vostro amico con competenze tecniche maggiori delle vostre guarda la traduzione arricciando le sopracciglia ed esclamando ``che diavolo vuol dire questo?'', probabilmente avete esagerato :). Come venne ripetuto più volte su diverse mailing list: una traduzione deve tradurre, non spiegare (glossario ufficiale). Accettate di buon grado i consigli che vi vengono dati: nessuno vuole scoraggiarvi (perchè mai vorrebbe farlo?), nessuno vuole dire che avete fatto un brutto lavoro (se non l'aveste fatto voi, chi l'avrebbe fatto?) o che non siete stati bravi (poteva farlo chi vi sta criticando!!!). Spesso nelle email non traspaiono i sentimenti, i toni di voce o il significato reale che si vuole attribuire ai termini utilizzati. Quindi, se vi vengono dati dei suggerimenti, è semplicemente perchè si vuole migliorare la qualità del lavoro già svolto, che anche solo per il fatto che è stato completato, è da considerare fondamentale per la comunità. Tradurre l'output dei comandi ed il contenuto delle interfacce

Scegliete un programma da tradurre :). Verificate che il programma non sia già stato tradotto o che qualcuno non stia già lavorando su tale traduzione (come? scrivete su una delle mailing list per le traduzioni!! Principalmente, per i tool GNU tp@lists.linux.it, scrivendo qualcosa del tipo ``Vorrei tradurre ... qualcuno ci sta già lavorando?'', aspettate una settimana e se nessuno vi risponderà, allora potrete iniziare la vostra traduzione in serenità) Procuratevi i sorgenti del programma che si vuole tradurre (file .tar.gz o .tar.bz2) Decomprimete i sorgenti (tar -xvzf file.tar.gz o tar -xjvf file.tar.bz2) Cercate un file ``.pot'', che contenga il template di gettext (find . -name '*.pot') Copiate il file .pot che avete trovato in un file con nome ``it.po''. Il file deve essere copiato nella stessa directory dove si trova il file .pot originale o comunque tutti gli altri file .po. Esempio: cp /home/src/pippo-1.2/po/pippo.pot /home/src/pippo-1.2/po/it.po Aprite il file ``it.po'' con un editor di testo oppure con un tool specifico (kbabel, gtranslator). Riempite i campi vuoti :). Come? dopo ``Language-Team:'' specificate ``Italian <tp@lists.linux.it>'' oppure ``Italian <debian-l10n-italian@lists.debian.org>'', a seconda della mailing list che avrete contattato per verificare la correttezza della traduzione. dopo ``Last-Translator:'' scrivete il vostro ``Nome Cognome <indirizzo@email.com>'' al posto di CHARSET, specificate ``ISO-8859-1'' oppure ``UTF-8'' (completate anche i campi Project-Id-Version, POT-Creation-Date e PO-Revision-Date, come indicato nel file .po stesso. dopo ogni ``msgstr'', tra ``"'' e ``"'', scrivete la traduzione del messaggio, rispettando il formato indicato nel rispettivo ``msgid''. Esempio: msgid "" "The domain name is used to construct the base DN of your LDAP directory. " "Entering foo.bar.org will give you the base DN dc=foo, dc=bar, dc=org." msgstr "" "Il nome di dominio č utilizzato per costruire il base DN della vostra " "directory LDAP. Per esempio, inserendo foo.bar.org verrā utilizzato come " "base DN dc=foo, dc=bar, dc=org." Fate attenzione agli spazi alla fine della riga! Senza lo spazio dopo ``vostra'', il messaggio sarebbe stato ``DN della vostradirectory LDAP''! Allo stesso modo, state attenti a non mettere uno spazio sia all'inizio che alla fine della riga, per non avere doppi spazi! prima di ogni ``msgstr'', gettext inserisce un commento (preceduto da ``#'') che indica la provenienza del messaggio da tradurre, ovvero da che file del programma il messaggio è stato estratto. Questa informazione vi può essere utile per contestualizzare il messaggio (eg, c'è la parola ``fork'' da tradurre. Si tratta della sezione di un programma che parla di cucina o della ``fork'' come chiamata a sistema? L'unico modo per saperlo è capire dove il messaggio è stato utilizzato, guardando i sorgenti). Una volta che avete riempito tutti i campi, inviate il vostro file .po ad una mailing list, come, per esempio, tp@lists.linux.it o debian-l10n-italian@lists.debian.org chiedendo cosa gli altri ne pensino della vostra traduzione. Questa fase è fondamentale: se avete tradotto un testo dall'inglese, è quasi impossibile che voi siate anche in grado di correggerlo. Non vedrete gli errori che avete commesso. Apportate le modifiche suggerite dalla mailing list. Inviate il vostro file .po all'autore del programma che avete tradotto o alla mailing list di discussione, con un messaggio simile a: Hello! Since I believe your wonderful software would be more enjoyable by italian users if its messages/menus were written in italian, I took care of translating the .po file. The file has been reviewed by member of the mailing list [specificare mailing list] and I believe it to be correct. You can find the it.po file in the attachment, and I'd like it to be included in the next release of your wonderful software. Cheers, [vostro nome] Bene! Avete tradotto il vostro primo software! Hints

Utilizzare un programma specifico per le traduzioni può essere di grande aiuto! (provate kbabel, gtranslator). Anche emacs ha delle funzionalità specifiche per i file .po. Per le traduzioni, chiedete consigli sulle varie mailing list! Non coniate neologismi incomprensibili! Rifatevi alle traduzioni già esistenti! Consultate il glossario ``ufficiale'' per i traduttori italiani (è importante mantenere una certa uniformità!) Preoccupatevi della lunghezza della vostra traduzione e del contesto in cui verrà visualizzata. Ad esempio, se un messaggio di errore è più lungo del previsto e viene visualizzato in una finestrella dove il testo viene mandato a capo automaticamente, allora non è un problema. Se invece dovete tradurre ``History'' nel menù di un browser, probabilmente non potete usare qualcosa come ``Storia dei siti utilizzati più recentemente in ordine di data'', a meno che non vogliate essere voi gli unici utenti di tale browser. Tradurre HOWTO/LIBRI/FAQ...

Generalmente, le HOWTO/LIBRI/FAQ sono scritti utilizzando qualche forma di SGML, XML oppure latex. Se il documento che volete tradurre è scritto in latex e la vostra fonte primaria di informazioni è questo documento, allora potete rinunciare serenamente alla vostra traduzione: qua Per cui: Scegliete quale documento volete tradurre Cercate i sorgenti del documento, ovvero un file .sgml o .xml che l'autore originale del documento ha realizzato, da cui poi è stato generato il .pdf o l'html che probabilmente avete letto. Se trovate un file .tex, allora siete caduti nel caso di latex. Se non trovate questo file, non preoccupatevene più di tanto: tenteremo di porvi rimedio più avanti. Tenete comunque presente che quasi tutte le HOWTO vengono conservate su , anche in questi formati. Contattate l'autore del documento, per: verificare che nessuno stia già lavorando a tale traduzione. verificare che non vi sia una nuova versione del documento quasi pronta per essere rilasciata (sarebbe alquanto fastidioso terminare la traduzione per vederla immediatamente obsoleta o scoprire che avete tradotto una vecchia versione del documento). far sì che l'autore abbia un riferimento da poter contattare o da poter inserire sul suo sito per poter consultare il suo documento in italiano. verificare che l'autore non adotti qualche politica particolare per le traduzioni (che so, dovete lavorare sulla versione in CVS, mantenendo dei commenti contenenti i titoli originali delle sezioni...) o che non vi sia qualche restrizione prevista da licenza per quanto concerne le traduzioni (capita). Potreste, per esempio, inviare un messaggio del tipo: Hello! While reading your [document/howto] titled [titolo dell'opera] fetched from [url del sito dove avete trovato il documento], I realized nobody had translated it in Italian. I can't believe Italians could survive such a long time without having a document like yours translated in their own language. I'd thus like to translate it in such a foolish language [se aiutati da una mailing list, aggiungete: , with the help of the mailing list [nome della mailing list]]. However, before starting the [se l'howto è particolarmente lunga, aggiungete: huge] job, I'd like to hear from you: - if anybody is already working on such translation - if I should be aware of any licensing issue involved with translating your document in italian (eg, can I translate it in italian?) - if I should follow any particular procedure or convention while working on your [sgml o xml] files. - if you are working on a new version of your document that will be released soon - if there's a newer version of your document available on the internet (where can I fetch it?) [solo se non avete trovato il file sorgente, ovvero il file .sgml o .xml del documento, aggiungete: - where I can find the sources you used to write your document (sgml or xml files, I hope)] While working on the translation, [sgml o xml] files will be put on [indicare il sito dove metterete la traduzione del file man mano che completerete il lavoro]. Thank you, Cheers [vostro nome] Attendete una risposta dell'autore, ed in base a questa decidete come procedere. Se avrete deciso di proseguire nel vostro intento di tradurre il documento, apritelo con un editor di testo. Ogni cosa scritta tra un < ed un > è un <tag attributo="valore" attr2="valore2" title="Questo è un titolo che deve essere tradotto">, "Questo è un titolo che deve essere tradotto" deve essere tradotto, al contrario di title, attributo, tag o attr2, che Ogni altro testo che trovate nel documento deve essere tradotto. Completato il documento, contattate l'autore comunicandogli l'esito della traduzione e l'url di dove verrà resa disponibile. Per esempio, potreste scrivere all'autore qualcosa come: Hello! I finally completed the translation of your document. You can find it in the attachment or at the url [inserire l'url del documento]. Cheers, [vostro nome] Se il documento originale è stato inserito in un archivio come , sarebbe carino che anche la vostra traduzione venisse inserita in tale archivio. Parlatene con l'autore e seguite le procedure indicate sul sito dell'archivio.

Stappate una bottiglia di spumante ed invitate i vostri nipoti (ormai saranno diventati grandi) per celebrare il termine della vostra traduzione! Hints

E' Tradurre un'intera HOWTO o un documento di qualche decina di pagine da soli può essere frustrante.

Cercate quindi Se deciderete comunque di andare avanti da soli, chiedete consigli alle varie mailing list, avvaletevi del glossario ``ufficiale'', e cercate revisori che vi correggano tutto o parte del documento (magari inviandone pezzetti alle varie mailing list). In un documento di queste dimensioni, potrebbe essere auspicabile eseguire di tanto in tanto un controllo ortografico (usando, per esempio, ``ispell -h -d italian file.sgml_o_xml'' o ``aspell -H check --lang=it file.sgml_o_xml'') e verificare la correttezza dell'output generato a partire dal vostro file .xml o .sgml (magari, per errore, avete eliminato un tag necessario, oppure avete aggiunto un carattere non valido). La verifica, però, dipende significativamente dal formato in cui il documento è stato scritto (va bene xml o sgml, ma utilizzando quale famiglia di tag? docbook? linuxdoc? che versione di docbook?). Allo stesso modo, interpretare gli errori dei tool di conversione può non essere facile. Consultate le mailing list e, se disponibile, utilizzate il ``Makefile'' utilizzato dall'autore. In quest'ultimo caso, per ottenere l'output in .pdf o .html, vi basterà installare tutte le utility necessarie (non ci riuscirete mai :-) e lanciare ``make''. Tradurre la descrizione dei pacchetti Debian (DDTP)

Recentemente, in Debian è stato aggiunto il supporto per l'utilizzo da parte di ``apt'' e dei frontend di apt di un elenco di pacchetti con la descrizione tradotta.

Ciò vuol dire che tutte le descrizioni dei pacchetti devono essere tradotte in italiano.

Per lavorare sulle traduzioni delle descrizioni dei pacchetti: Inviate una mail a: pdesc@ddtp.debian.org, contenente nel campo Subject (oggetto) il testo ``GET nomepacchetto it'' oppure ``GET 1 it''. Nel primo caso, vi verrà inviata la descrizione del pacchetto ``nomepacchetto'' perchè venga tradotta. Nel secondo, invece, vi verrà inviata una descrizione a caso. Nel giro di qualche ora, riceverete una mail dal server con la vostra descrizione da tradurre. Se avete richiesto un pacchetto a caso, non ci saranno problemi. Se avete richiesto un pacchetto particolare, potrebbe capitare che qualcuno abbia già tradotto il pacchetto specificato. Salvate l'allegato contenuto nella mail, apritelo con un editor di testo qualsiasi e sostituite ``<trans>'' con il testo corrispondente tradotto. Esempio: Description: A tetris clone. Gnome is the "GNU Network Object Model Environment" . It is a project to build a complete, user-friendly desktop based entirely on free software Description-it: <trans> Gnome sta per "GNU Network Object Model Environment". . <trans> dovrebbe diventare: Description: A tetris clone. Gnome is the "GNU Network Object Model Environment" . It is a project to build a complete, user-friendly desktop based entirely on free software Description-it: Un clone di tetris. Gnome sta per "GNU Network Object Model Environment". . Si tratta di un progetto per costruire un ambiente grafico facile da usare e completamente basato su software libero. Notate l'utilizzo degli spazi, del ``.'' ed il fatto che la Description originale non è stata modificata al pari di alcuni campi che non sono (e non devono!) stati tradotti. Limitatevi ad eliminare tutti i <trans> sostituendoli con delle (buone) traduzioni. Rispondete alla mail ricevuta, Festeggiate! Avete appena completato la vostra prima traduzione. Vita delle traduzioni

Utilizzando il DDTS (Debian Description Translation Server), il testo di un messaggio, deve: Essere tradotto. Per chiedere di poter effettuare la traduzione di un pacchetto, utilizzate il comando ``GET'' descritto precedentemente. Essere verificato, da almeno tre revisori. Per chiedere di poter rivedere la traduzione di qualcun altro, utilizzate il comando ``REVIEW'' nello stesso formato utilizzato da ``GET''. Ogni volta che un revisore effettua una correzione, il processo di revisione rinizia da capo, fin tanto che la traduzione non viene approvata. Una volta che una traduzione viene approvata, viene inclusa nell'archivio, e diventa soggetta a BUG. Dopo che una traduzione è stata inclusa, infatti, qualcuno si potrebbe accorgere di eventuali errori ed aprire un BUG. In questo caso, verrà contattato l'autore originale per richiedere che il BUG venga corretto. Hints

Attenzione che la descrizione di un pacchetto è composta da due parti. La prima, in qualsiasi linguaggio venga tradotta, non deve superare i 60 caratteri. Ricevuta la traduzione da effettuare, se non la completerete entro un certo periodo di tempo, questa verrà affidata a qualcun altro. Per maggiori informazioni, date un occhio al file ``guide-it.txt'', che potete trovare all'indirizzo ``''. Tradurre i menú di installazione di debconf

I menù di installazione di debconf sono quei menù che vi compaiono quando utilizzate ``apt-get'', solitamente a sfondo blu con ``finestre'' grigie.

Questi menú sono scritti utilizzando due formati diversi all'interno di alcuni templates.

Il primo formato, dichiarato obsoleto, utilizza un meccanismo proprietario di Debian. Il secondo formato, quello di cui si parlerà all'interno di questo documento, è basato su gettext e su file .po.

In ogni modo, per tradurre i menù di installazione di debconf: Andate sul sito Guardate le statistiche per rendervi conto che il vostro aiuto ed il vostro sforzo è veramente necessario. Nell'elenco dei pacchetti da tradurre, scegliete la vostra vittima. Banalmente, cliccateci sopra con il vostro browser. Scaricate il file ``templates.pot''. Rinominatelo in ``it.po''. Traducetelo utilizzando la procedura descritta nella sezione ``Tradurre l'output dei comandi ed il contenuto delle interfacce'' dal punto 7 in poi. Mandate la vostra traduzione su debian-l10n-italian@lists.debian.org, chiedendo agli iscritti cosa ne pensino. Apportate le modifche suggerite dalla mailing list. Aprite un ``whishlist'' bug sul pacchetto che avete tradotto chiedendo che la vostra traduzione venga inclusa, mandando una mail a: submit@bugs.debian.org, e scrivendo nelle Package: [nomepacchetto] Severity: whishlist Hello! In the attachment, you'll find a file containing the Italian translation of your templates.pot file. It has already been verifyed by the mailing list debian-l10n-italian@lists.debian.org and I believe it to be correct. Please include it in the next version of your package. Cheers, [vostro nome]

Notate le prime due righe: se sto traducendo i messaggi di ``openldap2'' (il nome su cui avete cliccato), al posto di ``[nomepacchetto]'' scrivete ``openldap2''. Notate infine le righe vuote: quella tra ``Severity'' ed ``Hello!'' è obbligatoria!!! Complimenti! Avete appena tradotto il vostro primo template di debconf! Hints

Per procurarvi il file ``templates.pot'', potete anche scaricare i sorgenti del pacchetto intero (con ``apt-get source nomepacchetto'', prestando attenzione a prendere il pacchetto dalla distribuzione ``unstable''). In questo caso, il file ``templates.pot'' si troverà nella directory ``debian''. Recentemente è stata estesa la funzionalità del DDTS per consentire la traduzione anche dei templates di debconf, con un meccanismo simile a quello precedentemente descritto. Purtroppo però, nel momento in cui stiamo scrivendo questo documento il server non sta funzionando, e non è stato possibile per noi reperire le informazioni riguardanti l'utilizzo di questo metodo. Speriamo che questa sezione verrà aggiornata in futuro. Dal sito internet è anche possibile vedere le statistiche relative alla traduzione dei pacchetti. La percentuale di quanto un pacchetto è tradotto viene calcolata sulla differenza dei messaggi in inglese dal file originale templates.pot al file it.po. Tradurre le pagine web del sito Debian

Le pagine web del sito Debian non sono comuni file html. I file .html che compongono il sito web vengono generati a partire da sorgenti wml. Se intendete quindi tradurre le pagine web Debian, dovete lavorare su questi file.

Ecco i passi da seguire: Andate sul sito col vostro browser preferito. Date un'occhiata alle statistiche e rendetevi conto che c'è veramente bisogno del vostro aiuto. Andate su e scegliete la pagina che più vi aggrada. Login anonimo sul server CVS Debian cvs -d :pserver:anonymous@cvs.debian.org:/cvs/webwml login (premete semplicemente invio alla richiesta della password) Scaricate i sorgenti già tradotti in italiano:

cvs -d :pserver:anonymous@cvs.debian.org:/cvs/webwml checkout -l \ webwml webwml/italian Prendete le immagini gif del sito e gli script perl (questi ultimi utili per automatizzare alcuni processi) cvs -d :pserver:anonymous@cvs.debian.org:/cvs/webwml checkout \ webwml/Perl webwml/english/template webwml/italian/Pics Create il file webwml/language.conf scrivendovi: italian Scaricate il sorgente della pagina che vi interessa.

Per esempio, se CD/vendors/legal fosse la pagina che desiderate tradurre: cvs -d :pserver:anonymous@cvs.debian.org:/cvs/webwml checkout \ webwml/english/CD/vendors/legal.wml Entrate nella directory webwml/ e lanciate uno di quei fantastici script di cui sopra, ovvero copypage.pl in questo modo: ./copypage.pl english/CD/vendors/legal.wml Editate il file italian/CD/vendors/legal.wml sostituendo alla prima riga (campo "title") il titolo tradotto e nella seconda aggiungendo il campo "maintainer" con il vostro nome e cognome. Esempio: #use wml::debian::template title="Informazioni di licenza per i fornitori di CD" #use wml::debian::translation-check translation="1.10" maintainer="Emanuele Rocca" Finalmente eccoci alla traduzione vera e propria: banale, ma ora è il momento di tradurre la pagina! :)

La doverosa raccomandazione è di non tradurre i link né i commenti (le linee che iniziano con "#"). Se avete dei dubbi, non esitate a contattare debian-l10n-italian@lists.debian.org. Una volta terminato il lavoro, inviatelo ai coordinatori delle traduzioni delle pagine web.

. Complimenti! Avete appena tradotto la vostra prima pagina del sito web Debian! Hints

Il server CVS contenente le pagine del sito Debian č navigabile via web.

Potrebbe essere molto comodo. Maggiori informazioni sulla traduzione delle pagine web sono disponibili (chiaramente in italiano), su Ulteriori approfondimenti sull'organizzazione del sito web Debian sono inoltre disponibili. Per approfondire l'argomento CVS consiglio il libro , leggibile gratuitamente online. Per quanto riguarda il Website META Language (WML), l'url di riferimento è