2012-10-10 5 views
9

私はこれについて狂ったように検索しています。django翻訳テンプレート{%trans "something"%}

私はこの問題は、Djangoは私のテンプレートで簡単な{%のトランス「仕事」%}を翻訳しないだろうということですDjangoの1.4

を使用しています。

これは私がやっていることです:

Settings.py:

LANGUAGE_CODE = 'en-us' 
USE_I18N = True 
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.messages.middleware.MessageMiddleware', 
    # Uncomment the next line for simple clickjacking protection: 
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware', 
) 
TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth", 
    "django.core.context_processors.debug", 
    "django.core.context_processors.i18n", 
    "django.core.context_processors.media", 
    "django.core.context_processors.static", 
    "django.core.context_processors.request", 
) 

LOCALE_PATHS = (
    '/home/m00p/PycharmProjects/astrid/locale' 
) 

これは私のマップ構造である:

/ 
myproject/ 
apps/ 
locale/ 
template/ 

だから私は

django-をrunned admin.py makemessages -l nl -i settings.py

、それが正常にロケールフォルダに作成なかったNL/LC_MESSAGES/django.po、私はそれはdjango.poで見つかった翻訳を編集

#: templates/base.html:22 
msgid "work" 
msgstr "ddddddddddddd" 

私は、コンパイルコマンドを実行します

django-admin.py compilemessages

、それはまた、正常に正しい倍でdjango.moファイルを作成えー

私はだから私は行くときの言語に

<form action="/i18n/setlang/" method="post"> 
    {% csrf_token %} 
    <input name="next" type="hidden" value="/" /> 
    <select name="language"> 
     {% get_language_info_list for LANGUAGES as languages %} 
     {% for language in languages %} 
      <option value="{{ language.code }}">{{ language.name_local }} ({{ language.code }})</option> 
     {% endfor %} 
    </select> 
    <input type="submit" value="Go" /> 
</form> 

を変更できるようにbase.htmlファイルでこれを追加でmyproject/urls.py

urlpatterns = patterns('', 
    url(r'^i18n/', include('django.conf.urls.i18n')), 
) 

urlpatterns += i18n_patterns('', 
    url(r'^$', 'front.views.home', name='home'), 
) 

でも、これを追加ウェブサイトには127.0.0.1:8000/en/というURLがありますが、englischがデフォルトの言語であるため、フォームでNLに変更すると正しいです。127.0.0.1:8000/nl/にリダイレクトされますが私が翻訳したテキストは変わらなかった。また、{LANGUAGE_CODE}を表示するとNLと表示されるので、言語がNLであることも確信しています。

なぜ変わらないのですか?私はそれを動作させるために、私は忘れてしまった事を加えるたときm00p

PROBLEM

おかげでプロセス中

を解決し、私は私の展開サーバーを再起動しますが、私はは私のキャッシュをクリアしていませんでしたブラウザまだ古いページを使用していたので、Chromeでブラウザデータを消去してページを再訪し、言語を変更したときに正しく翻訳されました。とにかくおかげさまで、ありがとう!

+0

私はこの多言語のコンセプトも使用していますが、私が行ったことを正確に行いましたが、私のdjango.poファイルにはテンプレートファイルの行が含まれていません。あなたの.poファイルには '#:templates/base.html:22 が含まれていますので、作業は' '....ですが、サイトパッケージ/ django **内のすべてのファイルが含まれているのではなく**(i.ie、 admin part)私はこれらの管理ファイルを編集したくないですが、気象翻訳が動作しているかどうかを編集しますが、この管理部分でも機能しません。 ....私の主な問題は、私が編集できるテンプレートデータを表示する方法です。 – Inforian

+1

.poファイルがそれを選ぶように、 '{%load i18n%} {%trans" Hello "%}' をテンプレート内に指定しました。私は.poファイルに翻訳されたデータを追加することができますが... .poファイルの中でこれらのテンプレートを選択しません..... ??? – Inforian

答えて

5

Django 1.4では、プロジェクトルートのロケールディレクトリはサポートされなくなりました。デフォルトでは空のLOCALE_PATHS設定に追加する必要があります。 Django Settings

しかし、ロケールの生成に関係する管理コマンドは機能しているようですので、すでに行っているかどうかわかりません。

+0

私はそれをしましたが、何も変わっていませんでした:( – m00p

12

私はちょうど私の新しいプロジェクトSportolioでの作業中にDjangoの1.5でこの問題を解決しようとすると、数時間を過ごしたし、それは私がカンマが欠落していたが判明 LOCALE_PATH

LOCALE_PATHS = (
    '/path/to/my/project/locale/', 
) 

の最後にこれは非常にありますDjangoはLOCALE_PATHSがTUPLEではないことを期待しているため、非常に重要です。

私はそれが誰かの人生を救いたいと思っています:)

+2

+1はカンマに関連する説明です! –

0

私は同じ状況でした。フレーズの一部は翻訳されていましたが、ほとんどの人がキーを示しました。 enとfaの2つの主要言語があります。両方とも同じ問題を抱えていた。 私はDjangoの翻訳について、同じ問題とすべての単一のドキュメントをオンラインで見直しました。私はほとんどすべてを試みたと言うことができます。 唯一の違いは、本番サーバーでテストしていたことです。 そして私はサーバーをリロードしませんでした! だから、この1行のコマンドは、私の悲惨さの外に連れて行ってくれました。私が間違ってやっていた

sudo /etc/init.d/uwsgi reload 

私が代わりにuwsgiのWSGIを再開しました!

あなたは私がやったことをやりたい場合は、ここにある: 私は、サーバー上でこの順番で手順を実行します。

django-admin makemessages -l en 
django-admin makemessages -l fa 

はペルシャフレーズとテストするために、いくつかの英語のテキストを追加します。

django-admin compilemessages 
python manage.py clear_cache 
python manage.py runserver 

サーバーはエラーなしで実行されます。しかし、enやfaの変更は起こりません。 djangoが古いキャッシュからロードしているようです。だから、私は全体のキャッシュを削除し、さらにサーバーからすべてのファイルを削除し、プロジェクト全体を再度インストールしました。しかし、同じ問題です。

私のラップトップで私のdjangoからのメッセージを作成し、サーバーに送信しました。 また、poとmoファイルを生成するために、別のテキストエディタや翻訳ツール( など)を試しました。しかし、問題は引き続き表示されます。それらの

{% trans ' ' %} 
{% trans " " %} 
{% blocktrans %} {% endblocktrans %} 
{% trans "xyz" az XYZ %} {{ XYZ }} 
{{ _() }} 

どれも働いた:

は、私はそれがそれらのいずれかで動作するかどうかを確認するために、トランスタグを使用して交換しました!

しかし、サーバーをリロードするとすべてが順番に入れられます。 私はそれがいくつかの人に役に立つかもしれないことを願っています。

関連する問題