Commits

Anonymous committed 4d2f97c

[full-history] Trunk merge from [3517]

Comments (0)

Files changed (48)

 
 Wilson Miner <http://www.wilsonminer.com/>, who designed Django's admin
 interface, pretty error pages, official Web site (djangoproject.com) and has
-made many other contributions.
+made many other contributions. He makes us look good.
+
+Malcolm Tredinnick <http://www.pointy-stick.com/blog/>, who has made
+significant contributions to all levels of the framework, from its database
+layer to template system and documentation.
 
 Georg "Hugo" Bauer <http://hugo.muensterland.org/>, who added
 internationalization support, manages i18n contributions and has made a ton
 of excellent tweaks, feature additions and bug fixes.
 
+Luke Plant <http://lukeplant.me.uk/>, who has contributed many excellent
+improvements, including database-level improvements, the CSRF middleware and
+unit tests.
+
+Russell Keith-Magee <freakboy@iinet.net.au>, who has contributed many excellent
+improvements, including refactoring of the Django ORM code and unit tests.
+
 Robert Wittams <http://robert.wittams.com/>, who majorly refactored the Django
 admin application to allow for easier reuse and has made a ton of excellent
 tweaks, feature additions and bug fixes.
     Clint Ecker
     gandalf@owca.info
     Baishampayan Ghose
+    martin.glueck@gmail.com
     Espen Grindhaug <http://grindhaug.org/>
     Brant Harris
     hipertracker@gmail.com
     Michael Josephson <http://www.sdjournal.com/>
     jpellerin@gmail.com
     junzhang.jn@gmail.com
-    Russell Keith-Magee <freakboy@iinet.net.au>
     Garth Kidd <http://www.deadlybloodyserious.com/>
     kilian <kilian.cavalotti@lip6.fr>
     Sune Kirkeby <http://ibofobi.dk/>
     Sam Newman <http://www.magpiebrain.com/>
     Neal Norwitz <nnorwitz@google.com>
     oggie rob <oz.robharvey@gmail.com>
+    Jay Parlar <parlar@gmail.com>
     pgross@thoughtworks.com
     phaedo <http://phaedo.cx/>
     phil@produxion.net
     Tom Tobin
     Tom Insam
     Joe Topjian <http://joe.terrarum.net/geek/code/python/django/>
-    Malcolm Tredinnick
     Amit Upadhyay
     Geert Vanderkelen
     Milton Waddams
 Thanks for downloading Django.
 
-To install it, make sure you have Python 2.3 or greater installed. Then run this command:
+To install it, make sure you have Python 2.3 or greater installed. Then run
+this command from the command prompt:
 
-python setup.py install
+    python setup.py install
+
+Note this requires a working Internet connection if you don't already have the
+Python utility "setuptools" installed.
+
+AS AN ALTERNATIVE, you can just copy the entire "django" directory to Python's
+site-packages directory, which is located wherever your Python installation
+lives. Some places you might check are:
+
+    /usr/lib/python2.4/site-packages (Unix, Python 2.4)
+    /usr/lib/python2.3/site-packages (Unix, Python 2.3)
+    C:\\PYTHON\site-packages         (Windows)
+
+This second solution does not require a working Internet connection; it
+bypasses "setuptools" entirely.
 
 For more detailed instructions, see docs/install.txt.

django/__init__.py

-VERSION = (0, 95, 'post-magic-removal')
+VERSION = (0, 96, 'pre')
Add a comment to this file

django/conf/locale/sl/LC_MESSAGES/django.mo

Binary file modified.

django/conf/locale/sl/LC_MESSAGES/django.po

-# SOME DESCRIPTIVE TITLE.
+# translation of django.po to Slovenian
+# Igor Kolar <ike@email.si), 2006.
+# Nena Kojadin <nena@kiberpipa.org), 2006.
+# Jure Cuhalev <gandalf@owca.info>, 2006.
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the PACKAGE package.
-# Igor Kolar <ike@email.si), 2006.
-# Nena Kojadin <nena@kiberpipa.org), 2006
 msgid ""
 msgstr ""
-"Project-Id-Version: Django Slovenian 0.92+svn translation\n"
+"Project-Id-Version: django\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2006-05-16 10:13+0200\n"
-"PO-Revision-Date: 2006-03-19 17:30+0100\n"
+"PO-Revision-Date: 2006-07-29 11:52+0100\n"
 "Last-Translator: Jure Čuhalev <gandalf@owca.info>\n"
-"Language-Team: Slovenian <sl@li.org>\n"
+"Language-Team: Slovenian <lugos-slo@lugos.si>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.2\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
 
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
+#: contrib/comments/models.py:67
+#: contrib/comments/models.py:166
 msgid "object ID"
 msgstr "ID objekta"
 
 msgid "headline"
 msgstr "naslov"
 
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
+#: contrib/comments/models.py:69
+#: contrib/comments/models.py:90
 #: contrib/comments/models.py:167
 msgid "comment"
 msgstr "komentar"
 msgid "is valid rating"
 msgstr "je veljavni rating"
 
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
+#: contrib/comments/models.py:83
+#: contrib/comments/models.py:169
 msgid "date/time submitted"
-msgstr "podatek datum/čas poslan"
+msgstr "datum/čas vnosa"
 
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
+#: contrib/comments/models.py:84
+#: contrib/comments/models.py:170
 msgid "is public"
 msgstr "je javno"
 
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289
+#: contrib/comments/models.py:85
+#: contrib/admin/views/doc.py:289
 msgid "IP address"
 msgstr "IP naslov"
 
 msgstr "je odstranjen/-a"
 
 #: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Odkljukaj, če je komntar neprimeren. Namesto komentarja bo vidno obvestilo "
-"\"Ta komentar je bil odstranjen\"."
+msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
+msgstr "Odkljukaj, če je komntar neprimeren. Namesto komentarja bo vidno obvestilo \"Ta komentar je bil odstranjen\"."
 
 #: contrib/comments/models.py:91
-#, fuzzy
 msgid "comments"
-msgstr "komentar"
+msgstr "komentarji"
 
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
+#: contrib/comments/models.py:131
+#: contrib/comments/models.py:207
 msgid "Content object"
-msgstr "Objekt s vsebino"
+msgstr "Objekt z vsebino"
 
 #: contrib/comments/models.py:159
 #, python-format
 msgstr "potrjeno s strani osebja"
 
 #: contrib/comments/models.py:176
-#, fuzzy
 msgid "free comment"
-msgstr "Zastonj komentar"
+msgstr "anonimen komentar"
 
 #: contrib/comments/models.py:177
-#, fuzzy
 msgid "free comments"
-msgstr "Zastonj komentarji"
+msgstr "anonimni komentarji"
 
 #: contrib/comments/models.py:233
 msgid "score"
 msgstr "datum ocene"
 
 #: contrib/comments/models.py:237
-#, fuzzy
 msgid "karma score"
-msgstr "Karma"
+msgstr "karma točke"
 
 #: contrib/comments/models.py:238
-#, fuzzy
 msgid "karma scores"
-msgstr "Skrivnosti karme"
+msgstr "karma točke"
 
 #: contrib/comments/models.py:242
 #, python-format
 msgstr "datum označitve (zastavice)"
 
 #: contrib/comments/models.py:268
-#, fuzzy
 msgid "user flag"
-msgstr "Uporabniška zastavica"
+msgstr "uporabnikova zastavica"
 
 #: contrib/comments/models.py:269
-#, fuzzy
 msgid "user flags"
-msgstr "Uporabniške zastavice"
+msgstr "uporabniške zastavice"
 
 #: contrib/comments/models.py:273
 #, python-format
 msgstr "datum izbrisa"
 
 #: contrib/comments/models.py:280
-#, fuzzy
 msgid "moderator deletion"
-msgstr "Izbris s strani moderatorja"
+msgstr "izbris s strani moderatorja"
 
 #: contrib/comments/models.py:281
-#, fuzzy
 msgid "moderator deletions"
-msgstr "Izbrisi s strani moderatorja"
+msgstr "izbrisi s strani moderatorja"
 
 #: contrib/comments/models.py:285
 #, python-format
 msgstr "Ni mogoče glasovati zase"
 
 #: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
