2012-06-13 9 views
0

Я создаю многоязычные парты. Я хочу перевести контент в соответствии с выбранным мной языком. i этот код Django i18n setlang view gives Error 404 Когда я выбираю язык, метод почты - это вызов i18n/setlang & снова появляется на той же странице, но контент не изменяется. Может ли кто-нибудь помочь мне решить эту проблему?Перевод текста в Django с использованием i18n

Благодарности

настройки

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 (г '^ i18n /', включают в себя ("Джанго .conf.urls.i18n ')),
Это означает, что при отправке формы он вызывает метод set_language из файла i18n.py django.

Я проверяю этот метод, в этом методе «check_for_language (lang_code) возвращает false»
, почему переменная сеанса не установлена.

Может кто-нибудь, пожалуйста, скажите, почему это не установлено?
В настройках будут внесены изменения, чтобы задать путь к языку.
Я создал папку локали в моей папке проекта.

+0

следовали ли вы в Джанго документации и установку соответствующего Locale промежуточного слоя? Другими словами, разместите свои соответствующие настройки, форму и посмотрите пожалуйста –

+0

Спасибо за ответ. Я добавляю код, который я использую для перевода языка. Не могли бы вы рассказать и сказать мне, что я должен делать неправильно? – Meenakshi

+0

Добавьте вид, пожалуйста. –

ответ

0

404 означает, что вы вызываете страницу, которая не существует. По вашим комментариям я понимаю, что у вас нет конечной точки по адресу /i18n/lang/.

Пример:

from django.views.i18n import set_language 

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

Однако, если вы хотите, чтобы некоторые нестандартное поведение так взглянуть на set_language и создать свою собственную реализацию

+0

, но set_language уже доступен в i18n – Meenakshi

+0

Я не получил ошибку 404. Метод метода post корректно.Я просто хочу получить ответ на пост в качестве кода языка и перезагрузить одну страницу с этим языком. – Meenakshi

+0

Если вы не получили 404, то действительно, какой у вас код просмотра на **/i18n/lang/**, потому что там должно быть что-то ;-) –

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