Traduci

Ci sono diversi file “po” per varie lingue fatti per rendere Cinelerra-GG più comodo da utilizzare in paesi di lingua non inglese, questi file hanno diversi livelli di completezza o correttezza. Con lo sviluppo continuo, vengono aggiunte nuove frasi e devono essere tradotte. Le informazioni riportate di seguito sono fornite per rendere il lavoro di traduzione il più semplice possibile per Cinelerra-GG. Tuttavia, sono coinvolti diversi passaggi e il compito può risultare un po’ difficile. Per questo motivo un aiuto da più utenti è apprezzato, se si invia una e-mail a cin[@]list.cinelerra-GG[puntino]org, un nuovo cin.po aggiornato con le traduzioni nella tua lingua può essere generato per voi. Quindi tutto quello che dovete fare è eseguire poedit su di esso per completare eventuali traduzioni mancanti e notificare alla mailing list il completamento e la posizione del nuovo file.

Per un percorso più difficile, ma ancora gestibile, ecco un elenco completo delle istruzioni per creare le traduzioni nella lingua. Un programma, xlat.C, aiuta a fornire diverse varianti di file di testo che possono essere utilizzati al fine di consentire a chiunque di contribuire a fare traduzioni significative. Per creare un nuovo file cin.po, procedere come segue dopo essersi spostato nella directory di cinelerra:

./po/xlat.sh > /tmp/cin.po

Questo file conterrà solo parole/frasi inglesi. Successivamente, per utilizzare il programma xlat.C, prima compilarlo con “c++ xlat.C “. Puoi vedere la Guida all’uso qui:

#./a.out
list csv ./a.out csv < data.csv > data.po
list po ./a.out po < data.po > data.csv
list po ./a.out dups < data.po
list po ./a.out nodups < data.po
get strings ./a.out key < xgettext.po
gen xlation ./a.out xlat xgettext.po xlat.csv
gen xlation ./a.out xlat – text,xlat … < xgettext.po

Questo file ha 6 comandi da usare come primo parametro di a.out, fra cui possiamo scegliere quello adatto:

1) “csv” = comma separated value; per ricreare un po da un file csv.
2) “po” = converte i po in dati csv; ad esempio, è necessario per convertire ru.po in ru.csv.

Si può anche aprire il risultante *.csv in ooffice e aggiornare i valori della key->
(nei campi separati da “,” c’è solo da controllare i campi quotati come testo durante l’importazione). Questi risultati possono
essere “salvati come” un file csv che viene poi utilizzato da xlat.C per riformulare un “po”.

3) “dups” = elenca solo gli elementi chiave/valore dove è il key=value o il value= “”.
4) “nodups” = elenca solo gli elementi chiave/valore dove key!=value e value!= “”.
5) “key” = elenca tutti i set di key del cin.po.
6) “xlat” = sostituisce la precedente traduzione con la nuova. Questo è l’uso più importante ed è descritto in dettaglio di seguito.

I parametri della riga di comando xlat specificano un nuovo modello cin.po, in genere creato con xlat.sh, e un elenco di file chiave/valore che vengono utilizzati per creare un mapping per la traduzione desiderata. I file di mapping vengono aggiunti alla mappatura nell’ordine in cui vengono visualizzati nella riga di comando e qualsiasi chiave esistente viene sostituita con la definizione più recente; quindi in genere i dati chiave/valore più recenti risultano gli ultimi immessi nei parametri di comando. Una volta compilato il mapping, il nuovo modello po viene analizzato e le chiavi in esso contenute sono utilizzate per trovare il mapping più recente nei file chiave/valore. Il nuovo valore sostituisce il valore precedente nel modello. Ad esempio, per sovrapporre una nuova mappa su un po esistente:

c++ xlat.C
./a.out po < xx.po > /tmp/xx.csv
./a.out po < new.po > /tnp/new.csv
./a.out xlat xx.po /tmp/xx.csv /tmp/new.csv > /tmp/new.po

Il primo comando conserva il mapping esistente di xx.po, il secondo crea nuovi mapping da new.po, e il terzo unisce il mapping originale e quello nuovo per creare un po che include/sovrappone il vecchio xx.po. Questo nuovo file. po può ora essere modificato per includere le traduzioni con il vostro editor preferito o poedit.

Poiché alcune parole e abbreviazioni possono portare a traduzioni ambigue, può essere necessario l’utilizzo di C_ e D_ nel codice del programma per rappresentare le eccezioni Contestuali e Definizionali, di solito “_” e “N_”. Otterremo:

C_(“msgstr”) è tradotto in D_(“qual#msgstr”) da xlat.sh,
e richiama gettext con msgid = “qual#msgstr”.

Quando non viene fornita nessuna traduzione ‘po’, viene rimossa qual# e viene visualizzato solo il testo ‘msgstr’ predefinito. Se viene definita una traduzione ‘po’ per le impostazioni locali correnti, il msgid=’qual#msgstr’ tradotto viene utilizzato per accedere al msgstr tradotto.

Il valore predefinito MSGQUAL è il nome di base del file del sorgente C. Per il file src_file.C, il valore predefinito MSGQUAL è:

#define MSGQUAL “src_file”

Viene utilizzato per definire il qualificatore necessario per la trasformazione:

C_(“str”) to D_(“src_file#str”)

Il sorgente xlat.sh risultante viene scansionato da xgettext per creare il cin.po iniziale. In altre parole:
_(s) è la normale traduzione testuale internazionale –
La linea msgid è: msgid “s”

C_(s) lo fa apparire come se si usasse D_(“src_file #” s) –
La linea msgid è: msgid “src_file#s”
Se non si traduce, il msgtext predefinito è “s”, non “src_file#s”

D_(qual#s) prova a cercare “(qual#s) –
Questa linea msgid è: msgid “qual#s”,
Se non si traduce, il msgtext predefinito è “s”, non “qual#s”

Riepilogo:
utilizzare _(s) come di consueto in quasi tutti i casi
utilizzare C_ (s) se questo file di origine ha un significato specifico per s
utilizzare D_ (qual#s) se questo file di origine ha diversi significati per s