Con le utilità gettext basate su Python Babel, esistono delle tecniche per conservare i commenti del traduttore e le traduzioni obsolete ("obsolete") contrassegnate con #~
nei file .po
tra gli aggiornamenti del file .pot
?Uso di Babel: come proteggere i commenti del traduttore (e le traduzioni precedenti) nei file PO gettext di GNU?
La prima volta che una traduzione obsoleta si trova in un file .po
e pybabel update
viene eseguita, la traduzione è contrassegnata con #~
. Questo è così che da un lato viene trattato come un commento e non viene utilizzato fino a quando un traduttore non lo guarda e lo modifica, ma d'altra parte non viene rimosso, quindi un traduttore può fare riferimento ad esso o copiare il testo da esso nelle loro altre traduzioni.
Tuttavia, la volta successiva che viene eseguito pybabel update
, tutti i commenti vengono definitivamente rimossi dal file. Ciò significa che anche le traduzioni contrassegnate con #~
vengono rimosse.
Ad esempio, con Babel versione 0.9.6 e Jinja2 versione 2.6, ed i seguenti file:
./babel.ini
:
[jinja2: **/templates/**.html]
encoding = utf-8
./templates/test.html
:
<html><body>
<h1>{% trans %}My website{% endtrans %}</h1>
</body></html>
./i18n/pt_PT/LC_MESSAGES/messages.po
:
# ... header stuff generated from
# pybabel init -l pt_PT -d i18n -i i18n/messages.pot ...
# Don't forget, I want to remember something about this!
#~ msgid "My web page"
#~ msgstr "A minha página de web"
Dopo i seguenti comandi vengono eseguiti:
$ pybabel extract -F babel.ini -o i18n/messages.pot .
$ pybabel update -l pt_PT -d i18n -i i18n/messages.pot
Il file portoghese messages.po
perde tutti i suoi vecchi commenti, e contiene solo:
./i18n/pt_PT/LC_MESSAGES/messages.po
:
# ... similar header stuff ...
#: templates/test.html:2
msgid "My web site"
msgstr ""
Come posso aggiornare i miei file di traduzione senza perdere i miei commenti e le vecchie traduzioni?
Puoi specificare quali librerie stai usando e fornire un file di esempio? –
@JamieCockburn Ti aiuta? –