Opened 13 years ago
Closed 12 years ago
#18114 closed Bug (duplicate)
makemessages does not care about context in trans templatetag
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | Core (Management commands) | Version: | 1.4 |
Severity: | Normal | Keywords: | trans context pgettext makemessages i18n |
Cc: | Akos Ladanyi | 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 )
We are working with translations and we have done the following
- we have 2 templates: template1.html and template2.html
- in template1 we have the following:
{% trans 'contact' as trans_contact %}
- in template2 we have the following:
{% trans 'contact' context 'suggesttive' as trans_contact %}
- when we makemessages -a we get the following in the django.po file:
#: web/templates/web/template1.html:35 #: web/templates/web/template2.html:21 msgid "contact" msgstr ""
- what we expect instead (in django.po) is actually:
#: web/templates/web/template1.html:35 msgid "contact" msgstr "" #: web/templates/web/template2.html:21 msgctxt "suggesttive" msgid "contact" msgstr ""
So it seems that the "django-admin.py makemessages -a" does not take into account context in the trans templatetag (but it does process both trans tag as can be seen in the comment)
If we write (anywhere in the code) the following:
from django.utils.translation import pgettext test = pgettext('suggesttive', 'contact')
then the django.po content is as expected and if we translate the strings (in django.po) and then render the template, the context is taken into account and the translation on the webpage (produced from the template) is as it should be, so the trans templatetag works as expected, just the makemessages does not.
If this is a "feature" I apologize in advance.
Attachments (2)
Change History (12)
comment:1 by , 13 years ago
comment:2 by , 13 years ago
Thanks for the report, however I cannot reproduce your issue (see the attached test case). Are you able to provide a test case for Django that highlights the problem?
by , 13 years ago
Attachment: | 18114.trans-context.py added |
---|
comment:3 by , 12 years ago
Cc: | added |
---|
comment:4 by , 12 years ago
Resolution: | → needsinfo |
---|---|
Status: | new → closed |
follow-up: 7 comment:5 by , 12 years ago
We just hit the same problem. In our case it seems to be related to single quote versus double quote. If we set the context keyword in single quotes makemessages ignores the context and sets the translation to have no context. If we change to double quote it then considers the context keyword.
Example:
Works:
{% trans 'Active' context "plural" %}
Doesn't work:
{% trans 'Active' context 'plural' %}
comment:6 by , 12 years ago
Component: | Translations → Core (Management commands) |
---|---|
Description: | modified (diff) |
Keywords: | makemessages i18n added |
comment:7 by , 12 years ago
Resolution: | needsinfo |
---|---|
Status: | closed → new |
Replying to anonymous:
We just hit the same problem.
What version of Django are you using?
Reopening so we can track this now that there is one user providing additional information.
comment:9 by , 12 years ago
Description: | modified (diff) |
---|
comment:10 by , 12 years ago
Resolution: | → duplicate |
---|---|
Status: | new → closed |
Duplicate of #18881. Install the latest 1.4.x bug-fix release (currently 1.4.3) to get the fix.
sorry, there is a typo in my report: in my code it is not:
but it is:
{% trasn ...
}}}
so this is definitely not the problem.