2010-02-25 3 views
0

Я разрабатываю многоязычный сайт Django. Он имеет два языка: английский и иврит. Я хочу, чтобы язык по умолчанию для каждого первого посетителя был ивритом, независимо от того, что его браузер Accept-Language.Настройка алгоритма угадывания языков в Django

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

Я думаю, что сам я могу запрограммировать этот алгоритм, но где его «подключить»? Как я могу использовать его проект?

ответ

0

Возможно, вам не нужно ничего переоценивать. Вы можете просто проверить первую страницу (или, может быть, каждую страницу), если у пользователя уже есть языковой файл cookie и в противном случае перенаправить его в представление переадресации set_language. Таким образом, вы можете заставить язык иврит.

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

+0

Это вдохновило меня создать небольшое промежуточное программное обеспечение, которое сделало именно то, что вы сказали. (Я сделал это как промежуточное программное обеспечение, поэтому оно будет автоматически применяться ко всем страницам.) –

0

Начните с прочтения этого: http://docs.djangoproject.com/en/1.1/topics/i18n/#topics-i18n

Затем прочитать: http://docs.djangoproject.com/en/1.1/topics/i18n/internationalization/#topics-i18n-internationalization

Каждый RequestContext имеет доступ к три перевода конкретных переменных:

ЯЗЫКИ является список кортежей, в которых первым элементом является код языка , а второй - это имя языка (переведено в текущий активный ).

LANGUAGE_CODE - текущий предпочтительный язык пользователя, как строка . Пример: en-us. (См. Как Django обнаруживает языковые предпочтения.)

LANGUAGE_BIDI - это направление текущего региона. Если «Истина», это левый язык , например: Иврит, Арабский. Если Ложное это слева-направо язык, например: английский, французский, немецкий и т.д.

Если вы не используете расширение в RequestContext, вы можете получить эти значения с тремя метками:

Это то, о чем вы спрашиваете?

+0

Я прочитал вашу ссылку раньше, а также этот: http://docs.djangoproject.com/en/1.1/topics/i18n/deployment/ Но я ничего не видел о том, как настроить алгоритм. –

+0

@ cool-RR: «настроить алгоритм»? Вы имеете в виду переопределить параметры, найденные в запросе? Вы спрашиваете, как использовать «Каждый RequestContext имеет доступ к трем переменным, зависящим от текста»? –

+0

Нет. Я говорю об алгоритме, которым Django определяет язык пользователя. Проверьте функцию 'django.utils.translation.get_language_from_request'. Я хочу как-то переопределить его. –

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