i18n не работает при смене языкового префикса

Мой тест локали i18n не работает должным образом, каталог выглядит так:

введите здесь описание изображения mysite.urls.py

from django.contrib import admin
from django.conf.urls import patterns, include, url
from django.conf.urls.i18n import i18n_patterns

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


urlpatterns += i18n_patterns(
    url(r'^admin/', include(admin.site.urls)),
    url(r'^localedemo/$', include('localedemo.urls')),

    # url(r'^$', 'localedemo.views.home', name='home'),
    # url(r'^i18n/', include('django.conf.urls.i18n')),
)

localedemo/urls.py

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.index, name="index"),
    # url(r'^set-language/', views.set_language, name='set-language'),
]

localedemo/views.py

from django.shortcuts import render
from django.http import HttpResponse
from django.utils.translation import ugettext_lazy as _
from django.utils import translation
def index(request):
    translation.activate('zh_CN')
    language = translation.get_language_from_request(request)
    print("language:" + language)
    #Translators: This message appears on the home page only
    output = _("Welcome to my site.")
    str = {'mystr': output}
    return render(request, 'localedemo/index.html',str)

при запуске сервера результат такой:

Изображение результата

когда я меняю префикс языка, это не работает: результат не работает

django.po в каждом субфордере языка

msgid "Welcome to my site."
msgstr "this is english website"

msgid "Welcome to my site."
msgstr "中文网站"

msgid "Welcome to my site."
msgstr "中文繁体网站"

и localedemo/templates/index.html

 

   {% load i18n %}
    <html !DOCTYPE=html>
    <head><title>hi</title></head>
    <body>
    <div>
    	<h1>Hello, world!</h1>.

    	<h1>{% trans mystr %}</h1>
    	<h1>{{ mystr }}</h1>
    </div>

    <div>

    <form action="/i18n/setlang/" method="post">
    {% csrf_token %}
        <input name="next" type="hidden" value="/" />

        <select name="language">

            {% for lang in LANGUAGES %}

                    <option value="{{ lang.0 }}" {% if lang.0 == SELECTEDLANG %}selected{% endif %}>{% if lang.1 == 'Spanish' %}Español{% else %}{{ lang.1 }}{% endif %}</option>

            {% endfor %}

        </select>

        <input type="submit" value="Go" />

    </form>

    </div>

    <div>

        {% get_current_language as LANGUAGE_CODE %}
    <!-- Current language: {{ LANGUAGE_CODE }} -->
    <p>{% trans "Welcome to my site." %}</p>

    {% language 'en' %}
        {% get_current_language as LANGUAGE_CODE %}
        <!-- Current language: {{ LANGUAGE_CODE }} -->
        <p>{% trans "Welcome to my site." %}</p>
    {% endlanguage %}
    </div>
    </body>
    </html>

и когда я выбрал язык в списке: введите здесь описание изображения

я что-то пропустил или где-то я сделал неправильно? кто-нибудь может мне помочь? заранее спасибо


person Peng Kim    schedule 20.04.2016    source источник


Ответы (1)


Проверьте свой mysite/urls.py. URL-адрес вашего индекса начинается с localedemo

url(r'^localedemo/$', include('localedemo.urls')) 

и вы передаете значение next как /. Поэтому либо измените его на localedemo/, либо переместите URL-адрес индекса на mysite/urls.py.

person Satyajeet    schedule 21.04.2016