Джанго Сет Язык не работает - PullRequest
3 голосов
/ 13 декабря 2011

Я сейчас работаю над сайтом. Я начал работать над его интернационализацией.

Код для меню выбора языка:

<form action="/i18n/setlang/" method="post">
    <select name="language">
    {% for lang in LANGUAGES %}
    <option value="{{ lang.0 }}">{{ lang.1 }}</option>
    {% endfor %}
    </select>
    <input type="submit" value="Go" />
</form>

{{ LANGUAGE_CODE }}

Но, похоже, это не работает. Он просто перенаправляет на ту же страницу

Я добавил

  1. (r'^i18n/', include('django.conf.urls.i18n')) до urls.py;

  2. 'django.middleware.locale.LocaleMiddleware' до MIDDLEWARE_CLASSES в settings.py

  3. 'django.core.context_processors.i18n', до TEMPLATE_CONTEXT_PROCESSORS в settings.py

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

UPDATE

Когда я добавлю

LANGUAGES = (
  ('es', _('Spanish')),
  ('en-US', _('AmericanEnglish')),
)

в settings.py я получаю

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Иначе хотя бы сайт работает

Ответы [ 3 ]

1 голос
/ 13 декабря 2011

Перенаправление на ту же страницу по умолчанию является представлением django.views.i18n.set_language (если вы не отправите другой URL в следующем параметре).

Я предлагаю вам проверить, установлен ли языковой файл cookie илине (как анонимный пользователь).

Если файл cookie не установлен, проверьте правильность отправляемого вами языкового кода.

Обратите внимание, что код языка действителен (по мнению Джанго), только если«его» код локали отображается на папку в django / conf / locale (не только папку, но и правильную папку локали, такую ​​как locale_code / LC_MESSAGES / django.po)

с просмотром в django.utils.translations.trans_real.py (проверка языка, lang to locale ...) и в django / views / i18n.py очень помогают:)

0 голосов
/ 12 июля 2015

Добавьте явную <input name="next" value="/" type="hidden"/> в форму для перенаправления в корень сайта.В противном случае это не сработало бы для меня.

0 голосов
/ 13 декабря 2011

Вы должны убедиться, что отправляете RequestContext .

return render_to_response('foo.html',context_instance=RequestContext(request))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...