+msgid "This rating is required because you've entered at least one other rating."
 msgstr "Moraš podati tole oceno, ker si podal vsaj še eno drugo oceno."
 
 #: contrib/comments/views/comments.py:112
 #, python-format
 msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
+"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
 "\n"
 "%(text)s"
 msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
+"This comment was posted by a user who has posted fewer than %(count)s comments:\n"
 "\n"
 "%(text)s"
 msgstr[0] ""
-"Ta komentar je poslal uporabnik, ki je do zdaj poslal manj kot %(count)s "
-"komentarjev Komentar:\n"
+"Ta komentar je poslal uporabnik, ki je do zdaj poslal manj kot %(count)s komentarjev:\n"
 "\n"
 "%(text)s"
 msgstr[1] ""
-"Ta komentar je poslal uporabnik, ki je do zdaj poslal manj kot %(count)s "
-"komentarjev Komentar:\n"
+"Ta komentar je poslal uporabnik, ki je do zdaj poslal manj kot %(count)s komentar:\n"
+"\n"
+"%(text)s"
+msgstr[2] ""
+"Ta komentar je poslal uporabnik, ki je do zdaj poslal manj kot %(count)s komentarja:\n"
+"\n"
+"%(text)s"
+msgstr[3] ""
+"Ta komentar je poslal uporabnik, ki je do zdaj poslal manj kot %(count)s komentarje:\n"
 "\n"
 "%(text)s"
 
 #: contrib/comments/views/comments.py:189
 #: contrib/comments/views/comments.py:280
 msgid "Only POSTs are allowed"
-msgstr "Dovoljena je le metoda HTTP POST"
+msgstr "Dovoljena je le metoda POST"
 
 #: contrib/comments/views/comments.py:193
 #: contrib/comments/views/comments.py:284
 msgid "One or more of the required fields wasn't submitted"
-msgstr "Eden ali več obveznih polj ni vpisanih"
+msgstr "Eno ali več obveznih polj ni vpisanih"
 
 #: contrib/comments/views/comments.py:197
 #: contrib/comments/views/comments.py:286
 
 #: contrib/comments/views/comments.py:207
 #: contrib/comments/views/comments.py:292
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Obrazec s komentarji ima neveljavni parameter 'target' -- ID objekta je "
-"neveljaven."
+msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
+msgstr "Obrazec s komentarji ima neveljavni parameter 'target' -- ID objekta je neveljaven."
 
 #: contrib/comments/views/comments.py:257
 #: contrib/comments/views/comments.py:321
 msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Obrazec s komentarji ne zahteva niti 'preview' niti 'post' akcije."
+msgstr "Obrazec s komentarji ni podal niti 'preview' niti 'post' akcije."
 
 #: contrib/comments/templates/comments/form.html:6
 #: contrib/comments/templates/comments/form.html:8
 "<h3>Avtor: %s</h3>\n"
 "<ul>\n"
 
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
+#: contrib/admin/filterspecs.py:70
+#: contrib/admin/filterspecs.py:88
 #: contrib/admin/filterspecs.py:143
 msgid "All"
 msgstr "Vse"
 
 #: contrib/admin/filterspecs.py:143
 msgid "Yes"
-msgstr "Ja"
+msgstr "Da"
 
 #: contrib/admin/filterspecs.py:143
 msgid "No"
 msgid "All dates"
 msgstr "Vsi datumi"
 
-#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36
+#: contrib/admin/views/decorators.py:9
+#: contrib/auth/forms.py:36
 #: contrib/auth/forms.py:41
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Prosimo, vnesite veljavno uporabniško ime in geslo. Opomba: obe polji sta "
-"občutljivi na velikost črk"
+msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
+msgstr "Prosimo, vnesite veljavno uporabniško ime in geslo. Opomba: obe polji sta občutljivi na velikost črk"
 
 #: contrib/admin/views/decorators.py:23
 #: contrib/admin/templates/admin/login.html:25
 msgid "Log in"
-msgstr "Prijate se"
+msgstr "Prijavite se"
 
 #: contrib/admin/views/decorators.py:61
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Vaša seja je pretekla; prosimo, prijavite se znova. Opomba: Vse vaše objave "
-"so varno shranjene."
+msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
+msgstr "Vaša seja je pretekla; prosimo, prijavite se znova. Ne skrbite, vaše objave so varno shranjene."
 
 #: contrib/admin/views/decorators.py:68
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Izgleda, da vaš brskalnik nima podpore za piškotke. Prosimo, vključite "
-"piškotke, znova naložite to stran in poskusite še enkrat."
+msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
+msgstr "Izgleda, da vaš brskalnik nima podpore za piškotke. Prosimo, vključite piškotke, znova naložite to stran in poskusite še enkrat."
 
 #: contrib/admin/views/decorators.py:82
 msgid "Usernames cannot contain the '@' character."
-msgstr "Uporabniška imena ne smejo vsebovati znaka '@'"
+msgstr "Uporabniška imena ne smejo vsebovati znaka '@'."
 
 #: contrib/admin/views/decorators.py:84
 #, python-format
 msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"Vaš e-mail naslov ne morete uporabljati kot uporabniško ime. Namesto tega "
-"uporabite '%s'"
+msgstr "Vaš e-mail naslov ne morete uporabljati kot uporabniško ime. Namesto tega uporabite '%s'."
 
 #: contrib/admin/views/main.py:226
 msgid "Site administration"
 msgid "The %(name)s \"%(obj)s\" was added successfully."
 msgstr "%(name)s \"%(obj)s\" je bil uspešno dodan."
 
-#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348
+#: contrib/admin/views/main.py:264
+#: contrib/admin/views/main.py:348
 msgid "You may edit it again below."
 msgstr "Vsebino lahko znova uredite spodaj."
 
-#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357
+#: contrib/admin/views/main.py:272
+#: contrib/admin/views/main.py:357
 #, python-format
 msgid "You may add another %s below."
 msgstr "Spodaj lahko dodate še en %s."
 msgid "Added %s."
 msgstr "Dodal %s."
 
-#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
+#: contrib/admin/views/main.py:336
+#: contrib/admin/views/main.py:338
 #: contrib/admin/views/main.py:340
 msgid "and"
 msgstr "in"
 #: contrib/admin/views/main.py:338
 #, python-format
 msgid "Changed %s."
-msgstr "Spremenil %s"
+msgstr "Spremenil %s."
 
 #: contrib/admin/views/main.py:340
 #, python-format
 
 #: contrib/admin/views/main.py:354
 #, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" je bilo uspešno dodano. Znova ga lahko urejate spodaj."
+msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr "%(name)s \"%(obj)s\" je bilo uspešno dodano. Znova ga lahko urejate spodaj."
 
 #: contrib/admin/views/main.py:392
 #, python-format
 #: contrib/admin/views/main.py:565
 #, python-format
 msgid "Select %s"
-msgstr "Izberi %s"
+msgstr "Izberite %s"
 
 #: contrib/admin/views/main.py:565
 #, python-format
 msgid "Select %s to change"
-msgstr "Izberi %s, ki ga želite spremeniti"
+msgstr "Izberite %s, ki ga želite spremeniti"
 
-#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286
-#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297
+#: contrib/admin/views/doc.py:277
+#: contrib/admin/views/doc.py:286
+#: contrib/admin/views/doc.py:288
+#: contrib/admin/views/doc.py:294
+#: contrib/admin/views/doc.py:295
+#: contrib/admin/views/doc.py:297
 msgid "Integer"
-msgstr "Integer (število)"
+msgstr "Število (integer)"
 
 #: contrib/admin/views/doc.py:278
 msgid "Boolean (Either True or False)"
 msgstr "Boolean (ali True ali False)"
 
-#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296
+#: contrib/admin/views/doc.py:279
+#: contrib/admin/views/doc.py:296
 #, python-format
 msgid "String (up to %(maxlength)s)"
 msgstr "Niz (vse do %(maxlength)s)"
 msgid "E-mail address"
 msgstr "E-naslov"
 
