diff --git a/README-it.md b/README-it.md new file mode 100644 index 0000000..3b9ba37 --- /dev/null +++ b/README-it.md @@ -0,0 +1,43 @@ + +# Libreria di internazionalizzazione per Minetest + +Di Diego Martínez (kaeza). +Rilasciata sotto licenza Unlicense. Si veda `LICENSE.md` per i dettagli. + +Questo modulo è un tentativo per fornire il supporto di internazionalizzazione +per i moduli (cosa che attualmente manca a Minetest). + +Se aveste qualunque commento o suggerimento, per piacere scriveteli nella +[discussione sul forum][topic]. Per i rapporti sui bug, usate il +[tracciatore di bug][bugtracker] su Github. + +## Come usarla + +Se siete un* giocatrice/tore che vuole i testi tradotti, +[installate][installing_mods] questo modulo come qualunque altro, +poi abilitatelo tramite l'interfaccia grafica. + +Il modulo tenta di rilevare la vostra lingua, ma dato che al momento non c'è +un metodo portabile per farlo, prova diverse alternative: + +* `language` impostazione in `minetest.conf`. +* `LANGUAGE` variabile d'ambiente. +* `LANG` variabile d'ambiente. +* Se nessuna funziona, usa `en`. + +In ogni caso, il risultato finale dovrebbe essere il +[codice di lingua ISO 639-1][ISO639-1] del linguaggio desiderato. + +### Sviluppatrici/tori di moduli + +Se siete un* sviluppatrice/tore di moduli desideros* di aggiungere il supporto +per l'internazionalizzazione al vostro modulo, leggete `doc/developer-it.md`. + +### Traduttrici/tori + +Se siete un* traduttrice/tore, leggete `doc/translator-it.md`. + +[topic]: https://forum.minetest.net/viewtopic.php?id=4929 +[bugtracker]: https://github.com/minetest-mods/intllib/issues +[installing_mods]: https://wiki.minetest.net/Installing_mods +[ISO639-1]: https://it.wikipedia.org/wiki/ISO_639-1 diff --git a/doc/developer-it.md b/doc/developer-it.md new file mode 100644 index 0000000..4c660d6 --- /dev/null +++ b/doc/developer-it.md @@ -0,0 +1,66 @@ + +# Intllib - documentazione per sviluppatrici/tori + +## Abilitare l'internazionalizzazione + +Per abilitare l'internazionalizzazione del vostro modulo, dovete copiare il file +`lib/intllib.lua` nella cartella principale del vostro modulo, poi inserite +questo codice standard nei file che necessitano la traduzione: + + -- Load support for intllib. + local MP = minetest.get_modpath(minetest.get_current_modname()) + local S, NS = dofile(MP.."/intllib.lua") + +Dovrete anche aggiungere la dipendenza facoltativa da intllib per il vostro +modulo, per farlo aggiungete `intllib?` su una riga vuota nel vostro +`depends.txt`. Si noti anche che se intllib non è installata, le funzioni di +acquisizione del testo sono fatte in modo da restituire la stringa di testo +originale. Questo è stato fatto in modo che non dobbiate spargere tonnellate +di `if` (o costrutti simili) per controllare se la libreria è installata. + +Dopo avere messo il codice, dovete marcare le stringhe di testo che necessitano +una traduzione. Per ciascuna stringa traducibile nei vostri codici sorgenti, +usate la funzione `S` (si veda sopra) per restituire la stringa tradotta. +Per esempio: + + minetest.register_node("miomod:mionodo", { + -- Stringa semplice: + description = S("Il mio fantastico nodo"), + -- Stringa con inserti: + description = S("Macchina @1", "Blu"), + -- ... + }) + +La funzione `NS` è l'equivalente di `ngettext`. Dovrebbe essere usata quando la +stringa da tradurre ha forma singolare e plurale. Per esempio: + + -- Il primo `count` è per consentire a `ngettext` di stabilire quale forma + -- usare. Il secondo `count` è per il sostituto effettivo. + + print(NS("Avete un oggetto.", "Avete @1 oggetti.", count, count)) + +## Generare e aggiornare cataloghi + +Questo è il procedimento di base per lavorare con [gettext][gettext] + +Ogni volta che avete nuove stringhe da tradurre, dovreste fare quanto segue: + + cd /percorso/del/modulo + /percorso/degli/strumenti/intllib/xgettext.sh file1.lua file2.lua ... + +Lo script creerà una cartella chiamata `locale` se non esiste già, e genererà +il file `template.pot` (un modello con tutte le stringhe traducibili). Se avete +già delle traduzioni, lo script provvederà al loro aggiornamento con le nuove +stringhe. + +Lo script fornisce alcune opzioni al vero `xgettext` che dovrebbero essere +sufficienti per la maggior parte dei casi. Se lo desiderate potete specificare +altre opzioni: + + xgettext.sh -o file.pot --keyword=blaaaah:4,5 a.lua b.lua ... + +NOTA: C'è anche un file batch di Windows `xgettext.bat` per gli utenti di +Windows, ma dovrete installare separatamente gli strumenti di gettext per la +riga di comando. Si veda la parte superiore del file per la configurazione. + +[gettext]: https://www.gnu.org/software/gettext/ diff --git a/doc/localefile-it.md b/doc/localefile-it.md new file mode 100644 index 0000000..47d8718 --- /dev/null +++ b/doc/localefile-it.md @@ -0,0 +1,43 @@ + +# Formato del file di traduzione + +*Nota: Questo documento spiega il vecchio formato in stile conf/ini. +La nuova interfaccia usa file [gettext][gettext] `.po`. +Si veda [Il formato dei file PO][PO-Files] per ulteriori informazioni.* + +Questo è un esempio per un file di traduzione in Italiano (`it.txt`): + + # Un commento. + # Un altro commento. + Questa riga viene ignorata dato che non ha il segno di uguale. + Hello, World! = Ciao, Mondo! + String with\nnewlines = Stringa con\na capo + String with an \= equals sign = Stringa con un segno di uguaglianza \= + +I file "locale" (o di traduzione) sono file di testo semplice formati da righe +nel formato `testo originale = testo tradotto`. Il file deve stare nella +sottocartella `locale` del modulo, e il suo nome deve essere lo stesso del +[codice di lingua ISO 639-1][ISO639-1] della lingua che volete fornire. + +I file di traduzione dovrebbero usare la codifica UTF-8. + +Le righe che iniziano con un cancelletto sono commenti e vengono ignorate dal +lettore. Si noti che i commenti si estendono solo fino al termine della riga; +non c'è nessun supporto per i commenti multiriga. Le righe senza un segno di +uguale sono anch'esse ignorate. + +I caratteri che sono considerati "speciali" possono essere "escaped" di modo +che siano presi letteralmente. Inoltre esistono molte sequenze di escape che +possono essere utilizzate: + + * Qualsiasi `#`, `=` può essere escaped di modo da essere preso letteralmente. + La sequenza `\#` è utile se il vostro testo sorgente inizia con `#`. + * Le sequenze di escape comuni `\n` e `\t`, significano rispettivamente + newline (a capo) e tabulazione orizzontale. + * La sequenza speciale di escape`\s` rappresenta il carattere di spazio. + È utile principalmente per aggiungere spazi prefissi o suffissi ai testi + originali o tradotti, perché altrimenti quegli spazi verrebbero rimossi. + +[gettext]: https://www.gnu.org/software/gettext +[PO-Files]: https://www.gnu.org/software/gettext/manual/html_node/PO-Files.html +[ISO639-1]: https://it.wikipedia.org/wiki/ISO_639-1 diff --git a/doc/translator-it.md b/doc/translator-it.md new file mode 100644 index 0000000..e078b9a --- /dev/null +++ b/doc/translator-it.md @@ -0,0 +1,20 @@ + +# Intllib - documentazione per traduttrici/tori + +#### Nuova interfaccia + +Usate i vostri strumenti preferiti per modificare i file `.po`. + +#### Vecchia interfaccia + +Per tradurre nella lingua che desiderate un modulo che supporta intllib, +copiate il file `locale/template.txt` come `locale/LINGUA.txt` (dove `LINGUA` è +il [codice di lingua ISO 639-1][ISO639-1] del vostro linguaggio. + +Aprite il nuovo file nel vostro editor preferito, e traducete ciascuna riga +inserendo il testo tradotto dopo il segno di uguale. + +Si veda `localefile-it.md` per ulteriori informazioni sul formato del file. + +[gettext]: https://www.gnu.org/software/gettext/ +[ISO639-1]: https://it.wikipedia.org/wiki/ISO_639-1