0

多言語フラットページを作成しています。選択した言語に従ってコンテンツを翻訳したい。このコードを参照すると、 Django i18n setlang ビューでエラー 404 が返さ れます。言語を選択すると、post メソッドは i18n/setlang の呼び出しであり、再び同じページに移動しますが、コンテンツは変更されません。誰でもこの問題を解決するのを手伝ってもらえますか?

ありがとう

設定

gettext = lambda s: s

LANGUAGES = (
    ('en', gettext('English'),),
    ('no', gettext('Norwegian'),),
)

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.i18n',
    'multilingual.context_processors.multilingual',
    'django.core.context_processors.media',
)

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

テンプレート

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


 **view.py**
 def index(request):
    return render_to_response('flatpages/index.html', locals(),   context_instance=RequestContext(request))

**index.html**
 {% block content %}
 {% load i18n %}
     <h1>{{ flatpage.title }}</h1>
     Language Code:{{ LANGUAGE_CODE}}<br>
     {% trans "Hello" %}<br>
     {% trans "Home" %}<br>
     {{ flatpage.content }}
 {% endblock content %}

上記のコードでは、
url (r'^i18n/', include('django.conf.urls.i18n')) を
使用しています。これは、フォームが送信されたときに、django の i18n.py ファイルからメソッド set_language を呼び出すことを意味します。

そのメソッドで、そのメソッド「check_for_language(lang_code) returns false」
で、セッション変数が設定されていない理由を確認します。

これが設定されていない理由を誰か教えてください。
ロケールのパスを設定するための設定に変更があります。
プロジェクトフォルダーに locale フォルダーを作成しました。

4

1 に答える 1

0

404 は、存在しないページを呼び出していることを意味します。あなたのコメントにより、 にエンドポイントがないことがわかりました/i18n/lang/

例:

from django.views.i18n import set_language

url('^i18n/setlang/$', set_language)

ただし、カスタムの動作が必要な場合は、 set_language を見て、独自の実装を作成してください

于 2012-06-14T09:11:57.900 に答える