更新: 对于 Django 3+, 使用 gettext_lazy
替代 ugettext_lazy
。如下所示:
from django.utils.translation import gettext_lazy as _
好的。我已经找到了如何翻译应用程序名称而不更改数据库名称的方法。
示例(在要翻译的应用程序的apps.py
中):
from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _
class MyAppConfig(AppConfig):
name = 'MyApp'
verbose_name = _('Transalation of MyApp here')
运行makemessages -a
,在修改了django.po
文件后运行compilemessages
,然后你就完成了。在管理页面刷新一下,你的应用程序名称就被翻译了。
__init__.py
中添加 default_app_config = 'myapp.apps.MyAppConfig'
。我建议您添加该代码行以确保应用程序配置正确加载。 - dmcontadorINSTALLED_APPS = [
...
'MyApp.apps.MyAppConfig'
...
]
- Aldian Fazrihady可能回答这个问题有点晚了,但我想分享一下我的经验。
在model.py中添加如下代码:
VERBOSE_NAME = _('Appname')
django-admin.py makemessages -a
django-admin.py compilemessages
这将会给django.po添加一条记录。
Model._meta.app_label
来显示应用程序名称。有关更多信息,请查看管理视图和其模板。# "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
my_app
在法语中被翻译为黄色的 nom_app
。 *我不知道如何将标签 persons
翻译为蓝色。
我不知道你使用的是哪个CMS,所以我只能给你提供下面的示例代码。也许你可以像这样更改你的models.py文件中的字段:
class Entry(models.Model):
title = models.CharField(u'标题',max_length=300)
# other fields here
上面的代码在我的项目(django 1.4.2)中运行良好,CharField()中的第一个参数(字符串)将显示在我的管理视图中,我认为这对你很有用。