2010-05-26 12 views
10

Con las utilidades gettext basadas en Python Babel, ¿hay alguna técnica para preservar los comentarios del traductor y las traducciones antiguas ("obsoletas") (marcadas con) en los archivos en las actualizaciones del archivo .pot?Uso de Babel: cómo proteger los comentarios del traductor (y las traducciones antiguas) en los archivos PO gettext de GNU?

La primera vez que se produce una traducción obsoleta en un archivo .po y se ejecuta pybabel update, la traducción se marca con #~. Esto es así, por un lado, se trata como un comentario y no se usa hasta que un traductor lo revisa y lo cambia, pero, por otro lado, no se elimina, por lo que un traductor puede consultarlo o copiar el texto. de ella en sus otras traducciones.

Sin embargo, la próxima vez que se ejecute pybabel update, todos los comentarios se eliminan permanentemente del archivo. Esto significa que las traducciones marcadas con #~ también se eliminan.

Por ejemplo, con la versión 0.9.6 Babel y Jinja2 versión 2.6, y los siguientes archivos:

./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" 

Después se ejecutan los siguientes comandos:

$ pybabel extract -F babel.ini -o i18n/messages.pot . 
$ pybabel update -l pt_PT -d i18n -i i18n/messages.pot 

El archivo portuguesa messages.po pierde todos sus viejos comentarios, y sólo contiene:

./i18n/pt_PT/LC_MESSAGES/messages.po:

# ... similar header stuff ... 

#: templates/test.html:2 
msgid "My web site" 
msgstr "" 

¿Cómo puedo actualizar mis archivos de traducción sin perder mis comentarios y traducciones antiguas?

+0

¿Puede especificar qué bibliotecas está utilizando y proporcionar un archivo de ejemplo? –

+0

@JamieCockburn ¿Esto ayuda? –

Respuesta

6

En lugar de utilizar pybabel actualización utilización msgmerge de gettext utilities

En su caso sería:

msgmerge ./i18n/pt_PT/LC_MESSAGES/messages.po ./i18n/messages.pot -o ./i18n/pt_PT/LC_MESSAGES/messages.po

Ejemplo:

tener reference.pot archivo:

msgid "" 
msgstr "" 
"Content-Type: text/plain; charset=utf-8\n" 
"Content-Transfer-Encoding: 8bit\n" 

#: templates/test.html:2 
msgid "My web site" 
msgstr "" 

y pt_previous.po archivo con sus traducciones anteriores:

msgid "" 
msgstr "" 
"Language-Team: \n" 
"Content-Type: text/plain; charset=utf-8\n" 
"Content-Transfer-Encoding: 8bit\n" 
"Language: pt\n" 

# Don't forget, I want to remember something about this! 
#~ msgid "My web site" 
#~ msgstr "A minha página de web" 

Ejecución de un comando:

msgmerge pt_previous.po reference.pot -o pt_new.po

Hará ./pt_new.po archivo que parecen s como este:

msgid "" 
msgstr "" 
"Language-Team: \n" 
"Language: pt\n" 
"Content-Type: text/plain; charset=UTF-8\n" 
"Content-Transfer-Encoding: 8bit\n" 

# Don't forget, I want to remember something about this! 
#: templates/test.html:2 
msgid "My web site" 
msgstr "A minha página de web" 
Cuestiones relacionadas