-#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287
+#: contrib/admin/views/doc.py:284
+#: contrib/admin/views/doc.py:287
 msgid "File path"
 msgstr "Pot do datoteke"
 
 
 #: contrib/admin/views/doc.py:292
 msgid "Relation to parent model"
-msgstr "Razmerje z starševskim modelom"
+msgstr "Razmerje s starševskim modelom"
 
 #: contrib/admin/views/doc.py:293
 msgid "Phone number"
 msgid "Time"
 msgstr "Čas"
 
-#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7
+#: contrib/admin/views/doc.py:300
+#: contrib/flatpages/models.py:7
 msgid "URL"
 msgstr "URL (spletni naslov)"
 
 
 #: contrib/admin/templates/admin/object_history.html:26
 msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
+msgstr "N j, Y, H:i"
 
 #: contrib/admin/templates/admin/object_history.html:36
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Ta objekt nima zgodovine. Verjetno ni bil dodan preko te administratorske "
-"strani."
+msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
+msgstr "Ta objekt nima zgodovine. Verjetno ni bil dodan preko te administratorske strani."
 
 #: contrib/admin/templates/admin/base_site.html:4
 msgid "Django site admin"
 msgstr "Napaka strežnika <em>(500)</em>"
 
 #: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Prišlo je do nepričakovane napake. Administratorji strani so že obveščeni "
-"prekoe-pošte in naj bi jo v kratkem odpravili. Hvala za vaše potrpljenje."
+msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
+msgstr "Prišlo je do nepričakovane napake. Administratorji strani so že obveščeni prekoe-pošte in naj bi jo v kratkem odpravili. Hvala za vaše potrpljenje."
 
 #: contrib/admin/templates/admin/404.html:4
 #: contrib/admin/templates/admin/404.html:8
 
 #: contrib/admin/templates/admin/404.html:10
 msgid "We're sorry, but the requested page could not be found."
-msgstr "Se opraivčujemo, a zahtevane strani ni mogoče najti."
+msgstr "Se opravičujemo, a zahtevane strani ni mogoče najti."
 
 #: contrib/admin/templates/admin/index.html:17
 #, python-format
 msgid "Models available in the %(name)s application."
-msgstr ""
+msgstr "Modeli na voljo v %(name)s aplikaciji"
 
 #: contrib/admin/templates/admin/index.html:28
 #: contrib/admin/templates/admin/change_form.html:15
 msgid "Recent Actions"
 msgstr "Zadnja dejanja"
 
-#: contrib/admin/templates/admin/index.html:53
+#: contrib/admin/tempalates/admin/index.html:53
 msgid "My Actions"
 msgstr "Moja dejanja"
 
 
 #: contrib/admin/templates/admin/delete_confirmation.html:14
 #, python-format
-msgid ""
-"Deleting the %(object_name)s '%(object)s' would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Izbris %(object_name)s '%(object)s' bi pomenil izbris povezanih objektov, "
-"vendarvi nimate dovoljenja za izbris naslednjih tipov objektov:"
+msgid "Deleting the %(object_name)s '%(object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
+msgstr "Izbris %(object_name)s '%(object)s' bi pomenil izbris povezanih objektov, vendarvi nimate dovoljenja za izbris naslednjih tipov objektov:"
 
 #: contrib/admin/templates/admin/delete_confirmation.html:21
 #, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
-"the following related items will be deleted:"
-msgstr ""
-"Ste prepričani, da želite izbrisati %(object_name)s \"%(object)s\"?Vsi "
-"naslednji povezani elementi bodo izbrisani:"
+msgid "Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of the following related items will be deleted:"
+msgstr "Ste prepričani, da želite izbrisati %(object_name)s \"%(object)s\"?Vsi naslednji povezani elementi bodo izbrisani:"
 
 #: contrib/admin/templates/admin/delete_confirmation.html:26
 msgid "Yes, I'm sure"
 msgid_plural "Please correct the errors below."
 msgstr[0] "Prosimo, odpravite sledečo napako."
 msgstr[1] "Prosimo, odpravite sledeče napake."
+msgstr[2] "Prosimo, odpravite sledeči napaki."
+msgstr[3] "Prosimo, odpravite sledeče napake."
 
 #: contrib/admin/templates/admin/change_form.html:48
 msgid "Ordering"
 msgstr "Obnova gesla"
 
 #: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"Ste pozabili geslo? Vnesite vaš e-naslov spodaj in mi vam bomo poslali novo "
-"geslo."
+msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you."
+msgstr "Ste pozabili geslo? Vnesite vaš e-naslov spodaj in mi vam bomo poslali novo geslo."
 
 #: contrib/admin/templates/registration/password_reset_form.html:16
 msgid "E-mail address:"
 msgstr "Geslo je bilo uspešno obnovljeno"
 
 #: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
+msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly."
 msgstr "Po e-pošti smo vam poslali novo geslo.Morali bi ga prejeti v kratkem"
 
 #: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Prosim, vnesite vaše staro geslo (zaradi varnosti) in nato še dvakrat novo"
-"(da preverimo, da se niste zatipkali)"
+msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly."
+msgstr "Prosim, vnesite vaše staro geslo (zaradi varnosti) in nato še dvakrat novo(da preverimo, da se niste zatipkali)"
 
 #: contrib/admin/templates/registration/password_change_form.html:17
 msgid "Old password:"
 "your computer is \"internal\").</p>\n"
 msgstr ""
 "\n"
-"<p class=\"help\">Za inštalacijo zaznamkic povlečite povezavo v orodno "
-"vrstico\n"
-"z zaznamki, ali kliknite z desno miškino tipko na povezavo in jo dodajte med "
-"zaznamkeZdaj lahko uporabite zaznamek s katere koli strani. Opomba: nekatere "
-"teh stranilahko gledate le z internega računalnika (preverite s sistemskim "
-"administratorjem)</p>\n"
+"<p class=\"help\">Za inštalacijo zaznamkic povlečite povezavo v orodno vrstico\n"
+"z zaznamki, ali kliknite z desno miškino tipko na povezavo in jo dodajte med zaznamkeZdaj lahko uporabite zaznamek s katere koli strani. Opomba: nekatere teh stranilahko gledate le z internega računalnika (preverite s sistemskim administratorjem)</p>\n"
 
 #: contrib/admin/templates/admin_doc/bookmarklets.html:19
 msgid "Documentation for this page"
 msgstr "Dokumentacija za to stran"
 
 #: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Skok na stran z dokumentacijo za pogled (view), ki generira trenutno stran."
+msgid "Jumps you from any page to the documentation for the view that generates that page."
+msgstr "Skok na stran z dokumentacijo za pogled (view), ki generira trenutno stran."
 
 #: contrib/admin/templates/admin_doc/bookmarklets.html:22
 msgid "Show object ID"
 msgstr "Pokaži ID objekta"
 
 #: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Pokaže content-type in unikatni ID za strani, ki predstavljajo en objekt."
+msgid "Shows the content-type and unique ID for pages that represent a single object."
+msgstr "Pokaže content-type in unikatni ID za strani, ki predstavljajo en objekt."
 
 #: contrib/admin/templates/admin_doc/bookmarklets.html:25
 msgid "Edit this object (current window)"
 
 #: contrib/admin/templates/admin_doc/bookmarklets.html:26
 msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Skok na administracijsko stran za vse strani, ki predstavljajo en objekt."
+msgstr "Skok na administracijsko stran za vse strani, ki predstavljajo en objekt."
 
 #: contrib/admin/templates/admin_doc/bookmarklets.html:28
 msgid "Edit this object (new window)"
 msgstr "preusmeritev iz"
 
 #: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"To mora biti absolutna pot, izključujoč domeno. Primer: '/events/search'-"
+msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
+msgstr "To mora biti absolutna pot, izključujoč domeno. Primer: '/events/search'-"
 
 #: contrib/redirects/models.py:9
 msgid "redirect to"
 msgstr "preusmeri na"
 
 #: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"To je ali absolutna pot (kot zgoraj) ali popoln URL naslov (začne se z "
