you topics tools sure newer multiidioma multi msguniq makemessages make installed idioma i18n have example docs djangoproject commanderror python django internationalization xgettext

python - tools - https docs djangoproject com en 2.0 topics i18n



error en "django-admin.py makemessages" o xgettext call?-> "advertencia: cadena sin terminar" (1)

Puedo pensar en dos posibilidades: puede que tengas un espacio extra después de tu barra invertida al final de la línea; o de alguna manera puede terminar con los caracteres de final de línea incorrectos en su fuente (por ejemplo, estilo Windows cuando su Python espera un estilo Unix, deshabilitando así las barras diagonales inversas).

De cualquier manera, aprovecharía la concatenación automática de cadenas estilo C:

>>> string = ("some text " ... "more text " ... "and even more") >>> string ''some text more text and even more''

Alternativamente, si no te molestan las nuevas líneas que terminan allí, usa cadenas de varias líneas:

>>> string = """some text ... more text ... and even more"""

IMO estos se ven mucho mejor, y son mucho menos frágiles cuando se refactoriza.

¿Esto ayuda?

django-admin.py makemessages muere con errores "warning: cadena no terminada" en casos donde las cadenas realmente largas están envueltas:

string = "some text / more text/ and even more"

Estas cadenas ni siquiera necesitan ser traducidas, por ejemplo, cadenas de consulta sql. El problema desaparece cuando concateno la cadena, pero el resultado se ve feo y lleva tiempo unirlos ...

¿Alguien tiene un problema como este? ¿Has encontrado una forma de solucionarlo?

Tengo las siguientes versiones de las herramientas involucradas:

xgettext-0.17, gettext-0.17, django-1.0.2, python-2.6.2

Había un ticket sobre este problema, pero se cerró probablemente porque el error aparece solo en una combinación de versiones de componentes.

EDITAR: encontró el origen del problema - xgettext imprime mensajes de advertencia a sterr y django los toma como errores fatales y se cierra.

el estado de devolución de la llamada xgettext es 0 - "éxito". Supongo que django debería reconocerlo como un éxito y no abandonar debido a las advertencias.

Curiosamente, xgettext aún extrae cadenas envueltas en barras invertidas si es necesario traducirlas, pero da advertencias en stderr ( "cadena sin terminar" ) y en el archivo .po ( "los mensajes internacionalizados no deben contener la secuencia de escape` / r ''" )

xgettext call es el siguiente:

xgettext -d django -L Python --keyword=gettext_noop / --keyword=gettext_lazy --keyword=ngettext_lazy:1,2 / --keyword=ugettext_noop --keyword=ugettext_lazy / --keyword=ungettext_lazy:1,2 --from-code UTF-8 -o - source_file.py

llamado desde django / core / management / commands / makemessages.py