UI and Help files Content Guide/it

Questa guida fornisce un dettaglio degli elementi compresi nell'interfaccia grafica e nei file della Guida utente che devono o non devono essere tradotti, come le variabili o gli elementi xml usati nei file .po.

Termini univoci
Alcune parole devono essere usate in modo univoco all'interno dei file di traduzione, altrimenti possono causare malfunzionamenti del programma o creare all'utente il rischio di perdere dei dati. Questi termini sono:
 * i Nomi degli stili come quelli che potete trovare nel file sw/source/ui/utlui.po file
 * i Nomi delle funzioni di Calc (come STRLIST_FUNCTION_NAME) che potete trovare nel file formula/source/core/resource.po
 * i simboli di Math che potete trovare nel file starmath/source.po. Fate attenzione anche al fatto che i simboli di Math non possono contenere spazi. Per esempio, il simbolo di math perthousand non deve essere tradotto con per mille, oppure noelement non deve essere tradotto con nessun elemento.
 * le voci dell'Indice della guida in linea, come  Modifica;File della Guida utente\<\/bookmark_value\> , anche se non si trovano nello stesso file, in quanto ciò causerebbe malfunzionamenti alla visualizzazione delle voci dell'indice.
 * il | simbolo nelle stringhe del programma di installazione di Windows

Variabili e simboli nei file dell'intefaccia
Nonostante sia difficile definire delle regole rigide in merito alle variabili e ai simboli presenti nei file dell'interfaccia grafica, in quanto, in diverse parti del codice sorgente, LibreOffice usa un mix di tecnologie, questo è un tentativo di mettere per iscritto alcune norme.

Up one level| Create New Folder|
 * Alcuni file contengono un | alla fine delle stringe. Questo simbolo è obbligatorio, in quanto, se venisse omesso, si creerebbe un errore di runtime all'interno dell'installer. Questo è un esempio presente nel file instsetoo_native/inc_openoffice/windows/msi_languages.po:

%PRODUCTNAME                Questo visualizzerà il nome del prodotto Change object title of %1   %1 verrà sostituito con nome dell'oggetto Internal error $(ARG1). $(ARG1) verrà sostituito con il codice di errore interno
 * nella maggior parte dei casi $ e % indicano l'inizio di una variabile che viene sostituita nell'interfaccia utente e la parola o il numero che segue $ o % non dev'essere tradotta. Esempi:


 * Se $ è usato come simbolo monetario, come nella stringa che segue, quindi non rappresenta una variabile, il segno della valuta può essere liberamente tradotto, nel caso in cui la situazione lo richieda:

Restituisce il prezzo di un titolo dal valore nominale di $100 con l'ultimo periodo d'interesse irregolare.


 *  \n  nell'interfaccia grafica indica una nuova riga. Nella traduzione, dovrete provare a sistemare la stringa in modo da adattarsi all'interruzione di riga, ma senza rimuoverla altrimenti, all'interno della finestra di dialogo, la stringa risulterà troncata. Esempio:
 * 1) 1 Verificate che Impress sia in esecuzione \n
 * 2) 2 per gli utenti che usano il Bluetooth, abilitate "Preferenze"-"LibreOffice Impress"-"Generale"-"Abilita il controllo remoto"\n
 * 3) 3 per gli utenti che usano il WiFi, attivate "Preferenze"-"LibreOffice"-"Avanzate"-"Abilita le funzionalità sperimentali" \n
 *  {x} , dove 'x' è un numero, si tratta di una variabile usata nella app Impress Remote. Non deve essere modificata.


 *   , dove X è una parola in lettere MAIUSCOLE, nella maggior parte dei casi si tratta di una variabile che non deve essere tradotta. Alcuni esempi sono , ,  e . Se avete dei dubbi chiedete indicazioni in merito al caso specifico nella mailing list l10n@global.libreoffice.org.


 *  [n] , dove n è un numero, indica un parametro che verrà visualizzato per esteso nella stringa finale. Il numero non deve essere modificato o tradotto.


 *  [x] , dove x è una parola (forse con una cifra alla fine), spesso indica un parametro che verrà visualizzato per esteso nella stringa finale, il cui nome non deve essere toccato o tradotto (es. [ProductName]), ma alle volte si tratta di una stringa che in realtà dovrebbe essere tradotta (es. la [M] e la [T] nell'interfaccia utente delle impostazioni del correttore automatico). Se avete dei dubbi chiedete indicazioni in merito al caso specifico nella mailing list l10n@global.libreoffice.org.


 *  {xxx} , dove xxx è una strina, indica una parte di una stringa che verrà omessa quando il valore del [parametro] all'interno delle parentesi non ha un valore nel momento in cui viene visualizzato.
 * esempio:

Il file [2][3] è attualmente in uso {da parte del seguente processo: Nome: [4], ID: [5], Titolo della finestra: [6]}. Chiudete l'applicazione e riprovate.


 * In questo caso, se al momento dell'esecuzione le variabili [5] o [6] non hanno un valore, la sottostringa "da parte del seguente processo: Nome: [4], ID: [5], Titolo della finestra: [6]" verrà tralasciata e non sarà visualizzata. In tal caso la stringa finale non avrebbe senso, ma questa è un'altra questione. :-)