-"'http://')"
+msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
+msgstr "To je ali absolutna pot (kot zgoraj) ali popoln URL naslov (začne se z 'http://')"
 
 #: contrib/redirects/models.py:12
 msgid "redirect"
 msgstr "preusmeritve"
 
 #: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Primer: '/about/contact/'. Mora vsebovati / (poševnico) na začetku in koncu."
+msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgstr "Primer: '/about/contact/'. Mora vsebovati / (poševnico) na začetku in koncu."
 
 #: contrib/flatpages/models.py:9
 msgid "title"
 msgstr "ime predloge"
 
 #: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
-"use 'flatpages/default'."
-msgstr ""
-"Primer: 'flatpages/contact_page'. Če to polje ni izpolnjeno, bo sistem "
-"uporabil 'flatpages/default'."
+msgid "Example: 'flatpages/contact_page'. If this isn't provided, the system will use 'flatpages/default'."
+msgstr "Primer: 'flatpages/contact_page'. Če to polje ni izpolnjeno, bo sistem uporabil 'flatpages/default'."
 
 #: contrib/flatpages/models.py:14
 msgid "registration required"
 
 #: contrib/flatpages/models.py:14
 msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Če je to polje odkljukano, si lahko to stran ogledajo le registrirani "
-"uporabniki."
+msgstr "Če je to polje odkljukano, si lahko to stran ogledajo le registrirani uporabniki."
 
 #: contrib/flatpages/models.py:18
 msgid "flat page"
-msgstr "ploh stran :)"
+msgstr "enostavna stran"
 
 #: contrib/flatpages/models.py:19
 msgid "flat pages"
-msgstr "ploh strani :)"
+msgstr "enostavne strani"
 
-#: contrib/auth/models.py:13 contrib/auth/models.py:26
+#: contrib/auth/models.py:13
+#: contrib/auth/models.py:26
 msgid "name"
 msgstr "ime"
 
 msgstr "kodno ime"
 
 #: contrib/auth/models.py:17
-#, fuzzy
 msgid "permission"
-msgstr "Dovoljenje"
+msgstr "dovoljenje"
 
-#: contrib/auth/models.py:18 contrib/auth/models.py:27
-#, fuzzy
+#: contrib/auth/models.py:18
+#: contrib/auth/models.py:27
 msgid "permissions"
-msgstr "Dovoljenja"
+msgstr "dovoljenja"
 
 #: contrib/auth/models.py:29
-#, fuzzy
 msgid "group"
-msgstr "Skupina"
+msgstr "skupina"
 
-#: contrib/auth/models.py:30 contrib/auth/models.py:65
-#, fuzzy
+#: contrib/auth/models.py:30
+#: contrib/auth/models.py:65
 msgid "groups"
-msgstr "Skupine"
+msgstr "skupine"
 
 #: contrib/auth/models.py:55
 msgid "username"
 msgstr "član od"
 
 #: contrib/auth/models.py:66
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Polek ročno določenih dovoljenj bo ta uporabnik dobil tudi vsa dovoljenja,ki "
-"pripadajo vsem skupinah, v katerih je."
+msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
+msgstr "Polek ročno določenih dovoljenj bo ta uporabnik dobil tudi vsa dovoljenja,ki pripadajo vsem skupinah, v katerih je."
 
 #: contrib/auth/models.py:67
-#, fuzzy
 msgid "user permissions"
-msgstr "Dovoljenja"
+msgstr "uporabniška dovoljenja"
 
 #: contrib/auth/models.py:70
-#, fuzzy
 msgid "user"
-msgstr "Uporabnik"
+msgstr "uporabnik"
 
 #: contrib/auth/models.py:71
-#, fuzzy
 msgid "users"
-msgstr "Uporabniki"
+msgstr "uporabniki"
 
 #: contrib/auth/models.py:76
 msgid "Personal info"
 msgstr "Skupine"
 
 #: contrib/auth/models.py:219
-#, fuzzy
 msgid "message"
-msgstr "Sporočilo"
+msgstr "sporočilo"
 
 #: contrib/auth/forms.py:30
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Izgleda, da vaš brskalnik nima omogočenih piškotkov. Piškotki so potrebni za "
-"prijavo."
+msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
+msgstr "Izgleda, da vaš brskalnik nima omogočenih piškotkov. Piškotki so potrebni za prijavo."
 
 #: contrib/contenttypes/models.py:25
-#, fuzzy
 msgid "python model class name"
-msgstr "python ime modula"
+msgstr "python ime razreda modela"
 
 #: contrib/contenttypes/models.py:28
 msgid "content type"
 msgid "February"
 msgstr "februar"
 
-#: utils/dates.py:14 utils/dates.py:27
+#: utils/dates.py:14
+#: utils/dates.py:27
 msgid "March"
 msgstr "marec"
 
-#: utils/dates.py:14 utils/dates.py:27
+#: utils/dates.py:14
+#: utils/dates.py:27
 msgid "April"
 msgstr "april"
 
-#: utils/dates.py:14 utils/dates.py:27
+#: utils/dates.py:14
+#: utils/dates.py:27
 msgid "May"
 msgstr "maj"
 
-#: utils/dates.py:14 utils/dates.py:27
+#: utils/dates.py:14
+#: utils/dates.py:27
 msgid "June"
 msgstr "junij"
 
-#: utils/dates.py:15 utils/dates.py:27
+#: utils/dates.py:15
+#: utils/dates.py:27
 msgid "July"
 msgstr "julij"
 
 msgstr "december"
 
 #: utils/dates.py:19
-#, fuzzy
 msgid "jan"
-msgstr "in"
+msgstr "jan"
 
 #: utils/dates.py:19
-#, fuzzy
 msgid "feb"
-msgstr "feb."
+msgstr "feb"
 
 #: utils/dates.py:19
 msgid "mar"
-msgstr ""
+msgstr "mar"
 
 #: utils/dates.py:19
 msgid "apr"
-msgstr ""
+msgstr "apr"
 
 #: utils/dates.py:19
-#, fuzzy
 msgid "may"
-msgstr "dan"
+msgstr "maj"
 
 #: utils/dates.py:19
 msgid "jun"
-msgstr ""
+msgstr "jun"
 
 #: utils/dates.py:20
 msgid "jul"
-msgstr ""
+msgstr "jul"
 
 #: utils/dates.py:20
 msgid "aug"
-msgstr ""
+msgstr "avg"
 
 #: utils/dates.py:20
 msgid "sep"
-msgstr ""
+msgstr "sep"
 
 #: utils/dates.py:20
 msgid "oct"
-msgstr ""
+msgstr "okt"
 
 #: utils/dates.py:20
 msgid "nov"
-msgstr ""
+msgstr "nov"
 
 #: utils/dates.py:20
 msgid "dec"
-msgstr ""
+msgstr "dec"
 
 #: utils/dates.py:27
 msgid "Jan."
 msgstr "jan."
 
 #: utils/dates.py:27
-#, fuzzy
 msgid "Feb."
 msgstr "feb."
 
 #: utils/timesince.py:12
 msgid "year"
 msgid_plural "years"
-msgstr[0] "leto"
-msgstr[1] "let"
+msgstr[0] "let"
+msgstr[1] "leto"
+msgstr[2] "leti"
+msgstr[3] "leta"
 
 #: utils/timesince.py:13
 msgid "month"
 msgid_plural "months"
-msgstr[0] "mesec"
-msgstr[1] "mesecev"
+msgstr[0] "mesecev"
+msgstr[1] "mesec"
+msgstr[2] "meseca"
+msgstr[3] "meseci"
 
 #: utils/timesince.py:14
 msgid "week"
 msgid_plural "weeks"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "tednov"
+msgstr[1] "teden"
+msgstr[2] "tedna"
+msgstr[3] "tednov"
 
 #: utils/timesince.py:15
 msgid "day"
 msgid_plural "days"
-msgstr[0] "dan"
-msgstr[1] "dni"
+msgstr[0] "dni"
+msgstr[1] "dan"
+msgstr[2] "dneva"
+msgstr[3] "dni"
 
 #: utils/timesince.py:16
 msgid "hour"
 msgid_plural "hours"
