5

Django 1.4 では、サイトにトルコ語 ('tr') と英語 ('en') の 2 つの言語を使用したいと考えています。

これは私の現在の設定です:

settings.py:

USE_I18N = True
LANGUAGES = (
    ('en', 'English'),
    ('tr', 'Turkish'),
)

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

LOCALE_PATHS = (
    '/myproject/locale/', 
)

そして、そのようなディレクトリ順序としてロケールファイルがあります:

#tr files
/myproject/locale/tr/LC_MESSAGES/django.mo
/myproject/locale/tr/LC_MESSAGES/django.po
#en files
/myproject/locale/en/LC_MESSAGES/django.mo
/myproject/locale/en/LC_MESSAGES/django.po

そして、シェルから試してみても、翻訳をまだ見ることができません ({% trans "Corporate" %} のようなテンプレートでも機能しません):

>>> from django.utils import translation
>>> translation.activate('tr')
>>> translation.ugettext('Corporate')
u'Corporate'

ここで何か不足していますか?奇妙なことに、元の Django にはこれらの翻訳がありますが、私の翻訳ファイルがないため、「ホーム」などの単語は翻訳されます。

4

1 に答える 1

13

あなたの場合LOCALE_PATHS、ロケールディレクトリへの絶対パスを入力する必要があります。

LOCALE_PATHS = (
    '/home/path_to_your_project/myproject/locale/', 
)

そこに相対パスを設定しようとしたと思います。

私は同様の問題を抱えていました.django 1.3を使用していて、ロケールディレクトリがプロジェクトのルート、つまりsettings.pyおよびmanage.pyファイルの近くにありました。しかし、django 1.4 でプロジェクトを作成すると、プロジェクトのディレクトリ構造が変更されました。settings.py は myproject/myproject フォルダーに移動しました。私はまだlocalemyproject/ にフォルダーを作成しています (myproject/myproject ではありません)。また、django 1.4 では動作しなくなりました。

ドキュメンテーションを読んで、django が自分のlocaleフォルダーを見つけられないことを理解しました。だから私を助ける解決策 - localedirをmyproject/myprojectに移動し、何も設定しないか、 dirをmyproject/パスにLOCALE_PATHS残し、タプルlocaleのsettings.pyにフルパスを追加します。LOCALE_PATHS

于 2012-07-23T09:35:27.447 に答える