如何在Django管理员中翻译模型的复数?

DP_*_*DP_ 6 python django django-models django-admin

我有一个名为Django的应用程序Topic.我想在Django管理员中翻译这个模型的复数(参见下面屏幕截图中的红色椭圆).

截图

为了做到这一点,我做了以下事情:

1)在models.py中为模型添加了一个Meta类:

from django.utils.translation import ugettext_lazy as _

class Topic(models.Model):
    title = models.CharField(max_length=140)

    def __unicode__(self):
        return self.title
    class Meta:
        verbose_name = _('topic')
        verbose_name_plural = _('topics')
Run Code Online (Sandbox Code Playgroud)

2)Ran django-admin.py makemessages -l ru-RU,生成一个文件locale/ru/django.po.

3)在django.po文件中添加了翻译:

msgid "topic"
msgstr "????"

msgid "topics"
msgstr "????"
Run Code Online (Sandbox Code Playgroud)

4)跑django-admin.py compilemessages.

5)更改settings.py以便在那里进行以下设置:

LANGUAGE_CODE = 'ru-RU'

ugettext = lambda s: s

LANGUAGES = (
  ('ru-RU', ugettext('Russian')),
)

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.locale.LocaleMiddleware',
)

USE_I18N = True

USE_L10N = True
Run Code Online (Sandbox Code Playgroud)

但它仍然不起作用(管理员中标记的字母仍然以英文显示,而不是俄文).

我该怎么做才能解决这个问题?

更新1(2013年9月28日13:26):我的目录结构可能有问题.这里是:

目录结构

Mee*_*how 4

  1. 可能localedir 不在您的应用程序目录中或未在LOCALE_PATHS. https://docs.djangoproject.com/en/dev/topics/i18n/translation/#how-django-discovers-translations

  2. 它应该生成一个文件locale/ru-RU/LC_MESSAGES/django.po