Opened 12 years ago

Last modified 7 years ago

#10436 closed

Application names i18n in the admin app broken — at Version 4

Reported by: Ramiro Morales Owned by: Ramiro Morales
Component: contrib.admin Version: master
Severity: Normal Keywords: blocktrans trans app_label breadcrumbs capfirst title app-loading
Cc: Ben Spaulding, Jannis Leidel, basti@…, someuniquename@… Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Ramiro Morales)


{% blocktrans with as name %}{{ name }}{% endblocktrans %}

as we currently do in some admin templates shows a decision has been made to provide developers the means to translate application names.

Problem is this feature was DOA (r3270, django/contrib/admin/templates/admin/index.html, similar template code was copied since then to another file: r8474, app_index.html)

See relevant django-users and django-i18n threads for the details.

The attached patch implements as a fix the awkward manual steps needed to workaround this bug outlined by the user patrikk in the first thread with the following enhancements:

  • index, app_index: Moved the markup-as-translatable of app names from the template to the view code so the translators don't need to translate a second title()'d version of every app name.
  • Consistent use of the capfirst filter over the app names in the breadcrumbs of the different views.
  • Don't touch base_site.html in order to provide for translatability of the app name in the <title> HTML tag for the application-specific model list view. Implement the needed change in the relevant view (app_index) instead (replacing a "%s administration" msgid with a more translator-friendly "%(app_label)s administration" one in the process). This will spare translators having to translate both "<appaname>" and a "<appaname administration" literals.
  • Extend above fixes to other templates that also need them (delete_confirm.html, object_history.html)

Note 1: The change_form.html template ran the app label (in addition to the capfirst filter) through the escape filter. This has been dropped because it seems inconsistent with what is done in rest of the templates, and because the app name isn't user-provided content.

Note 2: There seems to be some inconsistency on how the app name is a) .title()'d for the name that appear in the caption of model tables (index and app_index views`) and b) |capfirst'd for use in HTML title and breadcrumbs. This has been left untouched to avoid introducing a backward incompatible change.

Note 3: A further enhancement would be to move presentation-related munging (like calling .title() and/or capfirst() in view code) from views to templates if/when #5972 gets committed (will try to work on adding test+docs to it) but meanwhile this fix can solve this bug now with what we have at hand.

Several of the problems exposed above had already been reported in #9273.

Change History (6)

Changed 12 years ago by Ramiro Morales

comment:1 Changed 12 years ago by Ramiro Morales

Summary: Application names i10n in the admin app brokenApplication names i18n in the admin app broken

comment:2 Changed 12 years ago by Alex Gaynor

Triage Stage: UnreviewedAccepted

comment:3 Changed 12 years ago by Ben Spaulding

Cc: Ben Spaulding added

comment:4 Changed 11 years ago by Ramiro Morales

Description: modified (diff)

(made description more clear)

Changed 11 years ago by Ramiro Morales

Patch updated to trunk post-bulk-edit and post-r10234

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