-msgstr[0] "ura"
-msgstr[1] "ur"
+msgstr[0] "ur"
+msgstr[1] "ura"
+msgstr[2] "uri"
+msgstr[3] "ure"
 
 #: utils/timesince.py:17
 msgid "minute"
 msgid_plural "minutes"
-msgstr[0] "minuta"
-msgstr[1] "minut"
+msgstr[0] "minut"
+msgstr[1] "minuta"
+msgstr[2] "minuti"
+msgstr[3] "minute"
 
 #: conf/global_settings.py:37
 msgid "Bengali"
 
 #: conf/global_settings.py:42
 msgid "Greek"
-msgstr ""
+msgstr "Grški"
 
 #: conf/global_settings.py:43
 msgid "English"
 
 #: conf/global_settings.py:47
 msgid "Hungarian"
-msgstr ""
+msgstr "Madžarski"
 
 #: conf/global_settings.py:48
 msgid "Hebrew"
-msgstr ""
+msgstr "Hebrejski"
 
 #: conf/global_settings.py:49
 msgid "Icelandic"
 msgstr "Švedski"
 
 #: conf/global_settings.py:61
-#, fuzzy
 msgid "Ukrainian"
-msgstr "Brazilski"
+msgstr "Ukrajinski"
 
 #: conf/global_settings.py:62
 msgid "Simplified Chinese"
 msgstr "To polje lahko vsebuje le črke, števila in podčrtaje (_)."
 
 #: core/validators.py:64
-#, fuzzy
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"To polje lahko vsebuje le črke, števila, podčrtaje (_) in poševnice (/)."
+msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
+msgstr "To polje lahko vsebuje le črke, števila, podčrtaje, poševnice ali pomišljaje."
 
 #: core/validators.py:72
 msgid "Uppercase letters are not allowed here."
 msgid "Enter a valid time in HH:MM format."
 msgstr "Vnesite veljavni čas v zapisu HH:MM (ura:minuta)."
 
-#: core/validators.py:132 db/models/fields/__init__.py:468
+#: core/validators.py:132
+#: db/models/fields/__init__.py:468
 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr ""
-"Vnesite veljavni datum/čas v zapisu YYYY-MM-DD HH:MM (leto-mesec-dan ura:"
-"minuta)"
+msgstr "Vnesite veljavni datum/čas v zapisu YYYY-MM-DD HH:MM (leto-mesec-dan ura:minuta)"
 
 #: core/validators.py:136
 msgid "Enter a valid e-mail address."
 msgstr "Vnesite veljavni e-naslov."
 
 #: core/validators.py:148
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Uploadjate veljavno sliko. Trenutna datoteka ni bila niti slika niti "
-"okvarjena slika."
+msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
+msgstr "Uploadjate veljavno sliko. Trenutna datoteka ni bila niti slika niti okvarjena slika."
 
 #: core/validators.py:155
 #, python-format
 msgid "Invalid URL: %s"
 msgstr "Neveljavni URL naslov: %s"
 
-#: core/validators.py:206 core/validators.py:208
+#: core/validators.py:206
+#: core/validators.py:208
 #, python-format
 msgid "The URL %s is a broken link."
 msgstr "URL povezava %s je polomljena."
 msgid_plural "Watch your mouth! The words %s are not allowed here."
 msgstr[0] "Pazite na jezik! Beseda %s tu ni dovoljena."
 msgstr[1] "Pazite na jezik! Besede %s tu niso dovoljene."
+msgstr[2] "Pazite na jezik! Besede %s tu niso dovoljene."
+msgstr[3] "Pazite na jezik! Besede %s tu niso dovoljene."
 
 #: core/validators.py:236
 #, python-format
 msgid "Please enter something for at least one field."
 msgstr "Prosim, vnesite nekaj v vsaj eno od polj."
 
-#: core/validators.py:264 core/validators.py:275
+#: core/validators.py:264
+#: core/validators.py:275
 msgid "Please enter both fields or leave them both empty."
 msgstr "Prosimo, izpolnite obe polji ali ju pustite obe prazni."
 
 #: core/validators.py:349
 #, python-format
 msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Prosimo, vnesite veljavno decimalno število z največ %s števkami."
-msgstr[1] "Prosimo, vnesite veljavno decimalno število z največ %s števkami."
+msgid_plural "Please enter a valid decimal number with at most %s total digits."
+msgstr[0] "Prosimo, vnesite veljavno decimalno število z največ %s števko."
+msgstr[1] "Prosimo, vnesite veljavno decimalno število z največ %s števkama."
+msgstr[2] "Prosimo, vnesite veljavno decimalno število z največ %s števkami."
+msgstr[3] "Prosimo, vnesite veljavno decimalno število z največ %s števkami."
 
 #: core/validators.py:352
 #, python-format
 msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-"Prosimo, vnesite veljavno decimalno število z največ %s decimalnimi mesti."
-msgstr[1] ""
-"Prosimo, vnesite veljavno decimalno število z največ %s decimalnimi mesti."
+msgid_plural "Please enter a valid decimal number with at most %s decimal places."
+msgstr[0] "Prosimo, vnesite veljavno decimalno število z največ %s decimalnim mestom."
+msgstr[1] "Prosimo, vnesite veljavno decimalno število z največ %s decimalnimi mesti."
+msgstr[2] "Prosimo, vnesite veljavno decimalno število z največ %s decimalnimi mesti."
+msgstr[3] "Prosimo, vnesite veljavno decimalno število z največ %s decimalnimi mesti."
 
 #: core/validators.py:362
 #, python-format
 
 #: core/validators.py:429
 #, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
+msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
 msgstr "URL %(url)s je vrnil neveljavni Content-Type '%(contenttype)s'."
 
 #: core/validators.py:462
 #, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Prosimo, zaprite nezaprto %(tag)s oznako v vrstici %(line)s. (Vrstica se "
-"začne z \"%(start)s\".)"
+msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
+msgstr "Prosimo, zaprite nezaprto %(tag)s oznako v vrstici %(line)s. (Vrstica se začne z \"%(start)s\".)"
 
 #: core/validators.py:466
 #, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Tekst z začetka vrstice %(line)s ni dovoljen v tem kontekstu. (Vrstica se "
-"začne z \"%(start)s\".)"
+msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
+msgstr "Tekst z začetka vrstice %(line)s ni dovoljen v tem kontekstu. (Vrstica se začne z \"%(start)s\".)"
 
 #: core/validators.py:471
-#, fuzzy, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" v vrstici %(line)s je neveljavna oznaka. (Vrstica se začne z "
-"\"%(start)s\".)"
+#, python-format
+msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
+msgstr "\"%(attr)s\" v vrstici %(line)s je neveljavna oznaka. (Vrstica se začne z \"%(start)s\".)"
 
 #: core/validators.py:476
 #, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" v vrstici %(line)s je neveljavna oznaka. (Vrstica se začne z "
-"\"%(start)s\".)"
+msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
+msgstr "\"<%(tag)s>\" v vrstici %(line)s je neveljavna oznaka. (Vrstica se začne z \"%(start)s\".)"
 
 #: core/validators.py:480
 #, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Oznaki v vrstici %(line)s manjka eden ali več nujnih atributov (Vrstica se "
-"začne z \"%(start)s\".)"
+msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
+msgstr "Oznaki na vrstici %(line)s manjka eden ali več zahtevanih parametrov. (Vrstica se začne z \"%(start)s\".)"
 
 #: core/validators.py:485
 #, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Atribut \"%(attr)s\" v vrstici %(line)s vsebuje neveljavno vrednost. "
-"(Vrstica se začne z \"%(start)s\".)"
+msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
+msgstr "Atribut \"%(attr)s\" v vrstici %(line)s vsebuje neveljavno vrednost. (Vrstica se začne z \"%(start)s\".)"
 
 #: db/models/manipulators.py:302
 #, python-format
 msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s s tem %(type)s že obstaja za veljavno (%field)s."
+msgstr "%(object)s s tem %(type)s že obstaja za dane %(field)s."
 
 #: db/models/fields/__init__.py:40
 #, python-format
 msgid "%(optname)s with this %(fieldname)s already exists."
 msgstr "%(optname)s s tem %(fieldname)s že obstaja."
 
