Code

Opened 4 months ago

Last modified 4 weeks ago

#21695 new New feature

Allow blocktrans to set a context variable

Reported by: mitar Owned by: nobody
Component: Template system Version: 1.6
Severity: Normal Keywords:
Cc: mmitar@…, bmihelac@… Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Currently, we can use {% trans "string" as var %} to set var to translated string. Nothing similar exists for blocktrans.

Attachments (0)

Change History (6)

comment:1 Changed 4 months ago by timo

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset

Do any other block tags support as var? I'm not sure it's a good idea (or feasible for that matter). Could you describe your use case? Do you have interest in trying to implement it?

comment:2 Changed 4 months ago by mitar

Ehm, use case is string interpolation. I cannot use {% trans "foo {{ bar }}" as var %}. Having only constant translated strings are vars is a bit problematic.

I use that for setting title of the page ({% blocktrans %}{{ username }}'s block{% endblocktrans %}) and I would like to set it to the context variable so that I can reuse it around (title, heading, links ...).

Currently I am using this custom tag to achieve this. But I think this would be useful in the tag itself. Or maybe {% trans "foo {{ bar }}" as var %} should be supported at least? And _("foo {{ bar }}").

comment:3 Changed 4 weeks ago by bmihelac

  • Cc bmihelac@… added

comment:4 Changed 4 weeks ago by bmihelac

Here is a link to branch that implements this feature and two simple tests:

https://github.com/bmihelac/django-1/compare/fix-21695-allow-blocktrans-to-set-a-context-variable?expand=1

Please note that assigning option is named asvar contrary to usual as to avoid confusion between legacy format for using with.

If there is interest in merging this I will add docs and changelog and any more tests if needed.

comment:5 Changed 4 weeks ago by aaugustin

  • Triage Stage changed from Unreviewed to Accepted

It seems that every tag is going to gain this feature eventually...

comment:6 Changed 4 weeks ago by mitar

This is why I created this tag which simply sets the context based on whatever is in there. Then there is no need to modify all tags to be able to set context. DRY. :-)

Add Comment

Modify Ticket

Change Properties
<Author field>
Action
as new
The owner will be changed from nobody to anonymous. Next status will be 'assigned'
as The resolution will be set. Next status will be 'closed'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.