如何在Django CMS Admin中翻译应用标签?

8
如何翻译Django CMS管理界面中的应用标签?
请参考截图:

Screenshot


你是在问它被翻译到哪里了吗? - karthikr
5个回答

34

更新: 对于 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,然后你就完成了。在管理页面刷新一下,你的应用程序名称就被翻译了。


1
虽然有时候这个方法是有效的,但并不总是如此。我遇到了一个问题,只有我的一些应用程序名称被翻译,即使我已经指定了详细名称,它仍然没有在网站上翻译。我的项目中有五个应用程序,其中三个没有翻译。 - Nathan
@Nathan。嗯...我认为你应该提出一个新问题并展示一些代码。否则,从评论部分帮助你会很困难! - nik_m
3
@Nathan 您可能忘记在 __init__.py 中添加 default_app_config = 'myapp.apps.MyAppConfig'。我建议您添加该代码行以确保应用程序配置正确加载。 - dmcontador
@dmcontador 我解决了,但这是很久以前的事情了,我忘记了我当时是怎么修复它的!哈 - Nathan
你仍然需要使用AppConfig类将应用程序添加到INSTALLED_APPS中:INSTALLED_APPS = [ ... 'MyApp.apps.MyAppConfig' ... ] - Aldian Fazrihady
1
"ugettext_lazy" 应该改为 "gettext_lazy"。 - tinyhare

4

可能回答这个问题有点晚了,但我想分享一下我的经验。

在model.py中添加如下代码:

VERBOSE_NAME = _('Appname')

使用这个后
django-admin.py makemessages -a
django-admin.py compilemessages

这将会给django.po添加一条记录。


你是在说模型元类还是应用程序名称? - washiur17
它的模型元类 - Vishnu

2

谢谢Seyeong!更改meta.app_label也会更改数据库名称 - 这是我想避免的,但似乎没有其他选择。 - Nikolay Georgiev
这个答案不起作用。请使用@nik_m的答案来解决。 - Soyuzbek Orozbek Uulu

0
我使用Django 4.2.1,例如,您可以通过在`my_app/apps.py`中的`MyAppConfig`类中添加verbose_name来翻译应用程序标签,如下所示。*您应该使用gettext_lazy()而不是gettext(),否则会出现错误,您可以查看我的答案以了解如何在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

然后,在下面的示例中,my_app 在法语中被翻译为黄色的 nom_app。 *我不知道如何将标签 persons 翻译为蓝色。

enter image description here


0

我不知道你使用的是哪个CMS,所以我只能给你提供下面的示例代码。也许你可以像这样更改你的models.py文件中的字段:

class Entry(models.Model):
    title         = models.CharField(u'标题',max_length=300)

    # other fields here

pic

上面的代码在我的项目(django 1.4.2)中运行良好,CharField()中的第一个参数(字符串)将显示在我的管理视图中,我认为这对你很有用。
我的项目中完整的代码:https://github.com/tianyu0915/pythoner.net/blob/master/pythoner/wiki/models.py#L69

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接