-#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
-#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553
+#: db/models/fields/__init__.py:114
+#: db/models/fields/__init__.py:265
+#: db/models/fields/__init__.py:542
+#: db/models/fields/__init__.py:553
 #: forms/__init__.py:346
 msgid "This field is required."
 msgstr "To polje je obvezno"
 
 #: db/models/fields/__init__.py:337
-#, fuzzy
 msgid "This value must be an integer."
-msgstr "Ta vrednost mora biti potenca od %s."
+msgstr "Ta vrednost mora biti število."
 
 #: db/models/fields/__init__.py:369
-#, fuzzy
 msgid "This value must be either True or False."
-msgstr "Ta vrednost mora biti potenca od %s."
+msgstr "Ta vrednost mora biti \"True\" ali \"False\"."
 
 #: db/models/fields/__init__.py:385
-#, fuzzy
 msgid "This field cannot be null."
-msgstr "To polje ni veljavno."
+msgstr "To polje ne more biti prazno."
 
 #: db/models/fields/__init__.py:562
 msgid "Enter a valid filename."
 msgstr "Prosimo, vnesite veljaven %s."
 
 #: db/models/fields/related.py:579
-#, fuzzy
 msgid "Separate multiple IDs with commas."
 msgstr "Več ID-jev ločite z vejicami."
 
 #: db/models/fields/related.py:581
-#, fuzzy
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-" Stisni \"Control\" (ali \"Command\" na Mac-u), da izbereš več kot enega."
+msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr "Držite \"Control\" (ali \"Command\" na Mac-u), za izbiro več kot enega."
 
 #: db/models/fields/related.py:625
 #, python-format
 msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-"Prosimo, vnesite veljavni %(self)s ID-je. Vrednost %(value)r ni veljavna."
-msgstr[1] ""
-"Prosimo, vnesite veljavni %(self)s ID-je. Vrednosti %(value)r niso veljavne."
+msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
+msgstr[0] "Prosimo, vnesite veljavne %(self)s ID-je. Vrednost %(value)r ni veljavna."
+msgstr[1] "Prosimo, vnesite veljavni %(self)s ID. Vrednosti %(value)r niso veljavne."
+msgstr[2] "Prosimo, vnesite veljavne %(self)s ID-je. Vrednosti %(value)r niso veljavne."
+msgstr[3] "Prosimo, vnesite veljavne %(self)s ID-je. Vrednosti %(value)r niso veljavne."
 
 #: forms/__init__.py:380
 #, python-format
 msgid "Ensure your text is less than %s character."
 msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Poskrbite, da bo tekst krajši do %s znakov."
-msgstr[1] "Poskrbite, da bo tekst krajši od %s znakov."
+msgstr[0] "Poskrbite, da bo tekst krajši od %s znakov."
+msgstr[1] "Poskrbite, da bo tekst krajši od %s znaka."
+msgstr[2] "Poskrbite, da bo tekst krajši od %s znakov."
+msgstr[3] "Poskrbite, da bo tekst krajši od %s znakov."
 
 #: forms/__init__.py:385
 msgid "Line breaks are not allowed here."
 msgstr "Prelomi vrstice tu niso dovoljeni."
 
-#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589
+#: forms/__init__.py:480
+#: forms/__init__.py:551
+#: forms/__init__.py:589
 #, python-format
 msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
 msgstr "Izberite veljavno možnost; '%(data)s' ni v %(choices)s."
 msgid "yes,no,maybe"
 msgstr "ja,ne,morda"
 
-#~ msgid "Comment"
-#~ msgstr "Komentar"
+msgid "Comment"
+msgstr "Komentar"
 
-#~ msgid "Comments"
-#~ msgstr "Komentarji"
+msgid "Comments"
+msgstr "Komentarji"
 
-#~ msgid "String (up to 50)"
-#~ msgstr "Niz (do 50 znakov)"
+msgid "String (up to 50)"
+msgstr "Niz (do 50 znakov)"
 
-#~ msgid "label"
-#~ msgstr "oznaka"
+msgid "label"
+msgstr "oznaka"
 
-#~ msgid "package"
-#~ msgstr "paket"
+msgid "package"
+msgstr "paket"
 
-#~ msgid "packages"
-#~ msgstr "paketi"
+msgid "packages"
+msgstr "paketi"
 
-#~ msgid "Slovene"
-#~ msgstr "Slovenski"
+msgid "Slovene"
+msgstr "Slovensko"
+

django/conf/urls/defaults.py

 def patterns(prefix, *tuples):
     pattern_list = []
     for t in tuples:
-        if type(t[1]) == list:
-            pattern_list.append(RegexURLResolver(t[0], t[1][0]))
+        regex, view_or_include = t[:2]
+        default_kwargs = t[2:]
+        if type(view_or_include) == list:
+            pattern_list.append(RegexURLResolver(regex, view_or_include[0], *default_kwargs))
         else:
-            pattern_list.append(RegexURLPattern(t[0], prefix and (prefix + '.' + t[1]) or t[1], *t[2:]))
+            pattern_list.append(RegexURLPattern(regex, prefix and (prefix + '.' + view_or_include) or view_or_include, *default_kwargs))
     return pattern_list

django/contrib/admin/media/js/admin/DateTimeShortcuts.js

     clockInputs: [],
     calendarDivName1: 'calendarbox', // name of calendar <div> that gets toggled
     calendarDivName2: 'calendarin',  // name of <div> that contains calendar
+    calendarLinkName: 'calendarlink',// name of the link that is used to toggle
     clockDivName: 'clockbox',        // name of clock <div> that gets toggled
