Le code html est le suivant :
<form action="/i18n/setlang/" method="post" id="change_language_form">
{% csrf_token %}
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<td>
<a href="#" lang_code="{{ language.code }}" class="change_language">
{% if language.code == "zh-cn" %}
简体
{% else %}
Eng
{% endif %}
</a>
</td>
{% endfor %}
<input type="hidden" value="" name="language" id="language" />
</form>
</form>
code js :
$('.change_language').click(function(e){
e.preventDefault();
$('#language').val($(this).attr('lang_code'));
$('#change_language_form').submit();
return false;
}
);
django settings.py est défini comme suit :
. . . . . . . . . . . . . . . . .
USE_I18N = True
# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True
ugettext = lambda s: s
LANGUAGES = (
('zh-cn', ugettext('Chinese')),
('en', ugettext('English')),
)
MIDDLEWARE_CLASSES = (
'middleware.createuserinfo.CreateUserInfoMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.locale.LocaleMiddleware',
'pagination.middleware.PaginationMiddleware',
'django_authopenid.middleware.OpenIDMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
'django.middleware.transaction.TransactionMiddleware',
'djangobb_forum.middleware.LastLoginMiddleware',
'djangobb_forum.middleware.UsersOnline',
)
. . . . . . . . . . . . . . . . . . . . . . . . . .
Le paramètre urls.py dans djangoz a été ajouté
url(r'^i18n/', include('django.conf.urls.i18n'))
Déconnectez-vous simplement de tous les middlewares avec cache