Fixed #5603 -- Allow customization of the language cookie name. Thanks, moe.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@7185 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2008-02-29 18:38:44 +00:00
parent 2dbb08e5dc
commit efed04b634
5 changed files with 18 additions and 7 deletions

View File

@ -91,8 +91,8 @@ LANGUAGES_BIDI = ("he", "ar", "fa")
# If you set this to False, Django will make some optimizations so as not # If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery. # to load the internationalization machinery.
USE_I18N = True USE_I18N = True
LOCALE_PATHS = () LOCALE_PATHS = ()
LANGUAGE_COOKIE_NAME = 'django_language'
# Not-necessarily-technical managers of the site. They get broken link # Not-necessarily-technical managers of the site. They get broken link
# notifications and other various e-mails. # notifications and other various e-mails.

View File

@ -355,7 +355,7 @@ def get_language_from_request(request):
if lang_code in supported and lang_code is not None and check_for_language(lang_code): if lang_code in supported and lang_code is not None and check_for_language(lang_code):
return lang_code return lang_code
lang_code = request.COOKIES.get('django_language') lang_code = request.COOKIES.get(settings.LANGUAGE_COOKIE_NAME)
if lang_code and lang_code in supported and check_for_language(lang_code): if lang_code and lang_code in supported and check_for_language(lang_code):
return lang_code return lang_code

View File

@ -28,7 +28,7 @@ def set_language(request):
if hasattr(request, 'session'): if hasattr(request, 'session'):
request.session['django_language'] = lang_code request.session['django_language'] = lang_code
else: else:
response.set_cookie('django_language', lang_code) response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code)
return response return response
NullSource = """ NullSource = """

View File

@ -547,7 +547,7 @@ following this algorithm:
* First, it looks for a ``django_language`` key in the the current user's * First, it looks for a ``django_language`` key in the the current user's
`session`_. `session`_.
* Failing that, it looks for a cookie called ``django_language``. * Failing that, it looks for a cookie that is named according to your ``LANGUAGE_COOKIE_NAME`` setting (the default name is: ``django_language``).
* Failing that, it looks at the ``Accept-Language`` HTTP header. This * Failing that, it looks at the ``Accept-Language`` HTTP header. This
header is sent by your browser and tells the server which language(s) you header is sent by your browser and tells the server which language(s) you
prefer, in order by priority. Django tries each language in the header prefer, in order by priority. Django tries each language in the header
@ -719,7 +719,8 @@ Activate this view by adding the following line to your URLconf::
The view expects to be called via the ``POST`` method, with a ``language`` The view expects to be called via the ``POST`` method, with a ``language``
parameter set in request. If session support is enabled, the view parameter set in request. If session support is enabled, the view
saves the language choice in the user's session. Otherwise, it saves the saves the language choice in the user's session. Otherwise, it saves the
language choice in a ``django_language`` cookie. language choice in a cookie that is by default named ``django_language``
(the name can be changed through the ``LANGUAGE_COOKIE_NAME`` setting).
After setting the language choice, Django redirects the user, following this After setting the language choice, Django redirects the user, following this
algorithm: algorithm:

View File

@ -579,6 +579,16 @@ in standard language format. For example, U.S. English is ``"en-us"``. See the
.. _internationalization docs: ../i18n/ .. _internationalization docs: ../i18n/
LANGUAGE_COOKIE_NAME
--------------------
Default: ``'django_language'``
The name of the cookie to use for the language cookie. This can be whatever
you want (but should be different from SESSION_COOKIE_NAME). See the
`internationalization docs`_ for details.
LANGUAGES LANGUAGES
--------- ---------
@ -822,8 +832,8 @@ SESSION_COOKIE_NAME
Default: ``'sessionid'`` Default: ``'sessionid'``
The name of the cookie to use for sessions. This can be whatever you want. The name of the cookie to use for sessions. This can be whatever you want (but
See the `session docs`_. should be different from ``LANGUAGE_COOKIE_NAME``). See the `session docs`_.
SESSION_COOKIE_PATH SESSION_COOKIE_PATH
------------------- -------------------