0

My i18n locale test not work as expected,the directory is like this:

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.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)

when run server ,the result is:

result image

when i change the language prefix , it not worked: the result not work

the django.po in each language subforder is

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

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

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

and the 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>

and when i selected the language in the listbox: enter image description here

did i miss something or anywhere i did wrong? anyone can help me ? thanks in advance

Jim
  • 767
  • 1
  • 10
  • 24

1 Answers1

0

Check your mysite/urls.py. Your index url starts with localedemo

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

and you are passing next value as /. So either change it to localedemo/ or move index url to mysite/urls.py.

Satyajeet
  • 2,004
  • 15
  • 22