diff --git a/AUTHORS b/AUTHORS
index 027dbc39ba..855717ea64 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -43,12 +43,14 @@ answer newbie questions, and generally made Django that much better:
adurdin@gmail.com
alang@bright-green.com
+ Marty Alchin
Daniel Alves Barbosa de Oliveira Vaz
Andreas
andy@jadedplanet.net
Fabrice Aneche
ant9000@netwise.it
David Ascher
+ david@kazserve.org
Arthur
axiak@mit.edu
Jiri Barton
@@ -68,6 +70,8 @@ answer newbie questions, and generally made Django that much better:
Amit Chakradeo
ChaosKCW
ivan.chelubeev@gmail.com
+ Bryan Chow
+ Michal Chruszcz
Ian Clelland
crankycoder@gmail.com
Matt Croydon
@@ -145,7 +149,7 @@ answer newbie questions, and generally made Django that much better:
lerouxb@gmail.com
Waylan Limberg
limodou
- mattmcc
+ Matt McClanahan
Martin Maney
masonsimon+django@gmail.com
Manuzhai
diff --git a/django/conf/locale/de/LC_MESSAGES/django.mo b/django/conf/locale/de/LC_MESSAGES/django.mo
index 396fe5a432..5f2eee4f33 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 9237e18b2a..52b70bda00 100644
--- a/django/conf/locale/de/LC_MESSAGES/django.po
+++ b/django/conf/locale/de/LC_MESSAGES/django.po
@@ -367,11 +367,11 @@ msgstr "Abmelden"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
-msgstr "Django Systemverwaltung"
+msgstr "Django-Systemverwaltung"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
-msgstr "Django Verwaltung"
+msgstr "Django-Verwaltung"
#: contrib/admin/templates/admin/change_form.html:15
#: contrib/admin/templates/admin/index.html:28
@@ -385,7 +385,7 @@ msgstr "Geschichte"
#: contrib/admin/templates/admin/change_form.html:22
msgid "View on site"
-msgstr "Im Web Anzeigen"
+msgstr "Im Web anzeigen"
#: contrib/admin/templates/admin/change_form.html:32
#: contrib/admin/templates/admin/auth/user/change_password.html:24
@@ -614,7 +614,7 @@ msgid ""
"your computer is \"internal\").
\n"
msgstr ""
"\n"
-"
Um Bookmarklets zu installieren müssen diese Links in die\n"
+"
Um Bookmarklets zu installieren, müssen diese Links in die\n"
"Browser-Werkzeugleiste gezogen werden, oder mittels rechter Maustaste in "
"die\n"
"Bookmarks gespeichert werden. Danach können die Bookmarklets von jeder "
@@ -998,7 +998,7 @@ msgstr "%s ist scheinbar kein urlpattern Objekt"
#: contrib/admin/views/main.py:223
msgid "Site administration"
-msgstr "Website Verwaltung"
+msgstr "Website-Verwaltung"
#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
#, python-format
@@ -1023,7 +1023,7 @@ msgstr "und"
#: contrib/admin/views/main.py:337
#, python-format
msgid "Changed %s."
-msgstr "%s geändert"
+msgstr "%s geändert."
#: contrib/admin/views/main.py:339
#, python-format
@@ -1490,8 +1490,8 @@ msgstr "Ihr Name:"
msgid ""
"This rating is required because you've entered at least one other rating."
msgstr ""
-"Diese Abstimmung ist zwingend erforderlich, da Du an mindestens einer "
-"weiteren Abstimmung teilnimmst."
+"Diese Abstimmung ist zwingend erforderlich, da Sie an mindestens einer "
+"weiteren Abstimmung teilnehmen."
#: contrib/comments/views/comments.py:111
#, python-format
diff --git a/django/conf/locale/he/LC_MESSAGES/django.mo b/django/conf/locale/he/LC_MESSAGES/django.mo
index 0f8b07e5bb..50021ed86d 100644
Binary files a/django/conf/locale/he/LC_MESSAGES/django.mo and b/django/conf/locale/he/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/he/LC_MESSAGES/django.po b/django/conf/locale/he/LC_MESSAGES/django.po
index 6e4df17521..9fc5d7ee80 100644
--- a/django/conf/locale/he/LC_MESSAGES/django.po
+++ b/django/conf/locale/he/LC_MESSAGES/django.po
@@ -1,121 +1,171 @@
# translation of Django.
# Copyright (C) 2006 THE Django'S COPYRIGHT HOLDER
# This file is distributed under the same license as the Django package.
+# Meir Kriheli , 2007.
#
#
msgid ""
msgstr ""
"Project-Id-Version: Django 0.95\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-06-15 12:42+0300\n"
-"PO-Revision-Date: 2006-06-15 12:40+0300\n"
-"Last-Translator: Meir Kriheli \n"
-"Language-Team: Hebrew\n"
+"POT-Creation-Date: 2007-05-04 19:38+0300\n"
+"PO-Revision-Date: 2007-05-06 12:43+0300\n"
+"Last-Translator: meir <(null)>\n"
+"Language-Team: English \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
+"Content-Transfer-Encoding: 8bit"
-#: template/defaultfilters.py:389
-msgid "yes,no,maybe"
-msgstr "כן,לא,אולי"
+#: newforms/models.py:165 newforms/fields.py:364
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "יש לבחור אפשרות חוקית; '%(data)s' אינו בין %(choices)s."
-#: forms/__init__.py:346 db/models/fields/__init__.py:114
-#: db/models/fields/__init__.py:265 db/models/fields/__init__.py:545
-#: db/models/fields/__init__.py:556
+#: newforms/models.py:178 newforms/fields.py:80 newforms/fields.py:376
+#: newforms/fields.py:452 newforms/fields.py:463
+#: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274
+#: db/models/fields/__init__.py:612 db/models/fields/__init__.py:623
+#: oldforms/__init__.py:357
msgid "This field is required."
msgstr "יש להזין תוכן בשדה זה."
-#: forms/__init__.py:381
+#: newforms/models.py:182 newforms/fields.py:380 newforms/fields.py:456
+msgid "Enter a list of values."
+msgstr "יש להזין רשימת ערכים"
+
+#: newforms/models.py:188 newforms/fields.py:389
#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "נא לוודא שהטקסט שלך מכיל פחות מ %s תו."
-msgstr[1] "נא לוודא שהטקסט שלך מכיל פחות מ %s תווים."
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr "יש לבחור אפשרות חוקית. %s אינו בין האפשרויות הזמינות."
-#: forms/__init__.py:386
-msgid "Line breaks are not allowed here."
-msgstr "מעברי שורה אסורים כאן."
+#: newforms/widgets.py:180 oldforms/__init__.py:577
+#: contrib/admin/filterspecs.py:150
+msgid "Unknown"
+msgstr "לא ידוע"
-#: forms/__init__.py:485 forms/__init__.py:558 forms/__init__.py:597
+#: newforms/widgets.py:180 oldforms/__init__.py:577
+#: contrib/admin/filterspecs.py:143
+msgid "Yes"
+msgstr "כן"
+
+#: newforms/widgets.py:180 oldforms/__init__.py:577
+#: contrib/admin/filterspecs.py:143
+msgid "No"
+msgstr "לא"
+
+#: newforms/fields.py:103 newforms/fields.py:256
#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "יש לבחור אפשרות חוקית; '%(data)s' אינו בין %(choices)s."
+msgid "Ensure this value has at most %d characters."
+msgstr "נא לוודא שהטקסט שלך מכיל %d תווים לכל היותר."
-#: forms/__init__.py:659 core/validators.py:151 core/validators.py:376
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "לא נשלח שום קובץ. נא לבדוק את סוג הקידוד של הטופס."
+#: newforms/fields.py:105 newforms/fields.py:258
+#, python-format
+msgid "Ensure this value has at least %d characters."
+msgstr "נא לוודא שערך זה מכיל לפחות %d תווים"
-#: forms/__init__.py:661
-msgid "The submitted file is empty."
-msgstr "הקובץ שנשלח ריק."
+#: newforms/fields.py:128 core/validators.py:120
+msgid "Enter a whole number."
+msgstr "נא להזין מספר שלם."
-#: forms/__init__.py:717
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "חש להזין מספר שלם בין -32,768 ל- 32,767."
+#: newforms/fields.py:130
+#, python-format
+msgid "Ensure this value is less than or equal to %s."
+msgstr "יש לוודא שערך זה פחות מ או שווה ל %s."
-#: forms/__init__.py:727
-msgid "Enter a positive number."
-msgstr "יש להזין מספר חיובי."
+#: newforms/fields.py:132
+#, python-format
+msgid "Ensure this value is greater than or equal to %s."
+msgstr "יש לוודא שהערך גדול מ או שווה ל %s."
-#: forms/__init__.py:737
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "יש להזין מספר שלם בין 0 ל- 32,767."
+#: newforms/fields.py:165
+msgid "Enter a valid date."
+msgstr "יש להזין תאריך חוקי."
-#: utils/translation.py:363
-msgid "DATE_FORMAT"
-msgstr "d.m.Y"
+#: newforms/fields.py:192
+msgid "Enter a valid time."
+msgstr "יש להזין שעה חוקית."
-#: utils/translation.py:364
-msgid "DATETIME_FORMAT"
-msgstr "d.m.y H:i:s"
+#: newforms/fields.py:228
+msgid "Enter a valid date/time."
+msgstr "יש להזין תאריך ושעה חוקיים."
-#: utils/translation.py:365
-msgid "TIME_FORMAT"
-msgstr "H:i:s"
+#: newforms/fields.py:242
+msgid "Enter a valid value."
+msgstr "יש להזין ערך חוקי."
-#: utils/translation.py:381
-msgid "YEAR_MONTH_FORMAT"
-msgstr "d.m.Y"
+#: newforms/fields.py:271 core/validators.py:162
+msgid "Enter a valid e-mail address."
+msgstr "יש להזין כתובת דוא\"ל חוקית."
-#: utils/translation.py:382
-msgid "MONTH_DAY_FORMAT"
-msgstr "d.m.Y"
+#: newforms/fields.py:289 newforms/fields.py:311
+msgid "Enter a valid URL."
+msgstr "יש להזין URL חוקי."
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "שנה"
-msgstr[1] "שנים"
+#: newforms/fields.py:313
+msgid "This URL appears to be a broken link."
+msgstr "ה-URL הזה כנראה מכיל קישור שבור."
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "חודש"
-msgstr[1] "חודשים"
+#: db/models/manipulators.py:307
+#, python-format
+msgid "%(object)s with this %(type)s already exists for the given %(field)s."
+msgstr "%(object)s עם %(type)s קיים כבר עבור %(field)s נתון."
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "שבוע"
-msgstr[1] "שבועות"
+#: db/models/manipulators.py:308 contrib/admin/views/main.py:335
+#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339
+msgid "and"
+msgstr "ו"
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "יום"
-msgstr[1] "ימים"
+#: db/models/fields/related.py:53
+#, python-format
+msgid "Please enter a valid %s."
+msgstr "יש להזין %s חוקי."
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "שעה"
-msgstr[1] "שעות"
+#: db/models/fields/related.py:642
+msgid "Separate multiple IDs with commas."
+msgstr "יש להפריד מזהים מרובים בפסיקים."
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "דקה"
-msgstr[1] "דקות"
+#: db/models/fields/related.py:644
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr "החזק את \"Control\", או \"Command\" על מק, לחוץ כדי לבחור יותר מאחד."
+
+#: db/models/fields/related.py:691
+#, python-format
+msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
+"Please enter valid %(self)s IDs. The values %(value)r are invalid."
+msgstr "נא להזין זיהוי %(self)s חוקי. הערך %(value)r אינו חוקי."
+
+#: db/models/fields/__init__.py:42
+#, python-format
+msgid "%(optname)s with this %(fieldname)s already exists."
+msgstr "%(optname)s·עם·%(fieldname)s·זה קיימת כבר."
+
+#: db/models/fields/__init__.py:369
+msgid "This value must be an integer."
+msgstr "ערך זה חייב להיות מספר שלם."
+
+#: db/models/fields/__init__.py:404
+msgid "This value must be either True or False."
+msgstr "ערך זה חייב להיות אמת או שקר."
+
+#: db/models/fields/__init__.py:425
+msgid "This field cannot be null."
+msgstr "שדה זה אינו יכול להכיל null."
+
+#: db/models/fields/__init__.py:459 core/validators.py:148
+msgid "Enter a valid date in YYYY-MM-DD format."
+msgstr "יש להזין תאריך במבנה YYYY-MM-DD."
+
+#: db/models/fields/__init__.py:528 core/validators.py:157
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
+msgstr "יש להזין תאריך ושעה במבנה YYYY-MM-DD HH:MM."
+
+#: db/models/fields/__init__.py:632
+msgid "Enter a valid filename."
+msgstr "יש להזין שם קובץ חוקי."
+
+#: db/models/fields/__init__.py:753
+msgid "This value must be either None, True or False."
+msgstr "ערך זה חייב להיות כלום, אמת או שקר."
#: utils/dates.py:6
msgid "Monday"
@@ -269,147 +319,411 @@ msgstr "נוב'"
msgid "Dec."
msgstr "דצמ'"
-#: db/models/manipulators.py:302
+#: utils/timesince.py:12
+msgid "year"
+msgstr "שנה"
+
+#: utils/timesince.py:13
+msgid "month"
+msgstr "חודש"
+
+#: utils/timesince.py:14
+msgid "week"
+msgstr "שבוע"
+
+#: utils/timesince.py:15
+msgid "day"
+msgstr "יום"
+
+#: utils/timesince.py:16
+msgid "hour"
+msgstr "שעה"
+
+#: utils/timesince.py:17
+msgid "minute"
+msgstr "דקה"
+
+#: utils/timesince.py:40
#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s עם %(type)s קיים כבר עבור %(field)s נתון."
+msgid "%d milliseconds"
+msgstr "%d מילישניות"
-#: db/models/fields/__init__.py:40
+#: utils/timesince.py:41
#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s·עם·%(fieldname)s·זה קיימת כבר."
+msgid "%(number)d %(type)s"
+msgstr "%(number)d %(type)s"
-#: 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 "שדה זה אינו יכול להכיל null."
-
-#: db/models/fields/__init__.py:471 core/validators.py:135
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "יש להזין תאריך ושעה במבנה YYYY-MM-DD HH:MM."
-
-#: db/models/fields/__init__.py:565
-msgid "Enter a valid filename."
-msgstr "יש להזין שם קובץ חוקי."
-
-#: db/models/fields/related.py:43
+#: utils/timesince.py:47
#, python-format
-msgid "Please enter a valid %s."
-msgstr "יש להזין %s חוקי."
+msgid ", %(number)d %(type)s"
+msgstr ", %(number)d %(type)s"
-#: db/models/fields/related.py:579
-msgid "Separate multiple IDs with commas."
-msgstr "יש להפריד מזהים מרובים בפסיקים."
+#: utils/dateformat.py:40
+msgid "p.m."
+msgstr "אחר הצהריים"
-#: db/models/fields/related.py:581
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "החזק את \"Control\", או \"Command\" על מק, לחוץ כדי לבחור יותר מאחד."
+#: utils/dateformat.py:41
+msgid "a.m."
+msgstr "בבוקר"
-#: db/models/fields/related.py:625
+#: utils/dateformat.py:46
+msgid "PM"
+msgstr "אחר הצהריים"
+
+#: utils/dateformat.py:47
+msgid "AM"
+msgstr "בבוקר"
+
+#: utils/dateformat.py:95
+msgid "midnight"
+msgstr "חצות"
+
+#: utils/dateformat.py:97
+msgid "noon"
+msgstr "צהריים"
+
+#: utils/translation/trans_real.py:358
+msgid "DATE_FORMAT"
+msgstr "d.m.Y"
+
+#: utils/translation/trans_real.py:359
+msgid "DATETIME_FORMAT"
+msgstr "d.m.y H:i:s"
+
+#: utils/translation/trans_real.py:360
+msgid "TIME_FORMAT"
+msgstr "H:i:s"
+
+#: utils/translation/trans_real.py:376
+msgid "YEAR_MONTH_FORMAT"
+msgstr "d.m.Y"
+
+#: utils/translation/trans_real.py:377
+msgid "MONTH_DAY_FORMAT"
+msgstr "d.m.Y"
+
+#: conf/global_settings.py:39
+msgid "Arabic"
+msgstr "ערבית"
+
+#: conf/global_settings.py:40
+msgid "Bengali"
+msgstr "בנגאלית - Bengali"
+
+#: conf/global_settings.py:41
+msgid "Catalan"
+msgstr "קאטלונית - Catalan"
+
+#: conf/global_settings.py:42
+msgid "Czech"
+msgstr "צ'כית - Czech"
+
+#: conf/global_settings.py:43
+msgid "Welsh"
+msgstr "וולשית - Welsh"
+
+#: conf/global_settings.py:44
+msgid "Danish"
+msgstr "דנית - Danish"
+
+#: conf/global_settings.py:45
+msgid "German"
+msgstr "גרמנית - German"
+
+#: conf/global_settings.py:46
+msgid "Greek"
+msgstr "יוונית - Greek"
+
+#: conf/global_settings.py:47
+msgid "English"
+msgstr "אנגלית - English"
+
+#: conf/global_settings.py:48
+msgid "Spanish"
+msgstr "ספרדית - Spanish"
+
+#: conf/global_settings.py:49
+msgid "Argentinean Spanish"
+msgstr "ספרדית ארגנטינאית - Argentinean Spanish"
+
+#: conf/global_settings.py:50
+msgid "Finnish"
+msgstr "פינית - Finnish"
+
+#: conf/global_settings.py:51
+msgid "French"
+msgstr "צרפתית - French"
+
+#: conf/global_settings.py:52
+msgid "Galician"
+msgstr "גאליצית - Galician"
+
+#: conf/global_settings.py:53
+msgid "Hungarian"
+msgstr "הונגרית (Hungarian)"
+
+#: conf/global_settings.py:54
+msgid "Hebrew"
+msgstr "עברית - Hebrew"
+
+#: conf/global_settings.py:55
+msgid "Icelandic"
+msgstr "איסלנדית - Icelandic"
+
+#: conf/global_settings.py:56
+msgid "Italian"
+msgstr "איטלקית - Italian"
+
+#: conf/global_settings.py:57
+msgid "Japanese"
+msgstr "יפנית - Japanese"
+
+#: conf/global_settings.py:58
+msgid "Korean"
+msgstr "קוריאנית - Korean"
+
+#: conf/global_settings.py:59
+msgid "Kannada"
+msgstr "קנדה - Kannada"
+
+#: conf/global_settings.py:60
+msgid "Latvian"
+msgstr "לטבית - Latvian"
+
+#: conf/global_settings.py:61
+msgid "Macedonian"
+msgstr "מקדונית - Macedonian"
+
+#: conf/global_settings.py:62
+msgid "Dutch"
+msgstr "הולנדית - Dutch"
+
+#: conf/global_settings.py:63
+msgid "Norwegian"
+msgstr "נורווגית - Norwegian"
+
+#: conf/global_settings.py:64
+msgid "Polish"
+msgstr "פולנית - Polish"
+
+#: conf/global_settings.py:65
+msgid "Portugese"
+msgstr "פורטוגזית - Portugese"
+
+#: conf/global_settings.py:66
+msgid "Brazilian"
+msgstr "ברזילאית - Brazilian"
+
+#: conf/global_settings.py:67
+msgid "Romanian"
+msgstr "רומנית - Romanian"
+
+#: conf/global_settings.py:68
+msgid "Russian"
+msgstr "רוסית - Russian"
+
+#: conf/global_settings.py:69
+msgid "Slovak"
+msgstr "סלובקית - Slovak"
+
+#: conf/global_settings.py:70
+msgid "Slovenian"
+msgstr "סלובנית - Slovenian"
+
+#: conf/global_settings.py:71
+msgid "Serbian"
+msgstr "סרבית - Serbian"
+
+#: conf/global_settings.py:72
+msgid "Swedish"
+msgstr "שוודית - Swedish"
+
+#: conf/global_settings.py:73
+msgid "Tamil"
+msgstr ""
+
+#: conf/global_settings.py:74
+msgid "Telugu"
+msgstr ""
+
+#: conf/global_settings.py:75
+msgid "Turkish"
+msgstr "טורקית - Turkish"
+
+#: conf/global_settings.py:76
+msgid "Ukrainian"
+msgstr "אוקראינית - Ukrainian"
+
+#: conf/global_settings.py:77
+msgid "Simplified Chinese"
+msgstr "סינית פשוטה - Simplified·Chinese"
+
+#: conf/global_settings.py:78
+msgid "Traditional Chinese"
+msgstr "סינית מסורתית - Traditional·Chinese"
+
+#: template/defaultfilters.py:491
+msgid "yes,no,maybe"
+msgstr "כן,לא,אולי"
+
+#: template/defaultfilters.py:520
#, 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] "נא להזין זיהוי %(self)s חוקי. הערך %(value)r אינו חוקי."
-msgstr[1] ""
-"נא להזין זיהויי %(self)s חוקיים. הערכים %(value)r אינם חוקיים."
+msgid "%(size)d byte"
+msgstr "%(size)d בתים"
-#: core/validators.py:63
+#: template/defaultfilters.py:522
+#, python-format
+msgid "%.1f KB"
+msgstr "%.1f KB"
+
+#: template/defaultfilters.py:524
+#, python-format
+msgid "%.1f MB"
+msgstr "%.1f MB"
+
+#: template/defaultfilters.py:525
+#, python-format
+msgid "%.1f GB"
+msgstr "%.1f GB"
+
+#: views/generic/create_update.py:43
+#, python-format
+msgid "The %(verbose_name)s was created successfully."
+msgstr "ה-%(verbose_name)s נוצר בהצלחה."
+
+#: views/generic/create_update.py:117
+#, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr "ה-%(verbose_name)s עודכן בהצלחה."
+
+#: views/generic/create_update.py:184
+#, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr "ה-%(verbose_name)s נמחק."
+
+#: oldforms/__init__.py:392
+#, python-format
+msgid "Ensure your text is less than %s character."
+msgstr "נא לוודא שהטקסט שלך מכיל פחות מ %s תו."
+
+#: oldforms/__init__.py:397
+msgid "Line breaks are not allowed here."
+msgstr "מעברי שורה אסורים כאן."
+
+#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610
+#, python-format
+msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
+msgstr "יש לבחור אפשרות חוקית; '%(data)s' אינו בין %(choices)s."
+
+#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445
+msgid "No file was submitted. Check the encoding type on the form."
+msgstr "לא נשלח שום קובץ. נא לבדוק את סוג הקידוד של הטופס."
+
+#: oldforms/__init__.py:674
+msgid "The submitted file is empty."
+msgstr "הקובץ שנשלח ריק."
+
+#: oldforms/__init__.py:730
+msgid "Enter a whole number between -32,768 and 32,767."
+msgstr "חש להזין מספר שלם בין -32,768 ל- 32,767."
+
+#: oldforms/__init__.py:740
+msgid "Enter a positive number."
+msgstr "יש להזין מספר חיובי."
+
+#: oldforms/__init__.py:750
+msgid "Enter a whole number between 0 and 32,767."
+msgstr "יש להזין מספר שלם בין 0 ל- 32,767."
+
+#: core/validators.py:64
msgid "This value must contain only letters, numbers and underscores."
msgstr "ערך זה חייב להכיל אותיות, ספרות וקווים תחתונים בלבד."
-#: core/validators.py:67
+#: core/validators.py:68
msgid ""
"This value must contain only letters, numbers, underscores, dashes or "
"slashes."
msgstr "ערך זה חייב להכיל אותיות, ספרות, מקפים, קווים תחתונים ונטויים בלבד."
-#: core/validators.py:75
+#: core/validators.py:72
+msgid "This value must contain only letters, numbers, underscores or hyphens."
+msgstr "ערך זה חייב להכיל אותיות, ספרות, מקפים וקווים תחתונים בלבד."
+
+#: core/validators.py:76
msgid "Uppercase letters are not allowed here."
msgstr "אסור להשתמש באותיות גדולות."
-#: core/validators.py:79
+#: core/validators.py:80
msgid "Lowercase letters are not allowed here."
msgstr "אסור להשתמש באותיות קטנות."
-#: core/validators.py:86
+#: core/validators.py:87
msgid "Enter only digits separated by commas."
msgstr "יש להזין רק ספרות מופרדות בפסיקים."
-#: core/validators.py:98
+#: core/validators.py:99
msgid "Enter valid e-mail addresses separated by commas."
msgstr "יש להזין רק כתובות דוא\"ל מופרדות בפסיקים."
-#: core/validators.py:102
+#: core/validators.py:103
msgid "Please enter a valid IP address."
msgstr "נא להזין כתובת IP חוקית."
-#: core/validators.py:106
+#: core/validators.py:107
msgid "Empty values are not allowed here."
msgstr "חובה להזין ערך בשדה זה."
-#: core/validators.py:110
+#: core/validators.py:111
msgid "Non-numeric characters aren't allowed here."
msgstr "מותר להזין ספרות בלבד."
-#: core/validators.py:114
+#: core/validators.py:115
msgid "This value can't be comprised solely of digits."
msgstr "ערך זה אינו יכול להכיל ספרות בלבד."
-#: core/validators.py:119
-msgid "Enter a whole number."
-msgstr "נא להזין מספר שלם."
-
-#: core/validators.py:123
+#: core/validators.py:124
msgid "Only alphabetical characters are allowed here."
msgstr "יש להזין כאן אותיות בלבד."
-#: core/validators.py:127
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "יש להזין תאריך במבנה YYYY-MM-DD."
+#: core/validators.py:139
+msgid "Year must be 1900 or later."
+msgstr "שנה צריכה להיות 1900 ומעלה."
-#: core/validators.py:131
+#: core/validators.py:143
+#, python-format
+msgid "Invalid date: %s"
+msgstr "תאריך שגוי: %s"
+
+#: core/validators.py:153
msgid "Enter a valid time in HH:MM format."
msgstr "יש להזין שעה במבנה HH:MM."
-#: core/validators.py:139
-msgid "Enter a valid e-mail address."
-msgstr "יש להזין כתובת דוא\"ל חוקית."
-
-#: core/validators.py:155
+#: core/validators.py:178
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "נא להעלות תמונה חוקית. הקובץ שהעלת אינו תמונה אומכיל תמונה מקולקלת."
-#: core/validators.py:162
+#: core/validators.py:185
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "ה-URL %s אנו מצביע לתמונה חוקית."
-#: core/validators.py:166
+#: core/validators.py:189
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr "מספרי טלפון חייבים להיות במבנה XXX-XXX-XXXX. \"%s\" אינו חוקי."
-#: core/validators.py:174
+#: core/validators.py:197
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "ה-URL %s אינו מצביע לסרטון QuickTime חוקי."
-#: core/validators.py:178
+#: core/validators.py:201
msgid "A valid URL is required."
msgstr "יש להזין URL חוקי."
-#: core/validators.py:192
+#: core/validators.py:215
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@@ -418,123 +732,141 @@ msgstr ""
"יש להזין HTML חוקי. שגיאות ספציפיות:\n"
"%s"
-#: core/validators.py:199
+#: core/validators.py:222
#, python-format
msgid "Badly formed XML: %s"
msgstr "מבנה XML שגוי: %s"
-#: core/validators.py:209
+#: core/validators.py:239
#, python-format
msgid "Invalid URL: %s"
msgstr "URL שגוי: %s"
-#: core/validators.py:213 core/validators.py:215
+#: core/validators.py:244 core/validators.py:246
#, python-format
msgid "The URL %s is a broken link."
msgstr "ה-URL %s הוא קישור שבור."
-#: core/validators.py:221
+#: core/validators.py:252
msgid "Enter a valid U.S. state abbreviation."
msgstr "יש להזין קיצור חוקי למדינה בארה\"ב."
-#: core/validators.py:236
+#: core/validators.py:266
#, 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] "שמור על לשונך! המילה %s אסורה לשימוש כאן."
-msgstr[1] "שמור על לשונך! המילים %s אסורות לשימוש כאן."
+msgstr "שמור על לשונך! המילה %s אסורה לשימוש כאן."
-#: core/validators.py:243
+#: core/validators.py:273
#, python-format
msgid "This field must match the '%s' field."
msgstr "תוכן השדה חייב להיות זהה לשדה '%s'."
-#: core/validators.py:262
+#: core/validators.py:292
msgid "Please enter something for at least one field."
msgstr "יש להזין תוכן בלפחות אחד מהשדות."
-#: core/validators.py:271 core/validators.py:282
+#: core/validators.py:301 core/validators.py:312
msgid "Please enter both fields or leave them both empty."
msgstr "יש להזין תוכן בשני השדות או להשאיר את שניהם ריקים."
-#: core/validators.py:289
+#: core/validators.py:320
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "יש להזין מידע בשדה זה אם שדה %(field)s מכיל %(value)s"
-#: core/validators.py:301
+#: core/validators.py:333
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "יש להזין תוכן בשדה זה אם תוכן שדה %(field)s אינו %(value)s"
-#: core/validators.py:320
+#: core/validators.py:352
msgid "Duplicate values are not allowed."
msgstr "לא ניתן להזין ערכים כפולים."
-#: core/validators.py:343
+#: core/validators.py:367
+#, python-format
+msgid "This value must be between %(lower)s and %(upper)s."
+msgstr "ערך זה חייב להיות בין %(lower)s ל-%(upper)s."
+
+#: core/validators.py:369
+#, python-format
+msgid "This value must be at least %s."
+msgstr "ערך זה חייב להיות לפחות %s."
+
+#: core/validators.py:371
+#, python-format
+msgid "This value must be no more than %s."
+msgstr "ערך זה אינו יכול להיות יותר מ-%s."
+
+#: core/validators.py:407
#, python-format
msgid "This value must be a power of %s."
msgstr "ערך זה חייב להיות חזקה של %s."
-#: core/validators.py:354
+#: core/validators.py:418
msgid "Please enter a valid decimal number."
msgstr "יש להזין מספר עשרוני חוקי."
-#: core/validators.py:356
+#: core/validators.py:422
#, 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] "נא להזין מספר עשרוני חוקי עם %s ספרה לכל היותר."
-msgstr[1] ""
-"נא להזין מספר עשרוני חוקי עם %s ספרות לכל היותר."
+msgstr "נא להזין מספר עשרוני חוקי עם %s ספרה לכל היותר."
+"נא להזין מספר עשורני חוקי עם %s ספרות לכל היותר."
-#: core/validators.py:359
+#: core/validators.py:425
+#, python-format
+msgid ""
+"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."
+msgstr ""
+"נא להזין מספר עשרוני המכיל מספר שלם עם %s ספרה לכל היותר."
+"נא להזין מספר עשרוני המכיל מספר שלם עם %s ספרות לכל היותר."
+
+#: core/validators.py:428
#, 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] "נא להזין מספר עשרוני חוקי עם %s ספרה אחרי הנקודה לכל היותר."
-msgstr[1] ""
-"נא להזין מספר עשרוני חוקי עם %s ספרות אחרי הנקודה לכל היותר."
+msgstr "נא להזין מספר עשרוני חוקי בעל %s ספרה לכל היותר במקום העשרוני."
+"נא להזין מספר עשרוני חוקי בעל %s ספרות לכל היותר במקום העשרוני."
-#: core/validators.py:369
+#: core/validators.py:438
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "יש להעלות קובץ בגודל %s בתים לפחות."
-#: core/validators.py:370
+#: core/validators.py:439
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "יש לוודא שהקובץ שהעלת הוא בגודל %s בתים לכל היותר."
-#: core/validators.py:387
+#: core/validators.py:456
msgid "The format for this field is wrong."
msgstr "מבנה תוכן שדה זה שגוי."
-#: core/validators.py:402
+#: core/validators.py:471
msgid "This field is invalid."
msgstr "שדה זה אינו חוקי."
-#: core/validators.py:438
+#: core/validators.py:507
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "לא ניתן לאחזר כלום מ %s."
-#: core/validators.py:441
+#: core/validators.py:510
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr "ה-URL·%(url)s·החזיר כותרת·Content-Type·לא חוקית·'%(contenttype)s'."
-#: core/validators.py:474
+#: core/validators.py:543
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr "נא לסגור את תג·%(tag)s·בשורה·%(line)s.·(השורה מתחילה ב·\"%(start)s\".)"
-#: core/validators.py:478
+#: core/validators.py:547
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
@@ -542,7 +874,7 @@ msgid ""
msgstr ""
"חלק מהטקסט בשורה·%(line)s·אסור בהקשר זה.·(השורה·מתחילה ב·\"%(start)s\".)"
-#: core/validators.py:483
+#: core/validators.py:552
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@@ -550,7 +882,7 @@ msgid ""
msgstr ""
"\"%(attr)s\"·בשורה·%(line)s·אינה תכונה חוקית.·(השורה מתחילה ב·\"%(start)s\".)"
-#: core/validators.py:488
+#: core/validators.py:557
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@@ -558,16 +890,16 @@ msgid ""
msgstr ""
"\"<%(tag)s>\"·בשורה·%(line)s·אינו תג חוקי.·(השורה מתחילה ב·\"%(start)s\".)"
-#: core/validators.py:492
+#: core/validators.py:561
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
"starts with \"%(start)s\".)"
msgstr ""
-"לתג בשורה %(line)s חסרה תכונה אחת או יותר נדרשות. (השורה מתחילה ב-\"%"
-"(start)s\".)"
+"לתג בשורה %(line)s חסרה תכונה אחת או יותר נדרשות. (השורה מתחילה ב-\"%(start)s"
+"\".)"
-#: core/validators.py:497
+#: core/validators.py:566
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
@@ -576,138 +908,6 @@ msgstr ""
"לתכונה·\"%(attr)s\"·בשורה·%(line)s·יש ערך לא חוקי.·(השורה·מתחילה ב·\"%(start)"
"s\".)"
-#: conf/global_settings.py:37
-msgid "Bengali"
-msgstr "בנגאלית - Bengali"
-
-#: conf/global_settings.py:38
-msgid "Czech"
-msgstr "צ'כית - Czech"
-
-#: conf/global_settings.py:39
-msgid "Welsh"
-msgstr "וולשית - Welsh"
-
-#: conf/global_settings.py:40
-msgid "Danish"
-msgstr "דנית - Danish"
-
-#: conf/global_settings.py:41
-msgid "German"
-msgstr "גרמנית - German"
-
-#: conf/global_settings.py:42
-msgid "Greek"
-msgstr "יוונית - Greek"
-
-#: conf/global_settings.py:43
-msgid "English"
-msgstr "אנגלית - English"
-
-#: conf/global_settings.py:44
-msgid "Spanish"
-msgstr "ספרדית - Spanish"
-
-#: conf/global_settings.py:45
-msgid "Argentinean Spanish"
-msgstr "ספרדית ארגנטינאית - Argentinean Spanish"
-
-#: conf/global_settings.py:46
-msgid "French"
-msgstr "צרפתית - French"
-
-#: conf/global_settings.py:47
-msgid "Galician"
-msgstr "גאליצית - Galician"
-
-#: conf/global_settings.py:48
-msgid "Hungarian"
-msgstr "הונגרית (Hungarian)"
-
-#: conf/global_settings.py:49
-msgid "Hebrew"
-msgstr "עברית - Hebrew"
-
-#: conf/global_settings.py:50
-msgid "Icelandic"
-msgstr "איסלנדית - Icelandic"
-
-#: conf/global_settings.py:51
-msgid "Italian"
-msgstr "איטלקית - Italian"
-
-#: conf/global_settings.py:52
-msgid "Japanese"
-msgstr "יפנית - Japanese"
-
-#: conf/global_settings.py:53
-msgid "Dutch"
-msgstr "הולנדית - Dutch"
-
-#: conf/global_settings.py:54
-msgid "Norwegian"
-msgstr "נורווגית - Norwegian"
-
-#: conf/global_settings.py:55
-msgid "Brazilian"
-msgstr "ברזילאית - Brazilian"
-
-#: conf/global_settings.py:56
-msgid "Romanian"
-msgstr "רומנית - Romanian"
-
-#: conf/global_settings.py:57
-msgid "Russian"
-msgstr "רוסית - Russian"
-
-#: conf/global_settings.py:58
-msgid "Slovak"
-msgstr "סלובקית - Slovak"
-
-#: conf/global_settings.py:59
-msgid "Slovenian"
-msgstr "סלובנית - Slovenian"
-
-#: conf/global_settings.py:60
-msgid "Serbian"
-msgstr "סרבית - Serbian"
-
-#: conf/global_settings.py:61
-msgid "Swedish"
-msgstr "שוודית - Swedish"
-
-#: conf/global_settings.py:62
-msgid "Ukrainian"
-msgstr "אוקראינית - Ukrainian"
-
-#: conf/global_settings.py:63
-msgid "Simplified Chinese"
-msgstr "סינית פשוטה - Simplified·Chinese"
-
-#: conf/global_settings.py:64
-msgid "Traditional Chinese"
-msgstr "סינית מסורתית - Traditional·Chinese"
-
-#: contrib/sessions/models.py:35
-msgid "session key"
-msgstr "מפתח התחברות (session key)"
-
-#: contrib/sessions/models.py:36
-msgid "session data"
-msgstr "מידע התחברות (session data)"
-
-#: 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 "שם מתחם"
@@ -724,18 +924,6 @@ msgstr "אתר"
msgid "sites"
msgstr "אתרים"
-#: contrib/contenttypes/models.py:25
-msgid "python model class name"
-msgstr "שם ה-class של מודל פייתון"
-
-#: contrib/contenttypes/models.py:28
-msgid "content type"
-msgstr "סוג תוכן"
-
-#: contrib/contenttypes/models.py:29
-msgid "content types"
-msgstr "סוגי תוכן"
-
#: contrib/comments/models.py:67 contrib/comments/models.py:166
msgid "object ID"
msgstr "מזהה אובייקט"
@@ -793,7 +981,7 @@ msgstr "תאריך/שעת הגשה"
msgid "is public"
msgstr "ציבורי"
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:292
+#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
msgid "IP address"
msgstr "כתובת IP"
@@ -917,103 +1105,31 @@ msgstr "מחיקות מודרטור"
msgid "Moderator deletion by %r"
msgstr "מחיקת מודרציה ע\"י %r"
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "שמך:"
-
-#: contrib/comments/templates/comments/freeform.html:5
-#: contrib/comments/templates/comments/form.html:27
-msgid "Comment:"
-msgstr "תגובה:"
-
-#: contrib/comments/templates/comments/freeform.html:9
-#: contrib/comments/templates/comments/form.html:32
-msgid "Preview comment"
-msgstr "תצוגה מקדימה של התגובה"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-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_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin/base.html:24
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_done.html:3
-msgid "Log out"
-msgstr "יציאה"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "דירוג"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "נדרש"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "אופציונלי"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-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 "
"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] ""
-"התגובה נשלחה ע\"י משתמש אשר שלח פחות מ-%(count)s "
-"תגובה:\n"
+msgstr ""
+"התגובה נשלחה ע\"י משתמש אשר שלח פחות מ-%(count)s תגובה:\n"
"\n"
"%(text)s"
-msgstr[1] ""
-"התגובה נשלחה ע\"י משתמש אשר שלח פחות מ-%(count)s "
-"תגובות:\n"
+"התגובה נשלחה ע\"י משתמש אשר שלח פחות מ-%(count)s תגובות:\n"
"\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"
@@ -1024,22 +1140,22 @@ 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 "רק פעולות POST מותרות"
-#: 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 "
@@ -1063,51 +1179,141 @@ msgstr "מזהה תגובה שגוי"
msgid "No voting for yourself"
msgstr "לא ניתן להצביע לעצמך"
-#: contrib/admin/filterspecs.py:40
+#: contrib/comments/templates/comments/form.html:6
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:17
+msgid "Username:"
+msgstr "שם משתמש:"
+
+#: contrib/comments/templates/comments/form.html:6
+#: contrib/admin/templates/admin_doc/view_index.html:5
+#: contrib/admin/templates/admin_doc/model_detail.html:3
+#: contrib/admin/templates/admin_doc/model_index.html:5
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
+#: contrib/admin/templates/admin_doc/index.html:4
+#: contrib/admin/templates/admin_doc/missing_docutils.html:4
+#: contrib/admin/templates/admin_doc/template_tag_index.html:5
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+#: contrib/admin/templates/admin_doc/view_detail.html:4
+#: contrib/admin/templates/admin_doc/template_detail.html:4
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/auth/user/change_password.html:9
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+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 "דירוג"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Required"
+msgstr "נדרש"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Optional"
+msgstr "אופציונלי"
+
+#: contrib/comments/templates/comments/form.html:23
+msgid "Post a photo"
+msgstr "שליחת תמונה"
+
+#: contrib/comments/templates/comments/form.html:28
+#: contrib/comments/templates/comments/freeform.html:5
+msgid "Comment:"
+msgstr "תגובה:"
+
+#: contrib/comments/templates/comments/form.html:35
+#: contrib/comments/templates/comments/freeform.html:10
+msgid "Preview comment"
+msgstr "תצוגה מקדימה של התגובה"
+
+#: contrib/comments/templates/comments/freeform.html:4
+msgid "Your name:"
+msgstr "שמך:"
+
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "th"
+msgstr "רביעי"
+
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "st"
+msgstr "ראשון"
+
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "nd"
+msgstr "שני"
+
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "rd"
+msgstr "שלישי"
+
+#: contrib/humanize/templatetags/humanize.py:47
#, python-format
-msgid ""
-"
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 "Dokumentācija šai lapai"
-
-#: 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 ""
-"Pārvieto jūs no jebkuras lapas dokumentācijā uz skatu, kas ģenerē šo lapu."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Parādīt objekta 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 ""
-"Parāda content-type un unikālo ID lapām, kas atspoguļo vientuļu objektu."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Labot šo objektu (patreizējā logā)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Pāriet uz admininstrācijas lapu tām lapām, kas atspoguļo vientuļu objektu."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Labot šo lapu (jaunā logā)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "Tāpat kā iepriekš, tikai atver administrācijas lapu jaunā logā."
-
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-msgid "Delete"
-msgstr "Dzēst"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Saglabāt kā jaunu"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Saglabāt un pievienot vēl vienu"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Saglabāt un turpināt labošanu"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Saglabāt"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Servera kļūda"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Servera kļūda (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error (500)"
-msgstr "Servera kļūda (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 ""
-"Ir notikusi kļūda. Tas ir paziņots saita administratoriem ar e-pasta "
-"starpniecību un visdrīzākajā laikā tiks izlabots. Paldies par sapratni."
-
-#: contrib/admin/templates/admin/filter.html:2
-#, fuzzy, python-format
-msgid " By %(filter_title)s "
-msgstr "Pēc %(title)s "
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-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/search_form.html:8
-msgid "Go"
-msgstr "Aiziet!"
-
-#: contrib/admin/templates/admin/search_form.html:10
+#: contrib/admin/views/auth.py:19
+#: contrib/admin/views/main.py:257
#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-msgstr[1] ""
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "%(name)s \"%(obj)s\" pievienots sekmīgi."
-#: contrib/admin/templates/admin/search_form.html:10
+#: contrib/admin/views/auth.py:24
+#: contrib/admin/views/main.py:261
+#: contrib/admin/views/main.py:347
+msgid "You may edit it again below."
+msgstr "Jūs varat labot to atkal zemāk."
+
+#: contrib/admin/views/auth.py:30
+msgid "Add user"
+msgstr "Pievienot lietotāju"
+
+#: contrib/admin/views/auth.py:57
+msgid "Password changed successfully."
+msgstr "Paroles maiņa notikusi veiksmīgi."
+
+#: contrib/admin/views/auth.py:64
#, python-format
-msgid "%(full_result_count)s total"
-msgstr ""
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "History"
-msgstr "Vēsture"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Datums/laiks"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "Lietotājs"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "darbība"
-
-#: 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 ""
-"Šim objektam nav izmaiņu vēsture. Tas visdrīzāk nav pievienots izmantojot "
-"administrācijas saitu."
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, fuzzy, python-format
-msgid ""
-"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 ""
-"Izdzēšot objektu %(object_name)s '%(object)s' tiks dzēsti visi saistītie "
-"objekti , bet Jums nav tiesību dzēst sekojošus objektu tipus:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, fuzzy, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Vai esat pārliecināts, ka vēlaties dzēst %(object_name)s \"%(object)s\"? "
-"Tiks dzēsti sekojoši objekti:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "Jā, es esmu pārliecināts"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr ""
-
-#: contrib/admin/templates/admin/change_list.html:12
-#, python-format
-msgid "Add %(name)s"
-msgstr "Pievienot %(name)s"
-
-#: contrib/admin/templates/admin/change_form.html:15
-#: contrib/admin/templates/admin/index.html:28
-msgid "Add"
-msgstr "Pievienot"
-
-#: contrib/admin/templates/admin/change_form.html:22
-msgid "View on site"
-msgstr "Apskatīt saitā"
-
-#: contrib/admin/templates/admin/change_form.html:32
-#: contrib/admin/templates/admin/auth/user/change_password.html:24
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Lūdzu izlabojiet kļūdu zemāk"
-msgstr[1] "Lūdzu izlabojiet kļūdas zemāk"
-
-#: contrib/admin/templates/admin/change_form.html:50
-msgid "Ordering"
-msgstr "Sakārtošana"
-
-#: contrib/admin/templates/admin/change_form.html:53
-msgid "Order:"
-msgstr "Sakārtojums:"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Sveicināti,"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Lapa nav atrasta"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Mēs atvainojamies, bet pieprasītā lapa nevar tikt atrasta."
-
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:24
-msgid "Log in"
-msgstr "Pieslēdzieties"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modeļi, kas pieejami %(name)s aplikācijā."
-
-#: contrib/admin/templates/admin/index.html:18
-#, fuzzy, python-format
-msgid "%(name)s"
-msgstr "Pievienot %(name)s"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Izmainīt"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Jums nav tiesības jebko labot."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Nesenās darbības"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Manas darbības"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Nav pieejams"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django saita administrācija"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administrēšana"
-
-#: 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
-#, fuzzy
-msgid "Username"
-msgstr "Lietotāja vārds:"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#: contrib/admin/templates/admin/auth/user/change_password.html:34
-#, fuzzy
-msgid "Password"
-msgstr "Parole:"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#, fuzzy
-msgid "Password (again)"
-msgstr "Paroles maiņa"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr ""
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:28
-#, python-format
-msgid "Enter a new password for the user %(username)s."
-msgstr ""
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Patreiz:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Nomainīt:"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Datums:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Laiks:"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Paldies par pavadīto laiku māja lapā."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Pieslēgties vēlreiz"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr ""
-"Jūs esat saņēmuši šo e-pastu sakarā ar Jūsu pieprasīto paroles pārstatīšanu"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "Jūsu lietotāja kontam %(site_name)s saitā"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Jūsu jaunais parole ir: %(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 "Jūs vienmēr varat nomainīt šo paroli aizejot uz šo lapu:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Jūsu lietotājvārds, ja gadījumā Jūs esat to aizmirsis:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Paldies par mūsu saita lietošanu!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s komanda"
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: 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
-msgid "Password reset"
-msgstr "Paroles pārstatīšana(reset)"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Paroles pārstatīšana sekmīga"
-
-#: 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 ""
-"Mēs aizsūtījām pa e-pastu jaunu paroli, ko Jūs esat apstiprinājis. Jūs to "
-"drīzumā saņemsiet."
-
-#: 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
-#: contrib/admin/templates/registration/password_change_done.html:4
-msgid "Password change"
-msgstr "Paroles maiņa"
-
-#: 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 ""
-"Drošības nolūkos ievadiet veco paroli un pēc tam ievadiet Jūsu jauno paroli "
-"divreiz lai mēs varētu pārbaudīt, vai tā ir uzrakstīta pareizi."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Vecā parole:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Jaunā parole:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Apstiprināt paroli:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Nomainīt manu paroli"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Paroles nomaiņa sekmīga"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Jūsu parole ir nomainīta."
-
-#: 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 ""
-"Esat aizmirsuši savu paroli? Ievadiet e-pasta adresi zemāk un mēs "
-"pārstatīsim Jūsu paroli un aizsūtīsim jaunu pa e-pastu."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-pasta adrese:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Paroles pārstatīšana"
+msgid "Change password: %s"
+msgstr "Paroles maiņa: %s"
#: contrib/admin/views/main.py:223
msgid "Site administration"
msgstr "Saita administrācija"
-#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:19
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" pievienots sekmīgi."
-
-#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
-#: contrib/admin/views/auth.py:24
-msgid "You may edit it again below."
-msgstr "Jūs varat labot to atkal zemāk."
-
-#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
+#: contrib/admin/views/main.py:271
+#: contrib/admin/views/main.py:356
#, python-format
msgid "You may add another %s below."
msgstr "Jūs varat pievienot vēl vienu %s zemāk."
@@ -1724,8 +1225,7 @@ msgstr "%(name)s \"%(obj)s\" nomainīts sekmīgi."
#: contrib/admin/views/main.py:353
#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr "%(name)s \"%(obj)s\" pievienots sekmīgi. Jūs to varat regiģēt zemāk."
#: contrib/admin/views/main.py:391
@@ -1733,59 +1233,61 @@ msgstr "%(name)s \"%(obj)s\" pievienots sekmīgi. Jūs to varat regiģēt zemāk
msgid "Change %s"
msgstr "Izmainīt %s"
-#: contrib/admin/views/main.py:473
+#: contrib/admin/views/main.py:476
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr ""
-#: contrib/admin/views/main.py:478
+#: contrib/admin/views/main.py:481
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr ""
-#: contrib/admin/views/main.py:511
+#: contrib/admin/views/main.py:514
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr "%(name)s \"%(obj)s\" sekmīgi izdzēsts."
-#: contrib/admin/views/main.py:514
+#: contrib/admin/views/main.py:517
msgid "Are you sure?"
msgstr "Vai esat pārliecināts?"
-#: contrib/admin/views/main.py:536
+#: contrib/admin/views/main.py:539
#, python-format
msgid "Change history: %s"
msgstr "Izmainīt vēsturi: %s"
-#: contrib/admin/views/main.py:570
+#: contrib/admin/views/main.py:573
#, python-format
msgid "Select %s"
msgstr "Izvēlēties %s"
-#: contrib/admin/views/main.py:570
+#: contrib/admin/views/main.py:573
#, python-format
msgid "Select %s to change"
msgstr "Izvēlēties %s lai izmainītu"
-#: contrib/admin/views/main.py:758
+#: contrib/admin/views/main.py:768
msgid "Database error"
-msgstr ""
+msgstr "Datubāzes kļūda"
+
+#: contrib/admin/views/decorators.py:10
+#: contrib/auth/forms.py:60
+msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
+msgstr "Lūdzu ievadiet lietotājvārdu un paroli. Atceraties ka abi lauki ir reģistrjūtīgi."
+
+#: contrib/admin/views/decorators.py:24
+#: contrib/admin/templates/admin/login.html:25
+msgid "Log in"
+msgstr "Pieslēdzieties"
#: 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 ""
-"Lūdzu pieslēdzieties vēlreiz, jo jūsu sesija ir novecojusi. Neuztraucieties: "
-"Jūsu ievadītie dati ir saglabāti."
+msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
+msgstr "Lūdzu pieslēdzieties vēlreiz, jo jūsu sesija ir novecojusi. Neuztraucieties: Jūsu ievadītie dati ir saglabāti."
#: 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 ""
-"Izskatās, ka Jūsu pārlūks neatbalsta sīkdatnes (cookies). Lūdzu ieslēdziet "
-"sīkdatņu atbalstu, pārlādējiet lapu un mēģiniet vēlreiz."
+msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
+msgstr "Izskatās, ka Jūsu pārlūks neatbalsta sīkdatnes (cookies). Lūdzu ieslēdziet sīkdatņu atbalstu, pārlādējiet lapu un mēģiniet vēlreiz."
#: contrib/admin/views/decorators.py:83
msgid "Usernames cannot contain the '@' character."
@@ -1796,50 +1298,55 @@ msgstr "Lietotājvārdi nevar saturēt simbolu '@'."
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr "Jūsu e-pasta adrese nav jūsu lietotājvārds. Lietojiet '%s' tā vietā."
-#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
+#: 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:77
+#: contrib/admin/views/doc.py:79
#: contrib/admin/views/doc.py:81
msgid "filter:"
-msgstr ""
+msgstr "filtrs:"
-#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
+#: contrib/admin/views/doc.py:135
+#: contrib/admin/views/doc.py:137
#: contrib/admin/views/doc.py:139
msgid "view:"
-msgstr ""
+msgstr "skats:"
#: contrib/admin/views/doc.py:164
-#, fuzzy, python-format
+#, python-format
msgid "App %r not found"
-msgstr "Lapa nav atrasta"
+msgstr "Aplikācija %r netika atrasta"
#: contrib/admin/views/doc.py:171
#, python-format
-msgid "Model %r not found in app %r"
+msgid "Model %(name)r not found in app %(label)r"
msgstr ""
#: contrib/admin/views/doc.py:183
#, python-format
-msgid "the related `%s.%s` object"
+msgid "the related `%(label)s.%(type)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
+#: 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 ""
+msgstr "modelis:"
#: contrib/admin/views/doc.py:214
#, python-format
-msgid "related `%s.%s` objects"
-msgstr ""
+msgid "related `%(label)s.%(name)s` objects"
+msgstr "saistītie `%(label)s.%(name)s` objekti"
#: contrib/admin/views/doc.py:219
#, python-format
msgid "all %s"
-msgstr ""
+msgstr "visi %s"
#: contrib/admin/views/doc.py:224
#, python-format
@@ -1851,9 +1358,12 @@ msgstr ""
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
+#: 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 "Vesels skaitlis"
@@ -1861,7 +1371,8 @@ msgstr "Vesels skaitlis"
msgid "Boolean (Either True or False)"
msgstr "Boolean (Pareizs vai Nepareizs)"
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
+#: contrib/admin/views/doc.py:293
+#: contrib/admin/views/doc.py:311
#, python-format
msgid "String (up to %(maxlength)s)"
msgstr "Virkne (līdz pat %(maxlength)s)"
@@ -1882,7 +1393,8 @@ msgstr "Datums (ar laiku)"
msgid "E-mail address"
msgstr "E-pasta adrese"
-#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:298
+#: contrib/admin/views/doc.py:299
#: contrib/admin/views/doc.py:302
msgid "File path"
msgstr "Faila ceļš"
@@ -1911,6 +1423,11 @@ msgstr "Teksts"
msgid "Time"
msgstr "Laiks"
+#: contrib/admin/views/doc.py:315
+#: contrib/flatpages/models.py:7
+msgid "URL"
+msgstr "URL"
+
#: contrib/admin/views/doc.py:316
msgid "U.S. state (two uppercase letters)"
msgstr "ASV štats (divi augšējā reģistra burti)"
@@ -1924,403 +1441,1425 @@ msgstr "XML teksts"
msgid "%s does not appear to be a urlpattern object"
msgstr ""
-#: contrib/admin/views/auth.py:30
-#, fuzzy
-msgid "Add user"
-msgstr "Pievienot %s"
+#: contrib/admin/templates/widget/file.html:2
+msgid "Currently:"
+msgstr "Patreiz:"
-#: contrib/admin/views/auth.py:57
-#, fuzzy
-msgid "Password changed successfully."
-msgstr "Paroles nomaiņa sekmīga"
+#: contrib/admin/templates/widget/file.html:3
+msgid "Change:"
+msgstr "Nomainīt:"
-#: contrib/admin/views/auth.py:64
-#, fuzzy, python-format
-msgid "Change password: %s"
+#: contrib/admin/templates/widget/date_time.html:3
+msgid "Date:"
+msgstr "Datums:"
+
+#: contrib/admin/templates/widget/date_time.html:4
+msgid "Time:"
+msgstr "Laiks:"
+
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/auth/user/change_password.html:9
+#: 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 "Dokumentācija"
+
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/auth/user/change_password.html:9
+#: contrib/admin/templates/admin/auth/user/change_password.html:15
+#: contrib/admin/templates/admin/auth/user/change_password.html:46
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/admin_doc/view_detail.html:4
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
+#: contrib/admin/templates/admin_doc/template_detail.html:4
+#: contrib/admin/templates/admin_doc/template_tag_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
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+msgid "Change password"
msgstr "Paroles maiņa"
-#: newforms/fields.py:101 newforms/fields.py:254
+#: contrib/admin/templates/admin/change_list.html:6
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/500.html:4
+#: contrib/admin/templates/admin/invalid_setup.html:4
+#: contrib/admin/templates/admin/change_form.html:13
+#: contrib/admin/templates/admin/delete_confirmation.html:6
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/auth/user/change_password.html:12
+#: 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 "Sākums"
+
+#: contrib/admin/templates/admin/change_list.html:12
#, python-format
-msgid "Ensure this value has at most %d characters."
-msgstr ""
+msgid "Add %(name)s"
+msgstr "Pievienot %(name)s"
-#: newforms/fields.py:103 newforms/fields.py:256
+#: contrib/admin/templates/admin/filter.html:2
#, python-format
-msgid "Ensure this value has at least %d characters."
-msgstr ""
+msgid " By %(filter_title)s "
+msgstr " Pēc %(filter_title)s "
-#: newforms/fields.py:126 core/validators.py:120
-msgid "Enter a whole number."
-msgstr "Ievadiet veselus skaitļus."
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/change_form.html:21
+msgid "History"
+msgstr "Vēsture"
-#: newforms/fields.py:128
-#, fuzzy, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Šai vērtībai jābūt %s pakāpei."
+#: contrib/admin/templates/admin/object_history.html:18
+msgid "Date/time"
+msgstr "Datums/laiks"
-#: newforms/fields.py:130
+#: contrib/admin/templates/admin/object_history.html:19
+msgid "User"
+msgstr "Lietotājs"
+
+#: contrib/admin/templates/admin/object_history.html:20
+msgid "Action"
+msgstr "darbība"
+
+#: 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 "Šim objektam nav izmaiņu vēsture. Tas visdrīzāk nav pievienots izmantojot administrācijas saitu."
+
+#: contrib/admin/templates/admin/search_form.html:8
+msgid "Go"
+msgstr "Aiziet!"
+
+#: contrib/admin/templates/admin/search_form.html:10
#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr ""
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] ""
+msgstr[1] ""
-#: newforms/fields.py:163
-#, fuzzy
-msgid "Enter a valid date."
-msgstr "Ievadiet korektu faila vārdu."
-
-#: newforms/fields.py:190
-#, fuzzy
-msgid "Enter a valid time."
-msgstr "Ievadiet korektu faila vārdu."
-
-#: newforms/fields.py:226
-#, fuzzy
-msgid "Enter a valid date/time."
-msgstr "Ievadiet korektu faila vārdu."
-
-#: newforms/fields.py:240
-#, fuzzy
-msgid "Enter a valid value."
-msgstr "Ievadiet korektu faila vārdu."
-
-#: newforms/fields.py:269 core/validators.py:161
-msgid "Enter a valid e-mail address."
-msgstr "Ievadiet korektu e-pasta adresi."
-
-#: newforms/fields.py:287 newforms/fields.py:309
-#, fuzzy
-msgid "Enter a valid URL."
-msgstr "Ievadiet korektu faila vārdu."
-
-#: newforms/fields.py:311
-#, fuzzy
-msgid "This URL appears to be a broken link."
-msgstr "URL %s ir salauzta saite."
-
-#: newforms/fields.py:359
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-
-#: newforms/fields.py:377 newforms/fields.py:453
-#, fuzzy
-msgid "Enter a list of values."
-msgstr "Ievadiet korektu faila vārdu."
-
-#: newforms/fields.py:386
+#: contrib/admin/templates/admin/search_form.html:10
#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
+msgid "%(full_result_count)s total"
msgstr ""
-#: template/defaultfilters.py:436
+#: contrib/admin/templates/admin/pagination.html:10
+msgid "Show all"
+msgstr "Rādīt visu"
+
+#: contrib/admin/templates/admin/base_site.html:4
+msgid "Django site admin"
+msgstr "Django saita administrācija"
+
+#: contrib/admin/templates/admin/base_site.html:7
+msgid "Django administration"
+msgstr "Django administrēšana"
+
+#: contrib/admin/templates/admin/500.html:4
+msgid "Server error"
+msgstr "Servera kļūda"
+
+#: contrib/admin/templates/admin/500.html:6
+msgid "Server error (500)"
+msgstr "Servera kļūda (500)"
+
+#: contrib/admin/templates/admin/500.html:9
+msgid "Server Error (500)"
+msgstr "Servera kļūda (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 "Ir notikusi kļūda. Tas ir paziņots saita administratoriem ar e-pasta starpniecību un visdrīzākajā laikā tiks izlabots. Paldies par sapratni."
+
+#: 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 "Kaut kas nav kārtībā ar Jūsu datubāzes instalāciju. Pārliecinieties vai attiecīgās tabulas ir izveidotas un attiecīgajam lietotājam ir tiesības lasīt datubāzi."
+
+#: contrib/admin/templates/admin/index.html:17
+#, python-format
+msgid "Models available in the %(name)s application."
+msgstr "Modeļi, kas pieejami %(name)s aplikācijā."
+
+#: 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
+msgid "Add"
+msgstr "Pievienot"
+
+#: contrib/admin/templates/admin/index.html:34
+msgid "Change"
+msgstr "Izmainīt"
+
+#: contrib/admin/templates/admin/index.html:44
+msgid "You don't have permission to edit anything."
+msgstr "Jums nav tiesības jebko labot."
+
+#: contrib/admin/templates/admin/index.html:52
+msgid "Recent Actions"
+msgstr "Nesenās darbības"
+
+#: contrib/admin/templates/admin/index.html:53
+msgid "My Actions"
+msgstr "Manas darbības"
+
+#: contrib/admin/templates/admin/index.html:57
+msgid "None available"
+msgstr "Nav pieejams"
+
+#: contrib/admin/templates/admin/404.html:4
+#: contrib/admin/templates/admin/404.html:8
+msgid "Page not found"
+msgstr "Lapa nav atrasta"
+
+#: contrib/admin/templates/admin/404.html:10
+msgid "We're sorry, but the requested page could not be found."
+msgstr "Mēs atvainojamies, bet pieprasītā lapa nevar tikt atrasta."
+
+#: contrib/admin/templates/admin/filters.html:4
+msgid "Filter"
+msgstr "Filtrs"
+
+#: contrib/admin/templates/admin/change_form.html:22
+msgid "View on site"
+msgstr "Apskatīt saitā"
+
+#: contrib/admin/templates/admin/change_form.html:32
+#: contrib/admin/templates/admin/auth/user/change_password.html:24
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Lūdzu izlabojiet kļūdu zemāk"
+msgstr[1] "Lūdzu izlabojiet kļūdas zemāk"
+
+#: contrib/admin/templates/admin/change_form.html:50
+msgid "Ordering"
+msgstr "Sakārtošana"
+
+#: contrib/admin/templates/admin/change_form.html:53
+msgid "Order:"
+msgstr "Sakārtojums:"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:9
+#: contrib/admin/templates/admin/submit_line.html:3
+msgid "Delete"
+msgstr "Dzēst"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:14
+#, python-format
+msgid "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 "Izdzēšot objektu %(object_name)s '%(escaped_object)s' tiks dzēsti visi saistītie objekti , bet Jums nav tiesību dzēst sekojošus objektu tipus:"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:21
+#, python-format
+msgid "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
+msgstr "Vai esat pārliecināts, ka vēlaties dzēst %(object_name)s \"%(escaped_object)s\"? Tiks dzēsti asrī sekojoši saistītie objekti:"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:26
+msgid "Yes, I'm sure"
+msgstr "Jā, es esmu pārliecināts"
+
+#: contrib/admin/templates/admin/base.html:25
+msgid "Welcome,"
+msgstr "Sveicināti,"
+
+#: contrib/admin/templates/admin/submit_line.html:4
+msgid "Save as new"
+msgstr "Saglabāt kā jaunu"
+
+#: contrib/admin/templates/admin/submit_line.html:5
+msgid "Save and add another"
+msgstr "Saglabāt un pievienot vēl vienu"
+
+#: contrib/admin/templates/admin/submit_line.html:6
+msgid "Save and continue editing"
+msgstr "Saglabāt un turpināt labošanu"
+
+#: contrib/admin/templates/admin/submit_line.html:7
+msgid "Save"
+msgstr "Saglabāt"
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:28
+#, python-format
+msgid "Enter a new password for the user %(username)s."
+msgstr "Ievadiet jaunu paroli lietotājam %(username)s."
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:34
+#: contrib/admin/templates/admin/auth/user/add_form.html:18
+msgid "Password"
+msgstr "Parole"
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/admin/templates/admin/auth/user/add_form.html:23
+msgid "Password (again)"
+msgstr "Parole (vēlreiz)"
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:40
+#: contrib/admin/templates/admin/auth/user/add_form.html:24
+msgid "Enter the same password as above, for verification."
+msgstr "Ievadot tādu pašu paroli, kā augstāk, pārbaudei."
+
+#: 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 "Lietotāja vārds"
+
+#: 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 "Paroles maiņa"
+
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
+msgid "Password change successful"
+msgstr "Paroles nomaiņa sekmīga"
+
+#: contrib/admin/templates/registration/password_change_done.html:12
+msgid "Your password was changed."
+msgstr "Jūsu parole ir nomainīta."
+
+#: 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 "Paroles pārstatīšana(reset)"
+
+#: 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 "Esat aizmirsuši savu paroli? Ievadiet e-pasta adresi zemāk un mēs pārstatīsim Jūsu paroli un aizsūtīsim jaunu pa e-pastu."
+
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "E-mail address:"
+msgstr "E-pasta adrese:"
+
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "Reset my password"
+msgstr "Paroles pārstatīšana"
+
+#: contrib/admin/templates/registration/logged_out.html:8
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "Paldies par pavadīto laiku māja lapā."
+
+#: contrib/admin/templates/registration/logged_out.html:10
+msgid "Log in again"
+msgstr "Pieslēgties vēlreiz"
+
+#: contrib/admin/templates/registration/password_reset_done.html:6
+#: contrib/admin/templates/registration/password_reset_done.html:10
+msgid "Password reset successful"
+msgstr "Paroles pārstatīšana sekmīga"
+
+#: 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 "Mēs aizsūtījām pa e-pastu jaunu paroli, ko Jūs esat apstiprinājis. Jūs to drīzumā saņemsiet."
+
+#: 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 "Drošības nolūkos ievadiet veco paroli un pēc tam ievadiet Jūsu jauno paroli divreiz lai mēs varētu pārbaudīt, vai tā ir uzrakstīta pareizi."
+
+#: contrib/admin/templates/registration/password_change_form.html:17
+msgid "Old password:"
+msgstr "Vecā parole:"
+
+#: contrib/admin/templates/registration/password_change_form.html:19
+msgid "New password:"
+msgstr "Jaunā parole:"
+
+#: contrib/admin/templates/registration/password_change_form.html:21
+msgid "Confirm password:"
+msgstr "Apstiprināt paroli:"
+
+#: contrib/admin/templates/registration/password_change_form.html:23
+msgid "Change my password"
+msgstr "Nomainīt manu paroli"
+
+#: contrib/admin/templates/registration/password_reset_email.html:2
+msgid "You're receiving this e-mail because you requested a password reset"
+msgstr "Jūs esat saņēmuši šo e-pastu sakarā ar Jūsu pieprasīto paroles pārstatīšanu"
+
+#: contrib/admin/templates/registration/password_reset_email.html:3
+#, python-format
+msgid "for your user account at %(site_name)s"
+msgstr "Jūsu lietotāja kontam %(site_name)s saitā"
+
+#: contrib/admin/templates/registration/password_reset_email.html:5
+#, python-format
+msgid "Your new password is: %(new_password)s"
+msgstr "Jūsu jaunais parole ir: %(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 "Jūs vienmēr varat nomainīt šo paroli aizejot uz šo lapu:"
+
+#: contrib/admin/templates/registration/password_reset_email.html:11
+msgid "Your username, in case you've forgotten:"
+msgstr "Jūsu lietotājvārds, ja gadījumā Jūs esat to aizmirsis:"
+
+#: contrib/admin/templates/registration/password_reset_email.html:13
+msgid "Thanks for using our site!"
+msgstr "Paldies par mūsu saita lietošanu!"
+
+#: contrib/admin/templates/registration/password_reset_email.html:15
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "%(site_name)s komanda"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Bookmarklets"
+msgstr "Grāmatzīmes"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:5
+msgid "Documentation bookmarklets"
+msgstr "Dokumentācijas grāmatzīmes"
+
+#: 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 "Dokumentācija šai lapai"
+
+#: 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 "Pārvieto jūs no jebkuras lapas dokumentācijā uz skatu, kas ģenerē šo lapu."
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:22
+msgid "Show object ID"
+msgstr "Parādīt objekta 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 "Parāda content-type un unikālo ID lapām, kas atspoguļo vientuļu objektu."
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:25
+msgid "Edit this object (current window)"
+msgstr "Labot šo objektu (patreizējā logā)"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:26
+msgid "Jumps to the admin page for pages that represent a single object."
+msgstr "Pāriet uz admininstrācijas lapu tām lapām, kas atspoguļo vientuļu objektu."
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:28
+msgid "Edit this object (new window)"
+msgstr "Labot šo lapu (jaunā logā)"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:29
+msgid "As above, but opens the admin page in a new window."
+msgstr "Tāpat kā iepriekš, tikai atver administrācijas lapu jaunā logā."
+
+#: contrib/contenttypes/models.py:36
+msgid "python model class name"
+msgstr "python modeļa klases nosaukums"
+
+#: contrib/contenttypes/models.py:39
+msgid "content type"
+msgstr "satura tips"
+
+#: contrib/contenttypes/models.py:40
+msgid "content types"
+msgstr "satura tips"
+
+#: contrib/auth/views.py:40
+msgid "Logged out"
+msgstr "Izlogojies"
+
+#: contrib/auth/models.py:44
+#: contrib/auth/models.py:64
+msgid "name"
+msgstr "nosaukums"
+
+#: contrib/auth/models.py:46
+msgid "codename"
+msgstr "kods"
+
+#: contrib/auth/models.py:49
+msgid "permission"
+msgstr "tiesība"
+
+#: contrib/auth/models.py:50
+#: contrib/auth/models.py:65
+msgid "permissions"
+msgstr "tiesības"
+
+#: contrib/auth/models.py:68
+msgid "group"
+msgstr "grupa"
+
+#: contrib/auth/models.py:69
+#: contrib/auth/models.py:109
+msgid "groups"
+msgstr "grupas"
+
+#: contrib/auth/models.py:99
+msgid "username"
+msgstr "lietotāja vārds"
+
+#: contrib/auth/models.py:99
+msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
+msgstr ""
+
+#: contrib/auth/models.py:100
+msgid "first name"
+msgstr "vārds"
+
+#: contrib/auth/models.py:101
+msgid "last name"
+msgstr "uzvārds"
+
+#: contrib/auth/models.py:102
+msgid "e-mail address"
+msgstr "e-pasta adrese"
+
+#: contrib/auth/models.py:103
+msgid "password"
+msgstr "parole"
+
+#: contrib/auth/models.py:103
+msgid "Use '[algo]$[salt]$[hexdigest]' or use the change password form."
+msgstr ""
+
+#: contrib/auth/models.py:104
+msgid "staff status"
+msgstr "personāla statuss"
+
+#: contrib/auth/models.py:104
+msgid "Designates whether the user can log into this admin site."
+msgstr "Atzīmējiet, ja vēlaties, lai lietotājs var pieslēgties administrācijas lapā."
+
+#: contrib/auth/models.py:105
+msgid "active"
+msgstr "aktīvs"
+
+#: contrib/auth/models.py:105
+msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts."
+msgstr "Nosaka, ka lietotājs var pieslēgties Django administrācijas lapai. Ieteicams atcelt šo izvēli nevis dzēst lietotājus."
+
+#: contrib/auth/models.py:106
+msgid "superuser status"
+msgstr "superlietotāja statuss"
+
+#: contrib/auth/models.py:106
+msgid "Designates that this user has all permissions without explicitly assigning them."
+msgstr ""
+
+#: contrib/auth/models.py:107
+msgid "last login"
+msgstr "pēdējoreiz pieslēdzies"
+
+#: contrib/auth/models.py:108
+msgid "date joined"
+msgstr "datums, kad pievienojies"
+
+#: contrib/auth/models.py:110
+msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
+msgstr "Papildus manuāli piešķirtajām atļaujām, šis lietotājs papildus iegūs visas atļaujas, kas piešķirtas grupām, kurās lietotājs atrodas."
+
+#: contrib/auth/models.py:111
+msgid "user permissions"
+msgstr "lietotāja atļaujas"
+
+#: contrib/auth/models.py:115
+msgid "user"
+msgstr "lietotājs"
+
+#: contrib/auth/models.py:116
+msgid "users"
+msgstr "lietotāji"
+
+#: contrib/auth/models.py:122
+msgid "Personal info"
+msgstr "Personīgā informācija"
+
+#: contrib/auth/models.py:123
+msgid "Permissions"
+msgstr "Atļaujas"
+
+#: contrib/auth/models.py:124
+msgid "Important dates"
+msgstr "Svarīgi datumi"
+
+#: contrib/auth/models.py:125
+msgid "Groups"
+msgstr "Grupas"
+
+#: contrib/auth/models.py:269
+msgid "message"
+msgstr "ziņojums"
+
+#: contrib/auth/models.py:282
+msgid "AnonymousUser"
+msgstr "Anonīms lietotājs"
+
+#: contrib/auth/forms.py:17
+#: contrib/auth/forms.py:138
+msgid "The two password fields didn't match."
+msgstr ""
+
+#: contrib/auth/forms.py:25
+msgid "A user with that username already exists."
+msgstr "Lietotājs ar šādu lietotāja vārdu jau eksistē."
+
+#: contrib/auth/forms.py:53
+msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
+msgstr "Izskatās, ka Jūsu pārlūks neatbalsta cookies. Cookies ir obligātas, lai pieslēgtos."
+
+#: contrib/auth/forms.py:62
+msgid "This account is inactive."
+msgstr "Šis konts ir neaktīvs."
+
+#: contrib/auth/forms.py:85
+msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?"
+msgstr ""
+
+#: contrib/auth/forms.py:117
+msgid "The two 'new password' fields didn't match."
+msgstr "Abi \"Jaunā parole\" lauki nesakrīt."
+
+#: contrib/auth/forms.py:124
+msgid "Your old password was entered incorrectly. Please enter it again."
+msgstr "Jūsu iepriekšējā parole tika ievadīta nekorekti. Lūdzu ievadiet to atkārtoti."
+
+#: contrib/localflavor/uk/forms.py:18
+msgid "Enter a postcode. A space is required between the two postcode parts."
+msgstr "Ievadiet pasta indeksu. Atstarpe ir nepieciešama starp abām pasta indeksa daļām."
+
+#: contrib/localflavor/br/forms.py:18
+msgid "Enter a zip code in the format XXXXX-XXX."
+msgstr "Ievadiet pasta indeksu XXXXX-XXX formātā."
+
+#: contrib/localflavor/br/forms.py:30
+msgid "Phone numbers must be in XX-XXXX-XXXX format."
+msgstr "Telefona numuriem jābūt XXX-XXXX-XXXX formātā."
+
+#: contrib/localflavor/br/forms.py:72
+msgid "This field requires only numbers."
+msgstr "Šis lauks drīkst saturēt tikai skaitļus."
+
+#: contrib/localflavor/br/forms.py:74
+msgid "This field requires at most 11 digits or 14 characters."
+msgstr "Šī lauka vērtībai jabūt vismaz 11 cipariem vai 14 simboliem."
+
+#: contrib/localflavor/br/forms.py:84
+msgid "Invalid CPF number."
+msgstr ""
+
+#: contrib/localflavor/br/forms.py:106
+msgid "This field requires at least 14 digits"
+msgstr "Šim laukam jasastāv vismaz no 14 cipariem."
+
+#: contrib/localflavor/br/forms.py:116
+msgid "Invalid CNPJ number."
+msgstr ""
+
+#: contrib/localflavor/au/forms.py:18
+msgid "Enter a 4 digit post code."
+msgstr "Ievadiet pasta indeksu, kurš sastāv no 4 cipariem."
+
+#: contrib/localflavor/fr/forms.py:17
+#: contrib/localflavor/de/forms.py:16
+#: contrib/localflavor/fi/forms.py:14
+msgid "Enter a zip code in the format XXXXX."
+msgstr "Ievadiet pasta indeksu formātā XXXXX."
+
+#: contrib/localflavor/us/forms.py:18
+msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
+msgstr ""
+
+#: contrib/localflavor/us/forms.py:51
+msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:5
+msgid "Baden-Wuerttemberg"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:6
+msgid "Bavaria"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:7
+msgid "Berlin"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:8
+msgid "Brandenburg"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:9
+msgid "Bremen"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:10
+msgid "Hamburg"
+msgstr "Hamburga"
+
+#: contrib/localflavor/de/de_states.py:11
+#, fuzzy
+msgid "Hessen"
+msgstr "sesija"
+
+#: contrib/localflavor/de/de_states.py:12
+msgid "Mecklenburg-Western Pomerania"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:13
+msgid "Lower Saxony"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:14
+msgid "North Rhine-Westphalia"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:15
+msgid "Rhineland-Palatinate"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:16
+msgid "Saarland"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:17
+msgid "Saxony"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:18
+msgid "Saxony-Anhalt"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:19
+msgid "Schleswig-Holstein"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:20
+msgid "Thuringia"
+msgstr ""
+
+#: contrib/localflavor/de/forms.py:60
+msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format."
+msgstr "Ievadiet korektu vāciešu identifikācijas nummuru XXXXXXXXXXX-XXXXXXX-XXXXXXX-X formātā."
+
+#: contrib/localflavor/jp/jp_prefectures.py:4
+msgid "Hokkaido"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:5
+msgid "Aomori"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:6
+#, fuzzy
+msgid "Iwate"
+msgstr "Datums:"
+
+#: contrib/localflavor/jp/jp_prefectures.py:7
+msgid "Miyagi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:8
+msgid "Akita"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:9
+msgid "Yamagata"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:10
+msgid "Fukushima"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:11
+msgid "Ibaraki"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:12
+msgid "Tochigi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:13
+msgid "Gunma"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:14
+msgid "Saitama"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:15
+msgid "Chiba"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:16
+msgid "Tokyo"
+msgstr "Tokija"
+
+#: contrib/localflavor/jp/jp_prefectures.py:17
+msgid "Kanagawa"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:18
+msgid "Yamanashi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:19
+msgid "Nagano"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:20
+msgid "Niigata"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:21
+msgid "Toyama"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:22
+msgid "Ishikawa"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:23
+msgid "Fukui"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:24
+msgid "Gifu"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:25
+msgid "Shizuoka"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:26
+msgid "Aichi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:27
+msgid "Mie"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:28
+msgid "Shiga"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:29
+msgid "Kyoto"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:30
+msgid "Osaka"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:31
+msgid "Hyogo"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:32
+msgid "Nara"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:33
+msgid "Wakayama"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:34
+msgid "Tottori"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:35
+#, fuzzy
+msgid "Shimane"
+msgstr "Izmainīt"
+
+#: contrib/localflavor/jp/jp_prefectures.py:36
+msgid "Okayama"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:37
+msgid "Hiroshima"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:38
+msgid "Yamaguchi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:39
+msgid "Tokushima"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:40
+msgid "Kagawa"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:41
+#, fuzzy
+msgid "Ehime"
+msgstr "Laiks"
+
+#: contrib/localflavor/jp/jp_prefectures.py:42
+msgid "Kochi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:43
+msgid "Fukuoka"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:44
+msgid "Saga"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:45
+msgid "Nagasaki"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:46
+msgid "Kumamoto"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:47
+msgid "Oita"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:48
+msgid "Miyazaki"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:49
+msgid "Kagoshima"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:50
+msgid "Okinawa"
+msgstr "Okinava"
+
+#: contrib/localflavor/jp/forms.py:21
+msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
+msgstr "Ievadiet pasta indeksu XXXXXXX vai XXX-XXXX formātā."
+
+#: contrib/localflavor/ch/ch_states.py:5
+msgid "Aargau"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:6
+msgid "Appenzell Innerrhoden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:7
+msgid "Appenzell Ausserrhoden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:8
+msgid "Basel-Stadt"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:9
+msgid "Basel-Land"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:10
+#, fuzzy
+msgid "Berne"
+msgstr "lietotāja vārds"
+
+#: contrib/localflavor/ch/ch_states.py:11
+msgid "Fribourg"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:12
+msgid "Geneva"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:13
+#, fuzzy
+msgid "Glarus"
+msgstr "Grupas"
+
+#: contrib/localflavor/ch/ch_states.py:14
+msgid "Graubuenden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:15
+msgid "Jura"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:16
+#, fuzzy
+msgid "Lucerne"
+msgstr "lietotāja vārds"
+
+#: contrib/localflavor/ch/ch_states.py:17
+msgid "Neuchatel"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:18
+msgid "Nidwalden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:19
+msgid "Obwalden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:20
+msgid "Schaffhausen"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:21
+msgid "Schwyz"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:22
+msgid "Solothurn"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:23
+msgid "St. Gallen"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:24
+#, fuzzy
+msgid "Thurgau"
+msgstr "Ceturdiena"
+
+#: contrib/localflavor/ch/ch_states.py:25
+msgid "Ticino"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:26
+msgid "Uri"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:27
+msgid "Valais"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:28
+msgid "Vaud"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:29
+#, fuzzy
+msgid "Zug"
+msgstr "aug"
+
+#: contrib/localflavor/ch/ch_states.py:30
+msgid "Zurich"
+msgstr ""
+
+#: contrib/localflavor/ch/forms.py:18
+#: contrib/localflavor/no/forms.py:15
+msgid "Enter a zip code in the format XXXX."
+msgstr "Ievadiet pasta indeksu formātā XXXX."
+
+#: contrib/localflavor/ch/forms.py:90
+msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format."
+msgstr "Lūdzu ievadiet korektu šveiciešu identifikācijas vai pases nummuru X1234567<0 vai 1234567890 formātā."
+
+#: contrib/localflavor/is_/forms.py:16
+msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
+msgstr "Lūdzu ievadiet korektu islandiešu identifikācijas nummuru XXXXXX-XXXX formātā."
+
+#: contrib/localflavor/is_/forms.py:30
+msgid "The Icelandic identification number is not valid."
+msgstr "Islandiešu identifikācijas nummurs nav korekts."
+
+#: contrib/localflavor/it/forms.py:16
+msgid "Enter a valid zip code."
+msgstr "Ievadiet korektu pasta indeksu."
+
+#: contrib/localflavor/it/forms.py:41
+msgid "Enter a valid Social Security number."
+msgstr "Ievadiet korektu sociālās drošības nummuru."
+
+#: contrib/localflavor/it/forms.py:68
+msgid "Enter a valid VAT number."
+msgstr "Ievadiet korektu VAT nummuru."
+
+#: contrib/localflavor/no/forms.py:36
+msgid "Enter a valid Norwegian social security number."
+msgstr "Lūdzu ievadiet korektu norvēģu sociālās drošības nummuru."
+
+#: contrib/localflavor/cl/forms.py:21
+msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
+msgstr "Ievadiet korektu čīliešu RUT XX.XXX.XXX-X formātā."
+
+#: contrib/localflavor/cl/forms.py:26
+msgid "Enter valid a Chilean RUT"
+msgstr "Ievadiet korektu čīliešu RUT"
+
+#: contrib/localflavor/fi/forms.py:40
+#: contrib/localflavor/fi/forms.py:45
+msgid "Enter a valid Finnish social security number."
+msgstr "Ievadiet korektu somu sociālās drošības nummuru."
+
+#: contrib/sessions/models.py:68
+msgid "session key"
+msgstr "sesijas atslēga"
+
+#: contrib/sessions/models.py:69
+msgid "session data"
+msgstr "sesijas dati"
+
+#: contrib/sessions/models.py:70
+msgid "expire date"
+msgstr "beigu datums"
+
+#: contrib/sessions/models.py:74
+msgid "session"
+msgstr "sesija"
+
+#: contrib/sessions/models.py:75
+msgid "sessions"
+msgstr "sesijas"
+
+#: contrib/flatpages/models.py:8
+msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgstr "Piemēram: '/about/contact/'. Pārliecinieties, ka esat ievietojuši sākuma un beigu slīpsvītras."
+
+#: contrib/flatpages/models.py:9
+msgid "title"
+msgstr "virsraksts"
+
+#: contrib/flatpages/models.py:10
+msgid "content"
+msgstr "saturs"
+
+#: contrib/flatpages/models.py:11
+msgid "enable comments"
+msgstr "ieslēgt komentārus"
+
+#: contrib/flatpages/models.py:12
+msgid "template name"
+msgstr "šablona nosaukums"
+
+#: contrib/flatpages/models.py:13
+msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."
+msgstr "Piemēram: 'flatpages/contact_page.html'. Ja tas nav norādīts, sistēma lietos 'flatpages/default.html'."
+
+#: contrib/flatpages/models.py:14
+msgid "registration required"
+msgstr "reģistrācija obligāta"
+
+#: contrib/flatpages/models.py:14
+msgid "If this is checked, only logged-in users will be able to view the page."
+msgstr "Ja tas ir atzīmēts, tikai lietotāji, kas ir pieslēgušies sistēmās redzēs šo lapu."
+
+#: contrib/flatpages/models.py:18
+msgid "flat page"
+msgstr "vienkārša lapa"
+
+#: contrib/flatpages/models.py:19
+msgid "flat pages"
+msgstr "vienkāršas lapas"
+
+#: utils/dates.py:6
+msgid "Monday"
+msgstr "Pirmdiena"
+
+#: utils/dates.py:6
+msgid "Tuesday"
+msgstr "Otrdiena"
+
+#: utils/dates.py:6
+msgid "Wednesday"
+msgstr "Trešdiena"
+
+#: utils/dates.py:6
+msgid "Thursday"
+msgstr "Ceturdiena"
+
+#: utils/dates.py:6
+msgid "Friday"
+msgstr "Piektdiena"
+
+#: utils/dates.py:7
+msgid "Saturday"
+msgstr "Sestdiena"
+
+#: utils/dates.py:7
+msgid "Sunday"
+msgstr "Svētdiena"
+
+#: utils/dates.py:14
+msgid "January"
+msgstr "Janvāris"
+
+#: utils/dates.py:14
+msgid "February"
+msgstr "Februāris"
+
+#: utils/dates.py:14
+#: utils/dates.py:27
+msgid "March"
+msgstr "Marts"
+
+#: utils/dates.py:14
+#: utils/dates.py:27
+msgid "April"
+msgstr "Aprīlis"
+
+#: utils/dates.py:14
+#: utils/dates.py:27
+msgid "May"
+msgstr "Maijs"
+
+#: utils/dates.py:14
+#: utils/dates.py:27
+msgid "June"
+msgstr "Jūnijs"
+
+#: utils/dates.py:15
+#: utils/dates.py:27
+msgid "July"
+msgstr "Jūlijs"
+
+#: utils/dates.py:15
+msgid "August"
+msgstr "Augusts"
+
+#: utils/dates.py:15
+msgid "September"
+msgstr "Septembris"
+
+#: utils/dates.py:15
+msgid "October"
+msgstr "Oktobris"
+
+#: utils/dates.py:15
+msgid "November"
+msgstr "Novembris"
+
+#: utils/dates.py:16
+msgid "December"
+msgstr "Decembris"
+
+#: utils/dates.py:19
+msgid "jan"
+msgstr "jan"
+
+#: utils/dates.py:19
+msgid "feb"
+msgstr "feb"
+
+#: utils/dates.py:19
+msgid "mar"
+msgstr "mar"
+
+#: utils/dates.py:19
+msgid "apr"
+msgstr "apr"
+
+#: utils/dates.py:19
+msgid "may"
+msgstr "mai"
+
+#: utils/dates.py:19
+msgid "jun"
+msgstr "jūn"
+
+#: utils/dates.py:20
+msgid "jul"
+msgstr "jūl"
+
+#: utils/dates.py:20
+msgid "aug"
+msgstr "aug"
+
+#: utils/dates.py:20
+msgid "sep"
+msgstr "sep"
+
+#: utils/dates.py:20
+msgid "oct"
+msgstr "okt"
+
+#: utils/dates.py:20
+msgid "nov"
+msgstr "nov"
+
+#: utils/dates.py:20
+msgid "dec"
+msgstr "dec"
+
+#: utils/dates.py:27
+msgid "Jan."
+msgstr "Jan."
+
+#: utils/dates.py:27
+msgid "Feb."
+msgstr "Feb."
+
+#: utils/dates.py:28
+msgid "Aug."
+msgstr "Aug."
+
+#: utils/dates.py:28
+msgid "Sept."
+msgstr "Sept."
+
+#: utils/dates.py:28
+msgid "Oct."
+msgstr "Okt."
+
+#: utils/dates.py:28
+msgid "Nov."
+msgstr "Nov."
+
+#: utils/dates.py:28
+msgid "Dec."
+msgstr "Dec."
+
+#: utils/timesince.py:12
+msgid "year"
+msgid_plural "years"
+msgstr[0] "gads"
+msgstr[1] "gadi"
+
+#: utils/timesince.py:13
+msgid "month"
+msgid_plural "months"
+msgstr[0] "mēnesis"
+msgstr[1] "mēneši"
+
+#: utils/timesince.py:14
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "nedēļa"
+msgstr[1] "nedēļas"
+
+#: utils/timesince.py:15
+msgid "day"
+msgid_plural "days"
+msgstr[0] "diena"
+msgstr[1] "dienas"
+
+#: utils/timesince.py:16
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "stunda"
+msgstr[1] "stundas"
+
+#: utils/timesince.py:17
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minūte"
+msgstr[1] "minūtes"
+
+#: utils/timesince.py:40
+#, python-format
+msgid "%d milliseconds"
+msgstr "%d millisekundes"
+
+#: utils/timesince.py:41
+#, python-format
+msgid "%(number)d %(type)s"
+msgstr "%(number)d %(type)s"
+
+#: utils/timesince.py:47
+#, python-format
+msgid ", %(number)d %(type)s"
+msgstr ", %(number)d %(type)s"
+
+#: utils/dateformat.py:40
+#, fuzzy
+msgid "p.m."
+msgstr "p.m."
+
+#: utils/dateformat.py:41
+#, fuzzy
+msgid "a.m."
+msgstr "a.m."
+
+#: utils/dateformat.py:46
+#, fuzzy
+msgid "PM"
+msgstr "PM"
+
+#: utils/dateformat.py:47
+#, fuzzy
+msgid "AM"
+msgstr "AM"
+
+#: utils/dateformat.py:95
+msgid "midnight"
+msgstr "pusnakts"
+
+#: utils/dateformat.py:97
+msgid "noon"
+msgstr "dienas vidus"
+
+#: utils/translation/trans_real.py:358
+msgid "DATE_FORMAT"
+msgstr "DATE_FORMAT"
+
+#: utils/translation/trans_real.py:359
+msgid "DATETIME_FORMAT"
+msgstr "DATETIME_FORMAT"
+
+#: utils/translation/trans_real.py:360
+msgid "TIME_FORMAT"
+msgstr "TIME_FORMAT"
+
+#: utils/translation/trans_real.py:376
+msgid "YEAR_MONTH_FORMAT"
+msgstr "YEAR_MONTH_FORMAT"
+
+#: utils/translation/trans_real.py:377
+msgid "MONTH_DAY_FORMAT"
+msgstr "MONTH_DAY_FORMAT"
+
+#: template/defaultfilters.py:491
msgid "yes,no,maybe"
msgstr "jā,nē,varbūt"
-#: views/generic/create_update.py:43
-#, fuzzy, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(name)s \"%(obj)s\" nomainīts sekmīgi."
-
-#: views/generic/create_update.py:117
-#, fuzzy, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(name)s \"%(obj)s\" sekmīgi izdzēsts."
-
-#: views/generic/create_update.py:184
-#, fuzzy, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(site_name)s komanda"
-
-#: core/validators.py:64
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Šī vērtība var saturēt tikai burtus, numurus un apakšsvītras."
-
-#: core/validators.py:68
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Šī vērtība var saturēt tikai burtus, numurus un apakšsvītras, svītras vai "
-"šķērssvītras."
-
-#: core/validators.py:72
-#, fuzzy
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"Šī vērtība var saturēt tikai burtus, numurus un apakšsvītras, svītras vai "
-"šķērssvītras."
-
-#: core/validators.py:76
-msgid "Uppercase letters are not allowed here."
-msgstr "Augšējā reģistra burti nav atļauti."
-
-#: core/validators.py:80
-msgid "Lowercase letters are not allowed here."
-msgstr "Apakšējā reģistra burti nav atļauti."
-
-#: core/validators.py:87
-msgid "Enter only digits separated by commas."
-msgstr "Ievadiet tikai numurus, kas atdalīti ar komatiem."
-
-#: core/validators.py:99
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Ievadiet korektas e-pasta adreses, kas atdalītas ar komatiem."
-
-#: core/validators.py:103
-msgid "Please enter a valid IP address."
-msgstr "Lūdzu ievadiet korektu IP adresi."
-
-#: core/validators.py:107
-msgid "Empty values are not allowed here."
-msgstr "Tukšas vērtības nav atļautas."
-
-#: core/validators.py:111
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Ne ciparu simboli nav atļauti."
-
-#: core/validators.py:115
-msgid "This value can't be comprised solely of digits."
-msgstr "Šī vērtība nevar saturēt tikai ciparus."
-
-#: core/validators.py:124
-msgid "Only alphabetical characters are allowed here."
-msgstr "Atļauti tikai alfabētiskie simboli."
-
-#: core/validators.py:139
-msgid "Year must be 1900 or later."
-msgstr ""
-
-#: core/validators.py:143
-#, fuzzy, python-format
-msgid "Invalid date: %s."
-msgstr "Nekorekts URL: %s"
-
-#: core/validators.py:152
-msgid "Enter a valid time in HH:MM format."
-msgstr "Ievadiet korektu laiku HH:MM formātā"
-
-#: core/validators.py:177
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Augšupielādējiet korektu attēlu. Fails, ko Jūs augšupielādējāt nav attēls "
-"vai arī bojāts attēla fails."
-
-#: core/validators.py:184
+#: template/defaultfilters.py:520
#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL %s nesatur korektu attēlu."
-
-#: core/validators.py:188
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Telefona numuriem jābūt XXX-XXX-XXXX formātā. \"%s\" is nekorekts."
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL %s nenorāda uz korektu QuickTime video."
-
-#: core/validators.py:200
-msgid "A valid URL is required."
-msgstr "Reāls URL obligāts."
-
-#: core/validators.py:214
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Korekts HTML ir obligāts. Specifiskās kļūdas:\n"
-"%s"
-
-#: core/validators.py:221
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Slikti formēts XML: %s"
-
-#: core/validators.py:238
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Nekorekts URL: %s"
-
-#: core/validators.py:243 core/validators.py:245
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL %s ir salauzta saite."
-
-#: core/validators.py:251
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Ievadiet korektu ASV štata abriviatūru."
-
-#: core/validators.py:265
-#, 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] "Seko saviem vārdiem! Vārds %s nav atļauts šeit."
-msgstr[1] "Seko saviem vārdiem! Vārdi %s nav atļauts šeit."
-
-#: core/validators.py:272
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Laukam jāsaskan ar %s lauku."
-
-#: core/validators.py:291
-msgid "Please enter something for at least one field."
-msgstr "Lūdzu ievadiet kaut ko vismaz vienā laukā."
-
-#: core/validators.py:300 core/validators.py:311
-msgid "Please enter both fields or leave them both empty."
-msgstr "Lūdzu ievadiet abus laukus vai atstājiet abus tukšus."
-
-#: core/validators.py:318
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Šis lauks ir jāaizpilda, ja %(field)s ir vienāds %(value)s"
-
-#: core/validators.py:330
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Šis lauks ir jāaizpilda, ja %(field)s nav vienāds %(value)s"
-
-#: core/validators.py:349
-msgid "Duplicate values are not allowed."
-msgstr "Duplicētas vērtības nav atļautas."
-
-#: core/validators.py:364
-#, fuzzy, python-format
-msgid "This value must be between %s and %s."
-msgstr "Šai vērtībai jābūt %s pakāpei."
-
-#: core/validators.py:366
-#, fuzzy, python-format
-msgid "This value must be at least %s."
-msgstr "Šai vērtībai jābūt %s pakāpei."
-
-#: core/validators.py:368
-#, fuzzy, python-format
-msgid "This value must be no more than %s."
-msgstr "Šai vērtībai jābūt %s pakāpei."
-
-#: core/validators.py:404
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Šai vērtībai jābūt %s pakāpei."
-
-#: core/validators.py:415
-msgid "Please enter a valid decimal number."
-msgstr "Lūdzu ievadiet korektu decimālu numuru."
-
-#: core/validators.py:419
-#, 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."
+msgid "%(size)d byte"
+msgid_plural "%(size)d bytes"
msgstr[0] ""
-"Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu %s."
msgstr[1] ""
-"Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu %s."
-#: core/validators.py:422
-#, fuzzy, 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] ""
-"Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu %s."
-msgstr[1] ""
-"Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu %s."
-
-#: core/validators.py:425
+#: template/defaultfilters.py:522
#, 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] ""
-"Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu aiz komata "
-"%s."
-msgstr[1] ""
-"Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu aiz komata "
-"%s."
+msgid "%.1f KB"
+msgstr "%.1f KB"
-#: core/validators.py:435
+#: template/defaultfilters.py:524
#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr ""
-"Pārliecinieties, ka jūsu augšupielādētais fails ir vismaz %s baiti liels."
+msgid "%.1f MB"
+msgstr "%.1f MB"
-#: core/validators.py:436
+#: template/defaultfilters.py:525
#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr ""
-"Pārliecinieties, ka jūsu augšupielādētais fails ir maksimums %s baiti liels."
+msgid "%.1f GB"
+msgstr "%.1f GB"
-#: core/validators.py:453
-msgid "The format for this field is wrong."
-msgstr "Šī faila formāts ir nekorekts."
-
-#: core/validators.py:468
-msgid "This field is invalid."
-msgstr "Šis lauks ir nekorekts."
-
-#: core/validators.py:504
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Nevar neko no %s"
-
-#: core/validators.py:507
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "URL %(url)s atgrieza nekorektu Content-Type headeri '%(contenttype)s'."
-
-#: core/validators.py:540
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Lūdzu aiztaisiet neaiztaisīto %(tag)s tagu no rindas nr %(line)s. (Rinda "
-"sākas ar \"%(start)s\".)"
-
-#: core/validators.py:544
-#, 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:549
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-
-#: core/validators.py:554
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-
-#: core/validators.py:558
-#, 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:563
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
-#~ msgstr "Lietojiet '[algo]$[salt]$[hexdigest]'"
-
-#~ msgid "Have you forgotten your password?"
-#~ msgstr "Vai esat aizmirsis paroli?"
diff --git a/django/conf/locale/lv/LC_MESSAGES/djangojs.mo b/django/conf/locale/lv/LC_MESSAGES/djangojs.mo
index b81550aedb..1835996a67 100644
Binary files a/django/conf/locale/lv/LC_MESSAGES/djangojs.mo and b/django/conf/locale/lv/LC_MESSAGES/djangojs.mo differ
diff --git a/django/conf/locale/lv/LC_MESSAGES/djangojs.po b/django/conf/locale/lv/LC_MESSAGES/djangojs.po
index 534cffd8d0..4c904ab068 100644
--- a/django/conf/locale/lv/LC_MESSAGES/djangojs.po
+++ b/django/conf/locale/lv/LC_MESSAGES/djangojs.po
@@ -10,7 +10,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-15 10:46+1100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"Last-Translator: Gatis Tomsons \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
@@ -19,64 +19,65 @@ msgstr ""
#: contrib/admin/media/js/SelectFilter2.js:33
#, perl-format
msgid "Available %s"
-msgstr ""
+msgstr "Pieejams %s"
#: contrib/admin/media/js/SelectFilter2.js:41
msgid "Choose all"
-msgstr ""
+msgstr "Izvēlēties visu"
#: contrib/admin/media/js/SelectFilter2.js:46
msgid "Add"
-msgstr ""
+msgstr "Pievienot"
#: contrib/admin/media/js/SelectFilter2.js:48
msgid "Remove"
-msgstr ""
+msgstr "Izņemt"
#: contrib/admin/media/js/SelectFilter2.js:53
#, perl-format
msgid "Chosen %s"
-msgstr ""
+msgstr "Izvēlies %s"
#: contrib/admin/media/js/SelectFilter2.js:54
msgid "Select your choice(s) and click "
-msgstr ""
+msgstr "Izvēlies un klikšķini"
#: contrib/admin/media/js/SelectFilter2.js:59
msgid "Clear all"
-msgstr ""
+msgstr "Attīrīt visu"
#: 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"
-msgstr ""
+msgstr "Janvāris Februāris Marts Aprīlis Maijs Jūnijs Jūlijs Augusts Septembris Oktobris Novembris"
+"Decembris"
#: contrib/admin/media/js/dateparse.js:33
msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr ""
+msgstr "Svētdiena Pirmdiena Otrdiena Trešdiena Ceturtdiena Piektdiena Sestdiena"
#: contrib/admin/media/js/calendar.js:25
msgid "S M T W T F S"
-msgstr ""
+msgstr "S M T W T F S"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
msgid "Now"
-msgstr ""
+msgstr "Tagad"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
msgid "Clock"
-msgstr ""
+msgstr "Pulkstens"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
msgid "Choose a time"
-msgstr ""
+msgstr "Izvēlieties laiku"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
msgid "Midnight"
-msgstr ""
+msgstr "Pusnakts"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
msgid "6 a.m."
@@ -84,35 +85,35 @@ msgstr ""
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
msgid "Noon"
-msgstr ""
+msgstr "Pusdienas laiks"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
msgid "Cancel"
-msgstr ""
+msgstr "Atcelt"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
msgid "Today"
-msgstr ""
+msgstr "Šodien"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
msgid "Calendar"
-msgstr ""
+msgstr "Kalendārs"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
msgid "Yesterday"
-msgstr ""
+msgstr "Vakar"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
msgid "Tomorrow"
-msgstr ""
+msgstr "Rīt"
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
msgid "Show"
-msgstr ""
+msgstr "Parādīt"
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
msgid "Hide"
-msgstr ""
+msgstr "Slēpt"
diff --git a/django/conf/locale/pl/LC_MESSAGES/django.mo b/django/conf/locale/pl/LC_MESSAGES/django.mo
index d132fc114e..1aa7e08dd4 100644
Binary files a/django/conf/locale/pl/LC_MESSAGES/django.mo and b/django/conf/locale/pl/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/pl/LC_MESSAGES/django.po b/django/conf/locale/pl/LC_MESSAGES/django.po
index 61fc4d0a90..7e7ccb850f 100644
--- a/django/conf/locale/pl/LC_MESSAGES/django.po
+++ b/django/conf/locale/pl/LC_MESSAGES/django.po
@@ -1,21 +1,775 @@
+# translation of django.po to Polish
# Polish .po file.
-# Copyright (C) 2006 Krzysztof Kajkowski
# This file is distributed under the same license as the django package.
-# Krzysztof Kajkowski , 2006.
-# cayco , 2006.
-#
-#
msgid ""
msgstr ""
-"Project-Id-Version: 0.1\n"
+"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 10:13+0200\n"
-"PO-Revision-Date: 2006-02-21 11:10+0100\n"
-"Last-Translator: Piotr Maliński \n"
+"POT-Creation-Date: 2007-05-08 20:19+0200\n"
+"PO-Revision-Date: 2007-05-08 20:29+0200\n"
+"Last-Translator: Michal Chruszcz \n"
"Language-Team: Polish \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: oldforms/__init__.py:357 db/models/fields/__init__.py:117
+#: db/models/fields/__init__.py:274 db/models/fields/__init__.py:612
+#: db/models/fields/__init__.py:623 newforms/models.py:178
+#: newforms/fields.py:80 newforms/fields.py:376 newforms/fields.py:452
+#: newforms/fields.py:463
+msgid "This field is required."
+msgstr "To pole jest wymagane."
+
+#: oldforms/__init__.py:392
+#, python-format
+msgid "Ensure your text is less than %s character."
+msgid_plural "Ensure your text is less than %s characters."
+msgstr[0] "Upewnij się, że tekst ma mniej niż %s znak."
+msgstr[1] "Upewnij się, że tekst ma mniej niż %s znaków."
+
+#: oldforms/__init__.py:397
+msgid "Line breaks are not allowed here."
+msgstr "Znaki nowej linii są tutaj niedopuszczalne."
+
+#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610
+#, python-format
+msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
+msgstr "Wybierz poprawną opcję; '%(data)s' nie jest wśród %(choices)s."
+
+#: oldforms/__init__.py:577 newforms/widgets.py:180
+#: contrib/admin/filterspecs.py:150
+msgid "Unknown"
+msgstr "Nieznany"
+
+#: oldforms/__init__.py:577 newforms/widgets.py:180
+#: contrib/admin/filterspecs.py:143
+msgid "Yes"
+msgstr "Tak"
+
+#: oldforms/__init__.py:577 newforms/widgets.py:180
+#: contrib/admin/filterspecs.py:143
+msgid "No"
+msgstr "Nie"
+
+#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445
+msgid "No file was submitted. Check the encoding type on the form."
+msgstr "Nie wysłano żadnego pliku. Sprawdź typ kodowania formularza."
+
+#: oldforms/__init__.py:674
+msgid "The submitted file is empty."
+msgstr "Wysłany plik jest pusty."
+
+#: oldforms/__init__.py:730
+msgid "Enter a whole number between -32,768 and 32,767."
+msgstr "Proszę wpisać liczbę całkowitą z zakresu od -32 768 do 32 767"
+
+#: oldforms/__init__.py:740
+msgid "Enter a positive number."
+msgstr "Proszę wpisać liczbę dodatnią."
+
+#: oldforms/__init__.py:750
+msgid "Enter a whole number between 0 and 32,767."
+msgstr "Proszę wpisać liczbę całkowitą z zakresu od 0 do 32 767"
+
+#: db/models/manipulators.py:307
+#, fuzzy, python-format
+msgid "%(object)s with this %(type)s already exists for the given %(field)s."
+msgstr "%(object)s z %(type)s już istnieje dla %(field)s."
+
+#: db/models/manipulators.py:308 contrib/admin/views/main.py:338
+#: contrib/admin/views/main.py:340 contrib/admin/views/main.py:342
+msgid "and"
+msgstr "i"
+
+#: db/models/fields/__init__.py:42
+#, fuzzy, python-format
+msgid "%(optname)s with this %(fieldname)s already exists."
+msgstr "Już istnieje %(optname)s z %(fieldname)s."
+
+#: db/models/fields/__init__.py:369
+msgid "This value must be an integer."
+msgstr "Ta wartość musi być liczbą całkowitą."
+
+#: db/models/fields/__init__.py:404
+msgid "This value must be either True or False."
+msgstr "Ta wartość musi być logiczna (True, False - prawda lub fałsz)."
+
+#: db/models/fields/__init__.py:425
+msgid "This field cannot be null."
+msgstr "To pole nie może być puste."
+
+#: db/models/fields/__init__.py:459 core/validators.py:148
+msgid "Enter a valid date in YYYY-MM-DD format."
+msgstr "Proszę wpisać poprawną datę w formacie RRRR-MM-DD."
+
+#: db/models/fields/__init__.py:528 core/validators.py:157
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
+msgstr "Wprowadź poprawną datę i godzinę w formacie RRRR-MM-DD GG:MM."
+
+#: db/models/fields/__init__.py:632
+msgid "Enter a valid filename."
+msgstr "Wpisz poprawną nazwę pliku."
+
+#: db/models/fields/__init__.py:753
+msgid "This value must be either None, True or False."
+msgstr "Ta wartość musi być jedną z None (żadne), True (prawda) lub False (fałsz)."
+
+#: db/models/fields/related.py:53
+#, python-format
+msgid "Please enter a valid %s."
+msgstr "Proszę wpisać poprawne %s."
+
+#: db/models/fields/related.py:642
+msgid "Separate multiple IDs with commas."
+msgstr "Oddziel identyfikatory przecinkami."
+
+#: db/models/fields/related.py:644
+msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr ""
+"Przytrzymaj wciśnięty klawisz \"Ctrl\" lub \"Command\" na Mac'u aby "
+"zaznaczyć więcej niż jeden wybór."
+
+#: db/models/fields/related.py:691
+#, 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] ""
+"Proszę podać poprawne identyfikatory %(self)s. Wartość %(value)r jest "
+"niepoprawna."
+msgstr[1] ""
+"Proszę podać poprawne identyfikatory %(self)s. Wartości %(value)r są "
+"niepoprawne."
+
+#: conf/global_settings.py:39
+msgid "Arabic"
+msgstr "Arabski"
+
+#: conf/global_settings.py:40
+msgid "Bengali"
+msgstr "Bengalski"
+
+#: conf/global_settings.py:41
+msgid "Catalan"
+msgstr "Kataloński"
+
+#: conf/global_settings.py:42
+msgid "Czech"
+msgstr "Czeski"
+
+#: conf/global_settings.py:43
+msgid "Welsh"
+msgstr "Walijski"
+
+#: conf/global_settings.py:44
+msgid "Danish"
+msgstr "Duński"
+
+#: conf/global_settings.py:45
+msgid "German"
+msgstr "Niemiecki"
+
+#: conf/global_settings.py:46
+msgid "Greek"
+msgstr "Grecki"
+
+#: conf/global_settings.py:47
+msgid "English"
+msgstr "Angielski"
+
+#: conf/global_settings.py:48
+msgid "Spanish"
+msgstr "Hiszpański"
+
+#: conf/global_settings.py:49
+msgid "Argentinean Spanish"
+msgstr "Hiszpański argentyński"
+
+#: conf/global_settings.py:50
+msgid "Finnish"
+msgstr "Fiński"
+
+#: conf/global_settings.py:51
+msgid "French"
+msgstr "Francuski"
+
+#: conf/global_settings.py:52
+msgid "Galician"
+msgstr "Galicyjski"
+
+#: conf/global_settings.py:53
+msgid "Hungarian"
+msgstr "Węgierski"
+
+#: conf/global_settings.py:54
+msgid "Hebrew"
+msgstr "Hebrajski"
+
+#: conf/global_settings.py:55
+msgid "Icelandic"
+msgstr "Islandzki"
+
+#: conf/global_settings.py:56
+msgid "Italian"
+msgstr "Włoski"
+
+#: conf/global_settings.py:57
+msgid "Japanese"
+msgstr "Japoński"
+
+#: conf/global_settings.py:58
+msgid "Korean"
+msgstr "Koreański"
+
+#: conf/global_settings.py:59
+msgid "Kannada"
+msgstr "Kannada"
+
+#: conf/global_settings.py:60
+msgid "Latvian"
+msgstr "Łotewski"
+
+#: conf/global_settings.py:61
+msgid "Macedonian"
+msgstr "Macedoński"
+
+#: conf/global_settings.py:62
+msgid "Dutch"
+msgstr "Holenderski"
+
+#: conf/global_settings.py:63
+msgid "Norwegian"
+msgstr "Norweski"
+
+#: conf/global_settings.py:64
+msgid "Polish"
+msgstr "Polski"
+
+#: conf/global_settings.py:65
+msgid "Portugese"
+msgstr "Portugalski"
+
+#: conf/global_settings.py:66
+msgid "Brazilian"
+msgstr "Brazylijski"
+
+#: conf/global_settings.py:67
+msgid "Romanian"
+msgstr "Rumuński"
+
+#: conf/global_settings.py:68
+msgid "Russian"
+msgstr "Rosyjski"
+
+#: conf/global_settings.py:69
+msgid "Slovak"
+msgstr "Słowacki"
+
+#: conf/global_settings.py:70
+msgid "Slovenian"
+msgstr "Słoweński"
+
+#: conf/global_settings.py:71
+msgid "Serbian"
+msgstr "Serbski"
+
+#: conf/global_settings.py:72
+msgid "Swedish"
+msgstr "Szwedzki"
+
+#: conf/global_settings.py:73
+msgid "Tamil"
+msgstr "Tamilski"
+
+#: conf/global_settings.py:74
+msgid "Telugu"
+msgstr "Telugu"
+
+#: conf/global_settings.py:75
+msgid "Turkish"
+msgstr "Turecki"
+
+#: conf/global_settings.py:76
+msgid "Ukrainian"
+msgstr "Ukraiński"
+
+#: conf/global_settings.py:77
+msgid "Simplified Chinese"
+msgstr "Uproszczony chiński"
+
+#: conf/global_settings.py:78
+msgid "Traditional Chinese"
+msgstr "Chiński tradycyjny"
+
+#: core/validators.py:64
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "To pole może zawierać tylko litery, cyfry i podkreślenia."
+
+#: core/validators.py:68
+msgid ""
+"This value must contain only letters, numbers, underscores, dashes or "
+"slashes."
+msgstr ""
+"To pole może zawierać jedynie litery, cyfry, podkreślenia, myślniki i "
+"ukośniki."
+
+#: core/validators.py:72
+msgid "This value must contain only letters, numbers, underscores or hyphens."
+msgstr "To pole może zawierać jedynie litery, cyfry, podkreślenia i pauzy."
+
+#: core/validators.py:76
+msgid "Uppercase letters are not allowed here."
+msgstr "Wielkie litery nie są tutaj dozwolone."
+
+#: core/validators.py:80
+msgid "Lowercase letters are not allowed here."
+msgstr "Małe litery nie są tutaj dozwolone."
+
+#: core/validators.py:87
+msgid "Enter only digits separated by commas."
+msgstr "Wpisz tylko cyfry odddzielone przecinkami."
+
+#: core/validators.py:99
+msgid "Enter valid e-mail addresses separated by commas."
+msgstr "Wpisz poprawne adresy e-mail oddzielone przecinkami."
+
+#: core/validators.py:103
+msgid "Please enter a valid IP address."
+msgstr "Proszę wpisać poprawny adres IP."
+
+#: core/validators.py:107
+msgid "Empty values are not allowed here."
+msgstr "Proszę wypełnić te pola."
+
+#: core/validators.py:111
+msgid "Non-numeric characters aren't allowed here."
+msgstr "Tu mogą być tylko cyfry."
+
+#: core/validators.py:115
+msgid "This value can't be comprised solely of digits."
+msgstr "To pole nie może zawierać jedynie cyfr."
+
+#: core/validators.py:120 newforms/fields.py:128
+msgid "Enter a whole number."
+msgstr "Wpisz liczbę całkowitą."
+
+#: core/validators.py:124
+msgid "Only alphabetical characters are allowed here."
+msgstr "Tutaj są dozwolone tylko litery."
+
+#: core/validators.py:139
+msgid "Year must be 1900 or later."
+msgstr "Rok nie może być wcześniejszy niż 1900."
+
+#: core/validators.py:143
+#, python-format
+msgid "Invalid date: %s"
+msgstr "Niepoprawna data: %s"
+
+#: core/validators.py:153
+msgid "Enter a valid time in HH:MM format."
+msgstr "Proszę wpisać poprawną godzinę w formacie GG:MM."
+
+#: core/validators.py:162 newforms/fields.py:271
+msgid "Enter a valid e-mail address."
+msgstr "Wprowadź poprawny adres e-mail."
+
+#: core/validators.py:178
+msgid ""
+"Upload a valid image. The file you uploaded was either not an image or a "
+"corrupted image."
+msgstr ""
+"Wgraj poprawny plik graficzny. Ten, który został wgrany, nie jest obrazem, "
+"albo jest uszkodzony."
+
+#: core/validators.py:185
+#, python-format
+msgid "The URL %s does not point to a valid image."
+msgstr "Odnośnik %s nie wskazuje na poprawny plik z obrazem."
+
+#: core/validators.py:189
+#, python-format
+msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
+msgstr ""
+"Numery telefoniczne muszą być w formacie XXX-XXX-XXXX. \"%s\" jest "
+"niepoprawny."
+
+#: core/validators.py:197
+#, python-format
+msgid "The URL %s does not point to a valid QuickTime video."
+msgstr "Odnośnik %s nie wskazuje na poprawne nagranie QuickTime video."
+
+#: core/validators.py:201
+msgid "A valid URL is required."
+msgstr "Wymagany jest poprawny URL."
+
+#: core/validators.py:215
+#, python-format
+msgid ""
+"Valid HTML is required. Specific errors are:\n"
+"%s"
+msgstr ""
+"Wymagany jest poprawny HTML. Błędy, które wystąpiły:\n"
+"%s"
+
+#: core/validators.py:222
+#, python-format
+msgid "Badly formed XML: %s"
+msgstr "Nieprawidłowy format XML: %s"
+
+#: core/validators.py:239
+#, python-format
+msgid "Invalid URL: %s"
+msgstr "Niepoprawny odnośnik: %s"
+
+#: core/validators.py:244 core/validators.py:246
+#, python-format
+msgid "The URL %s is a broken link."
+msgstr "Odnośnik %s jest nieprawidłowy."
+
+#: core/validators.py:252
+msgid "Enter a valid U.S. state abbreviation."
+msgstr "Wpisz poprawny kod stanu U.S.A."
+
+#: core/validators.py:266
+#, 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] "Nie wolno przeklinać! Słowo %s nie jest dozwolone."
+msgstr[1] "Nie wolno przeklinać! Słowa %s nie są dozwolone."
+
+#: core/validators.py:273
+#, python-format
+msgid "This field must match the '%s' field."
+msgstr "To pole musi pasować do pola '%s'."
+
+#: core/validators.py:292
+msgid "Please enter something for at least one field."
+msgstr "Proszę uzupełnić przynajmniej jedno pole."
+
+#: core/validators.py:301 core/validators.py:312
+msgid "Please enter both fields or leave them both empty."
+msgstr "Proszę uzupełnić oba pola lub zostawić je puste."
+
+#: core/validators.py:320
+#, python-format
+msgid "This field must be given if %(field)s is %(value)s"
+msgstr "To pole musi być uzupełnione, jeśli %(field)s ma wartość %(value)s"
+
+#: core/validators.py:333
+#, python-format
+msgid "This field must be given if %(field)s is not %(value)s"
+msgstr "To pole musi być uzupełnione, jeśli %(field)s ma wartość inną niż %(value)s"
+
+#: core/validators.py:352
+msgid "Duplicate values are not allowed."
+msgstr "Duplikaty nie są dozwolone."
+
+#: core/validators.py:367
+#, python-format
+msgid "This value must be between %(lower)s and %(upper)s."
+msgstr "Ta wartość musi być pomiędzy %(lower)s a %(upper)s."
+
+#: core/validators.py:369
+#, python-format
+msgid "This value must be at least %s."
+msgstr "Ta wartość nie może być mniejsza od %s."
+
+#: core/validators.py:371
+#, python-format
+msgid "This value must be no more than %s."
+msgstr "Ta wartość nie może być większa od %s."
+
+#: core/validators.py:407
+#, python-format
+msgid "This value must be a power of %s."
+msgstr "Ta wartość musi być potęgą %s."
+
+#: core/validators.py:418
+msgid "Please enter a valid decimal number."
+msgstr "Proszę wpisać poprawną liczbę dziesiętną."
+
+#: core/validators.py:422
+#, 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] "Proszę wpisać poprawną liczbę dziesiętną o nie więcej niż %s cyfrze."
+msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną o nie więcej niż %s cyfrach."
+
+#: core/validators.py:425
+#, 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] "Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfry."
+msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfr."
+
+#: core/validators.py:428
+#, 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] ""
+"Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsca po "
+"przecinku."
+msgstr[1] ""
+"Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsc po "
+"przecinku."
+
+#: core/validators.py:438
+#, python-format
+msgid "Make sure your uploaded file is at least %s bytes big."
+msgstr "Upewnij się, że wgrany plik ma conajmniej %s bajtów."
+
+#: core/validators.py:439
+#, python-format
+msgid "Make sure your uploaded file is at most %s bytes big."
+msgstr "Upewnij się, że wgrany plik ma co najwyżej %s bajtów."
+
+#: core/validators.py:456
+msgid "The format for this field is wrong."
+msgstr "Format tego pola jest nieprawidłowy."
+
+#: core/validators.py:471
+msgid "This field is invalid."
+msgstr "To pole jest nieprawidłowe."
+
+#: core/validators.py:507
+#, python-format
+msgid "Could not retrieve anything from %s."
+msgstr "Nie można nic pobrać z %s."
+
+#: core/validators.py:510
+#, python-format
+msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
+msgstr "URL %(url)s zwrócił niepoprawny nagłówek Content-Type '%(contenttype)s'."
+
+#: core/validators.py:543
+#, python-format
+msgid ""
+"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
+"\"%(start)s\".)"
+msgstr ""
+"Proszę zamknąć tag %(tag)s z linii %(line)s. (Linia zaczyna się od \"%(start)"
+"s\".)"
+
+#: core/validators.py:547
+#, python-format
+msgid ""
+"Some text starting on line %(line)s is not allowed in that context. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"Część tekstu od linii %(line)s nie jest dozwolony w tym kontekście. (Linia "
+"zaczyna się od \"%(start)s\".)"
+
+#: core/validators.py:552
+#, python-format
+msgid ""
+"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
+"(start)s\".)"
+msgstr ""
+"\"%(attr)s\" w linii %(line)s jest niepoprawnym atrybutem. (Linia zaczyna "
+"się od \"%(start)s\".)"
+
+#: core/validators.py:557
+#, python-format
+msgid ""
+"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
+"(start)s\".)"
+msgstr ""
+"\"<%(tag)s>\" w linii %(line)s nie jest poprawnym tagiem. (Linia zaczyna się "
+"od \"%(start)s\".)"
+
+#: core/validators.py:561
+#, python-format
+msgid ""
+"A tag on line %(line)s is missing one or more required attributes. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"Tag w linii %(line)s nie posiada jednego lub więcej wymaganych atrybutów. "
+"(Linia zaczyna się od \"%(start)s\".)"
+
+#: core/validators.py:566
+#, python-format
+msgid ""
+"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"Atrybut \"%(attr)s\" w linii %(line)s ma niepoprawną wartość. (Linia zaczyna "
+"się od \"%(start)s\".)"
+
+#: views/generic/create_update.py:43
+#, python-format
+msgid "The %(verbose_name)s was created successfully."
+msgstr "%(verbose_name)s zostało pomyślnie utworzone."
+
+#: views/generic/create_update.py:117
+#, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr "%(verbose_name)s zostało pomyślnie zmienione."
+
+#: views/generic/create_update.py:184
+#, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr "%(verbose_name)s zostało usunięte."
+
+#: newforms/models.py:165 newforms/fields.py:364
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "Wybierz poprawną wartość. Podana nie jest jednym z dostępnych wyborów."
+
+#: newforms/models.py:182 newforms/fields.py:380 newforms/fields.py:456
+msgid "Enter a list of values."
+msgstr "Podaj listę wartości."
+
+#: newforms/models.py:188 newforms/fields.py:389
+#, python-format
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr "Wybierz poprawną wartość. %s nie jest jednym z dostępnych wyborów."
+
+#: newforms/fields.py:103 newforms/fields.py:256
+#, python-format
+msgid "Ensure this value has at most %d characters."
+msgstr "Upewnij się, że tekst ma co najwyżej %d znaków."
+
+#: newforms/fields.py:105 newforms/fields.py:258
+#, python-format
+msgid "Ensure this value has at least %d characters."
+msgstr "Upewnij się, że tekst ma co najmniej %d znaków."
+
+#: newforms/fields.py:130
+#, python-format
+msgid "Ensure this value is less than or equal to %s."
+msgstr "Upewnij się, że ta wartość jest mniejsza lub równa %s."
+
+#: newforms/fields.py:132
+#, python-format
+msgid "Ensure this value is greater than or equal to %s."
+msgstr "Upewnij się, że ta wartość jest większa lub równa %s."
+
+#: newforms/fields.py:165
+msgid "Enter a valid date."
+msgstr "Wpisz poprawną datę."
+
+#: newforms/fields.py:192
+msgid "Enter a valid time."
+msgstr "Wpisz poprawną godzinę."
+
+#: newforms/fields.py:228
+msgid "Enter a valid date/time."
+msgstr "Wpisz poprawną datę/godzinę."
+
+#: newforms/fields.py:242
+msgid "Enter a valid value."
+msgstr "Wpisz poprawną wartość."
+
+#: newforms/fields.py:289 newforms/fields.py:311
+msgid "Enter a valid URL."
+msgstr "Wpisz poprawny URL."
+
+#: newforms/fields.py:313
+msgid "This URL appears to be a broken link."
+msgstr "Odnośnik %s jest nieprawidłowy."
+
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "th"
+msgstr "-y"
+
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "st"
+msgstr "-szy"
+
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "nd"
+msgstr "-gi"
+
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "rd"
+msgstr "-ci"
+
+#: contrib/humanize/templatetags/humanize.py:47
+#, python-format
+msgid "%(value).1f million"
+msgid_plural "%(value).1f million"
+msgstr[0] "%(value).1f milion"
+msgstr[1] "%(value).1f milionów"
+
+#: contrib/humanize/templatetags/humanize.py:50
+#, python-format
+msgid "%(value).1f billion"
+msgid_plural "%(value).1f billion"
+msgstr[0] "%(value).1f miliard"
+msgstr[1] "%(value).1f miliardów"
+
+#: contrib/humanize/templatetags/humanize.py:53
+#, python-format
+msgid "%(value).1f trillion"
+msgid_plural "%(value).1f trillion"
+msgstr[0] "%(value).1f bilion"
+msgstr[1] "%(value).1f bilionów"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "one"
+msgstr "jeden"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "two"
+msgstr "dwa"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "three"
+msgstr "trzy"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "four"
+msgstr "cztery"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "five"
+msgstr "pięć"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "six"
+msgstr "sześć"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "seven"
+msgstr "siedem"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "eight"
+msgstr "osiem"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "nine"
+msgstr "dziewięć"
+
+#: contrib/redirects/models.py:7
+msgid "redirect from"
+msgstr "przekieruj z"
+
+#: contrib/redirects/models.py:8
+msgid ""
+"This should be an absolute path, excluding the domain name. Example: '/"
+"events/search/'."
+msgstr "Podaj pełną ścieżkę bez nazwy domeny. Przykład: '/events/search/'."
+
+#: contrib/redirects/models.py:9
+msgid "redirect to"
+msgstr "przekierowanie do"
+
+#: contrib/redirects/models.py:10
+msgid ""
+"This can be either an absolute path (as above) or a full URL starting with "
+"'http://'."
+msgstr "Ścieżka jak wyżej lub pełny URL z http://"
+
+#: contrib/redirects/models.py:13
+msgid "redirect"
+msgstr "przekieruj"
+
+#: contrib/redirects/models.py:14
+msgid "redirects"
+msgstr "przekierowania"
#: contrib/comments/models.py:67 contrib/comments/models.py:166
msgid "object ID"
@@ -74,7 +828,7 @@ msgstr "data/czas dodania"
msgid "is public"
msgstr "publicznie dostepny"
-#: 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 "Adres IP"
@@ -87,8 +841,8 @@ msgid ""
"Check this box if the comment is inappropriate. A \"This comment has been "
"removed\" message will be displayed instead."
msgstr ""
-"Zaznacz to pole jeżeli komentarz jest nieodpowiedni. Wyświetlony zostanie tekst \"Ten "
-"komentarz został usunięty\". "
+"Zaznacz to pole jeżeli komentarz jest nieodpowiedni. Wyświetlony zostanie "
+"tekst \"Ten komentarz został usunięty\". "
#: contrib/comments/models.py:91
msgid "comments"
@@ -96,7 +850,7 @@ msgstr "komentarze"
#: contrib/comments/models.py:131 contrib/comments/models.py:207
msgid "Content object"
-msgstr "Obiekt Treści"
+msgstr "Obiekt treści"
#: contrib/comments/models.py:159
#, python-format
@@ -109,7 +863,7 @@ msgid ""
msgstr ""
"Dodane przez %(user)s dnia %(date)s\n"
"\n"
-"%(comment)y\n"
+"%(comment)s\n"
"\n"
"http://%(domain)s%(url)s"
@@ -211,14 +965,11 @@ msgstr "Błędny ID komentarza"
msgid "No voting for yourself"
msgstr "Nie można głosować na siebie"
-#: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-"Ta ocena jest wymagana gdyż podałeś przynajmniej jedną inną ocenę."
+#: contrib/comments/views/comments.py:27
+msgid "This rating is required because you've entered at least one other rating."
+msgstr "Ta ocena jest wymagana gdyż podałeś przynajmniej jedną inną ocenę."
-
-#: 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 "
@@ -231,9 +982,13 @@ msgid_plural ""
"\n"
"%(text)s"
msgstr[0] ""
+"Ten komentarz został wysłany przez użytkownika, który wysłał mniej niż %"
+"(count)s komentarz:\n"
+"\n"
+"%(text)s"
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"
@@ -244,27 +999,28 @@ 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 "Dozwolone tylko POSTy"
-#: 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 "Jedno lub więcej wymaganych pól nie zostało wypełnionych"
-#: 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 "Ktoś próbował obejść zabezpieczenia formularza komentarzy"
-#: 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 "
"invalid"
-msgstr "Formularz komentarza miał niepoprawny parametr 'target' -- ID obiektu było "
+msgstr ""
+"Formularz komentarza miał niepoprawny parametr 'target' -- ID obiektu było "
"niepoprawne"
#: contrib/comments/views/comments.py:257
@@ -279,35 +1035,36 @@ msgid "Username:"
msgstr "Nazwa użytkownika:"
#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Hasło:"
-
-#: contrib/comments/templates/comments/form.html:6
-msgid "Forgotten your password?"
-msgstr "Zapomniałeś hasło?"
-
-#: 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/object_history.html:3
#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/auth/user/change_password.html:9
#: 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/bookmarklets.html:4
#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+#: contrib/admin/templates/admin_doc/template_tag_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
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
msgid "Log out"
msgstr "Wyloguj się"
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:20
+msgid "Password:"
+msgstr "Hasło:"
+
+#: contrib/comments/templates/comments/form.html:8
+msgid "Forgotten your password?"
+msgstr "Zapomniałeś hasło?"
+
#: contrib/comments/templates/comments/form.html:12
msgid "Ratings"
msgstr "Oceny"
@@ -326,13 +1083,13 @@ msgstr "Opcjonalne"
msgid "Post a photo"
msgstr "Wyślij zdjęcie"
-#: contrib/comments/templates/comments/form.html:27
+#: contrib/comments/templates/comments/form.html:28
#: contrib/comments/templates/comments/freeform.html:5
msgid "Comment:"
msgstr "Komentarz:"
-#: 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 "Podgląd"
@@ -340,6 +1097,22 @@ msgstr "Podgląd"
msgid "Your name:"
msgstr "Twoje imię:"
+#: contrib/sites/models.py:10
+msgid "domain name"
+msgstr "nazwa domeny"
+
+#: contrib/sites/models.py:11
+msgid "display name"
+msgstr "wyświetlana nazwa"
+
+#: contrib/sites/models.py:15
+msgid "site"
+msgstr "strona"
+
+#: contrib/sites/models.py:16
+msgid "sites"
+msgstr "strony"
+
#: contrib/admin/filterspecs.py:40
#, python-format
msgid ""
@@ -350,13 +1123,13 @@ 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 "Wszystko"
#: contrib/admin/filterspecs.py:109
msgid "Any date"
-msgstr "Jakolwiek data"
+msgstr "Dowolna data"
#: contrib/admin/filterspecs.py:110
msgid "Today"
@@ -374,18 +1147,6 @@ msgstr "Ten miesiąc"
msgid "This year"
msgstr "Ten rok"
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr "Tak"
-
-#: contrib/admin/filterspecs.py:143
-msgid "No"
-msgstr "Nie"
-
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr "Nieznany"
-
#: contrib/admin/models.py:16
msgid "action time"
msgstr "czas akcji"
@@ -414,12 +1175,34 @@ msgstr "log"
msgid "log entries"
msgstr "logi"
-#: contrib/admin/templatetags/admin_list.py:228
+#: contrib/admin/templatetags/admin_list.py:247
msgid "All dates"
msgstr "Wszystkie daty"
-#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36
-#: contrib/auth/forms.py:41
+#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:260
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "%(name)s \"%(obj)s\" dodany pomyślnie."
+
+#: contrib/admin/views/auth.py:24 contrib/admin/views/main.py:264
+#: contrib/admin/views/main.py:350
+msgid "You may edit it again below."
+msgstr "Możesz ponownie edytować wpis poniżej."
+
+#: contrib/admin/views/auth.py:30
+msgid "Add user"
+msgstr "Dodaj użytkownika"
+
+#: contrib/admin/views/auth.py:57
+msgid "Password changed successfully."
+msgstr "Hasło zostało zmienione pomyślnie."
+
+#: contrib/admin/views/auth.py:64
+#, python-format
+msgid "Change password: %s"
+msgstr "Zmień hasło: %s"
+
+#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60
msgid ""
"Please enter a correct username and password. Note that both fields are case-"
"sensitive."
@@ -427,243 +1210,313 @@ msgstr ""
"Proszę wpisać poprawną nazwę użytkownika i hasło. Uwaga: wielkość liter ma "
"znaczenie."
-#: contrib/admin/views/decorators.py:23
+#: contrib/admin/views/decorators.py:24
#: contrib/admin/templates/admin/login.html:25
msgid "Log in"
msgstr "Zaloguj się"
-#: 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 ""
-"Zaloguj się ponownie. Twoja sesja wygasła lecz twoje zgłoszenie "
-"zostało zapisane."
+"Zaloguj się ponownie. Twoja sesja wygasła lecz twoje zgłoszenie zostało "
+"zapisane."
-#: 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 ""
-"Twoja przeglądarka nie chce akceptować ciasteczek. Zmień "
-"jej ustawienia i spróbuj ponownie."
+"Twoja przeglądarka nie chce akceptować ciasteczek. Zmień jej ustawienia i "
+"spróbuj ponownie."
-#: contrib/admin/views/decorators.py:82
+#: contrib/admin/views/decorators.py:83
msgid "Usernames cannot contain the '@' character."
msgstr "Nazwy użytkowników nie mogą zawierać znaków '@'."
-#: 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 "Twój adres e-mail to nie jest twój login. Spróbuj '%s'."
+#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
+#: contrib/admin/views/doc.py:50
+msgid "tag:"
+msgstr "tag:"
+
+#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
+#: contrib/admin/views/doc.py:81
+msgid "filter:"
+msgstr "filtr:"
+
+#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
+#: contrib/admin/views/doc.py:139
+msgid "view:"
+msgstr "widok:"
+
+#: contrib/admin/views/doc.py:164
+#, python-format
+msgid "App %r not found"
+msgstr "Aplikacja %r nie została znaleziona"
+
+#: contrib/admin/views/doc.py:171
+#, python-format
+msgid "Model %(name)r not found in app %(label)r"
+msgstr "Model %(name)r nie został znaleziony w aplikacji %(label)r"
+
+#: contrib/admin/views/doc.py:183
+#, python-format
+msgid "the related `%(label)s.%(type)s` object"
+msgstr "powiązany obiekt `%(label)s.%(type)s`"
+
+#: 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 "model:"
+
+#: contrib/admin/views/doc.py:214
+#, python-format
+msgid "related `%(label)s.%(name)s` objects"
+msgstr "powiązane obiekty `%(label)s.%(name)s`"
+
+#: contrib/admin/views/doc.py:219
+#, python-format
+msgid "all %s"
+msgstr "wszystkie %s"
+
+#: contrib/admin/views/doc.py:224
+#, python-format
+msgid "number of %s"
+msgstr "liczba %s"
+
+#: contrib/admin/views/doc.py:229
+#, python-format
+msgid "Fields on %s objects"
+msgstr "Pola obiektów %s"
+
+#: 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 "Liczba całkowita"
+
+#: contrib/admin/views/doc.py:292
+msgid "Boolean (Either True or False)"
+msgstr "Wartość logiczna (True, False - prawda lub fałsz)"
+
+#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
+#, python-format
+msgid "String (up to %(maxlength)s)"
+msgstr "Łańcuch (do %(maxlength)s znaków)"
+
+#: contrib/admin/views/doc.py:294
+msgid "Comma-separated integers"
+msgstr "Liczby całkowite rozdzielone przecinkami"
+
+#: contrib/admin/views/doc.py:295
+msgid "Date (without time)"
+msgstr "Data (bez godziny)"
+
+#: contrib/admin/views/doc.py:296
+msgid "Date (with time)"
+msgstr "Data (z godziną)"
+
+#: contrib/admin/views/doc.py:297
+msgid "E-mail address"
+msgstr "Adres e-mail"
+
+#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:302
+msgid "File path"
+msgstr "Ścieżka do pliku"
+
+#: contrib/admin/views/doc.py:300
+msgid "Decimal number"
+msgstr "Numer dziesiętny"
+
+#: contrib/admin/views/doc.py:306
+msgid "Boolean (Either True, False or None)"
+msgstr "Wartość logiczna (True, False, None - prawda, fałsz lub nic)"
+
+#: contrib/admin/views/doc.py:307
+msgid "Relation to parent model"
+msgstr "Relacja do modelu rodzica"
+
+#: contrib/admin/views/doc.py:308
+msgid "Phone number"
+msgstr "Numer telefonu"
+
+#: contrib/admin/views/doc.py:313
+msgid "Text"
+msgstr "Tekst"
+
+#: contrib/admin/views/doc.py:314
+msgid "Time"
+msgstr "Czas"
+
+#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7
+msgid "URL"
+msgstr "URL"
+
+#: contrib/admin/views/doc.py:316
+msgid "U.S. state (two uppercase letters)"
+msgstr "Stan USA (dwie duże litery)"
+
+#: contrib/admin/views/doc.py:317
+msgid "XML text"
+msgstr "Tekst XML"
+
+#: contrib/admin/views/doc.py:343
+#, python-format
+msgid "%s does not appear to be a urlpattern object"
+msgstr "%s nie jest obiektem urlpattern"
+
#: contrib/admin/views/main.py:226
msgid "Site administration"
msgstr "Administracja stroną"
-#: contrib/admin/views/main.py:260
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" dodany pomyślnie."
-
-#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348
-msgid "You may edit it again below."
-msgstr "Możesz ponownie edytować wpis poniżej."
-
-#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357
+#: contrib/admin/views/main.py:274 contrib/admin/views/main.py:359
#, python-format
msgid "You may add another %s below."
msgstr "Możesz dodać nowy wpis %s poniżej."
-#: contrib/admin/views/main.py:290
+#: contrib/admin/views/main.py:292
#, python-format
msgid "Add %s"
msgstr "Dodaj %s"
-#: contrib/admin/views/main.py:336
+#: contrib/admin/views/main.py:338
#, python-format
msgid "Added %s."
msgstr "Dodano %s"
-#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
#: contrib/admin/views/main.py:340
-msgid "and"
-msgstr "i"
-
-#: contrib/admin/views/main.py:338
#, python-format
msgid "Changed %s."
msgstr "Zmieniono %s"
-#: contrib/admin/views/main.py:340
+#: contrib/admin/views/main.py:342
#, python-format
msgid "Deleted %s."
msgstr "Skasowano %s"
-#: contrib/admin/views/main.py:343
+#: contrib/admin/views/main.py:345
msgid "No fields changed."
msgstr "Żadne pole nie zmienione."
-#: contrib/admin/views/main.py:346
+#: contrib/admin/views/main.py:348
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr "%(name)s \"%(obj)s\" zostało pomyślnie zmienione."
-#: contrib/admin/views/main.py:354
+#: contrib/admin/views/main.py:356
#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" dodane pomyślnie. Możesz edytować ponownie wpis poniżej."
+msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr "%(name)s \"%(obj)s\" dodane pomyślnie. Możesz edytować ponownie wpis poniżej."
-
-#: contrib/admin/views/main.py:392
+#: contrib/admin/views/main.py:394
#, python-format
msgid "Change %s"
msgstr "Zmień %s"
-#: contrib/admin/views/main.py:470
+#: contrib/admin/views/main.py:479
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
msgstr "Jedno lub więcej %(fieldname)s w %(name)s: %(obj)s"
-#: contrib/admin/views/main.py:475
+#: contrib/admin/views/main.py:484
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
msgstr "Jedno lub więcej %(fieldname)s w %(name)s:"
-#: contrib/admin/views/main.py:508
+#: contrib/admin/views/main.py:517
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr "%(name)s \"%(obj)s\" usunięty pomyślnie."
-#: contrib/admin/views/main.py:511
+#: contrib/admin/views/main.py:520
msgid "Are you sure?"
msgstr "Jesteś pewien?"
-#: contrib/admin/views/main.py:533
+#: contrib/admin/views/main.py:542
#, python-format
msgid "Change history: %s"
msgstr "Historia zmian: %s"
-#: contrib/admin/views/main.py:565
+#: contrib/admin/views/main.py:576
#, python-format
msgid "Select %s"
msgstr "Zaznacz %s"
-#: contrib/admin/views/main.py:565
+#: contrib/admin/views/main.py:576
#, python-format
msgid "Select %s to change"
msgstr "Zaznacz %s aby zmienić"
-#: 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 "Liczba całkowita"
+#: contrib/admin/views/main.py:771
+msgid "Database error"
+msgstr "Błąd bazy danych"
-#: contrib/admin/views/doc.py:278
-msgid "Boolean (Either True or False)"
-msgstr "Wartość logiczna (True, False - prawda lub fałsz)"
+#: contrib/admin/templates/widget/file.html:2
+msgid "Currently:"
+msgstr "Teraz:"
-#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "Łańcuch (do %(maxlength)s znaków)"
+#: contrib/admin/templates/widget/file.html:3
+msgid "Change:"
+msgstr "Zmień:"
-#: contrib/admin/views/doc.py:280
-msgid "Comma-separated integers"
-msgstr "Liczby całkowite rozdzielone przecinkami"
+#: contrib/admin/templates/widget/date_time.html:3
+msgid "Date:"
+msgstr "Data:"
-#: contrib/admin/views/doc.py:281
-msgid "Date (without time)"
-msgstr "Data (bez godziny)"
+#: contrib/admin/templates/widget/date_time.html:4
+msgid "Time:"
+msgstr "Czas:"
-#: contrib/admin/views/doc.py:282
-msgid "Date (with time)"
-msgstr "Data (z godziną)"
-
-#: contrib/admin/views/doc.py:283
-msgid "E-mail address"
-msgstr "Adres e-mail"
-
-#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287
-msgid "File path"
-msgstr "Ścieżka do pliku"
-
-#: contrib/admin/views/doc.py:285
-msgid "Decimal number"
-msgstr "Numer dziesiętny"
-
-#: contrib/admin/views/doc.py:291
-msgid "Boolean (Either True, False or None)"
-msgstr "Wartość logiczna (True, False, None - prawda, fałsz lub nic)"
-
-#: contrib/admin/views/doc.py:292
-msgid "Relation to parent model"
-msgstr "Relacja do modelu rodzica"
-
-#: contrib/admin/views/doc.py:293
-msgid "Phone number"
-msgstr "Numer telefonu"
-
-#: contrib/admin/views/doc.py:298
-msgid "Text"
-msgstr "Tekst"
-
-#: contrib/admin/views/doc.py:299
-msgid "Time"
-msgstr "Czas"
-
-#: 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 "Stan USA (dwie duże litery)"
-
-#: contrib/admin/views/doc.py:302
-msgid "XML text"
-msgstr "Tekst XML"
-
-#: 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/object_history.html:3
#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/auth/user/change_password.html:9
#: 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 "Dokumentacja"
-#: 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/object_history.html:3
#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/auth/user/change_password.html:9
+#: contrib/admin/templates/admin/auth/user/change_password.html:15
+#: contrib/admin/templates/admin/auth/user/change_password.html:46
#: 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/bookmarklets.html:4
#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+#: contrib/admin/templates/admin_doc/template_tag_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
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
msgid "Change password"
msgstr "Zmiana hasła"
+#: contrib/admin/templates/admin/change_list.html:6
#: 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/invalid_setup.html:4
#: contrib/admin/templates/admin/change_form.html:13
+#: contrib/admin/templates/admin/delete_confirmation.html:6
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/auth/user/change_password.html:12
#: 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
@@ -673,8 +1526,18 @@ msgstr "Zmiana hasła"
msgid "Home"
msgstr "Początek"
+#: contrib/admin/templates/admin/change_list.html:12
+#, python-format
+msgid "Add %(name)s"
+msgstr "Dodaj %(name)s"
+
+#: contrib/admin/templates/admin/filter.html:2
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " Używając %(filter_title)s "
+
#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:20
+#: contrib/admin/templates/admin/change_form.html:21
msgid "History"
msgstr "Historia"
@@ -699,8 +1562,28 @@ msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
msgstr ""
-"Ten obiekt nie ma historii zmian. Najprawdopodobniej wpis te nie "
-"został dodany poprzez panel admina"
+"Ten obiekt nie ma historii zmian. Najprawdopodobniej wpis ten nie został "
+"dodany poprzez panel administracyjny."
+
+#: contrib/admin/templates/admin/search_form.html:8
+msgid "Go"
+msgstr "Szukaj"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] "1 wynik"
+msgstr[1] "%(counter)s wyników"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s trafień"
+
+#: contrib/admin/templates/admin/pagination.html:10
+msgid "Show all"
+msgstr "Pokaż wszystko"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
@@ -727,23 +1610,29 @@ 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 ""
-"Wystąpił niespodziewany błąd. Raport został wysłany emailem "
-"administratorowi strony."
+"Wystąpił niespodziewany błąd. Raport został wysłany emailem administratorowi "
+"strony."
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Strona nie znaleziona"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Niestety nie można znaleźć rządanej strony."
+#: 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 ""
+"Instalacja Twojej bazy danych jest niepoprawna. Upewnij się, że odpowiednie "
+"tabele zostały utworzone i odpowiedni użytkownik jest uprawniony do ich "
+"odczytu."
#: contrib/admin/templates/admin/index.html:17
#, python-format
msgid "Models available in the %(name)s application."
msgstr "Modele dostępne w aplikacji %(name)s."
+#: 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
msgid "Add"
@@ -769,75 +1658,70 @@ msgstr "Moje akcje"
msgid "None available"
msgstr "Brak"
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Dodaj %(name)s"
+#: contrib/admin/templates/admin/404.html:4
+#: contrib/admin/templates/admin/404.html:8
+msgid "Page not found"
+msgstr "Strona nie znaleziona"
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you forgotten your password?"
-msgstr ""
-"Czy zapomniałeś/łaś hasła?"
+#: contrib/admin/templates/admin/404.html:10
+msgid "We're sorry, but the requested page could not be found."
+msgstr "Niestety nie można znaleźć rządanej strony."
-#: contrib/admin/templates/admin/base.html:23
-msgid "Welcome,"
-msgstr "Witaj,"
+#: contrib/admin/templates/admin/filters.html:4
+msgid "Filter"
+msgstr "Filtr"
+
+#: contrib/admin/templates/admin/change_form.html:22
+msgid "View on site"
+msgstr "Pokaż na stronie"
+
+#: contrib/admin/templates/admin/change_form.html:32
+#: contrib/admin/templates/admin/auth/user/change_password.html:24
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Proszę popraw poniższy błąd"
+msgstr[1] "Proszę popraw poniższe błędy"
+
+#: contrib/admin/templates/admin/change_form.html:50
+msgid "Ordering"
+msgstr "Sortowanie"
+
+#: contrib/admin/templates/admin/change_form.html:53
+msgid "Order:"
+msgstr "Porządek:"
#: contrib/admin/templates/admin/delete_confirmation.html:9
#: contrib/admin/templates/admin/submit_line.html:3
msgid "Delete"
-msgstr "Skasuj"
+msgstr "Usuń"
#: 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 ""
-"Skasowanie %(object_name)s '%(object)s' spowoduje kasację zależnych "
-"obiektów, lecz twoje uprawnienia nie pozwalają na usunięcie następujących "
+"Skasowanie %(object_name)s '%(escaped_object)s' spowoduje usunięcie "
+"zależnych obiektów, lecz nie posiadasz uprawnień do usunięcia następujących "
"typów obiektów:"
#: 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 ""
-"Czy chcesz skasować %(object_name)s \"%(object)s\"? Wszystkie "
+"Czy chcesz skasować %(object_name)s \"%(escaped_object)s\"? Następujące "
"zależne obiekty zostaną skasowane:"
#: contrib/admin/templates/admin/delete_confirmation.html:26
msgid "Yes, I'm sure"
msgstr "Tak, usuń"
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(title)s "
-msgstr "Używając %(title)s"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Szukaj"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Pokaż na stronie"
-
-#: contrib/admin/templates/admin/change_form.html:30
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Proszę popraw poniższy błąd"
-msgstr[1] "Proszę popraw poniższe błędy"
-
-#: contrib/admin/templates/admin/change_form.html:48
-msgid "Ordering"
-msgstr "Sortowanie"
-
-#: contrib/admin/templates/admin/change_form.html:51
-msgid "Order:"
-msgstr "Porządek:"
+#: contrib/admin/templates/admin/base.html:25
+msgid "Welcome,"
+msgstr "Witaj,"
#: contrib/admin/templates/admin/submit_line.html:4
msgid "Save as new"
@@ -855,6 +1739,38 @@ msgstr "Zapisz i kontynuuj edycję"
msgid "Save"
msgstr "Zapisz"
+#: contrib/admin/templates/admin/auth/user/change_password.html:28
+#, python-format
+msgid "Enter a new password for the user %(username)s."
+msgstr "Podaj nowe hasło dla użytkownika %(username)s."
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:34
+#: contrib/admin/templates/admin/auth/user/add_form.html:18
+msgid "Password"
+msgstr "Hasło"
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/admin/templates/admin/auth/user/add_form.html:23
+msgid "Password (again)"
+msgstr "Hasło (powtórz)"
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:40
+#: contrib/admin/templates/admin/auth/user/add_form.html:24
+msgid "Enter the same password as above, for verification."
+msgstr "Podaj powyższe hasło w celu weryfikacji."
+
+#: 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 ""
+"Najpierw podaj nazwę użytkownika i hasło. Następnie będziesz mógł edytować "
+"więcej opcji użytkownika."
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:12
+msgid "Username"
+msgstr "Nazwa użytkownika"
+
#: 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
@@ -883,8 +1799,8 @@ 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 ""
-"Podaj swój adres email. Hasło zostanie zresetowane i wysłane na twój "
-"adres email."
+"Podaj swój adres email. Hasło zostanie zresetowane i wysłane na twój adres "
+"email."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
@@ -912,8 +1828,8 @@ msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
msgstr ""
-"Nowe hasło zostało wysłane na podany adres email. Powinieneś "
-"otrzymać je niebawem."
+"Nowe hasło zostało wysłane na podany adres email. Powinieneś otrzymać je "
+"niebawem."
#: contrib/admin/templates/registration/password_change_form.html:12
msgid ""
@@ -986,6 +1902,14 @@ msgid ""
"as \"internal\" (talk to your system administrator if you aren't sure if\n"
"your computer is \"internal\").
\n"
msgstr ""
+"\n"
+"
Aby zainstalować skryptozakładki, przeciągnij łącze do "
+"paska zakładek\n"
+"lub kliknij prawym klawiszem na łączu i dodaj je do zakładek. Teraz możesz\n"
+"wybrać skryptozakładkę na dowolnej stronie serwisu. Uwaga: niektóre z tych "
+"skryptozakładek wymagają przeglądania serwisu z komputera\n"
+"\"wewnętrznego\" (skontaktuj się z administratorem systemu, jeśli nie jesteś "
+"pewien, czy ten komputer jest \"wewnętrznym\").
\n"
#: contrib/admin/templates/admin_doc/bookmarklets.html:19
msgid "Documentation for this page"
@@ -996,6 +1920,8 @@ msgid ""
"Jumps you from any page to the documentation for the view that generates "
"that page."
msgstr ""
+"Przekierowuje z dowolnej strony do dokumentacji dla widoku, który ją "
+"generuje."
#: contrib/admin/templates/admin_doc/bookmarklets.html:22
msgid "Show object ID"
@@ -1005,13 +1931,11 @@ msgstr "Pokaż ID obiektu"
msgid ""
"Shows the content-type and unique ID for pages that represent a single "
"object."
-msgstr ""
-"Pokazuje typ i unikalne ID dla stron, które reprezentują "
-"pojedynczy obiekt."
+msgstr "Pokazuje typ i unikalne ID dla stron, które reprezentują pojedynczy obiekt."
#: contrib/admin/templates/admin_doc/bookmarklets.html:25
msgid "Edit this object (current window)"
-msgstr "Edytuj ten obiekt (bierzące okno)"
+msgstr "Edytuj ten obiekt (bieżące okno)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:26
msgid "Jumps to the admin page for pages that represent a single object."
@@ -1025,58 +1949,691 @@ msgstr "Edytuj ten obiekt (nowe onko)"
msgid "As above, but opens the admin page in a new window."
msgstr "Jak wyżej, tyle że otwiera nowe okno."
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Data:"
+#: contrib/contenttypes/models.py:36
+msgid "python model class name"
+msgstr "nazwa pythonowa modelu klasy"
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Czas:"
+#: contrib/contenttypes/models.py:39
+msgid "content type"
+msgstr "typ zawartości"
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Teraz:"
+#: contrib/contenttypes/models.py:40
+msgid "content types"
+msgstr "typy zawartości"
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Zmień:"
+#: contrib/auth/views.py:40
+msgid "Logged out"
+msgstr "Wylogowany"
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "przekieruj z"
+#: contrib/auth/models.py:44 contrib/auth/models.py:64
+msgid "name"
+msgstr "nazwa"
-#: contrib/redirects/models.py:8
+#: contrib/auth/models.py:46
+msgid "codename"
+msgstr "nazwa kodowa"
+
+#: contrib/auth/models.py:49
+msgid "permission"
+msgstr "uprawnienie"
+
+#: contrib/auth/models.py:50 contrib/auth/models.py:65
+msgid "permissions"
+msgstr "uprawnienia"
+
+#: contrib/auth/models.py:68
+msgid "group"
+msgstr "grupa"
+
+#: contrib/auth/models.py:69 contrib/auth/models.py:109
+msgid "groups"
+msgstr "grupy"
+
+#: contrib/auth/models.py:99
+msgid "username"
+msgstr "użytkownik"
+
+#: contrib/auth/models.py:99
msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
msgstr ""
-"Podaj pełną ścieżkę bez nazwy domeny. Przykład: '/"
-"events/search/'."
+"Wymagane. 30 znaków lub mniej. Tylko znaki alfanumeryczne (litery, cyfry i "
+"podkreślenia)."
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "przekierowanie do"
+#: contrib/auth/models.py:100
+msgid "first name"
+msgstr "Imię"
-#: contrib/redirects/models.py:10
+#: contrib/auth/models.py:101
+msgid "last name"
+msgstr "Nazwisko"
+
+#: contrib/auth/models.py:102
+msgid "e-mail address"
+msgstr "adres e-mail"
+
+#: contrib/auth/models.py:103
+msgid "password"
+msgstr "hasło"
+
+#: contrib/auth/models.py:103
msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "Ścieżka jak wyżej lub pełny URL z http://"
+"Use '[algo]$[salt]$[hexdigest]' or use the change "
+"password form."
+msgstr ""
+"Użyj '[algo]$[salt]$[hexdigest]' lub formularza zmiany "
+"hasła."
-#: contrib/redirects/models.py:12
-msgid "redirect"
-msgstr "przekieruj"
+#: contrib/auth/models.py:104
+msgid "staff status"
+msgstr "w zespole"
-#: contrib/redirects/models.py:13
-msgid "redirects"
-msgstr "przekierowania"
+#: contrib/auth/models.py:104
+msgid "Designates whether the user can log into this admin site."
+msgstr "Oznacza czy użytkownik może zalogować się do panelu admina."
+
+#: contrib/auth/models.py:105
+msgid "active"
+msgstr "aktywny"
+
+#: contrib/auth/models.py:105
+msgid ""
+"Designates whether this user can log into the Django admin. Unselect this "
+"instead of deleting accounts."
+msgstr ""
+"Oznacza czy użytkownik może zalogować się do panelu administratora. Odznacz "
+"to zamiast usuwać konta."
+
+#: contrib/auth/models.py:106
+msgid "superuser status"
+msgstr "Główny Administrator"
+
+#: contrib/auth/models.py:106
+msgid ""
+"Designates that this user has all permissions without explicitly assigning "
+"them."
+msgstr ""
+"Oznacza, że ten użytkownik ma wszystkie uprawnienia bez jawnego "
+"przypisywania ich."
+
+#: contrib/auth/models.py:107
+msgid "last login"
+msgstr "ostatnio zalogowany"
+
+#: contrib/auth/models.py:108
+msgid "date joined"
+msgstr "data przyłączenia"
+
+#: contrib/auth/models.py:110
+msgid ""
+"In addition to the permissions manually assigned, this user will also get "
+"all permissions granted to each group he/she is in."
+msgstr ""
+"Oprócz uprawnień przypisanych bezpośrednio użytkownikowi otrzyma on "
+"uprawnienia grup, do których należy."
+
+#: contrib/auth/models.py:111
+msgid "user permissions"
+msgstr "uprawnienia użytkownika"
+
+# kurwa
+#: contrib/auth/models.py:115
+msgid "user"
+msgstr "użytkownik"
+
+#: contrib/auth/models.py:116
+msgid "users"
+msgstr "użytkownicy"
+
+#: contrib/auth/models.py:122
+msgid "Personal info"
+msgstr "Dane osobowe"
+
+#: contrib/auth/models.py:123
+msgid "Permissions"
+msgstr "Uprawnienia"
+
+#: contrib/auth/models.py:124
+msgid "Important dates"
+msgstr "Ważne daty"
+
+#: contrib/auth/models.py:125
+msgid "Groups"
+msgstr "Grupy"
+
+#: contrib/auth/models.py:269
+msgid "message"
+msgstr "wiadomość"
+
+#: contrib/auth/models.py:282
+msgid "AnonymousUser"
+msgstr "UżytkownikAnonimowy"
+
+#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
+msgid "The two password fields didn't match."
+msgstr "Hasła się nie zgadzają."
+
+#: contrib/auth/forms.py:25
+msgid "A user with that username already exists."
+msgstr "Użytkownik o tej nazwie już istnieje."
+
+#: contrib/auth/forms.py:53
+msgid ""
+"Your Web browser doesn't appear to have cookies enabled. Cookies are "
+"required for logging in."
+msgstr ""
+"Twoja przeglądarka nie chce akceptować ciasteczek. Są one wymagane do "
+"zalogowania się."
+
+#: contrib/auth/forms.py:62
+msgid "This account is inactive."
+msgstr "To konto jest nieaktywne."
+
+#: contrib/auth/forms.py:85
+msgid ""
+"That e-mail address doesn't have an associated user account. Are you sure "
+"you've registered?"
+msgstr ""
+"Ten adres e-mail nie ma przypisanego konta. Jesteś pewien, że "
+"zarejestrowałeś się?"
+
+#: contrib/auth/forms.py:117
+msgid "The two 'new password' fields didn't match."
+msgstr "Pola 'nowe hasło' nie zgadzają się."
+
+#: contrib/auth/forms.py:124
+msgid "Your old password was entered incorrectly. Please enter it again."
+msgstr "Podane stare hasło jest niepoprawne. Proszę podać je jeszcze raz."
+
+#: contrib/localflavor/uk/forms.py:18
+msgid "Enter a postcode. A space is required between the two postcode parts."
+msgstr "Wpisz kod pocztowy. Biały znak pomiędzy dwiema częściami kodu jest wymagany."
+
+#: contrib/localflavor/br/forms.py:18
+msgid "Enter a zip code in the format XXXXX-XXX."
+msgstr "Wpisz kod pocztowy w formacie XXXXX-XXX."
+
+#: contrib/localflavor/br/forms.py:30
+msgid "Phone numbers must be in XX-XXXX-XXXX format."
+msgstr "Numery telefoniczne muszą być w formacie XX-XXXX-XXXX."
+
+#: contrib/localflavor/br/forms.py:72
+msgid "This field requires only numbers."
+msgstr "To pole może zawierać jedynie liczby."
+
+#: contrib/localflavor/br/forms.py:74
+msgid "This field requires at most 11 digits or 14 characters."
+msgstr "To pole nie może zawierać więcej niż 11 cyfr lub 14 znaków."
+
+#: contrib/localflavor/br/forms.py:84
+msgid "Invalid CPF number."
+msgstr "Błędny numer CPF."
+
+#: contrib/localflavor/br/forms.py:106
+msgid "This field requires at least 14 digits"
+msgstr "To pole musi zawierać co najmniej 14 cyfr."
+
+#: contrib/localflavor/br/forms.py:116
+msgid "Invalid CNPJ number."
+msgstr "Błędny numer CNPJ."
+
+#: contrib/localflavor/au/forms.py:18
+msgid "Enter a 4 digit post code."
+msgstr "Wpisz czterocyfrowy kod pocztowy."
+
+#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/de/forms.py:16
+#: contrib/localflavor/fi/forms.py:14
+msgid "Enter a zip code in the format XXXXX."
+msgstr "Wpisz kod pocztowy w formacie XXXXX."
+
+#: contrib/localflavor/us/forms.py:18
+msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
+msgstr "Wpisz kod pocztowy w formacie XXXXX. lub XXXXX-XXXX."
+
+#: contrib/localflavor/us/forms.py:51
+msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
+msgstr "Wpisz poprawny numer U.S. Social Security w formacie XXX-XX-XXXX."
+
+#: contrib/localflavor/de/de_states.py:5
+msgid "Baden-Wuerttemberg"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:6
+msgid "Bavaria"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:7
+msgid "Berlin"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:8
+msgid "Brandenburg"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:9
+msgid "Bremen"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:10
+msgid "Hamburg"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:11
+msgid "Hessen"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:12
+msgid "Mecklenburg-Western Pomerania"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:13
+msgid "Lower Saxony"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:14
+msgid "North Rhine-Westphalia"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:15
+msgid "Rhineland-Palatinate"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:16
+msgid "Saarland"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:17
+msgid "Saxony"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:18
+msgid "Saxony-Anhalt"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:19
+msgid "Schleswig-Holstein"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:20
+msgid "Thuringia"
+msgstr ""
+
+#: contrib/localflavor/de/forms.py:60
+msgid ""
+"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
+"format."
+msgstr ""
+"Podaj poprawny niemiecki numer dowodu osobistego w formacie XXXXXXXXXXX-"
+"XXXXXXX-XXXXXXX-X."
+
+#: contrib/localflavor/jp/jp_prefectures.py:4
+msgid "Hokkaido"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:5
+msgid "Aomori"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:6
+msgid "Iwate"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:7
+msgid "Miyagi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:8
+msgid "Akita"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:9
+msgid "Yamagata"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:10
+msgid "Fukushima"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:11
+msgid "Ibaraki"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:12
+msgid "Tochigi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:13
+msgid "Gunma"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:14
+msgid "Saitama"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:15
+msgid "Chiba"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:16
+msgid "Tokyo"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:17
+msgid "Kanagawa"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:18
+msgid "Yamanashi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:19
+msgid "Nagano"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:20
+msgid "Niigata"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:21
+msgid "Toyama"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:22
+msgid "Ishikawa"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:23
+msgid "Fukui"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:24
+msgid "Gifu"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:25
+msgid "Shizuoka"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:26
+msgid "Aichi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:27
+msgid "Mie"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:28
+msgid "Shiga"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:29
+msgid "Kyoto"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:30
+msgid "Osaka"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:31
+msgid "Hyogo"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:32
+msgid "Nara"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:33
+msgid "Wakayama"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:34
+msgid "Tottori"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:35
+msgid "Shimane"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:36
+msgid "Okayama"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:37
+msgid "Hiroshima"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:38
+msgid "Yamaguchi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:39
+msgid "Tokushima"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:40
+msgid "Kagawa"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:41
+msgid "Ehime"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:42
+msgid "Kochi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:43
+msgid "Fukuoka"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:44
+msgid "Saga"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:45
+msgid "Nagasaki"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:46
+msgid "Kumamoto"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:47
+msgid "Oita"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:48
+msgid "Miyazaki"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:49
+msgid "Kagoshima"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:50
+msgid "Okinawa"
+msgstr ""
+
+#: contrib/localflavor/jp/forms.py:21
+msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
+msgstr "Wpisz kod pocztowy w formacie XXXXXXX lub XXX-XXXX."
+
+#: contrib/localflavor/it/forms.py:16
+msgid "Enter a valid zip code."
+msgstr "Wpisz poprawny kod pocztowy."
+
+#: contrib/localflavor/it/forms.py:41
+msgid "Enter a valid Social Security number."
+msgstr "Wpisz poprawny numer ubezpieczenia socjalnego."
+
+#: contrib/localflavor/it/forms.py:68
+msgid "Enter a valid VAT number."
+msgstr "Wpisz poprawny numer VAT."
+
+#: contrib/localflavor/no/forms.py:15 contrib/localflavor/ch/forms.py:18
+msgid "Enter a zip code in the format XXXX."
+msgstr "Wpisz kod pocztowy w formacie XXXX."
+
+#: contrib/localflavor/no/forms.py:36
+msgid "Enter a valid Norwegian social security number."
+msgstr "Wpis poprawny numer norweskiego ubezpieczenia socjalnego."
+
+#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45
+msgid "Enter a valid Finnish social security number."
+msgstr "Wpis poprawny numer fińskiego ubezpieczenia socjalnego."
+
+#: contrib/localflavor/ch/ch_states.py:5
+msgid "Aargau"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:6
+msgid "Appenzell Innerrhoden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:7
+msgid "Appenzell Ausserrhoden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:8
+msgid "Basel-Stadt"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:9
+msgid "Basel-Land"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:10
+msgid "Berne"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:11
+msgid "Fribourg"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:12
+msgid "Geneva"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:13
+msgid "Glarus"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:14
+msgid "Graubuenden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:15
+msgid "Jura"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:16
+msgid "Lucerne"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:17
+msgid "Neuchatel"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:18
+msgid "Nidwalden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:19
+msgid "Obwalden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:20
+msgid "Schaffhausen"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:21
+msgid "Schwyz"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:22
+msgid "Solothurn"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:23
+msgid "St. Gallen"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:24
+msgid "Thurgau"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:25
+msgid "Ticino"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:26
+msgid "Uri"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:27
+msgid "Valais"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:28
+msgid "Vaud"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:29
+msgid "Zug"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:30
+msgid "Zurich"
+msgstr ""
+
+#: contrib/localflavor/ch/forms.py:90
+msgid ""
+"Enter a valid Swiss identity or passport card number in X1234567<0 or "
+"1234567890 format."
+msgstr "Podaj poprawny numer szwajarskiego dowodu osobistego lub paszportu w formacie X1234567<0 lub 1234567890."
+
+#: contrib/localflavor/is_/forms.py:16
+msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
+msgstr "Podaj poprawny numer islandzkiego dowodu osobistego w formacie XXXXXX-XXXX."
+
+#: contrib/localflavor/is_/forms.py:30
+msgid "The Icelandic identification number is not valid."
+msgstr "Numer islandzkiego dowodu osobistego jest błędny."
+
+#: contrib/localflavor/cl/forms.py:21
+msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
+msgstr "Podaj poprawny czilijski RUT w formacie XX.XXX.XXX-X."
+
+#: contrib/localflavor/cl/forms.py:26
+msgid "Enter valid a Chilean RUT"
+msgstr "Wpisz poprawny czilijski RUT"
+
+#: contrib/sessions/models.py:68
+msgid "session key"
+msgstr "klucz sesji"
+
+#: contrib/sessions/models.py:69
+msgid "session data"
+msgstr "data sesji"
+
+#: contrib/sessions/models.py:70
+msgid "expire date"
+msgstr "data wygaśnięcia sesji"
+
+#: contrib/sessions/models.py:74
+msgid "session"
+msgstr "sesja"
+
+#: contrib/sessions/models.py:75
+msgid "sessions"
+msgstr "sesje"
#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
-"Przykład: '/about/contact/'. Upewnij się że wpisałeś otwierający i zamykający slash."
-
+"Przykład: '/about/contact/'. Upewnij się że wpisałeś otwierający i "
+"zamykający ukośnik."
#: contrib/flatpages/models.py:9
msgid "title"
@@ -1096,11 +2653,11 @@ msgstr "nazwa szablonu"
#: 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 ""
-"Przykład: 'flatpages/contact_page'. Jeżeli nie podane system użyje "
-"'flatpages/default'."
+"Przykład: 'flatpages/contact_page.html'. Jeżeli nie zostanie podane, system "
+"użyje 'flatpages/default.html'."
#: contrib/flatpages/models.py:14
msgid "registration required"
@@ -1118,187 +2675,6 @@ msgstr "strona statyczna"
msgid "flat pages"
msgstr "strony statyczne"
-#: contrib/auth/models.py:13 contrib/auth/models.py:26
-msgid "name"
-msgstr "nazwa"
-
-#: contrib/auth/models.py:15
-msgid "codename"
-msgstr "nazwa kodowa"
-
-#: contrib/auth/models.py:17
-msgid "permission"
-msgstr "uprawnienie"
-
-#: contrib/auth/models.py:18 contrib/auth/models.py:27
-msgid "permissions"
-msgstr "uprawnienia"
-
-#: contrib/auth/models.py:29
-msgid "group"
-msgstr "grupa"
-
-#: contrib/auth/models.py:30 contrib/auth/models.py:65
-msgid "groups"
-msgstr "grupy"
-
-#: contrib/auth/models.py:55
-msgid "username"
-msgstr "użytkownik"
-
-#: contrib/auth/models.py:56
-msgid "first name"
-msgstr "Imię"
-
-#: contrib/auth/models.py:57
-msgid "last name"
-msgstr "Nazwisko"
-
-#: contrib/auth/models.py:58
-msgid "e-mail address"
-msgstr "adres e-mail"
-
-#: contrib/auth/models.py:59
-msgid "password"
-msgstr "hasło"
-
-#: contrib/auth/models.py:59
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr "Użyj '[algo]$[salt]$[hexdigest]'"
-
-#: contrib/auth/models.py:60
-msgid "staff status"
-msgstr "w zespole"
-
-#: contrib/auth/models.py:60
-msgid "Designates whether the user can log into this admin site."
-msgstr "Oznacza czy użytkownik może zalogować się do panelu admina."
-
-#: contrib/auth/models.py:61
-msgid "active"
-msgstr "aktywny"
-
-#: contrib/auth/models.py:62
-msgid "superuser status"
-msgstr "Główny Administrator"
-
-#: contrib/auth/models.py:63
-msgid "last login"
-msgstr "ostatnio zalogowany"
-
-#: contrib/auth/models.py:64
-msgid "date joined"
-msgstr "data przyłączenia"
-
-#: 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 ""
-"Oprócz uprawnień przypisanych bezpośrednio użytkownikowi otrzyma on "
-"uprawnienia grup, do których należy."
-
-#: contrib/auth/models.py:67
-msgid "user permissions"
-msgstr "uprawnienia użytkownika"
-
-#kurwa
-#: contrib/auth/models.py:70
-msgid "user"
-msgstr "użytkownik"
-
-#: contrib/auth/models.py:71
-msgid "users"
-msgstr "użytkownicy"
-
-#: contrib/auth/models.py:76
-msgid "Personal info"
-msgstr "Dane osobowe"
-
-#: contrib/auth/models.py:77
-msgid "Permissions"
-msgstr "Uprawnienia"
-
-#: contrib/auth/models.py:78
-msgid "Important dates"
-msgstr "Ważne daty"
-
-#: contrib/auth/models.py:79
-msgid "Groups"
-msgstr "Grupy"
-
-#: contrib/auth/models.py:219
-msgid "message"
-msgstr "wiadomość"
-
-#: contrib/auth/forms.py:30
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Twoja przeglądarka nie chce akceptować ciasteczek. Są one "
-"wymagane do zalogowania się."
-
-#: contrib/contenttypes/models.py:25
-msgid "python model class name"
-msgstr "nazwa pythonowa modelu klasy"
-
-#: contrib/contenttypes/models.py:28
-msgid "content type"
-msgstr "typ zawartości"
-
-#: contrib/contenttypes/models.py:29
-msgid "content types"
-msgstr "typy zawartości"
-
-#: contrib/sessions/models.py:35
-msgid "session key"
-msgstr "klucz sesji"
-
-#: contrib/sessions/models.py:36
-msgid "session data"
-msgstr "data sesji"
-
-#: contrib/sessions/models.py:37
-msgid "expire date"
-msgstr "data wygaśnięcia sesji"
-
-#: contrib/sessions/models.py:41
-msgid "session"
-msgstr "sesja"
-
-#: contrib/sessions/models.py:42
-msgid "sessions"
-msgstr "sesje"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "nazwa domeny"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "wyświetlana nazwa"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "strona"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "strony"
-
-#: utils/translation.py:360
-msgid "DATE_FORMAT"
-msgstr "Y-m-d"
-
-#: utils/translation.py:361
-msgid "DATETIME_FORMAT"
-msgstr "Y-m-d H:i:s"
-
-#: utils/translation.py:362
-msgid "TIME_FORMAT"
-msgstr "H:i:s"
-
#: utils/dates.py:6
msgid "Monday"
msgstr "Poniedziałek"
@@ -1487,475 +2863,89 @@ msgid_plural "minutes"
msgstr[0] "minuta"
msgstr[1] "minut"
-#: conf/global_settings.py:37
-msgid "Bengali"
-msgstr "Bengalski"
-
-#: conf/global_settings.py:38
-msgid "Czech"
-msgstr "Czeski"
-
-#: conf/global_settings.py:39
-msgid "Welsh"
-msgstr "Walijski"
-
-#: conf/global_settings.py:40
-msgid "Danish"
-msgstr "Duński"
-
-#: conf/global_settings.py:41
-msgid "German"
-msgstr "Niemiecki"
-
-#: conf/global_settings.py:42
-msgid "Greek"
-msgstr "Grecki"
-
-#: conf/global_settings.py:43
-msgid "English"
-msgstr "Angielski"
-
-#: conf/global_settings.py:44
-msgid "Spanish"
-msgstr "Hiszpański"
-
-#: conf/global_settings.py:45
-msgid "French"
-msgstr "Francuski"
-
-#: conf/global_settings.py:46
-msgid "Galician"
-msgstr "Galicyjnski"
-
-#: conf/global_settings.py:47
-msgid "Hungarian"
-msgstr ""
-
-#: conf/global_settings.py:48
-msgid "Hebrew"
-msgstr "Hebrajski"
-
-#: conf/global_settings.py:49
-msgid "Icelandic"
-msgstr "Islandzki"
-
-#: conf/global_settings.py:50
-msgid "Italian"
-msgstr "Włoski"
-
-#: conf/global_settings.py:51
-msgid "Japanese"
-msgstr "Japoński"
-
-#: conf/global_settings.py:52
-msgid "Dutch"
-msgstr "Holenderski"
-
-#: conf/global_settings.py:53
-msgid "Norwegian"
-msgstr "Norweski"
-
-#: conf/global_settings.py:54
-msgid "Brazilian"
-msgstr "Brazylijski"
-
-#: conf/global_settings.py:55
-msgid "Romanian"
-msgstr "Rumuński"
-
-#: conf/global_settings.py:56
-msgid "Russian"
-msgstr "Rosyjski"
-
-#: conf/global_settings.py:57
-msgid "Slovak"
-msgstr "Słowacki"
-
-#: conf/global_settings.py:58
-msgid "Slovenian"
-msgstr "Słowacki"
-
-#: conf/global_settings.py:59
-msgid "Serbian"
-msgstr "Serbski"
-
-#: conf/global_settings.py:60
-msgid "Swedish"
-msgstr "Szwedzki"
-
-#: conf/global_settings.py:61
-msgid "Ukrainian"
-msgstr "Ukraiński"
-
-#: conf/global_settings.py:62
-msgid "Simplified Chinese"
-msgstr "Uproszczony Chiński"
-
-#: conf/global_settings.py:63
-msgid "Traditional Chinese"
-msgstr "Chiński tradycyjny"
-
-#: core/validators.py:60
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "To pole możei zawierać tylko litery, cyfry i podkreślenia"
-
-#: core/validators.py:64
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr "To pole może zawierać jedynie litery, cyfry, podkreślenia i slasze."
-
-#: core/validators.py:72
-msgid "Uppercase letters are not allowed here."
-msgstr "Wielkie litery nie są tutaj dozwolone"
-
-#: core/validators.py:76
-msgid "Lowercase letters are not allowed here."
-msgstr "Małe litery nie są tutaj dozwolone"
-
-#: core/validators.py:83
-msgid "Enter only digits separated by commas."
-msgstr "Wpisz tylko cyfry odddzielone przecinkami"
-
-#: core/validators.py:95
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Wpisz poprawne adresy e-mai oddzielone przecinkamil"
-
-#: core/validators.py:99
-msgid "Please enter a valid IP address."
-msgstr "Proszę wpisać poprawny adres IP"
-
-#: core/validators.py:103
-msgid "Empty values are not allowed here."
-msgstr "Proszę wypełnić te pola"
-
-#: core/validators.py:107
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Tu mogą być tylko cyfry"
-
-#: core/validators.py:111
-msgid "This value can't be comprised solely of digits."
-msgstr "To pole nie może zawierać jedynie cyfr."
-
-#: core/validators.py:116
-msgid "Enter a whole number."
-msgstr "Wpisz całą liczbę"
-
-#: core/validators.py:120
-msgid "Only alphabetical characters are allowed here."
-msgstr "Tutaj są dozwolone tylko litery"
-
-#: core/validators.py:124
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Proszę wpisać poprawną datę w formacie RRRR-MM-DD."
-
-#: core/validators.py:128
-msgid "Enter a valid time in HH:MM format."
-msgstr "Proszę wpisać poprawny czas w formacie GG:MM"
-
-#: core/validators.py:132 db/models/fields/__init__.py:468
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Wprowadź poprawną datę i czas w formacie RRRR-MM-DD GG:MM"
-
-#: core/validators.py:136
-msgid "Enter a valid e-mail address."
-msgstr "Wprowadź poprawny adres e-mail"
-
-#: core/validators.py:148
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Wgraj poprawny plik graficzny. Ten, który został wgrany jest niepoprawny "
-"albo uszkodzony."
-
-#: core/validators.py:155
+#: utils/timesince.py:40
#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "Odnośnik %s nie wskazuje na poprawny plik z obrazem."
+msgid "%d milliseconds"
+msgstr "%d milisekund"
-#: core/validators.py:159
+#: utils/timesince.py:41
#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Numery telefoniczne muszą być w formacie XXX-XXX-XXXX. \"%s\" jest "
-"niepoprawny."
+msgid "%(number)d %(type)s"
+msgstr "%(number)d %(type)s"
-#: core/validators.py:167
+#: utils/timesince.py:47
#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "Odnośnik %s nie wskazuje na poprawne plik QuickTime video."
+msgid ", %(number)d %(type)s"
+msgstr ", %(number)d %(type)s"
-#: core/validators.py:171
-msgid "A valid URL is required."
-msgstr "Wymagany jest poprawny URL."
+#: utils/dateformat.py:40
+msgid "p.m."
+msgstr "popołudniu"
-#: core/validators.py:185
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Wymagany jest poprawny odnośnik. Błędy to:\n"
-"%s"
+#: utils/dateformat.py:41
+msgid "a.m."
+msgstr "rano"
-#: core/validators.py:192
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Nieprawidłowy format XML: %s"
+#: utils/dateformat.py:46
+msgid "PM"
+msgstr "popołudniu"
-#: core/validators.py:202
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Niepoprawny odnośnik: %s"
+#: utils/dateformat.py:47
+msgid "AM"
+msgstr "rano"
-#: core/validators.py:206 core/validators.py:208
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "Odnośnik %s jest nieprawidłowy."
+#: utils/dateformat.py:95
+msgid "midnight"
+msgstr "północ"
-#: core/validators.py:214
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Wpisz poprawny kod stanu U.S.A."
+#: utils/dateformat.py:97
+msgid "noon"
+msgstr "południe"
-#: 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] "Nie wolno przeklinać! Słowo %s jest niedozwolone."
-msgstr[1] "Nie wolno przeklinać! Słowa %s są niedozwolone."
+#: utils/translation/trans_real.py:358
+msgid "DATE_FORMAT"
+msgstr "Y-m-d"
-#: core/validators.py:236
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "To pole musi pasować do pola '%s'."
+#: utils/translation/trans_real.py:359
+msgid "DATETIME_FORMAT"
+msgstr "Y-m-d H:i:s"
-#: core/validators.py:255
-msgid "Please enter something for at least one field."
-msgstr "Proszę wpisać cokolwiek do chociaż jednego pola."
+#: utils/translation/trans_real.py:360
+msgid "TIME_FORMAT"
+msgstr "H:i:s"
-#: core/validators.py:264 core/validators.py:275
-msgid "Please enter both fields or leave them both empty."
-msgstr "Proszę uzupełnić oba pola lub zostawić je puste."
+#: utils/translation/trans_real.py:376
+msgid "YEAR_MONTH_FORMAT"
+msgstr "Y-m"
-#: core/validators.py:282
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "To pole musi być uzupełnione jeśli %(field)s jest %(value)s"
+#: utils/translation/trans_real.py:377
+msgid "MONTH_DAY_FORMAT"
+msgstr "m-d"
-#: core/validators.py:294
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "To pole musi być wypełnione jeżeli %(field)s nie jest %(value)s"
-
-#: core/validators.py:313
-msgid "Duplicate values are not allowed."
-msgstr "Duplikaty są niedozwolone."
-
-#: 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 "Proszę wpisać poprawną liczbę dziesiętną."
-
-#: 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] "Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfry."
-msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfr."
-
-#: 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] "Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsca po przecinku."
-msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsc po przecinku."
-
-#: core/validators.py:362
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Upewnij się, że wgrany plik ma conajmniej %s bajtów."
-
-#: core/validators.py:363
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Upewnij się, że wgrany plik nie zawiera więcej niż %s bajtów."
-
-#: core/validators.py:376
-msgid "The format for this field is wrong."
-msgstr "Format tego pola jest nieprawidłowy."
-
-#: core/validators.py:391
-msgid "This field is invalid."
-msgstr "To pole jest nieprawidłowe."
-
-#: core/validators.py:426
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Nie można nic pobrać z %s."
-
-#: core/validators.py:429
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"URL %(url)s zwrócił niepoprawny 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 ""
-
-#: 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 "To pole jest wymagane"
-
-#: db/models/fields/__init__.py:337
-msgid "This value must be an integer."
-msgstr "Ta wartość musi być liczbą całkowitą"
-
-#: db/models/fields/__init__.py:369
-msgid "This value must be either True or False."
-msgstr "Ta wartość musi być logiczna (True, False - prawda lub fałsz)."
-
-#: db/models/fields/__init__.py:385
-msgid "This field cannot be null."
-msgstr "To pole nie może być puste."
-
-#: db/models/fields/__init__.py:562
-msgid "Enter a valid filename."
-msgstr "Wpisz poprawną nazwę pliku."
-
-#: db/models/fields/related.py:43
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Proszę wpisać poprawne %s."
-
-#: db/models/fields/related.py:579
-msgid "Separate multiple IDs with commas."
-msgstr "Oddziel kilka pól ID przecinkami."
-
-#: db/models/fields/related.py:581
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-" Trzymaj przyciśnięty klawisz \"Ctrl\", lub \"Command\" na Macu aby "
-"zaznaczyć więcej niż jeden wybór."
-
-#: 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] "Upewnij się, że tekst ma mniej niż %s znak."
-msgstr[1] "Upewnij się, że tekst ma mniej niż %s znaków."
-
-#: forms/__init__.py:385
-msgid "Line breaks are not allowed here."
-msgstr "Znaki nowego wiersza są tutaj niedopuszczalne."
-
-#: 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 "Wgrany plik jest pusty."
-
-#: forms/__init__.py:699
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Proszę wpisać liczbę z zakresu od -32 768 do 32 767"
-
-#: forms/__init__.py:708
-msgid "Enter a positive number."
-msgstr "Proszę wpisać liczbę dodatnią."
-
-#: forms/__init__.py:717
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Proszę wpisać liczbę z zakresu od 0 do 32 767"
-
-#: template/defaultfilters.py:379
+#: template/defaultfilters.py:491
msgid "yes,no,maybe"
-msgstr "tak,nie, może"
+msgstr "tak,nie,może"
-#~ msgid "String (up to 50)"
-#~ msgstr "Ciąg znaków (do ilości 50 znaków)"
+#: template/defaultfilters.py:520
+#, python-format
+msgid "%(size)d byte"
+msgid_plural "%(size)d bytes"
+msgstr[0] "%(size)d bajt"
+msgstr[1] "%(size)d bajtów"
+msgstr[2] ""
-#~ msgid "Comment"
-#~ msgstr "Komentarz"
+#: template/defaultfilters.py:522
+#, python-format
+msgid "%.1f KB"
+msgstr "%.1f kB"
-#~ msgid "Comments"
-#~ msgstr "Komentarze"
+#: template/defaultfilters.py:524
+#, python-format
+msgid "%.1f MB"
+msgstr "%.1f MB"
-#~ msgid "label"
-#~ msgstr "etykieta"
+#: template/defaultfilters.py:525
+#, python-format
+msgid "%.1f GB"
+msgstr "%.1f GB"
-#~ msgid "package"
-#~ msgstr "pakiet"
-
-#~ msgid "packages"
-#~ msgstr "pakiety"
diff --git a/django/contrib/admin/templatetags/log.py b/django/contrib/admin/templatetags/log.py
index 5caba2b795..8d52d2e944 100644
--- a/django/contrib/admin/templatetags/log.py
+++ b/django/contrib/admin/templatetags/log.py
@@ -11,9 +11,12 @@ class AdminLogNode(template.Node):
return ""
def render(self, context):
- if self.user is not None and not self.user.isdigit():
- self.user = context[self.user].id
- context[self.varname] = LogEntry.objects.filter(user__id__exact=self.user).select_related()[:self.limit]
+ if self.user is None:
+ context[self.varname] = LogEntry.objects.all().select_related()[:self.limit]
+ else:
+ if not self.user.isdigit():
+ self.user = context[self.user].id
+ context[self.varname] = LogEntry.objects.filter(user__id__exact=self.user).select_related()[:self.limit]
return ''
class DoGetAdminLog:
diff --git a/django/db/models/fields/generic.py b/django/contrib/contenttypes/generic.py
similarity index 100%
rename from django/db/models/fields/generic.py
rename to django/contrib/contenttypes/generic.py
diff --git a/django/core/cache/backends/base.py b/django/core/cache/backends/base.py
index ef5f6a6b3e..bb67399f3b 100644
--- a/django/core/cache/backends/base.py
+++ b/django/core/cache/backends/base.py
@@ -54,3 +54,6 @@ class BaseCache(object):
Returns True if the key is in the cache and has not expired.
"""
return self.get(key) is not None
+
+ __contains__ = has_key
+
diff --git a/django/core/management.py b/django/core/management.py
index 9f44a0fe27..c775b10b36 100644
--- a/django/core/management.py
+++ b/django/core/management.py
@@ -241,14 +241,14 @@ def _get_sql_for_pending_references(model, pending_references):
def _get_many_to_many_sql_for_model(model):
from django.db import backend, get_creation_module
- from django.db.models import GenericRel
+ from django.contrib.contenttypes import generic
data_types = get_creation_module().DATA_TYPES
opts = model._meta
final_output = []
for f in opts.many_to_many:
- if not isinstance(f.rel, GenericRel):
+ if not isinstance(f.rel, generic.GenericRel):
table_output = [style.SQL_KEYWORD('CREATE TABLE') + ' ' + \
style.SQL_TABLE(backend.quote_name(f.m2m_db_table())) + ' (']
table_output.append(' %s %s %s,' % \
diff --git a/django/db/models/__init__.py b/django/db/models/__init__.py
index ccd60023f9..6c3abb6b59 100644
--- a/django/db/models/__init__.py
+++ b/django/db/models/__init__.py
@@ -8,7 +8,6 @@ from django.db.models.manager import Manager
from django.db.models.base import Model, AdminOptions
from django.db.models.fields import *
from django.db.models.fields.related import ForeignKey, OneToOneField, ManyToManyField, ManyToOneRel, ManyToManyRel, OneToOneRel, TABULAR, STACKED
-from django.db.models.fields.generic import GenericRelation, GenericRel, GenericForeignKey
from django.db.models import signals
from django.utils.functional import curry
from django.utils.text import capfirst
diff --git a/django/db/models/base.py b/django/db/models/base.py
index ebc4461359..de47730403 100644
--- a/django/db/models/base.py
+++ b/django/db/models/base.py
@@ -42,11 +42,11 @@ class ModelBase(type):
new_class._meta.parents.append(base)
new_class._meta.parents.extend(base._meta.parents)
- model_module = sys.modules[new_class.__module__]
if getattr(new_class._meta, 'app_label', None) is None:
# Figure out the app_label by looking one level up.
# For 'django.contrib.sites.models', this would be 'sites'.
+ model_module = sys.modules[new_class.__module__]
new_class._meta.app_label = model_module.__name__.split('.')[-2]
# Bail out early if we have already created this class.
diff --git a/django/db/models/query.py b/django/db/models/query.py
index 06163677d4..08a7901d6f 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -1,9 +1,9 @@
from django.db import backend, connection, transaction
from django.db.models.fields import DateField, FieldDoesNotExist
-from django.db.models.fields.generic import GenericRelation
-from django.db.models import signals
+from django.db.models import signals, loading
from django.dispatch import dispatcher
from django.utils.datastructures import SortedDict
+from django.contrib.contenttypes import generic
import operator
import re
@@ -948,7 +948,7 @@ def lookup_inner(path, lookup_type, value, opts, table, column):
field_choices(current_opts.get_all_related_many_to_many_objects(), True) + \
field_choices(current_opts.get_all_related_objects(), True) + \
field_choices(current_opts.fields, False)
- raise TypeError, "Cannot resolve keyword '%s' into field, choices are: %s" % (name, ", ".join(choices))
+ raise TypeError, "Cannot resolve keyword '%s' into field. Choices are: %s" % (name, ", ".join(choices))
# Check whether an intermediate join is required between current_table
# and new_table.
@@ -1041,7 +1041,7 @@ def delete_objects(seen_objs):
pk_list = [pk for pk,instance in seen_objs[cls]]
for related in cls._meta.get_all_related_many_to_many_objects():
- if not isinstance(related.field, GenericRelation):
+ if not isinstance(related.field, generic.GenericRelation):
for offset in range(0, len(pk_list), GET_ITERATOR_CHUNK_SIZE):
cursor.execute("DELETE FROM %s WHERE %s IN (%s)" % \
(qn(related.field.m2m_db_table()),
@@ -1049,7 +1049,7 @@ def delete_objects(seen_objs):
','.join(['%s' for pk in pk_list[offset:offset+GET_ITERATOR_CHUNK_SIZE]])),
pk_list[offset:offset+GET_ITERATOR_CHUNK_SIZE])
for f in cls._meta.many_to_many:
- if isinstance(f, GenericRelation):
+ if isinstance(f, generic.GenericRelation):
from django.contrib.contenttypes.models import ContentType
query_extra = 'AND %s=%%s' % f.rel.to._meta.get_field(f.content_type_field_name).column
args_extra = [ContentType.objects.get_for_model(cls).id]
diff --git a/django/template/__init__.py b/django/template/__init__.py
index 7f1231e83f..cfeab16c22 100644
--- a/django/template/__init__.py
+++ b/django/template/__init__.py
@@ -100,6 +100,10 @@ libraries = {}
# global list of libraries to load by default for a new parser
builtins = []
+# True if TEMPLATE_STRING_IF_INVALID contains a format string (%s). None means
+# uninitialised.
+invalid_var_format_string = None
+
class TemplateSyntaxError(Exception):
def __str__(self):
try:
@@ -583,6 +587,11 @@ class FilterExpression(object):
obj = None
else:
if settings.TEMPLATE_STRING_IF_INVALID:
+ global invalid_var_format_string
+ if invalid_var_format_string is None:
+ invalid_var_format_string = '%s' in settings.TEMPLATE_STRING_IF_INVALID
+ if invalid_var_format_string:
+ return settings.TEMPLATE_STRING_IF_INVALID % self.var
return settings.TEMPLATE_STRING_IF_INVALID
else:
obj = settings.TEMPLATE_STRING_IF_INVALID
diff --git a/django/test/client.py b/django/test/client.py
index 95d3b85922..c3110f02ec 100644
--- a/django/test/client.py
+++ b/django/test/client.py
@@ -1,12 +1,16 @@
+import datetime
import sys
from cStringIO import StringIO
from urlparse import urlparse
from django.conf import settings
+from django.contrib.auth import authenticate, login
+from django.contrib.sessions.models import Session
+from django.contrib.sessions.middleware import SessionWrapper
from django.core.handlers.base import BaseHandler
from django.core.handlers.wsgi import WSGIRequest
from django.core.signals import got_request_exception
from django.dispatch import dispatcher
-from django.http import urlencode, SimpleCookie
+from django.http import urlencode, SimpleCookie, HttpRequest
from django.test import signals
from django.utils.functional import curry
@@ -113,7 +117,6 @@ class Client:
self.handler = ClientHandler()
self.defaults = defaults
self.cookies = SimpleCookie()
- self.session = {}
self.exc_info = None
def store_exc_info(self, *args, **kwargs):
@@ -123,6 +126,15 @@ class Client:
"""
self.exc_info = sys.exc_info()
+ def _session(self):
+ "Obtain the current session variables"
+ if 'django.contrib.sessions' in settings.INSTALLED_APPS:
+ cookie = self.cookies.get(settings.SESSION_COOKIE_NAME, None)
+ if cookie:
+ return SessionWrapper(cookie.value)
+ return {}
+ session = property(_session)
+
def request(self, **request):
"""
The master request method. Composes the environment dictionary
@@ -171,16 +183,10 @@ class Client:
if self.exc_info:
raise self.exc_info[1], None, self.exc_info[2]
- # Update persistent cookie and session data
+ # Update persistent cookie data
if response.cookies:
self.cookies.update(response.cookies)
- if 'django.contrib.sessions' in settings.INSTALLED_APPS:
- from django.contrib.sessions.middleware import SessionWrapper
- cookie = self.cookies.get(settings.SESSION_COOKIE_NAME, None)
- if cookie:
- self.session = SessionWrapper(cookie.value)
-
return response
def get(self, path, data={}, **extra):
@@ -215,42 +221,34 @@ class Client:
return self.request(**r)
- def login(self, path, username, password, **extra):
+ def login(self, **credentials):
+ """Set the Client to appear as if it has sucessfully logged into a site.
+
+ Returns True if login is possible; False if the provided credentials
+ are incorrect, or if the Sessions framework is not available.
"""
- A specialized sequence of GET and POST to log into a view that
- is protected by a @login_required access decorator.
+ user = authenticate(**credentials)
+ if user and 'django.contrib.sessions' in settings.INSTALLED_APPS:
+ obj = Session.objects.get_new_session_object()
- path should be the URL of the page that is login protected.
+ # Create a fake request to store login details
+ request = HttpRequest()
+ request.session = SessionWrapper(obj.session_key)
+ login(request, user)
- Returns the response from GETting the requested URL after
- login is complete. Returns False if login process failed.
- """
- # First, GET the page that is login protected.
- # This page will redirect to the login page.
- response = self.get(path)
- if response.status_code != 302:
+ # Set the cookie to represent the session
+ self.cookies[settings.SESSION_COOKIE_NAME] = obj.session_key
+ self.cookies[settings.SESSION_COOKIE_NAME]['max-age'] = None
+ self.cookies[settings.SESSION_COOKIE_NAME]['path'] = '/'
+ self.cookies[settings.SESSION_COOKIE_NAME]['domain'] = settings.SESSION_COOKIE_DOMAIN
+ self.cookies[settings.SESSION_COOKIE_NAME]['secure'] = settings.SESSION_COOKIE_SECURE or None
+ self.cookies[settings.SESSION_COOKIE_NAME]['expires'] = None
+
+ # Set the session values
+ Session.objects.save(obj.session_key, request.session._session,
+ datetime.datetime.now() + datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE))
+
+ return True
+ else:
return False
-
- _, _, login_path, _, data, _= urlparse(response['Location'])
- next = data.split('=')[1]
-
- # Second, GET the login page; required to set up cookies
- response = self.get(login_path, **extra)
- if response.status_code != 200:
- return False
-
- # Last, POST the login data.
- form_data = {
- 'username': username,
- 'password': password,
- 'next' : next,
- }
- response = self.post(login_path, data=form_data, **extra)
-
- # Login page should 302 redirect to the originally requested page
- if (response.status_code != 302 or
- urlparse(response['Location'])[2] != path):
- return False
-
- # Since we are logged in, request the actual page again
- return self.get(path)
+
\ No newline at end of file
diff --git a/django/test/simple.py b/django/test/simple.py
index fed6237929..cfaa09a0a4 100644
--- a/django/test/simple.py
+++ b/django/test/simple.py
@@ -49,9 +49,12 @@ def build_suite(app_module):
pass
else:
# The module exists, so there must be an import error in the
- # test module itself. We don't need the module; close the file
- # handle returned by find_module.
- mod[0].close()
+ # test module itself. We don't need the module; so if the
+ # module was a single file module (i.e., tests.py), close the file
+ # handle returned by find_module. Otherwise, the test module
+ # is a directory, and there is nothing to close.
+ if mod[0]:
+ mod[0].close()
raise
return suite
diff --git a/django/test/testcases.py b/django/test/testcases.py
index efe392590f..7c7a976641 100644
--- a/django/test/testcases.py
+++ b/django/test/testcases.py
@@ -1,7 +1,7 @@
import re, doctest, unittest
from urlparse import urlparse
from django.db import transaction
-from django.core import management
+from django.core import management, mail
from django.db.models import get_apps
from django.test.client import Client
@@ -33,48 +33,116 @@ class DocTestRunner(doctest.DocTestRunner):
transaction.rollback_unless_managed()
class TestCase(unittest.TestCase):
- def install_fixtures(self):
- """If the Test Case class has a 'fixtures' member, clear the database and
- install the named fixtures at the start of each test.
+ def _pre_setup(self):
+ """Perform any pre-test setup. This includes:
+ * If the Test Case class has a 'fixtures' member, clearing the
+ database and installing the named fixtures at the start of each test.
+ * Clearing the mail test outbox.
+
"""
management.flush(verbosity=0, interactive=False)
if hasattr(self, 'fixtures'):
management.load_data(self.fixtures, verbosity=0)
-
+ mail.outbox = []
+
def run(self, result=None):
- """Wrapper around default run method so that user-defined Test Cases
- automatically call install_fixtures without having to include a call to
- super().
+ """Wrapper around default run method to perform common Django test set up.
+ This means that user-defined Test Cases aren't required to include a call
+ to super().setUp().
"""
self.client = Client()
- self.install_fixtures()
+ self._pre_setup()
super(TestCase, self).run(result)
- def assertRedirects(self, response, expected_path):
- """Assert that a response redirected to a specific URL, and that the
+ def assertRedirects(self, response, expected_path, status_code=302, target_status_code=200):
+ """Assert that a response redirected to a specific URL, and that the
redirect URL can be loaded.
"""
- self.assertEqual(response.status_code, 302,
- "Response didn't redirect: Reponse code was %d" % response.status_code)
+ self.assertEqual(response.status_code, status_code,
+ "Response didn't redirect: Reponse code was %d (expected %d)" %
+ (response.status_code, status_code))
scheme, netloc, path, params, query, fragment = urlparse(response['Location'])
self.assertEqual(path, expected_path,
"Response redirected to '%s', expected '%s'" % (path, expected_path))
redirect_response = self.client.get(path)
- self.assertEqual(redirect_response.status_code, 200,
- "Couldn't retrieve redirection page '%s'" % path)
+ self.assertEqual(redirect_response.status_code, target_status_code,
+ "Couldn't retrieve redirection page '%s': response code was %d (expected %d)" %
+ (path, response.status_code, status_code))
- def assertContains(self, response, text, count=1):
+ def assertContains(self, response, text, count=1, status_code=200):
"""Assert that a response indicates that a page was retreived successfully,
- (i.e., the HTTP status code was 200), and that ``text`` occurs ``count``
+ (i.e., the HTTP status code was as expected), and that ``text`` occurs ``count``
times in the content of the response.
"""
- self.assertEqual(response.status_code, 200,
- "Couldn't retrieve page'")
+ self.assertEqual(response.status_code, status_code,
+ "Couldn't retrieve page: Response code was %d (expected %d)'" %
+ (response.status_code, status_code))
real_count = response.content.count(text)
self.assertEqual(real_count, count,
- "Could only find %d of %d instances of '%s' in response" % (real_count, count, text))
-
\ No newline at end of file
+ "Found %d instances of '%s' in response (expected %d)" % (real_count, text, count))
+
+ def assertFormError(self, response, form, field, errors):
+ "Assert that a form used to render the response has a specific field error"
+ if not response.context:
+ self.fail('Response did not use any contexts to render the response')
+
+ # If there is a single context, put it into a list to simplify processing
+ if not isinstance(response.context, list):
+ contexts = [response.context]
+ else:
+ contexts = response.context
+
+ # If a single error string is provided, make it a list to simplify processing
+ if not isinstance(errors, list):
+ errors = [errors]
+
+ # Search all contexts for the error.
+ found_form = False
+ for i,context in enumerate(contexts):
+ if form in context:
+ found_form = True
+ for err in errors:
+ if field:
+ if field in context[form].errors:
+ self.assertTrue(err in context[form].errors[field],
+ "The field '%s' on form '%s' in context %d does not contain the error '%s' (actual errors: %s)" %
+ (field, form, i, err, list(context[form].errors[field])))
+ elif field in context[form].fields:
+ self.fail("The field '%s' on form '%s' in context %d contains no errors" %
+ (field, form, i))
+ else:
+ self.fail("The form '%s' in context %d does not contain the field '%s'" % (form, i, field))
+ else:
+ self.assertTrue(err in context[form].non_field_errors(),
+ "The form '%s' in context %d does not contain the non-field error '%s' (actual errors: %s)" %
+ (form, i, err, list(context[form].non_field_errors())))
+ if not found_form:
+ self.fail("The form '%s' was not used to render the response" % form)
+
+ def assertTemplateUsed(self, response, template_name):
+ "Assert that the template with the provided name was used in rendering the response"
+ if isinstance(response.template, list):
+ template_names = [t.name for t in response.template]
+ self.assertTrue(template_name in template_names,
+ u"Template '%s' was not one of the templates used to render the response. Templates used: %s" %
+ (template_name, u', '.join(template_names)))
+ elif response.template:
+ self.assertEqual(template_name, response.template.name,
+ u"Template '%s' was not used to render the response. Actual template was '%s'" %
+ (template_name, response.template.name))
+ else:
+ self.fail('No templates used to render the response')
+
+ def assertTemplateNotUsed(self, response, template_name):
+ "Assert that the template with the provided name was NOT used in rendering the response"
+ if isinstance(response.template, list):
+ self.assertFalse(template_name in [t.name for t in response.template],
+ u"Template '%s' was used unexpectedly in rendering the response" % template_name)
+ elif response.template:
+ self.assertNotEqual(template_name, response.template.name,
+ u"Template '%s' was used unexpectedly in rendering the response" % template_name)
+
diff --git a/django/test/utils.py b/django/test/utils.py
index 9939e36fa4..aa2b8321be 100644
--- a/django/test/utils.py
+++ b/django/test/utils.py
@@ -1,7 +1,7 @@
import sys, time
from django.conf import settings
from django.db import connection, transaction, backend
-from django.core import management
+from django.core import management, mail
from django.dispatch import dispatcher
from django.test import signals
from django.template import Template
@@ -18,24 +18,54 @@ def instrumented_test_render(self, context):
dispatcher.send(signal=signals.template_rendered, sender=self, template=self, context=context)
return self.nodelist.render(context)
+class TestSMTPConnection(object):
+ """A substitute SMTP connection for use during test sessions.
+ The test connection stores email messages in a dummy outbox,
+ rather than sending them out on the wire.
+
+ """
+ def __init__(*args, **kwargs):
+ pass
+ def open(self):
+ "Mock the SMTPConnection open() interface"
+ pass
+ def close(self):
+ "Mock the SMTPConnection close() interface"
+ pass
+ def send_messages(self, messages):
+ "Redirect messages to the dummy outbox"
+ mail.outbox.extend(messages)
+
def setup_test_environment():
"""Perform any global pre-test setup. This involves:
- Installing the instrumented test renderer
+ - Diverting the email sending functions to a test buffer
"""
Template.original_render = Template.render
Template.render = instrumented_test_render
+ mail.original_SMTPConnection = mail.SMTPConnection
+ mail.SMTPConnection = TestSMTPConnection
+
+ mail.outbox = []
+
def teardown_test_environment():
"""Perform any global post-test teardown. This involves:
- Restoring the original test renderer
+ - Restoring the email sending functions
"""
Template.render = Template.original_render
del Template.original_render
+ mail.SMTPConnection = mail.original_SMTPConnection
+ del mail.original_SMTPConnection
+
+ del mail.outbox
+
def _set_autocommit(connection):
"Make sure a connection is in autocommit mode."
if hasattr(connection.connection, "autocommit"):
diff --git a/docs/contributing.txt b/docs/contributing.txt
index 1d2b635b76..d05c166b37 100644
--- a/docs/contributing.txt
+++ b/docs/contributing.txt
@@ -396,10 +396,11 @@ To run the tests, ``cd`` to the ``tests/`` directory and type::
./runtests.py --settings=path.to.django.settings
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 (its 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.
+info -- the ``DATABASE_NAME`` (required, but will be ignored),
+``DATABASE_ENGINE``, ``DATABASE_USER`` and ``DATABASE_PASSWORD`` settings. You
+will also need a ``ROOT_URLCONF`` setting (its 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 existing databases; they create a new
database, called ``django_test_db``, which is deleted when the tests are
diff --git a/docs/email.txt b/docs/email.txt
index 2793ee8ae3..66948e5294 100644
--- a/docs/email.txt
+++ b/docs/email.txt
@@ -20,14 +20,14 @@ In two lines::
send_mail('Subject here', 'Here is the message.', 'from@example.com',
['to@example.com'], fail_silently=False)
-Mail will be sent using the SMTP host and port specified in the `EMAIL_HOST`_
-and `EMAIL_PORT`_ settings. The `EMAIL_HOST_USER`_ and `EMAIL_HOST_PASSWORD`_
-settings, if set, will be used to authenticate to the SMTP server and the
-`EMAIL_USE_TLS`_ settings will control whether a secure connection is used.
+Mail is sent using the SMTP host and port specified in the `EMAIL_HOST`_ and
+`EMAIL_PORT`_ settings. The `EMAIL_HOST_USER`_ and `EMAIL_HOST_PASSWORD`_
+settings, if set, are used to authenticate to the SMTP server, and the
+`EMAIL_USE_TLS`_ setting controls whether a secure connection is used.
.. note::
- The character set of email sent with ``django.core.mail`` will be set to
+ The character set of e-mail sent with ``django.core.mail`` will be set to
the value of your `DEFAULT_CHARSET setting`_.
.. _DEFAULT_CHARSET setting: ../settings/#default-charset
@@ -37,7 +37,6 @@ settings, if set, will be used to authenticate to the SMTP server and the
.. _EMAIL_HOST_PASSWORD: ../settings/#email-host-password
.. _EMAIL_USE_TLS: ../settings/#email-use-tls
-
send_mail()
===========
@@ -193,57 +192,64 @@ The EmailMessage and SMTPConnection classes
Django's ``send_mail()`` and ``send_mass_mail()`` functions are actually thin
wrappers that make use of the ``EmailMessage`` and ``SMTPConnection`` classes
-in ``django.mail``. If you ever need to customize the way Django sends email,
-you can subclass these two classes to suit your needs.
+in ``django.core.mail``. If you ever need to customize the way Django sends
+e-mail, you can subclass these two classes to suit your needs.
.. note::
Not all features of the ``EmailMessage`` class are available through the
``send_mail()`` and related wrapper functions. If you wish to use advanced
- features such as including BCC recipients or multi-part email, you will
- need to create ``EmailMessage`` instances directly.
+ features, such as BCC'ed recipients or multi-part e-mail, you'll need to
+ create ``EmailMessage`` instances directly.
-In general, ``EmailMessage`` is responsible for creating the email message
+In general, ``EmailMessage`` is responsible for creating the e-mail message
itself. ``SMTPConnection`` is responsible for the network connection side of
the operation. This means you can reuse the same connection (an
``SMTPConnection`` instance) for multiple messages.
-The ``EmailMessage`` class is initialised as follows::
+The ``EmailMessage`` class is initialized as follows::
email = EmailMessage(subject, body, from_email, to, bcc, connection)
All of these parameters are optional. If ``from_email`` is omitted, the value
from ``settings.DEFAULT_FROM_EMAIL`` is used. Both the ``to`` and ``bcc``
-parameters are lists of addresses.
+parameters are lists of addresses, as strings.
-The class has the following methods that you can use:
+For example::
- * ``send()`` sends the message, using either the connection that is specified
- in the ``connection`` attribute, or creating a new connection if none already
- exists.
- * ``message()`` constructs a ``django.core.mail.SafeMIMEText`` object (a
- sub-class of Python's ``email.MIMEText.MIMEText`` class) holding the
- message to be sent. If you ever need to extend the `EmailMessage` class,
- you will probably want to override this method to put the content you wish
- into the MIME object.
- * ``recipients()`` returns a lists of all the recipients of the message,
- whether they are recorded in the ``to`` or ``bcc`` attributes. This is
- another method you need to possibly override when sub-classing, since the
- SMTP server needs to be told the full list of recipients when the message
- is sent. If you add another way to specify recipients in your class, they
- need to be returned from this method as well.
+ email = EmailMessage('Hello', 'Body goes here', 'from@example.com',
+ ['to1@example.com', 'to2@example.com'],
+ ['bcc@example.com'])
+
+The class has the following methods:
+
+ * ``send()`` sends the message, using either the connection that is
+ specified in the ``connection`` attribute, or creating a new connection
+ if none already exists.
+
+ * ``message()`` constructs a ``django.core.mail.SafeMIMEText`` object (a
+ sub-class of Python's ``email.MIMEText.MIMEText`` class) holding the
+ message to be sent. If you ever need to extend the `EmailMessage` class,
+ you'll probably want to override this method to put the content you wish
+ into the MIME object.
+
+ * ``recipients()`` returns a list of all the recipients of the message,
+ whether they're recorded in the ``to`` or ``bcc`` attributes. This is
+ another method you might need to override when sub-classing, because the
+ SMTP server needs to be told the full list of recipients when the message
+ is sent. If you add another way to specify recipients in your class, they
+ need to be returned from this method as well.
The ``SMTPConnection`` class is initialized with the host, port, username and
password for the SMTP server. If you don't specify one or more of those
options, they are read from your settings file.
-If you are sending lots of messages at once, the ``send_messages()`` method of
-the ``SMTPConnection`` class will be useful. It takes a list of ``EmailMessage``
-instances (or sub-classes) and sends them over a single connection. For
-example, if you have a function called ``get_notification_email()`` that returns a
-list of ``EmailMessage`` objects representing some periodic email you wish to
+If you're sending lots of messages at once, the ``send_messages()`` method of
+the ``SMTPConnection`` class is useful. It takes a list of ``EmailMessage``
+instances (or subclasses) and sends them over a single connection. For example,
+if you have a function called ``get_notification_email()`` that returns a
+list of ``EmailMessage`` objects representing some periodic e-mail you wish to
send out, you could send this with::
connection = SMTPConnection() # Use default settings for connection
messages = get_notification_email()
connection.send_messages(messages)
-
diff --git a/docs/i18n.txt b/docs/i18n.txt
index 56e6f7e02c..1d7a0063b2 100644
--- a/docs/i18n.txt
+++ b/docs/i18n.txt
@@ -310,7 +310,7 @@ To create or update a message file, run this command::
...where ``de`` is the language code for the message file you want to create.
The language code, in this case, is in locale format. For example, it's
-``pt_BR`` for Brazilian and ``de_AT`` for Austrian German.
+``pt_BR`` for Brazilian Portugese and ``de_AT`` for Austrian German.
The script should be run from one of three places:
@@ -463,8 +463,8 @@ following this algorithm:
Notes:
* In each of these places, the language preference is expected to be in the
- standard language format, as a string. For example, Brazilian is
- ``pt-br``.
+ standard language format, as a string. For example, Brazilian Portugese
+ is ``pt-br``.
* If a base language is available but the sublanguage specified is not,
Django uses the base language. For example, if a user specifies ``de-at``
(Austrian German) but Django only has ``de`` available, Django uses
diff --git a/docs/model-api.txt b/docs/model-api.txt
index a14c469661..961269aebd 100644
--- a/docs/model-api.txt
+++ b/docs/model-api.txt
@@ -459,7 +459,7 @@ string, not ``NULL``.
``blank``
~~~~~~~~~
-If ``True``, the field is allowed to be blank.
+If ``True``, the field is allowed to be blank. Default is ``False``.
Note that this is different than ``null``. ``null`` is purely
database-related, whereas ``blank`` is validation-related. If a field has
diff --git a/docs/serialization.txt b/docs/serialization.txt
index 8af4da26a8..3216cb061e 100644
--- a/docs/serialization.txt
+++ b/docs/serialization.txt
@@ -109,7 +109,7 @@ serializer, you must pass ``ensure_ascii=False`` as a parameter to the
For example::
- json_serializer = serializers.get_serializer("json")
+ json_serializer = serializers.get_serializer("json")()
json_serializer.serialize(queryset, ensure_ascii=False, stream=response)
Writing custom serializers
diff --git a/docs/sitemaps.txt b/docs/sitemaps.txt
index dafc009859..550f448de1 100644
--- a/docs/sitemaps.txt
+++ b/docs/sitemaps.txt
@@ -2,8 +2,6 @@
The sitemap framework
=====================
-**New in Django development version**.
-
Django comes with a high-level sitemap-generating framework that makes
creating sitemap_ XML files easy.
diff --git a/docs/templates_python.txt b/docs/templates_python.txt
index 1eeede1fe8..853707f58c 100644
--- a/docs/templates_python.txt
+++ b/docs/templates_python.txt
@@ -212,21 +212,24 @@ template tags. If an invalid variable is provided to one of these template
tags, the variable will be interpreted as ``None``. Filters are always
applied to invalid variables within these template tags.
+If ``TEMPLATE_STRING_IF_INVALID`` contains a ``'%s'``, the format marker will
+be replaced with the name of the invalid variable.
+
.. admonition:: For debug purposes only!
- While ``TEMPLATE_STRING_IF_INVALID`` can be a useful debugging tool,
- it is a bad idea to turn it on as a 'development default'.
+ While ``TEMPLATE_STRING_IF_INVALID`` can be a useful debugging tool,
+ it is a bad idea to turn it on as a 'development default'.
- Many templates, including those in the Admin site, rely upon the
- silence of the template system when a non-existent variable is
+ Many templates, including those in the Admin site, rely upon the
+ silence of the template system when a non-existent variable is
encountered. If you assign a value other than ``''`` to
- ``TEMPLATE_STRING_IF_INVALID``, you will experience rendering
+ ``TEMPLATE_STRING_IF_INVALID``, you will experience rendering
problems with these templates and sites.
- Generally, ``TEMPLATE_STRING_IF_INVALID`` should only be enabled
- in order to debug a specific template problem, then cleared
+ Generally, ``TEMPLATE_STRING_IF_INVALID`` should only be enabled
+ in order to debug a specific template problem, then cleared
once debugging is complete.
-
+
Playing with Context objects
----------------------------
@@ -866,7 +869,7 @@ current context, available in the ``render`` method::
try:
actual_date = resolve_variable(self.date_to_be_formatted, context)
return actual_date.strftime(self.format_string)
- except VariableDoesNotExist:
+ except template.VariableDoesNotExist:
return ''
``resolve_variable`` will try to resolve ``blog_entry.date_updated`` and then
diff --git a/docs/testing.txt b/docs/testing.txt
index 5a2579b624..b44b67c20a 100644
--- a/docs/testing.txt
+++ b/docs/testing.txt
@@ -2,19 +2,29 @@
Testing Django applications
===========================
-Automated testing is an extremely useful weapon in the bug-killing arsenal
-of the modern developer. When initially writing code, a test suite can be
-used to validate that code behaves as expected. When refactoring or
-modifying code, tests serve as a guide to ensure that behavior hasn't
-changed unexpectedly as a result of the refactor.
+Automated testing is an extremely useful bug-killing tool for the modern
+Web developer. You can use a collection of tests -- a **test suite** -- to
+to solve, or avoid, a number of problems:
-Testing a web application is a complex task, as there are many
-components of a web application that must be validated and tested. To
-help you test your application, Django provides a test execution
-framework, and range of utilities that can be used to simulate and
-inspect various facets of a web application.
+ * When you're writing new code, you can use tests to validate your code
+ works as expected.
- This testing framework is currently under development, and may change
+ * When you're refactoring or modifying old code, you can use tests to
+ ensure your changes haven't affected your application's behavior
+ unexpectedly.
+
+Testing a Web application is a complex task, because a Web application is made
+of several layers of logic -- from HTTP-level request handling, to form
+validation and processing, to template rendering. With Django's test-execution
+framework and assorted utilities, you can simulate requests, insert test data,
+inspect your application's output and generally verify your code is doing what
+it should be doing.
+
+The best part is, it's really easy.
+
+.. admonition:: Note
+
+ This testing framework is currently under development. It may change
slightly before the next official Django release.
(That's *no* excuse not to write tests, though!)
@@ -167,6 +177,7 @@ tools that can be used to establish tests and test conditions.
* `Test Client`_
* `TestCase`_
+* `Email services`_
Test Client
-----------
@@ -216,21 +227,21 @@ can be invoked on the ``Client`` instance.
``post(path, data={}, content_type=MULTIPART_CONTENT)``
Make a POST request on the provided ``path``. If you provide a content type
- (e.g., ``text/xml`` for an XML payload), the contents of ``data`` will be
- sent as-is in the POST request, using the content type in the HTTP
+ (e.g., ``text/xml`` for an XML payload), the contents of ``data`` will be
+ sent as-is in the POST request, using the content type in the HTTP
``Content-Type`` header.
-
- If you do not provide a value for ``content_type``, the values in
+
+ If you do not provide a value for ``content_type``, the values in
``data`` will be transmitted with a content type of ``multipart/form-data``.
The key-value pairs in the data dictionary will be encoded as a multipart
message and used to create the POST data payload.
-
- To submit multiple values for a given key (for example, to specify
- the selections for a multiple selection list), provide the values as a
+
+ To submit multiple values for a given key (for example, to specify
+ the selections for a multiple selection list), provide the values as a
list or tuple for the required key. For example, a data dictionary of
``{'choices': ('a','b','d')}`` would submit three selected rows for the
field named ``choices``.
-
+
Submitting files is a special case. To POST a file, you need only
provide the file field name as a key, and a file handle to the file you wish to
upload as a value. The Test Client will populate the two POST fields (i.e.,
@@ -246,29 +257,42 @@ can be invoked on the ``Client`` instance.
file name), and `attachment_file` (containing the file data). Note that you
need to manually close the file after it has been provided to the POST.
-``login(path, username, password)``
- In a production site, it is likely that some views will be protected with
- the @login_required decorator provided by ``django.contrib.auth``. Interacting
- with a URL that has been login protected is a slightly complex operation,
- so the Test Client provides a simple method to automate the login process. A
- call to ``login()`` stimulates the series of GET and POST calls required
- to log a user into a @login_required protected view.
+``login(**credentials)``
+ **New in Django development version**
- If login is possible, the final return value of ``login()`` is the response
- that is generated by issuing a GET request on the protected URL. If login
- is not possible, ``login()`` returns False.
+ On a production site, it is likely that some views will be protected from
+ anonymous access through the use of the @login_required decorator, or some
+ other login checking mechanism. The ``login()`` method can be used to
+ simulate the effect of a user logging into the site. As a result of calling
+ this method, the Client will have all the cookies and session data required
+ to pass any login-based tests that may form part of a view.
+
+ In most cases, the ``credentials`` required by this method are the username
+ and password of the user that wants to log in, provided as keyword
+ arguments::
+
+ c = Client()
+ c.login(username='fred', password='secret')
+ # Now you can access a login protected view
+
+ If you are using a different authentication backend, this method may
+ require different credentials.
+
+ ``login()`` returns ``True`` if it the credentials were accepted and login
+ was successful.
Note that since the test suite will be executed using the test database,
- which contains no users by default. As a result, logins for your production
- site will not work. You will need to create users as part of the test suite
- to be able to test logins to your application.
+ which contains no users by default. As a result, logins that are valid
+ on your production site will not work under test conditions. You will
+ need to create users as part of the test suite (either manually, or
+ using a test fixture).
Testing Responses
~~~~~~~~~~~~~~~~~
-The ``get()``, ``post()`` and ``login()`` methods all return a Response
-object. This Response object has the following properties that can be used
-for testing purposes:
+The ``get()`` and ``post()`` methods both return a Response object. This
+Response object has the following properties that can be used for testing
+purposes:
=============== ==========================================================
Property Description
@@ -360,23 +384,23 @@ The following is a simple unit test using the Test Client::
TestCase
--------
-Normal python unit tests extend a base class of ``unittest.testCase``.
-Django provides an extension of this base class - ``django.test.TestCase``
-- that provides some additional capabilities that can be useful for
-testing web sites.
+Normal python unit tests extend a base class of ``unittest.testCase``.
+Django provides an extension of this base class - ``django.test.TestCase``
+- that provides some additional capabilities that can be useful for
+testing web sites.
Moving from a normal unittest TestCase to a Django TestCase is easy - just
-change the base class of your test from ``unittest.TestCase`` to
+change the base class of your test from ``unittest.TestCase`` to
``django.test.TestCase``. All of the standard Python unit test facilities
will continue to be available, but they will be augmented with some useful
extra facilities.
Default Test Client
~~~~~~~~~~~~~~~~~~~
-** New in Django development version **
+**New in Django development version**
Every test case in a ``django.test.TestCase`` instance has access to an
-instance of a Django `Test Client`_. This Client can be accessed as
+instance of a Django `Test Client`_. This Client can be accessed as
``self.client``. This client is recreated for each test.
Fixture loading
@@ -392,20 +416,20 @@ comprise the fixture can be distributed over multiple directories, in
multiple applications.
.. note::
- If you have synchronized a Django project, you have already experienced
+ If you have synchronized a Django project, you have already experienced
the use of one fixture -- the ``initial_data`` fixture. Every time you
synchronize the database, Django installs the ``initial_data`` fixture.
This provides a mechanism to populate a new database with any initial
data (such as a default set of categories). Fixtures with other names
- can be installed manually using ``django-admin.py loaddata``.
+ can be installed manually using ``django-admin.py loaddata``.
-However, for the purposes of unit testing, each test must be able to
+However, for the purposes of unit testing, each test must be able to
guarantee the contents of the database at the start of each and every
-test.
+test.
To define a fixture for a test, all you need to do is add a class
attribute to your test describing the fixtures you want the test to use.
-For example, the test case from `Writing unittests`_ would
+For example, the test case from `Writing unittests`_ would
look like::
from django.test import TestCase
@@ -413,41 +437,115 @@ look like::
class AnimalTestCase(TestCase):
fixtures = ['mammals.json', 'birds']
-
+
def setUp(self):
# test definitions as before
At the start of each test case, before ``setUp()`` is run, Django will
-flush the database, returning the database the state it was in directly
-after ``syncdb`` was called. Then, all the named fixtures are installed.
+flush the database, returning the database the state it was in directly
+after ``syncdb`` was called. Then, all the named fixtures are installed.
In this example, any JSON fixture called ``mammals``, and any fixture
-named ``birds`` will be installed. See the documentation on
+named ``birds`` will be installed. See the documentation on
`loading fixtures`_ for more details on defining and installing fixtures.
.. _`loading fixtures`: ../django-admin/#loaddata-fixture-fixture
-This flush/load procedure is repeated for each test in the test case, so you
-can be certain that the outcome of a test will not be affected by
+This flush/load procedure is repeated for each test in the test case, so you
+can be certain that the outcome of a test will not be affected by
another test, or the order of test execution.
+Emptying the test outbox
+~~~~~~~~~~~~~~~~~~~~~~~~
+**New in Django development version**
+
+At the start of each test case, in addition to installing fixtures,
+Django clears the contents of the test email outbox.
+
+For more detail on email services during tests, see `Email services`_.
+
Assertions
~~~~~~~~~~
-** New in Django development version **
+**New in Django development version**
-Normal Python unit tests have a wide range of assertions, such as
-``assertTrue`` and ``assertEquals`` that can be used to validate behavior.
+Normal Python unit tests have a wide range of assertions, such as
+``assertTrue`` and ``assertEquals`` that can be used to validate behavior.
``django.TestCase`` adds to these, providing some assertions
that can be useful in testing the behavior of web sites.
-``assertRedirects(response, expected_path)``
- Assert that the response received redirects the browser to the provided
- path, and that the expected_path can be retrieved.
-
-``assertContains(response, text, count=1)``
- Assert that a response indicates that a page was retreived successfully,
- (i.e., the HTTP status code was 200), and that ``text`` occurs ``count``
+``assertContains(response, text, count=1, status_code=200)``
+ Assert that a response indicates that a page could be retrieved and
+ produced the nominated status code, and that ``text`` occurs ``count``
times in the content of the response.
-
+
+``assertFormError(response, form, field, errors)``
+ Assert that a field on a form raised the provided list of errors when
+ rendered on the form.
+
+ ``form`` is the name the form object was given in the template context.
+
+ ``field`` is the name of the field on the form to check. If ``field``
+ has a value of ``None``, non-field errors will be checked.
+
+ ``errors`` is an error string, or a list of error strings, that are
+ expected as a result of form validation.
+
+``assertTemplateNotUsed(response, template_name)``
+ Assert that the template with the given name was *not* used in rendering
+ the response.
+
+``assertRedirects(response, expected_path, status_code=302, target_status_code=200)``
+ Assert that the response received produced the nominated status code,
+ redirects the browser to the provided path, and that retrieving the provided
+ path yields a response with the target status code.
+
+``assertTemplateUsed(response, template_name)``
+ Assert that the template with the given name was used in rendering the
+ response.
+
+Email services
+--------------
+**New in Django development version**
+
+If your view makes use of the `Django email services`_, you don't really
+want email to be sent every time you run a test using that view.
+
+When the Django test framework is initialized, it transparently replaces the
+normal `SMTPConnection`_ class with a dummy implementation that redirects all
+email to a dummy outbox. This outbox, stored as ``django.core.mail.outbox``,
+is a simple list of all `EmailMessage`_ instances that have been sent.
+For example, during test conditions, it would be possible to run the following
+code::
+
+ from django.core import mail
+
+ # Send message
+ mail.send_mail('Subject here', 'Here is the message.', 'from@example.com',
+ ['to@example.com'], fail_silently=False)
+
+ # One message has been sent
+ self.assertEqual(len(mail.outbox), 1)
+ # Subject of first message is correct
+ self.assertEqual(mail.outbox[0].subject, 'Subject here')
+
+The ``mail.outbox`` object does not exist under normal execution conditions.
+The outbox is created during test setup, along with the dummy `SMTPConnection`_.
+When the test framework is torn down, the standard `SMTPConnection`_ class
+is restored, and the test outbox is destroyed.
+
+As noted `previously`_, the test outbox is emptied at the start of every
+test in a Django TestCase. To empty the outbox manually, assign the empty list
+to mail.outbox::
+
+ from django.core import mail
+
+ # Empty the test outbox
+ mail.outbox = []
+
+.. _`Django email services`: ../email/
+.. _`SMTPConnection`: ../email/#the-emailmessage-and-smtpconnection-classes
+.. _`EmailMessage`: ../email/#the-emailmessage-and-smtpconnection-classes
+.. _`previously`: #emptying-the-test-outbox
+
Running tests
=============
@@ -472,6 +570,10 @@ database settings will the same as they would be for the project normally.
If you wish to use a name other than the default for the test database,
you can use the ``TEST_DATABASE_NAME`` setting to provide a name.
+The test database is created by the user in the ``DATABASE_USER`` setting.
+This user needs to have sufficient privileges to create a new database on the
+system.
+
Once the test database has been established, Django will run your tests.
If everything goes well, at the end you'll see::
@@ -506,11 +608,11 @@ failed::
FAILED (failures=1)
-The return code for the script is the total number of failed and erroneous
+The return code for the script is the total number of failed and erroneous
tests. If all the tests pass, the return code is 0.
Regardless of whether the tests pass or fail, the test database is destroyed when
-all the tests have been executed.
+all the tests have been executed.
Using a different testing framework
===================================
@@ -521,7 +623,7 @@ it does provide a mechanism to allow you to invoke tests constructed for
an alternative framework as if they were normal Django tests.
When you run ``./manage.py test``, Django looks at the ``TEST_RUNNER``
-setting to determine what to do. By default, ``TEST_RUNNER`` points to
+setting to determine what to do. By default, ``TEST_RUNNER`` points to
``django.test.simple.run_tests``. This method defines the default Django
testing behavior. This behavior involves:
@@ -551,7 +653,7 @@ arguments:
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.
-
+
This method should return the number of tests that failed.
Testing utilities
@@ -562,11 +664,12 @@ a number of utility methods in the ``django.test.utils`` module.
``setup_test_environment()``
Performs any global pre-test setup, such as the installing the
- instrumentation of the template rendering system.
+ instrumentation of the template rendering system and setting up
+ the dummy SMTPConnection.
``teardown_test_environment()``
Performs any global post-test teardown, such as removing the instrumentation
- of the template rendering system.
+ of the template rendering system and restoring normal email services.
``create_test_db(verbosity=1, autoclobber=False)``
Creates a new test database, and run ``syncdb`` against it.
diff --git a/tests/modeltests/custom_columns/models.py b/tests/modeltests/custom_columns/models.py
index 02a17e0595..f1be97c825 100644
--- a/tests/modeltests/custom_columns/models.py
+++ b/tests/modeltests/custom_columns/models.py
@@ -71,7 +71,7 @@ __test__ = {'API_TESTS':"""
>>> Author.objects.filter(firstname__exact='John')
Traceback (most recent call last):
...
-TypeError: Cannot resolve keyword 'firstname' into field, choices are: article, id, first_name, last_name
+TypeError: Cannot resolve keyword 'firstname' into field. Choices are: article, id, first_name, last_name
>>> a = Author.objects.get(last_name__exact='Smith')
>>> a.first_name
diff --git a/tests/modeltests/generic_relations/models.py b/tests/modeltests/generic_relations/models.py
index b6ab70713b..a4bf36b08f 100644
--- a/tests/modeltests/generic_relations/models.py
+++ b/tests/modeltests/generic_relations/models.py
@@ -11,6 +11,7 @@ from complete).
from django.db import models
from django.contrib.contenttypes.models import ContentType
+from django.contrib.contenttypes import generic
class TaggedItem(models.Model):
"""A tag on an item."""
@@ -18,7 +19,7 @@ class TaggedItem(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
- content_object = models.GenericForeignKey()
+ content_object = generic.GenericForeignKey()
class Meta:
ordering = ["tag"]
@@ -30,7 +31,7 @@ class Animal(models.Model):
common_name = models.CharField(maxlength=150)
latin_name = models.CharField(maxlength=150)
- tags = models.GenericRelation(TaggedItem)
+ tags = generic.GenericRelation(TaggedItem)
def __str__(self):
return self.common_name
@@ -39,7 +40,7 @@ class Vegetable(models.Model):
name = models.CharField(maxlength=150)
is_yucky = models.BooleanField(default=True)
- tags = models.GenericRelation(TaggedItem)
+ tags = generic.GenericRelation(TaggedItem)
def __str__(self):
return self.name
diff --git a/tests/modeltests/lookup/models.py b/tests/modeltests/lookup/models.py
index 740e3ab4bc..d06a451503 100644
--- a/tests/modeltests/lookup/models.py
+++ b/tests/modeltests/lookup/models.py
@@ -223,11 +223,11 @@ DoesNotExist: Article matching query does not exist.
>>> Article.objects.filter(pub_date_year='2005').count()
Traceback (most recent call last):
...
-TypeError: Cannot resolve keyword 'pub_date_year' into field, choices are: id, headline, pub_date
+TypeError: Cannot resolve keyword 'pub_date_year' into field. Choices are: id, headline, pub_date
>>> Article.objects.filter(headline__starts='Article')
Traceback (most recent call last):
...
-TypeError: Cannot resolve keyword 'headline__starts' into field, choices are: id, headline, pub_date
+TypeError: Cannot resolve keyword 'headline__starts' into field. Choices are: id, headline, pub_date
"""}
diff --git a/tests/modeltests/many_to_one/models.py b/tests/modeltests/many_to_one/models.py
index 985c9f8d6e..3040b2177a 100644
--- a/tests/modeltests/many_to_one/models.py
+++ b/tests/modeltests/many_to_one/models.py
@@ -174,13 +174,13 @@ False
>>> Article.objects.filter(reporter_id__exact=1)
Traceback (most recent call last):
...
-TypeError: Cannot resolve keyword 'reporter_id' into field, choices are: id, headline, pub_date, reporter
+TypeError: Cannot resolve keyword 'reporter_id' into field. Choices are: id, headline, pub_date, reporter
# You need to specify a comparison clause
>>> Article.objects.filter(reporter_id=1)
Traceback (most recent call last):
...
-TypeError: Cannot resolve keyword 'reporter_id' into field, choices are: id, headline, pub_date, reporter
+TypeError: Cannot resolve keyword 'reporter_id' into field. Choices are: id, headline, pub_date, reporter
# You can also instantiate an Article by passing
# the Reporter's ID instead of a Reporter object.
diff --git a/tests/modeltests/reverse_lookup/models.py b/tests/modeltests/reverse_lookup/models.py
index d30269c5c6..4d6591551a 100644
--- a/tests/modeltests/reverse_lookup/models.py
+++ b/tests/modeltests/reverse_lookup/models.py
@@ -55,5 +55,5 @@ __test__ = {'API_TESTS':"""
>>> Poll.objects.get(choice__name__exact="This is the answer")
Traceback (most recent call last):
...
-TypeError: Cannot resolve keyword 'choice' into field, choices are: poll_choice, related_choice, id, question, creator
+TypeError: Cannot resolve keyword 'choice' into field. Choices are: poll_choice, related_choice, id, question, creator
"""}
diff --git a/tests/modeltests/test_client/models.py b/tests/modeltests/test_client/models.py
index 58f1d47e50..5ebf29678c 100644
--- a/tests/modeltests/test_client/models.py
+++ b/tests/modeltests/test_client/models.py
@@ -20,6 +20,7 @@ rather than the HTML rendered to the end-user.
"""
from django.test import Client, TestCase
+from django.core import mail
class ClientTest(TestCase):
fixtures = ['testdata.json']
@@ -40,6 +41,8 @@ class ClientTest(TestCase):
# Check some response details
self.assertEqual(response.status_code, 200)
self.assertEqual(response.template.name, 'Empty GET Template')
+ self.assertTemplateUsed(response, 'Empty GET Template')
+ self.assertTemplateNotUsed(response, 'Empty POST Template')
def test_empty_post(self):
"POST an empty dictionary to a view"
@@ -48,6 +51,8 @@ class ClientTest(TestCase):
# Check some response details
self.assertEqual(response.status_code, 200)
self.assertEqual(response.template.name, 'Empty POST Template')
+ self.assertTemplateNotUsed(response, 'Empty GET Template')
+ self.assertTemplateUsed(response, 'Empty POST Template')
def test_post(self):
"POST some data to a view"
@@ -63,6 +68,7 @@ class ClientTest(TestCase):
self.failUnless('Data received' in response.content)
def test_raw_post(self):
+ "POST raw data (with a content type) to a view"
test_doc = """BlinkMalcolm Gladwell"""
response = self.client.post("/test_client/raw_post_view/", test_doc,
content_type="text/xml")
@@ -77,6 +83,28 @@ class ClientTest(TestCase):
# Check that the response was a 302 (redirect)
self.assertRedirects(response, '/test_client/get_view/')
+ def test_permanent_redirect(self):
+ "GET a URL that redirects permanently elsewhere"
+ response = self.client.get('/test_client/permanent_redirect_view/')
+
+ # Check that the response was a 301 (permanent redirect)
+ self.assertRedirects(response, '/test_client/get_view/', status_code=301)
+
+ def test_redirect_to_strange_location(self):
+ "GET a URL that redirects to a non-200 page"
+ response = self.client.get('/test_client/double_redirect_view/')
+
+ # Check that the response was a 302, and that
+ # the attempt to get the redirection location returned 301 when retrieved
+ self.assertRedirects(response, '/test_client/permanent_redirect_view/', target_status_code=301)
+
+ def test_notfound_response(self):
+ "GET a URL that responds as '404:Not Found'"
+ response = self.client.get('/test_client/bad_view/')
+
+ # Check that the response was a 404, and that the content contains MAGIC
+ self.assertContains(response, 'MAGIC', status_code=404)
+
def test_valid_form(self):
"POST valid data to a form"
post_data = {
@@ -88,7 +116,7 @@ class ClientTest(TestCase):
}
response = self.client.post('/test_client/form_view/', post_data)
self.assertEqual(response.status_code, 200)
- self.assertEqual(response.template.name, "Valid POST Template")
+ self.assertTemplateUsed(response, "Valid POST Template")
def test_incomplete_data_form(self):
"POST incomplete data to a form"
@@ -97,8 +125,13 @@ class ClientTest(TestCase):
'value': 37
}
response = self.client.post('/test_client/form_view/', post_data)
- self.assertContains(response, 'This field is required', 3)
- self.assertEqual(response.template.name, "Invalid POST Template")
+ self.assertContains(response, 'This field is required.', 3)
+ self.assertEqual(response.status_code, 200)
+ self.assertTemplateUsed(response, "Invalid POST Template")
+
+ self.assertFormError(response, 'form', 'email', 'This field is required.')
+ self.assertFormError(response, 'form', 'single', 'This field is required.')
+ self.assertFormError(response, 'form', 'multi', 'This field is required.')
def test_form_error(self):
"POST erroneous data to a form"
@@ -111,7 +144,57 @@ class ClientTest(TestCase):
}
response = self.client.post('/test_client/form_view/', post_data)
self.assertEqual(response.status_code, 200)
- self.assertEqual(response.template.name, "Invalid POST Template")
+ self.assertTemplateUsed(response, "Invalid POST Template")
+
+ self.assertFormError(response, 'form', 'email', 'Enter a valid e-mail address.')
+
+ def test_valid_form_with_template(self):
+ "POST valid data to a form using multiple templates"
+ post_data = {
+ 'text': 'Hello World',
+ 'email': 'foo@example.com',
+ 'value': 37,
+ 'single': 'b',
+ 'multi': ('b','c','e')
+ }
+ response = self.client.post('/test_client/form_view_with_template/', post_data)
+ self.assertContains(response, 'POST data OK')
+ self.assertTemplateUsed(response, "form_view.html")
+ self.assertTemplateUsed(response, 'base.html')
+ self.assertTemplateNotUsed(response, "Valid POST Template")
+
+ def test_incomplete_data_form_with_template(self):
+ "POST incomplete data to a form using multiple templates"
+ post_data = {
+ 'text': 'Hello World',
+ 'value': 37
+ }
+ response = self.client.post('/test_client/form_view_with_template/', post_data)
+ self.assertContains(response, 'POST data has errors')
+ self.assertTemplateUsed(response, 'form_view.html')
+ self.assertTemplateUsed(response, 'base.html')
+ self.assertTemplateNotUsed(response, "Invalid POST Template")
+
+ self.assertFormError(response, 'form', 'email', 'This field is required.')
+ self.assertFormError(response, 'form', 'single', 'This field is required.')
+ self.assertFormError(response, 'form', 'multi', 'This field is required.')
+
+ def test_form_error_with_template(self):
+ "POST erroneous data to a form using multiple templates"
+ post_data = {
+ 'text': 'Hello World',
+ 'email': 'not an email address',
+ 'value': 37,
+ 'single': 'b',
+ 'multi': ('b','c','e')
+ }
+ response = self.client.post('/test_client/form_view_with_template/', post_data)
+ self.assertContains(response, 'POST data has errors')
+ self.assertTemplateUsed(response, "form_view.html")
+ self.assertTemplateUsed(response, 'base.html')
+ self.assertTemplateNotUsed(response, "Invalid POST Template")
+
+ self.assertFormError(response, 'form', 'email', 'Enter a valid e-mail address.')
def test_unknown_page(self):
"GET an invalid URL"
@@ -127,18 +210,19 @@ class ClientTest(TestCase):
response = self.client.get('/test_client/login_protected_view/')
self.assertRedirects(response, '/accounts/login/')
+ # Log in
+ self.client.login(username='testclient', password='password')
+
# Request a page that requires a login
- response = self.client.login('/test_client/login_protected_view/', 'testclient', 'password')
- self.failUnless(response)
+ response = self.client.get('/test_client/login_protected_view/')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['user'].username, 'testclient')
- self.assertEqual(response.template.name, 'Login Template')
def test_view_with_bad_login(self):
"Request a page that is protected with @login, but use bad credentials"
- response = self.client.login('/test_client/login_protected_view/', 'otheruser', 'nopassword')
- self.failIf(response)
+ login = self.client.login(username='otheruser', password='nopassword')
+ self.failIf(login)
def test_session_modifying_view(self):
"Request a page that modifies the session"
@@ -165,3 +249,36 @@ class ClientTest(TestCase):
self.fail('Should raise an error')
except KeyError:
pass
+
+ def test_mail_sending(self):
+ "Test that mail is redirected to a dummy outbox during test setup"
+
+ response = self.client.get('/test_client/mail_sending_view/')
+ self.assertEqual(response.status_code, 200)
+
+ self.assertEqual(len(mail.outbox), 1)
+ self.assertEqual(mail.outbox[0].subject, 'Test message')
+ self.assertEqual(mail.outbox[0].body, 'This is a test email')
+ self.assertEqual(mail.outbox[0].from_email, 'from@example.com')
+ self.assertEqual(mail.outbox[0].to[0], 'first@example.com')
+ self.assertEqual(mail.outbox[0].to[1], 'second@example.com')
+
+ def test_mass_mail_sending(self):
+ "Test that mass mail is redirected to a dummy outbox during test setup"
+
+ response = self.client.get('/test_client/mass_mail_sending_view/')
+ self.assertEqual(response.status_code, 200)
+
+ self.assertEqual(len(mail.outbox), 2)
+ self.assertEqual(mail.outbox[0].subject, 'First Test message')
+ self.assertEqual(mail.outbox[0].body, 'This is the first test email')
+ self.assertEqual(mail.outbox[0].from_email, 'from@example.com')
+ self.assertEqual(mail.outbox[0].to[0], 'first@example.com')
+ self.assertEqual(mail.outbox[0].to[1], 'second@example.com')
+
+ self.assertEqual(mail.outbox[1].subject, 'Second Test message')
+ self.assertEqual(mail.outbox[1].body, 'This is the second test email')
+ self.assertEqual(mail.outbox[1].from_email, 'from@example.com')
+ self.assertEqual(mail.outbox[1].to[0], 'second@example.com')
+ self.assertEqual(mail.outbox[1].to[1], 'third@example.com')
+
\ No newline at end of file
diff --git a/tests/modeltests/test_client/urls.py b/tests/modeltests/test_client/urls.py
index 707ecc186d..538c0e4b43 100644
--- a/tests/modeltests/test_client/urls.py
+++ b/tests/modeltests/test_client/urls.py
@@ -1,4 +1,5 @@
from django.conf.urls.defaults import *
+from django.views.generic.simple import redirect_to
import views
urlpatterns = patterns('',
@@ -6,8 +7,14 @@ urlpatterns = patterns('',
(r'^post_view/$', views.post_view),
(r'^raw_post_view/$', views.raw_post_view),
(r'^redirect_view/$', views.redirect_view),
+ (r'^permanent_redirect_view/$', redirect_to, { 'url': '/test_client/get_view/' }),
+ (r'^double_redirect_view/$', views.double_redirect_view),
+ (r'^bad_view/$', views.bad_view),
(r'^form_view/$', views.form_view),
+ (r'^form_view_with_template/$', views.form_view_with_template),
(r'^login_protected_view/$', views.login_protected_view),
(r'^session_view/$', views.session_view),
- (r'^broken_view/$', views.broken_view)
+ (r'^broken_view/$', views.broken_view),
+ (r'^mail_sending_view/$', views.mail_sending_view),
+ (r'^mass_mail_sending_view/$', views.mass_mail_sending_view)
)
diff --git a/tests/modeltests/test_client/views.py b/tests/modeltests/test_client/views.py
index 36ec144cf6..9bdf213b35 100644
--- a/tests/modeltests/test_client/views.py
+++ b/tests/modeltests/test_client/views.py
@@ -1,9 +1,11 @@
from xml.dom.minidom import parseString
+from django.core.mail import EmailMessage, SMTPConnection
from django.template import Context, Template
-from django.http import HttpResponse, HttpResponseRedirect
+from django.http import HttpResponse, HttpResponseRedirect, HttpResponseNotFound
from django.contrib.auth.decorators import login_required
from django.newforms.forms import Form
from django.newforms import fields
+from django.shortcuts import render_to_response
def get_view(request):
"A simple view that expects a GET request, and returns a rendered template"
@@ -48,6 +50,14 @@ def redirect_view(request):
"A view that redirects all requests to the GET view"
return HttpResponseRedirect('/test_client/get_view/')
+def double_redirect_view(request):
+ "A view that redirects all requests to a redirection view"
+ return HttpResponseRedirect('/test_client/permanent_redirect_view/')
+
+def bad_view(request):
+ "A view that returns a 404 with some error content"
+ return HttpResponseNotFound('Not found!. This page contains some MAGIC content')
+
TestChoices = (
('a', 'First Choice'),
('b', 'Second Choice'),
@@ -79,6 +89,25 @@ def form_view(request):
c = Context({'form': form})
return HttpResponse(t.render(c))
+
+def form_view_with_template(request):
+ "A view that tests a simple form"
+ if request.method == 'POST':
+ form = TestForm(request.POST)
+ if form.is_valid():
+ message = 'POST data OK'
+ else:
+ message = 'POST data has errors'
+ else:
+ form = TestForm()
+ message = 'GET form page'
+ return render_to_response('form_view.html',
+ {
+ 'form': form,
+ 'message': message
+ }
+ )
+
def login_protected_view(request):
"A simple view that is login protected."
@@ -100,3 +129,28 @@ def session_view(request):
def broken_view(request):
"""A view which just raises an exception, simulating a broken view."""
raise KeyError("Oops! Looks like you wrote some bad code.")
+
+def mail_sending_view(request):
+ EmailMessage(
+ "Test message",
+ "This is a test email",
+ "from@example.com",
+ ['first@example.com', 'second@example.com']).send()
+ return HttpResponse("Mail sent")
+
+def mass_mail_sending_view(request):
+ m1 = EmailMessage(
+ 'First Test message',
+ 'This is the first test email',
+ 'from@example.com',
+ ['first@example.com', 'second@example.com'])
+ m2 = EmailMessage(
+ 'Second Test message',
+ 'This is the second test email',
+ 'from@example.com',
+ ['second@example.com', 'third@example.com'])
+
+ c = SMTPConnection()
+ c.send_messages([m1,m2])
+
+ return HttpResponse("Mail sent")
diff --git a/tests/regressiontests/cache/tests.py b/tests/regressiontests/cache/tests.py
index cf58ab321a..9dc7161c03 100644
--- a/tests/regressiontests/cache/tests.py
+++ b/tests/regressiontests/cache/tests.py
@@ -46,6 +46,11 @@ class Cache(unittest.TestCase):
self.assertEqual(cache.has_key("hello"), True)
self.assertEqual(cache.has_key("goodbye"), False)
+ def test_in(self):
+ cache.set("hello", "goodbye")
+ self.assertEqual("hello" in cache, True)
+ self.assertEqual("goodbye" in cache, False)
+
def test_data_types(self):
# test data types
stuff = {
diff --git a/tests/regressiontests/null_queries/models.py b/tests/regressiontests/null_queries/models.py
index 4396ab4005..21944d9e7a 100644
--- a/tests/regressiontests/null_queries/models.py
+++ b/tests/regressiontests/null_queries/models.py
@@ -32,7 +32,7 @@ __test__ = {'API_TESTS':"""
>>> Choice.objects.filter(foo__exact=None)
Traceback (most recent call last):
...
-TypeError: Cannot resolve keyword 'foo' into field, choices are: id, poll, choice
+TypeError: Cannot resolve keyword 'foo' into field. Choices are: id, poll, choice
# Can't use None on anything other than __exact
>>> Choice.objects.filter(id__gt=None)
diff --git a/tests/regressiontests/serializers_regress/models.py b/tests/regressiontests/serializers_regress/models.py
index d3415ac1b9..c287b6e0d6 100644
--- a/tests/regressiontests/serializers_regress/models.py
+++ b/tests/regressiontests/serializers_regress/models.py
@@ -6,6 +6,7 @@ This class sets up a model for each model field type
"""
from django.db import models
+from django.contrib.contenttypes import generic
from django.contrib.contenttypes.models import ContentType
# The following classes are for testing basic data
@@ -80,7 +81,7 @@ class Tag(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
- content_object = models.GenericForeignKey()
+ content_object = generic.GenericForeignKey()
class Meta:
ordering = ["data"]
@@ -88,7 +89,7 @@ class Tag(models.Model):
class GenericData(models.Model):
data = models.CharField(maxlength=30)
- tags = models.GenericRelation(Tag)
+ tags = generic.GenericRelation(Tag)
# The following test classes are all for validation
# of related objects; in particular, forward, backward,
diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py
index db888f78d2..c995ebd955 100644
--- a/tests/regressiontests/templates/tests.py
+++ b/tests/regressiontests/templates/tests.py
@@ -592,6 +592,8 @@ class Templates(unittest.TestCase):
'invalidstr03': ('{% for v in var %}({{ v }}){% endfor %}', {}, ''),
'invalidstr04': ('{% if var %}Yes{% else %}No{% endif %}', {}, 'No'),
'invalidstr04': ('{% if var|default:"Foo" %}Yes{% else %}No{% endif %}', {}, 'Yes'),
+ 'invalidstr05': ('{{ var }}', {}, ('', 'INVALID %s', 'var')),
+ 'invalidstr06': ('{{ var.prop }}', {'var': {}}, ('', 'INVALID %s', 'var.prop')),
### MULTILINE #############################################################
@@ -743,6 +745,7 @@ class Templates(unittest.TestCase):
# Set TEMPLATE_STRING_IF_INVALID to a known string
old_invalid = settings.TEMPLATE_STRING_IF_INVALID
+ expected_invalid_str = 'INVALID'
for name, vals in tests:
install()
@@ -750,6 +753,10 @@ class Templates(unittest.TestCase):
if isinstance(vals[2], tuple):
normal_string_result = vals[2][0]
invalid_string_result = vals[2][1]
+ if '%s' in invalid_string_result:
+ expected_invalid_str = 'INVALID %s'
+ invalid_string_result = invalid_string_result % vals[2][2]
+ template.invalid_var_format_string = True
else:
normal_string_result = vals[2]
invalid_string_result = vals[2]
@@ -760,7 +767,7 @@ class Templates(unittest.TestCase):
activate('en-us')
for invalid_str, result in [('', normal_string_result),
- ('INVALID', invalid_string_result)]:
+ (expected_invalid_str, invalid_string_result)]:
settings.TEMPLATE_STRING_IF_INVALID = invalid_str
try:
output = loader.get_template(name).render(template.Context(vals[1]))
@@ -774,6 +781,10 @@ class Templates(unittest.TestCase):
if 'LANGUAGE_CODE' in vals[1]:
deactivate()
+ if template.invalid_var_format_string:
+ expected_invalid_str = 'INVALID'
+ template.invalid_var_format_string = False
+
loader.template_source_loaders = old_template_loaders
deactivate()
settings.TEMPLATE_DEBUG = old_td
diff --git a/tests/regressiontests/test_client_regress/__init__.py b/tests/regressiontests/test_client_regress/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/regressiontests/test_client_regress/models.py b/tests/regressiontests/test_client_regress/models.py
new file mode 100644
index 0000000000..53699f3140
--- /dev/null
+++ b/tests/regressiontests/test_client_regress/models.py
@@ -0,0 +1,136 @@
+"""
+Regression tests for the Test Client, especially the customized assertions.
+
+"""
+from django.test import Client, TestCase
+from django.core import mail
+
+class AssertTemplateUsedTests(TestCase):
+ fixtures = ['testdata.json']
+
+ def test_no_context(self):
+ "Template usage assertions work then templates aren't in use"
+ response = self.client.get('/test_client_regress/no_template_view/')
+
+ # Check that the no template case doesn't mess with the template assertions
+ self.assertTemplateNotUsed(response, 'GET Template')
+
+ try:
+ self.assertTemplateUsed(response, 'GET Template')
+ except AssertionError, e:
+ self.assertEquals(str(e), "No templates used to render the response")
+
+ def test_single_context(self):
+ "Template assertions work when there is a single context"
+ response = self.client.get('/test_client/post_view/', {})
+
+ #
+ try:
+ self.assertTemplateNotUsed(response, 'Empty GET Template')
+ except AssertionError, e:
+ self.assertEquals(str(e), "Template 'Empty GET Template' was used unexpectedly in rendering the response")
+
+ try:
+ self.assertTemplateUsed(response, 'Empty POST Template')
+ except AssertionError, e:
+ self.assertEquals(str(e), "Template 'Empty POST Template' was not used to render the response. Actual template was 'Empty GET Template'")
+
+ def test_multiple_context(self):
+ "Template assertions work when there are multiple contexts"
+ post_data = {
+ 'text': 'Hello World',
+ 'email': 'foo@example.com',
+ 'value': 37,
+ 'single': 'b',
+ 'multi': ('b','c','e')
+ }
+ response = self.client.post('/test_client/form_view_with_template/', post_data)
+ self.assertContains(response, 'POST data OK')
+ try:
+ self.assertTemplateNotUsed(response, "form_view.html")
+ except AssertionError, e:
+ self.assertEquals(str(e), "Template 'form_view.html' was used unexpectedly in rendering the response")
+
+ try:
+ self.assertTemplateNotUsed(response, 'base.html')
+ except AssertionError, e:
+ self.assertEquals(str(e), "Template 'base.html' was used unexpectedly in rendering the response")
+
+ try:
+ self.assertTemplateUsed(response, "Valid POST Template")
+ except AssertionError, e:
+ self.assertEquals(str(e), "Template 'Valid POST Template' was not one of the templates used to render the response. Templates used: form_view.html, base.html")
+
+class AssertFormErrorTests(TestCase):
+ def test_unknown_form(self):
+ "An assertion is raised if the form name is unknown"
+ post_data = {
+ 'text': 'Hello World',
+ 'email': 'not an email address',
+ 'value': 37,
+ 'single': 'b',
+ 'multi': ('b','c','e')
+ }
+ response = self.client.post('/test_client/form_view/', post_data)
+ self.assertEqual(response.status_code, 200)
+ self.assertTemplateUsed(response, "Invalid POST Template")
+
+ try:
+ self.assertFormError(response, 'wrong_form', 'some_field', 'Some error.')
+ except AssertionError, e:
+ self.assertEqual(str(e), "The form 'wrong_form' was not used to render the response")
+
+ def test_unknown_field(self):
+ "An assertion is raised if the field name is unknown"
+ post_data = {
+ 'text': 'Hello World',
+ 'email': 'not an email address',
+ 'value': 37,
+ 'single': 'b',
+ 'multi': ('b','c','e')
+ }
+ response = self.client.post('/test_client/form_view/', post_data)
+ self.assertEqual(response.status_code, 200)
+ self.assertTemplateUsed(response, "Invalid POST Template")
+
+ try:
+ self.assertFormError(response, 'form', 'some_field', 'Some error.')
+ except AssertionError, e:
+ self.assertEqual(str(e), "The form 'form' in context 0 does not contain the field 'some_field'")
+
+ def test_noerror_field(self):
+ "An assertion is raised if the field doesn't have any errors"
+ post_data = {
+ 'text': 'Hello World',
+ 'email': 'not an email address',
+ 'value': 37,
+ 'single': 'b',
+ 'multi': ('b','c','e')
+ }
+ response = self.client.post('/test_client/form_view/', post_data)
+ self.assertEqual(response.status_code, 200)
+ self.assertTemplateUsed(response, "Invalid POST Template")
+
+ try:
+ self.assertFormError(response, 'form', 'value', 'Some error.')
+ except AssertionError, e:
+ self.assertEqual(str(e), "The field 'value' on form 'form' in context 0 contains no errors")
+
+ def test_unknown_error(self):
+ "An assertion is raised if the field doesn't contain the provided error"
+ post_data = {
+ 'text': 'Hello World',
+ 'email': 'not an email address',
+ 'value': 37,
+ 'single': 'b',
+ 'multi': ('b','c','e')
+ }
+ response = self.client.post('/test_client/form_view/', post_data)
+ self.assertEqual(response.status_code, 200)
+ self.assertTemplateUsed(response, "Invalid POST Template")
+
+ try:
+ self.assertFormError(response, 'form', 'email', 'Some error.')
+ except AssertionError, e:
+ self.assertEqual(str(e), "The field 'email' on form 'form' in context 0 does not contain the error 'Some error.' (actual errors: [u'Enter a valid e-mail address.'])")
+
diff --git a/tests/regressiontests/test_client_regress/urls.py b/tests/regressiontests/test_client_regress/urls.py
new file mode 100644
index 0000000000..e9cd0aea15
--- /dev/null
+++ b/tests/regressiontests/test_client_regress/urls.py
@@ -0,0 +1,7 @@
+from django.conf.urls.defaults import *
+from django.views.generic.simple import redirect_to
+import views
+
+urlpatterns = patterns('',
+ (r'^no_template_view/$', views.no_template_view),
+)
diff --git a/tests/regressiontests/test_client_regress/views.py b/tests/regressiontests/test_client_regress/views.py
new file mode 100644
index 0000000000..d8dd2b349c
--- /dev/null
+++ b/tests/regressiontests/test_client_regress/views.py
@@ -0,0 +1,8 @@
+from django.core.mail import EmailMessage, SMTPConnection
+from django.http import HttpResponse
+from django.shortcuts import render_to_response
+
+def no_template_view(request):
+ "A simple view that expects a GET request, and returns a rendered template"
+ return HttpResponse("No template used")
+
diff --git a/tests/templates/base.html b/tests/templates/base.html
new file mode 100644
index 0000000000..611bc094a9
--- /dev/null
+++ b/tests/templates/base.html
@@ -0,0 +1,8 @@
+
+
+
+
Django Internal Tests: {% block title %}{% endblock %}
+{% block content %}
+{% endblock %}
+
+
\ No newline at end of file
diff --git a/tests/templates/form_view.html b/tests/templates/form_view.html
new file mode 100644
index 0000000000..1487217547
--- /dev/null
+++ b/tests/templates/form_view.html
@@ -0,0 +1,15 @@
+{% extends "base.html" %}
+{% block title %}Submit data{% endblock %}
+{% block content %}
+
{{ message }}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/tests/templates/login.html b/tests/templates/login.html
index 8a0974c9a1..d55e9ddc75 100644
--- a/tests/templates/login.html
+++ b/tests/templates/login.html
@@ -1,7 +1,6 @@
-
-
-
-
Django Internal Tests: Login
+{% extends "base.html" %}
+{% block title %}Login{% endblock %}
+{% block content %}
{% if form.has_errors %}
Your username and password didn't match. Please try again.
{% endif %}
@@ -15,5 +14,4 @@
-
-
\ No newline at end of file
+{% endblock %}
\ No newline at end of file
diff --git a/tests/urls.py b/tests/urls.py
index 9dcdca944e..dd475b0ea7 100644
--- a/tests/urls.py
+++ b/tests/urls.py
@@ -3,6 +3,7 @@ from django.conf.urls.defaults import *
urlpatterns = patterns('',
# test_client modeltest urls
(r'^test_client/', include('modeltests.test_client.urls')),
+ (r'^test_client_regress/', include('regressiontests.test_client_regress.urls')),
# Always provide the auth system login and logout views
(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}),