Opened 11 years ago
Closed 9 years ago
#21695 closed New feature (fixed)
Allow blocktrans to set a context variable
Reported by: | Mitar | Owned by: | Matthew Somerville |
---|---|---|---|
Component: | Template system | Version: | 1.6 |
Severity: | Normal | Keywords: | |
Cc: | mmitar@…, bmihelac@… | Triage Stage: | Ready for checkin |
Has patch: | yes | 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
.
Change History (10)
comment:1 by , 11 years ago
comment:2 by , 11 years ago
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 by , 11 years ago
Cc: | added |
---|
comment:4 by , 11 years ago
Here is a link to branch that implements this feature and two simple tests:
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 by , 11 years ago
Triage Stage: | Unreviewed → Accepted |
---|
It seems that every tag is going to gain this feature eventually...
comment:6 by , 11 years ago
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. :-)
comment:7 by , 10 years ago
Has patch: | set |
---|---|
Owner: | changed from | to
Status: | new → assigned |
I have rebased bmihelac's patch on current master, made a few changes, added more tests and documentation, and submitted a PR at https://github.com/django/django/pull/4854
I have a need for this at the moment - exactly the same situation as why it's useful for trans, using the output in multiple places (most commonly, title element and heading). It works great for trans, but if the title happens to include a variable, I'm stuck.
comment:8 by , 9 years ago
Patch needs improvement: | set |
---|
comment:9 by , 9 years ago
Patch needs improvement: | unset |
---|---|
Triage Stage: | Accepted → Ready for checkin |
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?