+    clockLinkName: 'clocklink',      // name of the link that is used to toggle
     admin_media_prefix: '',
     init: function() {
         // Deduce admin_media_prefix by looking at the <script>s in the
         now_link.appendChild(document.createTextNode(gettext('Now')));
         var clock_link = document.createElement('a');
         clock_link.setAttribute('href', 'javascript:DateTimeShortcuts.openClock(' + num + ');');
+        clock_link.id = DateTimeShortcuts.clockLinkName + num;
         quickElement('img', clock_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/admin/icon_clock.gif', 'alt', gettext('Clock'));
         shortcuts_span.appendChild(document.createTextNode('\240'));
         shortcuts_span.appendChild(now_link);
         var clock_box = document.createElement('div');
         clock_box.style.display = 'none';
         clock_box.style.position = 'absolute';
-        if (getStyle(document.body,'direction')!='rtl') {
-            clock_box.style.left = findPosX(clock_link) + 17 + 'px';
-        }
-        else {
-            // since style's width is in em, it'd be tough to calculate
-            // px value of it. let's use an estimated px for now
-            // TODO: IE returns wrong value for findPosX when in rtl mode
-            //       (it returns as it was left aligned), needs to be fixed.
-            clock_box.style.left = findPosX(clock_link) - 110 + 'px';
-        }
-        clock_box.style.top = findPosY(clock_link) - 30 + 'px';
         clock_box.className = 'clockbox module';
         clock_box.setAttribute('id', DateTimeShortcuts.clockDivName + num);
         document.body.appendChild(clock_box);
         quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissClock(' + num + ');');
     },
     openClock: function(num) {
-        document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'block';
+        var clock_box = document.getElementById(DateTimeShortcuts.clockDivName+num)
+        var clock_link = document.getElementById(DateTimeShortcuts.clockLinkName+num)
+    
+        // Recalculate the clockbox position
+        // is it left-to-right or right-to-left layout ?
+        if (getStyle(document.body,'direction')!='rtl') {
+            clock_box.style.left = findPosX(clock_link) + 17 + 'px';
+        }
+        else {
+            // since style's width is in em, it'd be tough to calculate
+            // px value of it. let's use an estimated px for now
+            // TODO: IE returns wrong value for findPosX when in rtl mode
+            //       (it returns as it was left aligned), needs to be fixed.
+            clock_box.style.left = findPosX(clock_link) - 110 + 'px';
+        }
+        clock_box.style.top = findPosY(clock_link) - 30 + 'px';
+    
+        // Show the clock box
+        clock_box.style.display = 'block';
         addEvent(window, 'click', function() { DateTimeShortcuts.dismissClock(num); return true; });
     },
     dismissClock: function(num) {
         today_link.appendChild(document.createTextNode(gettext('Today')));
         var cal_link = document.createElement('a');
         cal_link.setAttribute('href', 'javascript:DateTimeShortcuts.openCalendar(' + num + ');');
+        cal_link.id = DateTimeShortcuts.calendarLinkName + num;
         quickElement('img', cal_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/admin/icon_calendar.gif', 'alt', gettext('Calendar'));
         shortcuts_span.appendChild(document.createTextNode('\240'));
         shortcuts_span.appendChild(today_link);
         var cal_box = document.createElement('div');
         cal_box.style.display = 'none';
         cal_box.style.position = 'absolute';
-        // is it left-to-right or right-to-left layout ?
-        if (getStyle(document.body,'direction')!='rtl') {
-            cal_box.style.left = findPosX(cal_link) + 17 + 'px';
-        }
-        else {
-            // since style's width is in em, it'd be tough to calculate
-            // px value of it. let's use an estimated px for now
-            // TODO: IE returns wrong value for findPosX when in rtl mode
-            //       (it returns as it was left aligned), needs to be fixed.
-            cal_box.style.left = findPosX(cal_link) - 180 + 'px';
-        }
-        cal_box.style.top = findPosY(cal_link) - 75 + 'px';
         cal_box.className = 'calendarbox module';
         cal_box.setAttribute('id', DateTimeShortcuts.calendarDivName1 + num);
         document.body.appendChild(cal_box);
         quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissCalendar(' + num + ');');
     },
     openCalendar: function(num) {
-        document.getElementById(DateTimeShortcuts.calendarDivName1+num).style.display = 'block';
+        var cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1+num)
+        var cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName+num)
+    
+        // Recalculate the clockbox position
+        // is it left-to-right or right-to-left layout ?
+        if (getStyle(document.body,'direction')!='rtl') {
+            cal_box.style.left = findPosX(cal_link) + 17 + 'px';
+        }
+        else {
+            // since style's width is in em, it'd be tough to calculate
+            // px value of it. let's use an estimated px for now
+            // TODO: IE returns wrong value for findPosX when in rtl mode
+            //       (it returns as it was left aligned), needs to be fixed.
+            cal_box.style.left = findPosX(cal_link) - 180 + 'px';
+        }
+        cal_box.style.top = findPosY(cal_link) - 75 + 'px';
+    
+        cal_box.style.display = 'block';
         addEvent(window, 'click', function() { DateTimeShortcuts.dismissCalendar(num); return true; });
     },
     dismissCalendar: function(num) {

django/contrib/auth/decorators.py

             if test_func(request.user):
                 return view_func(request, *args, **kwargs)
             return HttpResponseRedirect('%s?%s=%s' % (login_url, REDIRECT_FIELD_NAME, quote(request.get_full_path())))
+        _checklogin.__doc__ = view_func.__doc__
+        _checklogin.__dict__ = view_func.__dict__
 
         return _checklogin
     return _dec

django/contrib/auth/forms.py

         except User.DoesNotExist:
             raise validators.ValidationError, "That e-mail address doesn't have an associated user acount. Are you sure you've registered?"
 
-    def save(self, domain_override=None):
+    def save(self, domain_override=None, email_template_name='registration/password_reset_email.html'):
         "Calculates a new password randomly and sends it to the user"
         from django.core.mail import send_mail
         new_pass = User.objects.make_random_password()
             domain = current_site.domain
         else:
             site_name = domain = domain_override
-        t = loader.get_template('registration/password_reset_email.html')
+        t = loader.get_template(email_template_name)
         c = {
             'new_password': new_pass,
             'email': self.user_cache.email,

django/contrib/auth/views.py

 def logout(request, next_page=None, template_name='registration/logged_out.html'):
     "Logs out the user and displays 'You are logged out' message."
     from django.contrib.auth import logout
-    try:
-        logout(request)
-    except KeyError:
+    logout(request)
+    if next_page is None:
         return render_to_response(template_name, {'title': _('Logged out')}, context_instance=RequestContext(request))
     else:
         # Redirect to this page until the session has been cleared.
     "Redirects the user to the login page, passing the given 'next' page"
     return HttpResponseRedirect('%s?%s=%s' % (login_url, REDIRECT_FIELD_NAME, next))
 
-def password_reset(request, is_admin_site=False, template_name='registration/password_reset_form.html'):
+def password_reset(request, is_admin_site=False, template_name='registration/password_reset_form.html',
+        email_template_name='registration/password_reset_email.html'):
     new_data, errors = {}, {}
     form = PasswordResetForm()
     if request.POST:
         errors = form.get_validation_errors(new_data)
         if not errors:
             if is_admin_site:
-                form.save(request.META['HTTP_HOST'])
+                form.save(domain_override=request.META['HTTP_HOST'])
             else:
-                form.save()
+                form.save(email_template_name=email_template_name)
             return HttpResponseRedirect('%sdone/' % request.path)
     return render_to_response(template_name, {'form': forms.FormWrapper(form, new_data, errors)},
         context_instance=RequestContext(request))

django/core/management.py

     from django import VERSION
     v = '.'.join([str(i) for i in VERSION[:-1]])
     if VERSION[-1]:
-        v += ' (%s)' % VERSION[-1]
+        v += '-' + VERSION[-1]
     return v
 
 def get_sql_create(app):
     data_types = get_creation_module().DATA_TYPES
 
     final_output = []
-    reference_names = {}
     if backend.supports_constraints:
         opts = model._meta
         if model in pending_references:
                 r_col = f.column
                 table = opts.db_table
                 col = opts.get_field(f.rel.field_name).column
-                r_name = '%s_referencing_%s_%s' % (r_col, table, col)
-                if r_name in reference_names:
-                    reference_names[r_name] += 1
-                    r_name += '_%s' % reference_names[r_name]
-                else:
-                    reference_names[r_name] = 0
+                # For MySQL, r_name must be unique in the first 64 characters.
+                # So we are careful with character usage here.
+                r_name = '%s_refs_%s_%x' % (r_col, col, abs(hash((r_table, table))))
                 final_output.append(style.SQL_KEYWORD('ALTER TABLE') + ' %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s);' % \
                     (backend.quote_name(r_table), r_name,
                     backend.quote_name(r_col), backend.quote_name(table), backend.quote_name(col)))
 def _get_many_to_many_sql_for_model(model):
     from django.db import backend, get_creation_module
     from django.db.models import GenericRel
-    
+
     data_types = get_creation_module().DATA_TYPES
 
     opts = model._meta
     from django.db.models.fields.related import RelatedObject
 
     e = ModelErrorCollection(outfile)
-    
+
     for (app_name, error) in get_app_errors().items():
         e.add(app_name, error)
-        
+
     for cls in models.get_models(app):
         opts = cls._meta
 
                         if r.get_accessor_name() == rel_query_name:
                             e.add(opts, "Reverse query name for field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
 
-                
+
         for i, f in enumerate(opts.many_to_many):
             # Check to see if the related m2m field will clash with any
             # existing fields, m2m fields, m2m related objects or related objects

django/core/serializers/json.py

     TIME_FORMAT = "%H:%M:%S"
     
     def default(self, o):
-        if isinstance(o, datetime.date):
+        if isinstance(o, datetime.datetime):
+            return o.strftime("%s %s" % (self.DATE_FORMAT, self.TIME_FORMAT))
+        elif isinstance(o, datetime.date):
             return o.strftime(self.DATE_FORMAT)
         elif isinstance(o, datetime.time):
             return o.strftime(self.TIME_FORMAT)
-        elif isinstance(o, datetime.datetime):
-            return o.strftime("%s %s" % (self.DATE_FORMAT, self.TIME_FORMAT))
         else:
             return super(self, DateTimeAwareJSONEncoder).default(o)

django/core/urlresolvers.py

         return reverse_helper(self.regex, *args, **kwargs)
 
 class RegexURLResolver(object):
-    def __init__(self, regex, urlconf_name):
+    def __init__(self, regex, urlconf_name, default_kwargs=None):
         # regex is a string representing a regular expression.
         # urlconf_name is a string representing the module containing urlconfs.
         self.regex = re.compile(regex)
         self.urlconf_name = urlconf_name
         self.callback = None
+        self.default_kwargs = default_kwargs or {}
 
     def resolve(self, path):
         tried = []
                     tried.extend([(pattern.regex.pattern + '   ' + t) for t in e.args[0]['tried']])
                 else:
                     if sub_match:
-                        return sub_match[0], sub_match[1], dict(match.groupdict(), **sub_match[2])
+                        sub_match_dict = dict(self.default_kwargs, **sub_match[2])
+                        return sub_match[0], sub_match[1], dict(match.groupdict(), **sub_match_dict)
                     tried.append(pattern.regex.pattern)
             raise Resolver404, {'tried': tried, 'path': new_path}
 
         sub_match = self.reverse(viewname, *args, **kwargs)
         result = reverse_helper(self.regex, *args, **kwargs)
         return result + sub_match
+
+def resolve(path, urlconf=None):
+    if urlconf is None:
+        from django.conf import settings
+        urlconf = settings.ROOT_URLCONF
+    resolver = RegexURLResolver(r'^/', urlconf)
+    return resolver.resolve(path)
+
+def reverse(viewname, urlconf=None, args=None, kwargs=None):
+    args = args or []
+    kwargs = kwargs or {}
+    if urlconf is None:
+        from django.conf import settings
+        urlconf = settings.ROOT_URLCONF
+    resolver = RegexURLResolver(r'^/', urlconf)
+    return '/' + resolver.reverse(viewname, *args, **kwargs)

django/db/models/__init__.py

 # Admin stages.
 ADD, CHANGE, BOTH = 1, 2, 3
 
+# Decorator. Takes a function that returns a tuple in this format:
+#     (viewname, viewargs, viewkwargs)
+# Returns a function that calls urlresolvers.reverse() on that data, to return
+# the URL for those parameters.
+def permalink(func):
+    from django.core.urlresolvers import reverse
+    def inner(*args, **kwargs):
+        bits = func(*args, **kwargs)
+        viewname = bits[0]
+        return reverse(bits[0], None, *bits[1:2])
+    return inner
+
 class LazyDate(object):
     """
     Use in limit_choices_to to compare the field to dates calculated at run time

django/db/models/base.py

             new_class._meta.app_label = model_module.__name__.split('.')[-2]
 
         # Bail out early if we have already created this class.
-        m = get_model(new_class._meta.app_label, name)
+        m = get_model(new_class._meta.app_label, name, False)
         if m is not None:
             return m
 
         # the first class for this model to register with the framework. There
         # should only be one class for each model, so we must always return the
         # registered version.
-        return get_model(new_class._meta.app_label, name)
+        return get_model(new_class._meta.app_label, name, False)
 
 class Model(object):
     __metaclass__ = ModelBase

django/db/models/fields/__init__.py

         params['is_required'] = not self.blank and not self.primary_key and not rel
 
         # BooleanFields (CheckboxFields) are a special case. They don't take
-        # is_required or validator_list.
+        # is_required.
         if isinstance(self, BooleanField):
-            del params['validator_list'], params['is_required']
+            del params['is_required']
 
         # If this field is in a related context, check whether any other fields
         # in the related object have core=True. If so, add a validator --
         if self.choices:
             return first_choice + list(self.choices)
         rel_model = self.rel.to
-        return first_choice + [(x._get_pk_val(), str(x))
-                               for x in rel_model._default_manager.complex_filter(self.rel.limit_choices_to)]
+        if hasattr(self.rel, 'get_related_field'):
+            lst = [(getattr(x, self.rel.get_related_field().attname), str(x)) for x in rel_model._default_manager.complex_filter(self.rel.limit_choices_to)]
+        else:
+            lst = [(x._get_pk_val(), str(x)) for x in rel_model._default_manager.complex_filter(self.rel.limit_choices_to)]
+        return first_choice + lst
 
     def get_choices_default(self):
         if self.radio_admin:

django/db/models/fields/related.py

     key = (module, name)
     # Has the model already been loaded?
     # If so, resolve the string reference right away
-    model = get_model(rel_cls._meta.app_label,field.rel.to)
+    model = get_model(rel_cls._meta.app_label, field.rel.to, False)
     if model:
         field.rel.to = model
         field.do_related_class(model, rel_cls)

django/db/models/loading.py

             model_list.extend(get_models(app_mod))
         return model_list
 
-def get_model(app_label, model_name):
+def get_model(app_label, model_name, seed_cache = True):
     """
-    Returns the model matching the given app_label and case-insensitive model_name.
+    Returns the model matching the given app_label and case-insensitive
+    model_name.
+
     Returns None if no model is found.
     """
+    if seed_cache:
+        get_apps()
     try:
         model_dict = _app_models[app_label]
     except KeyError:

django/forms/__init__.py

             (self.get_id(), self.field_name, escape(data))
 
 class CheckboxField(FormField):
-    def __init__(self, field_name, checked_by_default=False):
+    def __init__(self, field_name, checked_by_default=False, validator_list=None):
+        if validator_list is None: validator_list = []
         self.field_name = field_name
         self.checked_by_default = checked_by_default
-        self.is_required, self.validator_list = False, [] # because the validator looks for these
+        self.is_required = False # because the validator looks for these
+        self.validator_list = validator_list[:]
 
     def render(self, data):
         checked_html = ''

django/middleware/gzip.py

     """
     def process_response(self, request, response):
         patch_vary_headers(response, ('Accept-Encoding',))
-        if response.has_header('Content-Encoding'):
+        
+        # Avoid gzipping if we've already got a content-encoding or if the
+        # content-type is Javascript (silly IE...)
+        is_js = "javascript" in response.headers.get('Content-Type', '').lower()
+        if response.has_header('Content-Encoding') or is_js:
             return response
 
         ae = request.META.get('HTTP_ACCEPT_ENCODING', '')

django/template/__init__.py

         super(DebugParser, self).extend_nodelist(nodelist, node, token)
 
     def unclosed_block_tag(self, parse_until):
-        (command, source) = self.command_stack.pop()
+        command, source = self.command_stack.pop()
         msg = "Unclosed tag '%s'. Looking for one of: %s " % (command, ', '.join(parse_until))
         raise self.source_error( source, msg)
 

django/template/loader_tags.py

             if self.parent_name_expr:
                 error_msg += " Got this from the %r variable." % self.parent_name_expr #TODO nice repr.
             raise TemplateSyntaxError, error_msg
+        if hasattr(parent, 'render'):
+            return parent
         try:
             source, origin = find_template_source(parent, self.template_dirs)
         except TemplateDoesNotExist:
         if block_name in parser.__loaded_blocks:
             raise TemplateSyntaxError, "'%s' tag with name '%s' appears more than once" % (bits[0], block_name)
         parser.__loaded_blocks.append(block_name)
-    except AttributeError: # parser._loaded_blocks isn't a list yet
+    except AttributeError: # parser.__loaded_blocks isn't a list yet
         parser.__loaded_blocks = [block_name]
     nodelist = parser.parse(('endblock',))
     parser.delete_first_token()
 
     This tag may be used in two ways: ``{% extends "base" %}`` (with quotes)
     uses the literal value "base" as the name of the parent template to extend,
-    or ``{% extends variable %}`` uses the value of ``variable`` as the name
-    of the parent template to extend.
+    or ``{% extends variable %}`` uses the value of ``variable`` as either the
+    name of the parent template to extend (if it evaluates to a string,) or as
+    the parent tempate itelf (if it evaluates to a Template object).
     """
     bits = token.contents.split()
     if len(bits) != 2:

django/utils/autoreload.py

 except ImportError:
     import dummy_thread as thread
 
+# This import does nothing, but it's necessary to avoid some race conditions
+# in the threading module. See http://code.djangoproject.com/ticket/2330 .
+try:
+    import threading
+except ImportError:
+    pass
+
+
 RUN_RELOADER = True
 
 def reloader_thread():

django/utils/translation/trans_null.py