python internationalization translation gettext babel

Internacionalizar una aplicación Python 2.6 a través de Babel



internationalization translation (2)

Estamos evaluando Babel 0.9.5 [1] en Windows para utilizarlo con Python 2.6 y tenemos las siguientes preguntas que no hemos podido responder al leer la documentación o buscar en Google.

1) Me gustaría utilizar una _ como abreviatura para ungettext. ¿Hay un foco sobre si uno debería usar n_ o N_ para esto?

n_ no parece funcionar. Babel no extrae texto.

N_ parece funcionar parcialmente. Babel extrae texto como lo hace para gettext, pero no formatea para ngettext (falta el argumento plural y msgstr [n]).

2) ¿Hay alguna manera de establecer los campos iniciales de msgstr como los siguientes al crear un archivo POT?

Sospecho que puede haber una forma de hacerlo a través de los archivos de Babel cfg, pero no he podido encontrar la documentación en el formato de archivo Babel cfg.

"Project-Id-Version: VERSIÓN DEL PROYECTO / n" "Language-Team: en_US / n"

3) ¿Hay alguna manera de preservar ''obsoletos'' msgid / msgstr''s en nuestros archivos PO? Cuando uso el comando de actualización de Babel, las cadenas obsoletas recién creadas se marcan con # ~ prefijos, pero las cadenas de mensajes obsoletas existentes se eliminan.

Gracias, Malcolm

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


Por defecto, el pybabel extract reconoce las siguientes palabras clave: _ , gettext , ngettext , ugettext , ungettext , dgettext , dngettext , N_ . Use la opción -k para agregar otros. N_ se usa a menudo para traducciones NULL (también llamadas traducciones diferidas).

Actualización : la opción -k puede enumerar argumentos de función para poner en catálogo. Entonces, si usas n_ = ngettext prueba con pybabel extract -k n_:1,2 ...


Para responder la pregunta 2):

Si ejecuta Babel mediante pybabel extract , puede establecer Project-Id-Version través de las opciones --project y --version .

Si ejecuta Babel a través de setup.py extract_messages , Project-Id-Version se toma de la distribución (nombre del proyecto y versión en el archivo setup.py).

Ambas formas también admiten las opciones --msgid-bugs-address y --copyright-holder para establecer los metadatos POT.