diff --git a/AUTHORS b/AUTHORS
index 73fe3078c9..10b41c2e7c 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -81,6 +81,7 @@ answer newbie questions, and generally made Django that much better:
phaedo
Luke Plant
plisk
+ Brian Ray
Oliver Rutherfurd
David Schein
sopel
diff --git a/django/conf/locale/ru/LC_MESSAGES/django.mo b/django/conf/locale/ru/LC_MESSAGES/django.mo
index a6d883785a..32f732d601 100644
Binary files a/django/conf/locale/ru/LC_MESSAGES/django.mo and b/django/conf/locale/ru/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/ru/LC_MESSAGES/django.po b/django/conf/locale/ru/LC_MESSAGES/django.po
index bef2607074..2443f3e095 100644
--- a/django/conf/locale/ru/LC_MESSAGES/django.po
+++ b/django/conf/locale/ru/LC_MESSAGES/django.po
@@ -408,7 +408,7 @@ msgstr "
#: contrib/admin/views/main.py:423 contrib/admin/views/main.py:501
#, python-format
msgid "You may add another %s below."
-msgstr "Вы можете добавить % внизу."
+msgstr "Вы можете добавить %s внизу."
#: contrib/admin/views/main.py:441
#, python-format
diff --git a/django/contrib/auth/handlers/modpython.py b/django/contrib/auth/handlers/modpython.py
index 2694a7cfdc..ca8e047a20 100644
--- a/django/contrib/auth/handlers/modpython.py
+++ b/django/contrib/auth/handlers/modpython.py
@@ -13,7 +13,7 @@ def authenhandler(req, **kwargs):
from django.contrib.auth.models import User
# check for PythonOptions
- _str_to_bool = lambda s: s.lower() in '1', 'true', 'on', 'yes'
+ _str_to_bool = lambda s: s.lower() in ('1', 'true', 'on', 'yes')
options = req.get_options()
permission_name = options.get('DjangoPermissionName', None)
diff --git a/django/contrib/sessions/models.py b/django/contrib/sessions/models.py
index cac0a4d9db..8600ad7a9c 100644
--- a/django/contrib/sessions/models.py
+++ b/django/contrib/sessions/models.py
@@ -17,7 +17,7 @@ class SessionManager(models.Manager):
# The random module is seeded when this Apache child is created.
# Use person_id and SECRET_KEY as added salt.
while 1:
- session_key = md5.new(str(random.randint(0, sys.maxint - 1)) + SECRET_KEY).hexdigest()
+ session_key = md5.new(str(random.randint(0, sys.maxint - 1)) + str(random.randint(0, sys.maxint - 1)) + SECRET_KEY).hexdigest()
try:
self.get_object(session_key__exact=session_key)
except self.klass.DoesNotExist:
diff --git a/docs/i18n.txt b/docs/i18n.txt
index f1b1d950ca..6e83158b97 100644
--- a/docs/i18n.txt
+++ b/docs/i18n.txt
@@ -288,6 +288,10 @@ marked for translation. It creates (or updates) a message file in the directory
``conf/locale``. In the ``de`` example, the file will be
``conf/locale/de/LC_MESSAGES/django.po``.
+If run over your project source tree or your appliation source tree, it will
+do the same, but the location of the locale directory is ``locale/LANG/LC_MESSAGES``
+(note the missing ``conf`` prefix).
+
.. admonition:: No gettext?
If you don't have the ``gettext`` utilities installed, ``make-messages.py``