2017-11-02 27 views
0

私はDjango 1.9/python3.5アプリケーションで作業しており、Djangoの翻訳ユーティリティを利用しようとしています。私は.poファイルを作成したスペイン語の翻訳のための 'es'ディレクトリを持つロケールディレクトリを持っています。それをテストするためにいくつかの翻訳があるように設定しました。Django Translations Not Working

msgid "Sign In" 
msgstr "Registrarse" 

msgid "Create an Account" 
msgstr "Crea una cuenta" 

は、私は私の設定ファイルが正しく、私は言葉がサインインし、アカウントを作成するためのDjangoの「トランス」テンプレートタグを使用して、私のテンプレートでも

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.locale.LocaleMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
    'webapp.middleware.LanguageSwitchMiddleware', 
) 

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'APP_DIRS': True, 
     'DIRS': [os.path.join(BASE_DIR, 'templates'), ], 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
       'webapp.context_processors.detail_context', 
       'django.template.context_processors.i18n' 
      ], 
     }, 
    }, 
] 

# Internationalization 
# https://docs.djangoproject.com/en/dev/topics/i18n/ 
LOCALE_PATHS = (
    os.path.join(PROJECT_ROOT, 'locale/'), 
) 

from django.utils.translation import ugettext_lazy as _ 

LANGUAGES = (
    ('en', _('English')), # first language is the default used by modeltranslations 
    ('es', _('Spanish')), 
) 

LANGUAGE_CODE = 'en-us' 

TIME_ZONE = 'America/Chicago' 

USE_I18N = True 

設定されています。選択したボックスは、テストしたアプリケーションからのContent-Language http応答ヘッダーを編集し、正常に実行されます。しかし、ヘッダーにサインアップし、作成してアカウントを作成し、スペイン語に翻訳しないでください。私は行方不明のいくつかのステップがありますか? ^^^行が手動で翻訳ファイルを作成している示唆して

HTML

{% load i18n %} 

<ul class="list-inline-xxs"> 

    {% if customer %} 
     <li> 
      Welcome, 
      <a href='{% url "customer:dashboard" %}'> 
       {{ customer.first_name }} 
      </a> 
     </li> 
     <li> 
      <a href='{% url "customer:logout" %}'> 
       {% trans 'Logout' %} 
      </a> 
     </li> 
    {% else %} 
     <li> 
      <a href='{% url "customer:login" %}'> 
       {% trans 'Sign In' %} 
      </a> 
     </li> 
     <li> 
      <a href='{% url "subscription:customer-subscribe" %}'> 
       {% trans 'Create an Account' %} 
      </a> 
     </li> 
    {% endif %} 

</ul> 
+0

すべてが大丈夫です。あなたはwebapp.middleware.LanguageSwitchMiddlewareで何を持っていますか? –

答えて

1

I have a locale directory which has an 'es' directory for spanish translations that I created a .po file in.

次に、あなたの翻訳に入れ
django-admin makemessages -a 

は、ファイルを保存し、アプリを再起動し

django-admin compilemessages 
を指定してコンパイルし、それが動作するはずです:あなたのための Django create translation filesをしてみましょう。

私はジャンゴで翻訳を行う方法を一緒に簡単な例を入れている:https://github.com/DusanMadar/Django-multilang-demo

EDIT

ジャンゴdjango-admin makemessages -h--ignore PATTERN, -i PATTERNは、サードパーティのディレクトリを無視するために使用するために必要なものであることを示唆している通り。だから何かのようにdjango-admin makemessages -a -i 3rdparty_dir

+0

私はしませんでしたが、私はテンプレート設定に追加しましたが、まだ動作しません:(テンプレートとミドルウェアの設定で質問を更新します) – JBT

+0

私の回答を編集しました – dm295

+0

私が.moファイルを取得するためにコンパイルしなかったためかもしれません。メッセージをコンパイルするためにdjango adminコマンドを実行すると、このエラーが発生します:msgfmtが見つかりませんGNU gettext tools 0.15以上がインストールされていることを確認してください – JBT