6

というモデルの Django アプリケーションがありますTopic。このモデルの複数形を Django admin で翻訳したいと考えています (下のスクリーンショットの赤い楕円を参照)。

スクリーンショット

これを行うために、次のことを行いました。

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')

django-admin.py makemessages -l ru-RU2)ファイルを生成したRan locale/ru/django.po

django.po3)ファイルに翻訳を追加:

msgid "topic"
msgstr "Тема"

msgid "topics"
msgstr "Темы"

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

しかし、それでも機能しません (アドミンでマークされた文字は、ロシア語ではなく英語で表示されます)。

これを修正するにはどうすればよいですか?

更新 1 (28.09.2013 13:26):ディレクトリ構造に問題がある可能性があります。ここにあります:

ディレクトリ構造

4

3 に答える 3

4
  1. おそらくlocaledir はアプリのディレクトリに存在しないか、 で定義されていませんLOCALE_PATHShttps://docs.djangoproject.com/en/dev/topics/i18n/translation/#how-django-discovers-translations

  2. ファイルを生成する必要がありますlocale/ru-RU/LC_MESSAGES/django.po

于 2013-09-24T17:17:07.447 に答える
3

アプリの翻訳をアプリ フォルダー自体に追加することをお勧めします。これにより、移植性が高くなり、見つけやすくなります。また、あなたの問題を解決するのに役立つかもしれません。

アプリ内に「locale」フォルダーを作成します。

my-site/opinions/locale/

アプリ フォルダー内に立って、「django-admin.py makemessages -l ru-RU」コマンドを実行します。必要な翻訳を空白にして django.po ファイルを作成する必要があります。

不足している翻訳を埋めたら、「django-admin.py compilemessages」を実行し、念のためサーバーを再起動してください。

また、settings.py ファイルでは、フォルダーにハードコードされた文字列を使用しないでください。動的に取得することをお勧めします。

import os
PROJECT_ROOT = os.path.realpath(os.path.dirname(__file__))
LOCALE_PATHS = (os.path.join(PROJECT_ROOT, 'locale'), )

この最後のコードは、locale フォルダーが settings.py ファイルと一緒にあることを前提としています。

于 2013-09-27T16:31:12.440 に答える