diff --git a/AUTHORS b/AUTHORS
index bad8008d86..3c2542cb0d 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -42,6 +42,7 @@ And here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS --
people who have submitted patches, reported bugs, added translations, helped
answer newbie questions, and generally made Django that much better:
+ adurdin@gmail.com
akaihola
Andreas
ant9000@netwise.it
@@ -68,15 +69,19 @@ answer newbie questions, and generally made Django that much better:
Alex Dedul
deric@monowerks.com
dne@mayonnaise.net
+ Maximillian Dornseif
+ dummy@habmalnefrage.de
Jeremy Dunck
Andy Dustman
Clint Ecker
+ favo@exoweb.net
gandalf@owca.info
Baishampayan Ghose
martin.glueck@gmail.com
Simon Greenhill
Espen Grindhaug
Brant Harris
+ heckj@mac.com
hipertracker@gmail.com
Ian Holsman
Kieran Holland
@@ -96,6 +101,7 @@ answer newbie questions, and generally made Django that much better:
lakin.wecker@gmail.com
Stuart Langridge
Eugene Lazutkin
+ Jeong-Min Lee
Christopher Lenz
limodou
Martin Maney
@@ -122,6 +128,7 @@ answer newbie questions, and generally made Django that much better:
Daniel Poelzleithner
J. Rademaker
Michael Radziej
+ ramiro
Brian Ray
rhettg@gmail.com
Oliver Rutherfurd
@@ -144,8 +151,10 @@ answer newbie questions, and generally made Django that much better:
Milton Waddams
Dan Watson
Rachel Willmer
+ Gary Wilson
wojtek
ye7cakf02@sneakemail.com
+ ymasuda@ethercube.com
Cheng Zhang
A big THANK YOU goes to:
diff --git a/README b/README
index d52451d3ba..084f863a1e 100644
--- a/README
+++ b/README
@@ -25,10 +25,10 @@ http://code.djangoproject.com/newticket
To get more help:
* Join the #django channel on irc.freenode.net. Lots of helpful people
- hang out there. Read the archives at http://loglibrary.com/179 .
+ hang out there. Read the archives at http://simon.bofh.ms/logger/django/ .
* Join the django-users mailing list, or read the archives, at
- http://groups-beta.google.com/group/django-users.
+ http://groups.google.com/group/django-users.
To contribute to Django:
diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py
index dee39867c6..dc30d3f1f4 100644
--- a/django/conf/global_settings.py
+++ b/django/conf/global_settings.py
@@ -64,6 +64,7 @@ LANGUAGES = (
('sr', gettext_noop('Serbian')),
('sv', gettext_noop('Swedish')),
('ta', gettext_noop('Tamil')),
+ ('tr', gettext_noop('Turkish')),
('uk', gettext_noop('Ukrainian')),
('zh-cn', gettext_noop('Simplified Chinese')),
('zh-tw', gettext_noop('Traditional Chinese')),
@@ -272,6 +273,10 @@ CACHE_MIDDLEWARE_KEY_PREFIX = ''
COMMENTS_ALLOW_PROFANITIES = False
+# The profanities that will trigger a validation error in the
+# 'hasNoProfanities' validator. All of these should be in lower-case.
+PROFANITIES_LIST = ['asshat', 'asshead', 'asshole', 'cunt', 'fuck', 'gook', 'nigger', 'shit']
+
# The group ID that designates which users are banned.
# Set to None if you're not using it.
COMMENTS_BANNED_USERS_GROUP = None
diff --git a/django/conf/locale/da/LC_MESSAGES/django.mo b/django/conf/locale/da/LC_MESSAGES/django.mo
index 668f02cbef..9f86e56407 100644
Binary files a/django/conf/locale/da/LC_MESSAGES/django.mo and b/django/conf/locale/da/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/da/LC_MESSAGES/django.po b/django/conf/locale/da/LC_MESSAGES/django.po
index 9bf20cf833..7688907694 100644
--- a/django/conf/locale/da/LC_MESSAGES/django.po
+++ b/django/conf/locale/da/LC_MESSAGES/django.po
@@ -1,104 +1,100 @@
-# SOME DESCRIPTIVE TITLE.
+# translation of django.po to Dansk
+# Rune Rønde Laursen , 2006.
# Copyright (C) 2005 and beyond
# This file is distributed under the same license as the PACKAGE package.
# Morten Bagai , Nov 2005.
-#
-#
+# Rune Rønde Laursen , Sept 2006.
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-05-16 10:12+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Morten Bagai \n"
-"Language-Team: Danish\n"
+"PO-Revision-Date: 2006-09-24 10:34+0200\n"
+"Last-Translator: Rune Rønde Laursen \n"
+"Language-Team: Dansk \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.4\n"
#: contrib/comments/models.py:67 contrib/comments/models.py:166
-#, fuzzy
msgid "object ID"
-msgstr "objekt id"
+msgstr "objekt ID"
#: contrib/comments/models.py:68
msgid "headline"
-msgstr ""
+msgstr "overskrift"
#: contrib/comments/models.py:69 contrib/comments/models.py:90
#: contrib/comments/models.py:167
-#, fuzzy
msgid "comment"
-msgstr "indhold"
+msgstr "kommentar"
#: contrib/comments/models.py:70
msgid "rating #1"
-msgstr ""
+msgstr "rangering # 1"
#: contrib/comments/models.py:71
msgid "rating #2"
-msgstr ""
+msgstr "rangering # 2"
#: contrib/comments/models.py:72
msgid "rating #3"
-msgstr ""
+msgstr "rangering # 3"
#: contrib/comments/models.py:73
msgid "rating #4"
-msgstr ""
+msgstr "rangering # 4"
#: contrib/comments/models.py:74
msgid "rating #5"
-msgstr ""
+msgstr "rangering # 5"
#: contrib/comments/models.py:75
msgid "rating #6"
-msgstr ""
+msgstr "rangering # 6"
#: contrib/comments/models.py:76
msgid "rating #7"
-msgstr ""
+msgstr "rangering # 7"
#: contrib/comments/models.py:77
msgid "rating #8"
-msgstr ""
+msgstr "rangering # 8"
#: contrib/comments/models.py:82
msgid "is valid rating"
-msgstr ""
+msgstr "er gyldig rangering"
#: contrib/comments/models.py:83 contrib/comments/models.py:169
msgid "date/time submitted"
-msgstr ""
+msgstr "dato/tidspunkt oprettet"
#: contrib/comments/models.py:84 contrib/comments/models.py:170
msgid "is public"
-msgstr ""
+msgstr "er offentlig"
#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289
-#, fuzzy
msgid "IP address"
-msgstr "e-mail adresse"
+msgstr "IP-adresse"
#: contrib/comments/models.py:86
msgid "is removed"
-msgstr ""
+msgstr "er fjernet"
#: 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 ""
+msgstr "Afkryds denne boks hvis kommentaren er upassende. Beskeden \"Denne kommentar er blevet fjernet\" vil blive vist istedet."
#: contrib/comments/models.py:91
-#, fuzzy
msgid "comments"
-msgstr "indhold"
+msgstr "kommentarer"
#: contrib/comments/models.py:131 contrib/comments/models.py:207
-#, fuzzy
msgid "Content object"
-msgstr "indholdstype"
+msgstr "Indholdsobjekt"
#: contrib/comments/models.py:159
#, python-format
@@ -109,52 +105,52 @@ msgid ""
"\n"
"http://%(domain)s%(url)s"
msgstr ""
+"Indsendt af %(user)s den %(date)s\n"
+"\n"
+"%(comment)s\n"
+"\n"
+"http://%(domain)s%(url)s"
#: contrib/comments/models.py:168
-#, fuzzy
msgid "person's name"
-msgstr "fornavn"
+msgstr "personens navn"
#: contrib/comments/models.py:171
-#, fuzzy
msgid "ip address"
-msgstr "e-mail adresse"
+msgstr "IP-adresse"
#: contrib/comments/models.py:173
msgid "approved by staff"
-msgstr ""
+msgstr "godkendt af personale"
#: contrib/comments/models.py:176
-#, fuzzy
msgid "free comment"
-msgstr "tillad kommentarer"
+msgstr "fri kommentar"
#: contrib/comments/models.py:177
-#, fuzzy
msgid "free comments"
-msgstr "tillad kommentarer"
+msgstr "frie kommentarer"
#: contrib/comments/models.py:233
msgid "score"
-msgstr ""
+msgstr "score"
#: contrib/comments/models.py:234
-#, fuzzy
msgid "score date"
-msgstr "udløbsdato"
+msgstr "scoringsdato"
#: contrib/comments/models.py:237
msgid "karma score"
-msgstr ""
+msgstr "karma score"
#: contrib/comments/models.py:238
msgid "karma scores"
-msgstr ""
+msgstr "karma score"
#: contrib/comments/models.py:242
#, python-format
msgid "%(score)d rating by %(user)s"
-msgstr ""
+msgstr "%(score)d rangering efter %(user)s"
#: contrib/comments/models.py:258
#, python-format
@@ -163,62 +159,59 @@ msgid ""
"\n"
"%(text)s"
msgstr ""
+"Denne kommentar blev markeret af %(user)s:\n"
+"\n"
+"%(text)s"
#: contrib/comments/models.py:265
-#, fuzzy
msgid "flag date"
-msgstr "flad side"
+msgstr "mærkedato"
#: contrib/comments/models.py:268
-#, fuzzy
msgid "user flag"
-msgstr "Bruger"
+msgstr "bruger-mærke"
#: contrib/comments/models.py:269
-#, fuzzy
msgid "user flags"
-msgstr "Brugere"
+msgstr "bruger-mærker"
#: contrib/comments/models.py:273
#, python-format
msgid "Flag by %r"
-msgstr ""
+msgstr "Mærket af %r"
#: contrib/comments/models.py:278
-#, fuzzy
msgid "deletion date"
-msgstr "sessionsdata"
+msgstr "sletningsdato"
#: contrib/comments/models.py:280
msgid "moderator deletion"
-msgstr ""
+msgstr "moderator-sletning"
#: contrib/comments/models.py:281
msgid "moderator deletions"
-msgstr ""
+msgstr "moderator-sletninger"
#: contrib/comments/models.py:285
#, python-format
msgid "Moderator deletion by %r"
-msgstr ""
+msgstr "Moderator-sletning af %r"
#: contrib/comments/views/karma.py:19
msgid "Anonymous users cannot vote"
-msgstr ""
+msgstr "Anonyme brugere kan ikke stemme"
#: contrib/comments/views/karma.py:23
-#, fuzzy
msgid "Invalid comment ID"
-msgstr "tillad kommentarer"
+msgstr "Ugyldigt kommentar-ID"
#: contrib/comments/views/karma.py:25
msgid "No voting for yourself"
-msgstr ""
+msgstr "Du kan ikke selv stemme"
#: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
+msgid "This rating is required because you've entered at least one other rating."
+msgstr "Denne rangering er påkrævet fordi du har indtastet mindst en anden rangering."
#: contrib/comments/views/comments.py:112
#, python-format
@@ -233,7 +226,13 @@ msgid_plural ""
"\n"
"%(text)s"
msgstr[0] ""
+"Denne kommentar blev indsendt af en bruger som har indsendt færre end %(count)s kommentar:\n"
+"\n"
+"%(text)s"
msgstr[1] ""
+"Denne kommentar blev indsendt af en bruger som har indsendt færre end %(count)s kommentarer:\n"
+"\n"
+"%(text)s"
#: contrib/comments/views/comments.py:117
#, python-format
@@ -242,33 +241,36 @@ msgid ""
"\n"
"%(text)s"
msgstr ""
+"Denne kommentar blev indsendt af en overfladisk bruger:\n"
+"\n"
+"%(text)s"
#: contrib/comments/views/comments.py:189
#: contrib/comments/views/comments.py:280
msgid "Only POSTs are allowed"
-msgstr ""
+msgstr "Kun POST er tilladt"
#: contrib/comments/views/comments.py:193
#: contrib/comments/views/comments.py:284
msgid "One or more of the required fields wasn't submitted"
-msgstr ""
+msgstr "En eller flere af de påkrævede felter blev ikke indsendt"
#: contrib/comments/views/comments.py:197
#: contrib/comments/views/comments.py:286
msgid "Somebody tampered with the comment form (security violation)"
-msgstr ""
+msgstr "Nogen har misbrugt kommentarformularen (sikkerhedsovertrædelse)"
#: 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 ""
+msgstr "Kommentarformularen havde en ugyldigt 'target'-parameter -- objekt-ID'var ugyldigt"
#: contrib/comments/views/comments.py:257
#: contrib/comments/views/comments.py:321
msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr ""
+msgstr "Kommentarformularen tilbød ikke hverken 'forhåndsvis' eller 'indsend'"
#: contrib/comments/templates/comments/form.html:6
#: contrib/comments/templates/comments/form.html:8
@@ -282,9 +284,8 @@ msgid "Password:"
msgstr "Adgangskode:"
#: contrib/comments/templates/comments/form.html:6
-#, fuzzy
msgid "Forgotten your password?"
-msgstr "Ændre adgangskode"
+msgstr "Har du glemt dit kodeord?"
#: contrib/comments/templates/comments/form.html:8
#: contrib/admin/templates/admin/object_history.html:3
@@ -309,38 +310,35 @@ msgstr "Log ud"
#: contrib/comments/templates/comments/form.html:12
msgid "Ratings"
-msgstr ""
+msgstr "Rangeringer"
#: contrib/comments/templates/comments/form.html:12
#: contrib/comments/templates/comments/form.html:23
msgid "Required"
-msgstr ""
+msgstr "Påkrævet"
#: contrib/comments/templates/comments/form.html:12
#: contrib/comments/templates/comments/form.html:23
msgid "Optional"
-msgstr ""
+msgstr "Valgfri"
#: contrib/comments/templates/comments/form.html:23
msgid "Post a photo"
-msgstr ""
+msgstr "Indsend et foto"
#: contrib/comments/templates/comments/form.html:27
#: contrib/comments/templates/comments/freeform.html:5
-#, fuzzy
msgid "Comment:"
-msgstr "tillad kommentarer"
+msgstr "Kommentar:"
#: contrib/comments/templates/comments/form.html:32
#: contrib/comments/templates/comments/freeform.html:9
-#, fuzzy
msgid "Preview comment"
-msgstr "tillad kommentarer"
+msgstr "Forhåndsvis kommentar"
#: contrib/comments/templates/comments/freeform.html:4
-#, fuzzy
msgid "Your name:"
-msgstr "brugernavn"
+msgstr "Dit navn:"
#: contrib/admin/filterspecs.py:40
#, python-format
@@ -348,45 +346,45 @@ msgid ""
"
By %s:
\n"
"
\n"
msgstr ""
+"
Af %s:
\n"
+"
\n"
#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
#: contrib/admin/filterspecs.py:143
msgid "All"
-msgstr ""
+msgstr "Alle"
#: contrib/admin/filterspecs.py:109
msgid "Any date"
-msgstr ""
+msgstr "Når som helst"
#: contrib/admin/filterspecs.py:110
-#, fuzzy
msgid "Today"
-msgstr "Mandag"
+msgstr "Idag"
#: contrib/admin/filterspecs.py:113
msgid "Past 7 days"
-msgstr ""
+msgstr "De sidste 7 dage"
#: contrib/admin/filterspecs.py:115
msgid "This month"
-msgstr ""
+msgstr "Denne måned"
#: contrib/admin/filterspecs.py:117
msgid "This year"
-msgstr ""
+msgstr "Dette år"
#: contrib/admin/filterspecs.py:143
msgid "Yes"
-msgstr ""
+msgstr "Ja"
#: contrib/admin/filterspecs.py:143
-#, fuzzy
msgid "No"
-msgstr "Nov."
+msgstr "Nej"
#: contrib/admin/filterspecs.py:150
msgid "Unknown"
-msgstr ""
+msgstr "Ukendt"
#: contrib/admin/models.py:16
msgid "action time"
@@ -394,7 +392,7 @@ msgstr "handlingstid"
#: contrib/admin/models.py:19
msgid "object id"
-msgstr "objekt id"
+msgstr "objekt-ID"
#: contrib/admin/models.py:20
msgid "object repr"
@@ -418,14 +416,14 @@ msgstr "logmeddelelser"
#: contrib/admin/templatetags/admin_list.py:228
msgid "All dates"
-msgstr ""
+msgstr "Alle datoer"
#: 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 ""
+msgstr "Indtast venligst et korrekt brugernavn og kodeord. Læg mærke til at begge felter er versalfølsomme."
#: contrib/admin/views/decorators.py:23
#: contrib/admin/templates/admin/login.html:25
@@ -436,196 +434,189 @@ msgstr "Log ind"
msgid ""
"Please log in again, because your session has expired. Don't worry: Your "
"submission has been saved."
-msgstr ""
+msgstr "Log venligst ind igen, da din session er udløbet. Der er ingen grund til bekymring, informationen du indsendte er blevet gemt."
#: 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 ""
+msgstr "Det ser ud til din browser ikke er indstillet til at acceptere cookier. Slå venligst cookier til, genindlæs denne side og prøv igen."
#: contrib/admin/views/decorators.py:82
msgid "Usernames cannot contain the '@' character."
-msgstr ""
+msgstr "Brugernavne kan ikke indeholde tegnet '@'."
#: contrib/admin/views/decorators.py:84
#, python-format
msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
+msgstr "Din e-mail-adresse er ikke dit brugernavn. Prøv '%s' i stedet."
#: contrib/admin/views/main.py:226
-#, fuzzy
msgid "Site administration"
-msgstr "Django administration"
+msgstr "Website-administration"
#: contrib/admin/views/main.py:260
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr ""
+msgstr "%(name)s \"%(obj)s\" blev tilføjet i databasen."
#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348
msgid "You may edit it again below."
-msgstr ""
+msgstr "Du kan redigere det igen herunder."
#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357
#, python-format
msgid "You may add another %s below."
-msgstr ""
+msgstr "Du kan tilføje endnu en %s herunder."
#: contrib/admin/views/main.py:290
-#, fuzzy, python-format
+#, python-format
msgid "Add %s"
-msgstr "Tilføj"
+msgstr "Tilføj %s"
#: contrib/admin/views/main.py:336
#, python-format
msgid "Added %s."
-msgstr ""
+msgstr "Tilføjede %s."
#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
#: contrib/admin/views/main.py:340
msgid "and"
-msgstr ""
+msgstr "og"
#: contrib/admin/views/main.py:338
-#, fuzzy, python-format
+#, python-format
msgid "Changed %s."
-msgstr "Ændre"
+msgstr "Ændrede %s."
#: contrib/admin/views/main.py:340
#, python-format
msgid "Deleted %s."
-msgstr ""
+msgstr "Slettede %s."
#: contrib/admin/views/main.py:343
msgid "No fields changed."
-msgstr ""
+msgstr "Ingen filer ændret."
#: contrib/admin/views/main.py:346
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr ""
+msgstr "%(name)s \"%(obj)s\" blev ændret."
#: contrib/admin/views/main.py:354
#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
+msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr "%(name)s \"%(obj)s\" blev tilføjet. Du kan redigere det igen herunder."
#: contrib/admin/views/main.py:392
-#, fuzzy, python-format
+#, python-format
msgid "Change %s"
-msgstr "Ændre"
+msgstr "Ændr %s"
#: contrib/admin/views/main.py:470
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr ""
+msgstr "Et eller flere %(fieldname)s i %(name)s: %(obj)s"
#: contrib/admin/views/main.py:475
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
-msgstr ""
+msgstr "Et eller flere %(fieldname)s i %(name)s:"
#: contrib/admin/views/main.py:508
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr ""
+msgstr "%(name)s \"%(obj)s\" blev slettet."
#: contrib/admin/views/main.py:511
msgid "Are you sure?"
-msgstr ""
+msgstr "Er du sikker?"
#: contrib/admin/views/main.py:533
-#, fuzzy, python-format
+#, python-format
msgid "Change history: %s"
-msgstr "Ændre adgangskode"
+msgstr "Ændringshistorik: %s"
#: contrib/admin/views/main.py:565
#, python-format
msgid "Select %s"
-msgstr ""
+msgstr "Vælg %s"
#: contrib/admin/views/main.py:565
#, python-format
msgid "Select %s to change"
-msgstr ""
+msgstr "Vælg %s for at ændre"
#: 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 ""
+msgstr "Heltal"
#: contrib/admin/views/doc.py:278
msgid "Boolean (Either True or False)"
-msgstr ""
+msgstr "Boolsk (enten \"true\" eller \"false\")"
#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296
#, python-format
msgid "String (up to %(maxlength)s)"
-msgstr ""
+msgstr "Tekst (op til %(maxlength)s)"
#: contrib/admin/views/doc.py:280
msgid "Comma-separated integers"
-msgstr ""
+msgstr "Kommaadskilte heltal"
#: contrib/admin/views/doc.py:281
-#, fuzzy
msgid "Date (without time)"
-msgstr "handlingstid"
+msgstr "Dato (uden tid)"
#: contrib/admin/views/doc.py:282
-#, fuzzy
msgid "Date (with time)"
-msgstr "Dato/tid"
+msgstr "Dato (med tid)"
#: contrib/admin/views/doc.py:283
-#, fuzzy
msgid "E-mail address"
-msgstr "E-mail adresse:"
+msgstr "E-mail-adresse"
#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287
msgid "File path"
-msgstr ""
+msgstr "Filsti"
#: contrib/admin/views/doc.py:285
-#, fuzzy
msgid "Decimal number"
-msgstr "December"
+msgstr "Decimaltal"
#: contrib/admin/views/doc.py:291
msgid "Boolean (Either True, False or None)"
-msgstr ""
+msgstr "Boolsk (enten \"true\", \"false\", eller \"none\")"
#: contrib/admin/views/doc.py:292
msgid "Relation to parent model"
-msgstr ""
+msgstr "Relation-til-forælder-model"
#: contrib/admin/views/doc.py:293
-#, fuzzy
msgid "Phone number"
-msgstr "Indtast et heltal."
+msgstr "Telefonnummer"
#: contrib/admin/views/doc.py:298
msgid "Text"
-msgstr ""
+msgstr "Tekst"
#: contrib/admin/views/doc.py:299
msgid "Time"
-msgstr ""
+msgstr "Tid"
#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7
msgid "URL"
-msgstr "Internetadresse"
+msgstr "URL"
#: contrib/admin/views/doc.py:301
msgid "U.S. state (two uppercase letters)"
-msgstr ""
+msgstr "Stat (i USA, to store bogstaver)"
#: contrib/admin/views/doc.py:302
msgid "XML text"
-msgstr ""
+msgstr "XML tekst"
#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_list.html:5
@@ -636,7 +627,7 @@ msgstr ""
#: contrib/admin/templates/registration/password_change_form.html:3
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
msgid "Documentation"
-msgstr ""
+msgstr "Dokumentation"
#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_list.html:5
@@ -704,7 +695,7 @@ msgstr ""
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
-msgstr "Django site administration"
+msgstr "Django website-administration"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
@@ -726,9 +717,7 @@ msgstr "Serverfejl (500)"
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 ""
-"Der opstod en fejl. Fejlen er rapporteret til site-administratoren via e-"
-"mail, og vil blive rettet hurtigst muligt. Tak for din tålmodighed."
+msgstr "Der opstod en fejl. Fejlen er rapporteret til website-administratoren via e-mail, og vil blive rettet hurtigst muligt. Tak for din tålmodighed."
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
@@ -737,12 +726,12 @@ msgstr "Siden blev ikke fundet"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
-msgstr "Vi Beklager, men den ønskede side kunne ikke findes"
+msgstr "Vi beklager, men den ønskede side kunne ikke findes"
#: contrib/admin/templates/admin/index.html:17
#, python-format
msgid "Models available in the %(name)s application."
-msgstr ""
+msgstr "Modeller til rådighed i %(name)s applikationen."
#: contrib/admin/templates/admin/index.html:28
#: contrib/admin/templates/admin/change_form.html:15
@@ -751,11 +740,11 @@ msgstr "Tilføj"
#: contrib/admin/templates/admin/index.html:34
msgid "Change"
-msgstr "Ændre"
+msgstr "Ændr"
#: contrib/admin/templates/admin/index.html:44
msgid "You don't have permission to edit anything."
-msgstr "Du har ikke rettigehed til at foretage ændringer"
+msgstr "Du har ikke rettigheder til at foretage ændringer."
#: contrib/admin/templates/admin/index.html:52
msgid "Recent Actions"
@@ -772,7 +761,7 @@ msgstr "Ingen tilgængelige"
#: contrib/admin/templates/admin/change_list.html:11
#, python-format
msgid "Add %(name)s"
-msgstr ""
+msgstr "Tilføj %(name)s"
#: contrib/admin/templates/admin/login.html:22
msgid "Have you forgotten your password?"
@@ -780,12 +769,12 @@ msgstr "Har du glemt din adgangskode?"
#: contrib/admin/templates/admin/base.html:23
msgid "Welcome,"
-msgstr "Velkommen"
+msgstr "Velkommen,"
#: contrib/admin/templates/admin/delete_confirmation.html:9
#: contrib/admin/templates/admin/submit_line.html:3
msgid "Delete"
-msgstr ""
+msgstr "Slet"
#: contrib/admin/templates/admin/delete_confirmation.html:14
#, python-format
@@ -795,16 +784,14 @@ msgid ""
"types of objects:"
msgstr ""
"Hvis du sletter %(object_name)s '%(object)s' vil du også slette relaterede "
-"objekter, men du har ikke rettigheder til at slette flg. typer objekter:"
+"objekter, men du har ikke rettigheder til at slette følgende objekttyper:"
#: 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 ""
-"Er du sikker på at du vil slette %(object_name) \"%(object)s\"? Alle de "
-"følgende relaterede objekter vil blive slettet:"
+msgstr "Er du sikker på du vil slette %(object_name)s \"%(object)s\"? Alle følgende relaterede objekter vil blive slettet:"
#: contrib/admin/templates/admin/delete_confirmation.html:26
msgid "Yes, I'm sure"
@@ -813,62 +800,61 @@ msgstr "Ja, jeg er sikker"
#: contrib/admin/templates/admin/filter.html:2
#, python-format
msgid " By %(title)s "
-msgstr ""
+msgstr " Efter %(title)s "
#: contrib/admin/templates/admin/search_form.html:8
msgid "Go"
-msgstr ""
+msgstr "Kør"
#: contrib/admin/templates/admin/change_form.html:21
msgid "View on site"
-msgstr ""
+msgstr "Se på website"
#: contrib/admin/templates/admin/change_form.html:30
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Ret venligst fejlen herunder."
+msgstr[1] "Ret venligst fejlene herunder."
#: contrib/admin/templates/admin/change_form.html:48
msgid "Ordering"
-msgstr ""
+msgstr "Rækkefølge"
#: contrib/admin/templates/admin/change_form.html:51
msgid "Order:"
-msgstr ""
+msgstr "Rækkefølge:"
#: contrib/admin/templates/admin/submit_line.html:4
msgid "Save as new"
-msgstr ""
+msgstr "Gem som ny"
#: contrib/admin/templates/admin/submit_line.html:5
msgid "Save and add another"
-msgstr ""
+msgstr "Gem og tilføj endnu en"
#: contrib/admin/templates/admin/submit_line.html:6
msgid "Save and continue editing"
-msgstr ""
+msgstr "Gem og fortsæt med at redigere"
#: contrib/admin/templates/admin/submit_line.html:7
-#, fuzzy
msgid "Save"
-msgstr "aktiv"
+msgstr "Gem"
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_change_form.html:6
#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
-msgstr "Ændre passord"
+msgstr "Ændr adgangskode"
#: contrib/admin/templates/registration/password_change_done.html:6
#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
-msgstr "Adgangskoden er ændret"
+msgstr "Adgangskoden blev ændret"
#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
-msgstr "Din adgangskode er ændret"
+msgstr "Din adgangskode blev ændret."
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/password_reset_form.html:6
@@ -881,13 +867,11 @@ msgstr "Nulstil adgangskode"
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 ""
-"Har din adgangskode? Indtast din email-adresse nedenfor, så sender vi dig en "
-"ny kode via e-mail"
+msgstr "Har du glemt din adgangskode? Indtast din e-mail-adresse herunder, så sender vi dig en ny adgangskode."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
-msgstr "E-mail adresse:"
+msgstr "E-mail-adresse:"
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "Reset my password"
@@ -895,7 +879,7 @@ msgstr "Nulstil min adgangskode"
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Tak for den tid du brugte på sitet idag"
+msgstr "Tak for den kvalitetstid du brugte på websitet idag."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
@@ -910,18 +894,16 @@ msgstr "Adgangskoden blev nulstillet"
msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
-msgstr ""
-"Vi har e-mailet en ny adgangskode til dig. Du skulle modtage den om ganske "
-"kort tid."
+msgstr "Vi har sendt en ny adgangskode til din e-mail-adresse. Du skulle modtage den om ganske kort tid."
#: 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 ""
-"Indtast venligst din gamle adgangskode af sikkerhedsgrunde, og indtast så "
-"dit nye password to gange, så vi kan være sikre på, at det er indtastet "
-"korrekt"
+"Indtast venligst din gamle adgangskode, for en sikkerheds skyld og indtast så "
+"din nye adgangskode to gange, så vi kan være sikre på, at den er indtastet "
+"korrekt."
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
@@ -937,17 +919,16 @@ msgstr "Bekræft ny adgangskode:"
#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
-msgstr "Ændre adgangskode"
+msgstr "Ændr min adgangskode"
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
-msgstr ""
-"Du modtager denne e-mail, fordi du har bedt om at få nulstillet dit password"
+msgstr "Du modtager denne e-mail, fordi du har bedt om at få nulstillet din adgangskode"
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
msgid "for your user account at %(site_name)s"
-msgstr "for din konto hos %(site_name)s"
+msgstr "til din brugerkonto ved %(site_name)s"
#: contrib/admin/templates/registration/password_reset_email.html:5
#, python-format
@@ -956,15 +937,15 @@ msgstr "Din nye adgangskode er: %(new_password)s"
#: contrib/admin/templates/registration/password_reset_email.html:7
msgid "Feel free to change this password by going to this page:"
-msgstr "Du kan ændre din adgangskode ved at gå til denne side"
+msgstr "Du kan ændre din adgangskode ved at gå til denne side:"
#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:"
-msgstr "I det tilfælde, at du har glemt dit brugernavn er det:"
+msgstr "I det tilfælde at du har glemt dit brugernavn er det:"
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
-msgstr "Tak, fordi du brugte vores site!"
+msgstr "Tak fordi du brugte vores website!"
#: contrib/admin/templates/registration/password_reset_email.html:15
#, python-format
@@ -973,11 +954,11 @@ msgstr "Med venlig hilsen %(site_name)s"
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
msgid "Bookmarklets"
-msgstr ""
+msgstr "Bookmarklets"
#: contrib/admin/templates/admin_doc/bookmarklets.html:5
msgid "Documentation bookmarklets"
-msgstr ""
+msgstr "Documentation bookmarklets"
#: contrib/admin/templates/admin_doc/bookmarklets.html:9
msgid ""
@@ -989,60 +970,64 @@ msgid ""
"as \"internal\" (talk to your system administrator if you aren't sure if\n"
"your computer is \"internal\").
\n"
msgstr ""
+"\n"
+"
For at installere bookmarklets, træk linket til din bogmærkelinje\n, eller højreklik på linket og tilføj det til dine bogmærker. Du kan nu\n"
+"markere bookmarkletten fra enhver side på websitet. Bid mærke i at nogle af disse \n"
+"bookmarkletter kræver at du ser på websitet fra en computer der opfattes \n"
+"som \"intern\" (tal med din systemadministrator, hvis du ikke er sikker på om\n"
+"din computer er \"intern\").
\n"
#: contrib/admin/templates/admin_doc/bookmarklets.html:19
msgid "Documentation for this page"
-msgstr ""
+msgstr "Dokumentation for denne side"
#: 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 ""
+msgstr "Bringer dig fra en hvilken som helst side til dokumentationen for det view der genererer den pågældende side."
#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-#, fuzzy
msgid "Show object ID"
-msgstr "objekt id"
+msgstr "Vis objekt-ID"
#: contrib/admin/templates/admin_doc/bookmarklets.html:23
msgid ""
"Shows the content-type and unique ID for pages that represent a single "
"object."
-msgstr ""
+msgstr "Viser indholdstypen og unikt ID for sider der repræsenterer et enkelt objekt."
#: contrib/admin/templates/admin_doc/bookmarklets.html:25
msgid "Edit this object (current window)"
-msgstr ""
+msgstr "Redigér dette objekt (i det aktuelle vindue)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:26
msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
+msgstr "Springer til administrationssiden for sider der repræsenterer et enkelt objekt."
#: contrib/admin/templates/admin_doc/bookmarklets.html:28
msgid "Edit this object (new window)"
-msgstr ""
+msgstr "Redigér dette objekt (i nyt vindue)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:29
msgid "As above, but opens the admin page in a new window."
-msgstr ""
+msgstr "Som ovenfor, men åbner administrationssiden i et nyt vindue."
#: contrib/admin/templates/widget/date_time.html:3
msgid "Date:"
-msgstr ""
+msgstr "Dato:"
#: contrib/admin/templates/widget/date_time.html:4
msgid "Time:"
-msgstr ""
+msgstr "Tid:"
#: contrib/admin/templates/widget/file.html:2
msgid "Currently:"
-msgstr ""
+msgstr "Nuværende:"
#: contrib/admin/templates/widget/file.html:3
-#, fuzzy
msgid "Change:"
-msgstr "Ændre"
+msgstr "Ændr:"
#: contrib/redirects/models.py:7
msgid "redirect from"
@@ -1054,7 +1039,7 @@ msgid ""
"events/search/'."
msgstr ""
"Dette skal være en absolut sti uden domænenavnet. For eksempel: '/nyheder/"
-"find/"
+"søg/"
#: contrib/redirects/models.py:9
msgid "redirect to"
@@ -1065,7 +1050,7 @@ msgid ""
"This can be either an absolute path (as above) or a full URL starting with "
"'http://'."
msgstr ""
-"Dette kan enten være en absolut sti (som over), eller en komplet URL "
+"Dette kan enten være en absolut sti (som ovenfor), eller en komplet URL "
"startende med 'http://'"
#: contrib/redirects/models.py:12
@@ -1077,11 +1062,8 @@ msgid "redirects"
msgstr "omaddresseringer"
#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Eksempel: '/om/kontakt/'. Vær sikker på at du har en skråstreg foran og og "
-"bagefter."
+msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgstr "Eksempel: '/om/kontakt/'. Vær sikker på at du har en skråstreg foran og bagved."
#: contrib/flatpages/models.py:9
msgid "title"
@@ -1100,22 +1082,19 @@ msgid "template name"
msgstr "skabelonnavn"
#: contrib/flatpages/models.py:13
-#, fuzzy
msgid ""
"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
"use 'flatpages/default'."
-msgstr ""
-"Eksempel: 'fladesider/kontakt_side'. Vist denne ikke denne er gitt, vill "
-"'flatfiles/default' bli brukt."
+msgstr "Eksempel: 'fladesider/kontakt_side'. Hvis dette ikke tilbydes, bruger systemet 'fladesider/default'."
#: contrib/flatpages/models.py:14
msgid "registration required"
-msgstr "registrering kreves"
+msgstr "registrering påkrævet"
#: contrib/flatpages/models.py:14
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr ""
-"Hvis denne box er krydset af, vil kun brugere, der er logget ind, kunne se "
+"Hvis denne boks er markeret, vil kun brugere der er logget ind, kunne se "
"siden."
#: contrib/flatpages/models.py:18
@@ -1135,24 +1114,20 @@ msgid "codename"
msgstr "kodenavn"
#: contrib/auth/models.py:17
-#, fuzzy
msgid "permission"
-msgstr "Rettighed"
+msgstr "rettighed"
#: contrib/auth/models.py:18 contrib/auth/models.py:27
-#, fuzzy
msgid "permissions"
-msgstr "Rettigheder"
+msgstr "rettigheder"
#: contrib/auth/models.py:29
-#, fuzzy
msgid "group"
-msgstr "Gruppe"
+msgstr "gruppe"
#: contrib/auth/models.py:30 contrib/auth/models.py:65
-#, fuzzy
msgid "groups"
-msgstr "Grupper"
+msgstr "grupper"
#: contrib/auth/models.py:55
msgid "username"
@@ -1168,7 +1143,7 @@ msgstr "efternavn"
#: contrib/auth/models.py:58
msgid "e-mail address"
-msgstr "e-mail adresse"
+msgstr "e-mail-adresse"
#: contrib/auth/models.py:59
msgid "password"
@@ -1176,7 +1151,7 @@ msgstr "adgangskode"
#: contrib/auth/models.py:59
msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr ""
+msgstr "Brug '[algo]$[salt]$[hexdigest]'"
#: contrib/auth/models.py:60
msgid "staff status"
@@ -1184,7 +1159,7 @@ msgstr "administrationsstatus"
#: contrib/auth/models.py:60
msgid "Designates whether the user can log into this admin site."
-msgstr "Bestemmer om brugeren kan logge ind på dette administrationssite"
+msgstr "Bestemmer om brugeren kan logge ind på dette administrationswebsite."
#: contrib/auth/models.py:61
msgid "active"
@@ -1192,7 +1167,7 @@ msgstr "aktiv"
#: contrib/auth/models.py:62
msgid "superuser status"
-msgstr "superbruger"
+msgstr "superbrugerstatus"
#: contrib/auth/models.py:63
msgid "last login"
@@ -1207,23 +1182,20 @@ msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
msgstr ""
-"I tillæg til de rettighder, som manuelt er tildelt brugeren, vil denne også "
-"få alle rettigheder tildelt hver gruppe han/hun er medlem af"
+"Udover de rettigheder, der manuelt er tildelt brugeren, vil denne også "
+"få alle rettigheder der er tildelt hver gruppe, brugeren er medlem af."
#: contrib/auth/models.py:67
-#, fuzzy
msgid "user permissions"
-msgstr "Rettigheder"
+msgstr "brugerrettigheder"
#: contrib/auth/models.py:70
-#, fuzzy
msgid "user"
-msgstr "Bruger"
+msgstr "bruger"
#: contrib/auth/models.py:71
-#, fuzzy
msgid "users"
-msgstr "Brugere"
+msgstr "brugere"
#: contrib/auth/models.py:76
msgid "Personal info"
@@ -1242,20 +1214,18 @@ msgid "Groups"
msgstr "Grupper"
#: contrib/auth/models.py:219
-#, fuzzy
msgid "message"
-msgstr "Meddelelse"
+msgstr "meddelelse"
#: contrib/auth/forms.py:30
msgid ""
"Your Web browser doesn't appear to have cookies enabled. Cookies are "
"required for logging in."
-msgstr ""
+msgstr "Din browser ser ud til ikke at have cookier aktiveret. Cookier er påkrævet for at kunne logge ind."
#: contrib/contenttypes/models.py:25
-#, fuzzy
msgid "python model class name"
-msgstr "python modulnavn"
+msgstr "python model klassenavn"
#: contrib/contenttypes/models.py:28
msgid "content type"
@@ -1295,11 +1265,11 @@ msgstr "vist navn"
#: contrib/sites/models.py:15
msgid "site"
-msgstr "side"
+msgstr "website"
#: contrib/sites/models.py:16
msgid "sites"
-msgstr "sider"
+msgstr "websites"
#: utils/translation.py:360
msgid "DATE_FORMAT"
@@ -1391,52 +1361,51 @@ msgstr "December"
#: utils/dates.py:19
msgid "jan"
-msgstr ""
+msgstr "jan"
#: utils/dates.py:19
msgid "feb"
-msgstr ""
+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 "Maj"
+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 "aug"
#: utils/dates.py:20
msgid "sep"
-msgstr ""
+msgstr "sept"
#: 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."
@@ -1469,44 +1438,42 @@ msgstr "Dec."
#: utils/timesince.py:12
msgid "year"
msgid_plural "years"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "år"
+msgstr[1] "år"
#: utils/timesince.py:13
msgid "month"
msgid_plural "months"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "måned"
+msgstr[1] "måneder"
#: utils/timesince.py:14
msgid "week"
msgid_plural "weeks"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "uge"
+msgstr[1] "uger"
#: utils/timesince.py:15
-#, fuzzy
msgid "day"
msgid_plural "days"
-msgstr[0] "Maj"
-msgstr[1] "Maj"
+msgstr[0] "dag"
+msgstr[1] "dage"
#: utils/timesince.py:16
msgid "hour"
msgid_plural "hours"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "time"
+msgstr[1] "timer"
#: utils/timesince.py:17
-#, fuzzy
msgid "minute"
msgid_plural "minutes"
-msgstr[0] "side"
-msgstr[1] "side"
+msgstr[0] "minut"
+msgstr[1] "minutter"
#: conf/global_settings.py:37
msgid "Bengali"
-msgstr ""
+msgstr "Bengalsk"
#: conf/global_settings.py:38
msgid "Czech"
@@ -1517,9 +1484,8 @@ msgid "Welsh"
msgstr "Walisisk"
#: conf/global_settings.py:40
-#, fuzzy
msgid "Danish"
-msgstr "Spansk"
+msgstr "Dansk"
#: conf/global_settings.py:41
msgid "German"
@@ -1527,7 +1493,7 @@ msgstr "Tysk"
#: conf/global_settings.py:42
msgid "Greek"
-msgstr ""
+msgstr "Græsk"
#: conf/global_settings.py:43
msgid "English"
@@ -1547,11 +1513,11 @@ msgstr "Galicisk"
#: conf/global_settings.py:47
msgid "Hungarian"
-msgstr ""
+msgstr "Ungarsk"
#: conf/global_settings.py:48
msgid "Hebrew"
-msgstr ""
+msgstr "Hebræisk"
#: conf/global_settings.py:49
msgid "Icelandic"
@@ -1563,11 +1529,11 @@ msgstr "Italiensk"
#: conf/global_settings.py:51
msgid "Japanese"
-msgstr ""
+msgstr "Japansk"
#: conf/global_settings.py:52
msgid "Dutch"
-msgstr ""
+msgstr "Hollandsk"
#: conf/global_settings.py:53
msgid "Norwegian"
@@ -1590,9 +1556,8 @@ msgid "Slovak"
msgstr "Slovakisk"
#: conf/global_settings.py:58
-#, fuzzy
msgid "Slovenian"
-msgstr "Slovakisk"
+msgstr "Slovensk"
#: conf/global_settings.py:59
msgid "Serbian"
@@ -1603,9 +1568,8 @@ msgid "Swedish"
msgstr "Svensk"
#: conf/global_settings.py:61
-#, fuzzy
msgid "Ukrainian"
-msgstr "Brasiliansk"
+msgstr "Ukrainsk"
#: conf/global_settings.py:62
msgid "Simplified Chinese"
@@ -1620,20 +1584,18 @@ msgid "This value must contain only letters, numbers and underscores."
msgstr "Dette felt må kun indeholde bogstaver, tal og understreger."
#: core/validators.py:64
-#, fuzzy
msgid ""
"This value must contain only letters, numbers, underscores, dashes or "
"slashes."
-msgstr ""
-"Dette felt må kun indeholde bogstaver, tal, understreger og skråstreger."
+msgstr "Dette felt må kun indeholde bogstaver, tal, understreger, streger eller skråstreger."
#: core/validators.py:72
msgid "Uppercase letters are not allowed here."
-msgstr "Store bogstaver er ikke tilladt her"
+msgstr "Store bogstaver er ikke tilladt her."
#: core/validators.py:76
msgid "Lowercase letters are not allowed here."
-msgstr "Små bogstaver er ikke tilladt her"
+msgstr "Små bogstaver er ikke tilladt her."
#: core/validators.py:83
msgid "Enter only digits separated by commas."
@@ -1641,11 +1603,11 @@ msgstr "Indtast kun tal adskilt af kommaer."
#: core/validators.py:95
msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Indtast gyldige email-adresser adskilt af kommaer"
+msgstr "Indtast gyldige e-mail-adresser adskilt af kommaer."
#: core/validators.py:99
msgid "Please enter a valid IP address."
-msgstr "Venlist indtast en gyldig email-adresse."
+msgstr "Indtast venligst en gyldig IP-adresse."
#: core/validators.py:103
msgid "Empty values are not allowed here."
@@ -1653,11 +1615,11 @@ msgstr "Dette felt kan ikke være tomt."
#: core/validators.py:107
msgid "Non-numeric characters aren't allowed here."
-msgstr "Der må kun være tal her"
+msgstr "Der må kun være tal i dette felt."
#: core/validators.py:111
msgid "This value can't be comprised solely of digits."
-msgstr "Denne værdi kan ikke kun bestå af tal."
+msgstr "Denne værdi kan ikke udelukkende bestå af tal."
#: core/validators.py:116
msgid "Enter a whole number."
@@ -1681,26 +1643,25 @@ msgstr "Indtast dato og tid i ÅÅÅÅ-MM-DD TT:MM format."
#: core/validators.py:136
msgid "Enter a valid e-mail address."
-msgstr "Indtast en gyldig email-adresse."
+msgstr "Indtast en gyldig e-mail-adresse."
#: core/validators.py:148
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
-"Upload en billed-fil. Filen du uploadede var enten ikke et billede eller en "
-"ødelagt billed-fil"
+"Indsend en billedfil. Filen du indsendte var enten ikke et billede eller en "
+"ødelagt billedfil."
#: core/validators.py:155
#, python-format
msgid "The URL %s does not point to a valid image."
-msgstr "URLen %s viser ikke til en gyldig billed-fil"
+msgstr "URLen %s viser ikke til en gyldig billedfil."
#: core/validators.py:159
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Telefonnumre skal være i XXX-XXX-XXXX formatet. \"%s\" er ikke godkjent."
+msgstr "Telefonnumre skal være i formatet XXXXXXXX. \"%s\" er ikke godkendt."
#: core/validators.py:167
#, python-format
@@ -1709,7 +1670,7 @@ msgstr "URLen %s viser ikke til en gyldig QuickTime-film."
#: core/validators.py:171
msgid "A valid URL is required."
-msgstr "En gyldig URL er påkrævet"
+msgstr "En gyldig URL er påkrævet."
#: core/validators.py:185
#, python-format
@@ -1733,11 +1694,11 @@ msgstr "Ugyldig URL: %s"
#: core/validators.py:206 core/validators.py:208
#, python-format
msgid "The URL %s is a broken link."
-msgstr "Denne URL %s linker ikke til en gyldig side eller fil"
+msgstr "Denne URL %s linker ikke til en gyldig side eller fil."
#: core/validators.py:214
msgid "Enter a valid U.S. state abbreviation."
-msgstr "Indtast en gyldig amerikansk statsforkortelse"
+msgstr "Indtast en gyldig amerikansk statsforkortelse."
#: core/validators.py:229
#, python-format
@@ -1753,25 +1714,25 @@ msgstr "Dette felt skal matche '%s' feltet."
#: core/validators.py:255
msgid "Please enter something for at least one field."
-msgstr "Indtast venligst noget i mindst et felt"
+msgstr "Indtast venligst noget, i mindst ét felt"
#: core/validators.py:264 core/validators.py:275
msgid "Please enter both fields or leave them both empty."
-msgstr "Udfyld begge felter, eller lad dem begge være blanke"
+msgstr "Udfyld begge felter, eller lad dem begge være tomme."
#: core/validators.py:282
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Dette felt skal udfyldes, hvis %(field)s er lig %(value)s"
+msgstr "Dette felt skal udfyldes, hvis %(field)s er lig %(value)s."
#: core/validators.py:294
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Dette felt skal udfyldes, hvis %(field)s ikke er lig %(value)s"
+msgstr "Dette felt skal udfyldes, hvis %(field)s ikke er lig %(value)s."
#: core/validators.py:313
msgid "Duplicate values are not allowed."
-msgstr "Duplikate værdier er ikke tilladt her"
+msgstr "Identiske værdier er ikke tilladt her."
#: core/validators.py:336
#, python-format
@@ -1783,34 +1744,32 @@ msgid "Please enter a valid decimal number."
msgstr "Indtast venligst et gyldigt decimaltal."
#: core/validators.py:349
-#, fuzzy, python-format
+#, 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] "Indtast en gyldig decimal med max %s tal ialt"
-msgstr[1] "Indtast en gyldig decimal med max %s tal ialt"
+msgid_plural "Please enter a valid decimal number with at most %s total digits."
+msgstr[0] "Indtast et gyldigt decimaltal med maksimalt %s ciffer i alt."
+msgstr[1] "Indtast et gyldigt decimaltal med maksimalt %s cifre i alt."
#: 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] "Indtast en gyldig decimal med max %s tal efter kommaet"
-msgstr[1] "Indtast en gyldig decimal med max %s tal efter kommaet"
+msgid_plural "Please enter a valid decimal number with at most %s decimal places."
+msgstr[0] "Indtast en gyldig decimal med maksimalt %s tal efter kommaet"
+msgstr[1] "Indtast en gyldig decimal med maksimalt %s tal efter kommaet"
#: core/validators.py:362
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Tjek at den uploadede fil er mindst % bytes."
+msgstr "Tjek at den indsendte fil er mindst %s bytes."
#: core/validators.py:363
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Tjek at den uploadede file er max %s bytes."
+msgstr "Tjek at den indsendte fil er maksimalt %s bytes."
#: core/validators.py:376
msgid "The format for this field is wrong."
-msgstr "Formatet i dette feltet er feil."
+msgstr "Formatet i dette felt er forkert."
#: core/validators.py:391
msgid "This field is invalid."
@@ -1823,18 +1782,15 @@ msgstr "Kunne ikke finde noget i %s."
#: core/validators.py:429
#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"URLen %(url)s returnerede ikke en godkendt Content-Type '%(contenttype)s'."
+msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
+msgstr "URLen %(url)s returnerede ikke en godkendt Content-Type header '%(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 ""
-"Luk venligst %(tag)s på linje %(line)s. (Linjen starer med \"%(start)s\".)"
+msgstr "Luk venligst %(tag)s på linje %(line)s. (Linjen starter med \"%(start)s\".)"
#: core/validators.py:466
#, python-format
@@ -1860,8 +1816,8 @@ msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
-"\"<%(tag)s>\" på linje %(line)s er ikke et gyldigt tag. (Linjen starter med "
-"\"%(start)s\".)"
+"\"<%(tag)s>\" på linje %(line)s er et ugyldigt tag. (Linjen starter med \"%"
+"(start)s\".)"
#: core/validators.py:480
#, python-format
@@ -1869,7 +1825,7 @@ msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
"starts with \"%(start)s\".)"
msgstr ""
-"Et tag på linje %(line)s mangler en obligatorisk attribut. (Linjen starter "
+"Et tag på linje %(line)s mangler en påkrævet attribut. (Linjen starter "
"med \"%(start)s\".)"
#: core/validators.py:485
@@ -1878,120 +1834,94 @@ msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
"starts with \"%(start)s\".)"
msgstr ""
-"\"%(attr)s\" attributten på linje $(line)s har en ugyldig værdi. (Linjen "
+"\"%(attr)s\" attributten på linje %(line)s har en ugyldig værdi. (Linjen "
"starter med \"%(start)s\".)"
#: db/models/manipulators.py:302
#, python-format
msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
+msgstr "%(object)s med denne %(type)s eksisterer allerede for den givne %(field)s."
#: db/models/fields/__init__.py:40
#, python-format
msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr ""
+msgstr "%(optname)s med dette %(fieldname)s eksisterer allerede."
#: 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
-#, fuzzy
msgid "This field is required."
-msgstr "Dette felt er ugyldigt."
+msgstr "Dette felt er påkrævet."
#: db/models/fields/__init__.py:337
-#, fuzzy
msgid "This value must be an integer."
-msgstr "Denne værdi skal være en potens af %s."
+msgstr "Denne værdi skal et heltal."
#: db/models/fields/__init__.py:369
-#, fuzzy
msgid "This value must be either True or False."
-msgstr "Denne værdi skal være en potens af %s."
+msgstr "Denne værdi skal være enten true eller false."
#: db/models/fields/__init__.py:385
-#, fuzzy
msgid "This field cannot be null."
-msgstr "Dette felt er ugyldigt."
+msgstr "Dette felt kan ikke være null."
#: db/models/fields/__init__.py:562
-#, fuzzy
msgid "Enter a valid filename."
-msgstr "Indtast en gyldig email-adresse."
+msgstr "Indtast et gyldigt filnavn."
#: db/models/fields/related.py:43
-#, fuzzy, python-format
+#, python-format
msgid "Please enter a valid %s."
-msgstr "Venlist indtast en gyldig email-adresse."
+msgstr "Indtast venligst en gyldig %s."
#: db/models/fields/related.py:579
-#, fuzzy
msgid "Separate multiple IDs with commas."
-msgstr "Adskil id'er med kommaer."
+msgstr "Adskil flere ID'er med kommaer."
#: db/models/fields/related.py:581
-#, fuzzy
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Hold \"Kontrol\", eller \"Æbletasten\" på Mac, nede for at vælge mere end en."
+msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr "Hold \"Kontrol\", eller \"Æbletasten\" på Mac nede, for at vælge mere end en."
#: 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] ""
-msgstr[1] ""
+msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
+msgstr[0] "Indtast venligst et gyldigt %(self)s-ID. Værdien %(value)r er ugyldig."
+msgstr[1] "Indtast venligst gyldige %(self)s-ID'er. Værdierne %(value)r er ugyldige."
#: 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] ""
-msgstr[1] ""
+msgstr[0] "Sørg for din tekst er kortere end %s tegn."
+msgstr[1] "Sørg for din tekst er kortere end %s tegn."
#: forms/__init__.py:385
-#, fuzzy
msgid "Line breaks are not allowed here."
-msgstr "Små bogstaver er ikke tilladt her"
+msgstr "Linjebrud er ikke tilladt her."
#: 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 ""
+msgstr "Markér et gyldigt valg; '%(data)s' er ikke i %(choices)s."
#: forms/__init__.py:645
msgid "The submitted file is empty."
-msgstr ""
+msgstr "Den indsendte fil er tom."
#: forms/__init__.py:699
-#, fuzzy
msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Indtast et heltal."
+msgstr "Indtast et heltal mellem -32,768 og 32,767."
#: forms/__init__.py:708
-#, fuzzy
msgid "Enter a positive number."
-msgstr "Indtast et heltal."
+msgstr "Indtast et positivt tal."
#: forms/__init__.py:717
-#, fuzzy
msgid "Enter a whole number between 0 and 32,767."
-msgstr "Indtast et heltal."
+msgstr "Indtast et heltal mellem 0 og 32,767."
#: template/defaultfilters.py:379
msgid "yes,no,maybe"
-msgstr ""
+msgstr "ja,nej,måske"
-#, fuzzy
-#~ msgid "Comments"
-#~ msgstr "tillad kommentarer"
-
-#~ msgid "label"
-#~ msgstr "mærkat"
-
-#~ msgid "package"
-#~ msgstr "pakke"
-
-#~ msgid "packages"
-#~ msgstr "pakker"
diff --git a/django/conf/locale/de/LC_MESSAGES/django.mo b/django/conf/locale/de/LC_MESSAGES/django.mo
index a4f4af172e..aef68099d3 100644
Binary files a/django/conf/locale/de/LC_MESSAGES/django.mo and b/django/conf/locale/de/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/de/LC_MESSAGES/django.po b/django/conf/locale/de/LC_MESSAGES/django.po
index 99212a4f53..614ea69247 100644
--- a/django/conf/locale/de/LC_MESSAGES/django.po
+++ b/django/conf/locale/de/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Django 1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 10:11+0200\n"
+"POT-Creation-Date: 2006-09-25 16:04+0200\n"
"PO-Revision-Date: 2005-10-08 00:03+0200\n"
"Last-Translator: Georg Bauer \n"
"MIME-Version: 1.0\n"
@@ -71,7 +71,7 @@ msgstr "Datum/Zeit Erstellung"
msgid "is public"
msgstr "ist ffentlich"
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289
+#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
msgid "IP address"
msgstr "IP-Adresse"
@@ -208,14 +208,14 @@ msgstr "Ung
msgid "No voting for yourself"
msgstr "Keine Abstimmung bei Dir selber"
-#: contrib/comments/views/comments.py:28
+#: contrib/comments/views/comments.py:27
msgid ""
"This rating is required because you've entered at least one other rating."
msgstr ""
"Die Abstimmung ist zwangsweise, weil Du an mindestens einer anderen "
"Abstimmung teilnimmst."
-#: contrib/comments/views/comments.py:112
+#: contrib/comments/views/comments.py:111
#, python-format
msgid ""
"This comment was posted by a user who has posted fewer than %(count)s "
@@ -238,7 +238,7 @@ msgstr[1] ""
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:117
+#: contrib/comments/views/comments.py:116
#, python-format
msgid ""
"This comment was posted by a sketchy user:\n"
@@ -249,23 +249,23 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:189
+#: contrib/comments/views/comments.py:188
#: contrib/comments/views/comments.py:280
msgid "Only POSTs are allowed"
msgstr "Nur POST ist erlaubt"
-#: contrib/comments/views/comments.py:193
+#: contrib/comments/views/comments.py:192
#: contrib/comments/views/comments.py:284
msgid "One or more of the required fields wasn't submitted"
msgstr "Eines oder mehrere der erforderlichen Felder fehlt"
-#: contrib/comments/views/comments.py:197
+#: contrib/comments/views/comments.py:196
#: contrib/comments/views/comments.py:286
msgid "Somebody tampered with the comment form (security violation)"
msgstr ""
"Jemand hat mit dem Kommentarformular herumgespielt (Sicherheitsverletzung)"
-#: contrib/comments/views/comments.py:207
+#: contrib/comments/views/comments.py:206
#: contrib/comments/views/comments.py:292
msgid ""
"The comment form had an invalid 'target' parameter -- the object ID was "
@@ -287,18 +287,9 @@ msgid "Username:"
msgstr "Benutzername:"
#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Passwort:"
-
-#: contrib/comments/templates/comments/form.html:6
-msgid "Forgotten your password?"
-msgstr "Kennwort vergessen?"
-
-#: contrib/comments/templates/comments/form.html:8
#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
+#: contrib/admin/templates/admin/base.html:25
#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/change_form.html:10
#: contrib/admin/templates/registration/password_change_done.html:3
@@ -316,6 +307,15 @@ msgstr "Kennwort vergessen?"
msgid "Log out"
msgstr "Abmelden"
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:20
+msgid "Password:"
+msgstr "Passwort:"
+
+#: contrib/comments/templates/comments/form.html:8
+msgid "Forgotten your password?"
+msgstr "Kennwort vergessen?"
+
#: contrib/comments/templates/comments/form.html:12
msgid "Ratings"
msgstr "Bewertungen"
@@ -334,13 +334,13 @@ msgstr "Optional"
msgid "Post a photo"
msgstr "Ein Bild verffentlichen"
-#: contrib/comments/templates/comments/form.html:27
+#: contrib/comments/templates/comments/form.html:28
#: contrib/comments/templates/comments/freeform.html:5
msgid "Comment:"
msgstr "Kommentar:"
-#: contrib/comments/templates/comments/form.html:32
-#: contrib/comments/templates/comments/freeform.html:9
+#: contrib/comments/templates/comments/form.html:35
+#: contrib/comments/templates/comments/freeform.html:10
msgid "Preview comment"
msgstr "Kommentarvorschau"
@@ -358,7 +358,7 @@ msgstr ""
"
\n"
#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
msgid "All"
msgstr "Alle"
@@ -422,12 +422,11 @@ msgstr "Logeintrag"
msgid "log entries"
msgstr "Logeintrge"
-#: contrib/admin/templatetags/admin_list.py:228
+#: contrib/admin/templatetags/admin_list.py:230
msgid "All dates"
msgstr "Alle Tage"
-#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36
-#: contrib/auth/forms.py:41
+#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59
msgid ""
"Please enter a correct username and password. Note that both fields are case-"
"sensitive."
@@ -435,12 +434,12 @@ msgstr ""
"Bitte einen Benutzernamen und ein Kennwort eingeben. Beide Felder "
"bercksichtigen die Gro-/Kleinschreibung."
-#: contrib/admin/views/decorators.py:23
+#: contrib/admin/views/decorators.py:24
#: contrib/admin/templates/admin/login.html:25
msgid "Log in"
msgstr "Anmelden"
-#: contrib/admin/views/decorators.py:61
+#: contrib/admin/views/decorators.py:62
msgid ""
"Please log in again, because your session has expired. Don't worry: Your "
"submission has been saved."
@@ -448,7 +447,7 @@ msgstr ""
"Bitte neu anmelden, da die Session ausgelaufen ist. Keine Angst: die "
"Beitrge wurden gesichert."
-#: contrib/admin/views/decorators.py:68
+#: contrib/admin/views/decorators.py:69
msgid ""
"Looks like your browser isn't configured to accept cookies. Please enable "
"cookies, reload this page, and try again."
@@ -456,70 +455,71 @@ msgstr ""
"Es sieht danach aus, das der Browser keine Cookies akzeptiert. Bitte im "
"Browser Cookies aktivieren und diese Seite neu laden."
-#: contrib/admin/views/decorators.py:82
+#: contrib/admin/views/decorators.py:83
msgid "Usernames cannot contain the '@' character."
msgstr "Benutzernamen knnen das Zeichen '@' nicht enthalten."
-#: contrib/admin/views/decorators.py:84
+#: contrib/admin/views/decorators.py:85
#, python-format
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
"Die eMail-Adresse ist nicht der Benutzername. Bitte '%s' stattdessen "
"versuchen."
-#: contrib/admin/views/main.py:226
+#: contrib/admin/views/main.py:223
msgid "Site administration"
msgstr "Website Verwaltung"
-#: contrib/admin/views/main.py:260
+#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:17
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "%(name)s \"%(obj)s\" wurde erfolgreich hinzugefgt."
-#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348
+#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
+#: contrib/admin/views/auth.py:22
msgid "You may edit it again below."
msgstr "Das Element kann jetzt weiter gendert werden."
-#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357
+#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
#, python-format
msgid "You may add another %s below."
msgstr "Jetzt kann ein weiteres Element vom Typ %s angelegt werden."
-#: contrib/admin/views/main.py:290
+#: contrib/admin/views/main.py:289
#, python-format
msgid "Add %s"
msgstr "%s zufgen"
-#: contrib/admin/views/main.py:336
+#: contrib/admin/views/main.py:335
#, python-format
msgid "Added %s."
msgstr "%s hinzugefgt."
-#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
-#: contrib/admin/views/main.py:340
+#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337
+#: contrib/admin/views/main.py:339
msgid "and"
msgstr "und"
-#: contrib/admin/views/main.py:338
+#: contrib/admin/views/main.py:337
#, python-format
msgid "Changed %s."
msgstr "%s gendert"
-#: contrib/admin/views/main.py:340
+#: contrib/admin/views/main.py:339
#, python-format
msgid "Deleted %s."
msgstr "%s gelscht."
-#: contrib/admin/views/main.py:343
+#: contrib/admin/views/main.py:342
msgid "No fields changed."
msgstr "Keine Felder gendert."
-#: contrib/admin/views/main.py:346
+#: contrib/admin/views/main.py:345
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr "%(name)s \"%(obj)s\" wurde erfolgreich gendert."
-#: contrib/admin/views/main.py:354
+#: contrib/admin/views/main.py:353
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
@@ -527,119 +527,188 @@ msgstr ""
"%(name)s \"%(obj)s\" wurde erfolgreich zugefgt. Das Element kann jetzt "
"gendert werden."
-#: contrib/admin/views/main.py:392
+#: contrib/admin/views/main.py:391
#, python-format
msgid "Change %s"
msgstr "%s ndern"
-#: contrib/admin/views/main.py:470
+#: contrib/admin/views/main.py:473
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr "Ein oder mehrere %(fieldname)s in %(name)s: %(obj)s"
-#: contrib/admin/views/main.py:475
+#: contrib/admin/views/main.py:478
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr "Ein oder mehrere %(fieldname)s in %(name)s:"
-#: contrib/admin/views/main.py:508
+#: contrib/admin/views/main.py:511
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr "%(name)s \"%(obj)s\" wurde erfolgreich gelscht."
-#: contrib/admin/views/main.py:511
+#: contrib/admin/views/main.py:514
msgid "Are you sure?"
msgstr "Sicher? Ganz sicher?"
-#: contrib/admin/views/main.py:533
+#: contrib/admin/views/main.py:536
#, python-format
msgid "Change history: %s"
msgstr "nderungsgeschichte: %s"
-#: contrib/admin/views/main.py:565
+#: contrib/admin/views/main.py:570
#, python-format
msgid "Select %s"
msgstr "%s auswhlen"
-#: contrib/admin/views/main.py:565
+#: contrib/admin/views/main.py:570
#, python-format
msgid "Select %s to change"
msgstr "%s zur nderung auswhlen"
-#: 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/main.py:758
+msgid "Database error"
+msgstr "Datenbankfehler"
+
+#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
+#: contrib/admin/views/doc.py:50
+msgid "tag:"
+msgstr "Schlagwort:"
+
+#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
+#: contrib/admin/views/doc.py:81
+msgid "filter:"
+msgstr "Filter:"
+
+#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
+#: contrib/admin/views/doc.py:139
+msgid "view:"
+msgstr "Ansicht:"
+
+#: contrib/admin/views/doc.py:164
+#, python-format
+msgid "App %r not found"
+msgstr "Anwendung %r nicht gefunden"
+
+#: contrib/admin/views/doc.py:171
+#, python-format
+msgid "Model %r not found in app %r"
+msgstr "Modell %r wurde nicht in Anwendung %r gefunden"
+
+#: contrib/admin/views/doc.py:183
+#, python-format
+msgid "the related `%s.%s` object"
+msgstr "Das verknpfte `%s.%s` Objekt"
+
+#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
+#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
+msgid "model:"
+msgstr "Modell:"
+
+#: contrib/admin/views/doc.py:214
+#, python-format
+msgid "related `%s.%s` objects"
+msgstr "verknpftes `%s.%s` Objekt"
+
+#: contrib/admin/views/doc.py:219
+#, python-format
+msgid "all %s"
+msgstr "Alle %s"
+
+#: contrib/admin/views/doc.py:224
+#, python-format
+msgid "number of %s"
+msgstr "Anzahl von %s"
+
+#: contrib/admin/views/doc.py:229
+#, python-format
+msgid "Fields on %s objects"
+msgstr "Felder am %s Objekt"
+
+#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
+#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
+#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
msgid "Integer"
msgstr "Ganzzahl"
-#: contrib/admin/views/doc.py:278
+#: contrib/admin/views/doc.py:292
msgid "Boolean (Either True or False)"
msgstr "Wahrheitswert (Wahr oder Falsch)"
-#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296
+#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
#, python-format
msgid "String (up to %(maxlength)s)"
msgstr "Zeichenkette (bis zu %(maxlength)s Zeichen)"
-#: contrib/admin/views/doc.py:280
+#: contrib/admin/views/doc.py:294
msgid "Comma-separated integers"
msgstr "Kommaseparierte Liste von Zahlen"
-#: contrib/admin/views/doc.py:281
+#: contrib/admin/views/doc.py:295
msgid "Date (without time)"
msgstr "Datum (ohne Zeit)"
-#: contrib/admin/views/doc.py:282
+#: contrib/admin/views/doc.py:296
msgid "Date (with time)"
msgstr "Datum (mit Zeit)"
-#: contrib/admin/views/doc.py:283
+#: contrib/admin/views/doc.py:297
msgid "E-mail address"
msgstr "E-mail-Adresse"
-#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287
+#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:302
msgid "File path"
msgstr "Dateipfad"
-#: contrib/admin/views/doc.py:285
+#: contrib/admin/views/doc.py:300
msgid "Decimal number"
msgstr "Dezimalzahl"
-#: contrib/admin/views/doc.py:291
+#: contrib/admin/views/doc.py:306
msgid "Boolean (Either True, False or None)"
msgstr "Wahrheitswert (Wahr, Falsch oder Nichts)"
-#: contrib/admin/views/doc.py:292
+#: contrib/admin/views/doc.py:307
msgid "Relation to parent model"
msgstr "Beziehung zum bermodell"
-#: contrib/admin/views/doc.py:293
+#: contrib/admin/views/doc.py:308
msgid "Phone number"
msgstr "Telefonnummer"
-#: contrib/admin/views/doc.py:298
+#: contrib/admin/views/doc.py:313
msgid "Text"
msgstr "Text"
-#: contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:314
msgid "Time"
msgstr "Zeit"
-#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7
+#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7
msgid "URL"
msgstr "URL"
-#: contrib/admin/views/doc.py:301
+#: contrib/admin/views/doc.py:316
msgid "U.S. state (two uppercase letters)"
msgstr "U.S. Bundesstaat (zwei Grossbuchstaben)"
-#: contrib/admin/views/doc.py:302
+#: contrib/admin/views/doc.py:317
msgid "XML text"
msgstr "XML Text"
+#: contrib/admin/views/doc.py:343
+#, python-format
+msgid "%s does not appear to be a urlpattern object"
+msgstr "%s ist scheinbar kein urlpattern Objekt"
+
+#: contrib/admin/views/auth.py:28
+msgid "Add user"
+msgstr "Benutzer zufgen"
+
#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
+#: contrib/admin/templates/admin/base.html:25
#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/change_form.html:10
#: contrib/admin/templates/registration/password_change_done.html:3
@@ -650,7 +719,7 @@ msgstr "Dokumentation"
#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
+#: contrib/admin/templates/admin/base.html:25
#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/change_form.html:10
#: contrib/admin/templates/registration/password_change_done.html:3
@@ -671,9 +740,10 @@ msgstr "Passwort
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/500.html:4
#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin/base.html:30
#: contrib/admin/templates/admin/delete_confirmation.html:6
#: contrib/admin/templates/admin/change_form.html:13
+#: contrib/admin/templates/admin/invalid_setup.html:4
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/logged_out.html:4
@@ -754,7 +824,12 @@ msgstr ""
#: contrib/admin/templates/admin/index.html:17
#, python-format
msgid "Models available in the %(name)s application."
-msgstr ""
+msgstr "Modelle, die in der Anwendung %(name)s vorhanden sind."
+
+#: contrib/admin/templates/admin/index.html:18
+#, python-format
+msgid "%(name)s"
+msgstr "%(name)s"
#: contrib/admin/templates/admin/index.html:28
#: contrib/admin/templates/admin/change_form.html:15
@@ -790,7 +865,7 @@ msgstr "%(name)s zuf
msgid "Have you forgotten your password?"
msgstr "Haben Sie ihr Passwort vergessen?"
-#: contrib/admin/templates/admin/base.html:23
+#: contrib/admin/templates/admin/base.html:25
msgid "Welcome,"
msgstr "Willkommen,"
@@ -802,22 +877,22 @@ msgstr "L
#: 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:"
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
msgstr ""
-"Die Lschung des %(object_name)s '%(object)s' htte die Lschung von "
+"Die Lschung des %(object_name)s '%(escaped_object)s' htte die Lschung von "
"abhngigen Daten zur Folge, aber Sie haben nicht die ntigen Rechte um die "
"folgenden abhngigen Daten zu lschen:"
#: 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:"
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
msgstr ""
-"Sind Sie sicher, das Sie %(object_name)s \"%(object)s\" lschen wollen? Es "
-"werden zustzlich die folgenden abhngigen Daten mit gelscht:"
+"Sind Sie sicher, das Sie %(object_name)s \"%(escaped_object)s\" lschen "
+"wollen? Es werden zustzlich die folgenden abhngigen Daten mit gelscht:"
#: contrib/admin/templates/admin/delete_confirmation.html:26
msgid "Yes, I'm sure"
@@ -825,13 +900,33 @@ msgstr "Ja, ich bin sicher"
#: contrib/admin/templates/admin/filter.html:2
#, python-format
-msgid " By %(title)s "
-msgstr " Nach %(title)s "
+msgid " By %(filter_title)s "
+msgstr " Nach %(filter_title)s "
#: contrib/admin/templates/admin/search_form.html:8
msgid "Go"
msgstr "Los"
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] ""
+msgstr[1] ""
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s gesamt"
+
+#: contrib/admin/templates/admin/pagination.html:10
+msgid "Show all"
+msgstr "Zeige alle"
+
+#: contrib/admin/templates/admin/filters.html:4
+msgid "Filter"
+msgstr "Filter"
+
#: contrib/admin/templates/admin/change_form.html:21
msgid "View on site"
msgstr "Im Web Anzeigen"
@@ -866,6 +961,40 @@ msgstr "Sichern und weiter bearbeiten"
msgid "Save"
msgstr "Sichern"
+#: contrib/admin/templates/admin/invalid_setup.html:8
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Irgendetwas ist falsch mit der Datenbankkonfiguration. Bitte sicherstellen, "
+"das die richtigen Datenbanktabellen angelegt wurden und bitte sicherstellen, "
+"das die Datenbank vom verwendeten Datenbankbenutzer auch lesbar ist."
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:6
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+"Zuerst einen Benutzer und ein Passwort eingeben. Danach knnen weitere "
+"Optionen fr den Benutzer gendert werden."
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:12
+msgid "Username"
+msgstr "Benutzername"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:18
+msgid "Password"
+msgstr "Passwort"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:23
+msgid "Password (again)"
+msgstr "Kennwort (wiederholen)"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:24
+msgid "Enter the same password as above, for verification."
+msgstr "Bitte das gleiche Passwort zur Prfung nochmal eingeben."
+
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_change_form.html:6
@@ -1093,11 +1222,11 @@ msgstr ""
"Hier muss entweder ein absoluter Pfad oder eine komplette URL mit http:// am "
"Anfang stehen."
-#: contrib/redirects/models.py:12
+#: contrib/redirects/models.py:13
msgid "redirect"
msgstr "Umleitung"
-#: contrib/redirects/models.py:13
+#: contrib/redirects/models.py:14
msgid "redirects"
msgstr "Umleitungen"
@@ -1125,11 +1254,11 @@ msgstr "Name der Vorlage"
#: contrib/flatpages/models.py:13
msgid ""
-"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
-"use 'flatpages/default'."
+"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
+"will use 'flatpages/default.html'."
msgstr ""
-"Beispiel: 'flatpages/contact_page'. Wenn dieses Feld nicht gefllt ist, wird "
-"'flatpages/default' als Standard gewhlt."
+"Beispiel: 'flatpages/contact_page.html'. Wenn dieses Feld nicht gefllt ist, "
+"wird 'flatpages/default.html' als Standard gewhlt."
#: contrib/flatpages/models.py:14
msgid "registration required"
@@ -1148,80 +1277,108 @@ msgstr "Webseite"
msgid "flat pages"
msgstr "Webseiten"
-#: contrib/auth/models.py:13 contrib/auth/models.py:26
+#: contrib/auth/views.py:39
+msgid "Logged out"
+msgstr "Abgemeldet"
+
+#: contrib/auth/models.py:38 contrib/auth/models.py:57
msgid "name"
msgstr "Name"
-#: contrib/auth/models.py:15
+#: contrib/auth/models.py:40
msgid "codename"
msgstr "Codename"
-#: contrib/auth/models.py:17
+#: contrib/auth/models.py:42
msgid "permission"
msgstr "Berechtigung"
-#: contrib/auth/models.py:18 contrib/auth/models.py:27
+#: contrib/auth/models.py:43 contrib/auth/models.py:58
msgid "permissions"
msgstr "Berechtigungen"
-#: contrib/auth/models.py:29
+#: contrib/auth/models.py:60
msgid "group"
msgstr "Gruppe"
-#: contrib/auth/models.py:30 contrib/auth/models.py:65
+#: contrib/auth/models.py:61 contrib/auth/models.py:100
msgid "groups"
msgstr "Gruppen"
-#: contrib/auth/models.py:55
+#: contrib/auth/models.py:90
msgid "username"
msgstr "Benutzername"
-#: contrib/auth/models.py:56
+#: contrib/auth/models.py:90
+msgid ""
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
+msgstr ""
+"Erforderlich. 30 Zeichen oder weniger. Alphanumerische Zeichen (Buchstaben, "
+"Ziffern und Unterstriche sind erlaubt)."
+
+#: contrib/auth/models.py:91
msgid "first name"
msgstr "Vorname"
-#: contrib/auth/models.py:57
+#: contrib/auth/models.py:92
msgid "last name"
msgstr "Nachname"
-#: contrib/auth/models.py:58
+#: contrib/auth/models.py:93
msgid "e-mail address"
msgstr "eMail-Adresse"
-#: contrib/auth/models.py:59
+#: contrib/auth/models.py:94
msgid "password"
msgstr "Kennwort"
-#: contrib/auth/models.py:59
+#: contrib/auth/models.py:94
msgid "Use '[algo]$[salt]$[hexdigest]'"
msgstr "Im Format '[algo]$[salt]$[hexdigest]'"
-#: contrib/auth/models.py:60
+#: contrib/auth/models.py:95
msgid "staff status"
msgstr "Administrator"
-#: contrib/auth/models.py:60
+#: contrib/auth/models.py:95
msgid "Designates whether the user can log into this admin site."
msgstr ""
"Gibt an, ob der Benutzer sich an der Administrationsseite anmelden kann."
-#: contrib/auth/models.py:61
+#: contrib/auth/models.py:96
msgid "active"
msgstr "Aktiv"
-#: contrib/auth/models.py:62
+#: contrib/auth/models.py:96
+msgid ""
+"Designates whether this user can log into the Django admin. Unselect this "
+"instead of deleting accounts."
+msgstr ""
+"Gibt an, ob der Benutzer sich an der Administrationsseite anmelden kann. "
+"Anstelle Benutzer zu lschen, kann das hier auch einfach abgeschaltet werden."
+
+#: contrib/auth/models.py:97
msgid "superuser status"
msgstr "Hauptadmin."
-#: contrib/auth/models.py:63
+#: contrib/auth/models.py:97
+msgid ""
+"Designates that this user has all permissions without explicitly assigning "
+"them."
+msgstr ""
+"Bestimmt, das dieser Benutzer alle Berechtigungen hat, ohne diese einzeln "
+"zuweisen zu mssen."
+
+#: contrib/auth/models.py:98
msgid "last login"
msgstr "letzte Anmeldung"
-#: contrib/auth/models.py:64
+#: contrib/auth/models.py:99
msgid "date joined"
msgstr "Mitglied seit"
-#: contrib/auth/models.py:66
+#: contrib/auth/models.py:101
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
@@ -1229,39 +1386,39 @@ msgstr ""
"Zustzlich zu den manuell angelegten Rechten erhlt dieser Benutzer auch "
"alle Rechte, die seine zugewiesenen Gruppen haben."
-#: contrib/auth/models.py:67
+#: contrib/auth/models.py:102
msgid "user permissions"
msgstr "Berechtigungen"
-#: contrib/auth/models.py:70
+#: contrib/auth/models.py:105
msgid "user"
msgstr "Benutzer"
-#: contrib/auth/models.py:71
+#: contrib/auth/models.py:106
msgid "users"
msgstr "Benutzer"
-#: contrib/auth/models.py:76
+#: contrib/auth/models.py:111
msgid "Personal info"
msgstr "Persnliche Infos"
-#: contrib/auth/models.py:77
+#: contrib/auth/models.py:112
msgid "Permissions"
msgstr "Berechtigungen"
-#: contrib/auth/models.py:78
+#: contrib/auth/models.py:113
msgid "Important dates"
msgstr "Wichtige Daten"
-#: contrib/auth/models.py:79
+#: contrib/auth/models.py:114
msgid "Groups"
msgstr "Gruppen"
-#: contrib/auth/models.py:219
+#: contrib/auth/models.py:256
msgid "message"
msgstr "Mitteilung"
-#: contrib/auth/forms.py:30
+#: contrib/auth/forms.py:52
msgid ""
"Your Web browser doesn't appear to have cookies enabled. Cookies are "
"required for logging in."
@@ -1269,35 +1426,55 @@ msgstr ""
"Der Webbrowser scheint keine Cookies aktiviert zu haben. Cookies sind fr "
"die Anmeldung zwingend notwendig."
-#: contrib/contenttypes/models.py:25
+#: contrib/auth/forms.py:61
+msgid "This account is inactive."
+msgstr "Dieser Benutzer ist inaktiv."
+
+#: contrib/auth/forms.py:84
+msgid ""
+"That e-mail address doesn't have an associated user acount. Are you sure "
+"you've registered?"
+msgstr ""
+"Die Email-Adresse hat keinen Benutzer zugeordnet. Sicher, das die Adresse "
+"hier angemeldet ist?"
+
+#: contrib/auth/forms.py:116
+msgid "The two 'new password' fields didn't match."
+msgstr "Die zwei Passwrter sind nicht gleich."
+
+#: contrib/auth/forms.py:123
+msgid "Your old password was entered incorrectly. Please enter it again."
+msgstr "Das alte Passwort war falsch. Bitte neu eingeben."
+
+#: contrib/contenttypes/models.py:20
msgid "python model class name"
msgstr "Python Model-Klassenname"
-#: contrib/contenttypes/models.py:28
+#: contrib/contenttypes/models.py:23
msgid "content type"
msgstr "Inhaltstyp"
-#: contrib/contenttypes/models.py:29
+#: contrib/contenttypes/models.py:24
msgid "content types"
msgstr "Inhaltstypen"
-#: contrib/sessions/models.py:35
+#: contrib/sessions/models.py:51
msgid "session key"
msgstr "Sitzungs-ID"
-#: contrib/sessions/models.py:36
+#: contrib/sessions/models.py:52
msgid "session data"
msgstr "Sitzungsdaten"
-#: contrib/sessions/models.py:37
+#: contrib/sessions/models.py:53
msgid "expire date"
msgstr "Verfallsdatum"
-#: contrib/sessions/models.py:41
+#: contrib/sessions/models.py:57
msgid "session"
msgstr "Sitzung"
-#: contrib/sessions/models.py:42
+#: contrib/sessions/models.py:58
msgid "sessions"
msgstr "Sitzungen"
@@ -1317,18 +1494,6 @@ msgstr "Website"
msgid "sites"
msgstr "Websites"
-#: utils/translation.py:360
-msgid "DATE_FORMAT"
-msgstr "j. N Y"
-
-#: utils/translation.py:361
-msgid "DATETIME_FORMAT"
-msgstr "j. N Y, H:i"
-
-#: utils/translation.py:362
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
#: utils/dates.py:6
msgid "Monday"
msgstr "Montag"
@@ -1517,119 +1682,159 @@ msgid_plural "minutes"
msgstr[0] "Minute"
msgstr[1] "Minuten"
-#: conf/global_settings.py:37
+#: utils/translation/trans_real.py:362
+msgid "DATE_FORMAT"
+msgstr "j. N Y"
+
+#: utils/translation/trans_real.py:363
+msgid "DATETIME_FORMAT"
+msgstr "j. N Y, H:i"
+
+#: utils/translation/trans_real.py:364
+msgid "TIME_FORMAT"
+msgstr "H:i"
+
+#: utils/translation/trans_real.py:380
+msgid "YEAR_MONTH_FORMAT"
+msgstr "F Y"
+
+#: utils/translation/trans_real.py:381
+msgid "MONTH_DAY_FORMAT"
+msgstr "j. F"
+
+#: conf/global_settings.py:39
+msgid "Arabic"
+msgstr "Arabisch"
+
+#: conf/global_settings.py:40
msgid "Bengali"
msgstr "Bengali"
-#: conf/global_settings.py:38
+#: conf/global_settings.py:41
msgid "Czech"
msgstr "Tschechisch"
-#: conf/global_settings.py:39
+#: conf/global_settings.py:42
msgid "Welsh"
msgstr "Walisisch"
-#: conf/global_settings.py:40
+#: conf/global_settings.py:43
msgid "Danish"
msgstr "Dnisch"
-#: conf/global_settings.py:41
+#: conf/global_settings.py:44
msgid "German"
msgstr "Deutsch"
-#: conf/global_settings.py:42
+#: conf/global_settings.py:45
msgid "Greek"
msgstr "Griechisch"
-#: conf/global_settings.py:43
+#: conf/global_settings.py:46
msgid "English"
msgstr "Englisch"
-#: conf/global_settings.py:44
+#: conf/global_settings.py:47
msgid "Spanish"
msgstr "Spanisch"
-#: conf/global_settings.py:45
+#: conf/global_settings.py:48
+msgid "Argentinean Spanish"
+msgstr "Argentinisches Spanisch"
+
+#: conf/global_settings.py:49
+msgid "Finnish"
+msgstr "Finnisch"
+
+#: conf/global_settings.py:50
msgid "French"
msgstr "Franzsisch"
-#: conf/global_settings.py:46
+#: conf/global_settings.py:51
msgid "Galician"
msgstr "Galicisch"
-#: conf/global_settings.py:47
+#: conf/global_settings.py:52
msgid "Hungarian"
-msgstr ""
+msgstr "Ungarisch"
-#: conf/global_settings.py:48
+#: conf/global_settings.py:53
msgid "Hebrew"
msgstr "Hebrisch"
-#: conf/global_settings.py:49
+#: conf/global_settings.py:54
msgid "Icelandic"
msgstr "Islndisch"
-#: conf/global_settings.py:50
+#: conf/global_settings.py:55
msgid "Italian"
msgstr "Italienisch"
-#: conf/global_settings.py:51
+#: conf/global_settings.py:56
msgid "Japanese"
msgstr "Japanisch"
-#: conf/global_settings.py:52
+#: conf/global_settings.py:57
msgid "Dutch"
msgstr "Hollndisch"
-#: conf/global_settings.py:53
+#: conf/global_settings.py:58
msgid "Norwegian"
msgstr "Norwegisch"
-#: conf/global_settings.py:54
+#: conf/global_settings.py:59
msgid "Brazilian"
msgstr "Brasilianisch"
-#: conf/global_settings.py:55
+#: conf/global_settings.py:60
msgid "Romanian"
msgstr "Rumnisch"
-#: conf/global_settings.py:56
+#: conf/global_settings.py:61
msgid "Russian"
msgstr "Russisch"
-#: conf/global_settings.py:57
+#: conf/global_settings.py:62
msgid "Slovak"
msgstr "Slowakisch"
-#: conf/global_settings.py:58
+#: conf/global_settings.py:63
msgid "Slovenian"
msgstr "Slowenisch"
-#: conf/global_settings.py:59
+#: conf/global_settings.py:64
msgid "Serbian"
msgstr "Serbisch"
-#: conf/global_settings.py:60
+#: conf/global_settings.py:65
msgid "Swedish"
msgstr "Schwedisch"
-#: conf/global_settings.py:61
+#: conf/global_settings.py:66
+msgid "Tamil"
+msgstr "Tamilisch"
+
+#: conf/global_settings.py:67
+msgid "Turkish"
+msgstr "Trkisch"
+
+#: conf/global_settings.py:68
msgid "Ukrainian"
msgstr "Ukrainisch"
-#: conf/global_settings.py:62
+#: conf/global_settings.py:69
msgid "Simplified Chinese"
msgstr "Vereinfachtes Chinesisch"
-#: conf/global_settings.py:63
+#: conf/global_settings.py:70
msgid "Traditional Chinese"
msgstr "Traditionelles Chinesisch"
-#: core/validators.py:60
+#: core/validators.py:63
msgid "This value must contain only letters, numbers and underscores."
msgstr "Dieser Wert darf nur Buchstaben, Ziffern und Unterstriche enthalten."
-#: core/validators.py:64
+#: core/validators.py:67
msgid ""
"This value must contain only letters, numbers, underscores, dashes or "
"slashes."
@@ -1637,65 +1842,85 @@ msgstr ""
"Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Schrgstriche "
"enthalten."
-#: core/validators.py:72
+#: core/validators.py:71
+msgid "This value must contain only letters, numbers, underscores or hyphens."
+msgstr ""
+"Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Bindestriche "
+"enthalten."
+
+#: core/validators.py:75
msgid "Uppercase letters are not allowed here."
msgstr "Grobuchstaben sind hier nicht erlaubt."
-#: core/validators.py:76
+#: core/validators.py:79
msgid "Lowercase letters are not allowed here."
msgstr "Kleinbuchstaben sind hier nicht erlaubt."
-#: core/validators.py:83
+#: core/validators.py:86
msgid "Enter only digits separated by commas."
msgstr "Hier sind nur durch Komma getrennte Ziffern erlaubt."
-#: core/validators.py:95
+#: core/validators.py:98
msgid "Enter valid e-mail addresses separated by commas."
msgstr "Bitte mit Komma getrennte, gltige eMail-Adressen eingeben."
-#: core/validators.py:99
+#: core/validators.py:102
msgid "Please enter a valid IP address."
msgstr "Bitte eine gltige IP-Adresse eingeben."
-#: core/validators.py:103
+#: core/validators.py:106
msgid "Empty values are not allowed here."
msgstr "Dieses Feld darf nicht leer sein."
-#: core/validators.py:107
+#: core/validators.py:110
msgid "Non-numeric characters aren't allowed here."
msgstr "Nichtnumerische Zeichen sind hier nicht erlaubt."
-#: core/validators.py:111
+#: core/validators.py:114
msgid "This value can't be comprised solely of digits."
msgstr "Dieser Wert darf nicht nur aus Ziffern bestehen."
-#: core/validators.py:116
+#: core/validators.py:119
msgid "Enter a whole number."
msgstr "Bitte eine ganze Zahl eingeben."
-#: core/validators.py:120
+#: core/validators.py:123
msgid "Only alphabetical characters are allowed here."
msgstr "Nur alphabetische Zeichen sind hier erlaubt."
-#: core/validators.py:124
+#: core/validators.py:138
+msgid "Year must be 1900 or later."
+msgstr "Das Jahr muss 1900 oder spter sein."
+
+#: core/validators.py:142
+#, python-format
+msgid "Invalid date: %s."
+msgstr "Ungltiges Datum: %s"
+
+#: core/validators.py:146 db/models/fields/__init__.py:415
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Bitte ein gltiges Datum im Format JJJJ-MM-TT eingeben."
-#: core/validators.py:128
+#: core/validators.py:151
msgid "Enter a valid time in HH:MM format."
msgstr "Bitte eine gltige Zeit im Format SS:MM eingeben."
-#: core/validators.py:132 db/models/fields/__init__.py:468
+#: core/validators.py:155 db/models/fields/__init__.py:477
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr ""
"Bitte eine gltige Datums- und Zeitangabe im Format JJJJ-MM-TT SS:MM "
"eingeben."
-#: core/validators.py:136
+#: core/validators.py:160
msgid "Enter a valid e-mail address."
msgstr "Bitte eine gltige eMail-Adresse eingeben"
-#: core/validators.py:148
+#: core/validators.py:172 core/validators.py:401 forms/__init__.py:661
+msgid "No file was submitted. Check the encoding type on the form."
+msgstr ""
+"Es wurde keine Datei geschickt. Eventuell ist das Formular-Encoding falsch."
+
+#: core/validators.py:176
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
@@ -1703,27 +1928,27 @@ msgstr ""
"Bitte ein Bild hochladen. Die Datei, die hochgeladen wurde, ist kein Bild "
"oder ist defekt."
-#: core/validators.py:155
+#: core/validators.py:183
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "Die URL %s zeigt nicht auf ein gltiges Bild."
-#: core/validators.py:159
+#: core/validators.py:187
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
"Telefonnummern mssen im Format XXX-XXX-XXXX sein. \"%s\" ist ungltig."
-#: core/validators.py:167
+#: core/validators.py:195
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "Die URL %s zeigt nicht auf ein gltiges QuickTime video."
-#: core/validators.py:171
+#: core/validators.py:199
msgid "A valid URL is required."
msgstr "Eine gltige URL ist hier verlangt."
-#: core/validators.py:185
+#: core/validators.py:213
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@@ -1732,71 +1957,71 @@ msgstr ""
"Bitte gltiges HTML eingeben. Fehler sind:\n"
"%s"
-#: core/validators.py:192
+#: core/validators.py:220
#, python-format
msgid "Badly formed XML: %s"
msgstr "Ungltiges XML: %s"
-#: core/validators.py:202
+#: core/validators.py:230
#, python-format
msgid "Invalid URL: %s"
msgstr "Ungltige URL: %s"
-#: core/validators.py:206 core/validators.py:208
+#: core/validators.py:234 core/validators.py:236
#, python-format
msgid "The URL %s is a broken link."
msgstr "Die URL %s funktioniert nicht."
-#: core/validators.py:214
+#: core/validators.py:242
msgid "Enter a valid U.S. state abbreviation."
msgstr "Bitte eine gltige Abkrzung fr einen US-Staat eingeben."
-#: core/validators.py:229
+#: core/validators.py:256
#, python-format
msgid "Watch your mouth! The word %s is not allowed here."
msgid_plural "Watch your mouth! The words %s are not allowed here."
msgstr[0] "Keine Schimpfworte! Das Wort %s ist hier nicht gern gesehen!"
msgstr[1] "Keine Schimpfworte! Die Wrter %s sind hier nicht gern gesehen!"
-#: core/validators.py:236
+#: core/validators.py:263
#, python-format
msgid "This field must match the '%s' field."
msgstr "Dieses Feld muss zum Feld '%s' passen."
-#: core/validators.py:255
+#: core/validators.py:282
msgid "Please enter something for at least one field."
msgstr "Bitte mindestens eines der Felder ausfllen."
-#: core/validators.py:264 core/validators.py:275
+#: core/validators.py:291 core/validators.py:302
msgid "Please enter both fields or leave them both empty."
msgstr "Bitte entweder beide Felder ausfllen, oder beide leer lassen."
-#: core/validators.py:282
+#: core/validators.py:309
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr ""
"Dieses Feld muss gefllt sein, wenn Feld %(field)s den Wert %(value)s hat."
-#: core/validators.py:294
+#: core/validators.py:321
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr ""
"Dieses Feld muss gefllt sein, wenn Feld %(field)s nicht %(value)s ist."
-#: core/validators.py:313
+#: core/validators.py:340
msgid "Duplicate values are not allowed."
msgstr "Doppelte Werte sind hier nicht erlaubt."
-#: core/validators.py:336
+#: core/validators.py:363
#, python-format
msgid "This value must be a power of %s."
msgstr "Dieser Wert muss eine Potenz von %s sein."
-#: core/validators.py:347
+#: core/validators.py:374
msgid "Please enter a valid decimal number."
msgstr "Bitte eine gltige Dezimalzahl eingeben."
-#: core/validators.py:349
+#: core/validators.py:378
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@@ -1804,7 +2029,16 @@ msgid_plural ""
msgstr[0] "Bitte eine gltige Dezimalzahl mit maximal %s Ziffer eingeben."
msgstr[1] "Bitte eine gltige Dezimalzahl mit maximal %s Ziffern eingeben."
-#: core/validators.py:352
+#: core/validators.py:381
+#, python-format
+msgid ""
+"Please enter a valid decimal number with a whole part of at most %s digit."
+msgid_plural ""
+"Please enter a valid decimal number with a whole part of at most %s digits."
+msgstr[0] "Bitte eine gltige Dezimalzahl mit maximal %s Ziffer eingeben."
+msgstr[1] "Bitte eine gltige Dezimalzahl mit maximal %s Ziffern eingeben."
+
+#: core/validators.py:384
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@@ -1814,39 +2048,39 @@ msgstr[0] ""
msgstr[1] ""
"Bitte eine gltige Dezimalzahl mit maximal %s Dezimalstellen eingeben."
-#: core/validators.py:362
+#: core/validators.py:394
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr ""
"Bitte sicherstellen, da die hochgeladene Datei mindestens %s Bytes gross "
"ist."
-#: core/validators.py:363
+#: core/validators.py:395
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr ""
"Bitte sicherstellen, da die hochgeladene Datei maximal %s Bytes gross ist."
-#: core/validators.py:376
+#: core/validators.py:412
msgid "The format for this field is wrong."
msgstr "Das Format fr dieses Feld ist falsch."
-#: core/validators.py:391
+#: core/validators.py:427
msgid "This field is invalid."
msgstr "Dieses Feld ist ungltig."
-#: core/validators.py:426
+#: core/validators.py:463
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Konnte nichts von %s empfangen."
-#: core/validators.py:429
+#: core/validators.py:466
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr "Die URL %(url)s lieferte den falschen Content-Type '%(contenttype)s'."
-#: core/validators.py:462
+#: core/validators.py:499
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@@ -1855,7 +2089,7 @@ msgstr ""
"Bitte das ungeschlossene %(tag)s Tag in Zeile %(line)s schlieen. Die Zeile "
"beginnt mit \"%(start)s\"."
-#: core/validators.py:466
+#: core/validators.py:503
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
@@ -1864,7 +2098,7 @@ msgstr ""
"In Zeile %(line)s ist Text, der nicht in dem Kontext erlaubt ist. Die Zeile "
"beginnt mit \"%(start)s\"."
-#: core/validators.py:471
+#: core/validators.py:508
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@@ -1873,7 +2107,7 @@ msgstr ""
"Das Attribute %(attr)s in Zeile %(line)s ist ungltig. Die Zeile beginnt mit "
"\"%(start)s\"."
-#: core/validators.py:476
+#: core/validators.py:513
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@@ -1882,7 +2116,7 @@ msgstr ""
"<%(tag)s> in Zeile %(line)s ist ungltig. Die Zeile beginnt mit \"%(start)s"
"\"."
-#: core/validators.py:480
+#: core/validators.py:517
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
@@ -1891,7 +2125,7 @@ msgstr ""
"Ein Tag in Zeile %(line)s hat eines oder mehrere Pflichtattribute nicht. Die "
"Zeile beginnt mit \"%(start)s\"."
-#: core/validators.py:485
+#: core/validators.py:522
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
@@ -1900,6 +2134,21 @@ msgstr ""
"Das Attribut %(attr)s in Zeile %(line)s hat einen ungltigen Wert. Die Zeile "
"beginnt mit \"%(start)s\"."
+#: views/generic/create_update.py:43
+#, python-format
+msgid "The %(verbose_name)s was created successfully."
+msgstr "%(verbose_name)s wurde erfolgreich angelegt."
+
+#: views/generic/create_update.py:117
+#, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr "%(verbose_name)s wurde erfolgreich aktualisiert."
+
+#: views/generic/create_update.py:184
+#, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr "%(verbose_name)s wurde gelscht"
+
#: db/models/manipulators.py:302
#, python-format
msgid "%(object)s with this %(type)s already exists for the given %(field)s."
@@ -1913,44 +2162,44 @@ msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "Ein '%(optname)s' mit diesem '%(fieldname)s' existiert bereits."
#: 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:551 db/models/fields/__init__.py:562
#: forms/__init__.py:346
msgid "This field is required."
msgstr "Dieses Feld ist zwingend."
-#: db/models/fields/__init__.py:337
+#: db/models/fields/__init__.py:340
msgid "This value must be an integer."
msgstr "Dieser Wert muss eine Ganzzahl sein."
-#: db/models/fields/__init__.py:369
+#: db/models/fields/__init__.py:372
msgid "This value must be either True or False."
msgstr "Dieser Wert muss wahr oder falsch sein."
-#: db/models/fields/__init__.py:385
+#: db/models/fields/__init__.py:388
msgid "This field cannot be null."
msgstr "Dieses Feld darf nicht leer sein."
-#: db/models/fields/__init__.py:562
+#: db/models/fields/__init__.py:571
msgid "Enter a valid filename."
msgstr "Bitte einen gltigen Dateinamen eingeben"
-#: db/models/fields/related.py:43
+#: db/models/fields/related.py:51
#, python-format
msgid "Please enter a valid %s."
msgstr "Bitte ein gltiges '%s' eingeben."
-#: db/models/fields/related.py:579
+#: db/models/fields/related.py:618
msgid "Separate multiple IDs with commas."
msgstr "Mehrere IDs knnen mit Komma getrennt werden."
-#: db/models/fields/related.py:581
+#: db/models/fields/related.py:620
msgid ""
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
" Um mehr als eine Selektion zu treffen, \"Strg\", oder auf dem Mac \"Command"
"\", beim Klicken gedrckt halten."
-#: db/models/fields/related.py:625
+#: db/models/fields/related.py:664
#, python-format
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
msgid_plural ""
@@ -1960,39 +2209,39 @@ msgstr[0] ""
msgstr[1] ""
"Bitte gltige IDs fr %(self)s eingeben. Die Werte %(value)r sind ungltig."
-#: forms/__init__.py:380
+#: forms/__init__.py:381
#, python-format
msgid "Ensure your text is less than %s character."
msgid_plural "Ensure your text is less than %s characters."
msgstr[0] "Bitte sicherstellen, das der Text weniger als %s Zeichen hat."
msgstr[1] "Bitte sicherstellen, das der Text weniger als %s Zeichen hat."
-#: forms/__init__.py:385
+#: forms/__init__.py:386
msgid "Line breaks are not allowed here."
msgstr "Zeilenumbrche sind hier nicht erlaubt."
-#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589
+#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599
#, python-format
msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
msgstr ""
"Bitte eine gltige Auswahl treffen; '%(data)s' ist nicht in %(choices)s."
-#: forms/__init__.py:645
+#: forms/__init__.py:663
msgid "The submitted file is empty."
msgstr "Die ausgewhlte Datei ist leer."
-#: forms/__init__.py:699
+#: forms/__init__.py:719
msgid "Enter a whole number between -32,768 and 32,767."
msgstr "Bitte eine ganze Zahl zwischen -32.768 und 32.767 eingeben."
-#: forms/__init__.py:708
+#: forms/__init__.py:729
msgid "Enter a positive number."
msgstr "Bitte eine ganze, positive Zahl eingeben."
-#: forms/__init__.py:717
+#: forms/__init__.py:739
msgid "Enter a whole number between 0 and 32,767."
msgstr "Bitte eine ganze Zahl zwischen 0 und 32.767 eingeben."
-#: template/defaultfilters.py:379
+#: template/defaultfilters.py:401
msgid "yes,no,maybe"
msgstr "Ja,Nein,Vielleicht"
diff --git a/django/conf/locale/en/LC_MESSAGES/django.mo b/django/conf/locale/en/LC_MESSAGES/django.mo
index 0a4947bfc1..6c4dbe4b4e 100644
Binary files a/django/conf/locale/en/LC_MESSAGES/django.mo and b/django/conf/locale/en/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/en/LC_MESSAGES/django.po b/django/conf/locale/en/LC_MESSAGES/django.po
index 625c3b04f1..feba39f7cd 100644
--- a/django/conf/locale/en/LC_MESSAGES/django.po
+++ b/django/conf/locale/en/LC_MESSAGES/django.po
@@ -3,12 +3,11 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR , YEAR.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 10:10+0200\n"
+"POT-Creation-Date: 2006-09-25 15:43+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -73,7 +72,7 @@ msgstr ""
msgid "is public"
msgstr ""
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289
+#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
msgid "IP address"
msgstr ""
@@ -200,12 +199,12 @@ msgstr ""
msgid "No voting for yourself"
msgstr ""
-#: contrib/comments/views/comments.py:28
+#: contrib/comments/views/comments.py:27
msgid ""
"This rating is required because you've entered at least one other rating."
msgstr ""
-#: contrib/comments/views/comments.py:112
+#: contrib/comments/views/comments.py:111
#, python-format
msgid ""
"This comment was posted by a user who has posted fewer than %(count)s "
@@ -220,7 +219,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: contrib/comments/views/comments.py:117
+#: contrib/comments/views/comments.py:116
#, python-format
msgid ""
"This comment was posted by a sketchy user:\n"
@@ -228,22 +227,22 @@ msgid ""
"%(text)s"
msgstr ""
-#: contrib/comments/views/comments.py:189
+#: contrib/comments/views/comments.py:188
#: contrib/comments/views/comments.py:280
msgid "Only POSTs are allowed"
msgstr ""
-#: contrib/comments/views/comments.py:193
+#: contrib/comments/views/comments.py:192
#: contrib/comments/views/comments.py:284
msgid "One or more of the required fields wasn't submitted"
msgstr ""
-#: contrib/comments/views/comments.py:197
+#: contrib/comments/views/comments.py:196
#: contrib/comments/views/comments.py:286
msgid "Somebody tampered with the comment form (security violation)"
msgstr ""
-#: contrib/comments/views/comments.py:207
+#: contrib/comments/views/comments.py:206
#: contrib/comments/views/comments.py:292
msgid ""
"The comment form had an invalid 'target' parameter -- the object ID was "
@@ -262,18 +261,9 @@ msgid "Username:"
msgstr ""
#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:6
-msgid "Forgotten your password?"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:8
#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
+#: contrib/admin/templates/admin/base.html:25
#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/change_form.html:10
#: contrib/admin/templates/registration/password_change_done.html:3
@@ -291,6 +281,15 @@ msgstr ""
msgid "Log out"
msgstr ""
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:20
+msgid "Password:"
+msgstr ""
+
+#: contrib/comments/templates/comments/form.html:8
+msgid "Forgotten your password?"
+msgstr ""
+
#: contrib/comments/templates/comments/form.html:12
msgid "Ratings"
msgstr ""
@@ -309,13 +308,13 @@ msgstr ""
msgid "Post a photo"
msgstr ""
-#: contrib/comments/templates/comments/form.html:27
+#: contrib/comments/templates/comments/form.html:28
#: contrib/comments/templates/comments/freeform.html:5
msgid "Comment:"
msgstr ""
-#: contrib/comments/templates/comments/form.html:32
-#: contrib/comments/templates/comments/freeform.html:9
+#: contrib/comments/templates/comments/form.html:35
+#: contrib/comments/templates/comments/freeform.html:10
msgid "Preview comment"
msgstr ""
@@ -331,7 +330,7 @@ msgid ""
msgstr ""
#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
msgid "All"
msgstr ""
@@ -395,214 +394,283 @@ msgstr ""
msgid "log entries"
msgstr ""
-#: contrib/admin/templatetags/admin_list.py:228
+#: contrib/admin/templatetags/admin_list.py:230
msgid "All dates"
msgstr ""
-#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36
-#: contrib/auth/forms.py:41
+#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59
msgid ""
"Please enter a correct username and password. Note that both fields are case-"
"sensitive."
msgstr ""
-#: contrib/admin/views/decorators.py:23
+#: contrib/admin/views/decorators.py:24
#: contrib/admin/templates/admin/login.html:25
msgid "Log in"
msgstr ""
-#: contrib/admin/views/decorators.py:61
+#: contrib/admin/views/decorators.py:62
msgid ""
"Please log in again, because your session has expired. Don't worry: Your "
"submission has been saved."
msgstr ""
-#: contrib/admin/views/decorators.py:68
+#: contrib/admin/views/decorators.py:69
msgid ""
"Looks like your browser isn't configured to accept cookies. Please enable "
"cookies, reload this page, and try again."
msgstr ""
-#: contrib/admin/views/decorators.py:82
+#: contrib/admin/views/decorators.py:83
msgid "Usernames cannot contain the '@' character."
msgstr ""
-#: contrib/admin/views/decorators.py:84
+#: contrib/admin/views/decorators.py:85
#, python-format
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
-#: contrib/admin/views/main.py:226
+#: contrib/admin/views/main.py:223
msgid "Site administration"
msgstr ""
-#: contrib/admin/views/main.py:260
+#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:17
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
-#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348
+#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
+#: contrib/admin/views/auth.py:22
msgid "You may edit it again below."
msgstr ""
-#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357
+#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
#, python-format
msgid "You may add another %s below."
msgstr ""
-#: contrib/admin/views/main.py:290
+#: contrib/admin/views/main.py:289
#, python-format
msgid "Add %s"
msgstr ""
-#: contrib/admin/views/main.py:336
+#: contrib/admin/views/main.py:335
#, python-format
msgid "Added %s."
msgstr ""
-#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
-#: contrib/admin/views/main.py:340
+#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337
+#: contrib/admin/views/main.py:339
msgid "and"
msgstr ""
-#: contrib/admin/views/main.py:338
+#: contrib/admin/views/main.py:337
#, python-format
msgid "Changed %s."
msgstr ""
-#: contrib/admin/views/main.py:340
+#: contrib/admin/views/main.py:339
#, python-format
msgid "Deleted %s."
msgstr ""
-#: contrib/admin/views/main.py:343
+#: contrib/admin/views/main.py:342
msgid "No fields changed."
msgstr ""
-#: contrib/admin/views/main.py:346
+#: contrib/admin/views/main.py:345
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
-#: contrib/admin/views/main.py:354
+#: contrib/admin/views/main.py:353
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
-#: contrib/admin/views/main.py:392
+#: contrib/admin/views/main.py:391
#, python-format
msgid "Change %s"
msgstr ""
-#: contrib/admin/views/main.py:470
+#: contrib/admin/views/main.py:473
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
-#: contrib/admin/views/main.py:475
+#: contrib/admin/views/main.py:478
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
-#: contrib/admin/views/main.py:508
+#: contrib/admin/views/main.py:511
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
-#: contrib/admin/views/main.py:511
+#: contrib/admin/views/main.py:514
msgid "Are you sure?"
msgstr ""
-#: contrib/admin/views/main.py:533
+#: contrib/admin/views/main.py:536
#, python-format
msgid "Change history: %s"
msgstr ""
-#: contrib/admin/views/main.py:565
+#: contrib/admin/views/main.py:570
#, python-format
msgid "Select %s"
msgstr ""
-#: contrib/admin/views/main.py:565
+#: contrib/admin/views/main.py:570
#, python-format
msgid "Select %s to change"
msgstr ""
-#: 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/main.py:758
+msgid "Database error"
+msgstr ""
+
+#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
+#: contrib/admin/views/doc.py:50
+msgid "tag:"
+msgstr ""
+
+#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
+#: contrib/admin/views/doc.py:81
+msgid "filter:"
+msgstr ""
+
+#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
+#: contrib/admin/views/doc.py:139
+msgid "view:"
+msgstr ""
+
+#: contrib/admin/views/doc.py:164
+#, python-format
+msgid "App %r not found"
+msgstr ""
+
+#: contrib/admin/views/doc.py:171
+#, python-format
+msgid "Model %r not found in app %r"
+msgstr ""
+
+#: contrib/admin/views/doc.py:183
+#, python-format
+msgid "the related `%s.%s` object"
+msgstr ""
+
+#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
+#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
+msgid "model:"
+msgstr ""
+
+#: contrib/admin/views/doc.py:214
+#, python-format
+msgid "related `%s.%s` objects"
+msgstr ""
+
+#: contrib/admin/views/doc.py:219
+#, python-format
+msgid "all %s"
+msgstr ""
+
+#: contrib/admin/views/doc.py:224
+#, python-format
+msgid "number of %s"
+msgstr ""
+
+#: contrib/admin/views/doc.py:229
+#, python-format
+msgid "Fields on %s objects"
+msgstr ""
+
+#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
+#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
+#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
msgid "Integer"
msgstr ""
-#: contrib/admin/views/doc.py:278
+#: contrib/admin/views/doc.py:292
msgid "Boolean (Either True or False)"
msgstr ""
-#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296
+#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
#, python-format
msgid "String (up to %(maxlength)s)"
msgstr ""
-#: contrib/admin/views/doc.py:280
+#: contrib/admin/views/doc.py:294
msgid "Comma-separated integers"
msgstr ""
-#: contrib/admin/views/doc.py:281
+#: contrib/admin/views/doc.py:295
msgid "Date (without time)"
msgstr ""
-#: contrib/admin/views/doc.py:282
+#: contrib/admin/views/doc.py:296
msgid "Date (with time)"
msgstr ""
-#: contrib/admin/views/doc.py:283
+#: contrib/admin/views/doc.py:297
msgid "E-mail address"
msgstr ""
-#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287
+#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:302
msgid "File path"
msgstr ""
-#: contrib/admin/views/doc.py:285
+#: contrib/admin/views/doc.py:300
msgid "Decimal number"
msgstr ""
-#: contrib/admin/views/doc.py:291
+#: contrib/admin/views/doc.py:306
msgid "Boolean (Either True, False or None)"
msgstr ""
-#: contrib/admin/views/doc.py:292
+#: contrib/admin/views/doc.py:307
msgid "Relation to parent model"
msgstr ""
-#: contrib/admin/views/doc.py:293
+#: contrib/admin/views/doc.py:308
msgid "Phone number"
msgstr ""
-#: contrib/admin/views/doc.py:298
+#: contrib/admin/views/doc.py:313
msgid "Text"
msgstr ""
-#: contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:314
msgid "Time"
msgstr ""
-#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7
+#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7
msgid "URL"
msgstr ""
-#: contrib/admin/views/doc.py:301
+#: contrib/admin/views/doc.py:316
msgid "U.S. state (two uppercase letters)"
msgstr ""
-#: contrib/admin/views/doc.py:302
+#: contrib/admin/views/doc.py:317
msgid "XML text"
msgstr ""
+#: contrib/admin/views/doc.py:343
+#, python-format
+msgid "%s does not appear to be a urlpattern object"
+msgstr ""
+
+#: contrib/admin/views/auth.py:28
+msgid "Add user"
+msgstr ""
+
#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
+#: contrib/admin/templates/admin/base.html:25
#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/change_form.html:10
#: contrib/admin/templates/registration/password_change_done.html:3
@@ -613,7 +681,7 @@ msgstr ""
#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
+#: contrib/admin/templates/admin/base.html:25
#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/change_form.html:10
#: contrib/admin/templates/registration/password_change_done.html:3
@@ -634,9 +702,10 @@ msgstr ""
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/500.html:4
#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin/base.html:30
#: contrib/admin/templates/admin/delete_confirmation.html:6
#: contrib/admin/templates/admin/change_form.html:13
+#: contrib/admin/templates/admin/invalid_setup.html:4
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
#: contrib/admin/templates/registration/logged_out.html:4
@@ -713,6 +782,11 @@ msgstr ""
msgid "Models available in the %(name)s application."
msgstr ""
+#: contrib/admin/templates/admin/index.html:18
+#, python-format
+msgid "%(name)s"
+msgstr ""
+
#: contrib/admin/templates/admin/index.html:28
#: contrib/admin/templates/admin/change_form.html:15
msgid "Add"
@@ -747,7 +821,7 @@ msgstr ""
msgid "Have you forgotten your password?"
msgstr ""
-#: contrib/admin/templates/admin/base.html:23
+#: contrib/admin/templates/admin/base.html:25
msgid "Welcome,"
msgstr ""
@@ -759,16 +833,16 @@ msgstr ""
#: 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:"
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
msgstr ""
#: 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:"
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
msgstr ""
#: contrib/admin/templates/admin/delete_confirmation.html:26
@@ -777,13 +851,33 @@ msgstr ""
#: contrib/admin/templates/admin/filter.html:2
#, python-format
-msgid " By %(title)s "
+msgid " By %(filter_title)s "
msgstr ""
#: contrib/admin/templates/admin/search_form.html:8
msgid "Go"
msgstr ""
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] ""
+msgstr[1] ""
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr ""
+
+#: contrib/admin/templates/admin/pagination.html:10
+msgid "Show all"
+msgstr ""
+
+#: contrib/admin/templates/admin/filters.html:4
+msgid "Filter"
+msgstr ""
+
#: contrib/admin/templates/admin/change_form.html:21
msgid "View on site"
msgstr ""
@@ -818,6 +912,35 @@ msgstr ""
msgid "Save"
msgstr ""
+#: contrib/admin/templates/admin/invalid_setup.html:8
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:6
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:12
+msgid "Username"
+msgstr ""
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:18
+msgid "Password"
+msgstr ""
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:23
+msgid "Password (again)"
+msgstr ""
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:24
+msgid "Enter the same password as above, for verification."
+msgstr ""
+
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_change_form.html:6
@@ -1018,11 +1141,11 @@ msgid ""
"'http://'."
msgstr ""
-#: contrib/redirects/models.py:12
+#: contrib/redirects/models.py:13
msgid "redirect"
msgstr ""
-#: contrib/redirects/models.py:13
+#: contrib/redirects/models.py:14
msgid "redirects"
msgstr ""
@@ -1049,8 +1172,8 @@ msgstr ""
#: contrib/flatpages/models.py:13
msgid ""
-"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
-"use 'flatpages/default'."
+"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
+"will use 'flatpages/default.html'."
msgstr ""
#: contrib/flatpages/models.py:14
@@ -1069,151 +1192,177 @@ msgstr ""
msgid "flat pages"
msgstr ""
-#: contrib/auth/models.py:13 contrib/auth/models.py:26
+#: contrib/auth/views.py:39
+msgid "Logged out"
+msgstr ""
+
+#: contrib/auth/models.py:38 contrib/auth/models.py:57
msgid "name"
msgstr ""
-#: contrib/auth/models.py:15
+#: contrib/auth/models.py:40
msgid "codename"
msgstr ""
-#: contrib/auth/models.py:17
+#: contrib/auth/models.py:42
msgid "permission"
msgstr ""
-#: contrib/auth/models.py:18 contrib/auth/models.py:27
+#: contrib/auth/models.py:43 contrib/auth/models.py:58
msgid "permissions"
msgstr ""
-#: contrib/auth/models.py:29
+#: contrib/auth/models.py:60
msgid "group"
msgstr ""
-#: contrib/auth/models.py:30 contrib/auth/models.py:65
+#: contrib/auth/models.py:61 contrib/auth/models.py:100
msgid "groups"
msgstr ""
-#: contrib/auth/models.py:55
+#: contrib/auth/models.py:90
msgid "username"
msgstr ""
-#: contrib/auth/models.py:56
+#: contrib/auth/models.py:90
+msgid ""
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
+msgstr ""
+
+#: contrib/auth/models.py:91
msgid "first name"
msgstr ""
-#: contrib/auth/models.py:57
+#: contrib/auth/models.py:92
msgid "last name"
msgstr ""
-#: contrib/auth/models.py:58
+#: contrib/auth/models.py:93
msgid "e-mail address"
msgstr ""
-#: contrib/auth/models.py:59
+#: contrib/auth/models.py:94
msgid "password"
msgstr ""
-#: contrib/auth/models.py:59
+#: contrib/auth/models.py:94
msgid "Use '[algo]$[salt]$[hexdigest]'"
msgstr ""
-#: contrib/auth/models.py:60
+#: contrib/auth/models.py:95
msgid "staff status"
msgstr ""
-#: contrib/auth/models.py:60
+#: contrib/auth/models.py:95
msgid "Designates whether the user can log into this admin site."
msgstr ""
-#: contrib/auth/models.py:61
+#: contrib/auth/models.py:96
msgid "active"
msgstr ""
-#: contrib/auth/models.py:62
+#: contrib/auth/models.py:96
+msgid ""
+"Designates whether this user can log into the Django admin. Unselect this "
+"instead of deleting accounts."
+msgstr ""
+
+#: contrib/auth/models.py:97
msgid "superuser status"
msgstr ""
-#: contrib/auth/models.py:63
+#: contrib/auth/models.py:97
+msgid ""
+"Designates that this user has all permissions without explicitly assigning "
+"them."
+msgstr ""
+
+#: contrib/auth/models.py:98
msgid "last login"
msgstr ""
-#: contrib/auth/models.py:64
+#: contrib/auth/models.py:99
msgid "date joined"
msgstr ""
-#: contrib/auth/models.py:66
+#: contrib/auth/models.py:101
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
msgstr ""
-#: contrib/auth/models.py:67
+#: contrib/auth/models.py:102
msgid "user permissions"
msgstr ""
-#: contrib/auth/models.py:70
+#: contrib/auth/models.py:105
msgid "user"
msgstr ""
-#: contrib/auth/models.py:71
+#: contrib/auth/models.py:106
msgid "users"
msgstr ""
-#: contrib/auth/models.py:76
+#: contrib/auth/models.py:111
msgid "Personal info"
msgstr ""
-#: contrib/auth/models.py:77
+#: contrib/auth/models.py:112
msgid "Permissions"
msgstr ""
-#: contrib/auth/models.py:78
+#: contrib/auth/models.py:113
msgid "Important dates"
msgstr ""
-#: contrib/auth/models.py:79
+#: contrib/auth/models.py:114
msgid "Groups"
msgstr ""
-#: contrib/auth/models.py:219
+#: contrib/auth/models.py:256
msgid "message"
msgstr ""
-#: contrib/auth/forms.py:30
+#: contrib/auth/forms.py:52
msgid ""
"Your Web browser doesn't appear to have cookies enabled. Cookies are "
"required for logging in."
msgstr ""
-#: contrib/contenttypes/models.py:25
+#: contrib/auth/forms.py:61
+msgid "This account is inactive."
+msgstr ""
+
+#: contrib/contenttypes/models.py:20
msgid "python model class name"
msgstr ""
-#: contrib/contenttypes/models.py:28
+#: contrib/contenttypes/models.py:23
msgid "content type"
msgstr ""
-#: contrib/contenttypes/models.py:29
+#: contrib/contenttypes/models.py:24
msgid "content types"
msgstr ""
-#: contrib/sessions/models.py:35
+#: contrib/sessions/models.py:51
msgid "session key"
msgstr ""
-#: contrib/sessions/models.py:36
+#: contrib/sessions/models.py:52
msgid "session data"
msgstr ""
-#: contrib/sessions/models.py:37
+#: contrib/sessions/models.py:53
msgid "expire date"
msgstr ""
-#: contrib/sessions/models.py:41
+#: contrib/sessions/models.py:57
msgid "session"
msgstr ""
-#: contrib/sessions/models.py:42
+#: contrib/sessions/models.py:58
msgid "sessions"
msgstr ""
@@ -1233,18 +1382,6 @@ msgstr ""
msgid "sites"
msgstr ""
-#: utils/translation.py:360
-msgid "DATE_FORMAT"
-msgstr "N j, Y"
-
-#: utils/translation.py:361
-msgid "DATETIME_FORMAT"
-msgstr "N j, Y, P"
-
-#: utils/translation.py:362
-msgid "TIME_FORMAT"
-msgstr "P"
-
#: utils/dates.py:6
msgid "Monday"
msgstr ""
@@ -1433,275 +1570,332 @@ msgid_plural "minutes"
msgstr[0] ""
msgstr[1] ""
-#: conf/global_settings.py:37
-msgid "Bengali"
-msgstr ""
+#: utils/translation/trans_real.py:362
+msgid "DATE_FORMAT"
+msgstr "N j, Y"
-#: conf/global_settings.py:38
-msgid "Czech"
-msgstr ""
+#: utils/translation/trans_real.py:363
+msgid "DATETIME_FORMAT"
+msgstr "N j, Y, P"
+
+#: utils/translation/trans_real.py:364
+msgid "TIME_FORMAT"
+msgstr "P"
+
+#: utils/translation/trans_real.py:380
+msgid "YEAR_MONTH_FORMAT"
+msgstr "F Y"
+
+#: utils/translation/trans_real.py:381
+msgid "MONTH_DAY_FORMAT"
+msgstr "F j"
#: conf/global_settings.py:39
-msgid "Welsh"
+msgid "Arabic"
msgstr ""
#: conf/global_settings.py:40
-msgid "Danish"
+msgid "Bengali"
msgstr ""
#: conf/global_settings.py:41
-msgid "German"
+msgid "Czech"
msgstr ""
#: conf/global_settings.py:42
-msgid "Greek"
+msgid "Welsh"
msgstr ""
#: conf/global_settings.py:43
-msgid "English"
+msgid "Danish"
msgstr ""
#: conf/global_settings.py:44
-msgid "Spanish"
+msgid "German"
msgstr ""
#: conf/global_settings.py:45
-msgid "French"
+msgid "Greek"
msgstr ""
#: conf/global_settings.py:46
-msgid "Galician"
+msgid "English"
msgstr ""
#: conf/global_settings.py:47
-msgid "Hungarian"
+msgid "Spanish"
msgstr ""
#: conf/global_settings.py:48
-msgid "Hebrew"
+msgid "Argentinean Spanish"
msgstr ""
#: conf/global_settings.py:49
-msgid "Icelandic"
+msgid "Finnish"
msgstr ""
#: conf/global_settings.py:50
-msgid "Italian"
+msgid "French"
msgstr ""
#: conf/global_settings.py:51
-msgid "Japanese"
+msgid "Galician"
msgstr ""
#: conf/global_settings.py:52
-msgid "Dutch"
+msgid "Hungarian"
msgstr ""
#: conf/global_settings.py:53
-msgid "Norwegian"
+msgid "Hebrew"
msgstr ""
#: conf/global_settings.py:54
-msgid "Brazilian"
+msgid "Icelandic"
msgstr ""
#: conf/global_settings.py:55
-msgid "Romanian"
+msgid "Italian"
msgstr ""
#: conf/global_settings.py:56
-msgid "Russian"
+msgid "Japanese"
msgstr ""
#: conf/global_settings.py:57
-msgid "Slovak"
+msgid "Dutch"
msgstr ""
#: conf/global_settings.py:58
-msgid "Slovenian"
+msgid "Norwegian"
msgstr ""
#: conf/global_settings.py:59
-msgid "Serbian"
+msgid "Brazilian"
msgstr ""
#: conf/global_settings.py:60
-msgid "Swedish"
+msgid "Romanian"
msgstr ""
#: conf/global_settings.py:61
-msgid "Ukrainian"
+msgid "Russian"
msgstr ""
#: conf/global_settings.py:62
-msgid "Simplified Chinese"
+msgid "Slovak"
msgstr ""
#: conf/global_settings.py:63
+msgid "Slovenian"
+msgstr ""
+
+#: conf/global_settings.py:64
+msgid "Serbian"
+msgstr ""
+
+#: conf/global_settings.py:65
+msgid "Swedish"
+msgstr ""
+
+#: conf/global_settings.py:66
+msgid "Tamil"
+msgstr ""
+
+#: conf/global_settings.py:67
+msgid "Turkish"
+msgstr ""
+
+#: conf/global_settings.py:68
+msgid "Ukrainian"
+msgstr ""
+
+#: conf/global_settings.py:69
+msgid "Simplified Chinese"
+msgstr ""
+
+#: conf/global_settings.py:70
msgid "Traditional Chinese"
msgstr ""
-#: core/validators.py:60
+#: core/validators.py:63
msgid "This value must contain only letters, numbers and underscores."
msgstr ""
-#: core/validators.py:64
+#: core/validators.py:67
msgid ""
"This value must contain only letters, numbers, underscores, dashes or "
"slashes."
msgstr ""
-#: core/validators.py:72
+#: core/validators.py:71
+msgid "This value must contain only letters, numbers, underscores or hyphens."
+msgstr ""
+
+#: core/validators.py:75
msgid "Uppercase letters are not allowed here."
msgstr ""
-#: core/validators.py:76
+#: core/validators.py:79
msgid "Lowercase letters are not allowed here."
msgstr ""
-#: core/validators.py:83
+#: core/validators.py:86
msgid "Enter only digits separated by commas."
msgstr ""
-#: core/validators.py:95
+#: core/validators.py:98
msgid "Enter valid e-mail addresses separated by commas."
msgstr ""
-#: core/validators.py:99
+#: core/validators.py:102
msgid "Please enter a valid IP address."
msgstr ""
-#: core/validators.py:103
+#: core/validators.py:106
msgid "Empty values are not allowed here."
msgstr ""
-#: core/validators.py:107
+#: core/validators.py:110
msgid "Non-numeric characters aren't allowed here."
msgstr ""
-#: core/validators.py:111
+#: core/validators.py:114
msgid "This value can't be comprised solely of digits."
msgstr ""
-#: core/validators.py:116
+#: core/validators.py:119
msgid "Enter a whole number."
msgstr ""
-#: core/validators.py:120
+#: core/validators.py:123
msgid "Only alphabetical characters are allowed here."
msgstr ""
-#: core/validators.py:124
+#: core/validators.py:138
+msgid "Year must be 1900 or later."
+msgstr ""
+
+#: core/validators.py:142
+#, python-format
+msgid "Invalid date: %s."
+msgstr ""
+
+#: core/validators.py:146 db/models/fields/__init__.py:415
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr ""
-#: core/validators.py:128
+#: core/validators.py:151
msgid "Enter a valid time in HH:MM format."
msgstr ""
-#: core/validators.py:132 db/models/fields/__init__.py:468
+#: core/validators.py:155 db/models/fields/__init__.py:477
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr ""
-#: core/validators.py:136
+#: core/validators.py:160
msgid "Enter a valid e-mail address."
msgstr ""
-#: core/validators.py:148
+#: core/validators.py:172 core/validators.py:401 forms/__init__.py:661
+msgid "No file was submitted. Check the encoding type on the form."
+msgstr ""
+
+#: core/validators.py:176
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
-#: core/validators.py:155
+#: core/validators.py:183
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr ""
-#: core/validators.py:159
+#: core/validators.py:187
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
-#: core/validators.py:167
+#: core/validators.py:195
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr ""
-#: core/validators.py:171
+#: core/validators.py:199
msgid "A valid URL is required."
msgstr ""
-#: core/validators.py:185
+#: core/validators.py:213
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
-#: core/validators.py:192
+#: core/validators.py:220
#, python-format
msgid "Badly formed XML: %s"
msgstr ""
-#: core/validators.py:202
+#: core/validators.py:230
#, python-format
msgid "Invalid URL: %s"
msgstr ""
-#: core/validators.py:206 core/validators.py:208
+#: core/validators.py:234 core/validators.py:236
#, python-format
msgid "The URL %s is a broken link."
msgstr ""
-#: core/validators.py:214
+#: core/validators.py:242
msgid "Enter a valid U.S. state abbreviation."
msgstr ""
-#: core/validators.py:229
+#: core/validators.py:256
#, python-format
msgid "Watch your mouth! The word %s is not allowed here."
msgid_plural "Watch your mouth! The words %s are not allowed here."
msgstr[0] ""
msgstr[1] ""
-#: core/validators.py:236
+#: core/validators.py:263
#, python-format
msgid "This field must match the '%s' field."
msgstr ""
-#: core/validators.py:255
+#: core/validators.py:282
msgid "Please enter something for at least one field."
msgstr ""
-#: core/validators.py:264 core/validators.py:275
+#: core/validators.py:291 core/validators.py:302
msgid "Please enter both fields or leave them both empty."
msgstr ""
-#: core/validators.py:282
+#: core/validators.py:309
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr ""
-#: core/validators.py:294
+#: core/validators.py:321
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr ""
-#: core/validators.py:313
+#: core/validators.py:340
msgid "Duplicate values are not allowed."
msgstr ""
-#: core/validators.py:336
+#: core/validators.py:363
#, python-format
msgid "This value must be a power of %s."
msgstr ""
-#: core/validators.py:347
+#: core/validators.py:374
msgid "Please enter a valid decimal number."
msgstr ""
-#: core/validators.py:349
+#: core/validators.py:378
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@@ -1709,7 +1903,16 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: core/validators.py:352
+#: core/validators.py:381
+#, python-format
+msgid ""
+"Please enter a valid decimal number with a whole part of at most %s digit."
+msgid_plural ""
+"Please enter a valid decimal number with a whole part of at most %s digits."
+msgstr[0] ""
+msgstr[1] ""
+
+#: core/validators.py:384
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@@ -1717,77 +1920,92 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: core/validators.py:362
+#: core/validators.py:394
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr ""
-#: core/validators.py:363
+#: core/validators.py:395
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr ""
-#: core/validators.py:376
+#: core/validators.py:412
msgid "The format for this field is wrong."
msgstr ""
-#: core/validators.py:391
+#: core/validators.py:427
msgid "This field is invalid."
msgstr ""
-#: core/validators.py:426
+#: core/validators.py:463
#, python-format
msgid "Could not retrieve anything from %s."
msgstr ""
-#: core/validators.py:429
+#: core/validators.py:466
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
-#: core/validators.py:462
+#: core/validators.py:499
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
-#: core/validators.py:466
+#: core/validators.py:503
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
"starts with \"%(start)s\".)"
msgstr ""
-#: core/validators.py:471
+#: core/validators.py:508
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
-#: core/validators.py:476
+#: core/validators.py:513
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
-#: core/validators.py:480
+#: core/validators.py:517
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
"starts with \"%(start)s\".)"
msgstr ""
-#: core/validators.py:485
+#: core/validators.py:522
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
"starts with \"%(start)s\".)"
msgstr ""
+#: views/generic/create_update.py:43
+#, python-format
+msgid "The %(verbose_name)s was created successfully."
+msgstr ""
+
+#: views/generic/create_update.py:117
+#, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr ""
+
+#: views/generic/create_update.py:184
+#, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr ""
+
#: db/models/manipulators.py:302
#, python-format
msgid "%(object)s with this %(type)s already exists for the given %(field)s."
@@ -1799,42 +2017,42 @@ msgid "%(optname)s with this %(fieldname)s already exists."
msgstr ""
#: 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:551 db/models/fields/__init__.py:562
#: forms/__init__.py:346
msgid "This field is required."
msgstr ""
-#: db/models/fields/__init__.py:337
+#: db/models/fields/__init__.py:340
msgid "This value must be an integer."
msgstr ""
-#: db/models/fields/__init__.py:369
+#: db/models/fields/__init__.py:372
msgid "This value must be either True or False."
msgstr ""
-#: db/models/fields/__init__.py:385
+#: db/models/fields/__init__.py:388
msgid "This field cannot be null."
msgstr ""
-#: db/models/fields/__init__.py:562
+#: db/models/fields/__init__.py:571
msgid "Enter a valid filename."
msgstr ""
-#: db/models/fields/related.py:43
+#: db/models/fields/related.py:51
#, python-format
msgid "Please enter a valid %s."
msgstr ""
-#: db/models/fields/related.py:579
+#: db/models/fields/related.py:618
msgid "Separate multiple IDs with commas."
msgstr ""
-#: db/models/fields/related.py:581
+#: db/models/fields/related.py:620
msgid ""
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
-#: db/models/fields/related.py:625
+#: db/models/fields/related.py:664
#, python-format
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
msgid_plural ""
@@ -1842,38 +2060,38 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: forms/__init__.py:380
+#: forms/__init__.py:381
#, python-format
msgid "Ensure your text is less than %s character."
msgid_plural "Ensure your text is less than %s characters."
msgstr[0] ""
msgstr[1] ""
-#: forms/__init__.py:385
+#: forms/__init__.py:386
msgid "Line breaks are not allowed here."
msgstr ""
-#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589
+#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599
#, python-format
msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
msgstr ""
-#: forms/__init__.py:645
+#: forms/__init__.py:663
msgid "The submitted file is empty."
msgstr ""
-#: forms/__init__.py:699
+#: forms/__init__.py:719
msgid "Enter a whole number between -32,768 and 32,767."
msgstr ""
-#: forms/__init__.py:708
+#: forms/__init__.py:729
msgid "Enter a positive number."
msgstr ""
-#: forms/__init__.py:717
+#: forms/__init__.py:739
msgid "Enter a whole number between 0 and 32,767."
msgstr ""
-#: template/defaultfilters.py:379
+#: template/defaultfilters.py:401
msgid "yes,no,maybe"
msgstr ""
diff --git a/django/conf/locale/tr/LC_MESSAGES/django.mo b/django/conf/locale/tr/LC_MESSAGES/django.mo
new file mode 100644
index 0000000000..ba3dd15be8
Binary files /dev/null and b/django/conf/locale/tr/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/tr/LC_MESSAGES/django.po b/django/conf/locale/tr/LC_MESSAGES/django.po
new file mode 100644
index 0000000000..390c8e7d0b
--- /dev/null
+++ b/django/conf/locale/tr/LC_MESSAGES/django.po
@@ -0,0 +1,1898 @@
+# Django Turkish translation.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Baurzhan Ismagulov , 2006.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Django 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-05-16 10:10+0200\n"
+"PO-Revision-Date: 2006-09-12 23:43+0200\n"
+"Last-Translator: Baurzhan Ismagulov \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: contrib/comments/models.py:67 contrib/comments/models.py:166
+msgid "object ID"
+msgstr "nesne kodu"
+
+#: contrib/comments/models.py:68
+msgid "headline"
+msgstr "başlık"
+
+#: contrib/comments/models.py:69 contrib/comments/models.py:90
+#: contrib/comments/models.py:167
+msgid "comment"
+msgstr "yorum"
+
+#: contrib/comments/models.py:70
+msgid "rating #1"
+msgstr "rating #1"
+
+#: contrib/comments/models.py:71
+msgid "rating #2"
+msgstr "rating #2"
+
+#: contrib/comments/models.py:72
+msgid "rating #3"
+msgstr "rating #3"
+
+#: contrib/comments/models.py:73
+msgid "rating #4"
+msgstr "rating #4"
+
+#: contrib/comments/models.py:74
+msgid "rating #5"
+msgstr "rating #5"
+
+#: contrib/comments/models.py:75
+msgid "rating #6"
+msgstr "rating #6"
+
+#: contrib/comments/models.py:76
+msgid "rating #7"
+msgstr "rating #7"
+
+#: contrib/comments/models.py:77
+msgid "rating #8"
+msgstr "rating #8"
+
+#: contrib/comments/models.py:82
+msgid "is valid rating"
+msgstr "geçerli bir rating'dir"
+
+#: contrib/comments/models.py:83 contrib/comments/models.py:169
+msgid "date/time submitted"
+msgstr "girildiği tarih/saat"
+
+#: contrib/comments/models.py:84 contrib/comments/models.py:170
+msgid "is public"
+msgstr "geneldir"
+
+#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289
+msgid "IP address"
+msgstr "IP adresi"
+
+#: contrib/comments/models.py:86
+msgid "is removed"
+msgstr "silinmiştir"
+
+#: 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 "Yorum uygun değilse bu alanı işaretleyin. Yerine \"Bu yorum silinmiştir\" yazısı gözükür."
+
+#: contrib/comments/models.py:91
+msgid "comments"
+msgstr "yorumlar"
+
+#: contrib/comments/models.py:131 contrib/comments/models.py:207
+msgid "Content object"
+msgstr "İçerik nesnesi"
+
+#: contrib/comments/models.py:159
+#, python-format
+msgid ""
+"Posted by %(user)s at %(date)s\n"
+"\n"
+"%(comment)s\n"
+"\n"
+"http://%(domain)s%(url)s"
+msgstr ""
+"%(user)s, %(date)s\n"
+"\n"
+"%(comment)s\n"
+"\n"
+"http://%(domain)s%(url)s"
+
+#: contrib/comments/models.py:168
+msgid "person's name"
+msgstr "kişinin adı"
+
+#: contrib/comments/models.py:171
+msgid "ip address"
+msgstr "IP adresi"
+
+#: contrib/comments/models.py:173
+msgid "approved by staff"
+msgstr "personel tarafından onaylanmış"
+
+#: contrib/comments/models.py:176
+msgid "free comment"
+msgstr "serbest yorum"
+
+#: contrib/comments/models.py:177
+msgid "free comments"
+msgstr "serbest yorum"
+
+#: contrib/comments/models.py:233
+msgid "score"
+msgstr "puan"
+
+#: contrib/comments/models.py:234
+msgid "score date"
+msgstr "puan tarihi"
+
+#: contrib/comments/models.py:237
+msgid "karma score"
+msgstr "karma puanı"
+
+#: contrib/comments/models.py:238
+msgid "karma scores"
+msgstr "karma puanları"
+
+#: contrib/comments/models.py:242
+#, python-format
+msgid "%(score)d rating by %(user)s"
+msgstr "%(score)d rating by %(user)s"
+
+#: contrib/comments/models.py:258
+#, python-format
+msgid ""
+"This comment was flagged by %(user)s:\n"
+"\n"
+"%(text)s"
+msgstr ""
+"Bu yorum, %(user)s tarafından işaretlenmiştir:\n"
+"\n"
+"%(text)s"
+
+#: contrib/comments/models.py:265
+msgid "flag date"
+msgstr "işaretleme tarihi"
+
+#: contrib/comments/models.py:268
+msgid "user flag"
+msgstr "kullanıcı işareti"
+
+#: contrib/comments/models.py:269
+msgid "user flags"
+msgstr "kullanıcı işaretleri"
+
+#: contrib/comments/models.py:273
+#, python-format
+msgid "Flag by %r"
+msgstr "Flag by %r"
+
+#: contrib/comments/models.py:278
+msgid "deletion date"
+msgstr "silme tarihi"
+
+#: contrib/comments/models.py:280
+msgid "moderator deletion"
+msgstr "moderator deletion"
+
+#: contrib/comments/models.py:281
+msgid "moderator deletions"
+msgstr "moderator deletions"
+
+#: contrib/comments/models.py:285
+#, python-format
+msgid "Moderator deletion by %r"
+msgstr "Moderator deletion by %r"
+
+#: contrib/comments/views/karma.py:19
+msgid "Anonymous users cannot vote"
+msgstr "Kayıtlı olmayan kullanıcılar oy veremez"
+
+#: contrib/comments/views/karma.py:23
+msgid "Invalid comment ID"
+msgstr "Geçersiz yorum kodu"
+
+#: contrib/comments/views/karma.py:25
+msgid "No voting for yourself"
+msgstr "Kendinize oy veremezsiniz"
+
+#: contrib/comments/views/comments.py:28
+msgid ""
+"This rating is required because you've entered at least one other rating."
+msgstr "Bu rating zorunludur, çünkü en az bir başka rating girdiniz."
+
+#: 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"
+"\n"
+"%(text)s"
+msgid_plural ""
+"This comment was posted by a user who has posted fewer than %(count)s "
+"comments:\n"
+"\n"
+"%(text)s"
+msgstr[0] ""
+"Bu yorum, %(count)s'den az yorum yazmış bir kullanıcı tarafından yazılmıştır:\n"
+"\n"
+"%(text)s"
+msgstr[1] ""
+"Bu yorum, %(count)s'den az yorum yazmış bir kullanıcı tarafından yazılmıştır:\n"
+"\n"
+"%(text)s"
+
+#: contrib/comments/views/comments.py:117
+#, python-format
+msgid ""
+"This comment was posted by a sketchy user:\n"
+"\n"
+"%(text)s"
+msgstr ""
+"Bu yorum, yüzeysel bir kullanıcı tarafından yazılmıştır:\n"
+"\n"
+"%(text)s"
+
+#: contrib/comments/views/comments.py:189
+#: contrib/comments/views/comments.py:280
+msgid "Only POSTs are allowed"
+msgstr "Yalnızca POST kabul edilir"
+
+#: contrib/comments/views/comments.py:193
+#: contrib/comments/views/comments.py:284
+msgid "One or more of the required fields wasn't submitted"
+msgstr "En az bir zorunlu alan doldurulmamıştır"
+
+#: contrib/comments/views/comments.py:197
+#: contrib/comments/views/comments.py:286
+msgid "Somebody tampered with the comment form (security violation)"
+msgstr "Yorum formu ile oynanmış (güvenlik problemi)"
+
+#: 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 "Yorum formunun 'target' parametresi geçersiz, nesne kodu geçersiz"
+
+#: contrib/comments/views/comments.py:257
+#: contrib/comments/views/comments.py:321
+msgid "The comment form didn't provide either 'preview' or 'post'"
+msgstr "Yorum formunda ne 'preview', ne de 'post' var"
+
+#: contrib/comments/templates/comments/form.html:6
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:17
+msgid "Username:"
+msgstr "Kullanıcı adı:"
+
+#: contrib/comments/templates/comments/form.html:6
+#: contrib/admin/templates/admin/login.html:20
+msgid "Password:"
+msgstr "Şifre:"
+
+#: contrib/comments/templates/comments/form.html:6
+msgid "Forgotten your password?"
+msgstr "Şifremi unuttum"
+
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/base.html:23
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
+#: contrib/admin/templates/admin_doc/view_detail.html:4
+#: contrib/admin/templates/admin_doc/template_tag_index.html:5
+#: contrib/admin/templates/admin_doc/template_detail.html:4
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+#: contrib/admin/templates/admin_doc/missing_docutils.html:4
+#: contrib/admin/templates/admin_doc/view_index.html:5
+#: contrib/admin/templates/admin_doc/model_detail.html:3
+#: contrib/admin/templates/admin_doc/index.html:4
+#: contrib/admin/templates/admin_doc/model_index.html:5
+msgid "Log out"
+msgstr "Çıkış"
+
+#: contrib/comments/templates/comments/form.html:12
+msgid "Ratings"
+msgstr "Rating'ler"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Required"
+msgstr "Zorunlu"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Optional"
+msgstr "İsteğe bağlı"
+
+#: contrib/comments/templates/comments/form.html:23
+msgid "Post a photo"
+msgstr "Resim ekle"
+
+#: contrib/comments/templates/comments/form.html:27
+#: contrib/comments/templates/comments/freeform.html:5
+msgid "Comment:"
+msgstr "Yorum:"
+
+#: contrib/comments/templates/comments/form.html:32
+#: contrib/comments/templates/comments/freeform.html:9
+msgid "Preview comment"
+msgstr "Yorum önizleme"
+
+#: contrib/comments/templates/comments/freeform.html:4
+msgid "Your name:"
+msgstr "Adınız:"
+
+#: contrib/admin/filterspecs.py:40
+#, python-format
+msgid ""
+"
By %s:
\n"
+"
\n"
+msgstr ""
+"
%s:
\n"
+"
\n"
+
+#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
+#: contrib/admin/filterspecs.py:143
+msgid "All"
+msgstr "Hepsi"
+
+#: contrib/admin/filterspecs.py:109
+msgid "Any date"
+msgstr "Herhangi bir tarih"
+
+#: contrib/admin/filterspecs.py:110
+msgid "Today"
+msgstr "Bugün"
+
+#: contrib/admin/filterspecs.py:113
+msgid "Past 7 days"
+msgstr "Son 7 gün"
+
+#: contrib/admin/filterspecs.py:115
+msgid "This month"
+msgstr "Bu ay"
+
+#: contrib/admin/filterspecs.py:117
+msgid "This year"
+msgstr "Bu yıl"
+
+#: contrib/admin/filterspecs.py:143
+msgid "Yes"
+msgstr "Evet"
+
+#: contrib/admin/filterspecs.py:143
+msgid "No"
+msgstr "Hayır"
+
+#: contrib/admin/filterspecs.py:150
+msgid "Unknown"
+msgstr "Bilinmiyor"
+
+#: contrib/admin/models.py:16
+msgid "action time"
+msgstr "hareket saati"
+
+#: contrib/admin/models.py:19
+msgid "object id"
+msgstr "nesne kodu"
+
+#: contrib/admin/models.py:20
+msgid "object repr"
+msgstr "nesne repr gösterimi"
+
+#: contrib/admin/models.py:21
+msgid "action flag"
+msgstr "hareket işareti"
+
+#: contrib/admin/models.py:22
+msgid "change message"
+msgstr "değişiklik mesajı"
+
+#: contrib/admin/models.py:25
+msgid "log entry"
+msgstr "günlük kaydı"
+
+#: contrib/admin/models.py:26
+msgid "log entries"
+msgstr "günlük kayıtları"
+
+#: contrib/admin/templatetags/admin_list.py:228
+msgid "All dates"
+msgstr "Tüm tarihler"
+
+#: 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 "Geçerli bir kullanıcı adı ve şifre giriniz. Her ikisinde de büyük ve küçük harfler farklıdır."
+
+#: contrib/admin/views/decorators.py:23
+#: contrib/admin/templates/admin/login.html:25
+msgid "Log in"
+msgstr "Giriş"
+
+#: 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 "Oturumunuzun süresi dolmuştur, yeniden giriniz. Merak etmeyin, verileriniz kaydedilmiştir."
+
+#: 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 "Tarayıcınızın cookie desteği kapalıdır. Cookie desteğini açın, bu sayfayı yeniden yükleyin ve tekrar deneyin."
+
+#: contrib/admin/views/decorators.py:82
+msgid "Usernames cannot contain the '@' character."
+msgstr "Kullanıcı adında '@' karakterini kullanamazsınız."
+
+#: contrib/admin/views/decorators.py:84
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr "E-posta adresiniz, kullanıcı adınız değildir. Yerine '%s' deneyin."
+
+#: contrib/admin/views/main.py:226
+msgid "Site administration"
+msgstr "Site yönetimi"
+
+#: contrib/admin/views/main.py:260
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "%(name)s \\\"%(obj)s\\\" başarı ile eklenmiştir."
+
+#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348
+msgid "You may edit it again below."
+msgstr "Aşağıda değiştirebilirsiniz."
+
+#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357
+#, python-format
+msgid "You may add another %s below."
+msgstr "Aşağıda bir %s daha ekleyebilirsiniz."
+
+#: contrib/admin/views/main.py:290
+#, python-format
+msgid "Add %s"
+msgstr "%s ekle"
+
+#: contrib/admin/views/main.py:336
+#, python-format
+msgid "Added %s."
+msgstr "%s eklenmiştir."
+
+#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
+#: contrib/admin/views/main.py:340
+msgid "and"
+msgstr "ve"
+
+#: contrib/admin/views/main.py:338
+#, python-format
+msgid "Changed %s."
+msgstr "%s değiştirilmiştir."
+
+#: contrib/admin/views/main.py:340
+#, python-format
+msgid "Deleted %s."
+msgstr "%s silinmiştir."
+
+#: contrib/admin/views/main.py:343
+msgid "No fields changed."
+msgstr "Herhangi bir alan değiştirilmemiştir."
+
+#: contrib/admin/views/main.py:346
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr "%(name)s \"%(obj)s\" başarı ile değiştirilmiştir."
+
+#: 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\\\" başarı ile eklenmiştir. Aşağida değiştirebilirsiniz."
+
+#: contrib/admin/views/main.py:392
+#, python-format
+msgid "Change %s"
+msgstr "%s değiştir"
+
+#: contrib/admin/views/main.py:470
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr "%(name)s'daki bir ya da birden fazla %(fieldname)s: %(obj)s"
+
+#: contrib/admin/views/main.py:475
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "%(name)s'daki bir ya da birden fazla %(fieldname)s:"
+
+#: contrib/admin/views/main.py:508
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "%(name)s \"%(obj)s\" başarı ile silinmiştir."
+
+#: contrib/admin/views/main.py:511
+msgid "Are you sure?"
+msgstr "Emin misiniz?"
+
+#: contrib/admin/views/main.py:533
+#, python-format
+msgid "Change history: %s"
+msgstr "Değişiklik tarihçesi: %s"
+
+#: contrib/admin/views/main.py:565
+#, python-format
+msgid "Select %s"
+msgstr "%s seç"
+
+#: contrib/admin/views/main.py:565
+#, python-format
+msgid "Select %s to change"
+msgstr "Değiştirmek için %s seçiniz"
+
+#: 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 "Tamsayı"
+
+#: contrib/admin/views/doc.py:278
+msgid "Boolean (Either True or False)"
+msgstr "Boolean (True ya da False)"
+
+#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296
+#, python-format
+msgid "String (up to %(maxlength)s)"
+msgstr "String (en fazla %(maxlength)s karakter)"
+
+#: contrib/admin/views/doc.py:280
+msgid "Comma-separated integers"
+msgstr "Virgül ile ayrılmış tamsayılar"
+
+#: contrib/admin/views/doc.py:281
+msgid "Date (without time)"
+msgstr "Tarih (saat yok)"
+
+#: contrib/admin/views/doc.py:282
+msgid "Date (with time)"
+msgstr "Tarih (saat ile)"
+
+#: contrib/admin/views/doc.py:283
+msgid "E-mail address"
+msgstr "E-posta adresi"
+
+#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287
+msgid "File path"
+msgstr "Dosya yolu"
+
+#: contrib/admin/views/doc.py:285
+msgid "Decimal number"
+msgstr "Ondalık sayı"
+
+#: contrib/admin/views/doc.py:291
+msgid "Boolean (Either True, False or None)"
+msgstr "Boolean (True, False, ya da None)"
+
+#: contrib/admin/views/doc.py:292
+msgid "Relation to parent model"
+msgstr "Ana model ile ilişki"
+
+#: contrib/admin/views/doc.py:293
+msgid "Phone number"
+msgstr "Telefon numarası"
+
+#: contrib/admin/views/doc.py:298
+msgid "Text"
+msgstr "Metin"
+
+#: contrib/admin/views/doc.py:299
+msgid "Time"
+msgstr "Saat"
+
+#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7
+msgid "URL"
+msgstr "URL"
+
+#: contrib/admin/views/doc.py:301
+msgid "U.S. state (two uppercase letters)"
+msgstr "ABD eyaleti (iki büyük harf)"
+
+#: contrib/admin/views/doc.py:302
+msgid "XML text"
+msgstr "XML metni"
+
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/base.html:23
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Documentation"
+msgstr "Dokümantasyon"
+
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/base.html:23
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
+#: contrib/admin/templates/admin_doc/view_detail.html:4
+#: contrib/admin/templates/admin_doc/template_tag_index.html:5
+#: contrib/admin/templates/admin_doc/template_detail.html:4
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+#: contrib/admin/templates/admin_doc/missing_docutils.html:4
+#: contrib/admin/templates/admin_doc/view_index.html:5
+#: contrib/admin/templates/admin_doc/model_detail.html:3
+#: contrib/admin/templates/admin_doc/index.html:4
+#: contrib/admin/templates/admin_doc/model_index.html:5
+msgid "Change password"
+msgstr "Şifre değiştirme"
+
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/500.html:4
+#: contrib/admin/templates/admin/change_list.html:6
+#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin/delete_confirmation.html:6
+#: contrib/admin/templates/admin/change_form.html:13
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_reset_form.html:4
+#: contrib/admin/templates/registration/logged_out.html:4
+#: contrib/admin/templates/registration/password_reset_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Home"
+msgstr "Ana sayfa"
+
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/change_form.html:20
+msgid "History"
+msgstr "Tarihçe"
+
+#: contrib/admin/templates/admin/object_history.html:18
+msgid "Date/time"
+msgstr "Tarih/saat"
+
+#: contrib/admin/templates/admin/object_history.html:19
+msgid "User"
+msgstr "Kullanıcı"
+
+#: contrib/admin/templates/admin/object_history.html:20
+msgid "Action"
+msgstr "Hareket"
+
+#: contrib/admin/templates/admin/object_history.html:26
+msgid "DATE_WITH_TIME_FULL"
+msgstr "j N 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 "Bu nesne ile ilgili bir tarihçe yoktur. Muhtemelen bu yönetim arayüzü aracılığıyla eklenmemiştir."
+
+#: contrib/admin/templates/admin/base_site.html:4
+msgid "Django site admin"
+msgstr "Django site yöneticisi"
+
+#: contrib/admin/templates/admin/base_site.html:7
+msgid "Django administration"
+msgstr "Django yönetimi"
+
+#: contrib/admin/templates/admin/500.html:4
+msgid "Server error"
+msgstr "Sunucu hatası"
+
+#: contrib/admin/templates/admin/500.html:6
+msgid "Server error (500)"
+msgstr "Sunucu hatası (500)"
+
+#: contrib/admin/templates/admin/500.html:9
+msgid "Server Error (500)"
+msgstr "Sunucu hatası (500)"
+
+#: 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 "Bir hata oluştu. Site yöneticilerine e-posta ile gönderildi ve en kısa zamanda düzeltilir. Sabrınız için teşekkür ederiz."
+
+#: contrib/admin/templates/admin/404.html:4
+#: contrib/admin/templates/admin/404.html:8
+msgid "Page not found"
+msgstr "Sayfa bulunamamıştır"
+
+#: contrib/admin/templates/admin/404.html:10
+msgid "We're sorry, but the requested page could not be found."
+msgstr "Özür dileriz, sayfa bulunamamıştır."
+
+#: contrib/admin/templates/admin/index.html:17
+#, python-format
+msgid "Models available in the %(name)s application."
+msgstr "%(name)s uygulamasındaki modeller."
+
+#: contrib/admin/templates/admin/index.html:28
+#: contrib/admin/templates/admin/change_form.html:15
+msgid "Add"
+msgstr "Ekle"
+
+#: contrib/admin/templates/admin/index.html:34
+msgid "Change"
+msgstr "Değiştir"
+
+#: contrib/admin/templates/admin/index.html:44
+msgid "You don't have permission to edit anything."
+msgstr "Değiştirme yetkiniz yoktur."
+
+#: contrib/admin/templates/admin/index.html:52
+msgid "Recent Actions"
+msgstr "Son yapılanlar"
+
+#: contrib/admin/templates/admin/index.html:53
+msgid "My Actions"
+msgstr "Hareketlerim"
+
+#: contrib/admin/templates/admin/index.html:57
+msgid "None available"
+msgstr "Yok"
+
+#: contrib/admin/templates/admin/change_list.html:11
+#, python-format
+msgid "Add %(name)s"
+msgstr "%(name)s ekle"
+
+#: contrib/admin/templates/admin/login.html:22
+msgid "Have you forgotten your password?"
+msgstr "Şifremi unuttum"
+
+#: contrib/admin/templates/admin/base.html:23
+msgid "Welcome,"
+msgstr "Hoş geldiniz,"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:9
+#: contrib/admin/templates/admin/submit_line.html:3
+msgid "Delete"
+msgstr "Sil"
+
+#: 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 "%(object_name)s '%(object)s' silinmesi, ilgili nesnelerin silinmesini gerektirir, ancak şu nesneleri silmeye yetkiniz yoktur:"
+
+#: 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 "%(object_name)s \"%(object)s\" silmek istediğinizden emin misiniz? Şunların tamamı silinecektir:"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:26
+msgid "Yes, I'm sure"
+msgstr "Evet, eminim"
+
+#: contrib/admin/templates/admin/filter.html:2
+#, python-format
+msgid " By %(title)s "
+msgstr " By %(title)s "
+
+#: contrib/admin/templates/admin/search_form.html:8
+msgid "Go"
+msgstr "Yap"
+
+#: contrib/admin/templates/admin/change_form.html:21
+msgid "View on site"
+msgstr "Görüntüle"
+
+#: contrib/admin/templates/admin/change_form.html:30
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Aşağıdaki hatayı düzeltin."
+msgstr[1] "Aşağıdaki hataları düzeltin."
+
+#: contrib/admin/templates/admin/change_form.html:48
+msgid "Ordering"
+msgstr "Sıralama"
+
+#: contrib/admin/templates/admin/change_form.html:51
+msgid "Order:"
+msgstr "Sırala:"
+
+#: contrib/admin/templates/admin/submit_line.html:4
+msgid "Save as new"
+msgstr "Yeni olarak kaydet"
+
+#: contrib/admin/templates/admin/submit_line.html:5
+msgid "Save and add another"
+msgstr "Kaydet ve bir tane daha ekle"
+
+#: contrib/admin/templates/admin/submit_line.html:6
+msgid "Save and continue editing"
+msgstr "Kaydet ve düzenlemeye devam et"
+
+#: contrib/admin/templates/admin/submit_line.html:7
+msgid "Save"
+msgstr "Kaydet"
+
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_change_form.html:6
+#: contrib/admin/templates/registration/password_change_form.html:10
+msgid "Password change"
+msgstr "Şifre değişikliği"
+
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
+msgid "Password change successful"
+msgstr "Şifre değiştirilmiştir"
+
+#: contrib/admin/templates/registration/password_change_done.html:12
+msgid "Your password was changed."
+msgstr "Şifreniz değiştirilmiştir"
+
+#: contrib/admin/templates/registration/password_reset_form.html:4
+#: contrib/admin/templates/registration/password_reset_form.html:6
+#: contrib/admin/templates/registration/password_reset_form.html:10
+#: contrib/admin/templates/registration/password_reset_done.html:4
+msgid "Password reset"
+msgstr "Şifreyi resetle"
+
+#: 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 "Şifrenizi unuttuysanız, aşağıdaki alana e-posta adresinizi giriniz. Yeni bir şifre otomatik olarak üretilir ve e-posta ile gönderilir."
+
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "E-mail address:"
+msgstr "E-posta:"
+
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "Reset my password"
+msgstr "Şifremi resetle"
+
+#: contrib/admin/templates/registration/logged_out.html:8
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "Sitemizde zaman geçirdiğiniz için teşekkür ederiz."
+
+#: contrib/admin/templates/registration/logged_out.html:10
+msgid "Log in again"
+msgstr "Yeniden giriniz"
+
+#: contrib/admin/templates/registration/password_reset_done.html:6
+#: contrib/admin/templates/registration/password_reset_done.html:10
+msgid "Password reset successful"
+msgstr "Şifre resetlendi"
+
+#: 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."
+msgstr "Yeni şifre, verdiğiniz e-posta adresine gönderilmiştir."
+
+#: 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 "Güvenliğiniz için eski şifrenizi giriniz, daha sonra yeni şifrenizi iki kez giriniz."
+
+#: contrib/admin/templates/registration/password_change_form.html:17
+msgid "Old password:"
+msgstr "Eski şifre:"
+
+#: contrib/admin/templates/registration/password_change_form.html:19
+msgid "New password:"
+msgstr "Yeni şifre:"
+
+#: contrib/admin/templates/registration/password_change_form.html:21
+msgid "Confirm password:"
+msgstr "Yeni şifre (tekrar):"
+
+#: contrib/admin/templates/registration/password_change_form.html:23
+msgid "Change my password"
+msgstr "Şifremi değiştir"
+
+#: contrib/admin/templates/registration/password_reset_email.html:2
+msgid "You're receiving this e-mail because you requested a password reset"
+msgstr "Bu mektubu, %(site_name)s'daki kullanıcı hesabınız için yeni şifrenin"
+
+#: contrib/admin/templates/registration/password_reset_email.html:3
+#, python-format
+msgid "for your user account at %(site_name)s"
+msgstr "üretilmesini istediğiniz için aldınız"
+
+#: contrib/admin/templates/registration/password_reset_email.html:5
+#, python-format
+msgid "Your new password is: %(new_password)s"
+msgstr "Yeni şifreniz: %(new_password)s"
+
+#: contrib/admin/templates/registration/password_reset_email.html:7
+msgid "Feel free to change this password by going to this page:"
+msgstr "Şifrenizi şu sayfadan değiştirebilirsiniz:"
+
+#: contrib/admin/templates/registration/password_reset_email.html:11
+msgid "Your username, in case you've forgotten:"
+msgstr ""
+
+#: contrib/admin/templates/registration/password_reset_email.html:13
+msgid "Thanks for using our site!"
+msgstr ""
+
+#: contrib/admin/templates/registration/password_reset_email.html:15
+#, python-format
+msgid "The %(site_name)s team"
+msgstr ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Bookmarklets"
+msgstr ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:5
+msgid "Documentation bookmarklets"
+msgstr ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:9
+msgid ""
+"\n"
+"
To install bookmarklets, drag the link to your bookmarks\n"
+"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
+"select the bookmarklet from any page in the site. Note that some of these\n"
+"bookmarklets require you to be viewing the site from a computer designated\n"
+"as \"internal\" (talk to your system administrator if you aren't sure if\n"
+"your computer is \"internal\").
\n"
+msgstr ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:19
+msgid "Documentation for this page"
+msgstr ""
+
+#: 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 ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:22
+msgid "Show object ID"
+msgstr ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:23
+msgid ""
+"Shows the content-type and unique ID for pages that represent a single "
+"object."
+msgstr ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:25
+msgid "Edit this object (current window)"
+msgstr ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:26
+msgid "Jumps to the admin page for pages that represent a single object."
+msgstr ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:28
+msgid "Edit this object (new window)"
+msgstr ""
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:29
+msgid "As above, but opens the admin page in a new window."
+msgstr ""
+
+#: contrib/admin/templates/widget/date_time.html:3
+msgid "Date:"
+msgstr ""
+
+#: contrib/admin/templates/widget/date_time.html:4
+msgid "Time:"
+msgstr ""
+
+#: contrib/admin/templates/widget/file.html:2
+msgid "Currently:"
+msgstr ""
+
+#: contrib/admin/templates/widget/file.html:3
+msgid "Change:"
+msgstr ""
+
+#: contrib/redirects/models.py:7
+msgid "redirect from"
+msgstr ""
+
+#: contrib/redirects/models.py:8
+msgid ""
+"This should be an absolute path, excluding the domain name. Example: '/"
+"events/search/'."
+msgstr ""
+
+#: contrib/redirects/models.py:9
+msgid "redirect to"
+msgstr ""
+
+#: contrib/redirects/models.py:10
+msgid ""
+"This can be either an absolute path (as above) or a full URL starting with "
+"'http://'."
+msgstr ""
+
+#: contrib/redirects/models.py:12
+msgid "redirect"
+msgstr ""
+
+#: contrib/redirects/models.py:13
+msgid "redirects"
+msgstr ""
+
+#: contrib/flatpages/models.py:8
+msgid ""
+"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgstr ""
+
+#: contrib/flatpages/models.py:9
+msgid "title"
+msgstr ""
+
+#: contrib/flatpages/models.py:10
+msgid "content"
+msgstr ""
+
+#: contrib/flatpages/models.py:11
+msgid "enable comments"
+msgstr ""
+
+#: contrib/flatpages/models.py:12
+msgid "template name"
+msgstr ""
+
+#: contrib/flatpages/models.py:13
+msgid ""
+"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
+"use 'flatpages/default'."
+msgstr ""
+
+#: contrib/flatpages/models.py:14
+msgid "registration required"
+msgstr ""
+
+#: contrib/flatpages/models.py:14
+msgid "If this is checked, only logged-in users will be able to view the page."
+msgstr ""
+
+#: contrib/flatpages/models.py:18
+msgid "flat page"
+msgstr ""
+
+#: contrib/flatpages/models.py:19
+msgid "flat pages"
+msgstr ""
+
+#: contrib/auth/models.py:13 contrib/auth/models.py:26
+msgid "name"
+msgstr ""
+
+#: contrib/auth/models.py:15
+msgid "codename"
+msgstr ""
+
+#: contrib/auth/models.py:17
+msgid "permission"
+msgstr ""
+
+#: contrib/auth/models.py:18 contrib/auth/models.py:27
+msgid "permissions"
+msgstr ""
+
+#: contrib/auth/models.py:29
+msgid "group"
+msgstr ""
+
+#: contrib/auth/models.py:30 contrib/auth/models.py:65
+msgid "groups"
+msgstr ""
+
+#: contrib/auth/models.py:55
+msgid "username"
+msgstr ""
+
+#: contrib/auth/models.py:56
+msgid "first name"
+msgstr ""
+
+#: contrib/auth/models.py:57
+msgid "last name"
+msgstr ""
+
+#: contrib/auth/models.py:58
+msgid "e-mail address"
+msgstr ""
+
+#: contrib/auth/models.py:59
+msgid "password"
+msgstr ""
+
+#: contrib/auth/models.py:59
+msgid "Use '[algo]$[salt]$[hexdigest]'"
+msgstr ""
+
+#: contrib/auth/models.py:60
+msgid "staff status"
+msgstr ""
+
+#: contrib/auth/models.py:60
+msgid "Designates whether the user can log into this admin site."
+msgstr ""
+
+#: contrib/auth/models.py:61
+msgid "active"
+msgstr ""
+
+#: contrib/auth/models.py:62
+msgid "superuser status"
+msgstr ""
+
+#: contrib/auth/models.py:63
+msgid "last login"
+msgstr ""
+
+#: contrib/auth/models.py:64
+msgid "date joined"
+msgstr ""
+
+#: 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 ""
+
+#: contrib/auth/models.py:67
+msgid "user permissions"
+msgstr ""
+
+#: contrib/auth/models.py:70
+msgid "user"
+msgstr ""
+
+#: contrib/auth/models.py:71
+msgid "users"
+msgstr ""
+
+#: contrib/auth/models.py:76
+msgid "Personal info"
+msgstr ""
+
+#: contrib/auth/models.py:77
+msgid "Permissions"
+msgstr ""
+
+#: contrib/auth/models.py:78
+msgid "Important dates"
+msgstr ""
+
+#: contrib/auth/models.py:79
+msgid "Groups"
+msgstr ""
+
+#: contrib/auth/models.py:219
+msgid "message"
+msgstr ""
+
+#: contrib/auth/forms.py:30
+msgid ""
+"Your Web browser doesn't appear to have cookies enabled. Cookies are "
+"required for logging in."
+msgstr ""
+
+#: contrib/contenttypes/models.py:25
+msgid "python model class name"
+msgstr ""
+
+#: contrib/contenttypes/models.py:28
+msgid "content type"
+msgstr ""
+
+#: contrib/contenttypes/models.py:29
+msgid "content types"
+msgstr ""
+
+#: contrib/sessions/models.py:35
+msgid "session key"
+msgstr ""
+
+#: contrib/sessions/models.py:36
+msgid "session data"
+msgstr ""
+
+#: contrib/sessions/models.py:37
+msgid "expire date"
+msgstr ""
+
+#: contrib/sessions/models.py:41
+msgid "session"
+msgstr ""
+
+#: contrib/sessions/models.py:42
+msgid "sessions"
+msgstr ""
+
+#: contrib/sites/models.py:10
+msgid "domain name"
+msgstr ""
+
+#: contrib/sites/models.py:11
+msgid "display name"
+msgstr ""
+
+#: contrib/sites/models.py:15
+msgid "site"
+msgstr ""
+
+#: contrib/sites/models.py:16
+msgid "sites"
+msgstr ""
+
+#: utils/translation.py:360
+msgid "DATE_FORMAT"
+msgstr "j N Y"
+
+#: utils/translation.py:361
+msgid "DATETIME_FORMAT"
+msgstr "j N Y, H:i"
+
+#: utils/translation.py:362
+msgid "TIME_FORMAT"
+msgstr "H:i"
+
+#: utils/dates.py:6
+msgid "Monday"
+msgstr ""
+
+#: utils/dates.py:6
+msgid "Tuesday"
+msgstr ""
+
+#: utils/dates.py:6
+msgid "Wednesday"
+msgstr ""
+
+#: utils/dates.py:6
+msgid "Thursday"
+msgstr ""
+
+#: utils/dates.py:6
+msgid "Friday"
+msgstr ""
+
+#: utils/dates.py:7
+msgid "Saturday"
+msgstr ""
+
+#: utils/dates.py:7
+msgid "Sunday"
+msgstr ""
+
+#: utils/dates.py:14
+msgid "January"
+msgstr ""
+
+#: utils/dates.py:14
+msgid "February"
+msgstr ""
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "March"
+msgstr ""
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "April"
+msgstr ""
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "May"
+msgstr ""
+
+#: utils/dates.py:14 utils/dates.py:27
+msgid "June"
+msgstr ""
+
+#: utils/dates.py:15 utils/dates.py:27
+msgid "July"
+msgstr ""
+
+#: utils/dates.py:15
+msgid "August"
+msgstr ""
+
+#: utils/dates.py:15
+msgid "September"
+msgstr ""
+
+#: utils/dates.py:15
+msgid "October"
+msgstr ""
+
+#: utils/dates.py:15
+msgid "November"
+msgstr ""
+
+#: utils/dates.py:16
+msgid "December"
+msgstr ""
+
+#: utils/dates.py:19
+msgid "jan"
+msgstr ""
+
+#: utils/dates.py:19
+msgid "feb"
+msgstr ""
+
+#: utils/dates.py:19
+msgid "mar"
+msgstr ""
+
+#: utils/dates.py:19
+msgid "apr"
+msgstr ""
+
+#: utils/dates.py:19
+msgid "may"
+msgstr ""
+
+#: utils/dates.py:19
+msgid "jun"
+msgstr ""
+
+#: utils/dates.py:20
+msgid "jul"
+msgstr ""
+
+#: utils/dates.py:20
+msgid "aug"
+msgstr ""
+
+#: utils/dates.py:20
+msgid "sep"
+msgstr ""
+
+#: utils/dates.py:20
+msgid "oct"
+msgstr ""
+
+#: utils/dates.py:20
+msgid "nov"
+msgstr ""
+
+#: utils/dates.py:20
+msgid "dec"
+msgstr ""
+
+#: utils/dates.py:27
+msgid "Jan."
+msgstr ""
+
+#: utils/dates.py:27
+msgid "Feb."
+msgstr ""
+
+#: utils/dates.py:28
+msgid "Aug."
+msgstr ""
+
+#: utils/dates.py:28
+msgid "Sept."
+msgstr ""
+
+#: utils/dates.py:28
+msgid "Oct."
+msgstr ""
+
+#: utils/dates.py:28
+msgid "Nov."
+msgstr ""
+
+#: utils/dates.py:28
+msgid "Dec."
+msgstr ""
+
+#: utils/timesince.py:12
+msgid "year"
+msgid_plural "years"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/timesince.py:13
+msgid "month"
+msgid_plural "months"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/timesince.py:14
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/timesince.py:15
+msgid "day"
+msgid_plural "days"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/timesince.py:16
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/timesince.py:17
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: conf/global_settings.py:37
+msgid "Bengali"
+msgstr ""
+
+#: conf/global_settings.py:38
+msgid "Czech"
+msgstr ""
+
+#: conf/global_settings.py:39
+msgid "Welsh"
+msgstr ""
+
+#: conf/global_settings.py:40
+msgid "Danish"
+msgstr ""
+
+#: conf/global_settings.py:41
+msgid "German"
+msgstr ""
+
+#: conf/global_settings.py:42
+msgid "Greek"
+msgstr ""
+
+#: conf/global_settings.py:43
+msgid "English"
+msgstr ""
+
+#: conf/global_settings.py:44
+msgid "Spanish"
+msgstr ""
+
+#: conf/global_settings.py:45
+msgid "French"
+msgstr ""
+
+#: conf/global_settings.py:46
+msgid "Galician"
+msgstr ""
+
+#: conf/global_settings.py:47
+msgid "Hungarian"
+msgstr ""
+
+#: conf/global_settings.py:48
+msgid "Hebrew"
+msgstr ""
+
+#: conf/global_settings.py:49
+msgid "Icelandic"
+msgstr ""
+
+#: conf/global_settings.py:50
+msgid "Italian"
+msgstr ""
+
+#: conf/global_settings.py:51
+msgid "Japanese"
+msgstr ""
+
+#: conf/global_settings.py:52
+msgid "Dutch"
+msgstr ""
+
+#: conf/global_settings.py:53
+msgid "Norwegian"
+msgstr ""
+
+#: conf/global_settings.py:54
+msgid "Brazilian"
+msgstr ""
+
+#: conf/global_settings.py:55
+msgid "Romanian"
+msgstr ""
+
+#: conf/global_settings.py:56
+msgid "Russian"
+msgstr ""
+
+#: conf/global_settings.py:57
+msgid "Slovak"
+msgstr ""
+
+#: conf/global_settings.py:58
+msgid "Slovenian"
+msgstr ""
+
+#: conf/global_settings.py:59
+msgid "Serbian"
+msgstr ""
+
+#: conf/global_settings.py:60
+msgid "Swedish"
+msgstr ""
+
+#: conf/global_settings.py:61
+msgid "Ukrainian"
+msgstr ""
+
+#: conf/global_settings.py:62
+msgid "Simplified Chinese"
+msgstr ""
+
+#: conf/global_settings.py:63
+msgid "Traditional Chinese"
+msgstr ""
+
+#: core/validators.py:60
+msgid "This value must contain only letters, numbers and underscores."
+msgstr ""
+
+#: core/validators.py:64
+msgid ""
+"This value must contain only letters, numbers, underscores, dashes or "
+"slashes."
+msgstr ""
+
+#: core/validators.py:72
+msgid "Uppercase letters are not allowed here."
+msgstr ""
+
+#: core/validators.py:76
+msgid "Lowercase letters are not allowed here."
+msgstr ""
+
+#: core/validators.py:83
+msgid "Enter only digits separated by commas."
+msgstr ""
+
+#: core/validators.py:95
+msgid "Enter valid e-mail addresses separated by commas."
+msgstr ""
+
+#: core/validators.py:99
+msgid "Please enter a valid IP address."
+msgstr ""
+
+#: core/validators.py:103
+msgid "Empty values are not allowed here."
+msgstr ""
+
+#: core/validators.py:107
+msgid "Non-numeric characters aren't allowed here."
+msgstr ""
+
+#: core/validators.py:111
+msgid "This value can't be comprised solely of digits."
+msgstr ""
+
+#: core/validators.py:116
+msgid "Enter a whole number."
+msgstr ""
+
+#: core/validators.py:120
+msgid "Only alphabetical characters are allowed here."
+msgstr ""
+
+#: core/validators.py:124
+msgid "Enter a valid date in YYYY-MM-DD format."
+msgstr ""
+
+#: core/validators.py:128
+msgid "Enter a valid time in HH:MM format."
+msgstr ""
+
+#: core/validators.py:132 db/models/fields/__init__.py:468
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
+msgstr ""
+
+#: core/validators.py:136
+msgid "Enter a valid e-mail address."
+msgstr ""
+
+#: core/validators.py:148
+msgid ""
+"Upload a valid image. The file you uploaded was either not an image or a "
+"corrupted image."
+msgstr ""
+
+#: core/validators.py:155
+#, python-format
+msgid "The URL %s does not point to a valid image."
+msgstr ""
+
+#: core/validators.py:159
+#, python-format
+msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
+msgstr ""
+
+#: core/validators.py:167
+#, python-format
+msgid "The URL %s does not point to a valid QuickTime video."
+msgstr ""
+
+#: core/validators.py:171
+msgid "A valid URL is required."
+msgstr ""
+
+#: core/validators.py:185
+#, python-format
+msgid ""
+"Valid HTML is required. Specific errors are:\n"
+"%s"
+msgstr ""
+
+#: core/validators.py:192
+#, python-format
+msgid "Badly formed XML: %s"
+msgstr ""
+
+#: core/validators.py:202
+#, python-format
+msgid "Invalid URL: %s"
+msgstr ""
+
+#: core/validators.py:206 core/validators.py:208
+#, python-format
+msgid "The URL %s is a broken link."
+msgstr ""
+
+#: core/validators.py:214
+msgid "Enter a valid U.S. state abbreviation."
+msgstr ""
+
+#: core/validators.py:229
+#, python-format
+msgid "Watch your mouth! The word %s is not allowed here."
+msgid_plural "Watch your mouth! The words %s are not allowed here."
+msgstr[0] ""
+msgstr[1] ""
+
+#: core/validators.py:236
+#, python-format
+msgid "This field must match the '%s' field."
+msgstr ""
+
+#: core/validators.py:255
+msgid "Please enter something for at least one field."
+msgstr ""
+
+#: core/validators.py:264 core/validators.py:275
+msgid "Please enter both fields or leave them both empty."
+msgstr ""
+
+#: core/validators.py:282
+#, python-format
+msgid "This field must be given if %(field)s is %(value)s"
+msgstr ""
+
+#: core/validators.py:294
+#, python-format
+msgid "This field must be given if %(field)s is not %(value)s"
+msgstr ""
+
+#: core/validators.py:313
+msgid "Duplicate values are not allowed."
+msgstr ""
+
+#: core/validators.py:336
+#, python-format
+msgid "This value must be a power of %s."
+msgstr ""
+
+#: core/validators.py:347
+msgid "Please enter a valid decimal number."
+msgstr ""
+
+#: 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] ""
+msgstr[1] ""
+
+#: 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] ""
+msgstr[1] ""
+
+#: core/validators.py:362
+#, python-format
+msgid "Make sure your uploaded file is at least %s bytes big."
+msgstr ""
+
+#: core/validators.py:363
+#, python-format
+msgid "Make sure your uploaded file is at most %s bytes big."
+msgstr ""
+
+#: core/validators.py:376
+msgid "The format for this field is wrong."
+msgstr ""
+
+#: core/validators.py:391
+msgid "This field is invalid."
+msgstr ""
+
+#: core/validators.py:426
+#, python-format
+msgid "Could not retrieve anything from %s."
+msgstr ""
+
+#: core/validators.py:429
+#, python-format
+msgid ""
+"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
+msgstr ""
+
+#: core/validators.py:462
+#, python-format
+msgid ""
+"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
+"\"%(start)s\".)"
+msgstr ""
+
+#: 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 ""
+
+#: core/validators.py:471
+#, python-format
+msgid ""
+"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
+"(start)s\".)"
+msgstr ""
+
+#: core/validators.py:476
+#, python-format
+msgid ""
+"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
+"(start)s\".)"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: db/models/manipulators.py:302
+#, python-format
+msgid "%(object)s with this %(type)s already exists for the given %(field)s."
+msgstr ""
+
+#: db/models/fields/__init__.py:40
+#, python-format
+msgid "%(optname)s with this %(fieldname)s already exists."
+msgstr ""
+
+#: 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 ""
+
+#: db/models/fields/__init__.py:337
+msgid "This value must be an integer."
+msgstr ""
+
+#: db/models/fields/__init__.py:369
+msgid "This value must be either True or False."
+msgstr ""
+
+#: db/models/fields/__init__.py:385
+msgid "This field cannot be null."
+msgstr ""
+
+#: db/models/fields/__init__.py:562
+msgid "Enter a valid filename."
+msgstr ""
+
+#: db/models/fields/related.py:43
+#, python-format
+msgid "Please enter a valid %s."
+msgstr ""
+
+#: db/models/fields/related.py:579
+msgid "Separate multiple IDs with commas."
+msgstr ""
+
+#: db/models/fields/related.py:581
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr ""
+
+#: 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] ""
+msgstr[1] ""
+
+#: 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] ""
+msgstr[1] ""
+
+#: forms/__init__.py:385
+msgid "Line breaks are not allowed here."
+msgstr ""
+
+#: 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 ""
+
+#: forms/__init__.py:645
+msgid "The submitted file is empty."
+msgstr ""
+
+#: forms/__init__.py:699
+msgid "Enter a whole number between -32,768 and 32,767."
+msgstr ""
+
+#: forms/__init__.py:708
+msgid "Enter a positive number."
+msgstr ""
+
+#: forms/__init__.py:717
+msgid "Enter a whole number between 0 and 32,767."
+msgstr ""
+
+#: template/defaultfilters.py:379
+msgid "yes,no,maybe"
+msgstr ""
diff --git a/django/conf/locale/zh_CN/LC_MESSAGES/django.mo b/django/conf/locale/zh_CN/LC_MESSAGES/django.mo
index 9fc04b9395..0d6bf90c0e 100644
Binary files a/django/conf/locale/zh_CN/LC_MESSAGES/django.mo and b/django/conf/locale/zh_CN/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/zh_CN/LC_MESSAGES/django.po b/django/conf/locale/zh_CN/LC_MESSAGES/django.po
index 7718514299..2552b677bd 100644
--- a/django/conf/locale/zh_CN/LC_MESSAGES/django.po
+++ b/django/conf/locale/zh_CN/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: django v1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-05-16 10:10+0200\n"
-"PO-Revision-Date: 2006-05-17 13:47+0800\n"
+"PO-Revision-Date: 2006-09-01 22:05+0800\n"
"Last-Translator: limodou \n"
"Language-Team: Simplified Chinese \n"
"MIME-Version: 1.0\n"
@@ -1167,7 +1167,7 @@ msgstr "个人信息"
#: contrib/auth/models.py:77
msgid "Permissions"
-msgstr "许可"
+msgstr "权限"
#: contrib/auth/models.py:78
msgid "Important dates"
diff --git a/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.mo b/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.mo
index 983a8a7154..ec7580a862 100644
Binary files a/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.mo and b/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.mo differ
diff --git a/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.po b/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.po
index 1e9e7dbeb7..610e61d17a 100644
--- a/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.po
+++ b/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.po
@@ -3,22 +3,21 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR , YEAR.
#
-#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: Django 0.95\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-03-21 18:43+0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
-"Language-Team: LANGUAGE \n"
+"PO-Revision-Date: 2006-09-25 08:35+0800\n"
+"Last-Translator: limodou \n"
+"Language-Team: limodou \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: contrib/admin/media/js/SelectFilter2.js:33
msgid "Available %s"
-msgstr "可行 %s"
+msgstr "可用 %s"
#: contrib/admin/media/js/SelectFilter2.js:41
msgid "Choose all"
@@ -30,34 +29,32 @@ msgstr "增加"
#: contrib/admin/media/js/SelectFilter2.js:48
msgid "Remove"
-msgstr "移出"
+msgstr "删除"
#: contrib/admin/media/js/SelectFilter2.js:53
msgid "Chosen %s"
-msgstr "选择 %s"
+msgstr "选中的 %s"
#: contrib/admin/media/js/SelectFilter2.js:54
msgid "Select your choice(s) and click "
-msgstr "挑选你的选择并且点击 "
+msgstr "选择并点击 "
#: contrib/admin/media/js/SelectFilter2.js:59
msgid "Clear all"
-msgstr "清除所有"
+msgstr "清除全部"
#: contrib/admin/media/js/dateparse.js:32
#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
+msgid "January February March April May June July August September October November December"
msgstr "一月 二月 三月 四月 五月 六月 六月 七月 八月 九月 十月 十一月 十二月"
#: contrib/admin/media/js/dateparse.js:33
msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "星期天 星期一 星期二 星期三 星期四 星期五 星期六"
+msgstr "星期日 星期一 星期二 星期三 星期四 星期五 星期六"
#: contrib/admin/media/js/calendar.js:25
msgid "S M T W T F S"
-msgstr "日 月 火 水 木 金 土"
+msgstr "日 一 二 三 四 五 六"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
@@ -105,3 +102,4 @@ msgstr "昨天"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
msgid "Tomorrow"
msgstr "明天"
+
diff --git a/django/contrib/admin/templatetags/admin_modify.py b/django/contrib/admin/templatetags/admin_modify.py
index 55d8bb2b95..875e61f959 100644
--- a/django/contrib/admin/templatetags/admin_modify.py
+++ b/django/contrib/admin/templatetags/admin_modify.py
@@ -160,8 +160,10 @@ class EditInlineNode(template.Node):
context.push()
if relation.field.rel.edit_inline == models.TABULAR:
bound_related_object_class = TabularBoundRelatedObject
- else:
+ elif relation.field.rel.edit_inline == models.STACKED:
bound_related_object_class = StackedBoundRelatedObject
+ else:
+ bound_related_object_class = relation.field.rel.edit_inline
original = context.get('original', None)
bound_related_object = relation.bind(context['form'], original, bound_related_object_class)
context['bound_related_object'] = bound_related_object
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index 7c942ca5b8..38d64bd73b 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -727,6 +727,8 @@ class ChangeList(object):
for bit in self.query.split():
or_queries = [models.Q(**{construct_search(field_name): bit}) for field_name in self.lookup_opts.admin.search_fields]
other_qs = QuerySet(self.model)
+ if qs._select_related:
+ other_qs = other_qs.select_related()
other_qs = other_qs.filter(reduce(operator.or_, or_queries))
qs = qs & other_qs
diff --git a/django/contrib/auth/decorators.py b/django/contrib/auth/decorators.py
index 0102496a33..8164d8314e 100644
--- a/django/contrib/auth/decorators.py
+++ b/django/contrib/auth/decorators.py
@@ -26,3 +26,11 @@ login_required.__doc__ = (
to the log-in page if necessary.
"""
)
+
+def permission_required(perm, login_url=LOGIN_URL):
+ """
+ Decorator for views that checks if a user has a particular permission
+ enabled, redirectiing to the log-in page if necessary.
+ """
+ return user_passes_test(lambda u: u.has_perm(perm), login_url=login_url)
+
diff --git a/django/contrib/auth/forms.py b/django/contrib/auth/forms.py
index ad8d423ebf..206cd06e06 100644
--- a/django/contrib/auth/forms.py
+++ b/django/contrib/auth/forms.py
@@ -81,7 +81,7 @@ class PasswordResetForm(forms.Manipulator):
try:
self.user_cache = User.objects.get(email__iexact=new_data)
except User.DoesNotExist:
- raise validators.ValidationError, "That e-mail address doesn't have an associated user acount. Are you sure you've registered?"
+ 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, email_template_name='registration/password_reset_email.html'):
"Calculates a new password randomly and sends it to the user"
@@ -113,14 +113,14 @@ class PasswordChangeForm(forms.Manipulator):
forms.PasswordField(field_name="old_password", length=30, maxlength=30, is_required=True,
validator_list=[self.isValidOldPassword]),
forms.PasswordField(field_name="new_password1", length=30, maxlength=30, is_required=True,
- validator_list=[validators.AlwaysMatchesOtherField('new_password2', "The two 'new password' fields didn't match.")]),
+ validator_list=[validators.AlwaysMatchesOtherField('new_password2', _("The two 'new password' fields didn't match."))]),
forms.PasswordField(field_name="new_password2", length=30, maxlength=30, is_required=True),
)
def isValidOldPassword(self, new_data, all_data):
"Validates that the old_password field is correct."
if not self.user.check_password(new_data):
- raise validators.ValidationError, "Your old password was entered incorrectly. Please enter it again."
+ raise validators.ValidationError, _("Your old password was entered incorrectly. Please enter it again.")
def save(self, new_data):
"Saves the new password."
diff --git a/django/contrib/auth/handlers/modpython.py b/django/contrib/auth/handlers/modpython.py
index e6719794a1..c7d921313d 100644
--- a/django/contrib/auth/handlers/modpython.py
+++ b/django/contrib/auth/handlers/modpython.py
@@ -22,6 +22,8 @@ def authenhandler(req, **kwargs):
os.environ['DJANGO_SETTINGS_MODULE'] = settings_module
from django.contrib.auth.models import User
+ from django import db
+ db.reset_queries()
# check that the username is valid
kwargs = {'username': req.user, 'is_active': True}
@@ -30,18 +32,21 @@ def authenhandler(req, **kwargs):
if superuser_only:
kwargs['is_superuser'] = True
try:
- user = User.objects.get(**kwargs)
- except User.DoesNotExist:
- return apache.HTTP_UNAUTHORIZED
-
- # check the password and any permission given
- if user.check_password(req.get_basic_auth_pw()):
- if permission_name:
- if user.has_perm(permission_name):
- return apache.OK
+ try:
+ user = User.objects.get(**kwargs)
+ except User.DoesNotExist:
+ return apache.HTTP_UNAUTHORIZED
+
+ # check the password and any permission given
+ if user.check_password(req.get_basic_auth_pw()):
+ if permission_name:
+ if user.has_perm(permission_name):
+ return apache.OK
+ else:
+ return apache.HTTP_UNAUTHORIZED
else:
- return apache.HTTP_UNAUTHORIZED
+ return apache.OK
else:
- return apache.OK
- else:
- return apache.HTTP_UNAUTHORIZED
+ return apache.HTTP_UNAUTHORIZED
+ finally:
+ db.connection.close()
diff --git a/django/core/context_processors.py b/django/core/context_processors.py
index 2ae9a6d972..f4b288dfc4 100644
--- a/django/core/context_processors.py
+++ b/django/core/context_processors.py
@@ -51,15 +51,19 @@ def request(request):
class PermLookupDict(object):
def __init__(self, user, module_name):
self.user, self.module_name = user, module_name
+
def __repr__(self):
- return str(self.user.get_permission_list())
+ return str(self.user.get_all_permissions())
+
def __getitem__(self, perm_name):
return self.user.has_perm("%s.%s" % (self.module_name, perm_name))
+
def __nonzero__(self):
return self.user.has_module_perms(self.module_name)
class PermWrapper(object):
def __init__(self, user):
self.user = user
+
def __getitem__(self, module_name):
return PermLookupDict(self.user, module_name)
diff --git a/django/core/handlers/modpython.py b/django/core/handlers/modpython.py
index 07c98e3b59..41d9a578c5 100644
--- a/django/core/handlers/modpython.py
+++ b/django/core/handlers/modpython.py
@@ -16,9 +16,26 @@ class ModPythonRequest(http.HttpRequest):
self.path = req.uri
def __repr__(self):
+ # Since this is called as part of error handling, we need to be very
+ # robust against potentially malformed input.
+ try:
+ get = pformat(self.GET)
+ except:
+ get = ''
+ try:
+ post = pformat(self.POST)
+ except:
+ post = ''
+ try:
+ cookies = pformat(self.COOKIES)
+ except:
+ cookies = ''
+ try:
+ meta = pformat(self.META)
+ except:
+ meta = ''
return '' % \
- (self.path, pformat(self.GET), pformat(self.POST), pformat(self.COOKIES),
- pformat(self.META))
+ (self.path, get, post, cookies, meta)
def get_full_path(self):
return '%s%s' % (self.path, self._req.args and ('?' + self._req.args) or '')
@@ -155,8 +172,11 @@ def populate_apache_request(http_response, mod_python_req):
for c in http_response.cookies.values():
mod_python_req.headers_out.add('Set-Cookie', c.output(header=''))
mod_python_req.status = http_response.status_code
- for chunk in http_response.iterator:
- mod_python_req.write(chunk)
+ try:
+ for chunk in http_response:
+ mod_python_req.write(chunk)
+ finally:
+ http_response.close()
def handler(req):
# mod_python hooks into this function.
diff --git a/django/core/handlers/wsgi.py b/django/core/handlers/wsgi.py
index 5c48c9dace..85e234c8d2 100644
--- a/django/core/handlers/wsgi.py
+++ b/django/core/handlers/wsgi.py
@@ -4,6 +4,11 @@ from django.dispatch import dispatcher
from django.utils import datastructures
from django import http
from pprint import pformat
+from shutil import copyfileobj
+try:
+ from cStringIO import StringIO
+except ImportError:
+ from StringIO import StringIO
# See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
STATUS_CODE_TEXT = {
@@ -50,6 +55,21 @@ STATUS_CODE_TEXT = {
505: 'HTTP VERSION NOT SUPPORTED',
}
+def safe_copyfileobj(fsrc, fdst, length=16*1024, size=0):
+ """
+ A version of shutil.copyfileobj that will not read more than 'size' bytes.
+ This makes it safe from clients sending more than CONTENT_LENGTH bytes of
+ data in the body.
+ """
+ if not size:
+ return copyfileobj(fsrc, fdst, length)
+ while size > 0:
+ buf = fsrc.read(min(length, size))
+ if not buf:
+ break
+ fdst.write(buf)
+ size -= len(buf)
+
class WSGIRequest(http.HttpRequest):
def __init__(self, environ):
self.environ = environ
@@ -58,9 +78,26 @@ class WSGIRequest(http.HttpRequest):
self.method = environ['REQUEST_METHOD'].upper()
def __repr__(self):
+ # Since this is called as part of error handling, we need to be very
+ # robust against potentially malformed input.
+ try:
+ get = pformat(self.GET)
+ except:
+ get = ''
+ try:
+ post = pformat(self.POST)
+ except:
+ post = ''
+ try:
+ cookies = pformat(self.COOKIES)
+ except:
+ cookies = ''
+ try:
+ meta = pformat(self.META)
+ except:
+ meta = ''
return '' % \
- (pformat(self.GET), pformat(self.POST), pformat(self.COOKIES),
- pformat(self.META))
+ (get, post, cookies, meta)
def get_full_path(self):
return '%s%s' % (self.path, self.environ.get('QUERY_STRING', '') and ('?' + self.environ.get('QUERY_STRING', '')) or '')
@@ -119,7 +156,11 @@ class WSGIRequest(http.HttpRequest):
try:
return self._raw_post_data
except AttributeError:
- self._raw_post_data = self.environ['wsgi.input'].read(int(self.environ["CONTENT_LENGTH"]))
+ buf = StringIO()
+ content_length = int(self.environ['CONTENT_LENGTH'])
+ safe_copyfileobj(self.environ['wsgi.input'], buf, size=content_length)
+ self._raw_post_data = buf.getvalue()
+ buf.close()
return self._raw_post_data
GET = property(_get_get, _set_get)
@@ -163,4 +204,4 @@ class WSGIHandler(BaseHandler):
for c in response.cookies.values():
response_headers.append(('Set-Cookie', c.output(header='')))
start_response(status, response_headers)
- return response.iterator
+ return response
diff --git a/django/core/management.py b/django/core/management.py
index 16c9d6b693..87e5053791 100644
--- a/django/core/management.py
+++ b/django/core/management.py
@@ -347,7 +347,7 @@ def get_sql_initial_data_for_model(model):
os.path.join(app_dir, "%s.sql" % opts.object_name.lower())]
for sql_file in sql_files:
if os.path.exists(sql_file):
- fp = open(sql_file)
+ fp = open(sql_file, 'U')
for statement in statements.split(fp.read()):
if statement.strip():
output.append(statement + ";")
@@ -958,7 +958,8 @@ def get_validation_errors(outfile, app=None):
try:
f = opts.get_field(fn)
except models.FieldDoesNotExist:
- e.add(opts, '"admin.list_filter" refers to %r, which isn\'t a field.' % fn)
+ if not hasattr(cls, fn):
+ e.add(opts, '"admin.list_display_links" refers to %r, which isn\'t an attribute, method or property.' % fn)
if fn not in opts.admin.list_display:
e.add(opts, '"admin.list_display_links" refers to %r, which is not defined in "admin.list_display".' % fn)
# list_filter
@@ -1016,10 +1017,12 @@ def get_validation_errors(outfile, app=None):
return len(e.errors)
-def validate(outfile=sys.stdout):
+def validate(outfile=sys.stdout, silent_success=False):
"Validates all installed models."
try:
num_errors = get_validation_errors(outfile)
+ if silent_success and num_errors == 0:
+ return
outfile.write('%s error%s found.\n' % (num_errors, num_errors != 1 and 's' or ''))
except ImproperlyConfigured:
outfile.write("Skipping validation because things aren't configured properly.")
@@ -1042,7 +1045,7 @@ def _check_for_validation_errors(app=None):
sys.stderr.write(s.read())
sys.exit(1)
-def runserver(addr, port, use_reloader=True):
+def runserver(addr, port, use_reloader=True, admin_media_dir=''):
"Starts a lightweight Web server for development."
from django.core.servers.basehttp import run, AdminMediaHandler, WSGIServerException
from django.core.handlers.wsgi import WSGIHandler
@@ -1060,7 +1063,10 @@ def runserver(addr, port, use_reloader=True):
print "Development server is running at http://%s:%s/" % (addr, port)
print "Quit the server with %s." % quit_command
try:
- run(addr, int(port), AdminMediaHandler(WSGIHandler()))
+ import django
+ path = admin_media_dir or django.__path__[0] + '/contrib/admin/media'
+ handler = AdminMediaHandler(WSGIHandler(), path)
+ run(addr, int(port), handler)
except WSGIServerException, e:
# Use helpful error messages instead of ugly tracebacks.
ERRORS = {
@@ -1081,7 +1087,7 @@ def runserver(addr, port, use_reloader=True):
autoreload.main(inner_run)
else:
inner_run()
-runserver.args = '[--noreload] [optional port number, or ipaddr:port]'
+runserver.args = '[--noreload] [--adminmedia=ADMIN_MEDIA_PATH] [optional port number, or ipaddr:port]'
def createcachetable(tablename):
"Creates the table needed to use the SQL cache backend"
@@ -1267,7 +1273,8 @@ def execute_from_command_line(action_mapping=DEFAULT_ACTION_MAPPING, argv=None):
help='Tells Django to NOT use the auto-reloader when running the development server.')
parser.add_option('--verbosity', action='store', dest='verbosity', default='2',
type='choice', choices=['0', '1', '2'],
- help='Verbosity level; 0=minimal output, 1=normal output, 2=all output')
+ help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
+ parser.add_option('--adminmedia', dest='admin_media_path', default='', help='Lets you manually specify the directory to serve admin media from when running the development server.'),
options, args = parser.parse_args(argv[1:])
@@ -1331,11 +1338,12 @@ def execute_from_command_line(action_mapping=DEFAULT_ACTION_MAPPING, argv=None):
addr, port = args[1].split(':')
except ValueError:
addr, port = '', args[1]
- action_mapping[action](addr, port, options.use_reloader)
+ action_mapping[action](addr, port, options.use_reloader, options.admin_media_path)
elif action == 'runfcgi':
action_mapping[action](args[1:])
else:
from django.db import models
+ validate(silent_success=True)
try:
mod_list = [models.get_app(app_label) for app_label in args[1:]]
except ImportError, e:
diff --git a/django/core/serializers/json.py b/django/core/serializers/json.py
index 72234a624b..15770f160e 100644
--- a/django/core/serializers/json.py
+++ b/django/core/serializers/json.py
@@ -16,7 +16,7 @@ class Serializer(PythonSerializer):
Convert a queryset to JSON.
"""
def end_serialization(self):
- simplejson.dump(self.objects, self.stream, cls=DateTimeAwareJSONEncoder)
+ simplejson.dump(self.objects, self.stream, cls=DateTimeAwareJSONEncoder, **self.options)
def getvalue(self):
return self.stream.getvalue()
diff --git a/django/core/servers/basehttp.py b/django/core/servers/basehttp.py
index 4bd0e50e53..fe534d5da0 100644
--- a/django/core/servers/basehttp.py
+++ b/django/core/servers/basehttp.py
@@ -594,11 +594,14 @@ class AdminMediaHandler(object):
Use this ONLY LOCALLY, for development! This hasn't been tested for
security and is not super efficient.
"""
- def __init__(self, application):
+ def __init__(self, application, media_dir = None):
from django.conf import settings
- import django
self.application = application
- self.media_dir = django.__path__[0] + '/contrib/admin/media'
+ if not media_dir:
+ import django
+ self.media_dir = django.__path__[0] + '/contrib/admin/media'
+ else:
+ self.media_dir = media_dir
self.media_url = settings.ADMIN_MEDIA_PREFIX
def __call__(self, environ, start_response):
diff --git a/django/core/servers/fastcgi.py b/django/core/servers/fastcgi.py
index 7377bed1c5..c6507fe173 100644
--- a/django/core/servers/fastcgi.py
+++ b/django/core/servers/fastcgi.py
@@ -74,7 +74,7 @@ def fastcgi_help(message=None):
print message
return False
-def runfastcgi(argset, **kwargs):
+def runfastcgi(argset=[], **kwargs):
options = FASTCGI_OPTIONS.copy()
options.update(kwargs)
for x in argset:
diff --git a/django/core/validators.py b/django/core/validators.py
index 8f40ceb51a..f2f3f44914 100644
--- a/django/core/validators.py
+++ b/django/core/validators.py
@@ -13,7 +13,7 @@ from django.utils.translation import gettext, gettext_lazy, ngettext
from django.utils.functional import Promise, lazy
import re
-_datere = r'(19|2\d)\d{2}-((?:0?[1-9])|(?:1[0-2]))-((?:0?[1-9])|(?:[12][0-9])|(?:3[0-1]))'
+_datere = r'\d{4}-\d{1,2}-\d{1,2}'
_timere = r'(?:[01]?[0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?'
alnum_re = re.compile(r'^\w+$')
alnumurl_re = re.compile(r'^[-\w/]+$')
@@ -122,9 +122,29 @@ def isOnlyLetters(field_data, all_data):
if not field_data.isalpha():
raise ValidationError, gettext("Only alphabetical characters are allowed here.")
+def _isValidDate(date_string):
+ """
+ A helper function used by isValidANSIDate and isValidANSIDatetime to
+ check if the date is valid. The date string is assumed to already be in
+ YYYY-MM-DD format.
+ """
+ from datetime import date
+ # Could use time.strptime here and catch errors, but datetime.date below
+ # produces much friendlier error messages.
+ year, month, day = map(int, date_string.split('-'))
+ # This check is needed because strftime is used when saving the date
+ # value to the database, and strftime requires that the year be >=1900.
+ if year < 1900:
+ raise ValidationError, gettext('Year must be 1900 or later.')
+ try:
+ date(year, month, day)
+ except ValueError, e:
+ raise ValidationError, gettext('Invalid date: %s.' % e)
+
def isValidANSIDate(field_data, all_data):
if not ansi_date_re.search(field_data):
raise ValidationError, gettext('Enter a valid date in YYYY-MM-DD format.')
+ _isValidDate(field_data)
def isValidANSITime(field_data, all_data):
if not ansi_time_re.search(field_data):
@@ -133,6 +153,7 @@ def isValidANSITime(field_data, all_data):
def isValidANSIDatetime(field_data, all_data):
if not ansi_datetime_re.search(field_data):
raise ValidationError, gettext('Enter a valid date/time in YYYY-MM-DD HH:MM format.')
+ _isValidDate(field_data.split()[0])
def isValidEmail(field_data, all_data):
if not email_re.search(field_data):
@@ -227,9 +248,8 @@ def hasNoProfanities(field_data, all_data):
catch 'motherfucker' as well. Raises a ValidationError such as:
Watch your mouth! The words "f--k" and "s--t" are not allowed here.
"""
- bad_words = ['asshat', 'asshead', 'asshole', 'cunt', 'fuck', 'gook', 'nigger', 'shit'] # all in lower case
field_data = field_data.lower() # normalize
- words_seen = [w for w in bad_words if field_data.find(w) > -1]
+ words_seen = [w for w in settings.PROFANITIES_LIST if field_data.find(w) > -1]
if words_seen:
from django.utils.text import get_text_list
plural = len(words_seen) > 1
@@ -352,10 +372,12 @@ class IsValidFloat(object):
float(data)
except ValueError:
raise ValidationError, gettext("Please enter a valid decimal number.")
- if len(data) > (self.max_digits + 1):
+ # Negative floats require more space to input.
+ max_allowed_length = data.startswith('-') and (self.max_digits + 2) or (self.max_digits + 1)
+ if len(data) > max_allowed_length:
raise ValidationError, ngettext("Please enter a valid decimal number with at most %s total digit.",
"Please enter a valid decimal number with at most %s total digits.", self.max_digits) % self.max_digits
- if (not '.' in data and len(data) > (self.max_digits - self.decimal_places)) or ('.' in data and len(data) > (self.max_digits - (self.decimal_places - len(data.split('.')[1])) + 1)):
+ if (not '.' in data and len(data) > (max_allowed_length - self.decimal_places)) or ('.' in data and len(data) > (self.max_digits - (self.decimal_places - len(data.split('.')[1])) + 1)):
raise ValidationError, ngettext( "Please enter a valid decimal number with a whole part of at most %s digit.",
"Please enter a valid decimal number with a whole part of at most %s digits.", str(self.max_digits-self.decimal_places)) % str(self.max_digits-self.decimal_places)
if '.' in data and len(data.split('.')[1]) > self.decimal_places:
diff --git a/django/core/xheaders.py b/django/core/xheaders.py
index e173bcbca8..69f6115839 100644
--- a/django/core/xheaders.py
+++ b/django/core/xheaders.py
@@ -13,9 +13,10 @@ def populate_xheaders(request, response, model, object_id):
"""
Adds the "X-Object-Type" and "X-Object-Id" headers to the given
HttpResponse according to the given model and object_id -- but only if the
- given HttpRequest object has an IP address within the INTERNAL_IPS setting.
+ given HttpRequest object has an IP address within the INTERNAL_IPS setting
+ or if the request is from a logged in staff member.
"""
from django.conf import settings
- if request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS:
+ if request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS or (request.user.is_authenticated() and request.user.is_staff):
response['X-Object-Type'] = "%s.%s" % (model._meta.app_label, model._meta.object_name.lower())
response['X-Object-Id'] = str(object_id)
diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py
index a3e8f0d584..3fe7eb43ac 100644
--- a/django/db/backends/sqlite3/base.py
+++ b/django/db/backends/sqlite3/base.py
@@ -4,10 +4,18 @@ SQLite3 backend for django. Requires pysqlite2 (http://pysqlite.org/).
from django.db.backends import util
try:
- from pysqlite2 import dbapi2 as Database
+ try:
+ from sqlite3 import dbapi2 as Database
+ except ImportError:
+ from pysqlite2 import dbapi2 as Database
except ImportError, e:
+ import sys
from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured, "Error loading pysqlite2 module: %s" % e
+ if sys.version_info < (2, 5, 0):
+ module = 'pysqlite2'
+ else:
+ module = 'sqlite3'
+ raise ImproperlyConfigured, "Error loading %s module: %s" % (module, e)
DatabaseError = Database.DatabaseError
diff --git a/django/db/backends/util.py b/django/db/backends/util.py
index 88318941c8..3ec1b41485 100644
--- a/django/db/backends/util.py
+++ b/django/db/backends/util.py
@@ -110,9 +110,11 @@ def dictfetchone(cursor):
def dictfetchmany(cursor, number):
"Returns a certain number of rows from a cursor as a dict"
desc = cursor.description
- return [_dict_helper(desc, row) for row in cursor.fetchmany(number)]
+ for row in cursor.fetchmany(number):
+ yield _dict_helper(desc, row)
def dictfetchall(cursor):
"Returns all rows from a cursor as a dict"
desc = cursor.description
- return [_dict_helper(desc, row) for row in cursor.fetchall()]
+ for row in cursor.fetchall():
+ yield _dict_helper(desc, row)
diff --git a/django/db/models/fields/generic.py b/django/db/models/fields/generic.py
index 5f4de40e69..7d7651029c 100644
--- a/django/db/models/fields/generic.py
+++ b/django/db/models/fields/generic.py
@@ -117,7 +117,7 @@ class GenericRelation(RelatedField, Field):
return self.object_id_field_name
def m2m_reverse_name(self):
- return self.model._meta.pk.attname
+ return self.object_id_field_name
def contribute_to_class(self, cls, name):
super(GenericRelation, self).contribute_to_class(cls, name)
diff --git a/django/db/models/manipulators.py b/django/db/models/manipulators.py
index b0ce48dec5..faf453b86b 100644
--- a/django/db/models/manipulators.py
+++ b/django/db/models/manipulators.py
@@ -215,8 +215,8 @@ class AutomaticManipulator(forms.Manipulator):
# Save many-to-many objects.
for f in related.opts.many_to_many:
if child_follow.get(f.name, None) and not f.rel.edit_inline:
- was_changed = getattr(new_rel_obj, 'set_%s' % f.name)(rel_new_data[f.attname])
- if self.change and was_changed:
+ setattr(new_rel_obj, f.name, f.rel.to.objects.filter(pk__in=rel_new_data[f.attname]))
+ if self.change:
self.fields_changed.append('%s for %s "%s"' % (f.verbose_name, related.opts.verbose_name, new_rel_obj))
# If, in the change stage, all of the core fields were blank and
diff --git a/django/db/models/query.py b/django/db/models/query.py
index 0b85c3f515..eb4b3b63ae 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -712,14 +712,10 @@ def parse_lookup(kwarg_items, opts):
# Extract the last elements of the kwarg.
# The very-last is the lookup_type (equals, like, etc).
# The second-last is the table column on which the lookup_type is
- # to be performed.
- # The exceptions to this are:
- # 1) "pk", which is an implicit id__exact;
- # if we find "pk", make the lookup_type "exact', and insert
- # a dummy name of None, which we will replace when
- # we know which table column to grab as the primary key.
- # 2) If there is only one part, or the last part is not a query
- # term, assume that the query is an __exact
+ # to be performed. If this name is 'pk', it will be substituted with
+ # the name of the primary key.
+ # If there is only one part, or the last part is not a query
+ # term, assume that the query is an __exact
lookup_type = path.pop()
if lookup_type == 'pk':
lookup_type = 'exact'
@@ -766,7 +762,7 @@ def lookup_inner(path, lookup_type, value, opts, table, column):
name = path.pop(0)
# Has the primary key been requested? If so, expand it out
# to be the name of the current class' primary key
- if name is None:
+ if name is None or name == 'pk':
name = current_opts.pk.name
# Try to find the name in the fields associated with the current class
diff --git a/django/forms/__init__.py b/django/forms/__init__.py
index 730f7a54da..759a32ba81 100644
--- a/django/forms/__init__.py
+++ b/django/forms/__init__.py
@@ -2,7 +2,7 @@ from django.core import validators
from django.core.exceptions import PermissionDenied
from django.utils.html import escape
from django.conf import settings
-from django.utils.translation import gettext, gettext_lazy, ngettext
+from django.utils.translation import gettext, ngettext
FORM_FIELD_ID_PREFIX = 'id_'
@@ -343,7 +343,7 @@ class FormField(object):
def get_validation_errors(self, new_data):
errors = {}
if self.is_required and not new_data.get(self.field_name, False):
- errors.setdefault(self.field_name, []).append(gettext_lazy('This field is required.'))
+ errors.setdefault(self.field_name, []).append(gettext('This field is required.'))
return errors
try:
for validator in self.validator_list:
@@ -434,11 +434,11 @@ class HiddenField(FormField):
(self.get_id(), self.field_name, escape(data))
class CheckboxField(FormField):
- def __init__(self, field_name, checked_by_default=False, validator_list=None):
+ def __init__(self, field_name, checked_by_default=False, validator_list=None, is_required=False):
if validator_list is None: validator_list = []
self.field_name = field_name
self.checked_by_default = checked_by_default
- self.is_required = False # because the validator looks for these
+ self.is_required = is_required
self.validator_list = validator_list[:]
def render(self, data):
@@ -639,8 +639,8 @@ class CheckboxSelectMultipleField(SelectMultipleField):
checked_html = ' checked="checked"'
field_name = '%s%s' % (self.field_name, value)
output.append('
')
return '\n'.join(output)
@@ -743,7 +743,7 @@ class FloatField(TextField):
if validator_list is None: validator_list = []
self.max_digits, self.decimal_places = max_digits, decimal_places
validator_list = [self.isValidFloat] + validator_list
- TextField.__init__(self, field_name, max_digits+1, max_digits+1, is_required, validator_list)
+ TextField.__init__(self, field_name, max_digits+2, max_digits+2, is_required, validator_list)
def isValidFloat(self, field_data, all_data):
v = validators.IsValidFloat(self.max_digits, self.decimal_places)
@@ -952,10 +952,7 @@ class USStateField(TextField):
raise validators.CriticalValidationError, e.messages
def html2python(data):
- if data:
- return data.upper() # Should always be stored in upper case
- else:
- return None
+ return data.upper() # Should always be stored in upper case
html2python = staticmethod(html2python)
class CommaSeparatedIntegerField(TextField):
@@ -972,9 +969,19 @@ class CommaSeparatedIntegerField(TextField):
except validators.ValidationError, e:
raise validators.CriticalValidationError, e.messages
+ def render(self, data):
+ if data is None:
+ data = ''
+ elif isinstance(data, (list, tuple)):
+ data = ','.join(data)
+ return super(CommaSeparatedIntegerField, self).render(data)
+
class RawIdAdminField(CommaSeparatedIntegerField):
def html2python(data):
- return data.split(',')
+ if data:
+ return data.split(',')
+ else:
+ return []
html2python = staticmethod(html2python)
class XMLLargeTextField(LargeTextField):
diff --git a/django/http/__init__.py b/django/http/__init__.py
index c4ac302ec5..bb0e973aae 100644
--- a/django/http/__init__.py
+++ b/django/http/__init__.py
@@ -161,10 +161,10 @@ class HttpResponse(object):
if not mimetype:
mimetype = "%s; charset=%s" % (settings.DEFAULT_CONTENT_TYPE, settings.DEFAULT_CHARSET)
if hasattr(content, '__iter__'):
- self._iterator = content
+ self._container = content
self._is_string = False
else:
- self._iterator = [content]
+ self._container = [content]
self._is_string = True
self.headers = {'Content-Type': mimetype}
self.cookies = SimpleCookie()
@@ -213,32 +213,37 @@ class HttpResponse(object):
self.cookies[key]['max-age'] = 0
def _get_content(self):
- content = ''.join(self._iterator)
+ content = ''.join(self._container)
if isinstance(content, unicode):
content = content.encode(self._charset)
return content
def _set_content(self, value):
- self._iterator = [value]
+ self._container = [value]
self._is_string = True
content = property(_get_content, _set_content)
- def _get_iterator(self):
- "Output iterator. Converts data into client charset if necessary."
- for chunk in self._iterator:
- if isinstance(chunk, unicode):
- chunk = chunk.encode(self._charset)
- yield chunk
+ def __iter__(self):
+ self._iterator = self._container.__iter__()
+ return self
- iterator = property(_get_iterator)
+ def next(self):
+ chunk = self._iterator.next()
+ if isinstance(chunk, unicode):
+ chunk = chunk.encode(self._charset)
+ return chunk
+
+ def close(self):
+ if hasattr(self._container, 'close'):
+ self._container.close()
# The remaining methods partially implement the file-like object interface.
# See http://docs.python.org/lib/bltin-file-objects.html
def write(self, content):
if not self._is_string:
raise Exception, "This %s instance is not writable" % self.__class__
- self._iterator.append(content)
+ self._container.append(content)
def flush(self):
pass
@@ -246,7 +251,7 @@ class HttpResponse(object):
def tell(self):
if not self._is_string:
raise Exception, "This %s instance cannot tell its position" % self.__class__
- return sum([len(chunk) for chunk in self._iterator])
+ return sum([len(chunk) for chunk in self._container])
class HttpResponseRedirect(HttpResponse):
def __init__(self, redirect_to):
diff --git a/django/middleware/common.py b/django/middleware/common.py
index d63b71fed7..4f060b8590 100644
--- a/django/middleware/common.py
+++ b/django/middleware/common.py
@@ -64,8 +64,9 @@ class CommonMiddleware(object):
is_internal = referer and (domain in referer)
path = request.get_full_path()
if referer and not _is_ignorable_404(path) and (is_internal or '?' not in referer):
+ ua = request.META.get('HTTP_USER_AGENT','')
mail_managers("Broken %slink on %s" % ((is_internal and 'INTERNAL ' or ''), domain),
- "Referrer: %s\nRequested URL: %s\n" % (referer, request.get_full_path()))
+ "Referrer: %s\nRequested URL: %s\nUser Agent: %s\n" % (referer, request.get_full_path(), ua))
return response
# Use ETags, if requested.
diff --git a/django/middleware/doc.py b/django/middleware/doc.py
index 6600e588cd..48c155c392 100644
--- a/django/middleware/doc.py
+++ b/django/middleware/doc.py
@@ -7,11 +7,12 @@ class XViewMiddleware(object):
"""
def process_view(self, request, view_func, view_args, view_kwargs):
"""
- If the request method is HEAD and the IP is internal, quickly return
- with an x-header indicating the view function. This is used by the
- documentation module to lookup the view function for an arbitrary page.
+ If the request method is HEAD and either the IP is internal or the
+ user is a logged-in staff member, quickly return with an x-header
+ indicating the view function. This is used by the documentation module
+ to lookup the view function for an arbitrary page.
"""
- if request.method == 'HEAD' and request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS:
+ if request.method == 'HEAD' and (request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS or (request.user.is_authenticated() and request.user.is_staff)):
response = http.HttpResponse()
response['X-View'] = "%s.%s" % (view_func.__module__, view_func.__name__)
return response
diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py
index a2e9d2f405..cf1d3d5f6d 100644
--- a/django/template/defaultfilters.py
+++ b/django/template/defaultfilters.py
@@ -15,7 +15,7 @@ register = Library()
def addslashes(value):
"Adds slashes - useful for passing strings to JavaScript, for example."
- return value.replace('"', '\\"').replace("'", "\\'")
+ return value.replace('\\', '\\\\').replace('"', '\\"').replace("'", "\\'")
def capfirst(value):
"Capitalizes the first character of the value"
diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py
index 691b40f332..07e579bf9d 100644
--- a/django/template/defaulttags.py
+++ b/django/template/defaulttags.py
@@ -13,14 +13,18 @@ class CommentNode(Node):
return ''
class CycleNode(Node):
- def __init__(self, cyclevars):
+ def __init__(self, cyclevars, variable_name=None):
self.cyclevars = cyclevars
self.cyclevars_len = len(cyclevars)
self.counter = -1
+ self.variable_name = variable_name
def render(self, context):
self.counter += 1
- return self.cyclevars[self.counter % self.cyclevars_len]
+ value = self.cyclevars[self.counter % self.cyclevars_len]
+ if self.variable_name:
+ context[self.variable_name] = value
+ return value
class DebugNode(Node):
def render(self, context):
@@ -125,6 +129,8 @@ class IfChangedNode(Node):
self._last_seen = None
def render(self, context):
+ if context.has_key('forloop') and context['forloop']['first']:
+ self._last_seen = None
content = self.nodelist.render(context)
if content != self._last_seen:
firstloop = (self._last_seen == None)
@@ -385,7 +391,7 @@ def cycle(parser, token):
raise TemplateSyntaxError("Second 'cycle' argument must be 'as'")
cyclevars = [v for v in args[1].split(",") if v] # split and kill blanks
name = args[3]
- node = CycleNode(cyclevars)
+ node = CycleNode(cyclevars, name)
if not hasattr(parser, '_namedCycleNodes'):
parser._namedCycleNodes = {}
diff --git a/django/test/doctest.py b/django/test/doctest.py
index d600d15e52..3b364f0a75 100644
--- a/django/test/doctest.py
+++ b/django/test/doctest.py
@@ -1319,13 +1319,16 @@ class DocTestRunner:
__LINECACHE_FILENAME_RE = re.compile(r'[\w\.]+)'
r'\[(?P\d+)\]>$')
- def __patched_linecache_getlines(self, filename):
+ def __patched_linecache_getlines(self, filename, module_globals=None):
m = self.__LINECACHE_FILENAME_RE.match(filename)
if m and m.group('name') == self.test.name:
example = self.test.examples[int(m.group('examplenum'))]
return example.source.splitlines(True)
else:
- return self.save_linecache_getlines(filename)
+ if sys.version_info < (2, 5, 0):
+ return self.save_linecache_getlines(filename)
+ else:
+ return self.save_linecache_getlines(filename, module_globals)
def run(self, test, compileflags=None, out=None, clear_globs=True):
"""
diff --git a/django/utils/datastructures.py b/django/utils/datastructures.py
index 6aef313d35..cecb4da170 100644
--- a/django/utils/datastructures.py
+++ b/django/utils/datastructures.py
@@ -14,6 +14,9 @@ class MergeDict(object):
pass
raise KeyError
+ def __contains__(self, key):
+ return self.has_key(key)
+
def get(self, key, default):
try:
return self[key]
diff --git a/django/utils/simplejson/scanner.py b/django/utils/simplejson/scanner.py
index c2e9b6eb89..b9244cfed1 100644
--- a/django/utils/simplejson/scanner.py
+++ b/django/utils/simplejson/scanner.py
@@ -3,12 +3,11 @@ Iterator based sre token scanner
"""
import sre_parse, sre_compile, sre_constants
from sre_constants import BRANCH, SUBPATTERN
-from sre import VERBOSE, MULTILINE, DOTALL
import re
__all__ = ['Scanner', 'pattern']
-FLAGS = (VERBOSE | MULTILINE | DOTALL)
+FLAGS = (re.VERBOSE | re.MULTILINE | re.DOTALL)
class Scanner(object):
def __init__(self, lexicon, flags=FLAGS):
self.actions = [None]
diff --git a/django/utils/text.py b/django/utils/text.py
index 7df9bc03b7..9e7bb3b6c4 100644
--- a/django/utils/text.py
+++ b/django/utils/text.py
@@ -94,7 +94,8 @@ def compress_string(s):
return zbuf.getvalue()
ustring_re = re.compile(u"([\u0080-\uffff])")
-def javascript_quote(s):
+
+def javascript_quote(s, quote_double_quotes=False):
def fix(match):
return r"\u%04x" % ord(match.group(1))
@@ -104,9 +105,12 @@ def javascript_quote(s):
elif type(s) != unicode:
raise TypeError, s
s = s.replace('\\', '\\\\')
+ s = s.replace('\r', '\\r')
s = s.replace('\n', '\\n')
s = s.replace('\t', '\\t')
s = s.replace("'", "\\'")
+ if quote_double_quotes:
+ s = s.replace('"', '"')
return str(ustring_re.sub(fix, s))
smart_split_re = re.compile('("(?:[^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'(?:[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'|[^\\s]+)')
diff --git a/django/views/debug.py b/django/views/debug.py
index 6178bdb83b..a7f44d17b3 100644
--- a/django/views/debug.py
+++ b/django/views/debug.py
@@ -4,7 +4,7 @@ from django.utils.html import escape
from django.http import HttpResponseServerError, HttpResponseNotFound
import os, re
-HIDDEN_SETTINGS = re.compile('SECRET|PASSWORD')
+HIDDEN_SETTINGS = re.compile('SECRET|PASSWORD|PROFANITIES_LIST')
def linebreak_iter(template_source):
yield 0
diff --git a/docs/authentication.txt b/docs/authentication.txt
index f161e9d357..31a894512a 100644
--- a/docs/authentication.txt
+++ b/docs/authentication.txt
@@ -456,6 +456,10 @@ As a shortcut, you can use the convenient ``user_passes_test`` decorator::
# ...
my_view = user_passes_test(lambda u: u.has_perm('polls.can_vote'))(my_view)
+We are using this particular test as a relatively simple example, however be
+aware that if you just want to test if a permission is available to a user,
+you can use the ``permission_required()`` decorator described below.
+
Here's the same thing, using Python 2.4's decorator syntax::
from django.contrib.auth.decorators import user_passes_test
@@ -488,6 +492,24 @@ Example in Python 2.4 syntax::
def my_view(request):
# ...
+The permission_required decorator
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Since checking whether a user has a particular permission available to them is a
+relatively common operation, Django provides a shortcut for that particular
+case: the ``permission_required()`` decorator. Using this decorator, the
+earlier example can be written as::
+
+ from django.contrib.auth.decorators import permission_required
+
+ def my_view(request):
+ # ...
+
+ my_view = permission_required('polls.can_vote')(my_view)
+
+Note that ``permission_required()`` also takes an optional ``login_url``
+parameter.
+
Limiting access to generic views
--------------------------------
@@ -677,7 +699,7 @@ timestamps.
Messages are used by the Django admin after successful actions. For example,
``"The poll Foo was created successfully."`` is a message.
-The API is simple::
+The API is simple:
* To create a new message, use
``user_obj.message_set.create(message='message_text')``.
diff --git a/docs/contributing.txt b/docs/contributing.txt
index 3d101c3241..7ecda7425c 100644
--- a/docs/contributing.txt
+++ b/docs/contributing.txt
@@ -247,18 +247,23 @@ Django tarball. It's our policy to make sure all tests pass at all times.
The tests cover:
- * Models and the database API (``tests/testapp/models``).
- * The cache system (``tests/otherthests/cache.py``).
- * The ``django.utils.dateformat`` module (``tests/othertests/dateformat.py``).
- * Database typecasts (``tests/othertests/db_typecasts.py``).
- * The template system (``tests/othertests/templates.py`` and
- ``tests/othertests/defaultfilters.py``).
- * ``QueryDict`` objects (``tests/othertests/httpwrappers.py``).
- * Markup template tags (``tests/othertests/markup.py``).
- * The ``django.utils.timesince`` module (``tests/othertests/timesince.py``).
+ * Models and the database API (``tests/modeltests/``).
+ * The cache system (``tests/regressiontests/cache.py``).
+ * The ``django.utils.dateformat`` module (``tests/regressiontests/dateformat/``).
+ * Database typecasts (``tests/regressiontests/db_typecasts/``).
+ * The template system (``tests/regressiontests/templates/`` and
+ ``tests/regressiontests/defaultfilters/``).
+ * ``QueryDict`` objects (``tests/regressiontests/httpwrappers/``).
+ * Markup template tags (``tests/regressiontests/markup/``).
We appreciate any and all contributions to the test suite!
+The Django tests all use the testing infrastructure that ships with Django for
+testing applications. See `Testing Django Applications`_ for an explanation of
+how to write new tests.
+
+.. _Testing Django Applications: http://www.djangoproject.com/documentation/testing/
+
Running the unit tests
----------------------
@@ -268,10 +273,14 @@ To run the tests, ``cd`` to the ``tests/`` directory and type::
Yes, the unit tests need a settings module, but only for database connection
info -- the ``DATABASE_ENGINE``, ``DATABASE_USER`` and ``DATABASE_PASSWORD``.
+You will also need a ``ROOT_URLCONF`` setting (it's value is ignored; it just
+needs to be present) and a ``SITE_ID`` setting (any integer value will do) in
+order for all the tests to pass.
-The unit tests will not touch your database; they create a new database, called
-``django_test_db``, which is deleted when the tests are finished. This means
-your user account needs permission to execute ``CREATE DATABASE``.
+The unit tests will not touch your existing databases; they create a new
+database, called ``django_test_db``, which is deleted when the tests are
+finished. This means your user account needs permission to execute ``CREATE
+DATABASE``.
Requesting features
===================
diff --git a/docs/db-api.txt b/docs/db-api.txt
index bd178dbd7d..0d1f049601 100644
--- a/docs/db-api.txt
+++ b/docs/db-api.txt
@@ -1140,7 +1140,7 @@ The pk lookup shortcut
----------------------
For convenience, Django provides a ``pk`` lookup type, which stands for
-"primary_key". This is shorthand for "an exact lookup on the primary-key."
+"primary_key".
In the example ``Blog`` model, the primary key is the ``id`` field, so these
three statements are equivalent::
@@ -1149,6 +1149,14 @@ three statements are equivalent::
Blog.objects.get(id=14) # __exact is implied
Blog.objects.get(pk=14) # pk implies id__exact
+The use of ``pk`` isn't limited to ``__exact`` queries -- any query term
+can be combined with ``pk`` to perform a query on the primary key of a model::
+
+ # Get blogs entries with id 1, 4 and 7
+ Blog.objects.filter(pk__in=[1,4,7])
+ # Get all blog entries with id > 14
+ Blog.objects.filter(pk__gt=14)
+
``pk`` lookups also work across joins. For example, these three statements are
equivalent::
@@ -1511,7 +1519,7 @@ Many-to-many relationships
--------------------------
Both ends of a many-to-many relationship get automatic API access to the other
-end. The API works just as a "backward" one-to-many relationship. See _Backward
+end. The API works just as a "backward" one-to-many relationship. See Backward_
above.
The only difference is in the attribute naming: The model that defines the
diff --git a/docs/django-admin.txt b/docs/django-admin.txt
index ffafc83972..ed162f0520 100644
--- a/docs/django-admin.txt
+++ b/docs/django-admin.txt
@@ -352,8 +352,9 @@ options.
**New in Django development version**
-Inform django-admin that the user should NOT be prompted for any input. Useful if
-the django-admin script will be executed as an unattended, automated script.
+Inform django-admin that the user should NOT be prompted for any input. Useful
+if the django-admin script will be executed as an unattended, automated
+script.
--noreload
----------
@@ -383,6 +384,19 @@ Verbosity determines the amount of notification and debug information that
will be printed to the console. '0' is no output, '1' is normal output,
and `2` is verbose output.
+--adminmedia
+------------
+
+**New in Django development version**
+
+Example usage::
+ django-admin.py manage.py --adminmedia=/tmp/new-admin-style/
+
+Tell Django where to find the various stylesheets and Javascript files for the
+admin interface when running the development server. Normally these files are
+served out of the Django source tree, but since some designers change these
+files for their site, this option allows you to test against custom versions.
+
Extra niceties
==============
diff --git a/docs/forms.txt b/docs/forms.txt
index d6ef6f791b..0ffb0bdcb7 100644
--- a/docs/forms.txt
+++ b/docs/forms.txt
@@ -136,7 +136,7 @@ template::
{% endblock %}
Before we get back to the problems with these naive set of views, let's go over
-some salient points of the above template::
+some salient points of the above template:
* Field "widgets" are handled for you: ``{{ form.field }}`` automatically
creates the "right" type of widget for the form, as you can see with the
@@ -148,8 +148,8 @@ some salient points of the above template::
If you must use tables, use tables. If you're a semantic purist, you can
probably find better HTML than in the above template.
- * To avoid name conflicts, the ``id``s of form elements take the form
- "id_*fieldname*".
+ * To avoid name conflicts, the ``id`` values of form elements take the
+ form "id_*fieldname*".
By creating a creation form we've solved problem number 3 above, but we still
don't have any validation. Let's revise the validation issue by writing a new
@@ -481,6 +481,33 @@ the data being validated.
Also, because consistency in user interfaces is important, we strongly urge you
to put punctuation at the end of your validation messages.
+When Are Validators Called?
+---------------------------
+
+After a form has been submitted, Django first checks to see that all the
+required fields are present and non-empty. For each field that passes that
+test *and if the form submission contained data* for that field, all the
+validators for that field are called in turn. The emphasised portion in the
+last sentence is important: if a form field is not submitted (because it
+contains no data -- which is normal HTML behaviour), the validators are not
+run against the field.
+
+This feature is particularly important for models using
+``models.BooleanField`` or custom manipulators using things like
+``forms.CheckBoxField``. If the checkbox is not selected, it will not
+contribute to the form submission.
+
+If you would like your validator to *always* run, regardless of whether the
+field it is attached to contains any data, set the ``always_test`` attribute
+on the validator function. For example::
+
+ def my_custom_validator(field_data, all_data):
+ # ...
+
+ my_custom_validator.always_test = True
+
+This validator will always be executed for any field it is attached to.
+
Ready-made Validators
---------------------
diff --git a/docs/model-api.txt b/docs/model-api.txt
index b46a11c463..c6c4200239 100644
--- a/docs/model-api.txt
+++ b/docs/model-api.txt
@@ -543,7 +543,9 @@ The default value for the field.
``editable``
~~~~~~~~~~~~
-If ``False``, the field will not be editable in the admin. Default is ``True``.
+If ``False``, the field will not be editable in the admin or via form
+processing using the object's ``AddManipulator`` or ``ChangeManipulator``
+classes. Default is ``True``.
``help_text``
~~~~~~~~~~~~~
diff --git a/docs/serialization.txt b/docs/serialization.txt
index 25199e7a50..694e2d25db 100644
--- a/docs/serialization.txt
+++ b/docs/serialization.txt
@@ -96,6 +96,21 @@ Django "ships" with a few included serializers:
.. _json: http://json.org/
.. _simplejson: http://undefined.org/python/#simplejson
+Notes For Specific Serialization Formats
+----------------------------------------
+
+json
+~~~~
+
+If you are using UTF-8 (or any other non-ASCII encoding) data with the JSON
+serializer, you must pass ``ensure_ascii=False`` as a parameter to the
+``serialize()`` call. Otherwise the output will not be encoded correctly.
+
+For example::
+
+ json_serializer = serializers.get_serializer("json")
+ json_serializer.serialize(queryset, ensure_ascii=False, stream=response)
+
Writing custom serializers
``````````````````````````
diff --git a/docs/settings.txt b/docs/settings.txt
index b927b62ca7..65113b3c30 100644
--- a/docs/settings.txt
+++ b/docs/settings.txt
@@ -596,6 +596,12 @@ Whether to prepend the "www." subdomain to URLs that don't have it. This is
only used if ``CommonMiddleware`` is installed (see the `middleware docs`_).
See also ``APPEND_SLASH``.
+PROFANITIES_LIST
+----------------
+
+A list of profanities that will trigger a validation error when the
+``hasNoProfanities`` validator is called.
+
ROOT_URLCONF
------------
diff --git a/docs/templates_python.txt b/docs/templates_python.txt
index 950b122339..bc05d769ad 100644
--- a/docs/templates_python.txt
+++ b/docs/templates_python.txt
@@ -763,17 +763,17 @@ will use the function's name as the tag name.
Shortcut for simple tags
~~~~~~~~~~~~~~~~~~~~~~~~
-Many template tags take a single argument -- a string or a template variable
-reference -- and return a string after doing some processing based solely on
+Many template tags take a number of arguments -- strings or a template variables
+-- and return a string after doing some processing based solely on
the input argument and some external information. For example, the
``current_time`` tag we wrote above is of this variety: we give it a format
string, it returns the time as a string.
To ease the creation of the types of tags, Django provides a helper function,
``simple_tag``. This function, which is a method of
-``django.template.Library``, takes a function that accepts one argument, wraps
-it in a ``render`` function and the other necessary bits mentioned above and
-registers it with the template system.
+``django.template.Library``, takes a function that accepts any number of
+arguments, wraps it in a ``render`` function and the other necessary bits
+mentioned above and registers it with the template system.
Our earlier ``current_time`` function could thus be written like this::
@@ -789,11 +789,16 @@ In Python 2.4, the decorator syntax also works::
...
A couple of things to note about the ``simple_tag`` helper function:
- * Only the (single) argument is passed into our function.
* Checking for the required number of arguments, etc, has already been
done by the time our function is called, so we don't need to do that.
* The quotes around the argument (if any) have already been stripped away,
so we just receive a plain string.
+ * If the argument was a template variable, our function is passed the
+ current value of the variable, not the variable itself.
+
+When your template tag does not need access to the current context, writing a
+function to work with the input values and using the ``simple_tag`` helper is
+the easiest way to create a new tag.
Inclusion tags
~~~~~~~~~~~~~~
diff --git a/setup.py b/setup.py
index 1d5c5a0cda..a8d3e9fbb7 100644
--- a/setup.py
+++ b/setup.py
@@ -26,6 +26,7 @@ setup(
'media/js/*.js',
'media/js/admin/*js'],
'django.contrib.comments': ['templates/comments/*.html'],
+ 'django.contrib.sitemaps': ['templates/*.xml'],
},
scripts = ['django/bin/django-admin.py'],
zip_safe = False,
diff --git a/tests/modeltests/basic/models.py b/tests/modeltests/basic/models.py
index acbea0d1e0..5638865f31 100644
--- a/tests/modeltests/basic/models.py
+++ b/tests/modeltests/basic/models.py
@@ -86,6 +86,10 @@ DoesNotExist: Article matching query does not exist.
>>> Article.objects.get(pk=1)
+# pk can be used as a shortcut for the primary key name in any query
+>>> Article.objects.filter(pk__in=[1])
+[]
+
# Model instances of the same type and same ID are considered equal.
>>> a = Article.objects.get(pk=1)
>>> b = Article.objects.get(pk=1)
diff --git a/tests/modeltests/custom_pk/models.py b/tests/modeltests/custom_pk/models.py
index ca788f6aa5..fd0901da3c 100644
--- a/tests/modeltests/custom_pk/models.py
+++ b/tests/modeltests/custom_pk/models.py
@@ -51,6 +51,10 @@ DoesNotExist: Employee matching query does not exist.
>>> Employee.objects.get(employee_code__exact='ABC123')
+# pk can be used as a substitute for the primary key.
+>>> Employee.objects.filter(pk__in=['ABC123','XYZ456'])
+[, ]
+
# Fran got married and changed her last name.
>>> fran = Employee.objects.get(pk='XYZ456')
>>> fran.last_name = 'Jones'
diff --git a/tests/regressiontests/defaultfilters/tests.py b/tests/regressiontests/defaultfilters/tests.py
index 9b1cfda833..32d6ef5202 100644
--- a/tests/regressiontests/defaultfilters/tests.py
+++ b/tests/regressiontests/defaultfilters/tests.py
@@ -15,6 +15,9 @@ r"""
>>> addslashes('"double quotes" and \'single quotes\'')
'\\"double quotes\\" and \\\'single quotes\\\''
+>>> addslashes(r'\ : backslashes, too')
+'\\\\ : backslashes, too'
+
>>> capfirst('hello world')
'Hello world'
diff --git a/tests/regressiontests/initial_sql_regress/sql/simple.sql b/tests/regressiontests/initial_sql_regress/sql/simple.sql
index ddb08bc91f..ca9bd40dab 100644
--- a/tests/regressiontests/initial_sql_regress/sql/simple.sql
+++ b/tests/regressiontests/initial_sql_regress/sql/simple.sql
@@ -4,4 +4,5 @@ INSERT INTO initial_sql_regress_simple (name) VALUES ('Ringo');
INSERT INTO initial_sql_regress_simple (name) VALUES ('George');
INSERT INTO initial_sql_regress_simple (name) VALUES ('Miles O''Brien');
INSERT INTO initial_sql_regress_simple (name) VALUES ('Semicolon;Man');
+INSERT INTO initial_sql_regress_simple (name) VALUES ('This line has a Windows line ending');
diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py
index 5a8dd2d6a2..368a46b8fb 100644
--- a/tests/regressiontests/templates/tests.py
+++ b/tests/regressiontests/templates/tests.py
@@ -187,6 +187,7 @@ class Templates(unittest.TestCase):
'cycle05': ('{% cycle %}', {}, template.TemplateSyntaxError),
'cycle06': ('{% cycle a %}', {}, template.TemplateSyntaxError),
'cycle07': ('{% cycle a,b,c as foo %}{% cycle bar %}', {}, template.TemplateSyntaxError),
+ 'cycle08': ('{% cycle a,b,c as foo %}{% cycle foo %}{{ foo }}{{ foo }}{% cycle foo %}{{ foo }}', {}, 'abbbcc'),
### EXCEPTIONS ############################################################
@@ -304,6 +305,10 @@ class Templates(unittest.TestCase):
'ifchanged01': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% endfor %}', { 'num': (1,2,3) }, '123'),
'ifchanged02': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% endfor %}', { 'num': (1,1,3) }, '13'),
'ifchanged03': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% endfor %}', { 'num': (1,1,1) }, '1'),
+ 'ifchanged04': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% for x in numx %}{% ifchanged %}{{ x }}{% endifchanged %}{% endfor %}{% endfor %}', { 'num': (1, 2, 3), 'numx': (2, 2, 2)}, '122232'),
+ 'ifchanged05': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% for x in numx %}{% ifchanged %}{{ x }}{% endifchanged %}{% endfor %}{% endfor %}', { 'num': (1, 1, 1), 'numx': (1, 2, 3)}, '1123123123'),
+ 'ifchanged06': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% for x in numx %}{% ifchanged %}{{ x }}{% endifchanged %}{% endfor %}{% endfor %}', { 'num': (1, 1, 1), 'numx': (2, 2, 2)}, '1222'),
+ 'ifchanged07': ('{% for n in num %}{% ifchanged %}{{ n }}{% endifchanged %}{% for x in numx %}{% ifchanged %}{{ x }}{% endifchanged %}{% for y in numy %}{% ifchanged %}{{ y }}{% endifchanged %}{% endfor %}{% endfor %}{% endfor %}', { 'num': (1, 1, 1), 'numx': (2, 2, 2), 'numy': (3, 3, 3)}, '1233323332333'),
### IFEQUAL TAG ###########################################################
'ifequal01': ("{% ifequal a b %}yes{% endifequal %}", {"a": 1, "b": 2}, ""),