2016-04-20 2 views
0

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

enter image description here 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. ру

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'), 
] 

localede мо/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) 

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

result image

, когда я изменить префикс языка, он не работал: the result not work

Джанго. po в каждом подфвоте подкатегорий

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

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

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

и localedemo/шаблоны/index.html


 

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

 
    \t <h1>{% trans mystr %}</h1> 
 
    \t <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>

и когда я выбрал язык в ListBox: enter image description here

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

ответ

0

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^