2010-05-25 7 views
8

Estamos evaluando Babel 0.9.5 [1] en Windows para usar con Python 2.6 y tenemos las siguientes preguntas que no hemos podido responder al leer la documentación o buscar en Google.Internacionalizar una aplicación Python 2.6 a través de Babel

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.

Parece que N_ funciona parcialmente. Babel extrae el 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 archivos Babel cfg, pero no he podido encontrar la documentación en el formato de archivo Babel cfg.

"Project-Id-Version: Project versión \ n" "Lenguaje-Team: es \ n"

3) ¿Hay una manera de preservar 'obsoleta' msgstr/del msgstr 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/

+0

¿Por qué no desea utilizar solo las utilidades gettext de GNU portadas a win32 para extraer los mensajes? http://gnuwin32.sf.net – bialix

+1

Hola Bializ: Instalar los utlities de GNU gettext no es conveniente para nuestros clientes que mantienen sus propios archivos PO. Otra ventaja de las utilidades de Babel es que funcionan en modo UTF-8 por defecto. Hemos tenido algunos problemas para conseguir que las utilidades gettext de GNU hagan esto de manera consistente (por defecto son ASCIII). – Malcolm

Respuesta

8

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

Actualización: La opción -k puede enumerar los argumentos de la función para poner en el catálogo. Por lo tanto, si usa n_ = ngettext intente pybabel extract -k n_:1,2 ....

+0

Hola Denis: Gracias por tu ayuda.Soy consciente de la opción -k, pero no puedo encontrar una forma de asignar N_ o n_ a la función ngettext para que los parámetros de estas funciones se procesen como plurales (creando msgid_plural, msgid [0], etc.) vs. un alias de gettext. Aprecio la referencia al uso de N_ como una traducción NULL. Esto parece una sintaxis específica de Python (?) A diferencia de otras implementaciones de gettext de lenguaje que admiten N_ o n_ como alias de ngettext. – Malcolm

+0

Hola Denis: Tu técnica "-k n_: 1,2" funciona perfectamente, ¡muchas gracias! Para los archivos: hemos decidido usar N_ vs. n_ para seguir lo que parece ser el estándar de la industria de facto para la abreviatura de ngettext. – Malcolm

1

Para contestar la pregunta 2):

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

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

Ambas maneras también son compatibles con las opciones --msgid-bugs-address y --copyright-holder para establecer los metadatos POT.

Cuestiones relacionadas