summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoulder Sprinters <boulder-sprinters@djangoproject.com>2007-04-05 16:17:35 +0000
committerBoulder Sprinters <boulder-sprinters@djangoproject.com>2007-04-05 16:17:35 +0000
commita9b2c0686d98f78ca365a04057699a44f7711914 (patch)
tree451caf3f856bb51e72c2b88d5fcefbedbadf7b01
parent5bcf13b607ea92c34d13cbb52f70c1e6b76ce5cd (diff)
boulder-oracle-sprint: Merged to [4934].
git-svn-id: http://code.djangoproject.com/svn/django/branches/boulder-oracle-sprint@4935 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--AUTHORS2
-rw-r--r--MANIFEST.in4
-rw-r--r--django/__init__.py2
-rwxr-xr-xdjango/bin/compile-messages.py4
-rw-r--r--django/conf/locale/en/LC_MESSAGES/django.mobin627 -> 627 bytes
-rw-r--r--django/conf/locale/en/LC_MESSAGES/django.po2742
-rw-r--r--django/conf/locale/pt_BR/LC_MESSAGES/django.mobin28462 -> 30723 bytes
-rw-r--r--django/conf/locale/pt_BR/LC_MESSAGES/django.po2321
-rw-r--r--django/contrib/localflavor/br/forms.py6
-rw-r--r--django/contrib/localflavor/de/__init__.py0
-rw-r--r--django/contrib/localflavor/de/de_states.py21
-rw-r--r--django/contrib/localflavor/de/forms.py87
-rw-r--r--django/contrib/localflavor/fr/forms.py2
-rw-r--r--django/contrib/localflavor/it/forms.py1
-rw-r--r--django/contrib/localflavor/usa/forms.py42
-rw-r--r--django/newforms/fields.py3
-rw-r--r--django/newforms/forms.py7
-rw-r--r--django/newforms/util.py31
-rw-r--r--django/newforms/widgets.py3
-rw-r--r--django/template/defaulttags.py4
-rw-r--r--django/utils/encoding.py32
-rw-r--r--django/utils/html.py1
-rw-r--r--django/utils/translation/__init__.py5
-rw-r--r--django/utils/translation/trans_null.py15
-rw-r--r--docs/faq.txt4
-rw-r--r--scripts/rpm-install.sh12
-rw-r--r--setup.cfg2
-rw-r--r--setup.py37
-rw-r--r--tests/regressiontests/defaultfilters/tests.py19
-rw-r--r--tests/regressiontests/forms/localflavor.py63
-rw-r--r--tests/regressiontests/forms/regressions.py16
-rw-r--r--tests/regressiontests/forms/tests.py4
32 files changed, 3470 insertions, 2022 deletions
diff --git a/AUTHORS b/AUTHORS
index a05d2b4e49..673976231a 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -42,6 +42,7 @@ people who have submitted patches, reported bugs, added translations, helped
answer newbie questions, and generally made Django that much better:
adurdin@gmail.com
+ Daniel Alves Barbosa de Oliveira Vaz <danielvaz@gmail.com>
Andreas
andy@jadedplanet.net
Fabrice Aneche <akh@nobugware.com>
@@ -127,6 +128,7 @@ answer newbie questions, and generally made Django that much better:
Nicola Larosa <nico@teknico.net>
Eugene Lazutkin <http://lazutkin.com/blog/>
Jeong-Min Lee <falsetru@gmail.com>
+ Jannis Leidel <jl@websushi.org>
Christopher Lenz <http://www.cmlenz.net/>
lerouxb@gmail.com
Waylan Limberg <waylan@gmail.com>
diff --git a/MANIFEST.in b/MANIFEST.in
index 11b60bcc14..a47b6e30f1 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,8 +1,12 @@
+include README
include AUTHORS
include INSTALL
include LICENSE
+include MANIFEST.in
recursive-include docs *
recursive-include scripts *
+recursive-include examples *
+recursive-include extras *
recursive-include django/conf/locale *
recursive-include django/contrib/admin/templates *
recursive-include django/contrib/admin/media *
diff --git a/django/__init__.py b/django/__init__.py
index a91a7e13c3..7a24af2b4e 100644
--- a/django/__init__.py
+++ b/django/__init__.py
@@ -1 +1 @@
-VERSION = (0, 96, None)
+VERSION = (0, 97, 'pre')
diff --git a/django/bin/compile-messages.py b/django/bin/compile-messages.py
index f2193d3122..2e1e908bbf 100755
--- a/django/bin/compile-messages.py
+++ b/django/bin/compile-messages.py
@@ -31,9 +31,9 @@ def compile_messages(locale=None):
os.environ['djangocompilemo'] = pf + '.mo'
os.environ['djangocompilepo'] = pf + '.po'
if sys.platform == 'win32': # Different shell-variable syntax
- cmd = 'msgfmt -o "%djangocompilemo%" "%djangocompilepo%"'
+ cmd = 'msgfmt --check-format -o "%djangocompilemo%" "%djangocompilepo%"'
else:
- cmd = 'msgfmt -o "$djangocompilemo" "$djangocompilepo"'
+ cmd = 'msgfmt --check-format -o "$djangocompilemo" "$djangocompilepo"'
os.system(cmd)
def main():
diff --git a/django/conf/locale/en/LC_MESSAGES/django.mo b/django/conf/locale/en/LC_MESSAGES/django.mo
index 6c4dbe4b4e..038e794a83 100644
--- a/django/conf/locale/en/LC_MESSAGES/django.mo
+++ b/django/conf/locale/en/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/en/LC_MESSAGES/django.po b/django/conf/locale/en/LC_MESSAGES/django.po
index feba39f7cd..7e36c6358c 100644
--- a/django/conf/locale/en/LC_MESSAGES/django.po
+++ b/django/conf/locale/en/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-25 15:43+0200\n"
+"POT-Creation-Date: 2007-04-05 01:32+1000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -15,1110 +15,1091 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
+#: db/models/manipulators.py:307
+#, python-format
+msgid "%(object)s with this %(type)s already exists for the given %(field)s."
msgstr ""
-#: contrib/comments/models.py:68
-msgid "headline"
+#: 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 ""
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
+#: db/models/fields/related.py:53
+#, python-format
+msgid "Please enter a valid %s."
msgstr ""
-#: contrib/comments/models.py:70
-msgid "rating #1"
+#: db/models/fields/related.py:642
+msgid "Separate multiple IDs with commas."
msgstr ""
-#: contrib/comments/models.py:71
-msgid "rating #2"
+#: db/models/fields/related.py:644
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
-#: contrib/comments/models.py:72
-msgid "rating #3"
+#: 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] ""
+msgstr[1] ""
+
+#: db/models/fields/__init__.py:42
+#, python-format
+msgid "%(optname)s with this %(fieldname)s already exists."
msgstr ""
-#: contrib/comments/models.py:73
-msgid "rating #4"
+#: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274
+#: db/models/fields/__init__.py:610 db/models/fields/__init__.py:621
+#: oldforms/__init__.py:357 newforms/fields.py:80 newforms/fields.py:376
+#: newforms/fields.py:452 newforms/fields.py:463 newforms/models.py:178
+msgid "This field is required."
msgstr ""
-#: contrib/comments/models.py:74
-msgid "rating #5"
+#: db/models/fields/__init__.py:367
+msgid "This value must be an integer."
msgstr ""
-#: contrib/comments/models.py:75
-msgid "rating #6"
+#: db/models/fields/__init__.py:402
+msgid "This value must be either True or False."
msgstr ""
-#: contrib/comments/models.py:76
-msgid "rating #7"
+#: db/models/fields/__init__.py:423
+msgid "This field cannot be null."
msgstr ""
-#: contrib/comments/models.py:77
-msgid "rating #8"
+#: db/models/fields/__init__.py:457 core/validators.py:148
+msgid "Enter a valid date in YYYY-MM-DD format."
msgstr ""
-#: contrib/comments/models.py:82
-msgid "is valid rating"
+#: db/models/fields/__init__.py:526 core/validators.py:157
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr ""
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
+#: db/models/fields/__init__.py:630
+msgid "Enter a valid filename."
msgstr ""
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
+#: db/models/fields/__init__.py:751
+msgid "This value must be either None, True or False."
msgstr ""
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
-msgid "IP address"
+#: conf/global_settings.py:39
+msgid "Arabic"
msgstr ""
-#: contrib/comments/models.py:86
-msgid "is removed"
+#: conf/global_settings.py:40
+msgid "Bengali"
msgstr ""
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
+#: conf/global_settings.py:41
+msgid "Catalan"
msgstr ""
-#: contrib/comments/models.py:91
-msgid "comments"
+#: conf/global_settings.py:42
+msgid "Czech"
msgstr ""
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
+#: conf/global_settings.py:43
+msgid "Welsh"
msgstr ""
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
+#: conf/global_settings.py:44
+msgid "Danish"
msgstr ""
-#: contrib/comments/models.py:168
-msgid "person's name"
+#: conf/global_settings.py:45
+msgid "German"
msgstr ""
-#: contrib/comments/models.py:171
-msgid "ip address"
+#: conf/global_settings.py:46
+msgid "Greek"
msgstr ""
-#: contrib/comments/models.py:173
-msgid "approved by staff"
+#: conf/global_settings.py:47
+msgid "English"
msgstr ""
-#: contrib/comments/models.py:176
-msgid "free comment"
+#: conf/global_settings.py:48
+msgid "Spanish"
msgstr ""
-#: contrib/comments/models.py:177
-msgid "free comments"
+#: conf/global_settings.py:49
+msgid "Argentinean Spanish"
msgstr ""
-#: contrib/comments/models.py:233
-msgid "score"
+#: conf/global_settings.py:50
+msgid "Finnish"
msgstr ""
-#: contrib/comments/models.py:234
-msgid "score date"
+#: conf/global_settings.py:51
+msgid "French"
msgstr ""
-#: contrib/comments/models.py:237
-msgid "karma score"
+#: conf/global_settings.py:52
+msgid "Galician"
msgstr ""
-#: contrib/comments/models.py:238
-msgid "karma scores"
+#: conf/global_settings.py:53
+msgid "Hungarian"
msgstr ""
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
+#: conf/global_settings.py:54
+msgid "Hebrew"
msgstr ""
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
+#: conf/global_settings.py:55
+msgid "Icelandic"
msgstr ""
-#: contrib/comments/models.py:265
-msgid "flag date"
+#: conf/global_settings.py:56
+msgid "Italian"
msgstr ""
-#: contrib/comments/models.py:268
-msgid "user flag"
+#: conf/global_settings.py:57
+msgid "Japanese"
msgstr ""
-#: contrib/comments/models.py:269
-msgid "user flags"
+#: conf/global_settings.py:58
+msgid "Kannada"
msgstr ""
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
+#: conf/global_settings.py:59
+msgid "Latvian"
msgstr ""
-#: contrib/comments/models.py:278
-msgid "deletion date"
+#: conf/global_settings.py:60
+msgid "Macedonian"
msgstr ""
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
+#: conf/global_settings.py:61
+msgid "Dutch"
msgstr ""
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
+#: conf/global_settings.py:62
+msgid "Norwegian"
msgstr ""
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
+#: conf/global_settings.py:63
+msgid "Polish"
msgstr ""
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
+#: conf/global_settings.py:64
+msgid "Portugese"
msgstr ""
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
+#: conf/global_settings.py:65
+msgid "Brazilian"
msgstr ""
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
+#: conf/global_settings.py:66
+msgid "Romanian"
msgstr ""
-#: contrib/comments/views/comments.py:27
-msgid ""
-"This rating is required because you've entered at least one other rating."
+#: conf/global_settings.py:67
+msgid "Russian"
msgstr ""
-#: 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"
+#: conf/global_settings.py:68
+msgid "Slovak"
+msgstr ""
+
+#: conf/global_settings.py:69
+msgid "Slovenian"
+msgstr ""
+
+#: conf/global_settings.py:70
+msgid "Serbian"
+msgstr ""
+
+#: conf/global_settings.py:71
+msgid "Swedish"
+msgstr ""
+
+#: conf/global_settings.py:72
+msgid "Tamil"
+msgstr ""
+
+#: conf/global_settings.py:73
+msgid "Telugu"
+msgstr ""
+
+#: conf/global_settings.py:74
+msgid "Turkish"
+msgstr ""
+
+#: conf/global_settings.py:75
+msgid "Ukrainian"
+msgstr ""
+
+#: conf/global_settings.py:76
+msgid "Simplified Chinese"
+msgstr ""
+
+#: conf/global_settings.py:77
+msgid "Traditional Chinese"
+msgstr ""
+
+#: utils/timesince.py:12
+msgid "year"
+msgid_plural "years"
msgstr[0] ""
msgstr[1] ""
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
+#: utils/timesince.py:13
+msgid "month"
+msgid_plural "months"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/timesince.py:14
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/timesince.py:15
+msgid "day"
+msgid_plural "days"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/timesince.py:16
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/timesince.py:17
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: utils/dates.py:6
+msgid "Monday"
msgstr ""
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
+#: utils/dates.py:6
+msgid "Tuesday"
msgstr ""
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
+#: utils/dates.py:6
+msgid "Wednesday"
msgstr ""
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
+#: utils/dates.py:6
+msgid "Thursday"
msgstr ""
-#: 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"
+#: utils/dates.py:6
+msgid "Friday"
msgstr ""
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
+#: utils/dates.py:7
+msgid "Saturday"
msgstr ""
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
+#: utils/dates.py:7
+msgid "Sunday"
msgstr ""
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Log out"
+#: utils/dates.py:14
+msgid "January"
msgstr ""
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
+#: utils/dates.py:14
+msgid "February"
msgstr ""
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
+#: utils/dates.py:14 utils/dates.py:27
+msgid "March"
msgstr ""
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
+#: utils/dates.py:14 utils/dates.py:27
+msgid "April"
msgstr ""
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
+#: utils/dates.py:14 utils/dates.py:27
+msgid "May"
msgstr ""
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
+#: utils/dates.py:14 utils/dates.py:27
+msgid "June"
msgstr ""
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
+#: utils/dates.py:15 utils/dates.py:27
+msgid "July"
msgstr ""
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
+#: utils/dates.py:15
+msgid "August"
msgstr ""
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
+#: utils/dates.py:15
+msgid "September"
msgstr ""
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
+#: utils/dates.py:15
+msgid "October"
msgstr ""
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
+#: utils/dates.py:15
+msgid "November"
msgstr ""
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
-msgid "All"
+#: utils/dates.py:16
+msgid "December"
msgstr ""
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
+#: utils/dates.py:19
+msgid "jan"
msgstr ""
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
+#: utils/dates.py:19
+msgid "feb"
msgstr ""
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
+#: utils/dates.py:19
+msgid "mar"
msgstr ""
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
+#: utils/dates.py:19
+msgid "apr"
msgstr ""
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
+#: utils/dates.py:19
+msgid "may"
msgstr ""
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
+#: utils/dates.py:19
+msgid "jun"
msgstr ""
-#: contrib/admin/filterspecs.py:143
-msgid "No"
+#: utils/dates.py:20
+msgid "jul"
msgstr ""
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
+#: utils/dates.py:20
+msgid "aug"
msgstr ""
-#: contrib/admin/models.py:16
-msgid "action time"
+#: utils/dates.py:20
+msgid "sep"
msgstr ""
-#: contrib/admin/models.py:19
-msgid "object id"
+#: utils/dates.py:20
+msgid "oct"
msgstr ""
-#: contrib/admin/models.py:20
-msgid "object repr"
+#: utils/dates.py:20
+msgid "nov"
msgstr ""
-#: contrib/admin/models.py:21
-msgid "action flag"
+#: utils/dates.py:20
+msgid "dec"
msgstr ""
-#: contrib/admin/models.py:22
-msgid "change message"
+#: utils/dates.py:27
+msgid "Jan."
msgstr ""
-#: contrib/admin/models.py:25
-msgid "log entry"
+#: utils/dates.py:27
+msgid "Feb."
msgstr ""
-#: contrib/admin/models.py:26
-msgid "log entries"
+#: utils/dates.py:28
+msgid "Aug."
msgstr ""
-#: contrib/admin/templatetags/admin_list.py:230
-msgid "All dates"
+#: utils/dates.py:28
+msgid "Sept."
msgstr ""
-#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
+#: utils/dates.py:28
+msgid "Oct."
msgstr ""
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
+#: utils/dates.py:28
+msgid "Nov."
msgstr ""
-#: contrib/admin/views/decorators.py:62
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
+#: utils/dates.py:28
+msgid "Dec."
msgstr ""
-#: 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."
+#: utils/dateformat.py:40
+msgid "p.m."
msgstr ""
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
+#: utils/dateformat.py:41
+msgid "a.m."
msgstr ""
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
+#: utils/dateformat.py:46
+msgid "PM"
msgstr ""
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
+#: utils/dateformat.py:47
+msgid "AM"
msgstr ""
-#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:17
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
+#: utils/dateformat.py:95
+msgid "midnight"
msgstr ""
-#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
-#: contrib/admin/views/auth.py:22
-msgid "You may edit it again below."
+#: utils/dateformat.py:97
+msgid "noon"
msgstr ""
-#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
+#: utils/translation/trans_real.py:358
+msgid "DATE_FORMAT"
+msgstr "N j, Y"
+
+#: utils/translation/trans_real.py:359
+msgid "DATETIME_FORMAT"
+msgstr "N j, Y, P"
+
+#: utils/translation/trans_real.py:360
+msgid "TIME_FORMAT"
+msgstr "P"
+
+#: utils/translation/trans_real.py:376
+msgid "YEAR_MONTH_FORMAT"
+msgstr "F Y"
+
+#: utils/translation/trans_real.py:377
+msgid "MONTH_DAY_FORMAT"
+msgstr "F j"
+
+#: oldforms/__init__.py:392
#, python-format
-msgid "You may add another %s below."
+msgid "Ensure your text is less than %s character."
+msgid_plural "Ensure your text is less than %s characters."
+msgstr[0] ""
+msgstr[1] ""
+
+#: oldforms/__init__.py:397
+msgid "Line breaks are not allowed here."
msgstr ""
-#: contrib/admin/views/main.py:289
+#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610
#, python-format
-msgid "Add %s"
+msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
msgstr ""
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
+#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:150
+#: newforms/widgets.py:174
+msgid "Unknown"
msgstr ""
-#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337
-#: contrib/admin/views/main.py:339
-msgid "and"
+#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:143
+#: newforms/widgets.py:174
+msgid "Yes"
msgstr ""
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
+#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:143
+#: newforms/widgets.py:174
+msgid "No"
msgstr ""
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %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 ""
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
+#: oldforms/__init__.py:674
+msgid "The submitted file is empty."
msgstr ""
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
+#: oldforms/__init__.py:730
+msgid "Enter a whole number between -32,768 and 32,767."
msgstr ""
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+#: oldforms/__init__.py:740
+msgid "Enter a positive number."
msgstr ""
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
+#: oldforms/__init__.py:750
+msgid "Enter a whole number between 0 and 32,767."
msgstr ""
-#: contrib/admin/views/main.py:473
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+#: contrib/localflavor/no/forms.py:15
+msgid "Enter a zip code in the format XXXX."
msgstr ""
-#: contrib/admin/views/main.py:478
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
+#: contrib/localflavor/no/forms.py:36
+msgid "Enter a valid Norwegian social security number."
msgstr ""
-#: contrib/admin/views/main.py:511
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+#: contrib/localflavor/it/forms.py:14 contrib/localflavor/fr/forms.py:17
+#: contrib/localflavor/fi/forms.py:14 contrib/localflavor/de/forms.py:16
+msgid "Enter a zip code in the format XXXXX."
msgstr ""
-#: contrib/admin/views/main.py:514
-msgid "Are you sure?"
+#: contrib/localflavor/jp/forms.py:21
+msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
msgstr ""
-#: contrib/admin/views/main.py:536
-#, python-format
-msgid "Change history: %s"
+#: contrib/localflavor/jp/jp_prefectures.py:4
+msgid "Hokkaido"
msgstr ""
-#: contrib/admin/views/main.py:570
-#, python-format
-msgid "Select %s"
+#: contrib/localflavor/jp/jp_prefectures.py:5
+msgid "Aomori"
msgstr ""
-#: contrib/admin/views/main.py:570
-#, python-format
-msgid "Select %s to change"
+#: contrib/localflavor/jp/jp_prefectures.py:6
+msgid "Iwate"
msgstr ""
-#: contrib/admin/views/main.py:758
-msgid "Database error"
+#: contrib/localflavor/jp/jp_prefectures.py:7
+msgid "Miyagi"
msgstr ""
-#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
+#: contrib/localflavor/jp/jp_prefectures.py:8
+msgid "Akita"
msgstr ""
-#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
+#: contrib/localflavor/jp/jp_prefectures.py:9
+msgid "Yamagata"
msgstr ""
-#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
+#: contrib/localflavor/jp/jp_prefectures.py:10
+msgid "Fukushima"
msgstr ""
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
+#: contrib/localflavor/jp/jp_prefectures.py:11
+msgid "Ibaraki"
msgstr ""
-#: contrib/admin/views/doc.py:171
-#, python-format
-msgid "Model %r not found in app %r"
+#: contrib/localflavor/jp/jp_prefectures.py:12
+msgid "Tochigi"
msgstr ""
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%s.%s` object"
+#: contrib/localflavor/jp/jp_prefectures.py:13
+msgid "Gunma"
msgstr ""
-#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
-msgid "model:"
+#: contrib/localflavor/jp/jp_prefectures.py:14
+msgid "Saitama"
msgstr ""
-#: contrib/admin/views/doc.py:214
-#, python-format
-msgid "related `%s.%s` objects"
+#: contrib/localflavor/jp/jp_prefectures.py:15
+msgid "Chiba"
msgstr ""
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
+#: contrib/localflavor/jp/jp_prefectures.py:16
+msgid "Tokyo"
msgstr ""
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
+#: contrib/localflavor/jp/jp_prefectures.py:17
+msgid "Kanagawa"
msgstr ""
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
+#: contrib/localflavor/jp/jp_prefectures.py:18
+msgid "Yamanashi"
msgstr ""
-#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
-#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
-msgid "Integer"
+#: contrib/localflavor/jp/jp_prefectures.py:19
+msgid "Nagano"
msgstr ""
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
+#: contrib/localflavor/jp/jp_prefectures.py:20
+msgid "Niigata"
msgstr ""
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
-#, python-format
-msgid "String (up to %(maxlength)s)"
+#: contrib/localflavor/jp/jp_prefectures.py:21
+msgid "Toyama"
msgstr ""
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
+#: contrib/localflavor/jp/jp_prefectures.py:22
+msgid "Ishikawa"
msgstr ""
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
+#: contrib/localflavor/jp/jp_prefectures.py:23
+msgid "Fukui"
msgstr ""
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
+#: contrib/localflavor/jp/jp_prefectures.py:24
+msgid "Gifu"
msgstr ""
-#: contrib/admin/views/doc.py:297
-msgid "E-mail address"
+#: contrib/localflavor/jp/jp_prefectures.py:25
+msgid "Shizuoka"
msgstr ""
-#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
-#: contrib/admin/views/doc.py:302
-msgid "File path"
+#: contrib/localflavor/jp/jp_prefectures.py:26
+msgid "Aichi"
msgstr ""
-#: contrib/admin/views/doc.py:300
-msgid "Decimal number"
+#: contrib/localflavor/jp/jp_prefectures.py:27
+msgid "Mie"
msgstr ""
-#: contrib/admin/views/doc.py:306
-msgid "Boolean (Either True, False or None)"
+#: contrib/localflavor/jp/jp_prefectures.py:28
+msgid "Shiga"
msgstr ""
-#: contrib/admin/views/doc.py:307
-msgid "Relation to parent model"
+#: contrib/localflavor/jp/jp_prefectures.py:29
+msgid "Kyoto"
msgstr ""
-#: contrib/admin/views/doc.py:308
-msgid "Phone number"
+#: contrib/localflavor/jp/jp_prefectures.py:30
+msgid "Osaka"
msgstr ""
-#: contrib/admin/views/doc.py:313
-msgid "Text"
+#: contrib/localflavor/jp/jp_prefectures.py:31
+msgid "Hyogo"
msgstr ""
-#: contrib/admin/views/doc.py:314
-msgid "Time"
+#: contrib/localflavor/jp/jp_prefectures.py:32
+msgid "Nara"
msgstr ""
-#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7
-msgid "URL"
+#: contrib/localflavor/jp/jp_prefectures.py:33
+msgid "Wakayama"
msgstr ""
-#: contrib/admin/views/doc.py:316
-msgid "U.S. state (two uppercase letters)"
+#: contrib/localflavor/jp/jp_prefectures.py:34
+msgid "Tottori"
msgstr ""
-#: contrib/admin/views/doc.py:317
-msgid "XML text"
+#: contrib/localflavor/jp/jp_prefectures.py:35
+msgid "Shimane"
msgstr ""
-#: contrib/admin/views/doc.py:343
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
+#: contrib/localflavor/jp/jp_prefectures.py:36
+msgid "Okayama"
msgstr ""
-#: contrib/admin/views/auth.py:28
-msgid "Add user"
+#: contrib/localflavor/jp/jp_prefectures.py:37
+msgid "Hiroshima"
msgstr ""
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
+#: contrib/localflavor/jp/jp_prefectures.py:38
+msgid "Yamaguchi"
msgstr ""
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Change password"
+#: contrib/localflavor/jp/jp_prefectures.py:39
+msgid "Tokushima"
msgstr ""
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: 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"
+#: contrib/localflavor/jp/jp_prefectures.py:40
+msgid "Kagawa"
msgstr ""
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:20
-msgid "History"
+#: contrib/localflavor/jp/jp_prefectures.py:41
+msgid "Ehime"
msgstr ""
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
+#: contrib/localflavor/jp/jp_prefectures.py:42
+msgid "Kochi"
msgstr ""
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
+#: contrib/localflavor/jp/jp_prefectures.py:43
+msgid "Fukuoka"
msgstr ""
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
+#: contrib/localflavor/jp/jp_prefectures.py:44
+msgid "Saga"
msgstr ""
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
+#: contrib/localflavor/jp/jp_prefectures.py:45
+msgid "Nagasaki"
+msgstr ""
-#: 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."
+#: contrib/localflavor/jp/jp_prefectures.py:46
+msgid "Kumamoto"
msgstr ""
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
+#: contrib/localflavor/jp/jp_prefectures.py:47
+msgid "Oita"
msgstr ""
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
+#: contrib/localflavor/jp/jp_prefectures.py:48
+msgid "Miyazaki"
msgstr ""
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
+#: contrib/localflavor/jp/jp_prefectures.py:49
+msgid "Kagoshima"
msgstr ""
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
+#: contrib/localflavor/jp/jp_prefectures.py:50
+msgid "Okinawa"
msgstr ""
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
+#: contrib/localflavor/br/forms.py:18
+msgid "Enter a zip code in the format XXXXX-XXX."
msgstr ""
-#: 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."
+#: contrib/localflavor/br/forms.py:30
+msgid "Phone numbers must be in XX-XXXX-XXXX format."
msgstr ""
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
+#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:46
+msgid "Enter a valid Finnish social security number."
msgstr ""
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
+#: contrib/localflavor/uk/forms.py:18
+msgid "Enter a postcode. A space is required between the two postcode parts."
msgstr ""
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
+#: contrib/localflavor/de/forms.py:63
+msgid ""
+"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
+"format"
msgstr ""
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
+#: contrib/localflavor/de/de_states.py:5
+msgid "Baden-Wuerttemberg"
msgstr ""
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
+#: contrib/localflavor/de/de_states.py:6
+msgid "Bavaria"
msgstr ""
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
+#: contrib/localflavor/de/de_states.py:7
+msgid "Berlin"
msgstr ""
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
+#: contrib/localflavor/de/de_states.py:8
+msgid "Brandenburg"
msgstr ""
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
+#: contrib/localflavor/de/de_states.py:9
+msgid "Bremen"
msgstr ""
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
+#: contrib/localflavor/de/de_states.py:10
+msgid "Hamburg"
msgstr ""
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
+#: contrib/localflavor/de/de_states.py:11
+msgid "Hessen"
msgstr ""
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
+#: contrib/localflavor/de/de_states.py:12
+msgid "Mecklenburg-Western Pomerania"
msgstr ""
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
+#: contrib/localflavor/de/de_states.py:13
+msgid "Lower Saxony"
msgstr ""
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
+#: contrib/localflavor/de/de_states.py:14
+msgid "North Rhine-Westphalia"
msgstr ""
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
+#: contrib/localflavor/de/de_states.py:15
+msgid "Rhineland-Palatinate"
msgstr ""
-#: 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:"
+#: contrib/localflavor/de/de_states.py:16
+msgid "Saarland"
msgstr ""
-#: 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:"
+#: contrib/localflavor/de/de_states.py:17
+msgid "Saxony"
msgstr ""
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
+#: contrib/localflavor/de/de_states.py:18
+msgid "Saxony-Anhalt"
msgstr ""
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
+#: contrib/localflavor/de/de_states.py:19
+msgid "Schleswig-Holstein"
msgstr ""
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
+#: contrib/localflavor/de/de_states.py:20
+msgid "Thuringia"
msgstr ""
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-msgstr[1] ""
+#: contrib/localflavor/usa/forms.py:18
+msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
+msgstr ""
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
+#: contrib/localflavor/usa/forms.py:51
+msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
msgstr ""
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
+#: contrib/sessions/models.py:68
+msgid "session key"
msgstr ""
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
+#: contrib/sessions/models.py:69
+msgid "session data"
msgstr ""
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
+#: contrib/sessions/models.py:70
+msgid "expire date"
msgstr ""
-#: contrib/admin/templates/admin/change_form.html:30
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] ""
-msgstr[1] ""
+#: contrib/sessions/models.py:74
+msgid "session"
+msgstr ""
-#: contrib/admin/templates/admin/change_form.html:48
-msgid "Ordering"
+#: contrib/sessions/models.py:75
+msgid "sessions"
msgstr ""
-#: contrib/admin/templates/admin/change_form.html:51
-msgid "Order:"
+#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
+msgid "The two password fields didn't match."
msgstr ""
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
+#: contrib/auth/forms.py:25
+msgid "A user with that username already exists."
msgstr ""
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
+#: contrib/auth/forms.py:53
+msgid ""
+"Your Web browser doesn't appear to have cookies enabled. Cookies are "
+"required for logging in."
msgstr ""
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
+#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10
+msgid ""
+"Please enter a correct username and password. Note that both fields are case-"
+"sensitive."
msgstr ""
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
+#: contrib/auth/forms.py:62
+msgid "This account is inactive."
msgstr ""
-#: contrib/admin/templates/admin/invalid_setup.html:8
+#: contrib/auth/forms.py:85
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."
+"That e-mail address doesn't have an associated user account. Are you sure "
+"you've registered?"
msgstr ""
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
+#: contrib/auth/forms.py:117
+msgid "The two 'new password' fields didn't match."
msgstr ""
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
+#: contrib/auth/forms.py:124
+msgid "Your old password was entered incorrectly. Please enter it again."
msgstr ""
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-msgid "Password"
+#: contrib/auth/views.py:39
+msgid "Logged out"
msgstr ""
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-msgid "Password (again)"
+#: contrib/auth/models.py:38 contrib/auth/models.py:57
+msgid "name"
msgstr ""
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-msgid "Enter the same password as above, for verification."
+#: contrib/auth/models.py:40
+msgid "codename"
msgstr ""
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
+#: contrib/auth/models.py:42
+msgid "permission"
msgstr ""
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
+#: contrib/auth/models.py:43 contrib/auth/models.py:58
+msgid "permissions"
msgstr ""
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
+#: contrib/auth/models.py:60
+msgid "group"
msgstr ""
-#: 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"
+#: contrib/auth/models.py:61 contrib/auth/models.py:100
+msgid "groups"
msgstr ""
-#: contrib/admin/templates/registration/password_reset_form.html:12
+#: contrib/auth/models.py:90
+msgid "username"
+msgstr ""
+
+#: contrib/auth/models.py:90
msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
msgstr ""
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
+#: contrib/auth/models.py:91
+msgid "first name"
msgstr ""
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
+#: contrib/auth/models.py:92
+msgid "last name"
msgstr ""
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
+#: contrib/auth/models.py:93
+msgid "e-mail address"
msgstr ""
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
+#: contrib/auth/models.py:94
+msgid "password"
msgstr ""
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
+#: contrib/auth/models.py:94
+msgid ""
+"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
+"password form</a>."
msgstr ""
-#: contrib/admin/templates/registration/password_reset_done.html:12
+#: contrib/auth/models.py:95
+msgid "staff status"
+msgstr ""
+
+#: contrib/auth/models.py:95
+msgid "Designates whether the user can log into this admin site."
+msgstr ""
+
+#: contrib/auth/models.py:96
+msgid "active"
+msgstr ""
+
+#: contrib/auth/models.py:96
msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
+"Designates whether this user can log into the Django admin. Unselect this "
+"instead of deleting accounts."
msgstr ""
-#: contrib/admin/templates/registration/password_change_form.html:12
+#: contrib/auth/models.py:97
+msgid "superuser status"
+msgstr ""
+
+#: contrib/auth/models.py:97
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."
+"Designates that this user has all permissions without explicitly assigning "
+"them."
msgstr ""
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
+#: contrib/auth/models.py:98
+msgid "last login"
msgstr ""
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
+#: contrib/auth/models.py:99
+msgid "date joined"
msgstr ""
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
+#: contrib/auth/models.py:101
+msgid ""
+"In addition to the permissions manually assigned, this user will also get "
+"all permissions granted to each group he/she is in."
msgstr ""
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
+#: contrib/auth/models.py:102
+msgid "user permissions"
msgstr ""
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
+#: contrib/auth/models.py:105
+msgid "user"
msgstr ""
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
+#: contrib/auth/models.py:106
+msgid "users"
msgstr ""
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
+#: contrib/auth/models.py:111
+msgid "Personal info"
msgstr ""
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
+#: contrib/auth/models.py:112
+msgid "Permissions"
msgstr ""
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
+#: contrib/auth/models.py:113
+msgid "Important dates"
msgstr ""
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
+#: contrib/auth/models.py:114
+msgid "Groups"
msgstr ""
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
+#: contrib/auth/models.py:258
+msgid "message"
msgstr ""
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "th"
msgstr ""
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "st"
msgstr ""
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">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\").</p>\n"
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "nd"
msgstr ""
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "rd"
msgstr ""
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
+#: contrib/humanize/templatetags/humanize.py:47
+#, python-format
+msgid "%(value).1f million"
+msgid_plural "%(value).1f million"
+msgstr[0] ""
+msgstr[1] ""
+
+#: contrib/humanize/templatetags/humanize.py:50
+#, python-format
+msgid "%(value).1f billion"
+msgid_plural "%(value).1f billion"
+msgstr[0] ""
+msgstr[1] ""
+
+#: contrib/humanize/templatetags/humanize.py:53
+#, python-format
+msgid "%(value).1f trillion"
+msgid_plural "%(value).1f trillion"
+msgstr[0] ""
+msgstr[1] ""
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "one"
msgstr ""
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "two"
msgstr ""
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "three"
msgstr ""
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "four"
msgstr ""
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "five"
msgstr ""
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "six"
msgstr ""
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "seven"
msgstr ""
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "eight"
msgstr ""
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "nine"
msgstr ""
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
+#: contrib/contenttypes/models.py:36
+msgid "python model class name"
msgstr ""
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
+#: contrib/contenttypes/models.py:39
+msgid "content type"
+msgstr ""
+
+#: contrib/contenttypes/models.py:40
+msgid "content types"
msgstr ""
#: contrib/redirects/models.py:7
@@ -1149,6 +1130,10 @@ msgstr ""
msgid "redirects"
msgstr ""
+#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315
+msgid "URL"
+msgstr ""
+
#: contrib/flatpages/models.py:8
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
@@ -1192,178 +1177,312 @@ msgstr ""
msgid "flat pages"
msgstr ""
-#: contrib/auth/views.py:39
-msgid "Logged out"
+#: contrib/comments/models.py:67 contrib/comments/models.py:166
+msgid "object ID"
msgstr ""
-#: contrib/auth/models.py:38 contrib/auth/models.py:57
-msgid "name"
+#: contrib/comments/models.py:68
+msgid "headline"
msgstr ""
-#: contrib/auth/models.py:40
-msgid "codename"
+#: contrib/comments/models.py:69 contrib/comments/models.py:90
+#: contrib/comments/models.py:167
+msgid "comment"
msgstr ""
-#: contrib/auth/models.py:42
-msgid "permission"
+#: contrib/comments/models.py:70
+msgid "rating #1"
msgstr ""
-#: contrib/auth/models.py:43 contrib/auth/models.py:58
-msgid "permissions"
+#: contrib/comments/models.py:71
+msgid "rating #2"
msgstr ""
-#: contrib/auth/models.py:60
-msgid "group"
+#: contrib/comments/models.py:72
+msgid "rating #3"
msgstr ""
-#: contrib/auth/models.py:61 contrib/auth/models.py:100
-msgid "groups"
+#: contrib/comments/models.py:73
+msgid "rating #4"
msgstr ""
-#: contrib/auth/models.py:90
-msgid "username"
+#: contrib/comments/models.py:74
+msgid "rating #5"
msgstr ""
-#: contrib/auth/models.py:90
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
+#: contrib/comments/models.py:75
+msgid "rating #6"
msgstr ""
-#: contrib/auth/models.py:91
-msgid "first name"
+#: contrib/comments/models.py:76
+msgid "rating #7"
msgstr ""
-#: contrib/auth/models.py:92
-msgid "last name"
+#: contrib/comments/models.py:77
+msgid "rating #8"
msgstr ""
-#: contrib/auth/models.py:93
-msgid "e-mail address"
+#: contrib/comments/models.py:82
+msgid "is valid rating"
msgstr ""
-#: contrib/auth/models.py:94
-msgid "password"
+#: contrib/comments/models.py:83 contrib/comments/models.py:169
+msgid "date/time submitted"
msgstr ""
-#: contrib/auth/models.py:94
-msgid "Use '[algo]$[salt]$[hexdigest]'"
+#: contrib/comments/models.py:84 contrib/comments/models.py:170
+msgid "is public"
msgstr ""
-#: contrib/auth/models.py:95
-msgid "staff status"
+#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
+msgid "IP address"
msgstr ""
-#: contrib/auth/models.py:95
-msgid "Designates whether the user can log into this admin site."
+#: contrib/comments/models.py:86
+msgid "is removed"
msgstr ""
-#: contrib/auth/models.py:96
-msgid "active"
+#: contrib/comments/models.py:86
+msgid ""
+"Check this box if the comment is inappropriate. A \"This comment has been "
+"removed\" message will be displayed instead."
msgstr ""
-#: contrib/auth/models.py:96
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
+#: contrib/comments/models.py:91
+msgid "comments"
msgstr ""
-#: contrib/auth/models.py:97
-msgid "superuser status"
+#: contrib/comments/models.py:131 contrib/comments/models.py:207
+msgid "Content object"
msgstr ""
-#: contrib/auth/models.py:97
+#: contrib/comments/models.py:159
+#, python-format
msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
+"Posted by %(user)s at %(date)s\n"
+"\n"
+"%(comment)s\n"
+"\n"
+"http://%(domain)s%(url)s"
msgstr ""
-#: contrib/auth/models.py:98
-msgid "last login"
+#: contrib/comments/models.py:168
+msgid "person's name"
msgstr ""
-#: contrib/auth/models.py:99
-msgid "date joined"
+#: contrib/comments/models.py:171
+msgid "ip address"
msgstr ""
-#: contrib/auth/models.py:101
+#: contrib/comments/models.py:173
+msgid "approved by staff"
+msgstr ""
+
+#: contrib/comments/models.py:176
+msgid "free comment"
+msgstr ""
+
+#: contrib/comments/models.py:177
+msgid "free comments"
+msgstr ""
+
+#: contrib/comments/models.py:233
+msgid "score"
+msgstr ""
+
+#: contrib/comments/models.py:234
+msgid "score date"
+msgstr ""
+
+#: contrib/comments/models.py:237
+msgid "karma score"
+msgstr ""
+
+#: contrib/comments/models.py:238
+msgid "karma scores"
+msgstr ""
+
+#: contrib/comments/models.py:242
+#, python-format
+msgid "%(score)d rating by %(user)s"
+msgstr ""
+
+#: contrib/comments/models.py:258
+#, python-format
msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
+"This comment was flagged by %(user)s:\n"
+"\n"
+"%(text)s"
msgstr ""
-#: contrib/auth/models.py:102
-msgid "user permissions"
+#: contrib/comments/models.py:265
+msgid "flag date"
msgstr ""
-#: contrib/auth/models.py:105
-msgid "user"
+#: contrib/comments/models.py:268
+msgid "user flag"
msgstr ""
-#: contrib/auth/models.py:106
-msgid "users"
+#: contrib/comments/models.py:269
+msgid "user flags"
msgstr ""
-#: contrib/auth/models.py:111
-msgid "Personal info"
+#: contrib/comments/models.py:273
+#, python-format
+msgid "Flag by %r"
msgstr ""
-#: contrib/auth/models.py:112
-msgid "Permissions"
+#: contrib/comments/models.py:278
+msgid "deletion date"
msgstr ""
-#: contrib/auth/models.py:113
-msgid "Important dates"
+#: contrib/comments/models.py:280
+msgid "moderator deletion"
msgstr ""
-#: contrib/auth/models.py:114
-msgid "Groups"
+#: contrib/comments/models.py:281
+msgid "moderator deletions"
msgstr ""
-#: contrib/auth/models.py:256
-msgid "message"
+#: contrib/comments/models.py:285
+#, python-format
+msgid "Moderator deletion by %r"
msgstr ""
-#: contrib/auth/forms.py:52
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
+#: 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/auth/forms.py:61
-msgid "This account is inactive."
+#: contrib/comments/templates/comments/form.html:6
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
+#: contrib/admin/templates/admin_doc/missing_docutils.html:4
+#: contrib/admin/templates/admin_doc/view_detail.html:4
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+#: contrib/admin/templates/admin_doc/view_index.html:5
+#: contrib/admin/templates/admin_doc/template_tag_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/index.html:4
+#: contrib/admin/templates/admin_doc/template_detail.html:4
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/auth/user/change_password.html:9
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/registration/password_change_done.html:3
+msgid "Log out"
msgstr ""
-#: contrib/contenttypes/models.py:20
-msgid "python model class name"
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:20
+msgid "Password:"
msgstr ""
-#: contrib/contenttypes/models.py:23
-msgid "content type"
+#: contrib/comments/templates/comments/form.html:8
+msgid "Forgotten your password?"
msgstr ""
-#: contrib/contenttypes/models.py:24
-msgid "content types"
+#: contrib/comments/templates/comments/form.html:12
+msgid "Ratings"
msgstr ""
-#: contrib/sessions/models.py:51
-msgid "session key"
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Required"
msgstr ""
-#: contrib/sessions/models.py:52
-msgid "session data"
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Optional"
msgstr ""
-#: contrib/sessions/models.py:53
-msgid "expire date"
+#: contrib/comments/templates/comments/form.html:23
+msgid "Post a photo"
msgstr ""
-#: contrib/sessions/models.py:57
-msgid "session"
+#: contrib/comments/templates/comments/form.html:28
+#: contrib/comments/templates/comments/freeform.html:5
+msgid "Comment:"
msgstr ""
-#: contrib/sessions/models.py:58
-msgid "sessions"
+#: 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/comments/views/karma.py:19
+msgid "Anonymous users cannot vote"
+msgstr ""
+
+#: contrib/comments/views/karma.py:23
+msgid "Invalid comment ID"
+msgstr ""
+
+#: contrib/comments/views/karma.py:25
+msgid "No voting for yourself"
+msgstr ""
+
+#: 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: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] ""
+msgstr[1] ""
+
+#: contrib/comments/views/comments.py:116
+#, python-format
+msgid ""
+"This comment was posted by a sketchy user:\n"
+"\n"
+"%(text)s"
+msgstr ""
+
+#: contrib/comments/views/comments.py:188
+#: contrib/comments/views/comments.py:280
+msgid "Only POSTs are allowed"
+msgstr ""
+
+#: 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:196
+#: contrib/comments/views/comments.py:286
+msgid "Somebody tampered with the comment form (security violation)"
+msgstr ""
+
+#: 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 ""
+
+#: contrib/comments/views/comments.py:257
+#: contrib/comments/views/comments.py:321
+msgid "The comment form didn't provide either 'preview' or 'post'"
msgstr ""
#: contrib/sites/models.py:10
@@ -1382,520 +1501,1054 @@ msgstr ""
msgid "sites"
msgstr ""
-#: utils/dates.py:6
-msgid "Monday"
+#: contrib/admin/filterspecs.py:40
+#, python-format
+msgid ""
+"<h3>By %s:</h3>\n"
+"<ul>\n"
msgstr ""
-#: utils/dates.py:6
-msgid "Tuesday"
+#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
+#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
+msgid "All"
msgstr ""
-#: utils/dates.py:6
-msgid "Wednesday"
+#: contrib/admin/filterspecs.py:109
+msgid "Any date"
msgstr ""
-#: utils/dates.py:6
-msgid "Thursday"
+#: contrib/admin/filterspecs.py:110
+msgid "Today"
msgstr ""
-#: utils/dates.py:6
-msgid "Friday"
+#: contrib/admin/filterspecs.py:113
+msgid "Past 7 days"
msgstr ""
-#: utils/dates.py:7
-msgid "Saturday"
+#: contrib/admin/filterspecs.py:115
+msgid "This month"
msgstr ""
-#: utils/dates.py:7
-msgid "Sunday"
+#: contrib/admin/filterspecs.py:117
+msgid "This year"
msgstr ""
-#: utils/dates.py:14
-msgid "January"
+#: contrib/admin/models.py:16
+msgid "action time"
msgstr ""
-#: utils/dates.py:14
-msgid "February"
+#: contrib/admin/models.py:19
+msgid "object id"
msgstr ""
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
+#: contrib/admin/models.py:20
+msgid "object repr"
msgstr ""
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
+#: contrib/admin/models.py:21
+msgid "action flag"
msgstr ""
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
+#: contrib/admin/models.py:22
+msgid "change message"
msgstr ""
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
+#: contrib/admin/models.py:25
+msgid "log entry"
msgstr ""
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
+#: contrib/admin/models.py:26
+msgid "log entries"
msgstr ""
-#: utils/dates.py:15
-msgid "August"
+#: contrib/admin/templatetags/admin_list.py:247
+msgid "All dates"
msgstr ""
-#: utils/dates.py:15
-msgid "September"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+#: contrib/admin/templates/admin/500.html:4
+#: contrib/admin/templates/admin/invalid_setup.html:4
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/delete_confirmation.html:6
+#: contrib/admin/templates/admin/change_list.html:6
+#: contrib/admin/templates/admin/change_form.html:13
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/auth/user/change_password.html:12
+#: 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/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_reset_form.html:4
+msgid "Home"
msgstr ""
-#: utils/dates.py:15
-msgid "October"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/auth/user/change_password.html:9
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/registration/password_change_done.html:3
+msgid "Documentation"
msgstr ""
-#: utils/dates.py:15
-msgid "November"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Bookmarklets"
msgstr ""
-#: utils/dates.py:16
-msgid "December"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
+#: contrib/admin/templates/admin_doc/missing_docutils.html:4
+#: contrib/admin/templates/admin_doc/view_detail.html:4
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+#: contrib/admin/templates/admin_doc/view_index.html:5
+#: contrib/admin/templates/admin_doc/template_tag_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/index.html:4
+#: contrib/admin/templates/admin_doc/template_detail.html:4
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/change_form.html:10
+#: 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_form.html:3
+#: contrib/admin/templates/registration/password_change_done.html:3
+msgid "Change password"
msgstr ""
-#: utils/dates.py:19
-msgid "jan"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:5
+msgid "Documentation bookmarklets"
msgstr ""
-#: utils/dates.py:19
-msgid "feb"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:9
+msgid ""
+"\n"
+"<p class=\"help\">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\").</p>\n"
msgstr ""
-#: utils/dates.py:19
-msgid "mar"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:19
+msgid "Documentation for this page"
msgstr ""
-#: utils/dates.py:19
-msgid "apr"
+#: 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 ""
-#: utils/dates.py:19
-msgid "may"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:22
+msgid "Show object ID"
msgstr ""
-#: utils/dates.py:19
-msgid "jun"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:23
+msgid ""
+"Shows the content-type and unique ID for pages that represent a single "
+"object."
msgstr ""
-#: utils/dates.py:20
-msgid "jul"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:25
+msgid "Edit this object (current window)"
msgstr ""
-#: utils/dates.py:20
-msgid "aug"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:26
+msgid "Jumps to the admin page for pages that represent a single object."
msgstr ""
-#: utils/dates.py:20
-msgid "sep"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:28
+msgid "Edit this object (new window)"
msgstr ""
-#: utils/dates.py:20
-msgid "oct"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:29
+msgid "As above, but opens the admin page in a new window."
msgstr ""
-#: utils/dates.py:20
-msgid "nov"
+#: contrib/admin/templates/admin/submit_line.html:3
+#: contrib/admin/templates/admin/delete_confirmation.html:9
+msgid "Delete"
msgstr ""
-#: utils/dates.py:20
-msgid "dec"
+#: contrib/admin/templates/admin/submit_line.html:4
+msgid "Save as new"
msgstr ""
-#: utils/dates.py:27
-msgid "Jan."
+#: contrib/admin/templates/admin/submit_line.html:5
+msgid "Save and add another"
msgstr ""
-#: utils/dates.py:27
-msgid "Feb."
+#: contrib/admin/templates/admin/submit_line.html:6
+msgid "Save and continue editing"
msgstr ""
-#: utils/dates.py:28
-msgid "Aug."
+#: contrib/admin/templates/admin/submit_line.html:7
+msgid "Save"
msgstr ""
-#: utils/dates.py:28
-msgid "Sept."
+#: contrib/admin/templates/admin/500.html:4
+msgid "Server error"
msgstr ""
-#: utils/dates.py:28
-msgid "Oct."
+#: contrib/admin/templates/admin/500.html:6
+msgid "Server error (500)"
msgstr ""
-#: utils/dates.py:28
-msgid "Nov."
+#: contrib/admin/templates/admin/500.html:9
+msgid "Server Error <em>(500)</em>"
msgstr ""
-#: utils/dates.py:28
-msgid "Dec."
+#: 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 ""
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] ""
-msgstr[1] ""
+#: contrib/admin/templates/admin/filter.html:2
+#, python-format
+msgid " By %(filter_title)s "
+msgstr ""
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] ""
-msgstr[1] ""
+#: contrib/admin/templates/admin/filters.html:4
+msgid "Filter"
+msgstr ""
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] ""
-msgstr[1] ""
+#: 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 ""
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] ""
-msgstr[1] ""
+#: contrib/admin/templates/admin/search_form.html:8
+msgid "Go"
+msgstr ""
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "1 result"
+msgid_plural "%(counter)s results"
msgstr[0] ""
msgstr[1] ""
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
+#: contrib/admin/templates/admin/search_form.html:10
+#, 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 ""
+
+#: contrib/admin/templates/admin/object_history.html:18
+msgid "Date/time"
+msgstr ""
+
+#: contrib/admin/templates/admin/object_history.html:19
+msgid "User"
+msgstr ""
+
+#: contrib/admin/templates/admin/object_history.html:20
+msgid "Action"
+msgstr ""
+
+#: contrib/admin/templates/admin/object_history.html:26
+msgid "DATE_WITH_TIME_FULL"
+msgstr "N j, Y, P"
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: contrib/admin/templates/admin/delete_confirmation.html:26
+msgid "Yes, I'm sure"
+msgstr ""
+
+#: 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 ""
+
+#: contrib/admin/templates/admin/change_form.html:15
+#: contrib/admin/templates/admin/index.html:28
+msgid "Add"
+msgstr ""
+
+#: contrib/admin/templates/admin/change_form.html:22
+msgid "View on site"
+msgstr ""
+
+#: 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] ""
msgstr[1] ""
-#: utils/translation/trans_real.py:362
-msgid "DATE_FORMAT"
-msgstr "N j, Y"
+#: contrib/admin/templates/admin/change_form.html:50
+msgid "Ordering"
+msgstr ""
-#: utils/translation/trans_real.py:363
-msgid "DATETIME_FORMAT"
-msgstr "N j, Y, P"
+#: contrib/admin/templates/admin/change_form.html:53
+msgid "Order:"
+msgstr ""
-#: utils/translation/trans_real.py:364
-msgid "TIME_FORMAT"
-msgstr "P"
+#: contrib/admin/templates/admin/base.html:25
+msgid "Welcome,"
+msgstr ""
-#: utils/translation/trans_real.py:380
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
+#: contrib/admin/templates/admin/404.html:4
+#: contrib/admin/templates/admin/404.html:8
+msgid "Page not found"
+msgstr ""
-#: utils/translation/trans_real.py:381
-msgid "MONTH_DAY_FORMAT"
-msgstr "F j"
+#: contrib/admin/templates/admin/404.html:10
+msgid "We're sorry, but the requested page could not be found."
+msgstr ""
-#: conf/global_settings.py:39
-msgid "Arabic"
+#: contrib/admin/templates/admin/login.html:25
+#: contrib/admin/views/decorators.py:24
+msgid "Log in"
msgstr ""
-#: conf/global_settings.py:40
-msgid "Bengali"
+#: contrib/admin/templates/admin/index.html:17
+#, python-format
+msgid "Models available in the %(name)s application."
msgstr ""
-#: conf/global_settings.py:41
-msgid "Czech"
+#: contrib/admin/templates/admin/index.html:18
+#, python-format
+msgid "%(name)s"
msgstr ""
-#: conf/global_settings.py:42
-msgid "Welsh"
+#: contrib/admin/templates/admin/index.html:34
+msgid "Change"
msgstr ""
-#: conf/global_settings.py:43
-msgid "Danish"
+#: contrib/admin/templates/admin/index.html:44
+msgid "You don't have permission to edit anything."
msgstr ""
-#: conf/global_settings.py:44
-msgid "German"
+#: contrib/admin/templates/admin/index.html:52
+msgid "Recent Actions"
msgstr ""
-#: conf/global_settings.py:45
-msgid "Greek"
+#: contrib/admin/templates/admin/index.html:53
+msgid "My Actions"
msgstr ""
-#: conf/global_settings.py:46
-msgid "English"
+#: contrib/admin/templates/admin/index.html:57
+msgid "None available"
msgstr ""
-#: conf/global_settings.py:47
-msgid "Spanish"
+#: contrib/admin/templates/admin/base_site.html:4
+msgid "Django site admin"
msgstr ""
-#: conf/global_settings.py:48
-msgid "Argentinean Spanish"
+#: contrib/admin/templates/admin/base_site.html:7
+msgid "Django administration"
msgstr ""
-#: conf/global_settings.py:49
-msgid "Finnish"
+#: 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 ""
-#: conf/global_settings.py:50
-msgid "French"
+#: contrib/admin/templates/admin/auth/user/add_form.html:12
+msgid "Username"
msgstr ""
-#: conf/global_settings.py:51
-msgid "Galician"
+#: contrib/admin/templates/admin/auth/user/add_form.html:18
+#: contrib/admin/templates/admin/auth/user/change_password.html:34
+msgid "Password"
msgstr ""
-#: conf/global_settings.py:52
-msgid "Hungarian"
+#: contrib/admin/templates/admin/auth/user/add_form.html:23
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+msgid "Password (again)"
msgstr ""
-#: conf/global_settings.py:53
-msgid "Hebrew"
+#: 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 ""
-#: conf/global_settings.py:54
-msgid "Icelandic"
+#: contrib/admin/templates/admin/auth/user/change_password.html:28
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
msgstr ""
-#: conf/global_settings.py:55
-msgid "Italian"
+#: contrib/admin/templates/widget/file.html:2
+msgid "Currently:"
msgstr ""
-#: conf/global_settings.py:56
-msgid "Japanese"
+#: contrib/admin/templates/widget/file.html:3
+msgid "Change:"
msgstr ""
-#: conf/global_settings.py:57
-msgid "Dutch"
+#: contrib/admin/templates/widget/date_time.html:3
+msgid "Date:"
msgstr ""
-#: conf/global_settings.py:58
-msgid "Norwegian"
+#: contrib/admin/templates/widget/date_time.html:4
+msgid "Time:"
msgstr ""
-#: conf/global_settings.py:59
-msgid "Brazilian"
+#: contrib/admin/templates/registration/logged_out.html:8
+msgid "Thanks for spending some quality time with the Web site today."
msgstr ""
-#: conf/global_settings.py:60
-msgid "Romanian"
+#: contrib/admin/templates/registration/logged_out.html:10
+msgid "Log in again"
msgstr ""
-#: conf/global_settings.py:61
-msgid "Russian"
+#: contrib/admin/templates/registration/password_reset_email.html:2
+msgid "You're receiving this e-mail because you requested a password reset"
msgstr ""
-#: conf/global_settings.py:62
-msgid "Slovak"
+#: contrib/admin/templates/registration/password_reset_email.html:3
+#, python-format
+msgid "for your user account at %(site_name)s"
msgstr ""
-#: conf/global_settings.py:63
-msgid "Slovenian"
+#: contrib/admin/templates/registration/password_reset_email.html:5
+#, python-format
+msgid "Your new password is: %(new_password)s"
msgstr ""
-#: conf/global_settings.py:64
-msgid "Serbian"
+#: contrib/admin/templates/registration/password_reset_email.html:7
+msgid "Feel free to change this password by going to this page:"
msgstr ""
-#: conf/global_settings.py:65
-msgid "Swedish"
+#: contrib/admin/templates/registration/password_reset_email.html:11
+msgid "Your username, in case you've forgotten:"
msgstr ""
-#: conf/global_settings.py:66
-msgid "Tamil"
+#: contrib/admin/templates/registration/password_reset_email.html:13
+msgid "Thanks for using our site!"
msgstr ""
-#: conf/global_settings.py:67
-msgid "Turkish"
+#: contrib/admin/templates/registration/password_reset_email.html:15
+#, python-format
+msgid "The %(site_name)s team"
msgstr ""
-#: conf/global_settings.py:68
-msgid "Ukrainian"
+#: 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 ""
-#: conf/global_settings.py:69
-msgid "Simplified Chinese"
+#: contrib/admin/templates/registration/password_reset_done.html:6
+#: contrib/admin/templates/registration/password_reset_done.html:10
+msgid "Password reset successful"
msgstr ""
-#: conf/global_settings.py:70
-msgid "Traditional Chinese"
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: contrib/admin/templates/registration/password_change_form.html:17
+msgid "Old password:"
+msgstr ""
+
+#: contrib/admin/templates/registration/password_change_form.html:19
+msgid "New password:"
+msgstr ""
+
+#: contrib/admin/templates/registration/password_change_form.html:21
+msgid "Confirm password:"
+msgstr ""
+
+#: contrib/admin/templates/registration/password_change_form.html:23
+msgid "Change my password"
+msgstr ""
+
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
+msgid "Password change successful"
+msgstr ""
+
+#: contrib/admin/templates/registration/password_change_done.html:12
+msgid "Your password was changed."
+msgstr ""
+
+#: 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 ""
+
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "E-mail address:"
+msgstr ""
+
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "Reset my password"
+msgstr ""
+
+#: contrib/admin/views/main.py:223
+msgid "Site administration"
+msgstr ""
+
+#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:19
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr ""
+
+#: 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 ""
+
+#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
+#, python-format
+msgid "You may add another %s below."
+msgstr ""
+
+#: contrib/admin/views/main.py:289
+#, python-format
+msgid "Add %s"
+msgstr ""
+
+#: contrib/admin/views/main.py:335
+#, python-format
+msgid "Added %s."
+msgstr ""
+
+#: contrib/admin/views/main.py:337
+#, python-format
+msgid "Changed %s."
+msgstr ""
+
+#: contrib/admin/views/main.py:339
+#, python-format
+msgid "Deleted %s."
+msgstr ""
+
+#: contrib/admin/views/main.py:342
+msgid "No fields changed."
+msgstr ""
+
+#: contrib/admin/views/main.py:345
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr ""
+
+#: contrib/admin/views/main.py:353
+#, python-format
+msgid ""
+"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr ""
+
+#: contrib/admin/views/main.py:391
+#, python-format
+msgid "Change %s"
+msgstr ""
+
+#: 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:481
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr ""
+
+#: contrib/admin/views/main.py:514
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr ""
+
+#: contrib/admin/views/main.py:517
+msgid "Are you sure?"
+msgstr ""
+
+#: contrib/admin/views/main.py:539
+#, python-format
+msgid "Change history: %s"
+msgstr ""
+
+#: contrib/admin/views/main.py:573
+#, python-format
+msgid "Select %s"
+msgstr ""
+
+#: contrib/admin/views/main.py:573
+#, python-format
+msgid "Select %s to change"
+msgstr ""
+
+#: contrib/admin/views/main.py:768
+msgid "Database error"
+msgstr ""
+
+#: contrib/admin/views/decorators.py:62
+msgid ""
+"Please log in again, because your session has expired. Don't worry: Your "
+"submission has been saved."
+msgstr ""
+
+#: contrib/admin/views/decorators.py:69
+msgid ""
+"Looks like your browser isn't configured to accept cookies. Please enable "
+"cookies, reload this page, and try again."
+msgstr ""
+
+#: contrib/admin/views/decorators.py:83
+msgid "Usernames cannot contain the '@' character."
+msgstr ""
+
+#: contrib/admin/views/decorators.py:85
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr ""
+
+#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
+#: contrib/admin/views/doc.py:50
+msgid "tag:"
+msgstr ""
+
+#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
+#: contrib/admin/views/doc.py:81
+msgid "filter:"
+msgstr ""
+
+#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
+#: contrib/admin/views/doc.py:139
+msgid "view:"
+msgstr ""
+
+#: contrib/admin/views/doc.py:164
+#, python-format
+msgid "App %r not found"
+msgstr ""
+
+#: contrib/admin/views/doc.py:171
+#, python-format
+msgid "Model %(name)r not found in app %(label)r"
+msgstr ""
+
+#: contrib/admin/views/doc.py:183
+#, python-format
+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
+msgid "model:"
+msgstr ""
+
+#: contrib/admin/views/doc.py:214
+#, python-format
+msgid "related `%(label)s.%(name)s` objects"
+msgstr ""
+
+#: contrib/admin/views/doc.py:219
+#, python-format
+msgid "all %s"
+msgstr ""
+
+#: contrib/admin/views/doc.py:224
+#, python-format
+msgid "number of %s"
+msgstr ""
+
+#: contrib/admin/views/doc.py:229
+#, python-format
+msgid "Fields on %s objects"
+msgstr ""
+
+#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
+#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
+#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
+msgid "Integer"
+msgstr ""
+
+#: contrib/admin/views/doc.py:292
+msgid "Boolean (Either True or False)"
+msgstr ""
+
+#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
+#, python-format
+msgid "String (up to %(maxlength)s)"
+msgstr ""
+
+#: contrib/admin/views/doc.py:294
+msgid "Comma-separated integers"
+msgstr ""
+
+#: contrib/admin/views/doc.py:295
+msgid "Date (without time)"
+msgstr ""
+
+#: contrib/admin/views/doc.py:296
+msgid "Date (with time)"
+msgstr ""
+
+#: contrib/admin/views/doc.py:297
+msgid "E-mail address"
+msgstr ""
+
+#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:302
+msgid "File path"
+msgstr ""
+
+#: contrib/admin/views/doc.py:300
+msgid "Decimal number"
+msgstr ""
+
+#: contrib/admin/views/doc.py:306
+msgid "Boolean (Either True, False or None)"
+msgstr ""
+
+#: contrib/admin/views/doc.py:307
+msgid "Relation to parent model"
+msgstr ""
+
+#: contrib/admin/views/doc.py:308
+msgid "Phone number"
+msgstr ""
+
+#: contrib/admin/views/doc.py:313
+msgid "Text"
+msgstr ""
+
+#: contrib/admin/views/doc.py:314
+msgid "Time"
+msgstr ""
+
+#: contrib/admin/views/doc.py:316
+msgid "U.S. state (two uppercase letters)"
+msgstr ""
+
+#: contrib/admin/views/doc.py:317
+msgid "XML text"
+msgstr ""
+
+#: contrib/admin/views/doc.py:343
+#, python-format
+msgid "%s does not appear to be a urlpattern object"
+msgstr ""
+
+#: contrib/admin/views/auth.py:30
+msgid "Add user"
+msgstr ""
+
+#: contrib/admin/views/auth.py:57
+msgid "Password changed successfully."
+msgstr ""
+
+#: contrib/admin/views/auth.py:64
+#, python-format
+msgid "Change password: %s"
+msgstr ""
+
+#: newforms/fields.py:103 newforms/fields.py:256
+#, python-format
+msgid "Ensure this value has at most %d characters."
+msgstr ""
+
+#: newforms/fields.py:105 newforms/fields.py:258
+#, python-format
+msgid "Ensure this value has at least %d characters."
+msgstr ""
+
+#: newforms/fields.py:128 core/validators.py:120
+msgid "Enter a whole number."
+msgstr ""
+
+#: newforms/fields.py:130
+#, python-format
+msgid "Ensure this value is less than or equal to %s."
+msgstr ""
+
+#: newforms/fields.py:132
+#, python-format
+msgid "Ensure this value is greater than or equal to %s."
+msgstr ""
+
+#: newforms/fields.py:165
+msgid "Enter a valid date."
+msgstr ""
+
+#: newforms/fields.py:192
+msgid "Enter a valid time."
+msgstr ""
+
+#: newforms/fields.py:228
+msgid "Enter a valid date/time."
+msgstr ""
+
+#: newforms/fields.py:242
+msgid "Enter a valid value."
+msgstr ""
+
+#: newforms/fields.py:271 core/validators.py:162
+msgid "Enter a valid e-mail address."
+msgstr ""
+
+#: newforms/fields.py:289 newforms/fields.py:311
+msgid "Enter a valid URL."
+msgstr ""
+
+#: newforms/fields.py:313
+msgid "This URL appears to be a broken link."
+msgstr ""
+
+#: newforms/fields.py:362 newforms/models.py:165
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr ""
+
+#: newforms/fields.py:380 newforms/fields.py:456 newforms/models.py:182
+msgid "Enter a list of values."
msgstr ""
-#: core/validators.py:63
+#: newforms/fields.py:389 newforms/models.py:188
+#, python-format
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr ""
+
+#: template/defaultfilters.py:491
+msgid "yes,no,maybe"
+msgstr ""
+
+#: views/generic/create_update.py:43
+#, python-format
+msgid "The %(verbose_name)s was created successfully."
+msgstr ""
+
+#: views/generic/create_update.py:117
+#, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr ""
+
+#: views/generic/create_update.py:184
+#, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr ""
+
+#: 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:71
+#: core/validators.py:72
msgid "This value must contain only letters, numbers, underscores or hyphens."
msgstr ""
-#: core/validators.py:75
+#: 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 ""
-#: 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:138
+#: core/validators.py:139
msgid "Year must be 1900 or later."
msgstr ""
-#: core/validators.py:142
+#: core/validators.py:143
#, python-format
-msgid "Invalid date: %s."
-msgstr ""
-
-#: core/validators.py:146 db/models/fields/__init__.py:415
-msgid "Enter a valid date in YYYY-MM-DD format."
+msgid "Invalid date: %s"
msgstr ""
-#: core/validators.py:151
+#: core/validators.py:153
msgid "Enter a valid time in HH:MM format."
msgstr ""
-#: core/validators.py:155 db/models/fields/__init__.py:477
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr ""
-
-#: core/validators.py:160
-msgid "Enter a valid e-mail address."
-msgstr ""
-
-#: core/validators.py:172 core/validators.py:401 forms/__init__.py:661
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-
-#: core/validators.py:176
+#: 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:183
+#: core/validators.py:185
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr ""
-#: core/validators.py:187
+#: core/validators.py:189
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
-#: core/validators.py:195
+#: core/validators.py:197
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr ""
-#: core/validators.py:199
+#: core/validators.py:201
msgid "A valid URL is required."
msgstr ""
-#: core/validators.py:213
+#: core/validators.py:215
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
-#: core/validators.py:220
+#: core/validators.py:222
#, python-format
msgid "Badly formed XML: %s"
msgstr ""
-#: core/validators.py:230
+#: core/validators.py:239
#, python-format
msgid "Invalid URL: %s"
msgstr ""
-#: core/validators.py:234 core/validators.py:236
+#: core/validators.py:244 core/validators.py:246
#, python-format
msgid "The URL %s is a broken link."
msgstr ""
-#: core/validators.py:242
+#: core/validators.py:252
msgid "Enter a valid U.S. state abbreviation."
msgstr ""
-#: core/validators.py:256
+#: 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] ""
msgstr[1] ""
-#: core/validators.py:263
+#: core/validators.py:273
#, python-format
msgid "This field must match the '%s' field."
msgstr ""
-#: core/validators.py:282
+#: core/validators.py:292
msgid "Please enter something for at least one field."
msgstr ""
-#: core/validators.py:291 core/validators.py:302
+#: core/validators.py:301 core/validators.py:312
msgid "Please enter both fields or leave them both empty."
msgstr ""
-#: core/validators.py:309
+#: core/validators.py:320
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr ""
-#: core/validators.py:321
+#: core/validators.py:333
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr ""
-#: core/validators.py:340
+#: core/validators.py:352
msgid "Duplicate values are not allowed."
msgstr ""
-#: core/validators.py:363
+#: core/validators.py:367
+#, python-format
+msgid "This value must be between %(lower)s and %(upper)s."
+msgstr ""
+
+#: core/validators.py:369
+#, python-format
+msgid "This value must be at least %s."
+msgstr ""
+
+#: core/validators.py:371
+#, python-format
+msgid "This value must be no more than %s."
+msgstr ""
+
+#: core/validators.py:407
#, python-format
msgid "This value must be a power of %s."
msgstr ""
-#: core/validators.py:374
+#: core/validators.py:418
msgid "Please enter a valid decimal number."
msgstr ""
-#: core/validators.py:378
+#: core/validators.py:422
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@@ -1903,7 +2556,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: core/validators.py:381
+#: core/validators.py:425
#, python-format
msgid ""
"Please enter a valid decimal number with a whole part of at most %s digit."
@@ -1912,7 +2565,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: core/validators.py:384
+#: core/validators.py:428
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@@ -1920,178 +2573,73 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: core/validators.py:394
+#: core/validators.py:438
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr ""
-#: core/validators.py:395
+#: core/validators.py:439
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr ""
-#: core/validators.py:412
+#: core/validators.py:456
msgid "The format for this field is wrong."
msgstr ""
-#: core/validators.py:427
+#: core/validators.py:471
msgid "This field is invalid."
msgstr ""
-#: core/validators.py:463
+#: core/validators.py:507
#, python-format
msgid "Could not retrieve anything from %s."
msgstr ""
-#: core/validators.py:466
+#: core/validators.py:510
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
-#: core/validators.py:499
+#: core/validators.py:543
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
-#: core/validators.py:503
+#: 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 ""
-#: core/validators.py:508
+#: core/validators.py:552
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
-#: core/validators.py:513
+#: core/validators.py:557
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
-#: core/validators.py:517
+#: 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 ""
-#: core/validators.py:522
+#: 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 ""
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr ""
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr ""
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr ""
-
-#: db/models/manipulators.py:302
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-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:551 db/models/fields/__init__.py:562
-#: forms/__init__.py:346
-msgid "This field is required."
-msgstr ""
-
-#: db/models/fields/__init__.py:340
-msgid "This value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:372
-msgid "This value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:388
-msgid "This field cannot be null."
-msgstr ""
-
-#: db/models/fields/__init__.py:571
-msgid "Enter a valid filename."
-msgstr ""
-
-#: db/models/fields/related.py:51
-#, python-format
-msgid "Please enter a valid %s."
-msgstr ""
-
-#: db/models/fields/related.py:618
-msgid "Separate multiple IDs with commas."
-msgstr ""
-
-#: db/models/fields/related.py:620
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-
-#: db/models/fields/related.py:664
-#, 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:381
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/__init__.py:386
-msgid "Line breaks are not allowed here."
-msgstr ""
-
-#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr ""
-
-#: forms/__init__.py:663
-msgid "The submitted file is empty."
-msgstr ""
-
-#: forms/__init__.py:719
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr ""
-
-#: forms/__init__.py:729
-msgid "Enter a positive number."
-msgstr ""
-
-#: forms/__init__.py:739
-msgid "Enter a whole number between 0 and 32,767."
-msgstr ""
-
-#: template/defaultfilters.py:401
-msgid "yes,no,maybe"
-msgstr ""
diff --git a/django/conf/locale/pt_BR/LC_MESSAGES/django.mo b/django/conf/locale/pt_BR/LC_MESSAGES/django.mo
index 7f506f972f..6e3af1681c 100644
--- a/django/conf/locale/pt_BR/LC_MESSAGES/django.mo
+++ b/django/conf/locale/pt_BR/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/pt_BR/LC_MESSAGES/django.po b/django/conf/locale/pt_BR/LC_MESSAGES/django.po
index bc955f29c4..540d1b51bb 100644
--- a/django/conf/locale/pt_BR/LC_MESSAGES/django.po
+++ b/django/conf/locale/pt_BR/LC_MESSAGES/django.po
@@ -1,21 +1,1022 @@
# Português do Brasil translation of django.
# Copyright (C) 2006 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-# João Marcus Christ <joaoma@gmail.com>, 2006.
-# Carlos Eduardo de Paula <carlosedp@gmail.com>, 2006.
#
msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 10:11+0200\n"
-"PO-Revision-Date: 2006-11-01 17:45-0300\n"
-"Last-Translator: Carlos Eduardo de Paula <carlosedp@gmail.com>\n"
+"POT-Creation-Date: 2007-03-28 12:02-0300\n"
+"PO-Revision-Date: 2007-04-02 17:20+0200\n"
+"Last-Translator: Daniel Alves Barbosa de Oliveira Vaz <danielvaz@gmail.com>\n"
"Language-Team: Português do Brasil <pt-br@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+#: oldforms/__init__.py:357 db/models/fields/__init__.py:117
+#: db/models/fields/__init__.py:274 db/models/fields/__init__.py:610
+#: db/models/fields/__init__.py:621 newforms/models.py:177
+#: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450
+#: newforms/fields.py:461
+msgid "This field is required."
+msgstr "Este campo é requerido."
+
+#: oldforms/__init__.py:392
+#, fuzzy, python-format
+msgid "Ensure your text is less than %s character."
+msgid_plural "Ensure your text is less than %s characters."
+msgstr[0] "Certifique-se de que seu texto tenha menos que %s caractere."
+msgstr[1] "Certifique-se de que seu texto tenha menos que %s caracteres."
+
+#: oldforms/__init__.py:397
+msgid "Line breaks are not allowed here."
+msgstr "Não são permitidas quebras de linha aqui."
+
+#: 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 "Selecione uma escolha válida; '%(data)s' não está em %(choices)s."
+
+#: oldforms/__init__.py:577 newforms/widgets.py:170
+#: contrib/admin/filterspecs.py:150
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: oldforms/__init__.py:577 newforms/widgets.py:170
+#: contrib/admin/filterspecs.py:143
+msgid "Yes"
+msgstr "Sim"
+
+#: oldforms/__init__.py:577 newforms/widgets.py:170
+#: contrib/admin/filterspecs.py:143
+msgid "No"
+msgstr "Não"
+
+#: 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 "Nenhum arquivo enviado. Verifique o tipo de codificação do formulário."
+
+#: oldforms/__init__.py:674
+msgid "The submitted file is empty."
+msgstr "O arquivo enviado está vazio."
+
+#: oldforms/__init__.py:730
+msgid "Enter a whole number between -32,768 and 32,767."
+msgstr "Informe um número inteiro entre -32.768 e 32.767"
+
+#: oldforms/__init__.py:740
+msgid "Enter a positive number."
+msgstr "Informe um número positivo"
+
+#: oldforms/__init__.py:750
+msgid "Enter a whole number between 0 and 32,767."
+msgstr "Informe um número inteiro entre 0 e 32.767."
+
+#: db/models/manipulators.py:307
+#, python-format
+msgid "%(object)s with this %(type)s already exists for the given %(field)s."
+msgstr "%(object)s com este %(type)s já existe para o %(field)s dado."
+
+#: 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 "e"
+
+#: db/models/fields/__init__.py:42
+#, python-format
+msgid "%(optname)s with this %(fieldname)s already exists."
+msgstr "%(optname)s com este %(fieldname)s já existe."
+
+#: db/models/fields/__init__.py:367
+#, fuzzy
+msgid "This value must be an integer."
+msgstr "Este valor deve ser um inteiro."
+
+#: db/models/fields/__init__.py:402
+#, fuzzy
+msgid "This value must be either True or False."
+msgstr "Este valor deve ser Verdadeiro ou Falso."
+
+#: db/models/fields/__init__.py:423
+#, fuzzy
+msgid "This field cannot be null."
+msgstr "Este campo não pode ser nulo."
+
+#: db/models/fields/__init__.py:457 core/validators.py:148
+msgid "Enter a valid date in YYYY-MM-DD format."
+msgstr "Informe uma data válida no formato AAAA-MM-DD."
+
+#: db/models/fields/__init__.py:526 core/validators.py:157
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
+msgstr "Informe uma data/hora válida no formato AAAA-MM-DD HH:MM."
+
+#: db/models/fields/__init__.py:630
+msgid "Enter a valid filename."
+msgstr "Informe um nome de arquivo válido."
+
+#: db/models/fields/__init__.py:751
+#, fuzzy
+msgid "This value must be either None, True or False."
+msgstr "Este valor deve ser Verdadeiro ou Falso."
+
+#: db/models/fields/related.py:53
+#, python-format
+msgid "Please enter a valid %s."
+msgstr "Por favor informe um %s válido."
+
+#: db/models/fields/related.py:642
+#, fuzzy
+msgid "Separate multiple IDs with commas."
+msgstr "Separe IDs múltiplos com vírgulas."
+
+#: db/models/fields/related.py:644
+#, fuzzy
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr ""
+" Mantenha pressionado \"Control\", ou \"Command\" no Mac para selecionar "
+"mais de uma opção."
+
+#: db/models/fields/related.py:691
+#, fuzzy, 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] ""
+"Por favor, entre IDs válidos para %(self)s. O valor %(value)r é inválido."
+msgstr[1] ""
+"Por favor, entre IDs válidos para %(self)s. Os valores %(value)r são "
+"inválidos."
+
+#: conf/global_settings.py:39
+msgid "Arabic"
+msgstr "Arábico"
+
+#: conf/global_settings.py:40
+msgid "Bengali"
+msgstr "Bengalês"
+
+#: conf/global_settings.py:41
+#, fuzzy
+msgid "Catalan"
+msgstr "Catalão"
+
+#: conf/global_settings.py:42
+msgid "Czech"
+msgstr "Tcheco"
+
+#: conf/global_settings.py:43
+msgid "Welsh"
+msgstr ""
+
+#: conf/global_settings.py:44
+#, fuzzy
+msgid "Danish"
+msgstr "Dinamarquês"
+
+#: conf/global_settings.py:45
+msgid "German"
+msgstr "Alemão"
+
+#: conf/global_settings.py:46
+msgid "Greek"
+msgstr "Grego"
+
+#: conf/global_settings.py:47
+msgid "English"
+msgstr "Inglês"
+
+#: conf/global_settings.py:48
+msgid "Spanish"
+msgstr "Espanhol"
+
+#: conf/global_settings.py:49
+msgid "Argentinean Spanish"
+msgstr "Espanhol Argentino"
+
+#: conf/global_settings.py:50
+#, fuzzy
+msgid "Finnish"
+msgstr "Dinamarquês"
+
+#: conf/global_settings.py:51
+msgid "French"
+msgstr "Francês"
+
+#: conf/global_settings.py:52
+msgid "Galician"
+msgstr "Galiciano"
+
+#: conf/global_settings.py:53
+msgid "Hungarian"
+msgstr "Húngaro"
+
+#: conf/global_settings.py:54
+msgid "Hebrew"
+msgstr "Hebraico"
+
+#: conf/global_settings.py:55
+msgid "Icelandic"
+msgstr "Islandês"
+
+#: conf/global_settings.py:56
+msgid "Italian"
+msgstr "Italiano"
+
+#: conf/global_settings.py:57
+msgid "Japanese"
+msgstr "Japonês"
+
+#: conf/global_settings.py:58
+#, fuzzy
+msgid "Kannada"
+msgstr ""
+
+#: conf/global_settings.py:59
+msgid "Latvian"
+msgstr ""
+
+#: conf/global_settings.py:60
+msgid "Macedonian"
+msgstr "Macedônio"
+
+#: conf/global_settings.py:61
+msgid "Dutch"
+msgstr "Alemão"
+
+#: conf/global_settings.py:62
+msgid "Norwegian"
+msgstr "Norueguês"
+
+#: conf/global_settings.py:63
+#, fuzzy
+msgid "Polish"
+msgstr "Polônia"
+
+#: conf/global_settings.py:64
+msgid "Portugese"
+msgstr "Português"
+
+#: conf/global_settings.py:65
+msgid "Brazilian"
+msgstr "Brasileiro"
+
+#: conf/global_settings.py:66
+msgid "Romanian"
+msgstr "Romeno"
+
+#: conf/global_settings.py:67
+msgid "Russian"
+msgstr "Russo"
+
+#: conf/global_settings.py:68
+msgid "Slovak"
+msgstr "Eslovaco"
+
+#: conf/global_settings.py:69
+#, fuzzy
+msgid "Slovenian"
+msgstr "Esloveno"
+
+#: conf/global_settings.py:70
+msgid "Serbian"
+msgstr "Sérvio"
+
+#: conf/global_settings.py:71
+msgid "Swedish"
+msgstr "Sueco"
+
+#: conf/global_settings.py:72
+msgid "Tamil"
+msgstr ""
+
+#: conf/global_settings.py:73
+msgid "Telugu"
+msgstr ""
+
+#: conf/global_settings.py:74
+msgid "Turkish"
+msgstr "Turco"
+
+#: conf/global_settings.py:75
+#, fuzzy
+msgid "Ukrainian"
+msgstr "Ucraniano"
+
+#: conf/global_settings.py:76
+msgid "Simplified Chinese"
+msgstr "Chinês Simplificado"
+
+#: conf/global_settings.py:77
+msgid "Traditional Chinese"
+msgstr "Chinês Tradicional"
+
+#: core/validators.py:64
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Este valor deve conter apenas letras, números e sublinhados (_)."
+
+#: core/validators.py:68
+#, fuzzy
+msgid ""
+"This value must contain only letters, numbers, underscores, dashes or "
+"slashes."
+msgstr "Este valor deve conter apenas letras, números, sublinhados (_), "
+"pontos e barras (/)."
+
+#: core/validators.py:72
+#, fuzzy
+msgid "This value must contain only letters, numbers, underscores or hyphens."
+msgstr "Este valor deve conter apenas letras, números, sublinhados (_) e "
+"hífens (-)."
+
+#: core/validators.py:76
+msgid "Uppercase letters are not allowed here."
+msgstr "Letras em maiúsculo não são permitidas aqui."
+
+#: core/validators.py:80
+msgid "Lowercase letters are not allowed here."
+msgstr "Letras em minúsculo não são permitidas aqui."
+
+#: core/validators.py:87
+msgid "Enter only digits separated by commas."
+msgstr "Informe apenas dígitos separados por vírgulas."
+
+#: core/validators.py:99
+msgid "Enter valid e-mail addresses separated by commas."
+msgstr "Informe endereços de email válidos separados por vírgulas."
+
+#: core/validators.py:103
+msgid "Please enter a valid IP address."
+msgstr "Informe um endereço IP válido."
+
+#: core/validators.py:107
+msgid "Empty values are not allowed here."
+msgstr "Valores em branco não são permitidos."
+
+#: core/validators.py:111
+msgid "Non-numeric characters aren't allowed here."
+msgstr "Caracteres não numéricos não são permitidos."
+
+#: core/validators.py:115
+msgid "This value can't be comprised solely of digits."
+msgstr "Este valor não pode conter apenas dígitos."
+
+#: core/validators.py:120 newforms/fields.py:126
+msgid "Enter a whole number."
+msgstr "Informe um número completo."
+
+#: core/validators.py:124
+msgid "Only alphabetical characters are allowed here."
+msgstr "Apenas caracteres do alfabeto são permitidos aqui."
+
+#: core/validators.py:139
+msgid "Year must be 1900 or later."
+msgstr "O ano deve ser superior a 1900"
+
+#: core/validators.py:143
+#, fuzzy, python-format
+msgid "Invalid date: %s"
+msgstr "Data inválida: %s"
+
+#: core/validators.py:153
+msgid "Enter a valid time in HH:MM format."
+msgstr "Informe uma hora válida no formato HH:MM."
+
+#: core/validators.py:162 newforms/fields.py:269
+msgid "Enter a valid e-mail address."
+msgstr "Informe um endereço de email válido."
+
+#: core/validators.py:178
+msgid ""
+"Upload a valid image. The file you uploaded was either not an image or a "
+"corrupted image."
+msgstr ""
+"Envie uma imagem válida. O arquivo enviado não é uma imagem ou está "
+"corrompido."
+
+#: core/validators.py:185
+#, python-format
+msgid "The URL %s does not point to a valid image."
+msgstr "A URL %s não aponta para uma imagem válida."
+
+#: core/validators.py:189
+#, python-format
+msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
+msgstr ""
+"Números de telefone devem estar no formato XXX-XXX-XXXX.\"%s\" é inválido."
+
+#: core/validators.py:197
+#, python-format
+msgid "The URL %s does not point to a valid QuickTime video."
+msgstr "A URL %s não aponta para um vídeo QuickTime válido."
+
+#: core/validators.py:201
+msgid "A valid URL is required."
+msgstr "Uma URL válida é exigida."
+
+#: core/validators.py:215
+#, python-format
+msgid ""
+"Valid HTML is required. Specific errors are:\n"
+"%s"
+msgstr ""
+"HTML válido é exigido. Os erros específicos são:\n"
+"%s"
+
+#: core/validators.py:222
+#, python-format
+msgid "Badly formed XML: %s"
+msgstr "XML mal formado: %s"
+
+#: core/validators.py:239
+#, python-format
+msgid "Invalid URL: %s"
+msgstr "URL inválida: %s"
+
+#: core/validators.py:244 core/validators.py:246
+#, python-format
+msgid "The URL %s is a broken link."
+msgstr "A URL %s é um link quebrado."
+
+#: core/validators.py:252
+msgid "Enter a valid U.S. state abbreviation."
+msgstr "Informe uma abreviação válida de estado dos E.U.A."
+
+#: core/validators.py:266
+#, fuzzy, 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] "Olha sua boca! A palavra %s não é permitida aqui."
+msgstr[1] "Olha sua boca! As palavras %s não são permitidas aqui."
+
+#: core/validators.py:273
+#, python-format
+msgid "This field must match the '%s' field."
+msgstr "Este campo deve casar com o campo '%s'."
+
+#: core/validators.py:292
+msgid "Please enter something for at least one field."
+msgstr "Informe algo em pelo menos um campo."
+
+#: core/validators.py:301 core/validators.py:312
+msgid "Please enter both fields or leave them both empty."
+msgstr "Informe ambos os campos ou deixe ambos vazios."
+
+#: core/validators.py:320
+#, python-format
+msgid "This field must be given if %(field)s is %(value)s"
+msgstr "Este campo deve ser informado se o campo %(field)s for %(value)s."
+
+#: core/validators.py:333
+#, python-format
+msgid "This field must be given if %(field)s is not %(value)s"
+msgstr "Este campo deve ser dado se o campo %(field)s não for %(value)s."
+
+#: core/validators.py:352
+msgid "Duplicate values are not allowed."
+msgstr "Valores duplicados não são permitidos."
+
+#: core/validators.py:367
+#, fuzzy, python-format
+msgid "This value must be between %(lower)s and %(upper)s."
+msgstr "Este valor deve estar entre %(lower)s e %(upper)s."
+
+#: core/validators.py:369
+#, fuzzy, python-format
+msgid "This value must be at least %s."
+msgstr "Este valor deve ser no mínimo %s."
+
+#: core/validators.py:371
+#, fuzzy, python-format
+msgid "This value must be no more than %s."
+msgstr "Este valor não deve ser maior que %s."
+
+#: core/validators.py:407
+#, python-format
+msgid "This value must be a power of %s."
+msgstr "Este valor deve ser uma potência de %s."
+
+#: core/validators.py:418
+msgid "Please enter a valid decimal number."
+msgstr "Informe um número decimal válido."
+
+#: core/validators.py:422
+#, fuzzy, 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] "Por favor entre com um número decimal com no máximo %s dígito."
+msgstr[1] "Por favor entre com um número decimal com no máximo %s dígitos."
+
+#: core/validators.py:425
+#, 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] ""
+"Por favor informe um número decimal com a parte inteira de no máximo %s "
+"digito."
+msgstr[1] ""
+"Por favor informe um número decimal com a parte inteira de no máximo %s "
+"digitos."
+
+#: core/validators.py:428
+#, fuzzy, 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] "Por favor informe um número decimal com no máximo %s casa decimal."
+msgstr[1] "Por favor informe um número decimal com no máximo %s casas "
+"decimais."
+
+#: core/validators.py:438
+#, python-format
+msgid "Make sure your uploaded file is at least %s bytes big."
+msgstr "Verifique se o arquivo enviado tem pelo menos %s bytes."
+
+#: core/validators.py:439
+#, python-format
+msgid "Make sure your uploaded file is at most %s bytes big."
+msgstr "Verifique se o arquivo enviado tem no máximo %s bytes."
+
+#: core/validators.py:456
+msgid "The format for this field is wrong."
+msgstr "O formato deste campo está errado."
+
+#: core/validators.py:471
+msgid "This field is invalid."
+msgstr "Este campo é inválido."
+
+#: core/validators.py:507
+#, python-format
+msgid "Could not retrieve anything from %s."
+msgstr "Não foi possível receber dados de %s."
+
+#: core/validators.py:510
+#, python-format
+msgid ""
+"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
+msgstr ""
+"A URL %(url)s retornou um cabeçalho '%(contenttype)s' de Content-Type "
+"inválido."
+
+#: core/validators.py:543
+#, python-format
+msgid ""
+"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
+"\"%(start)s\".)"
+msgstr ""
+"Por favor, feche a tag %(tag)s na linha %(line)s. (A linha começa com \"%"
+"(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 ""
+"Algum texto começando na linha %(line)s não é permitido no contexto. (Linha "
+"começa com \"%(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\" na linha %(line)s não é um atributo válido. (Linha começa com "
+"\"%(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>\" na linha %(line)s é uma tag inválida. (Linha começa com \"%"
+"(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 ""
+"Uma tag na linha %(line)s não apresenta um ou mais atributos exigidos."
+"(Linha começa com \"%(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 ""
+"O atributo \"%(attr)s\" na linha %(line)s tem um valor inválido. (Linha "
+"começa com \"%(start)s\".)"
+
+#: views/generic/create_update.py:43
+#, fuzzy, python-format
+msgid "The %(verbose_name)s was created successfully."
+msgstr "O(A) %(verbose_name)s foi criado com sucesso."
+
+#: views/generic/create_update.py:117
+#, fuzzy, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr "O(A) %(verbose_name)s foi modificado com sucesso."
+
+#: views/generic/create_update.py:184
+#, fuzzy, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr "O(A) %(verbose_name)s foi excluído."
+
+#: newforms/models.py:164 newforms/fields.py:360
+#, fuzzy
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "Selecione uma escolha válida. Tal escolha não é uma das escolhas "
+"disponíveis."
+
+#: newforms/models.py:181 newforms/fields.py:378 newforms/fields.py:454
+#, fuzzy
+msgid "Enter a list of values."
+msgstr "Informe uma lista ou tupla de valores."
+
+#: newforms/models.py:187 newforms/fields.py:387
+#, fuzzy, python-format
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr "Selecione uma escolha válida. %s não é uma das escolhas disponíveis."
+
+#: newforms/fields.py:101 newforms/fields.py:254
+#, fuzzy, python-format
+msgid "Ensure this value has at most %d characters."
+msgstr "Certifique-se de que seu texto tenha menos que %d caracteres."
+
+#: newforms/fields.py:103 newforms/fields.py:256
+#, python-format
+msgid "Ensure this value has at least %d characters."
+msgstr "Certifique-se de que seu texto tenha no mínimo %d caracteres."
+
+#: newforms/fields.py:128
+#, fuzzy, python-format
+msgid "Ensure this value is less than or equal to %s."
+msgstr "Certifique-se que este valor seja menor ou igual a %s."
+
+#: newforms/fields.py:130
+#, python-format
+msgid "Ensure this value is greater than or equal to %s."
+msgstr "Certifique-se que este valor seja maior ou igual a %s."
+
+#: newforms/fields.py:163
+#, fuzzy
+msgid "Enter a valid date."
+msgstr "Informe uma data válida."
+
+#: newforms/fields.py:190
+#, fuzzy
+msgid "Enter a valid time."
+msgstr "Informe uma hora válida."
+
+#: newforms/fields.py:226
+#, fuzzy
+msgid "Enter a valid date/time."
+msgstr "Informe uma data/hora válida."
+
+#: newforms/fields.py:240
+#, fuzzy
+msgid "Enter a valid value."
+msgstr "Informe um valor válido."
+
+#: newforms/fields.py:287 newforms/fields.py:309
+#, fuzzy
+msgid "Enter a valid URL."
+msgstr "Informe uma URL válida."
+
+#: newforms/fields.py:311
+#, fuzzy
+msgid "This URL appears to be a broken link."
+msgstr "A URL %s parece ser um link quebrado."
+
+#: contrib/contenttypes/models.py:36
+#, fuzzy
+msgid "python model class name"
+msgstr "nome da classe model no python"
+
+#: contrib/contenttypes/models.py:39
+msgid "content type"
+msgstr "tipo de conteúdo"
+
+#: contrib/contenttypes/models.py:40
+msgid "content types"
+msgstr "tipos de conteúdo"
+
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "th"
+msgstr "º"
+
+#: contrib/humanize/templatetags/humanize.py:17
+#, fuzzy
+msgid "st"
+msgstr "º"
+
+#: contrib/humanize/templatetags/humanize.py:17
+#, fuzzy
+msgid "nd"
+msgstr "º"
+
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "rd"
+msgstr "º"
+
+#: contrib/humanize/templatetags/humanize.py:47
+#, python-format
+msgid "%(value).1f million"
+msgid_plural "%(value).1f million"
+msgstr[0] "milhão"
+msgstr[1] "milhões"
+
+#: contrib/humanize/templatetags/humanize.py:50
+#, python-format
+msgid "%(value).1f billion"
+msgid_plural "%(value).1f billion"
+msgstr[0] "%(value).1f bilhão"
+msgstr[1] "%(value).1f bilhões"
+
+#: contrib/humanize/templatetags/humanize.py:53
+#, python-format
+msgid "%(value).1f trillion"
+msgid_plural "%(value).1f trillion"
+msgstr[0] "%(value).1f trilhão"
+msgstr[1] "%(value).1f trilhões"
+
+#: contrib/humanize/templatetags/humanize.py:68
+#, fuzzy
+msgid "one"
+msgstr "um"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "two"
+msgstr "dois"
+
+#: contrib/humanize/templatetags/humanize.py:68
+#, fuzzy
+msgid "three"
+msgstr "três"
+
+#: contrib/humanize/templatetags/humanize.py:68
+#, fuzzy
+msgid "four"
+msgstr "quatro"
+
+#: contrib/humanize/templatetags/humanize.py:68
+#, fuzzy
+msgid "five"
+msgstr "cinco"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "six"
+msgstr "seis"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "seven"
+msgstr "sete"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "eight"
+msgstr "oito"
+
+#: contrib/humanize/templatetags/humanize.py:68
+#, fuzzy
+msgid "nine"
+msgstr "nove"
+
+#: contrib/auth/views.py:39
+#, fuzzy
+msgid "Logged out"
+msgstr "Sessão Encerrada"
+
+#: contrib/auth/models.py:38 contrib/auth/models.py:57
+msgid "name"
+msgstr "nome"
+
+#: contrib/auth/models.py:40
+msgid "codename"
+msgstr "apelido"
+
+#: contrib/auth/models.py:42
+#, fuzzy
+msgid "permission"
+msgstr "permissão"
+
+#: contrib/auth/models.py:43 contrib/auth/models.py:58
+#, fuzzy
+msgid "permissions"
+msgstr "permissões"
+
+#: contrib/auth/models.py:60
+#, fuzzy
+msgid "group"
+msgstr "grupo"
+
+#: contrib/auth/models.py:61 contrib/auth/models.py:100
+#, fuzzy
+msgid "groups"
+msgstr "grupos"
+
+#: contrib/auth/models.py:90
+msgid "username"
+msgstr "usuário"
+
+#: contrib/auth/models.py:90
+msgid ""
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
+msgstr "Obrigatório. 30 caracteres ou menos. Apenas caracteres alfanuméricos"
+"(letras, dígitos e sublinhados (_) )"
+
+#: contrib/auth/models.py:91
+msgid "first name"
+msgstr "primeiro nome"
+
+#: contrib/auth/models.py:92
+msgid "last name"
+msgstr "último nome"
+
+#: contrib/auth/models.py:93
+msgid "e-mail address"
+msgstr "endereço de e-mail"
+
+#: contrib/auth/models.py:94
+msgid "password"
+msgstr "senha"
+
+#: contrib/auth/models.py:94
+msgid ""
+"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
+"password form</a>."
+msgstr ""
+"Use '[algo]$[salt]$[hexdigest]' ou <a href=\"password/\"> Altere a senha"
+"</a>."
+#: contrib/auth/models.py:95
+msgid "staff status"
+msgstr "status da equipe"
+
+#: contrib/auth/models.py:95
+msgid "Designates whether the user can log into this admin site."
+msgstr "Permite ao usuário o acesso a este site de administração."
+
+#: contrib/auth/models.py:96
+msgid "active"
+msgstr "ativar"
+
+#: contrib/auth/models.py:96
+#, fuzzy
+msgid ""
+"Designates whether this user can log into the Django admin. Unselect this "
+"instead of deleting accounts."
+msgstr "Permite ao usuário acessar este site de administração. "
+"Ao invés de excluir contas de usuário, desmarque isso."
+
+#: contrib/auth/models.py:97
+msgid "superuser status"
+msgstr "status de superusuário"
+
+#: contrib/auth/models.py:97
+msgid ""
+"Designates that this user has all permissions without explicitly assigning "
+"them."
+msgstr "Informa que este usuário tem todas as permissões sem atribuí-las "
+"explicitamente."
+
+#: contrib/auth/models.py:98
+msgid "last login"
+msgstr "último login"
+
+#: contrib/auth/models.py:99
+msgid "date joined"
+msgstr "data de registro"
+
+#: contrib/auth/models.py:101
+msgid ""
+"In addition to the permissions manually assigned, this user will also get "
+"all permissions granted to each group he/she is in."
+msgstr ""
+"Em adição às permissões atribuídas manualmente, este usuário também terá "
+"todas as permissões dadas a cada grupo que participar."
+
+#: contrib/auth/models.py:102
+#, fuzzy
+msgid "user permissions"
+msgstr "permissões do usuário"
+
+#: contrib/auth/models.py:105
+#, fuzzy
+msgid "user"
+msgstr "usuário"
+
+#: contrib/auth/models.py:106
+#, fuzzy
+msgid "users"
+msgstr "usuários"
+
+#: contrib/auth/models.py:111
+msgid "Personal info"
+msgstr "Informações pessoais"
+
+#: contrib/auth/models.py:112
+msgid "Permissions"
+msgstr "Permissões"
+
+#: contrib/auth/models.py:113
+msgid "Important dates"
+msgstr "Datas importantes"
+
+#: contrib/auth/models.py:114
+msgid "Groups"
+msgstr "Grupos"
+
+#: contrib/auth/models.py:258
+#, fuzzy
+msgid "message"
+msgstr "mensagem"
+
+#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
+msgid "The two password fields didn't match."
+msgstr "Os dois campos de senha não combinam."
+
+#: contrib/auth/forms.py:25
+#, fuzzy
+msgid "A user with that username already exists."
+msgstr "Um usuário com este username já existe."
+
+#: contrib/auth/forms.py:53
+msgid ""
+"Your Web browser doesn't appear to have cookies enabled. Cookies are "
+"required for logging in."
+msgstr ""
+"Seu navegador Web não parece estar com os cookies habilitados. Cookies são "
+"requeridos para acessar."
+
+#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10
+msgid ""
+"Please enter a correct username and password. Note that both fields are case-"
+"sensitive."
+msgstr ""
+"Por favor entre usuário e senha corretos. Note que ambos os campos "
+"diferenciam maiúsculas e minúsculas."
+
+#: contrib/auth/forms.py:62
+msgid "This account is inactive."
+msgstr "Esta conta está inativa."
+
+#: contrib/auth/forms.py:85
+msgid ""
+"That e-mail address doesn't have an associated user account. Are you sure "
+"you've registered?"
+msgstr "Este endereço de e-mail não está associado com uma conta de usuário."
+"Você tem certeza que está registrado?"
+
+#: contrib/auth/forms.py:117
+msgid "The two 'new password' fields didn't match."
+msgstr "Os dois campos 'nova senha' não conferem."
+
+#: contrib/auth/forms.py:124
+msgid "Your old password was entered incorrectly. Please enter it again."
+msgstr "A senha antiga foi digitada incorretamente. Por favor, informe a "
+"senha novamente."
+
+#: contrib/redirects/models.py:7
+msgid "redirect from"
+msgstr "redirecionar de"
+
+#: contrib/redirects/models.py:8
+msgid ""
+"This should be an absolute path, excluding the domain name. Example: '/"
+"events/search/'."
+msgstr ""
+"Isso deve ser um caminho absoluto, excluindo o nome de domínio. Exemplo: '/"
+"eventos/busca/'."
+
+#: contrib/redirects/models.py:9
+msgid "redirect to"
+msgstr "redirecionar para"
+
+#: contrib/redirects/models.py:10
+msgid ""
+"This can be either an absolute path (as above) or a full URL starting with "
+"'http://'."
+msgstr ""
+"Isto pode ser um caminho absoluto (como acima) ou uma URL completa, "
+"começando com 'http://'."
+
+#: contrib/redirects/models.py:13
+msgid "redirect"
+msgstr "redirecionar"
+
+#: contrib/redirects/models.py:14
+msgid "redirects"
+msgstr "redirecionamentos"
+
#: contrib/comments/models.py:67 contrib/comments/models.py:166
msgid "object ID"
msgstr "id do objeto"
@@ -73,7 +1074,7 @@ msgstr "data/hora de envio"
msgid "is public"
msgstr "é público"
-#: 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 "Endereço IP:"
@@ -86,8 +1087,8 @@ msgid ""
"Check this box if the comment is inappropriate. A \"This comment has been "
"removed\" message will be displayed instead."
msgstr ""
-"Selecione esta opção se o comentário é inapropriado. Uma mensagem \"Este "
-"comentário foi removido\" a mensagem será mostrada no lugar."
+"Selecione esta opção se o comentário é inapropriado. A mensagem \"Este "
+"comentário foi removido\" será mostrada no lugar."
#: contrib/comments/models.py:91
#, fuzzy
@@ -165,7 +1166,7 @@ msgid ""
"\n"
"%(text)s"
msgstr ""
-"O usuário %(user)s colocou flags neste documento:\n"
+"O usuário %(user)s colocou flags neste comentário:\n"
"\n"
"%(text)s"
@@ -219,13 +1220,13 @@ msgstr "ID de comentário inválido"
msgid "No voting for yourself"
msgstr "Você não pode votar em si mesmo"
-#: 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 ""
"Esta avaliação é requerida porque você entrou com ao menos uma avaliação"
-#: contrib/comments/views/comments.py:112
+#: contrib/comments/views/comments.py:111
#, fuzzy, python-format
msgid ""
"This comment was posted by a user who has posted fewer than %(count)s "
@@ -246,7 +1247,7 @@ msgstr[1] ""
"comentários:\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"
@@ -257,34 +1258,51 @@ 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 "Somente POSTs são permitidos"
-#: 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 "Um ou mais dos campos requeridos não foram enviados"
-#: 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 "Alguém modificou o form de comentários (violação de segurança)"
+msgstr "Alguém modificou o formulário de comentários (violação de segurança)"
-#: 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 ""
-"O form de comentários teve um parâmetro 'target' inválido -- o ID do objeto "
-"é inválido"
+"O formulário de comentários teve um parâmetro 'target' inválido -- o ID do "
+"objeto é inválido"
#: contrib/comments/views/comments.py:257
#: contrib/comments/views/comments.py:321
msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "O form de comentários não forneceu nem 'preview' nem 'post'"
+msgstr "O formulário de comentários não forneceu nem 'preview' nem 'post'"
+
+#: contrib/comments/templates/comments/freeform.html:4
+#, fuzzy
+msgid "Your name:"
+msgstr "Seu nome:"
+
+#: contrib/comments/templates/comments/freeform.html:5
+#: contrib/comments/templates/comments/form.html:28
+#, fuzzy
+msgid "Comment:"
+msgstr "Comentário"
+
+#: contrib/comments/templates/comments/freeform.html:10
+#: contrib/comments/templates/comments/form.html:35
+#, fuzzy
+msgid "Preview comment"
+msgstr "Pré visualizar comentário"
#: contrib/comments/templates/comments/form.html:6
#: contrib/comments/templates/comments/form.html:8
@@ -293,21 +1311,12 @@ msgid "Username:"
msgstr "Usuário:"
#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Senha:"
-
-#: contrib/comments/templates/comments/form.html:6
-#, fuzzy
-msgid "Forgotten your password?"
-msgstr "Esqueceu sua senha?"
-
-#: contrib/comments/templates/comments/form.html:8
#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: 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
@@ -323,6 +1332,16 @@ msgstr "Esqueceu sua senha?"
msgid "Log out"
msgstr "Encerrar sessão"
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:20
+msgid "Password:"
+msgstr "Senha:"
+
+#: contrib/comments/templates/comments/form.html:8
+#, fuzzy
+msgid "Forgotten your password?"
+msgstr "Esqueceu sua senha?"
+
#: contrib/comments/templates/comments/form.html:12
#, fuzzy
msgid "Ratings"
@@ -342,22 +1361,91 @@ msgstr "Opcional"
msgid "Post a photo"
msgstr "Postar uma foto"
-#: contrib/comments/templates/comments/form.html:27
-#: contrib/comments/templates/comments/freeform.html:5
-#, fuzzy
-msgid "Comment:"
-msgstr "Comentário"
+#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315
+msgid "URL"
+msgstr "URL"
-#: contrib/comments/templates/comments/form.html:32
-#: contrib/comments/templates/comments/freeform.html:9
-#, fuzzy
-msgid "Preview comment"
-msgstr "Pré visualizar comentário"
+#: contrib/flatpages/models.py:8
+msgid ""
+"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgstr "Exemplo: '/sobre/contato/'. Lembre-se das barras no começo e no final."
-#: contrib/comments/templates/comments/freeform.html:4
+#: contrib/flatpages/models.py:9
+msgid "title"
+msgstr "título"
+
+#: contrib/flatpages/models.py:10
+msgid "content"
+msgstr "conteúdo"
+
+#: contrib/flatpages/models.py:11
+msgid "enable comments"
+msgstr "habilitar comentários"
+
+#: contrib/flatpages/models.py:12
+msgid "template name"
+msgstr "nome do modelo"
+
+#: contrib/flatpages/models.py:13
#, fuzzy
-msgid "Your name:"
-msgstr "Seu nome:"
+msgid ""
+"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
+"will use 'flatpages/default.html'."
+msgstr ""
+"Exemplo: 'flatpages/contact_page.html'. Se não for informado, será utilizado "
+"'flatpages/default.html'."
+
+#: contrib/flatpages/models.py:14
+msgid "registration required"
+msgstr "registro obrigatório"
+
+#: contrib/flatpages/models.py:14
+msgid "If this is checked, only logged-in users will be able to view the page."
+msgstr "Se estiver marcado, apenas usuários conectados poderão ver a página."
+
+#: contrib/flatpages/models.py:18
+msgid "flat page"
+msgstr ""
+
+#: contrib/flatpages/models.py:19
+msgid "flat pages"
+msgstr ""
+
+#: contrib/sessions/models.py:68
+msgid "session key"
+msgstr "chave da sessão"
+
+#: contrib/sessions/models.py:69
+msgid "session data"
+msgstr "dados da sessão"
+
+#: contrib/sessions/models.py:70
+msgid "expire date"
+msgstr "data de expiração"
+
+#: contrib/sessions/models.py:74
+msgid "session"
+msgstr "sessão"
+
+#: contrib/sessions/models.py:75
+msgid "sessions"
+msgstr "sessões"
+
+#: contrib/sites/models.py:10
+msgid "domain name"
+msgstr "nome do domínio"
+
+#: contrib/sites/models.py:11
+msgid "display name"
+msgstr "nome para exibição"
+
+#: contrib/sites/models.py:15
+msgid "site"
+msgstr "site"
+
+#: contrib/sites/models.py:16
+msgid "sites"
+msgstr "sites"
#: contrib/admin/filterspecs.py:40
#, python-format
@@ -369,7 +1457,7 @@ msgstr ""
"<ul>\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 "Todos"
@@ -393,18 +1481,6 @@ msgstr "Este mês"
msgid "This year"
msgstr "Este ano"
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr "Sim"
-
-#: contrib/admin/filterspecs.py:143
-msgid "No"
-msgstr "Não"
-
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr "Desconhecido"
-
#: contrib/admin/models.py:16
msgid "action time"
msgstr "hora da ação"
@@ -433,25 +1509,16 @@ msgstr "entrada de log"
msgid "log entries"
msgstr "entradas de log"
-#: contrib/admin/templatetags/admin_list.py:228
+#: contrib/admin/templatetags/admin_list.py:247
msgid "All dates"
msgstr "Todas as datas"
-#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36
-#: contrib/auth/forms.py:41
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Por favor entre usuário e senha corretos. Note que ambos os "
-"campos diferenciam maiúsculas e minúsculas."
-
-#: contrib/admin/views/decorators.py:23
+#: contrib/admin/views/decorators.py:24
#: contrib/admin/templates/admin/login.html:25
msgid "Log in"
msgstr "Acessar"
-#: 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."
@@ -459,7 +1526,7 @@ msgstr ""
"Por favor acesse novamente, pois sua sessão expirou. Não se preocupe: Os "
"dados enviados foram salvos."
-#: 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."
@@ -467,68 +1534,79 @@ msgstr ""
"Parece que seu navegador não está configurado para aceitar cookies. Por "
"favor habilite os cookies, recarregue esta página, e tente novamente."
-#: contrib/admin/views/decorators.py:82
+#: contrib/admin/views/decorators.py:83
msgid "Usernames cannot contain the '@' character."
msgstr "Nomes de usuário não podem conter o caractere '@'."
-#: 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 "Seu endereço de e-mail não é seu nome de usuário. Tente usar '%s'"
-#: contrib/admin/views/main.py:226
-msgid "Site administration"
-msgstr "Administração do Site"
-
-#: contrib/admin/views/main.py:260
+#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "O(A) %(name)s \"%(obj)s\" foi adicionado com sucesso."
-#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348
+#: 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 "Você pode editá-lo(a) de novo abaixo."
-#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357
+#: contrib/admin/views/auth.py:30
+#, fuzzy
+msgid "Add user"
+msgstr "Adicionar usuário"
+
+#: contrib/admin/views/auth.py:57
+#, fuzzy
+msgid "Password changed successfully."
+msgstr "Senha alterada com sucesso"
+
+#: contrib/admin/views/auth.py:64
+#, fuzzy, python-format
+msgid "Change password: %s"
+msgstr "Alterar senha: %s"
+
+#: contrib/admin/views/main.py:223
+msgid "Site administration"
+msgstr "Administração do Site"
+
+#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
#, python-format
msgid "You may add another %s below."
msgstr "Você pode adicionar outro(a) %s abaixo."
-#: contrib/admin/views/main.py:290
+#: contrib/admin/views/main.py:289
#, python-format
msgid "Add %s"
msgstr "Adicionar %s"
-#: contrib/admin/views/main.py:336
+#: contrib/admin/views/main.py:335
#, python-format
msgid "Added %s."
msgstr "Adicionado %s."
-#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
-#: contrib/admin/views/main.py:340
-msgid "and"
-msgstr "e"
-
-#: contrib/admin/views/main.py:338
+#: contrib/admin/views/main.py:337
#, python-format
msgid "Changed %s."
msgstr "Modificado %s."
-#: contrib/admin/views/main.py:340
+#: contrib/admin/views/main.py:339
#, python-format
msgid "Deleted %s."
-msgstr "Apagado %s."
+msgstr "Excluído %s."
-#: contrib/admin/views/main.py:343
+#: contrib/admin/views/main.py:342
msgid "No fields changed."
msgstr "Nenhum campo modificado."
-#: contrib/admin/views/main.py:346
+#: contrib/admin/views/main.py:345
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr "O(A) %(name)s \"%(obj)s\" foi modificado com sucesso."
-#: contrib/admin/views/main.py:354
+#: contrib/admin/views/main.py:353
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
@@ -634,10 +1712,6 @@ msgstr "Texto"
msgid "Time"
msgstr "Hora"
-#: 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 "Estado dos EUA (duas letras maiúsculas)"
@@ -659,9 +1733,12 @@ msgstr "Documentação"
#: contrib/admin/templates/admin/object_history.html:3
#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: 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
@@ -678,11 +1755,13 @@ msgid "Change password"
msgstr "Alterar senha"
#: 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/500.html:4
+#: contrib/admin/templates/admin/invalid_setup.html:4
#: contrib/admin/templates/admin/change_form.html:13
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/delete_confirmation.html:6
+#: 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
@@ -693,7 +1772,7 @@ msgid "Home"
msgstr "Início"
#: 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 "Histórico"
@@ -721,13 +1800,15 @@ msgstr ""
"Este objeto não tem um histórico de alterações. Ele provavelmente não foi "
"adicionado por este site de administração."
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Site de administração do Django"
+#: contrib/admin/templates/admin/change_list.html:12
+#, python-format
+msgid "Add %(name)s"
+msgstr "Adicionar %(name)s"
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administração do Django"
+#: contrib/admin/templates/admin/filter.html:2
+#, fuzzy, python-format
+msgid " By %(filter_title)s "
+msgstr "Por %(title)s "
#: contrib/admin/templates/admin/500.html:4
msgid "Server error"
@@ -746,8 +1827,50 @@ 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 ""
-"Houve um erro. Este foi reportado aos administradores do site através d e-"
-"mail e deve ser corrigido em breve. Obrigado pela compreensão."
+"Houve um erro. Este foi reportado aos administradores do site através do "
+"e-mail e deve ser corrigido em breve. Obrigado pela compreensão."
+
+#: 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 "Alguma coisa errada com a instalação do banco de dados. Certifique-se "
+"que as tabelas necessárias foram criadas e que o banco de dados pode ser "
+"acessado pelo usuário."
+
+#: contrib/admin/templates/admin/search_form.html:8
+msgid "Go"
+msgstr "Ir"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] "1 resultado"
+msgstr[1] "%(counter)s resultados"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s total"
+
+#: contrib/admin/templates/admin/pagination.html:10
+msgid "Show all"
+msgstr "Mostrar tudo"
+
+#: contrib/admin/templates/admin/base_site.html:4
+msgid "Django site admin"
+msgstr "Site de administração do Django"
+
+#: contrib/admin/templates/admin/base_site.html:7
+msgid "Django administration"
+msgstr "Administração do Django"
+
+#: contrib/admin/templates/admin/filters.html:4
+#, fuzzy
+msgid "Filter"
+msgstr "Filtro"
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
@@ -763,6 +1886,11 @@ msgstr "Desculpe, mas a página requisitada não pode ser encontrada."
msgid "Models available in the %(name)s application."
msgstr "Modelos disponíveis na aplicação %(name)s"
+#: contrib/admin/templates/admin/index.html:18
+#, fuzzy, 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"
@@ -788,16 +1916,27 @@ msgstr "Minhas Ações"
msgid "None available"
msgstr "Nenhuma disponível"
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Adicionar %(name)s"
+#: contrib/admin/templates/admin/change_form.html:22
+msgid "View on site"
+msgstr "Ver no site"
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "Você <a href=\"/password_reset/\">esqueceu sua senha</a>?"
+#: contrib/admin/templates/admin/change_form.html:32
+#: contrib/admin/templates/admin/auth/user/change_password.html:24
+#, fuzzy
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Por favor, corrija o erro abaixo."
+msgstr[1] "Por favor, corrija os erros abaixo."
-#: contrib/admin/templates/admin/base.html:23
+#: contrib/admin/templates/admin/change_form.html:50
+msgid "Ordering"
+msgstr "Ordenação"
+
+#: contrib/admin/templates/admin/change_form.html:53
+msgid "Order:"
+msgstr "Ordem:"
+
+#: contrib/admin/templates/admin/base.html:25
msgid "Welcome,"
msgstr "Bem vindo,"
@@ -807,57 +1946,29 @@ msgid "Delete"
msgstr "Apagar"
#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
+#, fuzzy, 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 ""
-"A remoção de '%(object)s' %(object_name)s pode resultar na remoção de "
-"objetos relacionados, mas sua conta não tem a permissão para remoção dos "
+"A remoção de '%(object_name)s' %(escaped_object)s pode resultar na remoção "
+"de objetos relacionados, mas sua conta não tem a permissão para remoção dos "
"seguintes tipos de objetos:"
#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
+#, fuzzy, 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 ""
-"Você tem certeza que quer remover o \"%(object)s\" %(object_name)s? Todos os "
-"seguintes itens relacionados serão removidos:"
+"Você tem certeza que quer remover o %(object_name)s \"%(escaped_object)s\"? "
+"Todos os seguintes itens relacionados serão removidos:"
#: contrib/admin/templates/admin/delete_confirmation.html:26
msgid "Yes, I'm sure"
msgstr "Sim, tenho certeza"
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(title)s "
-msgstr "Por %(title)s "
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Ir"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Ver no site"
-
-#: contrib/admin/templates/admin/change_form.html:30
-#, fuzzy
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Por favor, corrija o erro abaixo."
-msgstr[1] "Por favor, corrija os erros abaixo."
-
-#: contrib/admin/templates/admin/change_form.html:48
-msgid "Ordering"
-msgstr "Ordenação"
-
-#: contrib/admin/templates/admin/change_form.html:51
-msgid "Order:"
-msgstr "Ordem:"
-
#: contrib/admin/templates/admin/submit_line.html:4
msgid "Save as new"
msgstr "Salvar como novo"
@@ -874,6 +1985,40 @@ msgstr "Salvar e continuar editando"
msgid "Save"
msgstr "Salvar"
+#: contrib/admin/templates/admin/auth/user/change_password.html:28
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Informe uma nova senha para o usuário <strong>%(username)s</strong>."
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:34
+#: contrib/admin/templates/admin/auth/user/add_form.html:18
+#, fuzzy
+msgid "Password"
+msgstr "Senha:"
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/admin/templates/admin/auth/user/add_form.html:23
+#, fuzzy
+msgid "Password (again)"
+msgstr "Senha (novamente)"
+
+#: 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 "Informe a mesma senha digitada acima, para verificação."
+
+#: 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 "Primeiro, informe um nome de usuário e senha. Então, você será capaz "
+"de editar mais opções do usuário."
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:12
+#, fuzzy
+msgid "Username"
+msgstr "Usuário:"
+
#: 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
@@ -940,7 +2085,7 @@ msgid ""
"password twice so we can verify you typed it in correctly."
msgstr ""
"Por favor, informe sua senha antiga, por segurança, e então informe sua nova "
-"senha duas vezes para que possamos verificar que se ela está correta."
+"senha duas vezes para que possamos verificar se você digitou corretamente."
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
@@ -987,7 +2132,7 @@ msgstr "Obrigado por usar nosso site!"
#: contrib/admin/templates/registration/password_reset_email.html:15
#, python-format
msgid "The %(site_name)s team"
-msgstr "Time do %(site_name)s"
+msgstr "Equipe do %(site_name)s"
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
msgid "Bookmarklets"
@@ -1045,9 +2190,7 @@ msgstr "Editar este objeto (janela atual)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:26
msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Vai para a página de administração que representam um objeto "
-"único."
+msgstr "Vai para a página de administração que representam um objeto único."
#: contrib/admin/templates/admin_doc/bookmarklets.html:28
msgid "Edit this object (new window)"
@@ -1057,286 +2200,213 @@ msgstr "Editar este objeto (nova janela)"
msgid "As above, but opens the admin page in a new window."
msgstr "Como acima, mas abre a página de administração em uma nova janela."
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Data:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Hora:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Atualmente:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Modificar:"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "redirecionar de"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
+#: contrib/localflavor/uk/forms.py:18
+msgid "Enter a postcode. A space is required between the two postcode parts."
msgstr ""
-"Deve conter um caminho absoluto, excluindo o nome de domínio. Exemplo: '/"
-"eventos/busca/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "redirecionar para"
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
+#: contrib/localflavor/usa/forms.py:17
+msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
msgstr ""
-"Deve conter um caminho absoluto (como acima) ou uma URL completa, começando "
-"com 'http://'."
-#: contrib/redirects/models.py:12
-msgid "redirect"
-msgstr "redirecionar"
+#: contrib/localflavor/fr/forms.py:17
+#, fuzzy
+msgid "Enter a zip code in the format XXXXX."
+msgstr ""
-#: contrib/redirects/models.py:13
-msgid "redirects"
-msgstr "redirecionamentos"
+#: contrib/localflavor/jp/forms.py:21
+msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
+msgstr ""
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Exemplo: '/sobre/contato/'. Lembre-se das barras no começo e no final."
+#: contrib/localflavor/jp/jp_prefectures.py:4
+msgid "Hokkaido"
+msgstr ""
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "título"
+#: contrib/localflavor/jp/jp_prefectures.py:5
+msgid "Aomori"
+msgstr ""
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "conteúdo"
+#: contrib/localflavor/jp/jp_prefectures.py:6
+#, fuzzy
+msgid "Iwate"
+msgstr ""
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "habilitar comentários"
+#: contrib/localflavor/jp/jp_prefectures.py:7
+msgid "Miyagi"
+msgstr ""
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "nome do modelo"
+#: contrib/localflavor/jp/jp_prefectures.py:8
+msgid "Akita"
+msgstr ""
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
-"use 'flatpages/default'."
+#: contrib/localflavor/jp/jp_prefectures.py:9
+msgid "Yamagata"
msgstr ""
-"Exemplo: 'flatfiles/contact_page'. Se não for informado, será utilizado "
-"'flatfiles/default'."
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "registro obrigatório"
+#: contrib/localflavor/jp/jp_prefectures.py:10
+msgid "Fukushima"
+msgstr ""
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Se estiver marcado, apenas usuários conectados poderão ver a página."
+#: contrib/localflavor/jp/jp_prefectures.py:11
+msgid "Ibaraki"
+msgstr ""
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "página plana"
+#: contrib/localflavor/jp/jp_prefectures.py:12
+msgid "Tochigi"
+msgstr ""
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "páginas planas"
+#: contrib/localflavor/jp/jp_prefectures.py:13
+msgid "Gunma"
+msgstr ""
-#: contrib/auth/models.py:13 contrib/auth/models.py:26
-msgid "name"
-msgstr "nome"
+#: contrib/localflavor/jp/jp_prefectures.py:14
+msgid "Saitama"
+msgstr ""
-#: contrib/auth/models.py:15
-msgid "codename"
-msgstr "nome código"
+#: contrib/localflavor/jp/jp_prefectures.py:15
+msgid "Chiba"
+msgstr ""
-#: contrib/auth/models.py:17
+#: contrib/localflavor/jp/jp_prefectures.py:16
#, fuzzy
-msgid "permission"
-msgstr "permissão"
+msgid "Tokyo"
+msgstr ""
-#: contrib/auth/models.py:18 contrib/auth/models.py:27
-#, fuzzy
-msgid "permissions"
-msgstr "permissões"
+#: contrib/localflavor/jp/jp_prefectures.py:17
+msgid "Kanagawa"
+msgstr ""
-#: contrib/auth/models.py:29
-#, fuzzy
-msgid "group"
-msgstr "grupo"
+#: contrib/localflavor/jp/jp_prefectures.py:18
+msgid "Yamanashi"
+msgstr ""
-#: contrib/auth/models.py:30 contrib/auth/models.py:65
-#, fuzzy
-msgid "groups"
-msgstr "grupos"
+#: contrib/localflavor/jp/jp_prefectures.py:19
+msgid "Nagano"
+msgstr ""
-#: contrib/auth/models.py:55
-msgid "username"
-msgstr "usuário"
+#: contrib/localflavor/jp/jp_prefectures.py:20
+msgid "Niigata"
+msgstr ""
-#: contrib/auth/models.py:56
-msgid "first name"
-msgstr "primeiro nome"
+#: contrib/localflavor/jp/jp_prefectures.py:21
+msgid "Toyama"
+msgstr ""
-#: contrib/auth/models.py:57
-msgid "last name"
-msgstr "último nome"
+#: contrib/localflavor/jp/jp_prefectures.py:22
+msgid "Ishikawa"
+msgstr ""
-#: contrib/auth/models.py:58
-msgid "e-mail address"
-msgstr "endereço de e-mail"
+#: contrib/localflavor/jp/jp_prefectures.py:23
+msgid "Fukui"
+msgstr ""
-#: contrib/auth/models.py:59
-msgid "password"
-msgstr "senha"
+#: contrib/localflavor/jp/jp_prefectures.py:24
+msgid "Gifu"
+msgstr ""
-#: contrib/auth/models.py:59
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr "Use '[algo]$[salt]$[hexdigest]'"
+#: contrib/localflavor/jp/jp_prefectures.py:25
+msgid "Shizuoka"
+msgstr ""
-#: contrib/auth/models.py:60
-msgid "staff status"
-msgstr "status da equipe"
+#: contrib/localflavor/jp/jp_prefectures.py:26
+msgid "Aichi"
+msgstr ""
-#: contrib/auth/models.py:60
-msgid "Designates whether the user can log into this admin site."
-msgstr "Informa se o usuário pode acessar este site de administração."
+#: contrib/localflavor/jp/jp_prefectures.py:27
+msgid "Mie"
+msgstr ""
-#: contrib/auth/models.py:61
-msgid "active"
-msgstr "ativar"
+#: contrib/localflavor/jp/jp_prefectures.py:28
+msgid "Shiga"
+msgstr ""
-#: contrib/auth/models.py:62
-msgid "superuser status"
-msgstr "status de superusuário"
+#: contrib/localflavor/jp/jp_prefectures.py:29
+msgid "Kyoto"
+msgstr ""
-#: contrib/auth/models.py:63
-msgid "last login"
-msgstr "último login"
+#: contrib/localflavor/jp/jp_prefectures.py:30
+msgid "Osaka"
+msgstr ""
-#: contrib/auth/models.py:64
-msgid "date joined"
-msgstr "data de registro"
+#: contrib/localflavor/jp/jp_prefectures.py:31
+msgid "Hyogo"
+msgstr ""
-#: contrib/auth/models.py:66
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
+#: contrib/localflavor/jp/jp_prefectures.py:32
+msgid "Nara"
msgstr ""
-"Em adição às permissões atribuídas manualmente, este usuário também terá "
-"todas as permissões dadas a cada grupo que participar."
-#: contrib/auth/models.py:67
-#, fuzzy
-msgid "user permissions"
-msgstr "permissões do usuário"
+#: contrib/localflavor/jp/jp_prefectures.py:33
+msgid "Wakayama"
+msgstr ""
-#: contrib/auth/models.py:70
-#, fuzzy
-msgid "user"
-msgstr "usuário"
+#: contrib/localflavor/jp/jp_prefectures.py:34
+msgid "Tottori"
+msgstr ""
-#: contrib/auth/models.py:71
+#: contrib/localflavor/jp/jp_prefectures.py:35
#, fuzzy
-msgid "users"
-msgstr "usuários"
-
-#: contrib/auth/models.py:76
-msgid "Personal info"
-msgstr "Informações pessoais"
+msgid "Shimane"
+msgstr ""
-#: contrib/auth/models.py:77
-msgid "Permissions"
-msgstr "Permissões"
+#: contrib/localflavor/jp/jp_prefectures.py:36
+msgid "Okayama"
+msgstr ""
-#: contrib/auth/models.py:78
-msgid "Important dates"
-msgstr "Datas importantes"
+#: contrib/localflavor/jp/jp_prefectures.py:37
+msgid "Hiroshima"
+msgstr ""
-#: contrib/auth/models.py:79
-msgid "Groups"
-msgstr "Grupos"
+#: contrib/localflavor/jp/jp_prefectures.py:38
+msgid "Yamaguchi"
+msgstr ""
-#: contrib/auth/models.py:219
-#, fuzzy
-msgid "message"
-msgstr "mensagem"
+#: contrib/localflavor/jp/jp_prefectures.py:39
+msgid "Tokushima"
+msgstr ""
-#: contrib/auth/forms.py:30
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
+#: contrib/localflavor/jp/jp_prefectures.py:40
+msgid "Kagawa"
msgstr ""
-"Seu navegador Web não parece estar com os cookies habilitados. Cookies são "
-"requeridos para acessar."
-#: contrib/contenttypes/models.py:25
+#: contrib/localflavor/jp/jp_prefectures.py:41
#, fuzzy
-msgid "python model class name"
-msgstr "nome do módulo python"
-
-#: contrib/contenttypes/models.py:28
-msgid "content type"
-msgstr "tipo de conteúdo"
-
-#: contrib/contenttypes/models.py:29
-msgid "content types"
-msgstr "tipos de conteúdo"
-
-#: contrib/sessions/models.py:35
-msgid "session key"
-msgstr "chave da sessão"
-
-#: contrib/sessions/models.py:36
-msgid "session data"
-msgstr "dados da sessão"
-
-#: contrib/sessions/models.py:37
-msgid "expire date"
-msgstr "data de expiração"
+msgid "Ehime"
+msgstr ""
-#: contrib/sessions/models.py:41
-msgid "session"
-msgstr "sessão"
+#: contrib/localflavor/jp/jp_prefectures.py:42
+msgid "Kochi"
+msgstr ""
-#: contrib/sessions/models.py:42
-msgid "sessions"
-msgstr "sessões"
+#: contrib/localflavor/jp/jp_prefectures.py:43
+msgid "Fukuoka"
+msgstr ""
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "nome do domínio"
+#: contrib/localflavor/jp/jp_prefectures.py:44
+msgid "Saga"
+msgstr ""
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "nome para exibição"
+#: contrib/localflavor/jp/jp_prefectures.py:45
+msgid "Nagasaki"
+msgstr ""
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "site"
+#: contrib/localflavor/jp/jp_prefectures.py:46
+msgid "Kumamoto"
+msgstr ""
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "sites"
+#: contrib/localflavor/jp/jp_prefectures.py:47
+msgid "Oita"
+msgstr ""
-#: utils/translation.py:360
-msgid "DATE_FORMAT"
+#: contrib/localflavor/jp/jp_prefectures.py:48
+msgid "Miyazaki"
msgstr ""
-#: utils/translation.py:361
-msgid "DATETIME_FORMAT"
+#: contrib/localflavor/jp/jp_prefectures.py:49
+msgid "Kagoshima"
msgstr ""
-#: utils/translation.py:362
-msgid "TIME_FORMAT"
+#: contrib/localflavor/jp/jp_prefectures.py:50
+msgid "Okinawa"
msgstr ""
#: utils/dates.py:6
@@ -1534,483 +2604,60 @@ msgid_plural "minutes"
msgstr[0] "minuto"
msgstr[1] "minutos"
-#: conf/global_settings.py:37
-msgid "Bengali"
-msgstr "Bengalês"
-
-#: conf/global_settings.py:38
-msgid "Czech"
-msgstr "Tcheco"
-
-#: conf/global_settings.py:39
-msgid "Welsh"
+#: utils/dateformat.py:40
+msgid "p.m."
msgstr ""
-#: conf/global_settings.py:40
-#, fuzzy
-msgid "Danish"
-msgstr "Dinamarquês"
-
-#: conf/global_settings.py:41
-msgid "German"
-msgstr "Alemão"
-
-#: conf/global_settings.py:42
-msgid "Greek"
-msgstr "Grego"
-
-#: conf/global_settings.py:43
-msgid "English"
-msgstr "Inglês"
-
-#: conf/global_settings.py:44
-msgid "Spanish"
-msgstr "Espanhol"
-
-#: conf/global_settings.py:45
-msgid "French"
-msgstr "Francês"
-
-#: conf/global_settings.py:46
-msgid "Galician"
-msgstr "Galiciano"
-
-#: conf/global_settings.py:47
-msgid "Hungarian"
-msgstr "Húngaro"
-
-#: conf/global_settings.py:48
-msgid "Hebrew"
-msgstr "Hebraico"
-
-#: conf/global_settings.py:49
-msgid "Icelandic"
-msgstr "Islandês"
-
-#: conf/global_settings.py:50
-msgid "Italian"
-msgstr "Italiano"
-
-#: conf/global_settings.py:51
-msgid "Japanese"
-msgstr "Japonês"
-
-#: conf/global_settings.py:52
-msgid "Dutch"
-msgstr "Alemão"
-
-#: conf/global_settings.py:53
-msgid "Norwegian"
-msgstr "Norueguês"
-
-#: conf/global_settings.py:54
-msgid "Brazilian"
-msgstr "Brasileiro"
-
-#: conf/global_settings.py:55
-msgid "Romanian"
-msgstr "Romeno"
-
-#: conf/global_settings.py:56
-msgid "Russian"
-msgstr "Russo"
-
-#: conf/global_settings.py:57
-msgid "Slovak"
-msgstr "Eslovaco"
-
-#: conf/global_settings.py:58
-#, fuzzy
-msgid "Slovenian"
-msgstr "Esloveno"
-
-#: conf/global_settings.py:59
-msgid "Serbian"
-msgstr "Sérvio"
-
-#: conf/global_settings.py:60
-msgid "Swedish"
-msgstr "Sueco"
-
-#: conf/global_settings.py:61
-#, fuzzy
-msgid "Ukrainian"
-msgstr "Ucraniano"
-
-#: conf/global_settings.py:62
-msgid "Simplified Chinese"
-msgstr "Chinês Simplificado"
-
-#: conf/global_settings.py:63
-msgid "Traditional Chinese"
-msgstr "Chinês Tradicional"
-
-#: core/validators.py:60
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Deve conter apenas letras, números e sublinhados (_)."
-
-#: core/validators.py:64
-#, fuzzy
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr "Deve conter apenas letras, números, sublinhados (_) e barras (/)."
-
-#: core/validators.py:72
-msgid "Uppercase letters are not allowed here."
-msgstr "Letras em maiúsculo não são permitidas aqui."
-
-#: core/validators.py:76
-msgid "Lowercase letters are not allowed here."
-msgstr "Letras em minúsculo não são permitidas aqui."
-
-#: core/validators.py:83
-msgid "Enter only digits separated by commas."
-msgstr "Informe apenas dígitos separados por vírgulas."
-
-#: core/validators.py:95
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Informe endereços de email válidos separados por vírgulas."
-
-#: core/validators.py:99
-msgid "Please enter a valid IP address."
-msgstr "Informe um endereço IP válido."
-
-#: core/validators.py:103
-msgid "Empty values are not allowed here."
-msgstr "Valores em branco não são permitidos."
-
-#: core/validators.py:107
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Caracteres não numéricos não são permitidos."
-
-#: core/validators.py:111
-msgid "This value can't be comprised solely of digits."
-msgstr "Este valor não pode conter apenas dígitos."
-
-#: core/validators.py:116
-msgid "Enter a whole number."
-msgstr "Informe um número completo."
-
-#: core/validators.py:120
-msgid "Only alphabetical characters are allowed here."
-msgstr "Apenas caracteres do alfabeto são permitidos aqui."
-
-#: core/validators.py:124
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Informe uma data válida no formato AAAA-MM-DD."
-
-#: core/validators.py:128
-msgid "Enter a valid time in HH:MM format."
-msgstr "Informe uma hora válida no formato HH: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 "Informe uma data/hora válida no formato AAAA-MM-DD HH:MM."
-
-#: core/validators.py:136
-msgid "Enter a valid e-mail address."
-msgstr "Informe um endereço de email válido."
-
-#: core/validators.py:148
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
+#: utils/dateformat.py:41
+msgid "a.m."
msgstr ""
-"Envie uma imagem válida. O arquivo enviado não é uma imagem ou está "
-"corrompido."
-#: core/validators.py:155
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "A URL %s não aponta para um imagem válida."
-
-#: core/validators.py:159
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
+#: utils/dateformat.py:46
+msgid "PM"
msgstr ""
-"Números de telefone deves estar no formato XXX-XXX-XXXX.\"%s\" é inválido."
-
-#: core/validators.py:167
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "A URL %s não aponta para um vídeo QuickTime válido."
-
-#: core/validators.py:171
-msgid "A valid URL is required."
-msgstr "Uma URL válida é exigida."
-
-#: core/validators.py:185
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"HTML válido é exigido. Estes são os erros específicos:\n"
-"%s"
-
-#: core/validators.py:192
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "XML mal formado: %s"
-
-#: core/validators.py:202
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL inválida: %s"
-
-#: core/validators.py:206 core/validators.py:208
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "A URL %s é um link quebrado."
-
-#: core/validators.py:214
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Informe uma abreviação válida de nome de um estado dos EUA."
-
-#: core/validators.py:229
-#, fuzzy, 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] "Lave sua boca! A palavra %s não é permitida aqui."
-msgstr[1] "Lave sua boca! As palavras %s não são permitidas aqui."
-
-#: core/validators.py:236
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Este campo deve ser igual ao campo '%s'."
-
-#: core/validators.py:255
-msgid "Please enter something for at least one field."
-msgstr "Informe algo em pelo menos um campo."
-
-#: core/validators.py:264 core/validators.py:275
-msgid "Please enter both fields or leave them both empty."
-msgstr "Informe ambos os campos ou deixe ambos vazios."
-
-#: core/validators.py:282
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Este campo deve ser informado se o campo %(field)s for %(value)s."
-
-#: core/validators.py:294
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Este campo deve ser dado se o campo %(field)s não for %(value)s."
-
-#: core/validators.py:313
-msgid "Duplicate values are not allowed."
-msgstr "Valores duplicados não são permitidos."
-
-#: core/validators.py:336
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Este valor deve ser uma potência de %s."
-
-#: core/validators.py:347
-msgid "Please enter a valid decimal number."
-msgstr "Informe um número decimal válido."
-
-#: core/validators.py:349
-#, fuzzy, 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] "Por favor entre com um número decimal com no máximo %s digito."
-msgstr[1] "Por favor entre com um número decimal com no máximo %s digitos."
-#: core/validators.py:352
-#, fuzzy, 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] "Informe um número decimal com no máximo %s casa decimal."
-msgstr[1] "Informe um número decimal com no máximo %s casas decimais."
-
-#: core/validators.py:362
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Verifique se o arquivo enviado tem pelo menos %s bytes."
-
-#: core/validators.py:363
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Verifique se o arquivo enviado tem no máximo %s bytes."
-
-#: core/validators.py:376
-msgid "The format for this field is wrong."
-msgstr "O formato deste campo está errado."
-
-#: core/validators.py:391
-msgid "This field is invalid."
-msgstr "Este campo é inválido."
-
-#: core/validators.py:426
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Não foi possível receber dados de %s."
-
-#: core/validators.py:429
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
+#: utils/dateformat.py:47
+msgid "AM"
msgstr ""
-"A URL %(url)s retornou um cabeçalho '%(contenttype)s' de Content-Type "
-"inválido."
-#: core/validators.py:462
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Por favor, feche a tag %(tag)s na linha %(line)s. (A linha começa com \"%"
-"(start)s\".)"
+#: utils/dateformat.py:95
+msgid "midnight"
+msgstr "meia noite"
-#: 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 ""
-"Algum texto começando na linha %(line)s não é permitido no contexto. (Linha "
-"começa com \"%(start)s\".)"
+#: utils/dateformat.py:97
+msgid "noon"
+msgstr "meio dia"
-#: core/validators.py:471
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
+#: utils/translation/trans_real.py:362
+msgid "DATE_FORMAT"
msgstr ""
-"\"%(attr)s\" na linha %(line)s não é um atributo válido. (Linha começa com "
-"\"%(start)s\".)"
-#: core/validators.py:476
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
+#: utils/translation/trans_real.py:363
+msgid "DATETIME_FORMAT"
msgstr ""
-"\"<%(tag)s>\" na linha %(line)s é uma tag inválida. (Linha começa com \"%"
-"(start)s\".)"
-#: core/validators.py:480
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
+#: utils/translation/trans_real.py:364
+msgid "TIME_FORMAT"
msgstr ""
-"Uma tag na linha %(line)s está não apresenta um ou mais atributos exigidos."
-"(Linha começa com \"%(start)s\".)"
-#: core/validators.py:485
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
+#: utils/translation/trans_real.py:380
+msgid "YEAR_MONTH_FORMAT"
msgstr ""
-"O atributo \"%(attr)s\" na linha %(line)s tem um valor inválido. (Linha "
-"começa com \"%(start)s\".)"
-
-#: db/models/manipulators.py:302
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s com este %(type)s já existe para o %(field)s dado."
-
-#: db/models/fields/__init__.py:40
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s com este %(fieldname)s já existe."
-
-#: 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 "Este campo é requerido."
-
-#: db/models/fields/__init__.py:337
-#, fuzzy
-msgid "This value must be an integer."
-msgstr "Este valor deve ser um inteiro."
-
-#: db/models/fields/__init__.py:369
-#, fuzzy
-msgid "This value must be either True or False."
-msgstr "Este valor deve ser Verdadeiro ou Falso."
-
-#: db/models/fields/__init__.py:385
-#, fuzzy
-msgid "This field cannot be null."
-msgstr "Este campo não pode ser nulo."
-
-#: db/models/fields/__init__.py:562
-msgid "Enter a valid filename."
-msgstr "Informe um nome de arquivo válido."
-
-#: db/models/fields/related.py:43
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Por favor informe um %s válido."
-
-#: db/models/fields/related.py:579
-#, fuzzy
-msgid "Separate multiple IDs with commas."
-msgstr "Separe IDs múltiplos com vírgulas."
-#: db/models/fields/related.py:581
-#, fuzzy
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+#: utils/translation/trans_real.py:381
+msgid "MONTH_DAY_FORMAT"
msgstr ""
-" Mantenha pressionado \"Control\", ou \"Command\" no Mac para selecionar "
-"mais de uma opção."
-#: db/models/fields/related.py:625
-#, fuzzy, 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] ""
-"Por favor, entre IDs válidos para %(self)s. O valor %(value)r é inválido."
-msgstr[1] ""
-"Por favor, entre IDs válidos para %(self)s. Os valores %(value)r são inválidos."
-
-#: forms/__init__.py:380
-#, fuzzy, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Certifique-se de que seu texto tenha menos que %s caractere."
-msgstr[1] "Certifique-se de que seu texto tenha menos que %s caracteres."
-
-#: forms/__init__.py:385
-msgid "Line breaks are not allowed here."
-msgstr "Não são permitidas quebras de linha aqui."
-
-#: 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 "Selecione uma escolha válida; '%(data)s' não está em %(choices)s."
-
-#: forms/__init__.py:645
-msgid "The submitted file is empty."
-msgstr "O arquivo enviado está vazio."
-
-#: forms/__init__.py:699
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Informe um número inteiro entre -32.768 e 32.767"
-
-#: forms/__init__.py:708
-msgid "Enter a positive number."
-msgstr "Informe um número positivo"
-
-#: forms/__init__.py:717
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Informe um número inteiro entre 0 e 32.767."
-
-#: template/defaultfilters.py:379
+#: template/defaultfilters.py:491
msgid "yes,no,maybe"
msgstr "sim,não,talvez"
+#~ msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
+#~ msgstr "Você <a href=\"/password_reset/\">esqueceu sua senha</a>?"
+
+#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
+#~ msgstr "Use '[algo]$[salt]$[hexdigest]'"
+
#~ msgid "Comment"
#~ msgstr "Comentário"
diff --git a/django/contrib/localflavor/br/forms.py b/django/contrib/localflavor/br/forms.py
index d3ca28f053..29ad4df53d 100644
--- a/django/contrib/localflavor/br/forms.py
+++ b/django/contrib/localflavor/br/forms.py
@@ -5,7 +5,7 @@ BR-specific Form helpers
from django.newforms import ValidationError
from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES
-from django.newforms.util import smart_unicode
+from django.utils.encoding import smart_unicode
from django.utils.translation import gettext
import re
@@ -15,7 +15,7 @@ class BRZipCodeField(RegexField):
def __init__(self, *args, **kwargs):
super(BRZipCodeField, self).__init__(r'^\d{5}-\d{3}$',
max_length=None, min_length=None,
- error_message=u'Informe um código postal no formato XXXXX-XXX.',
+ error_message=gettext(u'Enter a zip code in the format XXXXX-XXX.'),
*args, **kwargs)
class BRPhoneNumberField(Field):
@@ -27,7 +27,7 @@ class BRPhoneNumberField(Field):
m = phone_digits_re.search(value)
if m:
return u'%s-%s-%s' % (m.group(1), m.group(2), m.group(3))
- raise ValidationError(u'Números de telefone devem estar no formato XX-XXXX-XXXX.')
+ raise ValidationError(gettext(u'Phone numbers must be in XX-XXXX-XXXX format.'))
class BRStateSelect(Select):
"""
diff --git a/django/contrib/localflavor/de/__init__.py b/django/contrib/localflavor/de/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/django/contrib/localflavor/de/__init__.py
diff --git a/django/contrib/localflavor/de/de_states.py b/django/contrib/localflavor/de/de_states.py
new file mode 100644
index 0000000000..c00fd2e293
--- /dev/null
+++ b/django/contrib/localflavor/de/de_states.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*
+from django.utils.translation import gettext_lazy as _
+
+STATE_CHOICES = (
+ ('BW', _('Baden-Wuerttemberg')),
+ ('BY', _('Bavaria')),
+ ('BE', _('Berlin')),
+ ('BB', _('Brandenburg')),
+ ('HB', _('Bremen')),
+ ('HH', _('Hamburg')),
+ ('HE', _('Hessen')),
+ ('MV', _('Mecklenburg-Western Pomerania')),
+ ('NI', _('Lower Saxony')),
+ ('NW', _('North Rhine-Westphalia')),
+ ('RP', _('Rhineland-Palatinate')),
+ ('SL', _('Saarland')),
+ ('SN', _('Saxony')),
+ ('ST', _('Saxony-Anhalt')),
+ ('SH', _('Schleswig-Holstein')),
+ ('TH', _('Thuringia')),
+)
diff --git a/django/contrib/localflavor/de/forms.py b/django/contrib/localflavor/de/forms.py
new file mode 100644
index 0000000000..c82d2d5b8d
--- /dev/null
+++ b/django/contrib/localflavor/de/forms.py
@@ -0,0 +1,87 @@
+"""
+DE-specific Form helpers
+"""
+
+from django.newforms import ValidationError
+from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES
+from django.utils.translation import gettext
+import re
+
+id_re = re.compile(r"^(?P<residence>\d{10})(?P<origin>\w{1,3})[-\ ]?(?P<birthday>\d{7})[-\ ]?(?P<validity>\d{7})[-\ ]?(?P<checksum>\d{1})$")
+
+class DEZipCodeField(RegexField):
+ def __init__(self, *args, **kwargs):
+ super(DEZipCodeField, self).__init__(r'^\d{5}$',
+ max_length=None, min_length=None,
+ error_message=gettext(u'Enter a zip code in the format XXXXX.'),
+ *args, **kwargs)
+
+class DEStateSelect(Select):
+ """
+ A Select widget that uses a list of DE states as its choices.
+ """
+ def __init__(self, attrs=None):
+ from de_states import STATE_CHOICES # relative import
+ super(DEStateSelect, self).__init__(attrs, choices=STATE_CHOICES)
+
+class DEIdentityCardNumberField(Field):
+ """
+ A German identity card number.
+
+ Checks the following rules to determine whether the number is valid:
+
+ * Conforms to the XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format.
+ * No group consists entirely of zeroes.
+ * Included checksums match calculated checksums
+
+ Algorithm is documented at http://de.wikipedia.org/wiki/Personalausweis
+ """
+ def has_valid_checksum(self, number):
+ given_number, given_checksum = number[:-1], number[-1]
+ calculated_checksum = 0
+ fragment = ""
+ parameter = 7
+
+ for i in range(len(given_number)):
+ fragment = str(int(given_number[i])*parameter)
+ if fragment.isalnum():
+ calculated_checksum += int(fragment[-1])
+
+ if parameter == 1:
+ parameter = 7
+ elif parameter == 3:
+ parameter = 1
+ elif parameter ==7:
+ parameter = 3
+
+ if str(calculated_checksum)[-1] == given_checksum:
+ return True
+ return False
+
+ def clean(self, value):
+ super(DEIdentityCardNumberField, self).clean(value)
+ error_msg = gettext(u'Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format')
+ if value in EMPTY_VALUES:
+ return u''
+ match = re.match(id_re, value)
+ if not match:
+ raise ValidationError(error_msg)
+
+ residence, origin, birthday, validity, checksum = \
+ match.groupdict()['residence'], match.groupdict()['origin'], \
+ match.groupdict()['birthday'], match.groupdict()['validity'], \
+ match.groupdict()['checksum']
+
+ if residence == '0000000000' or \
+ birthday == '0000000' or \
+ validity == '0000000':
+ raise ValidationError(error_msg)
+
+ all_digits = "%s%s%s%s" % (residence, birthday, validity, checksum)
+ if not self.has_valid_checksum(residence) or \
+ not self.has_valid_checksum(birthday) or \
+ not self.has_valid_checksum(validity) or \
+ not self.has_valid_checksum(all_digits):
+ raise ValidationError(error_msg)
+
+ return u'%s%s-%s-%s-%s' % (residence, origin, birthday, validity, checksum)
diff --git a/django/contrib/localflavor/fr/forms.py b/django/contrib/localflavor/fr/forms.py
index ee87c5cda2..550596b880 100644
--- a/django/contrib/localflavor/fr/forms.py
+++ b/django/contrib/localflavor/fr/forms.py
@@ -4,7 +4,7 @@ FR-specific Form helpers
from django.newforms import ValidationError
from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES
-from django.newforms.util import smart_unicode
+from django.utils.encoding import smart_unicode
from django.utils.translation import gettext
import re
diff --git a/django/contrib/localflavor/it/forms.py b/django/contrib/localflavor/it/forms.py
index 6760d91799..8e9d8bc11d 100644
--- a/django/contrib/localflavor/it/forms.py
+++ b/django/contrib/localflavor/it/forms.py
@@ -4,7 +4,6 @@ IT-specific Form helpers
from django.newforms import ValidationError
from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES
-from django.newforms.util import smart_unicode
from django.utils.translation import gettext
import re
diff --git a/django/contrib/localflavor/usa/forms.py b/django/contrib/localflavor/usa/forms.py
index 9461f4fe80..feda68291b 100644
--- a/django/contrib/localflavor/usa/forms.py
+++ b/django/contrib/localflavor/usa/forms.py
@@ -4,11 +4,12 @@ USA-specific Form helpers
from django.newforms import ValidationError
from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES
-from django.newforms.util import smart_unicode
+from django.utils.encoding import smart_unicode
from django.utils.translation import gettext
import re
phone_digits_re = re.compile(r'^(?:1-?)?(\d{3})[-\.]?(\d{3})[-\.]?(\d{4})$')
+ssn_re = re.compile(r"^(?P<area>\d{3})[-\ ]?(?P<group>\d{2})[-\ ]?(?P<serial>\d{4})$")
class USZipCodeField(RegexField):
def __init__(self, *args, **kwargs):
@@ -28,6 +29,45 @@ class USPhoneNumberField(Field):
return u'%s-%s-%s' % (m.group(1), m.group(2), m.group(3))
raise ValidationError(u'Phone numbers must be in XXX-XXX-XXXX format.')
+class USSocialSecurityNumberField(Field):
+ """
+ A United States Social Security number.
+
+ Checks the following rules to determine whether the number is valid:
+
+ * Conforms to the XXX-XX-XXXX format.
+ * No group consists entirely of zeroes.
+ * The leading group is not "666" (block "666" will never be allocated).
+ * The number is not in the promotional block 987-65-4320 through 987-65-4329,
+ which are permanently invalid.
+ * The number is not one known to be invalid due to otherwise widespread
+ promotional use or distribution (e.g., the Woolworth's number or the 1962
+ promotional number).
+ """
+ def clean(self, value):
+ super(USSocialSecurityNumberField, self).clean(value)
+ if value in EMPTY_VALUES:
+ return u''
+ msg = gettext(u'Enter a valid U.S. Social Security number in XXX-XX-XXXX format.')
+ match = re.match(ssn_re, value)
+ if not match:
+ raise ValidationError(msg)
+ area, group, serial = match.groupdict()['area'], match.groupdict()['group'], match.groupdict()['serial']
+
+ # First pass: no blocks of all zeroes.
+ if area == '000' or \
+ group == '00' or \
+ serial == '0000':
+ raise ValidationError(msg)
+
+ # Second pass: promotional and otherwise permanently invalid numbers.
+ if area == '666' or \
+ (area == '987' and group == '65' and 4320 <= int(serial) <= 4329) or \
+ value == '078-05-1120' or \
+ value == '219-09-9999':
+ raise ValidationError(msg)
+ return u'%s-%s-%s' % (area, group, serial)
+
class USStateField(Field):
"""
A form field that validates its input is a U.S. state name or abbreviation.
diff --git a/django/newforms/fields.py b/django/newforms/fields.py
index 72c5047030..c3b74e93f7 100644
--- a/django/newforms/fields.py
+++ b/django/newforms/fields.py
@@ -3,7 +3,8 @@ Field classes
"""
from django.utils.translation import gettext
-from util import ErrorList, ValidationError, smart_unicode
+from django.utils.encoding import smart_unicode
+from util import ErrorList, ValidationError
from widgets import TextInput, PasswordInput, HiddenInput, MultipleHiddenInput, CheckboxInput, Select, NullBooleanSelect, SelectMultiple
import datetime
import re
diff --git a/django/newforms/forms.py b/django/newforms/forms.py
index 2b3aa97428..1f37da91ff 100644
--- a/django/newforms/forms.py
+++ b/django/newforms/forms.py
@@ -4,9 +4,10 @@ Form classes
from django.utils.datastructures import SortedDict, MultiValueDict
from django.utils.html import escape
+from django.utils.encoding import StrAndUnicode
from fields import Field
from widgets import TextInput, Textarea, HiddenInput, MultipleHiddenInput
-from util import flatatt, StrAndUnicode, ErrorDict, ErrorList, ValidationError
+from util import flatatt, ErrorDict, ErrorList, ValidationError
import copy
__all__ = ('BaseForm', 'Form')
@@ -227,9 +228,9 @@ class BoundField(StrAndUnicode):
value = self.as_widget(self.field.widget)
if not isinstance(value, basestring):
# Some Widget render() methods -- notably RadioSelect -- return a
- # "special" object rather than a string. Call the __str__() on that
+ # "special" object rather than a string. Call __unicode__() on that
# object to get its rendered value.
- value = value.__str__()
+ value = unicode(value)
return value
def _errors(self):
diff --git a/django/newforms/util.py b/django/newforms/util.py
index f98027c2e3..5fc0223f5b 100644
--- a/django/newforms/util.py
+++ b/django/newforms/util.py
@@ -1,41 +1,12 @@
from django.conf import settings
from django.utils.html import escape
from django.utils.functional import Promise, lazy
+from django.utils.encoding import smart_unicode
# Converts a dictionary to a single string with key="value", XML-style with
# a leading space. Assumes keys do not need to be XML-escaped.
flatatt = lambda attrs: u''.join([u' %s="%s"' % (k, escape(v)) for k, v in attrs.items()])
-def smart_unicode(s):
- if isinstance(s, Promise):
- # The input is something from gettext_lazy or similar. We don't want to
- # translate it until render time, so defer the conversion.
- return smart_unicode_lazy(s)
- else:
- return smart_unicode_immediate(s)
-
-def smart_unicode_immediate(s):
- if not isinstance(s, basestring):
- if hasattr(s, '__unicode__'):
- s = unicode(s)
- else:
- s = unicode(str(s), settings.DEFAULT_CHARSET)
- elif not isinstance(s, unicode):
- s = unicode(s, settings.DEFAULT_CHARSET)
- return s
-
-smart_unicode_lazy = lazy(smart_unicode_immediate, unicode)
-
-class StrAndUnicode(object):
- """
- A class whose __str__ returns its __unicode__ as a bytestring
- according to settings.DEFAULT_CHARSET.
-
- Useful as a mix-in.
- """
- def __str__(self):
- return self.__unicode__().encode(settings.DEFAULT_CHARSET)
-
class ErrorDict(dict):
"""
A collection of errors that knows how to display itself in various formats.
diff --git a/django/newforms/widgets.py b/django/newforms/widgets.py
index 58d8ab1322..8d292673a5 100644
--- a/django/newforms/widgets.py
+++ b/django/newforms/widgets.py
@@ -9,10 +9,11 @@ __all__ = (
'MultiWidget', 'SplitDateTimeWidget',
)
-from util import flatatt, StrAndUnicode, smart_unicode
+from util import flatatt
from django.utils.datastructures import MultiValueDict
from django.utils.html import escape
from django.utils.translation import gettext
+from django.utils.encoding import StrAndUnicode, smart_unicode
from itertools import chain
try:
diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py
index 6a37c163e9..448ad8a50b 100644
--- a/django/template/defaulttags.py
+++ b/django/template/defaulttags.py
@@ -989,7 +989,9 @@ widthratio = register.tag(widthratio)
def do_with(parser, token):
"""
Add a value to the context (inside of this block) for caching and easy
- access. For example::
+ access.
+
+ For example::
{% with person.some_sql_method as total %}
{{ total }} object{{ total|pluralize }}
diff --git a/django/utils/encoding.py b/django/utils/encoding.py
new file mode 100644
index 0000000000..4774fb0d26
--- /dev/null
+++ b/django/utils/encoding.py
@@ -0,0 +1,32 @@
+from django.conf import settings
+from django.utils.functional import Promise
+
+def smart_unicode(s):
+ if isinstance(s, Promise):
+ # The input is the result of a gettext_lazy() call, or similar. It will
+ # already be encoded in DEFAULT_CHARSET on evaluation and we don't want
+ # to evaluate it until render time.
+ # FIXME: This isn't totally consistent, because it eventually returns a
+ # bytestring rather than a unicode object. It works wherever we use
+ # smart_unicode() at the moment. Fixing this requires work in the
+ # i18n internals.
+ return s
+ if not isinstance(s, basestring,):
+ if hasattr(s, '__unicode__'):
+ s = unicode(s)
+ else:
+ s = unicode(str(s), settings.DEFAULT_CHARSET)
+ elif not isinstance(s, unicode):
+ s = unicode(s, settings.DEFAULT_CHARSET)
+ return s
+
+class StrAndUnicode(object):
+ """
+ A class whose __str__ returns its __unicode__ as a bytestring
+ according to settings.DEFAULT_CHARSET.
+
+ Useful as a mix-in.
+ """
+ def __str__(self):
+ return self.__unicode__().encode(settings.DEFAULT_CHARSET)
+
diff --git a/django/utils/html.py b/django/utils/html.py
index baa2fb06fc..607362817b 100644
--- a/django/utils/html.py
+++ b/django/utils/html.py
@@ -1,6 +1,7 @@
"HTML utilities suitable for global use."
import re, string
+from django.utils.encoding import smart_unicode
# Configuration for urlize() function
LEADING_PUNCTUATION = ['(', '<', '&lt;']
diff --git a/django/utils/translation/__init__.py b/django/utils/translation/__init__.py
index 39ebd6f75a..dbb97af76c 100644
--- a/django/utils/translation/__init__.py
+++ b/django/utils/translation/__init__.py
@@ -7,7 +7,7 @@ __all__ = ['gettext', 'gettext_noop', 'gettext_lazy', 'ngettext',
'ngettext_lazy', 'string_concat', 'activate', 'deactivate',
'get_language', 'get_language_bidi', 'get_date_formats',
'get_partial_date_formats', 'check_for_language', 'to_locale',
- 'get_language_from_request', 'install']
+ 'get_language_from_request', 'install', 'templatize']
# Here be dragons, so a short explanation of the logic won't hurt:
# We are trying to solve two problems: (1) access settings, in particular
@@ -92,3 +92,6 @@ def get_language_from_request(request):
def install():
return real_install()
+def templatize(src):
+ return real_templatize(src)
+
diff --git a/django/utils/translation/trans_null.py b/django/utils/translation/trans_null.py
index 75ad573357..10b07529e3 100644
--- a/django/utils/translation/trans_null.py
+++ b/django/utils/translation/trans_null.py
@@ -9,7 +9,6 @@ def ngettext(singular, plural, number):
return plural
ngettext_lazy = ngettext
-gettext = gettext_noop = gettext_lazy = _ = lambda x: x
string_concat = lambda *strings: ''.join([str(el) for el in strings])
activate = lambda x: None
deactivate = install = lambda: None
@@ -19,6 +18,20 @@ get_date_formats = lambda: (settings.DATE_FORMAT, settings.DATETIME_FORMAT, sett
get_partial_date_formats = lambda: (settings.YEAR_MONTH_FORMAT, settings.MONTH_DAY_FORMAT)
check_for_language = lambda x: True
+TECHNICAL_ID_MAP = {
+ "DATE_WITH_TIME_FULL": settings.DATETIME_FORMAT,
+ "DATE_FORMAT": settings.DATE_FORMAT,
+ "DATETIME_FORMAT": settings.DATETIME_FORMAT,
+ "TIME_FORMAT": settings.TIME_FORMAT,
+ "YEAR_MONTH_FORMAT": settings.YEAR_MONTH_FORMAT,
+ "MONTH_DAY_FORMAT": settings.MONTH_DAY_FORMAT,
+}
+
+def gettext(message):
+ return TECHNICAL_ID_MAP.get(message, message)
+
+gettext_noop = gettext_lazy = _ = gettext
+
def to_locale(language):
p = language.find('-')
if p >= 0:
diff --git a/docs/faq.txt b/docs/faq.txt
index b5150a0967..202b73c6be 100644
--- a/docs/faq.txt
+++ b/docs/faq.txt
@@ -382,9 +382,9 @@ Why do I get an error about importing DJANGO_SETTINGS_MODULE?
Make sure that:
* The environment variable DJANGO_SETTINGS_MODULE is set to a fully-qualified
- Python module (i.e. "mysite.settings.main").
+ Python module (i.e. "mysite.settings").
- * Said module is on ``sys.path`` (``import mysite.settings.main`` should work).
+ * Said module is on ``sys.path`` (``import mysite.settings`` should work).
* The module doesn't contain syntax errors (of course).
diff --git a/scripts/rpm-install.sh b/scripts/rpm-install.sh
index 07a087c447..d3d95bcdb1 100644
--- a/scripts/rpm-install.sh
+++ b/scripts/rpm-install.sh
@@ -1,12 +1,14 @@
#! /bin/sh
#
-# this file is *inserted* into the install section of the generated
-# spec file
+# This file becomes the install section of the generated spec file.
#
-# this is, what dist.py normally does
+# This is what dist.py normally does.
python setup.py install --root=${RPM_BUILD_ROOT} --record="INSTALLED_FILES"
+# Sort the filelist so that directories appear before files. This avoids
+# duplicate filename problems on some systems.
+touch DIRS
for i in `cat INSTALLED_FILES`; do
if [ -f ${RPM_BUILD_ROOT}/$i ]; then
echo $i >>FILES
@@ -16,4 +18,6 @@ for i in `cat INSTALLED_FILES`; do
fi
done
-cat DIRS FILES >INSTALLED_FILES
+# Make sure we match foo.pyo and foo.pyc along with foo.py (but only once each)
+sed -e "/\.py[co]$/d" -e "s/\.py$/.py*/" DIRS FILES >INSTALLED_FILES
+
diff --git a/setup.cfg b/setup.cfg
index ce9779aa00..99bc60c9a3 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,4 +1,4 @@
[bdist_rpm]
-doc_files = docs/*.txt
+doc_files = docs examples extras AUTHORS INSTALL LICENSE README
install-script = scripts/rpm-install.sh
diff --git a/setup.py b/setup.py
index 6fd6fab816..61e0fd55e9 100644
--- a/setup.py
+++ b/setup.py
@@ -3,6 +3,20 @@ from distutils.command.install import INSTALL_SCHEMES
import os
import sys
+def fullsplit(path, result=None):
+ """
+ Split a pathname into components (the opposite of os.path.join) in a
+ platform-neutral way.
+ """
+ if result is None:
+ result = []
+ head, tail = os.path.split(path)
+ if head == '':
+ return [tail] + result
+ if head == path:
+ return result
+ return fullsplit(head, [tail] + result)
+
# Tell distutils to put the data_files in platform-specific installation
# locations. See here for an explanation:
# http://groups.google.com/group/comp.lang.python/browse_thread/thread/35ec7b2fed36eaec/2105ee4d9e8042cb
@@ -13,27 +27,28 @@ for scheme in INSTALL_SCHEMES.values():
# an easy way to do this.
packages, data_files = [], []
root_dir = os.path.dirname(__file__)
-len_root_dir = len(root_dir)
django_dir = os.path.join(root_dir, 'django')
+pieces = fullsplit(root_dir)
+if pieces[-1] == '':
+ len_root_dir = len(pieces) - 1
+else:
+ len_root_dir = len(pieces)
for dirpath, dirnames, filenames in os.walk(django_dir):
# Ignore dirnames that start with '.'
for i, dirname in enumerate(dirnames):
if dirname.startswith('.'): del dirnames[i]
if '__init__.py' in filenames:
- package = dirpath[len_root_dir:].lstrip('/').replace('/', '.')
- packages.append(package)
- else:
+ packages.append('.'.join(fullsplit(dirpath)[len_root_dir:]))
+ elif filenames:
data_files.append([dirpath, [os.path.join(dirpath, f) for f in filenames]])
-# Small hack for working with bdist_wininst.
-# See http://mail.python.org/pipermail/distutils-sig/2004-August/004134.html
-if len(sys.argv) > 1 and sys.argv[1] == 'bdist_wininst':
- for file_info in data_files:
- file_info[0] = '/PURELIB/%s' % file_info[0]
-
# Dynamically calculate the version based on django.VERSION.
-version = "%d.%d-%s" % (__import__('django').VERSION)
+version_tuple = __import__('django').VERSION
+if version_tuple[2] is not None:
+ version = "%d.%d_%s" % version_tuple
+else:
+ version = "%d.%d" % version_tuple[:2]
setup(
name = "Django",
diff --git a/tests/regressiontests/defaultfilters/tests.py b/tests/regressiontests/defaultfilters/tests.py
index db3f7fab2a..4a2e9432b0 100644
--- a/tests/regressiontests/defaultfilters/tests.py
+++ b/tests/regressiontests/defaultfilters/tests.py
@@ -1,3 +1,5 @@
+# -*- coding: utf-8 -*-
+
r"""
>>> floatformat(7.7)
'7.7'
@@ -87,19 +89,19 @@ u'\xeb'
>>> truncatewords('A sentence with a few words in it', 'not a number')
'A sentence with a few words in it'
->>> truncatewords_html('<p>one <a href="#">two - three <br>four</a> five</p>', 0)
+>>> truncatewords_html('<p>one <a href="#">two - three <br>four</a> five</p>', 0)
''
-
->>> truncatewords_html('<p>one <a href="#">two - three <br>four</a> five</p>', 2)
+
+>>> truncatewords_html('<p>one <a href="#">two - three <br>four</a> five</p>', 2)
'<p>one <a href="#">two ...</a></p>'
-
->>> truncatewords_html('<p>one <a href="#">two - three <br>four</a> five</p>', 4)
+
+>>> truncatewords_html('<p>one <a href="#">two - three <br>four</a> five</p>', 4)
'<p>one <a href="#">two - three <br>four ...</a></p>'
->>> truncatewords_html('<p>one <a href="#">two - three <br>four</a> five</p>', 5)
+>>> truncatewords_html('<p>one <a href="#">two - three <br>four</a> five</p>', 5)
'<p>one <a href="#">two - three <br>four</a> five</p>'
->>> truncatewords_html('<p>one <a href="#">two - three <br>four</a> five</p>', 100)
+>>> truncatewords_html('<p>one <a href="#">two - three <br>four</a> five</p>', 100)
'<p>one <a href="#">two - three <br>four</a> five</p>'
>>> upper('Mixed case input')
@@ -166,6 +168,9 @@ u'\xcb'
>>> escape('<some html & special characters > here')
'&lt;some html &amp; special characters &gt; here'
+>>> escape(u'<some html & special characters > here ĐÅ€£')
+u'&lt;some html &amp; special characters &gt; here \xc4\x90\xc3\x85\xe2\x82\xac\xc2\xa3'
+
>>> linebreaks('line 1')
'<p>line 1</p>'
diff --git a/tests/regressiontests/forms/localflavor.py b/tests/regressiontests/forms/localflavor.py
index f166a24ef0..e9c027b5c8 100644
--- a/tests/regressiontests/forms/localflavor.py
+++ b/tests/regressiontests/forms/localflavor.py
@@ -246,6 +246,18 @@ as its choices.
<option value="WY">Wyoming</option>
</select>
+# USSocialSecurityNumberField #################################################
+>>> from django.contrib.localflavor.usa.forms import USSocialSecurityNumberField
+>>> f = USSocialSecurityNumberField()
+>>> f.clean('987-65-4330')
+u'987-65-4330'
+>>> f.clean('987654330')
+u'987-65-4330'
+>>> f.clean('078-05-1120')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a valid U.S. Social Security number in XXX-XX-XXXX format.']
+
# UKPostcodeField #############################################################
UKPostcodeField validates that the data is a valid UK postcode.
@@ -734,23 +746,23 @@ u'12345-123'
>>> f.clean('12345_123')
Traceback (most recent call last):
...
-ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
+ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
>>> f.clean('1234-123')
Traceback (most recent call last):
...
-ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
+ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
>>> f.clean('abcde-abc')
Traceback (most recent call last):
...
-ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
+ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
>>> f.clean('12345-')
Traceback (most recent call last):
...
-ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
+ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
>>> f.clean('-123')
Traceback (most recent call last):
...
-ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
+ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
>>> f.clean('')
Traceback (most recent call last):
...
@@ -768,23 +780,23 @@ u''
>>> f.clean('-123')
Traceback (most recent call last):
...
-ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
+ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
>>> f.clean('12345-')
Traceback (most recent call last):
...
-ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
+ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
>>> f.clean('abcde-abc')
Traceback (most recent call last):
...
-ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
+ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
>>> f.clean('1234-123')
Traceback (most recent call last):
...
-ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
+ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
>>> f.clean('12345_123')
Traceback (most recent call last):
...
-ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
+ValidationError: [u'Enter a zip code in the format XXXXX-XXX.']
>>> f.clean('12345-123')
u'12345-123'
@@ -839,4 +851,35 @@ u'41-3562-3464'
>>> w = BRStateSelect()
>>> w.render('states', 'PR')
u'<select name="states">\n<option value="AC">Acre</option>\n<option value="AL">Alagoas</option>\n<option value="AP">Amap\xe1</option>\n<option value="AM">Amazonas</option>\n<option value="BA">Bahia</option>\n<option value="CE">Cear\xe1</option>\n<option value="DF">Distrito Federal</option>\n<option value="ES">Esp\xedrito Santo</option>\n<option value="GO">Goi\xe1s</option>\n<option value="MA">Maranh\xe3o</option>\n<option value="MT">Mato Grosso</option>\n<option value="MS">Mato Grosso do Sul</option>\n<option value="MG">Minas Gerais</option>\n<option value="PA">Par\xe1</option>\n<option value="PB">Para\xedba</option>\n<option value="PR" selected="selected">Paran\xe1</option>\n<option value="PE">Pernambuco</option>\n<option value="PI">Piau\xed</option>\n<option value="RJ">Rio de Janeiro</option>\n<option value="RN">Rio Grande do Norte</option>\n<option value="RS">Rio Grande do Sul</option>\n<option value="RO">Rond\xf4nia</option>\n<option value="RR">Roraima</option>\n<option value="SC">Santa Catarina</option>\n<option value="SP">S\xe3o Paulo</option>\n<option value="SE">Sergipe</option>\n<option value="TO">Tocantins</option>\n</select>'
+
+# DEZipCodeField ##############################################################
+
+>>> from django.contrib.localflavor.de.forms import DEZipCodeField
+>>> f = DEZipCodeField()
+>>> f.clean('99423')
+u'99423'
+>>> f.clean(' 99423')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a zip code in the format XXXXX.']
+
+# DEStateSelect #############################################################
+
+>>> from django.contrib.localflavor.de.forms import DEStateSelect
+>>> w = DEStateSelect()
+>>> w.render('states', 'TH')
+u'<select name="states">\n<option value="BW">Baden-Wuerttemberg</option>\n<option value="BY">Bavaria</option>\n<option value="BE">Berlin</option>\n<option value="BB">Brandenburg</option>\n<option value="HB">Bremen</option>\n<option value="HH">Hamburg</option>\n<option value="HE">Hessen</option>\n<option value="MV">Mecklenburg-Western Pomerania</option>\n<option value="NI">Lower Saxony</option>\n<option value="NW">North Rhine-Westphalia</option>\n<option value="RP">Rhineland-Palatinate</option>\n<option value="SL">Saarland</option>\n<option value="SN">Saxony</option>\n<option value="ST">Saxony-Anhalt</option>\n<option value="SH">Schleswig-Holstein</option>\n<option value="TH" selected="selected">Thuringia</option>\n</select>'
+
+# DEIdentityCardNumberField #################################################
+
+>>> from django.contrib.localflavor.de.forms import DEIdentityCardNumberField
+>>> f = DEIdentityCardNumberField()
+>>> f.clean('7549313035D-6004103-0903042-0')
+u'7549313035D-6004103-0903042-0'
+>>> f.clean('9786324830D 6104243 0910271 2')
+u'9786324830D-6104243-0910271-2'
+>>> f.clean('0434657485D-6407276-0508137-9')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format']
"""
diff --git a/tests/regressiontests/forms/regressions.py b/tests/regressiontests/forms/regressions.py
index 02b38ec58d..5daabc03af 100644
--- a/tests/regressiontests/forms/regressions.py
+++ b/tests/regressiontests/forms/regressions.py
@@ -11,11 +11,11 @@ It should be possible to re-use attribute dictionaries (#3810)
>>> TestForm(auto_id=False).as_p()
u'<p>F1: <input type="text" class="special" name="f1" maxlength="10" /></p>\n<p>F2: <input type="text" class="special" name="f2" /></p>'
-#######################
-# Tests for form i18n #
-#######################
+#######################
+# Tests for form i18n #
+#######################
There were some problems with form translations in #3600
-
+
>>> from django.utils.translation import gettext_lazy, activate, deactivate
>>> class SomeForm(Form):
... username = CharField(max_length=10, label=gettext_lazy('Username'))
@@ -26,4 +26,12 @@ There were some problems with form translations in #3600
>>> print f.as_p()
<p><label for="id_username">Benutzername:</label> <input id="id_username" type="text" name="username" maxlength="10" /></p>
>>> deactivate()
+
+Unicode decoding problems...
+>>> GENDERS = (('0', u'En tied\xe4'), ('1', u'Mies'), ('2', u'Nainen'))
+>>> class SomeForm(Form):
+... somechoice = ChoiceField(choices=GENDERS, widget=RadioSelect())
+>>> f = SomeForm()
+>>> f.as_p()
+u'<p><label for="id_somechoice_0">Somechoice:</label> <ul>\n<li><label><input type="radio" id="id_somechoice_0" value="0" name="somechoice" /> En tied\xe4</label></li>\n<li><label><input type="radio" id="id_somechoice_1" value="1" name="somechoice" /> Mies</label></li>\n<li><label><input type="radio" id="id_somechoice_2" value="2" name="somechoice" /> Nainen</label></li>\n</ul></p>'
"""
diff --git a/tests/regressiontests/forms/tests.py b/tests/regressiontests/forms/tests.py
index 8ecc9f0205..e78a4d0ec3 100644
--- a/tests/regressiontests/forms/tests.py
+++ b/tests/regressiontests/forms/tests.py
@@ -1455,7 +1455,7 @@ u''
>>> f.clean('http://www.google.com') # This will fail if there's no Internet connection
u'http://www.google.com'
-EmailField also access min_length and max_length parameters, for convenience.
+URLField also access min_length and max_length parameters, for convenience.
>>> f = URLField(min_length=15, max_length=20)
>>> f.clean('http://f.com')
Traceback (most recent call last):
@@ -3276,7 +3276,7 @@ True
#################################
# smart_unicode tests
->>> from django.newforms.util import smart_unicode
+>>> from django.utils.encoding import smart_unicode
>>> class Test:
... def __str__(self):
... return 'ŠĐĆŽćžšđ'