2010-05-25 17 views
8

Stiamo valutando Babel 0.9.5 [1] in Windows per l'utilizzo con Python 2.6 e abbiamo le seguenti domande a cui non siamo stati in grado di rispondere attraverso la lettura della documentazione o del googling.Internazionalizzazione di un'applicazione Python 2.6 tramite Babel

1) Mi piacerebbe usare un'abbreviazione _ come per ungettext. C'è un concenno sul fatto che si debba usare n_ o N_ per questo?

n_ non sembra funzionare. Babel non estrae il testo.

N_ sembra funzionare parzialmente. Babel estrae il testo come fa per gettext, ma non formatta per ngettext (argomento plurale mancante e msgstr [n].)

2) C'è un modo per impostare i campi msgstr iniziali come il seguente quando si crea un file POT ?

Sospetto che ci possa essere un modo per farlo tramite i file Babg cfg, ma non sono riuscito a trovare la documentazione sul formato di file cfg Babel.

"Project-Id-Version: Project versione \ n" "Language-Team: it \ n"

3) Esiste un modo per preservare 'obsoleta' msgstr/msgstr di nelle nostre file PO? Quando utilizzo il comando di aggiornamento di Babel, le stringhe obsolete appena create sono contrassegnate con prefissi # ~, ma le stringhe di messaggi obsolete esistenti vengono eliminate.

Grazie, Malcolm

[1] http://babel.edgewall.org/

+0

Perché non si desidera utilizzare solo le utilità gettext di GNU convertite in Win32 per estrarre i messaggi? http://gnuwin32.sf.net – bialix

+1

Hi Bializ: l'installazione delle utenze GNSS gettext non è conveniente per i nostri clienti che mantengono i propri file PO. Un altro vantaggio delle utilità Babel è che funzionano in modalità UTF-8 per impostazione predefinita. Abbiamo avuto alcuni problemi nel far sì che le utilità gettext di GNU lo facessero in modo coerente (hanno come predefinito ASCIII). – Malcolm

risposta

8

Per impostazione predefinita pybabel extract riconosce le seguenti parole chiave: _, gettext, ngettext, ugettext, ungettext, dgettext, dngettext, N_. Utilizzare -k option per aggiungerne altri. N_ viene spesso utilizzato per NULL-translations (chiamato anche traduzioni differite).

Aggiornamento: l'opzione -k può elencare gli argomenti di funzione da inserire nel catalogo. Quindi, se usi n_ = ngettext prova pybabel extract -k n_:1,2 ....

+0

Ciao Denis: Grazie per il tuo aiuto.Sono a conoscenza dell'opzione -k, ma non riesco a trovare un modo per mappare N_ o n_ alla funzione ngettext in modo che i parametri di questa funzione vengano elaborati come plurali (creando msgid_plural, msgid [0], ecc.) Rispetto a un alias di gettext. Apprezzo il riferimento all'uso di N_ come traduzione NULL. Sembra una sintassi specifica di Python (?) Rispetto alle implementazioni gettext di altre lingue che supportano N_ o n_ come alias ngettext. – Malcolm

+0

Ciao Denis: La tua tecnica "-k n_: 1,2" funziona perfettamente - grazie mille !! Per gli archivi: abbiamo deciso di utilizzare N_ vs. n_ per seguire quale aspetto sia lo standard del settore defacto per l'abbreviazione ngettext. – Malcolm

1

Per rispondere alla domanda 2):

Se si esegue Babel tramite pybabel extract, è possibile impostare Project-Id-Version tramite le opzioni --project e --version.

Se si esegue Babel tramite setup.py extract_messages, viene prelevato dalla distribuzione il numero Project-Id-Version (nome del progetto e versione nel file setup.py).

Entrambi i modi supportano anche le opzioni --msgid-bugs-address e --copyright-holder per l'impostazione dei metadati POT.