Elementi XML della Guida utente
I file della guida contengono molti elementi in XML che rendono difficile la traduzione per coloro che iniziano. Qui vengono illustrati in modo che non abbiate dubbi quanto traducete. Fate attenzione, che alle volte gli elementi sono nidificati all'interno di altri elementi. Gli elementi contengono anche degli attributi che vengono menzionati nella descrizione di ciascun elemento.

Il miglior modo di trattare questi elementi è quello di copiarli e incollarli nella traduzione, in modo da essere sicuri di non dimenticarne una parte o di commettere degli errori di digitazione. Dopodiché potete tradurre il contenuto racchiuso tra i due tag, tenendo conto anche degli elementi nidificati.

Questo è un elemento presente nella cartella della guida. Nonostante ciò, le informazioni che contiene vengono visualizzate nell'interfaccia grafica in forma di suggerimento esteso, quando in LibreOffice è attiva la relativa opzione. Questo elemento è  il suggerimento esteso . Esempio:

Questo elemento possiede due attributi che non devono essere tradotti:
 * hid (come nell'esempio qui sopra)
 * visibility

Questo elemento fornisce un'alternativa visuale ad un'immagine. Si trova spesso nidificato in un elemento, esempio:


 * in questo caso dovete tradurre la parola Icona e null'altro.
 * per le immagini localizzate contiene anche xml-lang=\"it-IT\", dove dovete sostituire it-IT con il codice ISO della vostra lingua.


Questo elemento viene usato per le voci dell'indice della guida utente. La prima parolaè la voce principale, separata da un punto e virgola. La seconda parola rappresenta la voce di secondo livello, per esempio:


 * alle volte capita che la parola della fonte in inglese abbia un significato diverso rispetto alla vostra lingua, come intestazione e titolo. Se trovate una di queste voci come Header;Title, potete semplicemente rimuovesa dalla traduzione, questo non avrà alcun effetto.
 * la maggior parte delle volte, molte voci sono raggruppate nello stesso paragrafo.
 * non dovrebbero esserci due voci simili nella cartella relativa alla guida, in quanto ciò causerebbe degli errori nella visualizzazione dell'indice all'interno dell'interfaccia della guida.

Questo elemento permette di attivare il contenuto a seconda della piattaforma usata (Windows, Linux o Mac). Il testo visualizzato sarà differente. Spesso è nidificato negli elementi o. Esempio:

e fate clic sull'etichetta del foglio nel quale volete inserire i contenuti.
 * in questo esempio dovete tradurre solamente la stringa Command tra i due tag caseinline. Se nella vostra lingua la tastiera usa un tasto diverso da Ctrl, dovete modificare anche questo (come in tedesco, nel quale il tasto sulla tastiera si chiama "Strg") in ogni caso appartiene ai tag.
 * questo elemento ha un attributo: select come nell'esempio qui sopra. Questo attributo non deve essere tradotto.

Questo elemento contiene il testo predefinito che sarà visualizzato nel caso in cui sia possibile attivare un contenuto a seconda della piattaforma. Come già visto nell'elemento precedente, questo si trova spesso nidificato all'interno degli elementi e. Esempio:


 * questo elemento non ha attributi.

Tra i tag di questo elemento non ci sono contenuti che che richiedano localizzazione, ma può essere nidificato. Esempio:


 * questo elemento possiede un attributo: href come nell'esempio qui sopra

Questo elemento permette di mettere in evidenza la stringa racchiusa tra i suoi tag, perciò dovete sempre tradurre il contenuto che trovate al suo interno. Esempio:


 * questo elemento non ha attributi.

Questo elemento riguarda le figure incorporate nei file. Di per se, non contiene contenuti da localizzare, ma, al suo interno, sono sempre nidificati altri elementi come  che contengono stringhe da tradurre. Esempio:

In questo esempio vedete l'elemento nidificato nel quale Icona va tradotta.

Questo elemento possiede quattro attributi che non vanno tradotti:
 * id indica il riferimento della figura
 * src indica il percorso dove si trova la figura
 * width indica la larghezza della figura, l'unità di misura può essere differente (per esempio cm) ma non ha effetto sulla visualizzazione della figura
 * height indica l'altezza, anche in questo caso l'unità di misura può essere differente

Questo elemento descrive una formattazione speciale applicata al contenuto che si trova tra i suoi tag.

Alcuni esempi:

In questo esempio, osservate che la formattazione speciale viene applicata per evidenziare l'inserimento da tastiera.

In questo esempio più complesso, potete vedere che la formattazione speciale viene applicata per evidenziare una voce del menu.


 * type è l'unico attributo di questo elemento. Determina il tipo di voce da evidenziare.

Questo elemento indica un collegamento a un altro file della guida o a un sito sul web. Esempi:

In questo esempio, il contenuto che sarà visualizzato si trova in scalc/01/func_datedif.xhp. Dovete tradurre solamente DATEDIF.

In questo esempio, va tradotto anche il contenuto dopo l'attributo name.

Questo elemento possiede quattro attributi:
 * href è il riferimento al file. Non ha contenuti localizzabili.
 * name è un attributo completamente inutilizzato. La sua traduzione non ha effetto su alcunché.
 * target è la destinazione quando di tratta di contenuti web. Non ha contenuti localizzabil.
 * type è il tipo di contenuto da visualizzare. Non ha contenuti localizzabili.

Come visto sopra per gli elementi   e  , questo elemento permette di attivare il contenuto a seconda della piattaforma (Windows, Linux o Mac). Di suo non ha contenuti da tradurre, ma contiene sempre ulteriori elementi nidificati. Esempio:

e fate clic sull'etichetta del foglio nel quale volete inserire i contenuti.
 * select è il suo unico attributo. Non ha contenuti localizzabili.

Questo elemento determina il contenuto che viene riutilizzato nei file. Il contenuto compreso tra i suoi tag deve essere localizzato. Esempio:

Questo elemento possiede due attributi:
 * id è il nome della variabile e non deve essere tradotto. Il suo nome può fornire delle indicazioni sul tipo di contenuto, purtroppo, nella maggior parte dei casi, è in tedesco.
 * visibility il cui contenuto non va tradotto.

Ricerca e gestione dei file .po
Ci sono diverse operazioni che potete eseguire direttamente sui file .po. Questi sono dei file di testo che è possibile manipolare utilizzando alcuni script, come il translate toolkit.

Dato che il campo Cerca di Weblate non è molto efficiente, usando il comando grep dalla linea di comando di Linux, quando effettuate la ricerca su molti file, otterrete dei risultati maggiormente significativi. Questa parte contiene una breve descrizione di alcuni script e degli esempi di utilizzo dei comandi grep e sed che vi aiuteranno a manipolare i file.

Per prima cosa dovrete scaricare i file da Weblate e usare il comando cd per portarvi nella directory in cui volete lavorare (ui o help).

Translate Toolkit
Nella maggior parte dei casi i pacchetti del Translate Toolkit sono disponibili nella vostra distribuzione. Nel caso non lo siano, o siano quelli di una vecchia versione, potete ottenerli qui. Se avete problemi ad installare o usare questi script, non esitate a chiedere aiuto sulla mailing list l10n.

Molti script compresi nel Translate Toolkit sono implementati in Weblate, come ad esempio Failing Checks, che vi permette di controllare le traduzioni. Alcuni però possono tornarvi utili:
 * poterminology vi permette di estrarre dai file .po/pot un file con la terminologia usata. Prima di iniziare un progetto di traduzione è di grande aiuto avere un glossario con un elenco tradotto delle parole più importanti o ambigue. Potrete poi caricare questo file anche nel progetto su Weblate. La sintassi e le opzioni sono spiegate sul sito.
 * posegment vi aiuta ad incrementare la qualità delle vostre TM (memorie di traduzione) suddividendo i file po a livello di singole frasi. La sintassi e le opzioni si possono trovare sul sito.
 * pocompendium vi permette di creare un grande file po dai singoli file po presenti in una directory. Ciò è utile ad esempio quando avete suddiviso un file lungo per ripartirlo tra un gruppo di traduttori. La sintassi e le opzioni sono spiegate sul sito.
 * posplit vi permette di estrarre tre file .po che contengono rispettivamente: le stringhe tradotte, le stringhe non tradotte e le stringhe ambigue. La sintassi e le opzioni sono spiegate sul sito.

Utilizzo di grep per la ricerca di stringhe
Il comando grep è usato in Linux, macOS o su sistemi Unix-like per eseguire delle ricerche all'interno di file di testo, o per cercare in uno specifico file delle righe che contengono determinate stringhe o parole. Il comando visualizzerà la riga che soddisfa la ricerca. grep 'parola' filename.po
 * La sintassi più semplice è:
 * Esempio:

sophie@sophie:~/libo_ui-fr$ grep 'Browse' accessibility/source/helper.po
 * restituisce

msgid "Browse"
 * Qui viene detto al comando grep di trovare la parola Browse nel file helper.po, che si trova nella sottodirectory source della directory accessibility.


 * Ciò non è molto utile, in quanto dovete conoscere la directory in cui si trova la stringa e LibreOffice ne contiene molte. Perciò aggiungeremo un'opzione per effettuare la ricerca ricorsivamente in tutte le directory che si trovano all'interno di quella principale. Questa è l'opzione -r.
 * La sintassi:

grep -r 'parola' directory


 * Esempio:

sophie@sophie:~/libo_ui-fr$ grep -r 'Browse' accessibility/
 * restituisce

accessibility/source/helper.po:msgid "Browse"
 * è più semplice! La risposta indica il percorso della stringa

grep -r -i 'parola' directory
 * per forzare ad ignorare la differenza tra maiuscole e minuscole nella parola (per esempio per cercare indifferentemente Browse, browse o BROWSE), dovrete aggiungere l'opzione -i. La sintassi è:


 * Ora, nella risposta volete ottenere anche il numero della riga in cui si trova la stringa. L'opzione da usare è la -n
 * La sintassi è:

grep -r -i -n 'parola' directory
 * vediamo un esempio applicato a una directory con tutte le opzioni che conoscete:

sophie@sophie:~/libo_ui-fr$ grep -r -i -n 'Browse' accessibility/
 * la risposta è:

accessibility/source/helper.po:23:"RID_STR_ACC_NAME_BROWSEBUTTON\n" accessibility/source/helper.po:25:msgid "Browse"
 * potete vedere, che la seconda voce contiene la parola da tradurre.

egrep -w -r -n 'parola1|parola2' directory/
 * Se volete trovare esattamente la stringa che avete inserito, potete aggiungere l'opzione -w. Per esempio per cercare is e non trovare anche this o his, ecc.
 * Se volte cercare più parole e trovare esattamente quelle che avete inserito, la sintassi è:
 * Esempio:

sophie@sophie:~/libo_ui-fr$ egrep -w -r -n '~File|_File' sw/
 * la risposta è:

sw/uiconfig/swriter/ui.po:313:msgid "_File System" sw/uiconfig/swriter/ui.po:1649:msgid "_File name" sw/source/ui/frmdlg.po:563:msgid "~File name" sw/source/ui/misc.po:591:#~ msgid "~File system" sw/source/ui/dialog.po:169:msgid "~File name" sw/source/ui/index.po:522:msgid "~File"
 * Nota: per trovare un'espressione regolare particolare si usa egrep. La e sta per grep esteso ma potete anche usare l'opzione -E: ''grep -E -r -n 'parola1|parola2' directory/

sophie@sophie:~/libo_ui-fr$ grep -r -n "l'objet" sw/ sw/source/ui/utlui.po:4106:msgstr "Cliquer sur l'objet" sw/source/ui/utlui.po:4133:msgstr "Souris sur l'objet" sw/source/ui/utlui.po:4151:msgstr "Souris quitte l'objet" sw/source/ui/utlui.po:4626:#~ msgstr "Renommer l'objet : " sw/source/core/undo.po:641:msgstr "Supprimer l'objet"
 * Se nella vostra ricerca è presente un carattere che richiede un'escape, come un'apostrofo (es. child's book in inglese, l'objet in francese o l'oggetto in italiano), il modo più semplice di gestirlo è quello di racchiudere la parola da cercare tra virgolette doppie anziché singole, come in questo esempio:


 * le normali espressioni regolari si applicano a grep (*: trova nessuno o più dei caratteri o delle espressioni che lo precedono ; ^: trova l'espressione all'inizio di una riga, come in ^A, ecc.)

Utilizzo di sed per la modifica dei file
Come grep, sed è un comando potente che permette di modificare molto facilmente il contenuto dei file .po. Sed sta per Stream EDitor. Per esempio, se in un file volete sostituire Intestazione con Titolo, la sintassi sarà: sed 's/Intestazione/Titolo/g' <file.po Sed usa le espressioni regolari per gestire le istruzioni, ma la sintassi rimane la stessa sopra illustrata. Qui non forniamo un dettaglio di tutte le sintassi usate nelle linee sottostanti, che comunque sono delle espressioni abbastanza semplici che potete usare in modo sicuro sui vostri file.
 * per primo avete il nome del comando s per sostituisci
 * poi la parola originale separata dai delimitatori /
 * subito dopo la parola con cui sostituire l'originale
 * g significa globale e sostituirà tutte le occorrenze della parola ricercata all'interno del file e non solamente la prima
 * quindi il file nel quale effettuare la sostituzione
 * fate attenzione anche alla presenza delle virgolette semplici.


 * Rimuovere commenti da un file
 * Esempio del file utlui.po dal quale rimuovere il # mio commento

#: 04180400.xhp
 * 1) mio commento
 * 2) . dnChg
 * dalla directory sw/source/ui inserite il seguente comando:

sophie@sophie:~/libo_ui-fr/sw/source/ui$ sed '/^#\ /d' utlui.po > tt
 * questo creerà in quella directory un file "tt", che contiene tutte le stringhe in cui tutti i "#" all'inizio della riga (^) seguiti da uno spazio sono cancellati (la d nella sintassi).


 * Per fare in modo che il file tt diventi nuovamente utlui.po:

sophie@sophi:~/libo_ui-fr/sw/source/ui$ mv tt utlui.po
 * ora il file è pulito!

Riprendendo il nostro primo esempio, se volete lavorare solamente su di una determinata riga, 306 avrete: sed '306 s/Intestazione/Titolo/g' <file.po quindi ora sapere come usare sul file prima grep per trovare la stringa e poi il comando sed per correggerla
 * Indica la riga della sostituzione

Localization
 * sul sito del progetto GNU troverete maggiori informazioni sui delimitatori, le espressioni regolari e la sintassi.