Opened 9 years ago

Closed 9 years ago

#24091 closed Bug (wontfix)

compilemessages does not detect missing variables in djangojs.po files

Reported by: Philipp Metzler Owned by: nobody
Component: Internationalization Version: 1.7
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Philipp Metzler)

If django.po contains these lines:

msgid "This is a string with a %(variable)d."
msgstr "Das ist eine Zeichenkette ohne Variable."

This error will occur when compiling with

django-admin.py compilemessages

a format specification for argument »variable« doesn't exist in »msgstr«

BUT if a translation file for JavaScript djangojs.po contains the same lines no error will occur and this mistake will not be discovered until you stumble upon it by chance.

https://docs.djangoproject.com/en/1.7/topics/i18n/translation/#creating-message-files-from-javascript-source-code

Change History (5)

comment:1 by Philipp Metzler, 9 years ago

Description: modified (diff)

comment:2 by Philipp Metzler, 9 years ago

Description: modified (diff)

comment:3 by Claude Paroz, 9 years ago

I guess that the msgid line is preceded by #, python-format in django.po and not in the djangojs.po, right?

comment:4 by Philipp Metzler, 9 years ago

That's correct. How can I configure Django to include #, python-format also in djangojs.po files?

comment:5 by Claude Paroz, 9 years ago

Resolution: wontfix
Status: newclosed

Unfortunately, I'm afraid this is not in Django's hands, as we delegate string extraction to xgettext. And with gettext version >= 0.18.3 we'll use the gettext JavaScript parser on which we have still less control. So I don't see any possible resolution to this. And really, you should not use the %(...)s format when you only have one placeholder in a string, that should minimize the impact of possible mistranslations.

Note: See TracTickets for help on using tickets.
Back to Top