Let's say I have a Django app "users". The admin menu shows this as category "Users". That's ok, but if the website users speak another language I want this name translated. Also I'm not necessarily using "Users" as name in the admin menu as section name, but can use something more descriptive. "Website Users", as example.
Rename the section
Renaming the section name in the admin menu is easy to do. Open the "apps.py" file and add one line to the "Meta" class:
verbose_name = "Website Users"
The whole file should look similar to:
from django.apps import AppConfig class UsersConfig(AppConfig): name = 'users' verbose_name = 'Website Users'
Translate the name
Using a translated name is a bit more work, because the entire Django translation framework must be in place. That's necessary to do anyway if you want to provide translations in your website, and is not part of this blog posting.
Once the framework is activated, all what's necessary is importing the translation module, use a translated string, and provide a translation:
from django.apps import AppConfig from django.utils.translation import gettext_lazy as _ class UsersConfig(AppConfig): name = 'users' verbose_name = _('Website Users')
After updating the translations with "makemessages" and compiling the translations with "compilemessages" the admin website will start using your translation as section name.