Opened 13 years ago

Closed 13 years ago

Last modified 12 years ago

#18114 closed Bug (duplicate)

makemessages does not care about context in trans templatetag — at Version 6

Reported by: tomaz.stucin@… 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 Ramiro Morales)

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 'suggestive' 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.

Change History (8)

comment:1 by tomaz.stucin@…, 13 years ago

sorry, there is a typo in my report: in my code it is not:

{trans ...

but it is:
{% trasn ...
}}}

so this is definitely not the problem.

comment:2 by Julien Phalip, 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 Julien Phalip, 13 years ago

Attachment: 18114.trans-context.py added

by Julien Phalip, 13 years ago

Attachment: 18114.trans-context.diff added

Same patch but with .diff extension

comment:3 by Akos Ladanyi, 13 years ago

Cc: Akos Ladanyi added

comment:4 by Jannis Leidel, 13 years ago

Resolution: needsinfo
Status: newclosed

comment:5 by anonymous, 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 Ramiro Morales, 12 years ago

Component: TranslationsCore (Management commands)
Description: modified (diff)
Keywords: makemessages i18n added
Note: See TracTickets for help on using tickets.
Back to Top