How can I translate the application label in the Django CMS admin?
See the screenshot:
UPDATE: For Django 3+ import gettext_lazy
instead of ugettext_lazy
. Like this:
from django.utils.translation import gettext_lazy as _
OK. I have found how to translate the app name without changing the database name.
Example (inside apps.py
of app you want to translate):
from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _
class MyAppConfig(AppConfig):
name = 'MyApp'
verbose_name = _('Transalation of MyApp here')
Run makemessages -a
and after altering django.po
run compilemessages
and you are done. Hit refresh in admin and your app name is translated.
It might too late to answer this question but i am sharing my experience.
Add below mention code to model.py
VERBOSE_NAME = _('Appname')
After the use this
django-admin.py makemessages -a
django-admin.py compilemessages
This will add entry to django.po.
The answer below was correct for Django 1.4 or 1.5, I believe. For more modern answer, see https://stackoverflow.com/a/32431808/1067717
Have a look at this previously asked question on the similar topic for internationalization in Django.
Internally, it uses Model._meta.app_label
to display the application name. Inspect admin view and its template for further information.
I don't know which CMS you used,so I just give you a sample code below. Maybe you can change the fields in your models.py file like this:
class Entry(models.Model):
title = models.CharField(u'标题',max_length=300)
# other fields here
The code above is work well in my project(django 1.4.2),the first param(string) in CharField() will display in my Admin view,I think it is useful for you.
The full code in my project:https://github.com/tianyu0915/pythoner.net/blob/master/pythoner/wiki/models.py#L69
I use Django 4.2.1 and for example, you can translate an application label by adding verbose_name to MyAppConfig
class in my_app/apps.py
as shown below. *You should use gettext_lazy() instead of gettext() otherwise there is an error and you can see my answer explaining how to translate in Django:
# "my_app/apps.py"
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
class MyAppConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'my_app'
verbose_name = _('my_app') # Here
Then, my_app
is translated to nom_app
in French in yellow as shown below. *I don't know how to translate the model label persons
in blue: