summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
Diffstat (limited to 'django')
-rw-r--r--django/__init__.py2
-rw-r--r--django/conf/global_settings.py6
-rw-r--r--django/conf/locale/de/LC_MESSAGES/django.mobin52607 -> 55380 bytes
-rw-r--r--django/conf/locale/de/LC_MESSAGES/django.po1243
-rw-r--r--django/conf/locale/es/LC_MESSAGES/django.mobin63019 -> 68193 bytes
-rw-r--r--django/conf/locale/es/LC_MESSAGES/django.po1850
-rw-r--r--django/conf/locale/es_AR/LC_MESSAGES/django.mobin67118 -> 67678 bytes
-rw-r--r--django/conf/locale/es_AR/LC_MESSAGES/django.po1372
-rw-r--r--django/conf/locale/fr/LC_MESSAGES/django.mobin67158 -> 67164 bytes
-rw-r--r--django/conf/locale/fr/LC_MESSAGES/django.po70
-rw-r--r--django/conf/locale/it/LC_MESSAGES/django.mobin66524 -> 69007 bytes
-rw-r--r--django/conf/locale/it/LC_MESSAGES/django.po1179
-rw-r--r--django/conf/locale/ka/LC_MESSAGES/django.mobin67194 -> 67386 bytes
-rw-r--r--django/conf/locale/ka/LC_MESSAGES/django.po346
-rw-r--r--django/conf/locale/nl/LC_MESSAGES/django.mobin42340 -> 66957 bytes
-rw-r--r--django/conf/locale/nl/LC_MESSAGES/django.po2702
-rw-r--r--django/conf/locale/no/LC_MESSAGES/django.mobin40780 -> 41683 bytes
-rw-r--r--django/conf/locale/no/LC_MESSAGES/django.po3422
-rw-r--r--django/conf/locale/pl/LC_MESSAGES/django.mobin66481 -> 67643 bytes
-rw-r--r--django/conf/locale/pl/LC_MESSAGES/django.po1098
-rw-r--r--django/conf/locale/pt_BR/LC_MESSAGES/django.mobin52903 -> 52903 bytes
-rw-r--r--django/conf/locale/pt_BR/LC_MESSAGES/django.po2
-rw-r--r--django/conf/locale/sr/LC_MESSAGES/django.mobin32213 -> 42073 bytes
-rw-r--r--django/conf/locale/sr/LC_MESSAGES/django.po4814
-rw-r--r--django/conf/locale/sr/LC_MESSAGES/djangojs.mobin1669 -> 1810 bytes
-rw-r--r--django/conf/locale/sr/LC_MESSAGES/djangojs.po59
-rw-r--r--django/conf/locale/sv/LC_MESSAGES/django.mobin57325 -> 57615 bytes
-rw-r--r--django/conf/locale/sv/LC_MESSAGES/django.po1238
-rw-r--r--django/conf/project_template/urls.py13
-rw-r--r--django/contrib/admin/__init__.py7
-rw-r--r--django/contrib/admin/media/css/rtl.css3
-rw-r--r--django/contrib/admin/options.py99
-rw-r--r--django/contrib/admin/sites.py68
-rw-r--r--django/contrib/admin/templates/admin/includes/fieldset.html4
-rw-r--r--django/contrib/admin/templates/admin_doc/model_detail.html2
-rw-r--r--django/contrib/admin/templates/registration/password_reset_complete.html16
-rw-r--r--django/contrib/admin/templates/registration/password_reset_confirm.html32
-rw-r--r--django/contrib/admin/templates/registration/password_reset_done.html2
-rw-r--r--django/contrib/admin/templates/registration/password_reset_email.html14
-rw-r--r--django/contrib/admin/templates/registration/password_reset_form.html2
-rw-r--r--django/contrib/admin/validation.py11
-rw-r--r--django/contrib/admin/views/decorators.py8
-rw-r--r--django/contrib/admin/views/main.py1
-rw-r--r--django/contrib/admin/widgets.py3
-rw-r--r--django/contrib/admindocs/views.py2
-rw-r--r--django/contrib/auth/admin.py2
-rw-r--r--django/contrib/auth/decorators.py4
-rw-r--r--django/contrib/auth/forms.py103
-rw-r--r--django/contrib/auth/management/commands/createsuperuser.py2
-rw-r--r--django/contrib/auth/models.py3
-rw-r--r--django/contrib/auth/tests/__init__.py5
-rw-r--r--django/contrib/auth/tests/basic.py21
-rw-r--r--django/contrib/auth/tests/forms.py33
-rw-r--r--django/contrib/auth/tests/tokens.py29
-rw-r--r--django/contrib/auth/tests/views.py88
-rw-r--r--django/contrib/auth/tokens.py66
-rw-r--r--django/contrib/auth/urls.py11
-rw-r--r--django/contrib/auth/views.py64
-rw-r--r--django/contrib/comments/models.py4
-rw-r--r--django/contrib/contenttypes/generic.py5
-rw-r--r--django/contrib/csrf/middleware.py53
-rw-r--r--django/contrib/databrowse/plugins/calendars.py1
-rw-r--r--django/contrib/databrowse/plugins/fieldchoices.py1
-rw-r--r--django/contrib/databrowse/sites.py2
-rw-r--r--django/contrib/databrowse/views.py2
-rw-r--r--django/contrib/formtools/preview.py7
-rw-r--r--django/contrib/formtools/tests.py1
-rw-r--r--django/contrib/formtools/wizard.py7
-rw-r--r--django/contrib/gis/db/backend/oracle/field.py2
-rw-r--r--django/contrib/gis/db/backend/postgis/field.py2
-rw-r--r--django/contrib/gis/db/models/manager.py5
-rw-r--r--django/contrib/localflavor/at/__init__.py0
-rw-r--r--django/contrib/localflavor/at/at_states.py14
-rw-r--r--django/contrib/localflavor/at/forms.py65
-rw-r--r--django/contrib/localflavor/ro/__init__.py0
-rw-r--r--django/contrib/localflavor/ro/forms.py200
-rw-r--r--django/contrib/localflavor/ro/ro_counties.py52
-rw-r--r--django/contrib/redirects/admin.py11
-rw-r--r--django/contrib/redirects/models.py15
-rw-r--r--django/contrib/sessions/backends/base.py10
-rw-r--r--django/contrib/sessions/backends/cache.py2
-rw-r--r--django/contrib/sessions/backends/db.py3
-rw-r--r--django/contrib/sessions/middleware.py5
-rw-r--r--django/contrib/sessions/models.py6
-rw-r--r--django/contrib/sitemaps/__init__.py16
-rw-r--r--django/contrib/sitemaps/management/__init__.py0
-rw-r--r--django/contrib/sitemaps/management/commands/__init__.py0
-rw-r--r--django/contrib/sitemaps/views.py24
-rw-r--r--django/contrib/sites/tests.py5
-rw-r--r--django/contrib/syndication/feeds.py2
-rw-r--r--django/core/cache/__init__.py23
-rw-r--r--django/core/cache/backends/base.py9
-rw-r--r--django/core/cache/backends/filebased.py29
-rw-r--r--django/core/cache/backends/locmem.py2
-rw-r--r--django/core/files/temp.py58
-rw-r--r--django/core/files/uploadedfile.py3
-rw-r--r--django/core/files/uploadhandler.py3
-rw-r--r--django/core/handlers/base.py41
-rw-r--r--django/core/handlers/modpython.py25
-rw-r--r--django/core/handlers/wsgi.py19
-rw-r--r--django/core/mail.py7
-rw-r--r--django/core/management/commands/compilemessages.py3
-rw-r--r--django/core/management/commands/test.py1
-rw-r--r--django/core/management/commands/testserver.py1
-rw-r--r--django/core/management/sql.py12
-rw-r--r--django/core/management/validation.py45
-rw-r--r--django/core/paginator.py98
-rw-r--r--django/core/serializers/base.py6
-rw-r--r--django/core/serializers/json.py9
-rw-r--r--django/core/serializers/pyyaml.py8
-rw-r--r--django/core/urlresolvers.py33
-rw-r--r--django/db/backends/__init__.py70
-rw-r--r--django/db/backends/mysql/base.py19
-rw-r--r--django/db/backends/oracle/base.py30
-rw-r--r--django/db/backends/oracle/query.py9
-rw-r--r--django/db/backends/sqlite3/base.py8
-rw-r--r--django/db/backends/util.py12
-rw-r--r--django/db/models/__init__.py2
-rw-r--r--django/db/models/base.py38
-rw-r--r--django/db/models/fields/__init__.py244
-rw-r--r--django/db/models/fields/related.py173
-rw-r--r--django/db/models/fields/subclassing.py5
-rw-r--r--django/db/models/query.py35
-rw-r--r--django/db/models/sql/query.py34
-rw-r--r--django/db/models/sql/where.py39
-rw-r--r--django/dispatch/dispatcher.py32
-rw-r--r--django/dispatch/saferef.py1
-rw-r--r--django/forms/fields.py16
-rw-r--r--django/forms/formsets.py18
-rw-r--r--django/forms/models.py30
-rw-r--r--django/forms/util.py1
-rw-r--r--django/http/__init__.py13
-rw-r--r--django/http/multipartparser.py15
-rw-r--r--django/middleware/common.py6
-rw-r--r--django/oldforms/__init__.py4
-rw-r--r--django/template/context.py2
-rw-r--r--django/template/defaulttags.py35
-rw-r--r--django/test/client.py2
-rw-r--r--django/test/testcases.py144
-rw-r--r--django/utils/cache.py6
-rw-r--r--django/utils/dateformat.py2
-rw-r--r--django/utils/encoding.py2
-rw-r--r--django/utils/functional.py60
-rw-r--r--django/utils/hashcompat.py16
-rw-r--r--django/utils/html.py6
-rw-r--r--django/utils/http.py29
-rw-r--r--django/utils/maxlength.py65
-rw-r--r--django/utils/simplejson/LICENSE.txt1
-rw-r--r--django/utils/simplejson/__init__.py186
-rw-r--r--django/utils/simplejson/decoder.py104
-rw-r--r--django/utils/simplejson/encoder.py86
-rw-r--r--django/utils/simplejson/jsonfilter.py40
-rw-r--r--django/utils/simplejson/scanner.py18
-rw-r--r--django/utils/simplejson/tool.py44
-rw-r--r--django/utils/thread_support.py12
-rw-r--r--django/utils/translation/trans_real.py13
-rw-r--r--django/views/debug.py2
-rw-r--r--django/views/generic/create_update.py8
-rw-r--r--django/views/generic/simple.py1
159 files changed, 13784 insertions, 9032 deletions
diff --git a/django/__init__.py b/django/__init__.py
index de473fa4e9..e5f3d5df9b 100644
--- a/django/__init__.py
+++ b/django/__init__.py
@@ -1,4 +1,4 @@
-VERSION = (0, 97, 'pre')
+VERSION = (1, 0, 'alpha')
def get_version():
"Returns the version as a human-format string."
diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py
index 2c9720da10..811feed349 100644
--- a/django/conf/global_settings.py
+++ b/django/conf/global_settings.py
@@ -188,6 +188,9 @@ APPEND_SLASH = True
# Whether to prepend the "www." subdomain to URLs that don't have it.
PREPEND_WWW = False
+# Override the server-derived value of SCRIPT_NAME
+FORCE_SCRIPT_NAME = None
+
# List of compiled regular expression objects representing User-Agent strings
# that are not allowed to visit any page, systemwide. Use this for bad
# robots/crawlers. Here are a few examples:
@@ -363,6 +366,9 @@ LOGOUT_URL = '/accounts/logout/'
LOGIN_REDIRECT_URL = '/accounts/profile/'
+# The number of days a password reset link is valid for
+PASSWORD_RESET_TIMEOUT_DAYS = 3
+
###########
# TESTING #
###########
diff --git a/django/conf/locale/de/LC_MESSAGES/django.mo b/django/conf/locale/de/LC_MESSAGES/django.mo
index 234819f879..638bf5e76a 100644
--- a/django/conf/locale/de/LC_MESSAGES/django.mo
+++ b/django/conf/locale/de/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/de/LC_MESSAGES/django.po b/django/conf/locale/de/LC_MESSAGES/django.po
index f529167baa..897634f4d2 100644
--- a/django/conf/locale/de/LC_MESSAGES/django.po
+++ b/django/conf/locale/de/LC_MESSAGES/django.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-06-23 20:23+0200\n"
-"PO-Revision-Date: 2008-06-23 20:51+0100\n"
+"POT-Creation-Date: 2008-08-01 11:38+0200\n"
+"PO-Revision-Date: 2008-08-01 12:42+0100\n"
"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -252,51 +252,208 @@ msgid "This year"
msgstr "Dieses Jahr"
#: contrib/admin/filterspecs.py:147
-#: newforms/widgets.py:231
+#: forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "Yes"
msgstr "Ja"
#: contrib/admin/filterspecs.py:147
-#: newforms/widgets.py:231
+#: forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "No"
msgstr "Nein"
#: contrib/admin/filterspecs.py:154
-#: newforms/widgets.py:231
+#: forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "Unknown"
msgstr "Unbekannt"
-#: contrib/admin/models.py:18
+#: contrib/admin/models.py:19
msgid "action time"
msgstr "Zeitpunkt der Aktion"
-#: contrib/admin/models.py:21
+#: contrib/admin/models.py:22
msgid "object id"
msgstr "Objekt-ID"
-#: contrib/admin/models.py:22
+#: contrib/admin/models.py:23
msgid "object repr"
msgstr "Objekt Darst."
-#: contrib/admin/models.py:23
+#: contrib/admin/models.py:24
msgid "action flag"
msgstr "Aktionskennzeichen"
-#: contrib/admin/models.py:24
+#: contrib/admin/models.py:25
msgid "change message"
msgstr "Änderungsmeldung"
-#: contrib/admin/models.py:27
+#: contrib/admin/models.py:28
msgid "log entry"
msgstr "Logeintrag"
-#: contrib/admin/models.py:28
+#: contrib/admin/models.py:29
msgid "log entries"
msgstr "Logeinträge"
+#: contrib/admin/options.py:140
+#: contrib/admin/options.py:178
+msgid "None"
+msgstr "-"
+
+#: contrib/admin/options.py:358
+#: contrib/auth/admin.py:37
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "%(name)s \"%(obj)s\" wurde erfolgreich hinzugefügt."
+
+#: contrib/admin/options.py:362
+#: contrib/admin/options.py:430
+#: contrib/auth/admin.py:42
+msgid "You may edit it again below."
+msgstr "Das Element kann jetzt weiter bearbeitet werden."
+
+#: contrib/admin/options.py:372
+#: contrib/admin/options.py:439
+#, python-format
+msgid "You may add another %s below."
+msgstr "Jetzt kann ein weiteres Element des Typs %s angelegt werden."
+
+#: contrib/admin/options.py:406
+#, python-format
+msgid "Changed %s."
+msgstr "%s geändert."
+
+#: contrib/admin/options.py:406
+#: contrib/admin/options.py:416
+#: core/validators.py:279
+#: db/models/manipulators.py:305
+msgid "and"
+msgstr "und"
+
+#: contrib/admin/options.py:411
+#, python-format
+msgid "Added %(name)s \"%(object)s\"."
+msgstr "%(name)s \"%(object)s\" hinzugefügt."
+
+#: contrib/admin/options.py:415
+#, python-format
+msgid "Changed %(list)s for %(name)s \"%(object)s\"."
+msgstr "%(list)s von %(name)s \"%(object)s\" geändert."
+
+#: contrib/admin/options.py:420
+#, python-format
+msgid "Deleted %(name)s \"%(object)s\"."
+msgstr "%(name)s \"%(object)s\" gelöscht."
+
+#: contrib/admin/options.py:425
+msgid "No fields changed."
+msgstr "Keine Felder geändert."
+
+#: contrib/admin/options.py:428
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr "%(name)s \"%(obj)s\" wurde erfolgreich geändert."
+
+#: contrib/admin/options.py:436
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr "%(name)s \"%(obj)s\" wurde erfolgreich hinzugefügt. Das Element kann jetzt geändert werden."
+
+#: contrib/admin/options.py:517
+#, python-format
+msgid "Add %s"
+msgstr "%s hinzufügen"
+
+#: contrib/admin/options.py:579
+#, python-format
+msgid "Change %s"
+msgstr "%s ändern"
+
+#: contrib/admin/options.py:609
+msgid "Database error"
+msgstr "Datenbankfehler"
+
+#: contrib/admin/options.py:658
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "%(name)s \"%(obj)s\" wurde erfolgreich gelöscht."
+
+#: contrib/admin/options.py:664
+msgid "Are you sure?"
+msgstr "Sind Sie ganz sicher?"
+
+#: contrib/admin/options.py:691
+#, python-format
+msgid "Change history: %s"
+msgstr "Änderungsgeschichte: %s"
+
+#: contrib/admin/sites.py:18
+#: contrib/admin/views/decorators.py:16
+#: contrib/auth/forms.py:72
+#: contrib/comments/views/comments.py:56
+msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
+msgstr "Bitte einen gültigen Benutzernamen und ein Passwort eingeben. Beide Felder berücksichtigen die Groß-/Kleinschreibung."
+
+#: contrib/admin/sites.py:233
+#: contrib/admin/views/decorators.py:68
+msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
+msgstr "Bitte neu anmelden, da die Session ausgelaufen ist. Keine Angst, die Beiträge wurden gesichert."
+
+#: contrib/admin/sites.py:240
+#: contrib/admin/views/decorators.py:75
+msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
+msgstr "Es sieht danach aus, dass der Browser keine Cookies akzeptiert. Bitte im Browser Cookies aktivieren und diese Seite neu laden."
+
+#: contrib/admin/sites.py:254
+#: contrib/admin/sites.py:260
+#: contrib/admin/views/decorators.py:92
+msgid "Usernames cannot contain the '@' character."
+msgstr "Benutzernamen dürfen das Zeichen '@' nicht enthalten."
+
+#: contrib/admin/sites.py:257
+#: contrib/admin/views/decorators.py:88
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr "Die E-Mail-Adresse entspricht nicht Ihrem Benutzernamen. Bitte stattdessen '%s' versuchen."
+
+#: contrib/admin/sites.py:325
+msgid "Site administration"
+msgstr "Seitenverwaltung"
+
+#: contrib/admin/sites.py:347
+#: contrib/admin/templates/admin/login.html:27
+#: contrib/admin/views/decorators.py:30
+msgid "Log in"
+msgstr "Anmelden"
+
+#: contrib/admin/util.py:126
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr "Ein oder mehrere %(fieldname)s in %(name)s: %(obj)s"
+
+#: contrib/admin/util.py:131
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "Ein oder mehrere %(fieldname)s in %(name)s:"
+
+#: contrib/admin/widgets.py:65
+msgid "Date:"
+msgstr "Datum:"
+
+#: contrib/admin/widgets.py:65
+msgid "Time:"
+msgstr "Zeit:"
+
+#: contrib/admin/widgets.py:89
+msgid "Currently:"
+msgstr "Derzeit:"
+
+#: contrib/admin/widgets.py:89
+msgid "Change:"
+msgstr "Ändern:"
+
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
@@ -307,17 +464,19 @@ msgid "We're sorry, but the requested page could not be found."
msgstr "Es tut uns leid, aber die angeforderte Seite konnte nicht gefunden werden."
#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/change_form.html:17
+#: contrib/admin/templates/admin/change_list.html:8
+#: contrib/admin/templates/admin/delete_confirmation.html:6
#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/auth/user/change_password.html:10
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_reset_complete.html:4
+#: contrib/admin/templates/registration/password_reset_confirm.html:4
#: contrib/admin/templates/registration/password_reset_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
msgid "Home"
@@ -339,22 +498,28 @@ msgstr "Serverfehler <em>(500)</em>"
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 "Ein Fehler ist aufgetreten. Dieser Fehler wurde an die Serververwalter per E-Mail weitergegeben und sollte bald behoben sein. Vielen Dank für Ihr Verständnis."
-#: contrib/admin/templates/admin/base.html:26
+#: contrib/admin/templates/admin/base.html:25
msgid "Welcome,"
msgstr "Willkommen,"
-#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin/base.html:25
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
msgid "Documentation"
msgstr "Dokumentation"
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/auth/user/change_password.html:13
+#: 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
msgid "Change password"
msgstr "Passwort ändern"
-#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
#: contrib/comments/templates/comments/form.html:6
msgid "Log out"
msgstr "Abmelden"
@@ -367,56 +532,53 @@ msgstr "Django-Systemverwaltung"
msgid "Django administration"
msgstr "Django-Verwaltung"
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
+#: contrib/admin/templates/admin/change_form.html:19
+#: contrib/admin/templates/admin/index.html:29
msgid "Add"
msgstr "Hinzufügen"
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
+#: contrib/admin/templates/admin/change_form.html:26
+#: contrib/admin/templates/admin/object_history.html:5
msgid "History"
msgstr "Geschichte"
-#: contrib/admin/templates/admin/change_form.html:21
+#: contrib/admin/templates/admin/change_form.html:27
msgid "View on site"
msgstr "Im Web anzeigen"
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
+#: contrib/admin/templates/admin/change_form.html:37
+#: contrib/admin/templates/admin/auth/user/change_password.html:22
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] "Bitte den aufgeführten Fehler korrigieren."
msgstr[1] "Bitte die aufgeführten Fehler korrigieren."
-#: contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr "Sortierung"
-
-#: contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr "Reihenfolge:"
-
-#: contrib/admin/templates/admin/change_list.html:11
+#: contrib/admin/templates/admin/change_list.html:16
#, python-format
msgid "Add %(name)s"
msgstr "%(name)s hinzufügen"
-#: contrib/admin/templates/admin/delete_confirmation.html:8
+#: contrib/admin/templates/admin/change_list.html:26
+msgid "Filter"
+msgstr "Filter"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:9
#: contrib/admin/templates/admin/submit_line.html:3
+#: contrib/admin/templates/admin/edit_inline/tabular.html:15
msgid "Delete"
msgstr "Löschen"
-#: contrib/admin/templates/admin/delete_confirmation.html:13
+#: contrib/admin/templates/admin/delete_confirmation.html:15
#, 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 "Die Löschung des %(object_name)s '%(escaped_object)s' hätte die Löschung von abhängigen Daten zur Folge, aber Sie haben nicht die nötigen Rechte um die folgenden abhängigen Daten zu löschen:"
-#: contrib/admin/templates/admin/delete_confirmation.html:20
+#: contrib/admin/templates/admin/delete_confirmation.html:22
#, 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 "Sind Sie sicher, dass Sie %(object_name)s \"%(escaped_object)s\" löschen wollen? Es werden zusätzlich die folgenden abhängigen Daten mit gelöscht:"
-#: contrib/admin/templates/admin/delete_confirmation.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:27
msgid "Yes, I'm sure"
msgstr "Ja, ich bin sicher"
@@ -425,77 +587,68 @@ msgstr "Ja, ich bin sicher"
msgid " By %(filter_title)s "
msgstr " Nach %(filter_title)s "
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filter"
-
-#: contrib/admin/templates/admin/index.html:17
+#: contrib/admin/templates/admin/index.html:18
#, python-format
msgid "Models available in the %(name)s application."
msgstr "Modelle, die in der Anwendung %(name)s vorhanden sind."
-#: contrib/admin/templates/admin/index.html:18
+#: contrib/admin/templates/admin/index.html:19
#, python-format
msgid "%(name)s"
msgstr "%(name)s"
-#: contrib/admin/templates/admin/index.html:34
+#: contrib/admin/templates/admin/index.html:35
msgid "Change"
msgstr "Ändern"
-#: contrib/admin/templates/admin/index.html:44
+#: contrib/admin/templates/admin/index.html:45
msgid "You don't have permission to edit anything."
msgstr "Sie haben keine Berechtigung, irgendetwas zu ändern."
-#: contrib/admin/templates/admin/index.html:52
+#: contrib/admin/templates/admin/index.html:53
msgid "Recent Actions"
msgstr "Kürzliche Aktionen"
-#: contrib/admin/templates/admin/index.html:53
+#: contrib/admin/templates/admin/index.html:54
msgid "My Actions"
msgstr "Meine Aktionen"
-#: contrib/admin/templates/admin/index.html:57
+#: contrib/admin/templates/admin/index.html:58
msgid "None available"
msgstr "Keine vorhanden"
-#: contrib/admin/templates/admin/invalid_setup.html:8
+#: contrib/admin/templates/admin/invalid_setup.html:7
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 "Etwas stimmt nicht mit der Datenbankkonfiguration. Bitte sicherstellen, dass die richtigen Datenbanktabellen angelegt wurden und die Datenbank vom verwendeten Datenbankbenutzer auch lesbar ist."
-#: contrib/admin/templates/admin/login.html:17
+#: contrib/admin/templates/admin/login.html:19
#: contrib/comments/templates/comments/form.html:6
#: contrib/comments/templates/comments/form.html:8
msgid "Username:"
msgstr "Benutzername:"
-#: contrib/admin/templates/admin/login.html:20
+#: contrib/admin/templates/admin/login.html:22
#: contrib/comments/templates/comments/form.html:8
msgid "Password:"
msgstr "Passwort:"
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:31
-msgid "Log in"
-msgstr "Anmelden"
-
-#: contrib/admin/templates/admin/object_history.html:17
+#: contrib/admin/templates/admin/object_history.html:16
msgid "Date/time"
msgstr "Datum/Zeit"
-#: contrib/admin/templates/admin/object_history.html:18
+#: contrib/admin/templates/admin/object_history.html:17
msgid "User"
msgstr "Benutzer"
-#: contrib/admin/templates/admin/object_history.html:19
+#: contrib/admin/templates/admin/object_history.html:18
msgid "Action"
msgstr "Aktion"
-#: contrib/admin/templates/admin/object_history.html:25
+#: contrib/admin/templates/admin/object_history.html:24
msgid "DATE_WITH_TIME_FULL"
msgstr "j. N Y, H:i"
-#: contrib/admin/templates/admin/object_history.html:35
+#: contrib/admin/templates/admin/object_history.html:32
msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
msgstr "Dieses Objekt hat keine Änderungsgeschichte. Es wurde möglicherweise nicht über diese Verwaltungsseiten angelegt."
@@ -539,26 +692,32 @@ msgstr "Sichern"
msgid "First, enter a username and password. Then, you'll be able to edit more user options."
msgstr "Zuerst einen Benutzer und ein Passwort eingeben. Danach können weitere Optionen für den Benutzer geändert werden."
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
+#: contrib/admin/templates/admin/auth/user/add_form.html:13
+#: contrib/auth/forms.py:14
+#: contrib/auth/forms.py:51
msgid "Username"
msgstr "Benutzername"
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
+#: contrib/admin/templates/admin/auth/user/add_form.html:20
#: contrib/admin/templates/admin/auth/user/change_password.html:33
+#: contrib/auth/forms.py:17
+#: contrib/auth/forms.py:52
+#: contrib/auth/forms.py:176
msgid "Password"
msgstr "Passwort"
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
+#: contrib/admin/templates/admin/auth/user/add_form.html:26
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/auth/forms.py:177
msgid "Password (again)"
msgstr "Passwort (wiederholen)"
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/admin/templates/admin/auth/user/add_form.html:27
+#: contrib/admin/templates/admin/auth/user/change_password.html:40
msgid "Enter the same password as above, for verification."
msgstr "Bitte das gleiche Passwort zur Überprüfung nochmal eingeben."
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
+#: contrib/admin/templates/admin/auth/user/change_password.html:26
#, python-format
msgid "Enter a new password for the user <strong>%(username)s</strong>."
msgstr "Bitte geben Sie ein neues Passwort für den Benutzer <strong>%(username)s</strong> ein."
@@ -629,42 +788,47 @@ msgstr "Vielen Dank, dass Sie hier ein paar nette Minuten verbracht haben."
msgid "Log in again"
msgstr "Erneut anmelden"
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_change_form.html:6
+#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr "Passwort ändern"
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "Passwort erfolgreich geändert"
-#: contrib/admin/templates/registration/password_change_done.html:11
+#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "Ihr Passwort wurde geändert."
-#: contrib/admin/templates/registration/password_change_form.html:11
+#: 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 "Bitte geben Sie aus Sicherheitsgründen erst Ihr altes Passwort und darunter dann zweimal (um sicherzustellen, dass Sie es korrekt eingegeben haben) das neue Kennwort ein."
-#: contrib/admin/templates/registration/password_change_form.html:16
+#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "Altes Passwort:"
-#: contrib/admin/templates/registration/password_change_form.html:18
+#: contrib/admin/templates/registration/password_change_form.html:19
+#: contrib/admin/templates/registration/password_reset_confirm.html:18
msgid "New password:"
msgstr "Neues Passwort:"
-#: contrib/admin/templates/registration/password_change_form.html:20
+#: contrib/admin/templates/registration/password_change_form.html:21
+#: contrib/admin/templates/registration/password_reset_confirm.html:20
msgid "Confirm password:"
msgstr "Passwort wiederholen:"
-#: contrib/admin/templates/registration/password_change_form.html:22
+#: contrib/admin/templates/registration/password_change_form.html:23
+#: contrib/admin/templates/registration/password_reset_confirm.html:21
msgid "Change my password"
msgstr "Mein Passwort ändern"
+#: contrib/admin/templates/registration/password_reset_complete.html:4
+#: contrib/admin/templates/registration/password_reset_confirm.html:6
#: 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
@@ -672,14 +836,43 @@ msgstr "Mein Passwort ändern"
msgid "Password reset"
msgstr "Passwort zurücksetzen"
+#: contrib/admin/templates/registration/password_reset_complete.html:6
+#: contrib/admin/templates/registration/password_reset_complete.html:10
+msgid "Password reset complete"
+msgstr "Passwort zurücksetzen beendet"
+
+#: contrib/admin/templates/registration/password_reset_complete.html:12
+msgid "Your password has been set. You may go ahead and log in now."
+msgstr "Ihr Passwort wurde zurückgesetzt. Sie können sich nun anmelden."
+
+#: contrib/admin/templates/registration/password_reset_confirm.html:4
+msgid "Password reset confirmation"
+msgstr "Zurücksetzen des Passworts bestätigen"
+
+#: contrib/admin/templates/registration/password_reset_confirm.html:12
+msgid "Enter new password"
+msgstr "Neues Passwort eingeben"
+
+#: contrib/admin/templates/registration/password_reset_confirm.html:14
+msgid "Please enter your new password twice so we can verify you typed it in correctly."
+msgstr "Bitte geben Sie Ihr neues Passwort zweimal ein, damit wir überprüfen können, ob es richtig eingetippt wurde."
+
+#: contrib/admin/templates/registration/password_reset_confirm.html:26
+msgid "Password reset unsuccessful"
+msgstr "Passwort wurde nicht erfolgreich zurückgesetzt"
+
+#: contrib/admin/templates/registration/password_reset_confirm.html:28
+msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
+msgstr "Der Link zum Zurücksetzen Ihres Passworts ist ungültig, wahrscheinlich weil er schon einmal benutzt wurde. Bitte setzen Sie Ihr Passwort erneut zurück."
+
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
msgstr "Passwort wurde erfolgreich zurückgesetzt"
#: 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 "Wir haben ein neues Passwort an die von Ihnen angegebene E-Mail-Adresse geschickt. Sie sollten es in Kürze erhalten."
+msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly."
+msgstr "Wir haben Ihnen eine E-Mail mit Anweisungen zum Zurücksetzen Ihres Passwort an die von Ihnen angegebene E-Mail-Adresse geschickt. Sie sollten sie in Kürze erhalten."
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
@@ -691,30 +884,25 @@ msgid "for your user account at %(site_name)s"
msgstr "für Ihren Benutzer bei %(site_name)s angefordert haben."
#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Ihr neues Passwort lautet: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Sie können das Passwort auf folgender Seite ändern:"
+msgid "Please go to the following page and choose a new password:"
+msgstr "Bitte öffnen Sie folgende Seite, um Ihr neues Passwort einzugeben:"
-#: contrib/admin/templates/registration/password_reset_email.html:11
+#: contrib/admin/templates/registration/password_reset_email.html:9
msgid "Your username, in case you've forgotten:"
msgstr "Ihr Benutzername, falls Sie ihn vergessen haben:"
-#: contrib/admin/templates/registration/password_reset_email.html:13
+#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Thanks for using our site!"
msgstr "Vielen Dank, dass Sie unsere Seiten benutzen!"
-#: contrib/admin/templates/registration/password_reset_email.html:15
+#: contrib/admin/templates/registration/password_reset_email.html:13
#, python-format
msgid "The %(site_name)s team"
msgstr "Das Team von %(site_name)s"
#: 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 "Passwort vergessen? Einfach die E-Mail-Adresse eingeben und wir setzen das Passwort zurück und lassen es Ihnen per E-Mail zukommen."
+msgid "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one."
+msgstr "Passwort vergessen? Einfach Ihre E-Mail-Adresse eingeben und wir senden Ihnen Anweisungen zum Zurücksetzen Ihres Passworts."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
@@ -724,351 +912,252 @@ msgstr "E-Mail-Adresse:"
msgid "Reset my password"
msgstr "Mein Passwort zurücksetzen"
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Datum:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Zeit:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Derzeit:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Ändern:"
-
#: contrib/admin/templatetags/admin_list.py:257
msgid "All dates"
msgstr "Alle Tage"
-#: contrib/admin/views/auth.py:20
-#: contrib/admin/views/main.py:267
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" wurde erfolgreich hinzugefügt."
-
-#: contrib/admin/views/auth.py:25
-#: contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr "Das Element kann jetzt weiter bearbeitet werden."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Benutzer hinzufügen"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "Passwort erfolgreich geändert."
-
-#: contrib/admin/views/auth.py:65
+#: contrib/admin/views/main.py:65
#, python-format
-msgid "Change password: %s"
-msgstr "Passwort ändern: %s"
-
-#: contrib/admin/views/decorators.py:17
-#: contrib/auth/forms.py:60
-msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
-msgstr "Bitte einen gültigen Benutzernamen und ein Passwort eingeben. Beide Felder berücksichtigen die Groß-/Kleinschreibung."
-
-#: contrib/admin/views/decorators.py:69
-msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
-msgstr "Bitte neu anmelden, da die Session ausgelaufen ist. Keine Angst, die Beiträge wurden gesichert."
-
-#: contrib/admin/views/decorators.py:76
-msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
-msgstr "Es sieht danach aus, dass der Browser keine Cookies akzeptiert. Bitte im Browser Cookies aktivieren und diese Seite neu laden."
+msgid "Select %s"
+msgstr "%s auswählen"
-#: contrib/admin/views/decorators.py:89
+#: contrib/admin/views/main.py:65
#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Die E-Mail-Adresse entspricht nicht Ihrem Benutzernamen. Bitte stattdessen '%s' versuchen."
-
-#: contrib/admin/views/decorators.py:93
-msgid "Usernames cannot contain the '@' character."
-msgstr "Benutzernamen dürfen das Zeichen '@' nicht enthalten."
+msgid "Select %s to change"
+msgstr "%s zur Änderung auswählen"
-#: contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
+#: contrib/admindocs/views.py:53
+#: contrib/admindocs/views.py:55
+#: contrib/admindocs/views.py:57
msgid "tag:"
msgstr "Schlagwort:"
-#: contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
+#: contrib/admindocs/views.py:87
+#: contrib/admindocs/views.py:89
+#: contrib/admindocs/views.py:91
msgid "filter:"
msgstr "Filter:"
-#: contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
+#: contrib/admindocs/views.py:153
+#: contrib/admindocs/views.py:155
+#: contrib/admindocs/views.py:157
msgid "view:"
msgstr "Ansicht:"
-#: contrib/admin/views/doc.py:166
+#: contrib/admindocs/views.py:187
#, python-format
msgid "App %r not found"
msgstr "Anwendung %r nicht gefunden"
-#: contrib/admin/views/doc.py:173
+#: contrib/admindocs/views.py:194
#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Modell %(name)r wurde nicht in Anwendung %(label)r gefunden"
+msgid "Model %(model_name)r not found in app %(app_label)r"
+msgstr "Modell %(model_name)r wurde nicht in Anwendung %(app_label)r gefunden"
-#: contrib/admin/views/doc.py:185
+#: contrib/admindocs/views.py:206
#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "Das verknüpfte `%(label)s.%(type)s` Objekt"
+msgid "the related `%(app_label)s.%(data_type)s` object"
+msgstr "Das verknüpfte `%(app_label)s.%(data_type)s` Objekt"
-#: contrib/admin/views/doc.py:185
-#: contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221
-#: contrib/admin/views/doc.py:226
+#: contrib/admindocs/views.py:206
+#: contrib/admindocs/views.py:228
+#: contrib/admindocs/views.py:242
+#: contrib/admindocs/views.py:247
msgid "model:"
msgstr "Modell:"
-#: contrib/admin/views/doc.py:216
+#: contrib/admindocs/views.py:237
#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "verknüpftes `%(label)s.%(name)s` Objekt"
+msgid "related `%(app_label)s.%(object_name)s` objects"
+msgstr "verknüpftes `%(app_label)s.%(object_name)s` Objekt"
-#: contrib/admin/views/doc.py:221
+#: contrib/admindocs/views.py:242
#, python-format
msgid "all %s"
msgstr "Alle %s"
-#: contrib/admin/views/doc.py:226
+#: contrib/admindocs/views.py:247
#, python-format
msgid "number of %s"
msgstr "Anzahl von %s"
-#: contrib/admin/views/doc.py:231
+#: contrib/admindocs/views.py:253
#, python-format
msgid "Fields on %s objects"
msgstr "Felder am %s Objekt"
-#: contrib/admin/views/doc.py:293
-#: contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306
-#: contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313
-#: contrib/admin/views/doc.py:315
+#: contrib/admindocs/views.py:317
+#: contrib/admindocs/views.py:328
+#: contrib/admindocs/views.py:330
+#: contrib/admindocs/views.py:336
+#: contrib/admindocs/views.py:337
+#: contrib/admindocs/views.py:339
msgid "Integer"
msgstr "Ganzzahl"
-#: contrib/admin/views/doc.py:294
+#: contrib/admindocs/views.py:318
msgid "Boolean (Either True or False)"
msgstr "Boolscher Wert (True oder False)"
-#: contrib/admin/views/doc.py:295
-#: contrib/admin/views/doc.py:314
+#: contrib/admindocs/views.py:319
+#: contrib/admindocs/views.py:338
#, python-format
msgid "String (up to %(max_length)s)"
msgstr "Zeichenkette (bis zu %(max_length)s Zeichen)"
-#: contrib/admin/views/doc.py:296
+#: contrib/admindocs/views.py:320
msgid "Comma-separated integers"
msgstr "Kommaseparierte Liste von Ganzzahlen"
-#: contrib/admin/views/doc.py:297
+#: contrib/admindocs/views.py:321
msgid "Date (without time)"
msgstr "Datum (ohne Uhrzeit)"
-#: contrib/admin/views/doc.py:298
+#: contrib/admindocs/views.py:322
msgid "Date (with time)"
msgstr "Datum (mit Uhrzeit)"
-#: contrib/admin/views/doc.py:299
+#: contrib/admindocs/views.py:323
msgid "Decimal number"
msgstr "Dezimalzahl"
-#: contrib/admin/views/doc.py:300
+#: contrib/admindocs/views.py:324
msgid "E-mail address"
msgstr "E-Mail-Adresse"
-#: contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
+#: contrib/admindocs/views.py:325
+#: contrib/admindocs/views.py:326
+#: contrib/admindocs/views.py:329
msgid "File path"
msgstr "Dateipfad"
-#: contrib/admin/views/doc.py:303
+#: contrib/admindocs/views.py:327
msgid "Floating point number"
msgstr "Fließkommazahl"
-#: contrib/admin/views/doc.py:307
+#: contrib/admindocs/views.py:331
#: contrib/comments/models.py:89
msgid "IP address"
msgstr "IP-Adresse"
-#: contrib/admin/views/doc.py:309
+#: contrib/admindocs/views.py:333
msgid "Boolean (Either True, False or None)"
msgstr "Boolscher Wert (True, False oder None)"
-#: contrib/admin/views/doc.py:310
+#: contrib/admindocs/views.py:334
msgid "Relation to parent model"
msgstr "Beziehung zum Eltern-Modell"
-#: contrib/admin/views/doc.py:311
+#: contrib/admindocs/views.py:335
msgid "Phone number"
msgstr "Telefonnummer"
-#: contrib/admin/views/doc.py:316
+#: contrib/admindocs/views.py:340
msgid "Text"
msgstr "Text"
-#: contrib/admin/views/doc.py:317
+#: contrib/admindocs/views.py:341
msgid "Time"
msgstr "Zeit"
-#: contrib/admin/views/doc.py:318
+#: contrib/admindocs/views.py:342
#: contrib/flatpages/models.py:8
msgid "URL"
msgstr "Adresse (URL)"
-#: contrib/admin/views/doc.py:319
+#: contrib/admindocs/views.py:343
msgid "U.S. state (two uppercase letters)"
msgstr "U.S. Bundesstaat (zwei Großbuchstaben)"
-#: contrib/admin/views/doc.py:320
+#: contrib/admindocs/views.py:344
msgid "XML text"
msgstr "XML-Text"
-#: contrib/admin/views/doc.py:346
+#: contrib/admindocs/views.py:370
#, python-format
msgid "%s does not appear to be a urlpattern object"
msgstr "%s ist scheinbar kein urlpattern Objekt"
-#: contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr "Website-Verwaltung"
-
-#: contrib/admin/views/main.py:280
-#: contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "Jetzt kann ein weiteres Element vom Typ %s angelegt werden."
-
-#: contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "%s hinzufügen"
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "%s hinzugefügt."
-
-#: contrib/admin/views/main.py:344
-#: contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348
-#: core/validators.py:283
-#: db/models/manipulators.py:309
-msgid "and"
-msgstr "und"
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "%s geändert."
-
-#: contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "%s gelöscht."
-
-#: contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr "Keine Felder geändert."
-
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" wurde erfolgreich geändert."
-
-#: contrib/admin/views/main.py:362
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" wurde erfolgreich hinzugefügt. Das Element kann jetzt geändert werden."
-
-#: contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "%s ändern"
+#: contrib/auth/admin.py:17
+msgid "Personal info"
+msgstr "Persönliche Infos"
-#: contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Ein oder mehrere %(fieldname)s in %(name)s: %(obj)s"
+#: contrib/auth/admin.py:18
+msgid "Permissions"
+msgstr "Berechtigungen"
-#: contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Ein oder mehrere %(fieldname)s in %(name)s:"
+#: contrib/auth/admin.py:19
+msgid "Important dates"
+msgstr "Wichtige Daten"
-#: contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" wurde erfolgreich gelöscht."
+#: contrib/auth/admin.py:20
+msgid "Groups"
+msgstr "Gruppen"
-#: contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr "Sind Sie ganz sicher?"
+#: contrib/auth/admin.py:47
+msgid "Add user"
+msgstr "Benutzer hinzufügen"
-#: contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "Änderungsgeschichte: %s"
+#: contrib/auth/forms.py:15
+#: contrib/auth/models.py:134
+msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
+msgstr "Erforderlich. 30 Zeichen oder weniger. Alphanumerische Zeichen (Buchstaben, Ziffern und Unterstriche sind erlaubt)."
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "%s auswählen"
+#: contrib/auth/forms.py:16
+#: core/validators.py:72
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Dieser Wert darf nur Buchstaben, Ziffern und Unterstriche enthalten."
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "%s zur Änderung auswählen"
+#: contrib/auth/forms.py:18
+msgid "Password confirmation"
+msgstr "Passwort bestätigen"
-#: contrib/admin/views/main.py:765
-msgid "Database error"
-msgstr "Datenbankfehler"
+#: contrib/auth/forms.py:30
+msgid "A user with that username already exists."
+msgstr "Ein Benutzer mit diesem Namen existiert bereits."
-#: contrib/auth/forms.py:17
-#: contrib/auth/forms.py:138
+#: contrib/auth/forms.py:36
+#: contrib/auth/forms.py:146
+#: contrib/auth/forms.py:188
msgid "The two password fields didn't match."
msgstr "Die beiden Passwörter sind nicht identisch."
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Ein Benutzer mit diesem Namen existiert bereits."
+#: contrib/auth/forms.py:74
+#: contrib/comments/views/comments.py:58
+msgid "This account is inactive."
+msgstr "Dieser Benutzer ist inaktiv."
-#: contrib/auth/forms.py:53
+#: contrib/auth/forms.py:79
+#: contrib/comments/views/comments.py:49
msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
msgstr "Der Webbrowser scheint keine Cookies aktiviert zu haben. Cookies sind für die Anmeldung zwingend erforderlich."
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Dieser Benutzer ist inaktiv."
+#: contrib/auth/forms.py:92
+msgid "E-mail"
+msgstr "E-Mail-Adresse"
-#: contrib/auth/forms.py:84
+#: contrib/auth/forms.py:101
msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?"
msgstr "Zu dieser E-Mail-Adresse existiert kein Benutzer. Sicher, dass Sie sich mit dieser Adresse angemeldet haben?"
-#: contrib/auth/forms.py:107
+#: contrib/auth/forms.py:126
#, python-format
msgid "Password reset on %s"
msgstr "Passwort auf %s zurücksetzen"
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Die beiden neuen Passwörter sind nicht identisch."
+#: contrib/auth/forms.py:134
+msgid "New password"
+msgstr "Neues Passwort"
+
+#: contrib/auth/forms.py:135
+msgid "New password confirmation"
+msgstr "Neues Passwort bestätigen"
-#: contrib/auth/forms.py:124
+#: contrib/auth/forms.py:160
+msgid "Old password"
+msgstr "Altes Passwort"
+
+#: contrib/auth/forms.py:168
msgid "Your old password was entered incorrectly. Please enter it again."
msgstr "Das alte Passwort war falsch. Bitte neu eingeben."
@@ -1095,112 +1184,101 @@ msgid "group"
msgstr "Gruppe"
#: contrib/auth/models.py:98
-#: contrib/auth/models.py:148
+#: contrib/auth/models.py:144
msgid "groups"
msgstr "Gruppen"
-#: contrib/auth/models.py:138
+#: contrib/auth/models.py:134
msgid "username"
msgstr "Benutzername"
-#: contrib/auth/models.py:138
-msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
-msgstr "Erforderlich. 30 Zeichen oder weniger. Alphanumerische Zeichen (Buchstaben, Ziffern und Unterstriche sind erlaubt)."
-
-#: contrib/auth/models.py:139
+#: contrib/auth/models.py:135
msgid "first name"
msgstr "Vorname"
-#: contrib/auth/models.py:140
+#: contrib/auth/models.py:136
msgid "last name"
msgstr "Nachname"
-#: contrib/auth/models.py:141
+#: contrib/auth/models.py:137
msgid "e-mail address"
msgstr "E-Mail-Adresse"
-#: contrib/auth/models.py:142
+#: contrib/auth/models.py:138
msgid "password"
msgstr "Passwort"
-#: contrib/auth/models.py:142
+#: contrib/auth/models.py:138
msgid "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."
msgstr "Die Form '[algo]$[salt]$[hexdigest]' verwenden, oder das <a href=\"password/\">Passwort ändern Formular</a> benutzen."
-#: contrib/auth/models.py:143
+#: contrib/auth/models.py:139
msgid "staff status"
-msgstr "Administrator"
+msgstr "Redakteur"
-#: contrib/auth/models.py:143
+#: contrib/auth/models.py:139
msgid "Designates whether the user can log into this admin site."
msgstr "Legt fest, ob sich der Benutzer an der Administrationsseite anmelden kann."
-#: contrib/auth/models.py:144
+#: contrib/auth/models.py:140
msgid "active"
msgstr "Aktiv"
-#: contrib/auth/models.py:144
+#: contrib/auth/models.py:140
msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts."
msgstr "Legt fest, ob dieser Benutzer aktiv ist. Kann deaktiviert werden, anstatt Benutzer zu löschen."
-#: contrib/auth/models.py:145
+#: contrib/auth/models.py:141
msgid "superuser status"
-msgstr "Hauptadmin."
+msgstr "Hauptadmin"
-#: contrib/auth/models.py:145
+#: contrib/auth/models.py:141
msgid "Designates that this user has all permissions without explicitly assigning them."
msgstr "Legt fest, dass der Benutzer alle Berechtigungen hat, ohne diese einzeln zuweisen zu müssen."
-#: contrib/auth/models.py:146
+#: contrib/auth/models.py:142
msgid "last login"
msgstr "Letzte Anmeldung"
-#: contrib/auth/models.py:147
+#: contrib/auth/models.py:143
msgid "date joined"
msgstr "Mitglied seit"
-#: contrib/auth/models.py:149
+#: contrib/auth/models.py:145
msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
msgstr "Zusätzlich zu den manuell angelegten Rechten erhält dieser Benutzer auch alle Rechte, die seine zugewiesenen Gruppen haben."
-#: contrib/auth/models.py:150
+#: contrib/auth/models.py:146
msgid "user permissions"
msgstr "Berechtigungen"
-#: contrib/auth/models.py:154
+#: contrib/auth/models.py:150
msgid "user"
msgstr "Benutzer"
-#: contrib/auth/models.py:155
+#: contrib/auth/models.py:151
msgid "users"
msgstr "Benutzer"
-#: contrib/auth/models.py:161
-msgid "Personal info"
-msgstr "Persönliche Infos"
-
-#: contrib/auth/models.py:162
-msgid "Permissions"
-msgstr "Berechtigungen"
-
-#: contrib/auth/models.py:163
-msgid "Important dates"
-msgstr "Wichtige Daten"
-
-#: contrib/auth/models.py:164
-msgid "Groups"
-msgstr "Gruppen"
-
-#: contrib/auth/models.py:323
+#: contrib/auth/models.py:306
msgid "message"
msgstr "Mitteilung"
-#: contrib/auth/views.py:48
+#: contrib/auth/views.py:50
msgid "Logged out"
msgstr "Abgemeldet"
+#: contrib/auth/views.py:160
+msgid "Password changed successfully."
+msgstr "Passwort erfolgreich geändert."
+
+#: contrib/auth/views.py:166
+#, python-format
+msgid "Change password: %s"
+msgstr "Passwort ändern: %s"
+
#: contrib/comments/models.py:71
-#: contrib/comments/models.py:176
+#: contrib/comments/models.py:164
msgid "object ID"
msgstr "Objekt-ID"
@@ -1210,7 +1288,7 @@ msgstr "Ãœberschrift"
#: contrib/comments/models.py:73
#: contrib/comments/models.py:95
-#: contrib/comments/models.py:177
+#: contrib/comments/models.py:165
msgid "comment"
msgstr "Kommentar"
@@ -1251,12 +1329,12 @@ msgid "is valid rating"
msgstr "ist eine Bewertung"
#: contrib/comments/models.py:87
-#: contrib/comments/models.py:179
+#: contrib/comments/models.py:167
msgid "date/time submitted"
msgstr "Datum/Zeit Erstellung"
#: contrib/comments/models.py:88
-#: contrib/comments/models.py:180
+#: contrib/comments/models.py:168
msgid "is public"
msgstr "ist öffentlich"
@@ -1272,12 +1350,12 @@ msgstr "Hier einen Haken setzen, wenn der Kommentar unpassend ist. Stattdessen w
msgid "comments"
msgstr "Kommentare"
-#: contrib/comments/models.py:140
-#: contrib/comments/models.py:222
+#: contrib/comments/models.py:128
+#: contrib/comments/models.py:199
msgid "Content object"
msgstr "Inhaltsobjekt"
-#: contrib/comments/models.py:168
+#: contrib/comments/models.py:156
#, python-format
msgid ""
"Posted by %(user)s at %(date)s\n"
@@ -1292,48 +1370,48 @@ msgstr ""
"\n"
"http://%(domain)s%(url)s"
-#: contrib/comments/models.py:178
+#: contrib/comments/models.py:166
msgid "person's name"
msgstr "Autorname"
-#: contrib/comments/models.py:181
+#: contrib/comments/models.py:169
msgid "ip address"
msgstr "IP-Adresse"
-#: contrib/comments/models.py:183
+#: contrib/comments/models.py:171
msgid "approved by staff"
msgstr "Bestätigt vom Betreiber"
-#: contrib/comments/models.py:187
+#: contrib/comments/models.py:175
msgid "free comment"
msgstr "Freier Kommentar"
-#: contrib/comments/models.py:188
+#: contrib/comments/models.py:176
msgid "free comments"
msgstr "Freie Kommentare"
-#: contrib/comments/models.py:250
+#: contrib/comments/models.py:227
msgid "score"
msgstr "Bewertung"
-#: contrib/comments/models.py:251
+#: contrib/comments/models.py:228
msgid "score date"
msgstr "Bewertungsdatum"
-#: contrib/comments/models.py:255
+#: contrib/comments/models.py:232
msgid "karma score"
msgstr "Karma Bewertung"
-#: contrib/comments/models.py:256
+#: contrib/comments/models.py:233
msgid "karma scores"
msgstr "Karma Bewertungen"
-#: contrib/comments/models.py:260
+#: contrib/comments/models.py:237
#, python-format
msgid "%(score)d rating by %(user)s"
msgstr "%(score)d Bewertung von %(user)s"
-#: contrib/comments/models.py:277
+#: contrib/comments/models.py:254
#, python-format
msgid ""
"This comment was flagged by %(user)s:\n"
@@ -1344,36 +1422,36 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/models.py:285
+#: contrib/comments/models.py:262
msgid "flag date"
msgstr "Kennzeichnungsdatum"
-#: contrib/comments/models.py:289
+#: contrib/comments/models.py:266
msgid "user flag"
msgstr "Benutzerkennzeichnung"
-#: contrib/comments/models.py:290
+#: contrib/comments/models.py:267
msgid "user flags"
msgstr "Benutzerkennzeichnungen"
-#: contrib/comments/models.py:294
+#: contrib/comments/models.py:271
#, python-format
msgid "Flag by %r"
msgstr "Gekennzeichnet von %r"
-#: contrib/comments/models.py:300
+#: contrib/comments/models.py:277
msgid "deletion date"
msgstr "Löschdatum"
-#: contrib/comments/models.py:303
+#: contrib/comments/models.py:280
msgid "moderator deletion"
msgstr "Löschung vom Moderator"
-#: contrib/comments/models.py:304
+#: contrib/comments/models.py:281
msgid "moderator deletions"
msgstr "Löschungen vom Moderator"
-#: contrib/comments/models.py:308
+#: contrib/comments/models.py:285
#, python-format
msgid "Moderator deletion by %r"
msgstr "Vom Moderator %r gelöscht"
@@ -1414,11 +1492,11 @@ msgstr "Kommentarvorschau"
msgid "Your name:"
msgstr "Ihr Name:"
-#: contrib/comments/views/comments.py:28
+#: contrib/comments/views/comments.py:76
msgid "This rating is required because you've entered at least one other rating."
msgstr "Diese Abstimmung ist zwingend erforderlich, da Sie an mindestens einer weiteren Abstimmung teilnehmen."
-#: contrib/comments/views/comments.py:112
+#: contrib/comments/views/comments.py:160
#, python-format
msgid ""
"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
@@ -1437,7 +1515,7 @@ msgstr[1] ""
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:117
+#: contrib/comments/views/comments.py:165
#, python-format
msgid ""
"This comment was posted by a sketchy user:\n"
@@ -1448,28 +1526,28 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
+#: contrib/comments/views/comments.py:238
+#: contrib/comments/views/comments.py:331
msgid "Only POSTs are allowed"
msgstr "Nur POST ist erlaubt"
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
+#: contrib/comments/views/comments.py:242
+#: contrib/comments/views/comments.py:335
msgid "One or more of the required fields wasn't submitted"
msgstr "Eines oder mehrere der erforderlichen Felder fehlen"
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
+#: contrib/comments/views/comments.py:246
+#: contrib/comments/views/comments.py:337
msgid "Somebody tampered with the comment form (security violation)"
msgstr "Jemand hat mit dem Kommentarformular herumgespielt (Sicherheitsverletzung)"
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
+#: contrib/comments/views/comments.py:256
+#: contrib/comments/views/comments.py:343
msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
msgstr "Das Kommentarformular hatte einen falschen 'target' Parameter -- die Objekt-ID ist ungültig."
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
+#: contrib/comments/views/comments.py:307
+#: contrib/comments/views/comments.py:372
msgid "The comment form didn't provide either 'preview' or 'post'"
msgstr "Das Kommentarformular wurde nicht mit 'preview' oder 'post' abgeschickt"
@@ -1497,6 +1575,10 @@ msgstr "Inhaltstyp"
msgid "content types"
msgstr "Inhaltstypen"
+#: contrib/flatpages/admin.py:9
+msgid "Advanced options"
+msgstr "Erweiterte Optionen"
+
#: contrib/flatpages/models.py:9
msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr "Beispiel: '/about/contact/'. Wichtig: Am Anfang und Ende muss ein / stehen."
@@ -1537,10 +1619,6 @@ msgstr "Webseite"
msgid "flat pages"
msgstr "Webseiten"
-#: contrib/flatpages/models.py:27
-msgid "Advanced options"
-msgstr "Erweiterte Optionen"
-
#: contrib/humanize/templatetags/humanize.py:19
msgid "th"
msgstr "."
@@ -1650,6 +1728,52 @@ msgstr "Bitte eine gültige CUIT im Format XX-XXXXXXXX-X oder XXXXXXXXXXXX einge
msgid "Invalid CUIT."
msgstr "Ungültige CUIT."
+#: contrib/localflavor/at/at_states.py:5
+msgid "Burgenland"
+msgstr "Burgenland"
+
+#: contrib/localflavor/at/at_states.py:6
+msgid "Carinthia"
+msgstr "Kärnten"
+
+#: contrib/localflavor/at/at_states.py:7
+msgid "Lower Austria"
+msgstr "Niederösterreich"
+
+#: contrib/localflavor/at/at_states.py:8
+msgid "Upper Austria"
+msgstr "Oberösterreich"
+
+#: contrib/localflavor/at/at_states.py:9
+msgid "Salzburg"
+msgstr "Salzburg"
+
+#: contrib/localflavor/at/at_states.py:10
+msgid "Styria"
+msgstr "Steiermark"
+
+#: contrib/localflavor/at/at_states.py:11
+msgid "Tyrol"
+msgstr "Tirol"
+
+#: contrib/localflavor/at/at_states.py:12
+msgid "Vorarlberg"
+msgstr "Vorarlberg"
+
+#: contrib/localflavor/at/at_states.py:13
+msgid "Vienna"
+msgstr "Wien"
+
+#: contrib/localflavor/at/forms.py:20
+#: contrib/localflavor/ch/forms.py:16
+#: contrib/localflavor/no/forms.py:12
+msgid "Enter a zip code in the format XXXX."
+msgstr "Bitte eine gültige Postleitzahl im Format XXXX eingeben."
+
+#: contrib/localflavor/at/forms.py:48
+msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
+msgstr "Bitte eine gültige österreichische Sozialversicherungsnummer im Format XXXX XXXXXX eingeben."
+
#: contrib/localflavor/au/forms.py:16
msgid "Enter a 4 digit post code."
msgstr "Bitte eine gültige vierstellige Postleitzahl eingeben."
@@ -1692,15 +1816,15 @@ msgstr "Bitte eine gültige kanadische Sozialversicherungsnummer im Format XXX-X
#: contrib/localflavor/ch/ch_states.py:5
msgid "Aargau"
-msgstr ""
+msgstr "Aargau"
#: contrib/localflavor/ch/ch_states.py:6
msgid "Appenzell Innerrhoden"
-msgstr ""
+msgstr "Appenzell Innerrhoden"
#: contrib/localflavor/ch/ch_states.py:7
msgid "Appenzell Ausserrhoden"
-msgstr ""
+msgstr "Appenzell Ausserrhoden"
#: contrib/localflavor/ch/ch_states.py:8
msgid "Basel-Stadt"
@@ -1794,11 +1918,6 @@ msgstr ""
msgid "Zurich"
msgstr "Zürich"
-#: contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Bitte eine gültige Postleitzahl im Format XXXX eingeben."
-
#: contrib/localflavor/ch/forms.py:64
msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format."
msgstr "Bitte eine gültige Schweizer Identifikations- oder Reisepassnummer im FormatX1234567<0 oder 1234567890 eingeben."
@@ -2149,6 +2268,7 @@ msgid "Region of Murcia"
msgstr ""
#: contrib/localflavor/es/es_regions.py:20
+#, fuzzy
msgid "Foral Community of Navarre"
msgstr ""
@@ -2704,6 +2824,26 @@ msgstr ""
msgid "West Pomerania"
msgstr ""
+#: contrib/localflavor/ro/forms.py:19
+msgid "Enter a valid CIF."
+msgstr "Bitte eine gültige CIF eingeben."
+
+#: contrib/localflavor/ro/forms.py:56
+msgid "Enter a valid CNP."
+msgstr "Bitte eine gültige CNP eingeben."
+
+#: contrib/localflavor/ro/forms.py:141
+msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
+msgstr "Bitte eine gültige IBAN im Format ROXX-XXXX-XXXX-XXXX-XXXX-XXXX eingeben."
+
+#: contrib/localflavor/ro/forms.py:171
+msgid "Phone numbers must be in XXXX-XXXXXX format."
+msgstr "Telefonnummern müssen das Format XXXX-XXXXXX haben."
+
+#: contrib/localflavor/ro/forms.py:194
+msgid "Enter a valid postal code in the format XXXXXX"
+msgstr "Bitte eine gültige Postleitzahl im Format XXXXXX eingeben"
+
#: contrib/localflavor/sk/forms.py:30
msgid "Enter a postal code in the format XXXXX or XXX XX."
msgstr "Bitte eine gültige Postleitzahl im Format XXXXX oder XXX XX eingeben."
@@ -3444,18 +3584,14 @@ msgstr "Domainname"
msgid "display name"
msgstr "Anzeigename"
-#: contrib/sites/models.py:37
+#: contrib/sites/models.py:38
msgid "site"
msgstr "Website"
-#: contrib/sites/models.py:38
+#: contrib/sites/models.py:39
msgid "sites"
msgstr "Websites"
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Dieser Wert darf nur Buchstaben, Ziffern und Unterstriche enthalten."
-
#: core/validators.py:76
msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
msgstr "Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Schrägstriche enthalten."
@@ -3497,7 +3633,7 @@ msgid "This value can't be comprised solely of digits."
msgstr "Dieser Wert darf nicht nur aus Ziffern bestehen."
#: core/validators.py:128
-#: newforms/fields.py:152
+#: forms/fields.py:161
msgid "Enter a whole number."
msgstr "Bitte eine ganze Zahl eingeben."
@@ -3506,65 +3642,59 @@ msgid "Only alphabetical characters are allowed here."
msgstr "Nur alphabetische Zeichen sind hier erlaubt."
#: core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr "Das Jahr muss 1900 oder später sein."
-
-#: core/validators.py:151
#, python-format
msgid "Invalid date: %s"
msgstr "Ungültiges Datum: %s"
-#: core/validators.py:156
-#: db/models/fields/__init__.py:548
+#: core/validators.py:152
+#: db/models/fields/__init__.py:574
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Bitte ein gültiges Datum im Format JJJJ-MM-TT eingeben."
-#: core/validators.py:161
+#: core/validators.py:157
msgid "Enter a valid time in HH:MM format."
msgstr "Bitte eine gültige Zeit im Format SS:MM eingeben."
-#: core/validators.py:165
-#: db/models/fields/__init__.py:625
+#: core/validators.py:161
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Bitte eine gültige Datums- und Zeitangabe im Format JJJJ-MM-TT SS:MM eingeben."
-#: core/validators.py:170
-#: newforms/fields.py:403
+#: core/validators.py:166
+#: forms/fields.py:412
msgid "Enter a valid e-mail address."
msgstr "Bitte eine gültige E-Mail-Adresse eingeben."
-#: core/validators.py:182
-#: core/validators.py:474
-#: newforms/fields.py:433
-#: oldforms/__init__.py:687
+#: core/validators.py:178
+#: core/validators.py:470
+#: forms/fields.py:430
msgid "No file was submitted. Check the encoding type on the form."
msgstr "Es wurde keine Datei übermittelt. Eventuell ist das Formular-Encoding falsch."
-#: core/validators.py:193
-#: newforms/fields.py:459
+#: core/validators.py:189
+#: forms/fields.py:470
msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
msgstr "Bitte ein Bild hochladen. Die hochgeladene Datei ist kein Bild, oder ist defekt."
-#: core/validators.py:200
+#: core/validators.py:196
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "Die URL %s zeigt nicht auf ein gültiges Bild."
-#: core/validators.py:204
+#: core/validators.py:200
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr "Telefonnummern müssen das Format XXX-XXX-XXXX haben. \"%s\" ist ungültig."
-#: core/validators.py:212
+#: core/validators.py:208
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "Die URL %s zeigt nicht auf ein gültiges QuickTime-Video."
-#: core/validators.py:216
+#: core/validators.py:212
msgid "A valid URL is required."
msgstr "Eine gültige URL wird hier verlangt."
-#: core/validators.py:230
+#: core/validators.py:226
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@@ -3573,331 +3703,337 @@ msgstr ""
"Bitte gültiges HTML eingeben. Fehler sind:\n"
"%s"
-#: core/validators.py:237
+#: core/validators.py:233
#, python-format
msgid "Badly formed XML: %s"
msgstr "Ungültiges XML: %s"
-#: core/validators.py:254
+#: core/validators.py:250
#, python-format
msgid "Invalid URL: %s"
msgstr "Ungültige URL: %s"
-#: core/validators.py:259
-#: core/validators.py:261
+#: core/validators.py:255
+#: core/validators.py:257
#, python-format
msgid "The URL %s is a broken link."
msgstr "Die URL %s funktioniert nicht."
-#: core/validators.py:267
+#: core/validators.py:263
msgid "Enter a valid U.S. state abbreviation."
msgstr "Bitte eine gültige Abkürzung für einen US-Staat eingeben."
-#: core/validators.py:281
+#: core/validators.py:277
#, python-format
msgid "Watch your mouth! The word %s is not allowed here."
msgid_plural "Watch your mouth! The words %s are not allowed here."
msgstr[0] "Keine Schimpfworte! Das Wort %s ist hier nicht gern gesehen!"
msgstr[1] "Keine Schimpfworte! Die Wörter %s sind hier nicht gern gesehen!"
-#: core/validators.py:288
+#: core/validators.py:284
#, python-format
msgid "This field must match the '%s' field."
msgstr "Dieses Feld muss zum Feld '%s' passen."
-#: core/validators.py:307
+#: core/validators.py:303
msgid "Please enter something for at least one field."
msgstr "Bitte mindestens eines der Felder ausfüllen."
-#: core/validators.py:316
-#: core/validators.py:327
+#: core/validators.py:312
+#: core/validators.py:323
msgid "Please enter both fields or leave them both empty."
msgstr "Bitte entweder beide Felder ausfüllen, oder beide leer lassen."
-#: core/validators.py:335
+#: core/validators.py:331
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "Dieses Feld muss gefüllt sein, wenn Feld %(field)s den Wert %(value)s hat."
-#: core/validators.py:348
+#: core/validators.py:344
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "Dieses Feld muss gefüllt sein, wenn Feld %(field)s nicht %(value)s ist."
-#: core/validators.py:367
+#: core/validators.py:363
msgid "Duplicate values are not allowed."
msgstr "Doppelte Werte sind hier nicht erlaubt."
-#: core/validators.py:382
+#: core/validators.py:378
#, python-format
msgid "This value must be between %(lower)s and %(upper)s."
msgstr "Dieser Wert muss zwischen %(lower)s und %(upper)s sein."
-#: core/validators.py:384
+#: core/validators.py:380
#, python-format
msgid "This value must be at least %s."
msgstr "Dieser Wert muss mindestens %s sein."
-#: core/validators.py:386
+#: core/validators.py:382
#, python-format
msgid "This value must be no more than %s."
msgstr "Dieser Wert darf maximal %s sein."
-#: core/validators.py:427
+#: core/validators.py:423
#, python-format
msgid "This value must be a power of %s."
msgstr "Dieser Wert muss eine Potenz von %s sein."
-#: core/validators.py:437
+#: core/validators.py:433
msgid "Please enter a valid decimal number."
msgstr "Bitte eine gültige Dezimalzahl eingeben."
-#: core/validators.py:444
+#: core/validators.py:440
#, 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] "Bitte eine gültige Dezimalzahl mit maximal %s Ziffer eingeben."
msgstr[1] "Bitte eine gültige Dezimalzahl mit maximal %s Ziffern eingeben."
-#: core/validators.py:447
+#: core/validators.py:443
#, python-format
msgid "Please enter a valid decimal number with a whole part of at most %s digit."
msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
msgstr[0] "Bitte eine gültige Dezimalzahl mit einer Gesamtzahl von maximal %s Ziffer eingeben."
msgstr[1] "Bitte eine gültige Dezimalzahl mit einer Gesamtzahl von maximal %s Ziffern eingeben."
-#: core/validators.py:450
+#: core/validators.py:446
#, 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] "Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstelle eingeben."
msgstr[1] "Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstellen eingeben."
-#: core/validators.py:458
+#: core/validators.py:454
msgid "Please enter a valid floating point number."
msgstr "Bitte eine gültige Dezimalzahl eingeben."
-#: core/validators.py:467
+#: core/validators.py:463
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "Bitte sicherstellen, dass die hochgeladene Datei mindestens %s Bytes groß ist."
-#: core/validators.py:468
+#: core/validators.py:464
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "Bitte sicherstellen, dass die hochgeladene Datei maximal %s Bytes groß ist."
-#: core/validators.py:485
+#: core/validators.py:481
msgid "The format for this field is wrong."
msgstr "Das Format für dieses Feld ist falsch."
-#: core/validators.py:500
+#: core/validators.py:496
msgid "This field is invalid."
msgstr "Dieses Feld ist ungültig."
-#: core/validators.py:536
+#: core/validators.py:532
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Konnte nichts von %s empfangen."
-#: core/validators.py:539
+#: core/validators.py:535
#, python-format
msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr "Die URL %(url)s lieferte den falschen Content-Type '%(contenttype)s'."
-#: core/validators.py:572
+#: core/validators.py:568
#, python-format
msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
msgstr "Bitte das ungeschlossene %(tag)s Tag in Zeile %(line)s schließen. Die Zeile beginnt mit \"%(start)s\"."
-#: core/validators.py:576
+#: core/validators.py:572
#, python-format
msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
msgstr "In Zeile %(line)s ist Text, der nicht in dem Kontext erlaubt ist. Die Zeile beginnt mit \"%(start)s\"."
-#: core/validators.py:581
+#: core/validators.py:577
#, python-format
msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
msgstr "Das Attribute %(attr)s in Zeile %(line)s ist ungültig. Die Zeile beginnt mit \"%(start)s\"."
-#: core/validators.py:586
+#: core/validators.py:582
#, python-format
msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
msgstr "<%(tag)s> in Zeile %(line)s ist ungültig. Die Zeile beginnt mit \"%(start)s\"."
-#: core/validators.py:590
+#: core/validators.py:586
#, python-format
msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
msgstr "Ein Tag in Zeile %(line)s hat eines oder mehrere Pflichtattribute nicht. Die Zeile beginnt mit \"%(start)s\"."
-#: core/validators.py:595
+#: core/validators.py:591
#, python-format
msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
msgstr "Das Attribut %(attr)s in Zeile %(line)s hat einen ungültigen Wert. Die Zeile beginnt mit \"%(start)s\"."
-#: db/models/manipulators.py:308
+#: db/models/manipulators.py:304
#, python-format
msgid "%(object)s with this %(type)s already exists for the given %(field)s."
msgstr "Ein '%(object)s' in dieser '%(type)s' existiert bereits für dieses '%(field)s'."
-#: db/models/fields/__init__.py:51
+#: db/models/fields/__init__.py:47
#, python-format
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "Ein '%(optname)s' mit diesem '%(fieldname)s' existiert bereits."
-#: db/models/fields/__init__.py:176
+#: db/models/fields/__init__.py:175
#: db/models/fields/__init__.py:348
-#: db/models/fields/__init__.py:780
-#: db/models/fields/__init__.py:791
-#: newforms/fields.py:46
+#: db/models/fields/__init__.py:797
+#: db/models/fields/__init__.py:808
+#: forms/fields.py:52
#: oldforms/__init__.py:374
msgid "This field is required."
msgstr "Dieses Feld ist zwingend erforderlich."
-#: db/models/fields/__init__.py:448
+#: db/models/fields/__init__.py:462
msgid "This value must be an integer."
msgstr "Dieser Wert muss eine Ganzzahl sein."
-#: db/models/fields/__init__.py:487
+#: db/models/fields/__init__.py:508
msgid "This value must be either True or False."
msgstr "Dieser Wert muss wahr oder falsch sein."
-#: db/models/fields/__init__.py:511
+#: db/models/fields/__init__.py:537
msgid "This field cannot be null."
msgstr "Dieses Feld darf nicht leer sein."
-#: db/models/fields/__init__.py:689
+#: db/models/fields/__init__.py:639
+#: db/models/fields/__init__.py:656
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[ss[.uuuuuu]] format."
+msgstr "Bitte eine gültige Datums- und Zeitangabe im Format JJJJ-MM-TT SS:MM[ss[.uuuuuu]] eingeben."
+
+#: db/models/fields/__init__.py:712
msgid "This value must be a decimal number."
-msgstr "Dieser Wert muss eine Ganzzahl sein."
+msgstr "Dieser Wert muss eine Dezimalzahl sein."
-#: db/models/fields/__init__.py:800
+#: db/models/fields/__init__.py:817
msgid "Enter a valid filename."
msgstr "Bitte einen gültigen Dateinamen eingeben."
-#: db/models/fields/__init__.py:981
+#: db/models/fields/__init__.py:1018
msgid "This value must be either None, True or False."
msgstr "Dieser Wert muss None, True oder False sein."
-#: db/models/fields/related.py:94
+#: db/models/fields/__init__.py:1133
+#: db/models/fields/__init__.py:1146
+msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
+msgstr "Bitte eine gültige Zeit im Format HH:MM[:ss[.uuuuuu]] eingeben."
+
+#: db/models/fields/related.py:93
#, python-format
msgid "Please enter a valid %s."
msgstr "Bitte ein gültiges '%s' eingeben."
-#: db/models/fields/related.py:746
-msgid "Separate multiple IDs with commas."
-msgstr "Mehrere IDs können mit Komma getrennt werden."
-
-#: db/models/fields/related.py:748
+#: db/models/fields/related.py:758
msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr "Um mehr als eine Selektion zu treffen, \"Strg\", oder auf dem Mac \"Command\", beim Klicken gedrückt halten."
-#: db/models/fields/related.py:795
+#: db/models/fields/related.py:838
#, 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] "Bitte gültige IDs für %(self)s eingeben. Der Wert %(value)r ist ungültig."
msgstr[1] "Bitte gültige IDs für %(self)s eingeben. Die Werte %(value)r sind ungültig."
-#: newforms/fields.py:47
+#: forms/fields.py:53
msgid "Enter a valid value."
msgstr "Bitte einen gültigen Wert eingeben."
-#: newforms/fields.py:124
+#: forms/fields.py:133
#, python-format
msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
msgstr "Bitte sicherstellen, dass der Text maximal %(max)d Zeichen hat. (Er hat %(length)d)."
-#: newforms/fields.py:125
+#: forms/fields.py:134
#, python-format
msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
msgstr "Bitte sicherstellen, dass der Text wenigstens %(min)d Zeichen hat. (Er hat %(length)d.)"
-#: newforms/fields.py:153
-#: newforms/fields.py:182
-#: newforms/fields.py:211
+#: forms/fields.py:162
+#: forms/fields.py:191
+#: forms/fields.py:220
#, python-format
msgid "Ensure this value is less than or equal to %s."
msgstr "Dieser Wert darf maximal %s sein."
-#: newforms/fields.py:154
-#: newforms/fields.py:183
-#: newforms/fields.py:212
+#: forms/fields.py:163
+#: forms/fields.py:192
+#: forms/fields.py:221
#, python-format
msgid "Ensure this value is greater than or equal to %s."
msgstr "Dieser Wert muss größer oder gleich %s sein."
-#: newforms/fields.py:181
-#: newforms/fields.py:210
+#: forms/fields.py:190
+#: forms/fields.py:219
msgid "Enter a number."
msgstr "Bitte eine Zahl eingeben."
-#: newforms/fields.py:213
+#: forms/fields.py:222
#, python-format
msgid "Ensure that there are no more than %s digits in total."
msgstr "Bitte geben Sie nicht mehr als insgesamt %s Ziffern ein."
-#: newforms/fields.py:214
+#: forms/fields.py:223
#, python-format
msgid "Ensure that there are no more than %s decimal places."
msgstr "Bitte geben Sie nicht mehr als %s Dezimalstellen ein."
-#: newforms/fields.py:215
+#: forms/fields.py:224
#, python-format
msgid "Ensure that there are no more than %s digits before the decimal point."
msgstr "Bitte geben Sie nicht mehr als %s Ziffern vor dem Komma ein."
-#: newforms/fields.py:263
-#: newforms/fields.py:750
+#: forms/fields.py:272
+#: forms/fields.py:802
msgid "Enter a valid date."
msgstr "Bitte ein gültiges Datum eingeben."
-#: newforms/fields.py:296
-#: newforms/fields.py:751
+#: forms/fields.py:305
+#: forms/fields.py:803
msgid "Enter a valid time."
msgstr "Bitte eine gültige Uhrzeit eingeben."
-#: newforms/fields.py:335
+#: forms/fields.py:344
msgid "Enter a valid date/time."
-msgstr "Bitte gültiges Datum und Uhrzeit eingeben."
+msgstr "Bitte ein gültiges Datum und Uhrzeit eingeben."
-#: newforms/fields.py:434
+#: forms/fields.py:431
msgid "No file was submitted."
msgstr "Es wurde keine Datei übertragen."
-#: newforms/fields.py:435
-#: oldforms/__init__.py:689
+#: forms/fields.py:432
+#: oldforms/__init__.py:693
msgid "The submitted file is empty."
msgstr "Die ausgewählte Datei ist leer."
-#: newforms/fields.py:497
+#: forms/fields.py:531
msgid "Enter a valid URL."
msgstr "Bitte eine gültige Adresse eingeben."
-#: newforms/fields.py:498
+#: forms/fields.py:532
msgid "This URL appears to be a broken link."
msgstr "Diese Adresse scheint nicht gültig zu sein."
-#: newforms/fields.py:559
-#: newforms/models.py:305
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Bitte eine gültige Auswahl treffen."
-
-#: newforms/fields.py:598
+#: forms/fields.py:600
+#: forms/fields.py:651
#, python-format
msgid "Select a valid choice. %(value)s is not one of the available choices."
msgstr "Bitte eine gültige Auswahl treffen. %(value)s ist keine gültige Auswahl."
-#: newforms/fields.py:599
-#: newforms/fields.py:661
-#: newforms/models.py:372
+#: forms/fields.py:652
+#: forms/fields.py:713
+#: forms/models.py:588
msgid "Enter a list of values."
-msgstr "Eine Liste mit Werten eingeben."
+msgstr "Bitte eine Liste mit Werten eingeben."
-#: newforms/fields.py:779
+#: forms/fields.py:831
msgid "Enter a valid IPv4 address."
msgstr "Bitte eine gültige IPv4-Adresse eingeben."
-#: newforms/models.py:373
+#: forms/models.py:521
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "Bitte eine gültige Auswahl treffen."
+
+#: forms/models.py:589
#, python-format
msgid "Select a valid choice. %s is not one of the available choices."
msgstr "Bitte eine gültige Auswahl treffen. %s ist keine gültige Auswahl."
@@ -3920,15 +4056,15 @@ msgstr "Zeilenumbrüche sind hier nicht erlaubt."
msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
msgstr "Bitte eine gültige Auswahl treffen; '%(data)s' ist nicht in %(choices)s."
-#: oldforms/__init__.py:745
+#: oldforms/__init__.py:754
msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Bitte eine Ganzzahl zwischen -32.768 und 32.767 eingeben."
+msgstr "Bitte eine ganze Zahl zwischen -32.768 und 32.767 eingeben."
-#: oldforms/__init__.py:755
+#: oldforms/__init__.py:764
msgid "Enter a positive number."
msgstr "Bitte eine ganze, positive Zahl eingeben."
-#: oldforms/__init__.py:765
+#: oldforms/__init__.py:774
msgid "Enter a whole number between 0 and 32,767."
msgstr "Bitte eine ganze Zahl zwischen 0 und 32.767 eingeben."
@@ -4167,7 +4303,7 @@ msgstr "Nov."
msgid "Dec."
msgstr "Dez."
-#: utils/text.py:127
+#: utils/text.py:128
msgid "or"
msgstr "oder"
@@ -4221,38 +4357,57 @@ msgstr "%(number)d %(type)s"
msgid ", %(number)d %(type)s"
msgstr ", %(number)d %(type)s"
-#: utils/translation/trans_real.py:403
+#: utils/translation/trans_real.py:401
msgid "DATE_FORMAT"
msgstr "j. N Y"
-#: utils/translation/trans_real.py:404
+#: utils/translation/trans_real.py:402
msgid "DATETIME_FORMAT"
msgstr "j. N Y, H:i"
-#: utils/translation/trans_real.py:405
+#: utils/translation/trans_real.py:403
msgid "TIME_FORMAT"
msgstr "H:i"
-#: utils/translation/trans_real.py:421
+#: utils/translation/trans_real.py:419
msgid "YEAR_MONTH_FORMAT"
msgstr "F Y"
-#: utils/translation/trans_real.py:422
+#: utils/translation/trans_real.py:420
msgid "MONTH_DAY_FORMAT"
msgstr "j. F"
-#: views/generic/create_update.py:43
+#: views/generic/create_update.py:129
#, python-format
msgid "The %(verbose_name)s was created successfully."
msgstr "%(verbose_name)s wurde erfolgreich angelegt."
-#: views/generic/create_update.py:117
+#: views/generic/create_update.py:172
#, python-format
msgid "The %(verbose_name)s was updated successfully."
msgstr "%(verbose_name)s wurde erfolgreich aktualisiert."
-#: views/generic/create_update.py:184
+#: views/generic/create_update.py:214
#, python-format
msgid "The %(verbose_name)s was deleted."
msgstr "%(verbose_name)s wurde gelöscht"
+#~ msgid "Ordering"
+#~ msgstr "Sortierung"
+#~ msgid "Order:"
+#~ msgstr "Reihenfolge:"
+#~ msgid "Your new password is: %(new_password)s"
+#~ msgstr "Ihr neues Passwort lautet: %(new_password)s"
+#~ msgid "Feel free to change this password by going to this page:"
+#~ msgstr "Sie können das Passwort auf folgender Seite ändern:"
+#~ msgid "Added %s."
+#~ msgstr "%s hinzugefügt."
+#~ msgid "Deleted %s."
+#~ msgstr "%s gelöscht."
+#~ msgid "The two 'new password' fields didn't match."
+#~ msgstr "Die beiden neuen Passwörter sind nicht identisch."
+#~ msgid "Year must be 1900 or later."
+#~ msgstr "Das Jahr muss 1900 oder später sein."
+#~ msgid "Separate multiple IDs with commas."
+#~ msgstr "Mehrere IDs können mit Komma getrennt werden."
+
diff --git a/django/conf/locale/es/LC_MESSAGES/django.mo b/django/conf/locale/es/LC_MESSAGES/django.mo
index a2fd2f77db..49f4fa3541 100644
--- a/django/conf/locale/es/LC_MESSAGES/django.mo
+++ b/django/conf/locale/es/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/es/LC_MESSAGES/django.po b/django/conf/locale/es/LC_MESSAGES/django.po
index b665fcf9a6..78e6b75b24 100644
--- a/django/conf/locale/es/LC_MESSAGES/django.po
+++ b/django/conf/locale/es/LC_MESSAGES/django.po
@@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-06-13 16:14+0200\n"
-"PO-Revision-Date: 2008-06-18 22:45+0200\n"
+"POT-Creation-Date: 2008-07-24 12:48+0200\n"
+"PO-Revision-Date: 2008-07-24 13:30+0100\n"
"Last-Translator: Django Spanish Translation Team <django-cat@googlegroups.com>\n"
"Language-Team: Django Spanish Translation Team <django-cat@googlegroups.com>\n"
"MIME-Version: 1.0\n"
@@ -59,146 +59,154 @@ msgid "Spanish"
msgstr "español"
#: conf/global_settings.py:55
+msgid "Estonian"
+msgstr "estonio"
+
+#: conf/global_settings.py:56
msgid "Argentinean Spanish"
msgstr "español de Argentina"
-#: conf/global_settings.py:56
+#: conf/global_settings.py:57
msgid "Basque"
msgstr "vasco"
-#: conf/global_settings.py:57
+#: conf/global_settings.py:58
msgid "Persian"
msgstr "persa"
-#: conf/global_settings.py:58
+#: conf/global_settings.py:59
msgid "Finnish"
msgstr "finés"
-#: conf/global_settings.py:59
+#: conf/global_settings.py:60
msgid "French"
msgstr "francés"
-#: conf/global_settings.py:60
+#: conf/global_settings.py:61
msgid "Irish"
msgstr "irlandés"
-#: conf/global_settings.py:61
+#: conf/global_settings.py:62
msgid "Galician"
msgstr "gallego"
-#: conf/global_settings.py:62
+#: conf/global_settings.py:63
msgid "Hungarian"
msgstr "húngaro"
-#: conf/global_settings.py:63
+#: conf/global_settings.py:64
msgid "Hebrew"
msgstr "hebreo"
-#: conf/global_settings.py:64
+#: conf/global_settings.py:65
msgid "Croatian"
msgstr "croata"
-#: conf/global_settings.py:65
+#: conf/global_settings.py:66
msgid "Icelandic"
msgstr "islandés"
-#: conf/global_settings.py:66
+#: conf/global_settings.py:67
msgid "Italian"
msgstr "italiano"
-#: conf/global_settings.py:67
+#: conf/global_settings.py:68
msgid "Japanese"
msgstr "japonés"
-#: conf/global_settings.py:68
+#: conf/global_settings.py:69
msgid "Georgian"
msgstr "georgiano"
-#: conf/global_settings.py:69
+#: conf/global_settings.py:70
msgid "Korean"
msgstr "koreano"
-#: conf/global_settings.py:70
+#: conf/global_settings.py:71
msgid "Khmer"
msgstr "khmer"
-#: conf/global_settings.py:71
+#: conf/global_settings.py:72
msgid "Kannada"
msgstr "kannada"
-#: conf/global_settings.py:72
+#: conf/global_settings.py:73
msgid "Latvian"
msgstr "letón"
-#: conf/global_settings.py:73
+#: conf/global_settings.py:74
+msgid "Lithuanian"
+msgstr "lituano"
+
+#: conf/global_settings.py:75
msgid "Macedonian"
msgstr "macedonio"
-#: conf/global_settings.py:74
+#: conf/global_settings.py:76
msgid "Dutch"
msgstr "holandés"
-#: conf/global_settings.py:75
+#: conf/global_settings.py:77
msgid "Norwegian"
msgstr "noruego"
-#: conf/global_settings.py:76
+#: conf/global_settings.py:78
msgid "Polish"
msgstr "polaco"
-#: conf/global_settings.py:77
+#: conf/global_settings.py:79
msgid "Portugese"
msgstr "portugués"
-#: conf/global_settings.py:78
+#: conf/global_settings.py:80
msgid "Brazilian Portuguese"
msgstr "portugués de Brasil"
-#: conf/global_settings.py:79
+#: conf/global_settings.py:81
msgid "Romanian"
msgstr "rumano"
-#: conf/global_settings.py:80
+#: conf/global_settings.py:82
msgid "Russian"
msgstr "ruso"
-#: conf/global_settings.py:81
+#: conf/global_settings.py:83
msgid "Slovak"
msgstr "eslovaco"
-#: conf/global_settings.py:82
+#: conf/global_settings.py:84
msgid "Slovenian"
msgstr "esloveno"
-#: conf/global_settings.py:83
+#: conf/global_settings.py:85
msgid "Serbian"
msgstr "serbio"
-#: conf/global_settings.py:84
+#: conf/global_settings.py:86
msgid "Swedish"
msgstr "sueco"
-#: conf/global_settings.py:85
+#: conf/global_settings.py:87
msgid "Tamil"
msgstr "tamil"
-#: conf/global_settings.py:86
+#: conf/global_settings.py:88
msgid "Telugu"
msgstr "telugu"
-#: conf/global_settings.py:87
+#: conf/global_settings.py:89
msgid "Turkish"
msgstr "turco"
-#: conf/global_settings.py:88
+#: conf/global_settings.py:90
msgid "Ukrainian"
msgstr "ucraniano"
-#: conf/global_settings.py:89
+#: conf/global_settings.py:91
msgid "Simplified Chinese"
msgstr "chino simplificado"
-#: conf/global_settings.py:90
+#: conf/global_settings.py:92
msgid "Traditional Chinese"
msgstr "chino tradicional"
@@ -211,8 +219,10 @@ msgstr ""
"<h3>Por %s:</h3>\n"
"<ul>\n"
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
+#: contrib/admin/filterspecs.py:74
+#: contrib/admin/filterspecs.py:92
+#: contrib/admin/filterspecs.py:147
+#: contrib/admin/filterspecs.py:173
msgid "All"
msgstr "Todo"
@@ -236,49 +246,209 @@ msgstr "Este mes"
msgid "This year"
msgstr "Este año"
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:147
+#: forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "Yes"
msgstr "Sí"
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:147
+#: forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "No"
msgstr "No"
-#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:154
+#: forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "Unknown"
msgstr "Desconocido"
-#: contrib/admin/models.py:18
+#: contrib/admin/models.py:19
msgid "action time"
msgstr "hora de acción"
-#: contrib/admin/models.py:21
+#: contrib/admin/models.py:22
msgid "object id"
msgstr "id de objeto"
-#: contrib/admin/models.py:22
+#: contrib/admin/models.py:23
msgid "object repr"
msgstr "repr de objeto"
-#: contrib/admin/models.py:23
+#: contrib/admin/models.py:24
msgid "action flag"
msgstr "marca de acción"
-#: contrib/admin/models.py:24
+#: contrib/admin/models.py:25
msgid "change message"
msgstr "mensaje de cambio"
-#: contrib/admin/models.py:27
+#: contrib/admin/models.py:28
msgid "log entry"
msgstr "entrada de registro"
-#: contrib/admin/models.py:28
+#: contrib/admin/models.py:29
msgid "log entries"
msgstr "entradas de registro"
+#: contrib/admin/options.py:161
+#: contrib/admin/options.py:180
+msgid "None"
+msgstr "Ninguno"
+
+#: contrib/admin/options.py:347
+#: contrib/auth/admin.py:37
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "Se añadió con éxito el %(name)s \"%(obj)s\"."
+
+#: contrib/admin/options.py:351
+#: contrib/admin/options.py:419
+#: contrib/auth/admin.py:42
+msgid "You may edit it again below."
+msgstr "Puede editarlo de nuevo abajo."
+
+#: contrib/admin/options.py:361
+#: contrib/admin/options.py:428
+#, python-format
+msgid "You may add another %s below."
+msgstr "Puede añadir otro %s abajo."
+
+#: contrib/admin/options.py:395
+#, python-format
+msgid "Changed %s."
+msgstr "Modificado/a %s."
+
+#: contrib/admin/options.py:395
+#: contrib/admin/options.py:405
+#: core/validators.py:279
+#: db/models/manipulators.py:305
+msgid "and"
+msgstr "y"
+
+#: contrib/admin/options.py:400
+#, python-format
+msgid "Added %(name)s \"%(object)s\"."
+msgstr "Añadido/a \"%(object)s\" %(name)s."
+
+#: contrib/admin/options.py:404
+#, python-format
+msgid "Changed %(list)s for %(name)s \"%(object)s\"."
+msgstr "Modificados %(list)s para \"%(object)s\" %(name)s."
+
+#: contrib/admin/options.py:409
+#, python-format
+msgid "Deleted %(name)s \"%(object)s\"."
+msgstr "Eliminado/a \"%(object)s\" %(name)s."
+
+#: contrib/admin/options.py:414
+msgid "No fields changed."
+msgstr "No ha cambiado ningún campo."
+
+#: contrib/admin/options.py:417
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr "Se modificó con éxito el %(name)s \"%(obj)s\"."
+
+#: contrib/admin/options.py:425
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr "Se añadió con éxito el %(name)s \"%(obj)s. Puede editarlo de nuevo abajo."
+
+#: contrib/admin/options.py:506
+#, python-format
+msgid "Add %s"
+msgstr "Añadir %s"
+
+#: contrib/admin/options.py:568
+#, python-format
+msgid "Change %s"
+msgstr "Modificar %s"
+
+#: contrib/admin/options.py:598
+msgid "Database error"
+msgstr "Error en la base de datos"
+
+#: contrib/admin/options.py:647
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "Se eliminó con éxito el %(name)s \"%(obj)s\"."
+
+#: contrib/admin/options.py:653
+msgid "Are you sure?"
+msgstr "¿Está seguro?"
+
+#: contrib/admin/options.py:680
+#, python-format
+msgid "Change history: %s"
+msgstr "Histórico de modificaciones: %s"
+
+#: contrib/admin/sites.py:18
+#: contrib/admin/views/decorators.py:16
+#: contrib/auth/forms.py:70
+#: contrib/comments/views/comments.py:56
+msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
+msgstr "Por favor, introduzca un nombre de usuario y contraseña correctos. Note que ambos campos son sensibles a mayúsculas/minúsculas."
+
+#: contrib/admin/sites.py:233
+#: contrib/admin/views/decorators.py:68
+msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
+msgstr "Por favor, inicie sesión de nuevo, ya que su sesión ha caducado. No se preocupe: se ha guardado su envío."
+
+#: contrib/admin/sites.py:240
+#: contrib/admin/views/decorators.py:75
+msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
+msgstr "Parece que su navegador no está configurado para aceptar cookies. Actívelas , recargue esta página, e inténtelo de nuevo."
+
+#: contrib/admin/sites.py:254
+#: contrib/admin/sites.py:260
+#: contrib/admin/views/decorators.py:92
+msgid "Usernames cannot contain the '@' character."
+msgstr "Los nombres de usuario no pueden contener el carácter '@'."
+
+#: contrib/admin/sites.py:257
+#: contrib/admin/views/decorators.py:88
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr "Su dirección de correo no es su nombre de usuario. Pruebe con '%s' en su lugar."
+
+#: contrib/admin/sites.py:325
+msgid "Site administration"
+msgstr "Sitio administrativo"
+
+#: contrib/admin/sites.py:347
+#: contrib/admin/templates/admin/login.html:27
+#: contrib/admin/views/decorators.py:30
+msgid "Log in"
+msgstr "Iniciar sesión"
+
+#: contrib/admin/util.py:126
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr "Uno o más %(fieldname)s en %(name)s: %(obj)s"
+
+#: contrib/admin/util.py:131
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "Uno o más %(fieldname)s en %(name)s:"
+
+#: contrib/admin/widgets.py:65
+msgid "Date:"
+msgstr "Fecha:"
+
+#: contrib/admin/widgets.py:65
+msgid "Time:"
+msgstr "Hora:"
+
+#: contrib/admin/widgets.py:89
+msgid "Currently:"
+msgstr "Actualmente:"
+
+#: contrib/admin/widgets.py:89
+msgid "Change:"
+msgstr "Modificar:"
+
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
@@ -289,17 +459,17 @@ msgid "We're sorry, but the requested page could not be found."
msgstr "Lo sentimos, pero no se encuentra la página solicitada."
#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/change_form.html:17
+#: contrib/admin/templates/admin/change_list.html:8
+#: contrib/admin/templates/admin/delete_confirmation.html:6
#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/auth/user/change_password.html:10
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_reset_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
msgid "Home"
@@ -318,30 +488,31 @@ msgid "Server Error <em>(500)</em>"
msgstr "Error de servidor <em>(500)</em>"
#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Ha ocurrido un error. Se ha informado a los administradores del sitio "
-"mediante correo electrónico y debería arreglarse en breve. Gracias por su "
-"paciencia."
+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 "Ha ocurrido un error. Se ha informado a los administradores del sitio mediante correo electrónico y debería arreglarse en breve. Gracias por su paciencia."
-#: contrib/admin/templates/admin/base.html:26
+#: contrib/admin/templates/admin/base.html:25
msgid "Welcome,"
msgstr "Bienvenido/a,"
-#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin/base.html:25
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
msgid "Documentation"
msgstr "Documentación"
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/auth/user/change_password.html:13
+#: 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
msgid "Change password"
msgstr "Cambiar contraseña"
-#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
#: contrib/comments/templates/comments/form.html:6
msgid "Log out"
msgstr "Terminar sesión"
@@ -354,66 +525,53 @@ msgstr "Sitio de administración de Django"
msgid "Django administration"
msgstr "Administración de Django"
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
+#: contrib/admin/templates/admin/change_form.html:19
+#: contrib/admin/templates/admin/index.html:29
msgid "Add"
msgstr "Añadir"
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
+#: contrib/admin/templates/admin/change_form.html:26
+#: contrib/admin/templates/admin/object_history.html:5
msgid "History"
msgstr "Histórico"
-#: contrib/admin/templates/admin/change_form.html:21
+#: contrib/admin/templates/admin/change_form.html:27
msgid "View on site"
msgstr "Ver en el sitio"
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
+#: contrib/admin/templates/admin/change_form.html:37
+#: contrib/admin/templates/admin/auth/user/change_password.html:22
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] "Por favor, corrija el siguiente error."
msgstr[1] "Por favor, corrija los siguientes errores."
-#: contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr "Ordenación"
-
-#: contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr "Orden:"
-
-#: contrib/admin/templates/admin/change_list.html:11
+#: contrib/admin/templates/admin/change_list.html:16
#, python-format
msgid "Add %(name)s"
msgstr "Añadir %(name)s"
-#: contrib/admin/templates/admin/delete_confirmation.html:8
+#: contrib/admin/templates/admin/change_list.html:26
+msgid "Filter"
+msgstr "Filtro"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:9
#: contrib/admin/templates/admin/submit_line.html:3
+#: contrib/admin/templates/admin/edit_inline/tabular.html:15
msgid "Delete"
msgstr "Eliminar"
-#: contrib/admin/templates/admin/delete_confirmation.html:13
+#: contrib/admin/templates/admin/delete_confirmation.html:15
#, 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 ""
-"Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación "
-"de objetos relacionados, pero su cuenta no tiene permiso para borrar los "
-"siguientes tipos de objetos:"
+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 "Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación de objetos relacionados, pero su cuenta no tiene permiso para borrar los siguientes tipos de objetos:"
-#: contrib/admin/templates/admin/delete_confirmation.html:20
+#: contrib/admin/templates/admin/delete_confirmation.html:22
#, 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 ""
-"¿Está seguro de que quiere borrar los %(object_name)s \"%(escaped_object)s"
-"\"? Se borrarán los siguientes objetos relacionados:"
+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 "¿Está seguro de que quiere borrar los %(object_name)s \"%(escaped_object)s\"? Se borrarán los siguientes objetos relacionados:"
-#: contrib/admin/templates/admin/delete_confirmation.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:27
msgid "Yes, I'm sure"
msgstr "Sí, estoy seguro"
@@ -422,89 +580,70 @@ msgstr "Sí, estoy seguro"
msgid " By %(filter_title)s "
msgstr " Por %(filter_title)s "
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filtro"
-
-#: contrib/admin/templates/admin/index.html:17
+#: contrib/admin/templates/admin/index.html:18
#, python-format
msgid "Models available in the %(name)s application."
msgstr "Modelos disponibles en la aplicación %(name)s."
-#: contrib/admin/templates/admin/index.html:18
+#: contrib/admin/templates/admin/index.html:19
#, python-format
msgid "%(name)s"
msgstr "%(name)s"
-#: contrib/admin/templates/admin/index.html:34
+#: contrib/admin/templates/admin/index.html:35
msgid "Change"
msgstr "Modificar"
-#: contrib/admin/templates/admin/index.html:44
+#: contrib/admin/templates/admin/index.html:45
msgid "You don't have permission to edit anything."
msgstr "No tiene permiso para editar nada."
-#: contrib/admin/templates/admin/index.html:52
+#: contrib/admin/templates/admin/index.html:53
msgid "Recent Actions"
msgstr "Acciones recientes"
-#: contrib/admin/templates/admin/index.html:53
+#: contrib/admin/templates/admin/index.html:54
msgid "My Actions"
msgstr "Mis acciones"
-#: contrib/admin/templates/admin/index.html:57
+#: contrib/admin/templates/admin/index.html:58
msgid "None available"
msgstr "Ninguno disponible"
-#: 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 ""
-"Algo va mal con la instalación de la base de datos. Asegúrese que las tablas "
-"necesarias han sido creadas, y que la base de datos puede ser leída por el "
-"usuario apropiado."
+#: contrib/admin/templates/admin/invalid_setup.html:7
+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 "Algo va mal con la instalación de la base de datos. Asegúrese que las tablas necesarias han sido creadas, y que la base de datos puede ser leída por el usuario apropiado."
-#: contrib/admin/templates/admin/login.html:17
+#: contrib/admin/templates/admin/login.html:19
#: contrib/comments/templates/comments/form.html:6
#: contrib/comments/templates/comments/form.html:8
msgid "Username:"
msgstr "Usuario:"
-#: contrib/admin/templates/admin/login.html:20
+#: contrib/admin/templates/admin/login.html:22
#: contrib/comments/templates/comments/form.html:8
msgid "Password:"
msgstr "Contraseña:"
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:31
-msgid "Log in"
-msgstr "Iniciar sesión"
-
-#: contrib/admin/templates/admin/object_history.html:17
+#: contrib/admin/templates/admin/object_history.html:16
msgid "Date/time"
msgstr "Fecha/hora"
-#: contrib/admin/templates/admin/object_history.html:18
+#: contrib/admin/templates/admin/object_history.html:17
msgid "User"
msgstr "Usuario"
-#: contrib/admin/templates/admin/object_history.html:19
+#: contrib/admin/templates/admin/object_history.html:18
msgid "Action"
msgstr "Acción"
-#: contrib/admin/templates/admin/object_history.html:25
+#: contrib/admin/templates/admin/object_history.html:24
msgid "DATE_WITH_TIME_FULL"
msgstr "j M Y P"
-#: contrib/admin/templates/admin/object_history.html:35
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Este objeto no tiene histórico de cambios. Probablemente no fue añadido "
-"usando este sitio de administración."
+#: contrib/admin/templates/admin/object_history.html:32
+msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
+msgstr "Este objeto no tiene histórico de cambios. Probablemente no fue añadido usando este sitio de administración."
#: contrib/admin/templates/admin/pagination.html:10
msgid "Show all"
@@ -543,38 +682,38 @@ msgid "Save"
msgstr "Grabar"
#: 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 ""
-"Primero introduzca un nombre de usuario y una contraseña. Luego podrá editar "
-"el resto de opciones del usuario."
+msgid "First, enter a username and password. Then, you'll be able to edit more user options."
+msgstr "Primero introduzca un nombre de usuario y una contraseña. Luego podrá editar el resto de opciones del usuario."
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
+#: contrib/admin/templates/admin/auth/user/add_form.html:13
+#: contrib/auth/forms.py:12
+#: contrib/auth/forms.py:49
msgid "Username"
msgstr "Nombre de usuario"
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
+#: contrib/admin/templates/admin/auth/user/add_form.html:20
#: contrib/admin/templates/admin/auth/user/change_password.html:33
+#: contrib/auth/forms.py:15
+#: contrib/auth/forms.py:50
+#: contrib/auth/forms.py:166
msgid "Password"
msgstr "Contraseña"
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
+#: contrib/admin/templates/admin/auth/user/add_form.html:26
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/auth/forms.py:167
msgid "Password (again)"
msgstr "Contraseña (de nuevo)"
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/admin/templates/admin/auth/user/add_form.html:27
+#: contrib/admin/templates/admin/auth/user/change_password.html:40
msgid "Enter the same password as above, for verification."
msgstr "Introduzca la misma contraseña que arriba, para verificación."
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
+#: contrib/admin/templates/admin/auth/user/change_password.html:26
#, python-format
msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Introduzca una nueva contraseña para el usuario <strong>%(username)s</"
-"strong>."
+msgstr "Introduzca una nueva contraseña para el usuario <strong>%(username)s</strong>."
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
msgid "Bookmarklets"
@@ -596,36 +735,27 @@ msgid ""
msgstr ""
"\n"
"<p class=\"help\">Para instalar bookmarklets, arrastre el enlace a su barra\n"
-"de favoritos, o pulse con el botón derecho el enlace y añádalo a sus "
-"favoritos.\n"
+"de favoritos, o pulse con el botón derecho el enlace y añádalo a sus favoritos.\n"
"Ahora puede escoger el bookmarklet desde cualquier página del sitio.\n"
"Observe que algunos de estos bookmarklets precisan que esté viendo\n"
"el sitio desde un ordenador señalado como \"interno\" (hable\n"
-"con su administrador de sistemas si no está seguro si el suyo lo es).</"
-"p>\n"
+"con su administrador de sistemas si no está seguro si el suyo lo es).</p>\n"
#: contrib/admin/templates/admin_doc/bookmarklets.html:18
msgid "Documentation for this page"
msgstr "Documentación para esta página"
#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Lleva desde cualquier página a la documentación de la vista que la genera."
+msgid "Jumps you from any page to the documentation for the view that generates that page."
+msgstr "Lleva desde cualquier página a la documentación de la vista que la genera."
#: contrib/admin/templates/admin_doc/bookmarklets.html:21
msgid "Show object ID"
msgstr "Mostrar ID de objeto"
#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Muestra el tipo de contenido e ID único de las páginas que representan un "
-"simple objeto."
+msgid "Shows the content-type and unique ID for pages that represent a single object."
+msgstr "Muestra el tipo de contenido e ID único de las páginas que representan un simple objeto."
#: contrib/admin/templates/admin_doc/bookmarklets.html:24
msgid "Edit this object (current window)"
@@ -633,9 +763,7 @@ msgstr "Editar este objeto (ventana actual)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:25
msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Lleva a la página de administración de páginas que representan un único "
-"objeto."
+msgstr "Lleva a la página de administración de páginas que representan un único objeto."
#: contrib/admin/templates/admin_doc/bookmarklets.html:27
msgid "Edit this object (new window)"
@@ -643,8 +771,7 @@ msgstr "Editar este objeto (nueva ventana)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:28
msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Como antes, pero abre la página de administración en una nueva ventana."
+msgstr "Como antes, pero abre la página de administración en una nueva ventana."
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
@@ -654,43 +781,39 @@ msgstr "Gracias por el tiempo que ha dedicado hoy al sitio web."
msgid "Log in again"
msgstr "Iniciar sesión de nuevo"
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_change_form.html:6
+#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr "Cambio de contraseña"
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "Cambio de contraseña exitoso"
-#: contrib/admin/templates/registration/password_change_done.html:11
+#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "Su contraseña ha sido cambiada."
-#: contrib/admin/templates/registration/password_change_form.html:11
-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 ""
-"Por favor, introduzca su contraseña antigua, por seguridad, y después introduzca "
-"la nueva contraseña dos veces para verificar que la ha escrito correctamente."
+#: 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 "Por favor, introduzca su contraseña antigua, por seguridad, y después introduzca la nueva contraseña dos veces para verificar que la ha escrito correctamente."
-#: contrib/admin/templates/registration/password_change_form.html:16
+#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "Contraseña antigua:"
-#: contrib/admin/templates/registration/password_change_form.html:18
+#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
msgstr "Contraseña nueva:"
-#: contrib/admin/templates/registration/password_change_form.html:20
+#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
msgstr "Confirme contraseña:"
-#: contrib/admin/templates/registration/password_change_form.html:22
+#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
msgstr "Cambiar mi contraseña"
@@ -707,12 +830,8 @@ msgid "Password reset successful"
msgstr "Restablecimiento de contraseña exitoso"
#: 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 ""
-"Le hemos enviado una contraseña nueva a la dirección que ha suministrado. Debería "
-"recibirla en breve."
+msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly."
+msgstr "Le hemos enviado una contraseña nueva a la dirección que ha suministrado. Debería recibirla en breve."
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
@@ -746,12 +865,8 @@ msgid "The %(site_name)s team"
msgstr "El equipo de %(site_name)s"
#: 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 ""
-"¿Ha olvidado su contraseña? Introduzca su dirección de correo electrónico, y "
-"crearemos una nueva que le enviaremos por correo."
+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 "¿Ha olvidado su contraseña? Introduzca su dirección de correo electrónico, y crearemos una nueva que le enviaremos por correo."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
@@ -761,363 +876,257 @@ msgstr "Dirección de correo electrónico:"
msgid "Reset my password"
msgstr "Restablecer mi contraseña"
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Fecha:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Hora:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Actualmente:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Modificar:"
-
#: contrib/admin/templatetags/admin_list.py:257
msgid "All dates"
msgstr "Todas las fechas"
-#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267
+#: contrib/admin/views/main.py:65
#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Se añadió con éxito el %(name)s \"%(obj)s\"."
-
-#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr "Puede editarlo de nuevo abajo."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Añadir usuario"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "La contraseña se ha cambiado con éxito."
-
-#: contrib/admin/views/auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr "Cambiar contraseña: %s"
-
-#: contrib/admin/views/decorators.py:17 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Por favor, introduzca un nombre de usuario y contraseña correctos. Note que "
-"ambos campos son sensibles a mayúsculas/minúsculas."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Por favor, inicie sesión de nuevo, ya que su sesión ha caducado. No se "
-"preocupe: se ha guardado su envío."
-
-#: contrib/admin/views/decorators.py:76
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Parece que su navegador no está configurado para aceptar cookies. Actívelas "
-", recargue esta página, e inténtelo de nuevo."
+msgid "Select %s"
+msgstr "Escoja %s"
-#: contrib/admin/views/decorators.py:89
+#: contrib/admin/views/main.py:65
#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"Su dirección de correo no es su nombre de usuario. Pruebe con '%s' en su "
-"lugar."
-
-#: contrib/admin/views/decorators.py:93
-msgid "Usernames cannot contain the '@' character."
-msgstr "Los nombres de usuario no pueden contener el carácter '@'."
+msgid "Select %s to change"
+msgstr "Escoja %s a modificar"
-#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
+#: contrib/admindocs/views.py:53
+#: contrib/admindocs/views.py:55
+#: contrib/admindocs/views.py:57
msgid "tag:"
msgstr "etiqueta:"
-#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
+#: contrib/admindocs/views.py:87
+#: contrib/admindocs/views.py:89
+#: contrib/admindocs/views.py:91
msgid "filter:"
msgstr "filtro:"
-#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
+#: contrib/admindocs/views.py:153
+#: contrib/admindocs/views.py:155
+#: contrib/admindocs/views.py:157
msgid "view:"
msgstr "vista:"
-#: contrib/admin/views/doc.py:166
+#: contrib/admindocs/views.py:187
#, python-format
msgid "App %r not found"
msgstr "Aplicación %r no encontrada"
-#: contrib/admin/views/doc.py:173
+#: contrib/admindocs/views.py:194
#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "El modelo %(name)s no se ha encontrado en la aplicación %(label)r"
+msgid "Model %(model_name)r not found in app %(app_label)r"
+msgstr "El modelo %(model_name)r no se ha encontrado en la aplicación %(app_label)r"
-#: contrib/admin/views/doc.py:185
+#: contrib/admindocs/views.py:206
#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "el objeto relacionado `%(label)s.%(type)s`"
+msgid "the related `%(app_label)s.%(data_type)s` object"
+msgstr "el objeto relacionado `%(app_label)s.%(data_type)s`"
-#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226
+#: contrib/admindocs/views.py:206
+#: contrib/admindocs/views.py:228
+#: contrib/admindocs/views.py:242
+#: contrib/admindocs/views.py:247
msgid "model:"
msgstr "modelo:"
-#: contrib/admin/views/doc.py:216
+#: contrib/admindocs/views.py:237
#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "los objetos relacionados `%(label)s.%(name)s`"
+msgid "related `%(app_label)s.%(object_name)s` objects"
+msgstr "los objetos relacionados `%(app_label)s.%(object_name)s`"
-#: contrib/admin/views/doc.py:221
+#: contrib/admindocs/views.py:242
#, python-format
msgid "all %s"
msgstr "todo %s"
-#: contrib/admin/views/doc.py:226
+#: contrib/admindocs/views.py:247
#, python-format
msgid "number of %s"
msgstr "número de %s"
-#: contrib/admin/views/doc.py:231
+#: contrib/admindocs/views.py:253
#, python-format
msgid "Fields on %s objects"
msgstr "Campos en %s objetos"
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315
+#: contrib/admindocs/views.py:317
+#: contrib/admindocs/views.py:328
+#: contrib/admindocs/views.py:330
+#: contrib/admindocs/views.py:336
+#: contrib/admindocs/views.py:337
+#: contrib/admindocs/views.py:339
msgid "Integer"
msgstr "Entero"
-#: contrib/admin/views/doc.py:294
+#: contrib/admindocs/views.py:318
msgid "Boolean (Either True or False)"
msgstr "Booleano (Verdadero o Falso)"
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314
+#: contrib/admindocs/views.py:319
+#: contrib/admindocs/views.py:338
#, python-format
msgid "String (up to %(max_length)s)"
msgstr "Cadena (máximo %(max_length)s)"
-#: contrib/admin/views/doc.py:296
+#: contrib/admindocs/views.py:320
msgid "Comma-separated integers"
msgstr "Enteros separados por comas"
-#: contrib/admin/views/doc.py:297
+#: contrib/admindocs/views.py:321
msgid "Date (without time)"
msgstr "Fecha (sin hora)"
-#: contrib/admin/views/doc.py:298
+#: contrib/admindocs/views.py:322
msgid "Date (with time)"
msgstr "Fecha (con hora)"
-#: contrib/admin/views/doc.py:299
+#: contrib/admindocs/views.py:323
msgid "Decimal number"
msgstr "Número decimal"
-#: contrib/admin/views/doc.py:300
+#: contrib/admindocs/views.py:324
msgid "E-mail address"
msgstr "Dirección de correo electrónico"
-#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
+#: contrib/admindocs/views.py:325
+#: contrib/admindocs/views.py:326
+#: contrib/admindocs/views.py:329
msgid "File path"
msgstr "Ruta de fichero"
-#: contrib/admin/views/doc.py:303
+#: contrib/admindocs/views.py:327
msgid "Floating point number"
msgstr "Número en coma flotante"
-#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89
+#: contrib/admindocs/views.py:331
+#: contrib/comments/models.py:89
msgid "IP address"
msgstr "Dirección IP"
-#: contrib/admin/views/doc.py:309
+#: contrib/admindocs/views.py:333
msgid "Boolean (Either True, False or None)"
msgstr "Booleano (Verdadero, Falso o Nulo)"
-#: contrib/admin/views/doc.py:310
+#: contrib/admindocs/views.py:334
msgid "Relation to parent model"
msgstr "Relación con el modelo padre"
-#: contrib/admin/views/doc.py:311
+#: contrib/admindocs/views.py:335
msgid "Phone number"
msgstr "Número de teléfono"
-#: contrib/admin/views/doc.py:316
+#: contrib/admindocs/views.py:340
msgid "Text"
msgstr "Texto"
-#: contrib/admin/views/doc.py:317
+#: contrib/admindocs/views.py:341
msgid "Time"
msgstr "Hora"
-#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:8
+#: contrib/admindocs/views.py:342
+#: contrib/flatpages/models.py:8
msgid "URL"
msgstr "URL"
-#: contrib/admin/views/doc.py:319
+#: contrib/admindocs/views.py:343
msgid "U.S. state (two uppercase letters)"
msgstr "Estado de los EEUU (dos letras mayúsculas)"
-#: contrib/admin/views/doc.py:320
+#: contrib/admindocs/views.py:344
msgid "XML text"
msgstr "Texto XML"
-#: contrib/admin/views/doc.py:346
+#: contrib/admindocs/views.py:370
#, python-format
msgid "%s does not appear to be a urlpattern object"
msgstr "%s no parece ser un objeto urlpattern"
-#: contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr "Sitio administrativo"
-
-#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "Puede añadir otro %s abajo."
-
-#: contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "Añadir %s"
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "Añadido %s."
-
-#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348 core/validators.py:283
-#: db/models/manipulators.py:309
-msgid "and"
-msgstr "y"
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "Modificado %s."
-
-#: contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "Borrado %s."
-
-#: contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr "No ha cambiado ningún campo."
-
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Se modificó con éxito el %(name)s \"%(obj)s\"."
-
-#: contrib/admin/views/main.py:362
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Se añadió con éxito el %(name)s \"%(obj)s. Puede editarlo de nuevo abajo."
-
-#: contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
-
-#: contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Uno o más %(fieldname)s en %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Uno o más %(fieldname)s en %(name)s:"
+#: contrib/auth/admin.py:17
+msgid "Personal info"
+msgstr "Información personal"
-#: contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Se eliminó con éxito el %(name)s \"%(obj)s\"."
+#: contrib/auth/admin.py:18
+msgid "Permissions"
+msgstr "Permisos"
-#: contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr "¿Está seguro?"
+#: contrib/auth/admin.py:19
+msgid "Important dates"
+msgstr "Fechas importantes"
-#: contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "Histórico de modificaciones: %s"
+#: contrib/auth/admin.py:20
+msgid "Groups"
+msgstr "Grupos"
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "Escoja %s"
+#: contrib/auth/admin.py:47
+msgid "Add user"
+msgstr "Añadir usuario"
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "Escoja %s a modificar"
+#: contrib/auth/forms.py:13
+#: contrib/auth/models.py:134
+msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
+msgstr "Requerido. 30 caracteres o menos. Sólo caracteres alfanuméricos (letras, dígitos y guiones bajos)."
-#: contrib/admin/views/main.py:765
-msgid "Database error"
-msgstr "Error en la base de datos"
+#: contrib/auth/forms.py:14
+#: core/validators.py:72
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Este valor debe contener sólo letras, números y guiones bajos."
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Las dos contraseñas no coinciden."
+#: contrib/auth/forms.py:16
+msgid "Password confirmation"
+msgstr "Contraseña (confirmación)"
-#: contrib/auth/forms.py:25
+#: contrib/auth/forms.py:28
msgid "A user with that username already exists."
msgstr "Ya existe un usuario con este nombre."
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Su navegador no parece tener las cookies habilitadas. Las "
-"cookies se necesitan para poder ingresar."
+#: contrib/auth/forms.py:34
+#: contrib/auth/forms.py:153
+#: contrib/auth/forms.py:178
+msgid "The two password fields didn't match."
+msgstr "Las dos contraseñas no coinciden."
-#: contrib/auth/forms.py:62
+#: contrib/auth/forms.py:72
+#: contrib/comments/views/comments.py:58
msgid "This account is inactive."
msgstr "Esta cuenta está inactiva."
-#: contrib/auth/forms.py:84
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Esta dirección de correo electrónico no tiene una cuenta de usuario "
-"asociada. ¿Está seguro de que se ha registrado?"
+#: contrib/auth/forms.py:77
+#: contrib/comments/views/comments.py:49
+msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
+msgstr "Su navegador no parece tener las cookies habilitadas. Las cookies se necesitan para poder ingresar."
+
+#: contrib/auth/forms.py:90
+msgid "E-mail"
+msgstr "Correo electrónico"
-#: contrib/auth/forms.py:107
+#: contrib/auth/forms.py:99
+msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?"
+msgstr "Esta dirección de correo electrónico no tiene una cuenta de usuario asociada. ¿Está seguro de que se ha registrado?"
+
+#: contrib/auth/forms.py:124
#, python-format
msgid "Password reset on %s"
msgstr "Contraseña restablecida en %s"
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr ""
-"Los dos campos 'nueva contraseña' no coinciden."
+#: contrib/auth/forms.py:131
+msgid "Old password"
+msgstr "Contraseña antigua"
-#: contrib/auth/forms.py:124
+#: contrib/auth/forms.py:132
+msgid "New password"
+msgstr "Contraseña nueva"
+
+#: contrib/auth/forms.py:133
+msgid "New password confirmation"
+msgstr "Contraseña nueva (confirmación):"
+
+#: contrib/auth/forms.py:145
msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"Su contraseña antigua es incorrecta. Por favor, vuelva a introducirla "
-"correctamente."
+msgstr "Su contraseña antigua es incorrecta. Por favor, vuelva a introducirla correctamente."
-#: contrib/auth/models.py:73 contrib/auth/models.py:93
+#: contrib/auth/models.py:73
+#: contrib/auth/models.py:93
msgid "name"
msgstr "nombre"
@@ -1129,7 +1138,8 @@ msgstr "nombre en código"
msgid "permission"
msgstr "permiso"
-#: contrib/auth/models.py:79 contrib/auth/models.py:94
+#: contrib/auth/models.py:79
+#: contrib/auth/models.py:94
msgid "permissions"
msgstr "permisos"
@@ -1137,131 +1147,102 @@ msgstr "permisos"
msgid "group"
msgstr "grupo"
-#: contrib/auth/models.py:98 contrib/auth/models.py:148
+#: contrib/auth/models.py:98
+#: contrib/auth/models.py:144
msgid "groups"
msgstr "grupos"
-#: contrib/auth/models.py:138
+#: contrib/auth/models.py:134
msgid "username"
msgstr "nombre de usuario"
-#: contrib/auth/models.py:138
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Requerido. 30 caracteres o menos. Sólo caracteres alfanuméricos (letras, "
-"dígitos y guiones bajos)."
-
-#: contrib/auth/models.py:139
+#: contrib/auth/models.py:135
msgid "first name"
msgstr "nombre propio"
-#: contrib/auth/models.py:140
+#: contrib/auth/models.py:136
msgid "last name"
msgstr "apellidos"
-#: contrib/auth/models.py:141
+#: contrib/auth/models.py:137
msgid "e-mail address"
msgstr "dirección de correo electrónico"
-#: contrib/auth/models.py:142
+#: contrib/auth/models.py:138
msgid "password"
msgstr "contraseña"
-#: contrib/auth/models.py:142
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Use'[algo]$[sal]$[hash hexadecimal]' o use <a href=\"password/\">el "
-"formulario para cambiar la contraseña</a>."
+#: contrib/auth/models.py:138
+msgid "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."
+msgstr "Use'[algo]$[sal]$[hash hexadecimal]' o use <a href=\"password/\">el formulario para cambiar la contraseña</a>."
-#: contrib/auth/models.py:143
+#: contrib/auth/models.py:139
msgid "staff status"
msgstr "es staff"
-#: contrib/auth/models.py:143
+#: contrib/auth/models.py:139
msgid "Designates whether the user can log into this admin site."
msgstr "Indica si el usuario puede entrar en este sitio de administración."
-#: contrib/auth/models.py:144
+#: contrib/auth/models.py:140
msgid "active"
msgstr "activo"
-#: contrib/auth/models.py:144
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Indica si el usuario puede ser tratado como activo. Desmarque "
-"esta opción en lugar de borrar la cuenta."
+#: contrib/auth/models.py:140
+msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts."
+msgstr "Indica si el usuario puede ser tratado como activo. Desmarque esta opción en lugar de borrar la cuenta."
-#: contrib/auth/models.py:145
+#: contrib/auth/models.py:141
msgid "superuser status"
msgstr "es superusuario"
-#: contrib/auth/models.py:145
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Indica que este usuario tiene todos los permisos sin asignárselos "
-"explícitamente."
+#: contrib/auth/models.py:141
+msgid "Designates that this user has all permissions without explicitly assigning them."
+msgstr "Indica que este usuario tiene todos los permisos sin asignárselos explícitamente."
-#: contrib/auth/models.py:146
+#: contrib/auth/models.py:142
msgid "last login"
msgstr "último inicio de sesión"
-#: contrib/auth/models.py:147
+#: contrib/auth/models.py:143
msgid "date joined"
msgstr "fecha de alta"
-#: contrib/auth/models.py:149
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Además de los permisos asignados manualmente, este usuario también tendrá "
-"todos los permisos de los grupos en los que esté."
+#: contrib/auth/models.py:145
+msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
+msgstr "Además de los permisos asignados manualmente, este usuario también tendrá todos los permisos de los grupos en los que esté."
-#: contrib/auth/models.py:150
+#: contrib/auth/models.py:146
msgid "user permissions"
msgstr "permisos de usuario"
-#: contrib/auth/models.py:154
+#: contrib/auth/models.py:150
msgid "user"
msgstr "usuario"
-#: contrib/auth/models.py:155
+#: contrib/auth/models.py:151
msgid "users"
msgstr "usuarios"
-#: contrib/auth/models.py:161
-msgid "Personal info"
-msgstr "Información personal"
-
-#: contrib/auth/models.py:162
-msgid "Permissions"
-msgstr "Permisos"
-
-#: contrib/auth/models.py:163
-msgid "Important dates"
-msgstr "Fechas importantes"
-
-#: contrib/auth/models.py:164
-msgid "Groups"
-msgstr "Grupos"
-
-#: contrib/auth/models.py:323
+#: contrib/auth/models.py:306
msgid "message"
msgstr "mensaje"
-#: contrib/auth/views.py:47
+#: contrib/auth/views.py:49
msgid "Logged out"
msgstr "Sesión terminada"
-#: contrib/comments/models.py:71 contrib/comments/models.py:176
+#: contrib/auth/views.py:116
+msgid "Password changed successfully."
+msgstr "La contraseña se ha cambiado con éxito."
+
+#: contrib/auth/views.py:122
+#, python-format
+msgid "Change password: %s"
+msgstr "Cambiar contraseña: %s"
+
+#: contrib/comments/models.py:71
+#: contrib/comments/models.py:164
msgid "object ID"
msgstr "ID de objeto"
@@ -1269,8 +1250,9 @@ msgstr "ID de objeto"
msgid "headline"
msgstr "encabezado"
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:177
+#: contrib/comments/models.py:73
+#: contrib/comments/models.py:95
+#: contrib/comments/models.py:165
msgid "comment"
msgstr "comentario"
@@ -1310,11 +1292,13 @@ msgstr "puntuación 8"
msgid "is valid rating"
msgstr "puntuación válida"
-#: contrib/comments/models.py:87 contrib/comments/models.py:179
+#: contrib/comments/models.py:87
+#: contrib/comments/models.py:167
msgid "date/time submitted"
msgstr "fecha/hora de envío"
-#: contrib/comments/models.py:88 contrib/comments/models.py:180
+#: contrib/comments/models.py:88
+#: contrib/comments/models.py:168
msgid "is public"
msgstr "es público"
@@ -1323,22 +1307,19 @@ msgid "is removed"
msgstr "está eliminado"
#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Marque esta opción si el comentario es inapropiado. En su lugar se mostrará "
-"el mensaje \"Este comentario ha sido eliminado\"."
+msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
+msgstr "Marque esta opción si el comentario es inapropiado. En su lugar se mostrará el mensaje \"Este comentario ha sido eliminado\"."
#: contrib/comments/models.py:96
msgid "comments"
msgstr "comentarios"
-#: contrib/comments/models.py:140 contrib/comments/models.py:222
+#: contrib/comments/models.py:128
+#: contrib/comments/models.py:199
msgid "Content object"
msgstr "Objeto contenido"
-#: contrib/comments/models.py:168
+#: contrib/comments/models.py:156
#, python-format
msgid ""
"Posted by %(user)s at %(date)s\n"
@@ -1353,48 +1334,48 @@ msgstr ""
"\n"
"http://%(domain)s%(url)s"
-#: contrib/comments/models.py:178
+#: contrib/comments/models.py:166
msgid "person's name"
msgstr "nombre de la persona"
-#: contrib/comments/models.py:181
+#: contrib/comments/models.py:169
msgid "ip address"
msgstr "dirección ip"
-#: contrib/comments/models.py:183
+#: contrib/comments/models.py:171
msgid "approved by staff"
msgstr "aprobado por el staff"
-#: contrib/comments/models.py:187
+#: contrib/comments/models.py:175
msgid "free comment"
msgstr "comentario libre"
-#: contrib/comments/models.py:188
+#: contrib/comments/models.py:176
msgid "free comments"
msgstr "comentarios libres"
-#: contrib/comments/models.py:250
+#: contrib/comments/models.py:227
msgid "score"
msgstr "puntuación"
-#: contrib/comments/models.py:251
+#: contrib/comments/models.py:228
msgid "score date"
msgstr "fecha de la puntuación"
-#: contrib/comments/models.py:255
+#: contrib/comments/models.py:232
msgid "karma score"
msgstr "punto karma"
-#: contrib/comments/models.py:256
+#: contrib/comments/models.py:233
msgid "karma scores"
msgstr "puntos karma"
-#: contrib/comments/models.py:260
+#: contrib/comments/models.py:237
#, python-format
msgid "%(score)d rating by %(user)s"
msgstr "puntuado %(score)d por %(user)s"
-#: contrib/comments/models.py:277
+#: contrib/comments/models.py:254
#, python-format
msgid ""
"This comment was flagged by %(user)s:\n"
@@ -1405,36 +1386,36 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/models.py:285
+#: contrib/comments/models.py:262
msgid "flag date"
msgstr "fecha de la marca"
-#: contrib/comments/models.py:289
+#: contrib/comments/models.py:266
msgid "user flag"
msgstr "marca de usuario"
-#: contrib/comments/models.py:290
+#: contrib/comments/models.py:267
msgid "user flags"
msgstr "marcas de usuario"
-#: contrib/comments/models.py:294
+#: contrib/comments/models.py:271
#, python-format
msgid "Flag by %r"
msgstr "Marca de %r"
-#: contrib/comments/models.py:300
+#: contrib/comments/models.py:277
msgid "deletion date"
msgstr "fecha de eliminación"
-#: contrib/comments/models.py:303
+#: contrib/comments/models.py:280
msgid "moderator deletion"
msgstr "eliminación del moderador"
-#: contrib/comments/models.py:304
+#: contrib/comments/models.py:281
msgid "moderator deletions"
msgstr "eliminaciones del moderador"
-#: contrib/comments/models.py:308
+#: contrib/comments/models.py:285
#, python-format
msgid "Moderator deletion by %r"
msgstr "Eliminación del moderador %r"
@@ -1475,35 +1456,30 @@ msgstr "Previsualizar comentario"
msgid "Your name:"
msgstr "Su nombre:"
-#: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
+#: contrib/comments/views/comments.py:76
+msgid "This rating is required because you've entered at least one other rating."
msgstr "Se precisa esta puntuación porque ha introducido al menos otra más."
-#: contrib/comments/views/comments.py:112
+#: contrib/comments/views/comments.py:160
#, python-format
msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
+"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
"\n"
"%(text)s"
msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
+"This comment was posted by a user who has posted fewer than %(count)s comments:\n"
"\n"
"%(text)s"
msgstr[0] ""
-"Este comentario lo envió un usuario que ha enviado menos de %(count)s "
-"comentario:\n"
+"Este comentario lo envió un usuario que ha enviado menos de %(count)s comentario:\n"
"\n"
"%(text)s"
msgstr[1] ""
-"Este comentario lo envió un usuario que ha enviado menos de %(count)s "
-"comentarios:\n"
+"Este comentario lo envió un usuario que ha enviado menos de %(count)s comentarios:\n"
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:117
+#: contrib/comments/views/comments.py:165
#, python-format
msgid ""
"This comment was posted by a sketchy user:\n"
@@ -1514,33 +1490,28 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
+#: contrib/comments/views/comments.py:238
+#: contrib/comments/views/comments.py:331
msgid "Only POSTs are allowed"
msgstr "Sólo se admiten POSTs"
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
+#: contrib/comments/views/comments.py:242
+#: contrib/comments/views/comments.py:335
msgid "One or more of the required fields wasn't submitted"
msgstr "No se proporcionó uno o más de los siguientes campos requeridos"
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
+#: contrib/comments/views/comments.py:246
+#: contrib/comments/views/comments.py:337
msgid "Somebody tampered with the comment form (security violation)"
-msgstr ""
-"Alguien manipuló el formulario de comentarios (violación de seguridad)"
+msgstr "Alguien manipuló el formulario de comentarios (violación de seguridad)"
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"El formulario de comentarios tiene un parámetro 'target' no válido (el ID de "
-"objeto era inválido)"
+#: contrib/comments/views/comments.py:256
+#: contrib/comments/views/comments.py:343
+msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
+msgstr "El formulario de comentarios tiene un parámetro 'target' no válido (el ID de objeto era inválido)"
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
+#: contrib/comments/views/comments.py:307
+#: contrib/comments/views/comments.py:372
msgid "The comment form didn't provide either 'preview' or 'post'"
msgstr "El formulario de comentario no proporcionó 'previsualizar' ni 'enviar'"
@@ -1568,12 +1539,13 @@ msgstr "tipo de contenido"
msgid "content types"
msgstr "tipos de contenido"
+#: contrib/flatpages/admin.py:9
+msgid "Advanced options"
+msgstr "Opciones avanzadas"
+
#: contrib/flatpages/models.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Ejemplo: '/about/contact/'. Asegúrese de que pone barras al principio y al "
-"final."
+msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgstr "Ejemplo: '/about/contact/'. Asegúrese de que pone barras al principio y al final."
#: contrib/flatpages/models.py:10
msgid "title"
@@ -1592,12 +1564,8 @@ msgid "template name"
msgstr "nombre de plantilla"
#: contrib/flatpages/models.py:14
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Ejemplo: 'flatpages/contact_page.html'. Si no es proporcionado, el sistema "
-"usará 'flatpages/default.html'."
+msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."
+msgstr "Ejemplo: 'flatpages/contact_page.html'. Si no es proporcionado, el sistema usará 'flatpages/default.html'."
#: contrib/flatpages/models.py:15
msgid "registration required"
@@ -1615,10 +1583,6 @@ msgstr "página estática"
msgid "flat pages"
msgstr "páginas estáticas"
-#: contrib/flatpages/models.py:27
-msgid "Advanced options"
-msgstr "Opciones avanzadas"
-
#: contrib/humanize/templatetags/humanize.py:19
msgid "th"
msgstr "º"
@@ -1708,8 +1672,10 @@ msgstr "ayer"
msgid "Enter a postal code in the format NNNN or ANNNNAAA."
msgstr "Introduzca un código postal en el formato NNNN or ANNNNAAA."
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
+#: contrib/localflavor/ar/forms.py:49
+#: contrib/localflavor/br/forms.py:96
+#: contrib/localflavor/br/forms.py:135
+#: contrib/localflavor/pe/forms.py:23
#: contrib/localflavor/pe/forms.py:51
msgid "This field requires only numbers."
msgstr "Este campo sólo acepta números."
@@ -1739,12 +1705,8 @@ msgid "Phone numbers must be in XX-XXXX-XXXX format."
msgstr "Los números de teléfono deben tener el formato XXX-XXX-XXXX."
#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr ""
-"Seleccione un estado brasileño válido. Este estado no es uno de los estados "
-"disponibles."
+msgid "Select a valid brazilian state. That state is not one of the available states."
+msgstr "Seleccione un estado brasileño válido. Este estado no es uno de los estados disponibles."
#: contrib/localflavor/br/forms.py:94
msgid "Invalid CPF number."
@@ -1768,9 +1730,7 @@ msgstr "Introduzca un código postal en el formato XXX XXX."
#: contrib/localflavor/ca/forms.py:88
msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-"Introduzca un Número del Seguro Social de Canadá válido en el formato XXX-"
-"XXX-XXX."
+msgstr "Introduzca un Número del Seguro Social de Canadá válido en el formato XXX-XXX-XXX."
#: contrib/localflavor/ch/ch_states.py:5
msgid "Aargau"
@@ -1876,17 +1836,14 @@ msgstr "Zug"
msgid "Zurich"
msgstr "Zurich"
-#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12
+#: contrib/localflavor/ch/forms.py:16
+#: contrib/localflavor/no/forms.py:12
msgid "Enter a zip code in the format XXXX."
msgstr "Introduzca un código postal en el formato XXXX."
#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"Introduzca un número de identificación o pasaporte suizos válidos en el "
-"formato X1234567<0 o 1234567890."
+msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format."
+msgstr "Introduzca un número de identificación o pasaporte suizos válidos en el formato X1234567<0 o 1234567890."
#: contrib/localflavor/cl/forms.py:29
msgid "Enter a valid Chilean RUT."
@@ -1902,80 +1859,77 @@ msgstr "El RUT chileno no es válido."
#: contrib/localflavor/de/de_states.py:5
msgid "Baden-Wuerttemberg"
-msgstr ""
+msgstr "Baden-Wuerttemberg"
#: contrib/localflavor/de/de_states.py:6
msgid "Bavaria"
-msgstr ""
+msgstr "Bavaria"
#: contrib/localflavor/de/de_states.py:7
msgid "Berlin"
-msgstr ""
+msgstr "Berlín"
#: contrib/localflavor/de/de_states.py:8
msgid "Brandenburg"
-msgstr ""
+msgstr "Brandenburg"
#: contrib/localflavor/de/de_states.py:9
msgid "Bremen"
-msgstr ""
+msgstr "Bremen"
#: contrib/localflavor/de/de_states.py:10
msgid "Hamburg"
-msgstr ""
+msgstr "Hamburgo"
#: contrib/localflavor/de/de_states.py:11
msgid "Hessen"
-msgstr ""
+msgstr "Hessen"
#: contrib/localflavor/de/de_states.py:12
msgid "Mecklenburg-Western Pomerania"
-msgstr ""
+msgstr "Mecklenburg-Western Pomerania"
#: contrib/localflavor/de/de_states.py:13
msgid "Lower Saxony"
-msgstr ""
+msgstr "Lower Saxony"
#: contrib/localflavor/de/de_states.py:14
msgid "North Rhine-Westphalia"
-msgstr ""
+msgstr "North Rhine-Westphalia"
#: contrib/localflavor/de/de_states.py:15
msgid "Rhineland-Palatinate"
-msgstr ""
+msgstr "Rhineland-Palatinate"
#: contrib/localflavor/de/de_states.py:16
msgid "Saarland"
-msgstr ""
+msgstr "Saarland"
#: contrib/localflavor/de/de_states.py:17
msgid "Saxony"
-msgstr ""
+msgstr "Saxony"
#: contrib/localflavor/de/de_states.py:18
msgid "Saxony-Anhalt"
-msgstr ""
+msgstr "Saxony-Anhalt"
#: contrib/localflavor/de/de_states.py:19
msgid "Schleswig-Holstein"
-msgstr ""
+msgstr "Schleswig-Holstein"
#: contrib/localflavor/de/de_states.py:20
msgid "Thuringia"
-msgstr ""
+msgstr "Thuringia"
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
+#: contrib/localflavor/de/forms.py:14
+#: contrib/localflavor/fi/forms.py:12
#: contrib/localflavor/fr/forms.py:15
msgid "Enter a zip code in the format XXXXX."
msgstr "Introduzca un código postal en el formato XXXXX."
#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-"Introduzca un número de tarjeta de identidad de Alemania válida en el "
-"formato XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
+msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format."
+msgstr "Introduzca un número de tarjeta de identidad de Alemania válida en el formato XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
#: contrib/localflavor/es/es_provinces.py:5
msgid "Arava"
@@ -2249,12 +2203,8 @@ msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
msgstr "Introduzca un código postal en el rango y formato 01XXX - 52XXX."
#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-"Introduzca un número de teléfono válido en el formato 6XXXXXXXX, 8XXXXXXXX "
-"o 9XXXXXXXX."
+msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX."
+msgstr "Introduzca un número de teléfono válido en el formato 6XXXXXXXX, 8XXXXXXXX o 9XXXXXXXX."
#: contrib/localflavor/es/forms.py:66
msgid "Please enter a valid NIF, NIE, or CIF."
@@ -2277,11 +2227,8 @@ msgid "Invalid checksum for CIF."
msgstr "El CIF es incorrecto."
#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-"Introduzca un número de cuenta bancaria en el formato XXXX-XXXX-XX-"
-"XXXXXXXXXX."
+msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
+msgstr "Introduzca un número de cuenta bancaria en el formato XXXX-XXXX-XX-XXXXXXXXXX."
#: contrib/localflavor/es/forms.py:143
msgid "Invalid checksum for bank account number."
@@ -2296,11 +2243,8 @@ msgid "Enter a zip code in the format XXXXXXX."
msgstr "Introduzca un código postal en el formato XXXXXXX."
#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-"Introduzca un número de identificación de Islandia válido. El formato es "
-"XXXXXX-XXXX."
+msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
+msgstr "Introduzca un número de identificación de Islandia válido. El formato es XXXXXX-XXXX."
#: contrib/localflavor/is_/forms.py:18
msgid "The Icelandic identification number is not valid."
@@ -2719,11 +2663,8 @@ msgid "Wrong checksum for the National Identification Number."
msgstr "El Número de Identificación Nacional es incorrecto."
#: contrib/localflavor/pl/forms.py:72
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-"Introduzca un número de impuesto (NIP) en el formato XXX-XXX-XX-XX o XX-XX-"
-"XXX-XXX."
+msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
+msgstr "Introduzca un número de impuesto (NIP) en el formato XXX-XXX-XX-XX o XX-XX-XXX-XXX."
#: contrib/localflavor/pl/forms.py:73
msgid "Wrong checksum for the Tax Number (NIP)."
@@ -2731,8 +2672,7 @@ msgstr "El Número de Identificación Tributaria (NIP) es incorrecto."
#: contrib/localflavor/pl/forms.py:112
msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-"El Número Nacional de Registro de Negocios (REGON) consiste en 7 o 9 dígitos."
+msgstr "El Número Nacional de Registro de Negocios (REGON) consiste en 7 o 9 dígitos."
#: contrib/localflavor/pl/forms.py:113
msgid "Wrong checksum for the National Business Register Number (REGON)."
@@ -2806,6 +2746,26 @@ msgstr "Greater Poland"
msgid "West Pomerania"
msgstr "West Pomerania"
+#: contrib/localflavor/ro/forms.py:19
+msgid "Enter a valid CIF."
+msgstr "Introduzca un CIF válido."
+
+#: contrib/localflavor/ro/forms.py:56
+msgid "Enter a valid CNP."
+msgstr "Introduzca un CNP válido."
+
+#: contrib/localflavor/ro/forms.py:141
+msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
+msgstr "Introduzca un IBAN válido en el formato ROXX-XXXX-XXXX-XXXX-XXXX-XXXX."
+
+#: contrib/localflavor/ro/forms.py:171
+msgid "Phone numbers must be in XXXX-XXXXXX format."
+msgstr "Los números de teléfono deben tener el formato XXXX-XXXXXX."
+
+#: contrib/localflavor/ro/forms.py:194
+msgid "Enter a valid postal code in the format XXXXXX"
+msgstr "Introduzca un código postal válido en el formato XXXXXX"
+
#: contrib/localflavor/sk/forms.py:30
msgid "Enter a postal code in the format XXXXX or XXX XX."
msgstr "Introduzca un código postal en el formato XXXXX o XXX XX."
@@ -3164,267 +3124,267 @@ msgstr "Introduzca un código postal válido."
#: contrib/localflavor/uk/uk_regions.py:11
msgid "Bedfordshire"
-msgstr ""
+msgstr "Bedfordshire"
#: contrib/localflavor/uk/uk_regions.py:12
msgid "Buckinghamshire"
-msgstr ""
+msgstr "Buckinghamshire"
#: contrib/localflavor/uk/uk_regions.py:14
msgid "Cheshire"
-msgstr ""
+msgstr "Cheshire"
#: contrib/localflavor/uk/uk_regions.py:15
msgid "Cornwall and Isles of Scilly"
-msgstr ""
+msgstr "Cornwall and Isles of Scilly"
#: contrib/localflavor/uk/uk_regions.py:16
msgid "Cumbria"
-msgstr ""
+msgstr "Cumbria"
#: contrib/localflavor/uk/uk_regions.py:17
msgid "Derbyshire"
-msgstr ""
+msgstr "Derbyshire"
#: contrib/localflavor/uk/uk_regions.py:18
msgid "Devon"
-msgstr ""
+msgstr "Devon"
#: contrib/localflavor/uk/uk_regions.py:19
msgid "Dorset"
-msgstr ""
+msgstr "Dorset"
#: contrib/localflavor/uk/uk_regions.py:20
msgid "Durham"
-msgstr ""
+msgstr "Durham"
#: contrib/localflavor/uk/uk_regions.py:21
msgid "East Sussex"
-msgstr ""
+msgstr "East Sussex"
#: contrib/localflavor/uk/uk_regions.py:22
msgid "Essex"
-msgstr ""
+msgstr "Essex"
#: contrib/localflavor/uk/uk_regions.py:23
msgid "Gloucestershire"
-msgstr ""
+msgstr "Gloucestershire"
#: contrib/localflavor/uk/uk_regions.py:24
msgid "Greater London"
-msgstr ""
+msgstr "Londres (área metropolitana)"
#: contrib/localflavor/uk/uk_regions.py:25
msgid "Greater Manchester"
-msgstr ""
+msgstr "Manchester (área metropolitana)"
#: contrib/localflavor/uk/uk_regions.py:26
msgid "Hampshire"
-msgstr ""
+msgstr "Hampshire"
#: contrib/localflavor/uk/uk_regions.py:27
msgid "Hertfordshire"
-msgstr ""
+msgstr "Hertfordshire"
#: contrib/localflavor/uk/uk_regions.py:28
msgid "Kent"
-msgstr ""
+msgstr "Kent"
#: contrib/localflavor/uk/uk_regions.py:29
msgid "Lancashire"
-msgstr ""
+msgstr "Lancashire"
#: contrib/localflavor/uk/uk_regions.py:30
msgid "Leicestershire"
-msgstr ""
+msgstr "Leicestershire"
#: contrib/localflavor/uk/uk_regions.py:31
msgid "Lincolnshire"
-msgstr ""
+msgstr "Lincolnshire"
#: contrib/localflavor/uk/uk_regions.py:32
msgid "Merseyside"
-msgstr ""
+msgstr "Merseyside"
#: contrib/localflavor/uk/uk_regions.py:33
msgid "Norfolk"
-msgstr ""
+msgstr "Norfolk"
#: contrib/localflavor/uk/uk_regions.py:34
msgid "North Yorkshire"
-msgstr ""
+msgstr "North Yorkshire"
#: contrib/localflavor/uk/uk_regions.py:35
msgid "Northamptonshire"
-msgstr ""
+msgstr "Northamptonshire"
#: contrib/localflavor/uk/uk_regions.py:36
msgid "Northumberland"
-msgstr ""
+msgstr "Northumberland"
#: contrib/localflavor/uk/uk_regions.py:37
msgid "Nottinghamshire"
-msgstr ""
+msgstr "Nottinghamshire"
#: contrib/localflavor/uk/uk_regions.py:38
msgid "Oxfordshire"
-msgstr ""
+msgstr "Oxfordshire"
#: contrib/localflavor/uk/uk_regions.py:39
msgid "Shropshire"
-msgstr ""
+msgstr "Shropshire"
#: contrib/localflavor/uk/uk_regions.py:40
msgid "Somerset"
-msgstr ""
+msgstr "Somerset"
#: contrib/localflavor/uk/uk_regions.py:41
msgid "South Yorkshire"
-msgstr ""
+msgstr "South Yorkshire"
#: contrib/localflavor/uk/uk_regions.py:42
msgid "Staffordshire"
-msgstr ""
+msgstr "Staffordshire"
#: contrib/localflavor/uk/uk_regions.py:43
msgid "Suffolk"
-msgstr ""
+msgstr "Suffolk"
#: contrib/localflavor/uk/uk_regions.py:44
msgid "Surrey"
-msgstr ""
+msgstr "Surrey"
#: contrib/localflavor/uk/uk_regions.py:45
msgid "Tyne and Wear"
-msgstr ""
+msgstr "Tyne and Wear"
#: contrib/localflavor/uk/uk_regions.py:46
msgid "Warwickshire"
-msgstr ""
+msgstr "Warwickshire"
#: contrib/localflavor/uk/uk_regions.py:47
msgid "West Midlands"
-msgstr ""
+msgstr "West Midlands"
#: contrib/localflavor/uk/uk_regions.py:48
msgid "West Sussex"
-msgstr ""
+msgstr "West Sussex"
#: contrib/localflavor/uk/uk_regions.py:49
msgid "West Yorkshire"
-msgstr ""
+msgstr "West Yorkshire"
#: contrib/localflavor/uk/uk_regions.py:50
msgid "Wiltshire"
-msgstr ""
+msgstr "Wiltshire"
#: contrib/localflavor/uk/uk_regions.py:51
msgid "Worcestershire"
-msgstr ""
+msgstr "Worcestershire"
#: contrib/localflavor/uk/uk_regions.py:55
msgid "County Antrim"
-msgstr ""
+msgstr "Condado de Antrim"
#: contrib/localflavor/uk/uk_regions.py:56
msgid "County Armagh"
-msgstr ""
+msgstr "Condado de Armagh"
#: contrib/localflavor/uk/uk_regions.py:57
msgid "County Down"
-msgstr ""
+msgstr "Condado de Down"
#: contrib/localflavor/uk/uk_regions.py:58
msgid "County Fermanagh"
-msgstr ""
+msgstr "Condado de Fermanagh"
#: contrib/localflavor/uk/uk_regions.py:59
msgid "County Londonderry"
-msgstr ""
+msgstr "Condado de Londonderry"
#: contrib/localflavor/uk/uk_regions.py:60
msgid "County Tyrone"
-msgstr ""
+msgstr "Condado de Tyrone"
#: contrib/localflavor/uk/uk_regions.py:64
msgid "Clwyd"
-msgstr ""
+msgstr "Clwyd"
#: contrib/localflavor/uk/uk_regions.py:65
msgid "Dyfed"
-msgstr ""
+msgstr "Dyfed"
#: contrib/localflavor/uk/uk_regions.py:66
msgid "Gwent"
-msgstr ""
+msgstr "Gwent"
#: contrib/localflavor/uk/uk_regions.py:67
msgid "Gwynedd"
-msgstr ""
+msgstr "Gwynedd"
#: contrib/localflavor/uk/uk_regions.py:68
msgid "Mid Glamorgan"
-msgstr ""
+msgstr "Mid Glamorgan"
#: contrib/localflavor/uk/uk_regions.py:69
msgid "Powys"
-msgstr ""
+msgstr "Powys"
#: contrib/localflavor/uk/uk_regions.py:70
msgid "South Glamorgan"
-msgstr ""
+msgstr "South Glamorgan"
#: contrib/localflavor/uk/uk_regions.py:71
msgid "West Glamorgan"
-msgstr ""
+msgstr "West Glamorgan"
#: contrib/localflavor/uk/uk_regions.py:75
msgid "Borders"
-msgstr ""
+msgstr "Borders"
#: contrib/localflavor/uk/uk_regions.py:76
msgid "Central Scotland"
-msgstr ""
+msgstr "Central Scotland"
#: contrib/localflavor/uk/uk_regions.py:77
msgid "Dumfries and Galloway"
-msgstr ""
+msgstr "Dumfries and Galloway"
#: contrib/localflavor/uk/uk_regions.py:78
msgid "Fife"
-msgstr ""
+msgstr "Fife"
#: contrib/localflavor/uk/uk_regions.py:79
msgid "Grampian"
-msgstr ""
+msgstr "Grampian"
#: contrib/localflavor/uk/uk_regions.py:80
msgid "Highland"
-msgstr ""
+msgstr "Highland"
#: contrib/localflavor/uk/uk_regions.py:81
msgid "Lothian"
-msgstr ""
+msgstr "Lothian"
#: contrib/localflavor/uk/uk_regions.py:82
msgid "Orkney Islands"
-msgstr ""
+msgstr "Orkney Islands"
#: contrib/localflavor/uk/uk_regions.py:83
msgid "Shetland Islands"
-msgstr ""
+msgstr "Shetland Islands"
#: contrib/localflavor/uk/uk_regions.py:84
msgid "Strathclyde"
-msgstr ""
+msgstr "Strathclyde"
#: contrib/localflavor/uk/uk_regions.py:85
msgid "Tayside"
-msgstr ""
+msgstr "Tayside"
#: contrib/localflavor/uk/uk_regions.py:86
msgid "Western Isles"
-msgstr ""
+msgstr "Western Isles"
#: contrib/localflavor/uk/uk_regions.py:90
msgid "England"
@@ -3432,7 +3392,7 @@ msgstr "Inglaterra"
#: contrib/localflavor/uk/uk_regions.py:91
msgid "Northern Ireland"
-msgstr ""
+msgstr "Irlanda del Norte"
#: contrib/localflavor/uk/uk_regions.py:92
msgid "Scotland"
@@ -3448,8 +3408,7 @@ msgstr "Introduzca un código postal en el formato XXXXX o XXXX-XXXX."
#: contrib/localflavor/us/forms.py:54
msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-"Introduzca un Número Seguro Social de EEUU válido en el formato XXX-XX-XXXX"
+msgstr "Introduzca un Número Seguro Social de EEUU válido en el formato XXX-XX-XXXX"
#: contrib/localflavor/za/forms.py:20
msgid "Enter a valid South African ID number"
@@ -3461,63 +3420,55 @@ msgstr "Introduzca un código postal surafricano válido"
#: contrib/localflavor/za/za_provinces.py:4
msgid "Eastern Cape"
-msgstr ""
+msgstr "Eastern Cape"
#: contrib/localflavor/za/za_provinces.py:5
msgid "Free State"
-msgstr ""
+msgstr "Free State"
#: contrib/localflavor/za/za_provinces.py:6
msgid "Gauteng"
-msgstr ""
+msgstr "Gauteng"
#: contrib/localflavor/za/za_provinces.py:7
msgid "KwaZulu-Natal"
-msgstr ""
+msgstr "KwaZulu-Natal"
#: contrib/localflavor/za/za_provinces.py:8
msgid "Limpopo"
-msgstr ""
+msgstr "Limpopo"
#: contrib/localflavor/za/za_provinces.py:9
msgid "Mpumalanga"
-msgstr ""
+msgstr "Mpumalanga"
#: contrib/localflavor/za/za_provinces.py:10
msgid "Northern Cape"
-msgstr ""
+msgstr "Northern Cape"
#: contrib/localflavor/za/za_provinces.py:11
msgid "North West"
-msgstr ""
+msgstr "North West"
#: contrib/localflavor/za/za_provinces.py:12
msgid "Western Cape"
-msgstr ""
+msgstr "Western Cape"
#: contrib/redirects/models.py:7
msgid "redirect from"
msgstr "redirigir desde"
#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Esta ruta debería ser absoluta, excluyendo el nombre de dominio. Ejemplo: '/"
-"events/search/'."
+msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
+msgstr "Esta ruta debería ser absoluta, excluyendo el nombre de dominio. Ejemplo: '/events/search/'."
#: contrib/redirects/models.py:9
msgid "redirect to"
msgstr "redirigir a"
#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Esto puede ser bien una ruta absoluta (como antes) o una URL completa que "
-"empiece con 'http://'."
+msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
+msgstr "Esto puede ser bien una ruta absoluta (como antes) o una URL completa que empiece con 'http://'."
#: contrib/redirects/models.py:13
msgid "redirect"
@@ -3527,23 +3478,23 @@ msgstr "redirección"
msgid "redirects"
msgstr "redirecciones"
-#: contrib/sessions/models.py:41
+#: contrib/sessions/models.py:45
msgid "session key"
msgstr "clave de sesión"
-#: contrib/sessions/models.py:42
+#: contrib/sessions/models.py:47
msgid "session data"
msgstr "datos de sesión"
-#: contrib/sessions/models.py:43
+#: contrib/sessions/models.py:48
msgid "expire date"
msgstr "fecha de caducidad"
-#: contrib/sessions/models.py:48
+#: contrib/sessions/models.py:53
msgid "session"
msgstr "sesión"
-#: contrib/sessions/models.py:49
+#: contrib/sessions/models.py:54
msgid "sessions"
msgstr "sesiones"
@@ -3555,24 +3506,17 @@ msgstr "nombre de dominio"
msgid "display name"
msgstr "nombre para mostrar"
-#: contrib/sites/models.py:37
+#: contrib/sites/models.py:38
msgid "site"
msgstr "sitio"
-#: contrib/sites/models.py:38
+#: contrib/sites/models.py:39
msgid "sites"
msgstr "sitios"
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Este valor debe contener sólo letras, números y guiones bajos."
-
#: core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Este valor debe contener sólo letras, números, guiones bajos y barras."
+msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
+msgstr "Este valor debe contener sólo letras, números, guiones bajos y barras."
#: core/validators.py:80
msgid "This value must contain only letters, numbers, underscores or hyphens."
@@ -3610,7 +3554,8 @@ msgstr "No se admiten caracteres no numéricos."
msgid "This value can't be comprised solely of digits."
msgstr "Este valor no puede comprender sólo dígitos."
-#: core/validators.py:128 newforms/fields.py:152
+#: core/validators.py:128
+#: forms/fields.py:157
msgid "Enter a whole number."
msgstr "Introduzca un número entero."
@@ -3619,67 +3564,60 @@ msgid "Only alphabetical characters are allowed here."
msgstr "Sólo se admiten caracteres alfabéticos."
#: core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr "El año debe ser 1900 o posterior."
-
-#: core/validators.py:151
#, python-format
msgid "Invalid date: %s"
msgstr "Fecha no válida: %s"
-#: core/validators.py:156 db/models/fields/__init__.py:548
+#: core/validators.py:152
+#: db/models/fields/__init__.py:552
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Introduzca una fecha válida en formato AAAA-MM-DD."
-#: core/validators.py:161
+#: core/validators.py:157
msgid "Enter a valid time in HH:MM format."
msgstr "Introduzca una hora válida en formato HH:MM."
-#: core/validators.py:165 db/models/fields/__init__.py:625
+#: core/validators.py:161
+#: db/models/fields/__init__.py:633
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Introduzca una fecha/hora válida en formato AAAA-MM-DD HH:MM."
-#: core/validators.py:170 newforms/fields.py:403
+#: core/validators.py:166
+#: forms/fields.py:408
msgid "Enter a valid e-mail address."
msgstr "Introduzca una dirección de correo electrónico válida."
-#: core/validators.py:182 core/validators.py:474 newforms/fields.py:433
-#: oldforms/__init__.py:687
+#: core/validators.py:178
+#: core/validators.py:470
+#: forms/fields.py:426
msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"No se ha enviado ningún fichero. Compruebe el tipo de codificación en el "
-"formulario."
+msgstr "No se ha enviado ningún fichero. Compruebe el tipo de codificación en el formulario."
-#: core/validators.py:193 newforms/fields.py:459
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Envíe una imagen válida. El fichero que ha enviado no era una imagen o se "
-"trataba de una imagen corrupta."
+#: core/validators.py:189
+#: forms/fields.py:466
+msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
+msgstr "Envíe una imagen válida. El fichero que ha enviado no era una imagen o se trataba de una imagen corrupta."
-#: core/validators.py:200
+#: core/validators.py:196
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "La URL %s no apunta a una imagen válida."
-#: core/validators.py:204
+#: core/validators.py:200
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Los números de teléfono deben guardar el formato XXX-XXX-XXXX. \"%s\" no es "
-"válido."
+msgstr "Los números de teléfono deben guardar el formato XXX-XXX-XXXX. \"%s\" no es válido."
-#: core/validators.py:212
+#: core/validators.py:208
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "La URL %s no apunta a un vídeo QuickTime válido."
-#: core/validators.py:216
+#: core/validators.py:212
msgid "A valid URL is required."
msgstr "Se precisa una URL válida."
-#: core/validators.py:230
+#: core/validators.py:226
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@@ -3688,371 +3626,327 @@ msgstr ""
"Se precisa HTML válido. Los errores específicos son:\n"
"%s"
-#: core/validators.py:237
+#: core/validators.py:233
#, python-format
msgid "Badly formed XML: %s"
msgstr "XML mal formado: %s"
-#: core/validators.py:254
+#: core/validators.py:250
#, python-format
msgid "Invalid URL: %s"
msgstr "URL no válida: %s"
-#: core/validators.py:259 core/validators.py:261
+#: core/validators.py:255
+#: core/validators.py:257
#, python-format
msgid "The URL %s is a broken link."
msgstr "La URL %s es un enlace roto."
-#: core/validators.py:267
+#: core/validators.py:263
msgid "Enter a valid U.S. state abbreviation."
msgstr "Introduzca una abreviatura válida de estado de los EEUU."
-#: core/validators.py:281
+#: core/validators.py:277
#, 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] "¡Cuide su vocabulario! Aquí no admitimos la palabra %s."
msgstr[1] "¡Cuide su vocabulario! Aquí no admitimos las palabras %s."
-#: core/validators.py:288
+#: core/validators.py:284
#, python-format
msgid "This field must match the '%s' field."
msgstr "Este campo debe concordar con el campo '%s'."
-#: core/validators.py:307
+#: core/validators.py:303
msgid "Please enter something for at least one field."
msgstr "Por favor, introduzca algo en al menos un campo."
-#: core/validators.py:316 core/validators.py:327
+#: core/validators.py:312
+#: core/validators.py:323
msgid "Please enter both fields or leave them both empty."
msgstr "Por favor, rellene ambos campos o deje ambos vacíos."
-#: core/validators.py:335
+#: core/validators.py:331
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "Se debe proporcionar este campo si %(field)s es %(value)s"
-#: core/validators.py:348
+#: core/validators.py:344
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "Se debe proporcionar este campo si %(field)s no es %(value)s"
-#: core/validators.py:367
+#: core/validators.py:363
msgid "Duplicate values are not allowed."
msgstr "No se admiten valores duplicados."
-#: core/validators.py:382
+#: core/validators.py:378
#, python-format
msgid "This value must be between %(lower)s and %(upper)s."
msgstr "Este valor debe estar entre %(lower)s y %(upper)s."
-#: core/validators.py:384
+#: core/validators.py:380
#, python-format
msgid "This value must be at least %s."
msgstr "Este valor debe ser como mínimo %s."
-#: core/validators.py:386
+#: core/validators.py:382
#, python-format
msgid "This value must be no more than %s."
msgstr "Este valor no debe ser mayor que %s."
-#: core/validators.py:427
+#: core/validators.py:423
#, python-format
msgid "This value must be a power of %s."
msgstr "Este valor debe ser una potencia de %s."
-#: core/validators.py:437
+#: core/validators.py:433
msgid "Please enter a valid decimal number."
msgstr "Por favor, introduzca un número decimal válido."
-#: core/validators.py:444
+#: core/validators.py:440
#, 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, introduzca un número decimal válido con a lo más %s dígito en "
-"total."
-msgstr[1] ""
-"Por favor, introduzca un número decimal válido con a lo más %s dígitos en "
-"total."
+msgid_plural "Please enter a valid decimal number with at most %s total digits."
+msgstr[0] "Por favor, introduzca un número decimal válido con a lo más %s dígito en total."
+msgstr[1] "Por favor, introduzca un número decimal válido con a lo más %s dígitos en total."
-#: core/validators.py:447
+#: core/validators.py:443
#, 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, introduzca un número decimal válido con a lo más %s dígito en su "
-"parte entera."
-msgstr[1] ""
-"Por favor, introduzca un número decimal válido con a lo más %s dígitos en su "
-"parte entera."
+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, introduzca un número decimal válido con a lo más %s dígito en su parte entera."
+msgstr[1] "Por favor, introduzca un número decimal válido con a lo más %s dígitos en su parte entera."
-#: core/validators.py:450
+#: core/validators.py:446
#, 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, introduzca un número decimal válido con a lo más %s dígito "
-"decimal."
-msgstr[1] ""
-"Por favor, introduzca un número decimal válido con a lo más %s dígitos "
-"decimales."
+msgid_plural "Please enter a valid decimal number with at most %s decimal places."
+msgstr[0] "Por favor, introduzca un número decimal válido con a lo más %s dígito decimal."
+msgstr[1] "Por favor, introduzca un número decimal válido con a lo más %s dígitos decimales."
-#: core/validators.py:458
+#: core/validators.py:454
msgid "Please enter a valid floating point number."
msgstr "Por favor, introduzca un número de coma flotante válido."
-#: core/validators.py:467
+#: core/validators.py:463
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "Asegúrese de que el fichero que envía tiene al menos %s bytes."
-#: core/validators.py:468
+#: core/validators.py:464
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "Asegúrese de que el fichero que envía tiene como máximo %s bytes."
-#: core/validators.py:485
+#: core/validators.py:481
msgid "The format for this field is wrong."
msgstr "El formato de este campo es incorrecto."
-#: core/validators.py:500
+#: core/validators.py:496
msgid "This field is invalid."
msgstr "Este campo no es válido."
-#: core/validators.py:536
+#: core/validators.py:532
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "No se pudo obtener nada de %s."
-#: core/validators.py:539
+#: core/validators.py:535
#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"La URL %(url)s devolvió la cabecera Content-Type '%(contenttype)s', que no "
-"es válida."
+msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
+msgstr "La URL %(url)s devolvió la cabecera Content-Type '%(contenttype)s', que no es válida."
-#: core/validators.py:572
+#: core/validators.py:568
#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Por favor, cierre la etiqueta %(tag)s de la línea %(line)s. (La línea "
-"empieza por \"%(start)s\".)"
+msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
+msgstr "Por favor, cierre la etiqueta %(tag)s de la línea %(line)s. (La línea empieza por \"%(start)s\".)"
-#: core/validators.py:576
+#: core/validators.py:572
#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Parte del texto que comienza en la línea %(line)s no está permitido en ese "
-"contexto. (La línea empieza por \"%(start)s\".)"
+msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
+msgstr "Parte del texto que comienza en la línea %(line)s no está permitido en ese contexto. (La línea empieza por \"%(start)s\".)"
-#: core/validators.py:581
+#: core/validators.py:577
#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"El \"%(attr)s\" de la línea %(line)s no es un atributo válido. (La línea "
-"empieza por \"%(start)s\".)"
+msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
+msgstr "El \"%(attr)s\" de la línea %(line)s no es un atributo válido. (La línea empieza por \"%(start)s\".)"
-#: core/validators.py:586
+#: core/validators.py:582
#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"La \"<%(tag)s>\" de la línea %(line)s no es una etiqueta válida. (La línea "
-"empieza por \"%(start)s\".)"
+msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
+msgstr "La \"<%(tag)s>\" de la línea %(line)s no es una etiqueta válida. (La línea empieza por \"%(start)s\".)"
-#: core/validators.py:590
+#: core/validators.py:586
#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"A una etiqueta de la línea %(line)s le faltan uno o más atributos "
-"requeridos. (La línea empieza por \"%(start)s\".)"
+msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
+msgstr "A una etiqueta de la línea %(line)s le faltan uno o más atributos requeridos. (La línea empieza por \"%(start)s\".)"
-#: core/validators.py:595
+#: core/validators.py:591
#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"El atributo \"%(attr)s\" de la línea %(line)s tiene un valor que no es "
-"válido. (La línea empieza por \"%(start)s\".)"
+msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
+msgstr "El atributo \"%(attr)s\" de la línea %(line)s tiene un valor que no es válido. (La línea empieza por \"%(start)s\".)"
-#: db/models/manipulators.py:308
+#: db/models/manipulators.py:304
#, python-format
msgid "%(object)s with this %(type)s already exists for the given %(field)s."
msgstr "%(object)s de este %(type)s ya existen en este %(field)s."
-#: db/models/fields/__init__.py:54
+#: db/models/fields/__init__.py:47
#, python-format
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "Ya existe %(optname)s con este %(fieldname)s."
-#: db/models/fields/__init__.py:179 db/models/fields/__init__.py:348
-#: db/models/fields/__init__.py:780 db/models/fields/__init__.py:791
-#: newforms/fields.py:46 oldforms/__init__.py:374
+#: db/models/fields/__init__.py:175
+#: db/models/fields/__init__.py:343
+#: db/models/fields/__init__.py:795
+#: db/models/fields/__init__.py:806
+#: forms/fields.py:51
+#: oldforms/__init__.py:374
msgid "This field is required."
msgstr "Este campo es obligatorio."
-#: db/models/fields/__init__.py:448
+#: db/models/fields/__init__.py:450
msgid "This value must be an integer."
msgstr "Este valor debe ser un entero."
-#: db/models/fields/__init__.py:487
+#: db/models/fields/__init__.py:491
msgid "This value must be either True or False."
msgstr "Este valor debe ser Verdadero o Falso."
-#: db/models/fields/__init__.py:511
+#: db/models/fields/__init__.py:515
msgid "This field cannot be null."
msgstr "Este campo no puede estar vacío."
-#: db/models/fields/__init__.py:689
+#: db/models/fields/__init__.py:702
msgid "This value must be a decimal number."
msgstr "Este valor debe ser un entero."
-#: db/models/fields/__init__.py:800
+#: db/models/fields/__init__.py:815
msgid "Enter a valid filename."
msgstr "Introduzca un nombre de fichero válido"
-#: db/models/fields/__init__.py:981
+#: db/models/fields/__init__.py:1006
msgid "This value must be either None, True or False."
msgstr "Este valor debe ser Verdadero, Falso o Ninguno."
-#: db/models/fields/related.py:94
+#: db/models/fields/related.py:93
#, python-format
msgid "Please enter a valid %s."
msgstr "Por favor, introduzca un %s válido."
-#: db/models/fields/related.py:746
-msgid "Separate multiple IDs with commas."
-msgstr "Separe múltiples IDs con comas."
-
-#: db/models/fields/related.py:748
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Mantenga presionado \"Control\", o \"Command\" en un Mac, para seleccionar "
-"más de una opción."
+#: db/models/fields/related.py:729
+msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr "Mantenga presionado \"Control\", o \"Command\" en un Mac, para seleccionar más de una opción."
-#: db/models/fields/related.py:795
+#: db/models/fields/related.py:773
#, 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, introduzca IDs de %(self)s válidos. El valor %(value)r no es "
-"válido."
-msgstr[1] ""
-"Por favor, introduzca IDs de %(self)s válidos. Los valores %(value)r no son "
-"válidos."
+msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
+msgstr[0] "Por favor, introduzca IDs de %(self)s válidos. El valor %(value)r no es válido."
+msgstr[1] "Por favor, introduzca IDs de %(self)s válidos. Los valores %(value)r no son válidos."
-#: newforms/fields.py:47
+#: forms/fields.py:52
msgid "Enter a valid value."
msgstr "Introduzca un valor correcto."
-#: newforms/fields.py:124
+#: forms/fields.py:129
#, python-format
msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr ""
-"Asegúrese de que su texto tiene a lo más %(max)d caracteres (actualmente "
-"tiene %(length)d)."
+msgstr "Asegúrese de que su texto tiene a lo más %(max)d caracteres (actualmente tiene %(length)d)."
-#: newforms/fields.py:125
+#: forms/fields.py:130
#, python-format
msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr ""
-"Asegúrese de que su texto tiene al menos %(min)d caracteres (actualmente "
-"tiene %(length)d)."
+msgstr "Asegúrese de que su texto tiene al menos %(min)d caracteres (actualmente tiene %(length)d)."
-#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211
+#: forms/fields.py:158
+#: forms/fields.py:187
+#: forms/fields.py:216
#, python-format
msgid "Ensure this value is less than or equal to %s."
msgstr "Asegúrese de que este valor es menor o igual a %s."
-#: newforms/fields.py:154 newforms/fields.py:183 newforms/fields.py:212
+#: forms/fields.py:159
+#: forms/fields.py:188
+#: forms/fields.py:217
#, python-format
msgid "Ensure this value is greater than or equal to %s."
msgstr "Asegúrese de que este valor es mayor o igual a %s."
-#: newforms/fields.py:181 newforms/fields.py:210
+#: forms/fields.py:186
+#: forms/fields.py:215
msgid "Enter a number."
msgstr "Introduzca un número."
-#: newforms/fields.py:213
+#: forms/fields.py:218
#, python-format
msgid "Ensure that there are no more than %s digits in total."
msgstr "Asegúrese de que no hay más de %s dígitos en total."
-#: newforms/fields.py:214
+#: forms/fields.py:219
#, python-format
msgid "Ensure that there are no more than %s decimal places."
msgstr "Asegúrese de que no hay más de %s decimales."
-#: newforms/fields.py:215
+#: forms/fields.py:220
#, python-format
msgid "Ensure that there are no more than %s digits before the decimal point."
msgstr "Asegúrese de que no hay más de %s dígitos antes de la coma decimal."
-#: newforms/fields.py:263 newforms/fields.py:751
+#: forms/fields.py:268
+#: forms/fields.py:795
msgid "Enter a valid date."
msgstr "Introduzca una fecha válida."
-#: newforms/fields.py:296 newforms/fields.py:752
+#: forms/fields.py:301
+#: forms/fields.py:796
msgid "Enter a valid time."
msgstr "Introduzca una hora válida."
-#: newforms/fields.py:335
+#: forms/fields.py:340
msgid "Enter a valid date/time."
msgstr "Introduzca una fecha/hora válida."
-#: newforms/fields.py:434
+#: forms/fields.py:427
msgid "No file was submitted."
msgstr "No se ha enviado ningún fichero"
-#: newforms/fields.py:435 oldforms/__init__.py:689
+#: forms/fields.py:428
+#: oldforms/__init__.py:693
msgid "The submitted file is empty."
msgstr "El fichero enviado está vacío."
-#: newforms/fields.py:497
+#: forms/fields.py:527
msgid "Enter a valid URL."
msgstr "Introduzca una URL válida."
-#: newforms/fields.py:498
+#: forms/fields.py:528
msgid "This URL appears to be a broken link."
msgstr "La URL parece ser un enlace roto."
-#: newforms/fields.py:560 newforms/models.py:299
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Escoja una opción válida. Esa opción no está entre las disponibles."
-
-#: newforms/fields.py:599
+#: forms/fields.py:593
+#: forms/fields.py:644
#, python-format
msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Escoja una opción válida. %(value)s no es una de las opciones disponibles."
+msgstr "Escoja una opción válida. %(value)s no es una de las opciones disponibles."
-#: newforms/fields.py:600 newforms/fields.py:662 newforms/models.py:371
+#: forms/fields.py:645
+#: forms/fields.py:706
+#: forms/models.py:581
msgid "Enter a list of values."
msgstr "Introduzca una lista de valores."
-#: newforms/fields.py:780
+#: forms/fields.py:824
msgid "Enter a valid IPv4 address."
msgstr "Introduzca una dirección IPv4 válida."
-#: newforms/models.py:372
+#: forms/models.py:514
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "Escoja una opción válida. Esa opción no está entre las disponibles."
+
+#: forms/models.py:582
#, python-format
msgid "Select a valid choice. %s is not one of the available choices."
msgstr "Escoja una opción válida; '%s' no es una de las opciones disponibles."
@@ -4068,20 +3962,22 @@ msgstr[1] "Asegúrese de que su texto tiene menos de %s caracteres."
msgid "Line breaks are not allowed here."
msgstr "No se permiten saltos de línea."
-#: oldforms/__init__.py:512 oldforms/__init__.py:586 oldforms/__init__.py:625
+#: oldforms/__init__.py:512
+#: oldforms/__init__.py:586
+#: oldforms/__init__.py:625
#, python-format
msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
msgstr "Escoja una opción válida; '%(data)s' no está en %(choices)s."
-#: oldforms/__init__.py:745
+#: oldforms/__init__.py:754
msgid "Enter a whole number between -32,768 and 32,767."
msgstr "Introduzca un número entero entre -32.768 y 32.767."
-#: oldforms/__init__.py:755
+#: oldforms/__init__.py:764
msgid "Enter a positive number."
msgstr "Introduzca un número positivo."
-#: oldforms/__init__.py:765
+#: oldforms/__init__.py:774
msgid "Enter a whole number between 0 and 32,767."
msgstr "Introduzca un número entero entre 0 y 32.767."
@@ -4199,23 +4095,28 @@ msgstr "enero"
msgid "February"
msgstr "febrero"
-#: utils/dates.py:18 utils/dates.py:31
+#: utils/dates.py:18
+#: utils/dates.py:31
msgid "March"
msgstr "marzo"
-#: utils/dates.py:18 utils/dates.py:31
+#: utils/dates.py:18
+#: utils/dates.py:31
msgid "April"
msgstr "abril"
-#: utils/dates.py:18 utils/dates.py:31
+#: utils/dates.py:18
+#: utils/dates.py:31
msgid "May"
msgstr "mayo"
-#: utils/dates.py:18 utils/dates.py:31
+#: utils/dates.py:18
+#: utils/dates.py:31
msgid "June"
msgstr "junio"
-#: utils/dates.py:19 utils/dates.py:31
+#: utils/dates.py:19
+#: utils/dates.py:31
msgid "July"
msgstr "julio"
@@ -4315,7 +4216,7 @@ msgstr "nov."
msgid "Dec."
msgstr "dic."
-#: utils/text.py:127
+#: utils/text.py:128
msgid "or"
msgstr "o"
@@ -4369,38 +4270,53 @@ msgstr "%(number)d %(type)s"
msgid ", %(number)d %(type)s"
msgstr ", %(number)d %(type)s"
-#: utils/translation/trans_real.py:403
+#: utils/translation/trans_real.py:401
msgid "DATE_FORMAT"
msgstr "j N Y"
-#: utils/translation/trans_real.py:404
+#: utils/translation/trans_real.py:402
msgid "DATETIME_FORMAT"
msgstr "j N Y P"
-#: utils/translation/trans_real.py:405
+#: utils/translation/trans_real.py:403
msgid "TIME_FORMAT"
msgstr "P"
-#: utils/translation/trans_real.py:421
+#: utils/translation/trans_real.py:419
msgid "YEAR_MONTH_FORMAT"
msgstr "F Y"
-#: utils/translation/trans_real.py:422
+#: utils/translation/trans_real.py:420
msgid "MONTH_DAY_FORMAT"
msgstr "j \\de F"
-#: views/generic/create_update.py:43
+#: views/generic/create_update.py:129
#, python-format
msgid "The %(verbose_name)s was created successfully."
-msgstr "El %(verbose_name)s se ha creado exitosamente."
+msgstr "El/La %(verbose_name)s se ha creado exitosamente."
-#: views/generic/create_update.py:117
+#: views/generic/create_update.py:172
#, python-format
msgid "The %(verbose_name)s was updated successfully."
msgstr "Se actualizó con éxito el %(verbose_name)s."
-#: views/generic/create_update.py:184
+#: views/generic/create_update.py:214
#, python-format
msgid "The %(verbose_name)s was deleted."
-msgstr "El %(verbose_name)s ha sido borrado."
+msgstr "El/La %(verbose_name)s ha sido borrado."
+
+#~ msgid "Ordering"
+#~ msgstr "Ordenación"
+#~ msgid "Order:"
+#~ msgstr "Orden:"
+#~ msgid "Added %s."
+#~ msgstr "Añadido %s."
+#~ msgid "Deleted %s."
+#~ msgstr "Borrado %s."
+#~ msgid "The two 'new password' fields didn't match."
+#~ msgstr "Los dos campos 'nueva contraseña' no coinciden."
+#~ msgid "Year must be 1900 or later."
+#~ msgstr "El año debe ser 1900 o posterior."
+#~ msgid "Separate multiple IDs with commas."
+#~ msgstr "Separe múltiples IDs con comas."
diff --git a/django/conf/locale/es_AR/LC_MESSAGES/django.mo b/django/conf/locale/es_AR/LC_MESSAGES/django.mo
index e66de9a8e3..ca1ea679ae 100644
--- a/django/conf/locale/es_AR/LC_MESSAGES/django.mo
+++ b/django/conf/locale/es_AR/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/es_AR/LC_MESSAGES/django.po b/django/conf/locale/es_AR/LC_MESSAGES/django.po
index 40f2b5a114..fa26d5f6d7 100644
--- a/django/conf/locale/es_AR/LC_MESSAGES/django.po
+++ b/django/conf/locale/es_AR/LC_MESSAGES/django.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-01 13:16-0200\n"
-"PO-Revision-Date: 2008-02-02 14:26-0200\n"
+"POT-Creation-Date: 2008-07-19 13:34-0300\n"
+"PO-Revision-Date: 2008-07-19 19:37-0300\n"
"Last-Translator: Ramiro Morales <rm0@gmx.net>\n"
"Language-Team: Django-I18N <django-i18n@googlegroups.com>\n"
"MIME-Version: 1.0\n"
@@ -15,185 +15,201 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: conf/global_settings.py:39
+#: conf/global_settings.py:44
msgid "Arabic"
-msgstr "Ãrabe"
+msgstr "árabe"
-#: conf/global_settings.py:40
+#: conf/global_settings.py:45
msgid "Bengali"
-msgstr "Bengalí"
+msgstr "bengalí"
-#: conf/global_settings.py:41
+#: conf/global_settings.py:46
msgid "Bulgarian"
-msgstr "Búlgaro"
+msgstr "búlgaro"
-#: conf/global_settings.py:42
+#: conf/global_settings.py:47
msgid "Catalan"
-msgstr "Catalán"
+msgstr "catalán"
-#: conf/global_settings.py:43
+#: conf/global_settings.py:48
msgid "Czech"
-msgstr "Checo"
+msgstr "checo"
-#: conf/global_settings.py:44
+#: conf/global_settings.py:49
msgid "Welsh"
-msgstr "Galés"
+msgstr "galés"
-#: conf/global_settings.py:45
+#: conf/global_settings.py:50
msgid "Danish"
-msgstr "Danés"
+msgstr "danés"
-#: conf/global_settings.py:46
+#: conf/global_settings.py:51
msgid "German"
-msgstr "Alemán"
+msgstr "alemán"
-#: conf/global_settings.py:47
+#: conf/global_settings.py:52
msgid "Greek"
-msgstr "Griego"
+msgstr "griego"
-#: conf/global_settings.py:48
+#: conf/global_settings.py:53
msgid "English"
-msgstr "Inglés"
+msgstr "inglés"
-#: conf/global_settings.py:49
+#: conf/global_settings.py:54
msgid "Spanish"
-msgstr "Español"
+msgstr "español"
-#: conf/global_settings.py:50
+#: conf/global_settings.py:55
+msgid "Estonian"
+msgstr "estonio"
+
+#: conf/global_settings.py:56
msgid "Argentinean Spanish"
-msgstr "Español Argentino"
+msgstr "español de Argentina"
-#: conf/global_settings.py:51
+#: conf/global_settings.py:57
+msgid "Basque"
+msgstr "vasco"
+
+#: conf/global_settings.py:58
msgid "Persian"
-msgstr "Persa"
+msgstr "persa"
-#: conf/global_settings.py:52
+#: conf/global_settings.py:59
msgid "Finnish"
-msgstr "Finlandés"
+msgstr "finlandés"
-#: conf/global_settings.py:53
+#: conf/global_settings.py:60
msgid "French"
-msgstr "Francés"
+msgstr "francés"
-#: conf/global_settings.py:54
-msgid "Gaeilge"
-msgstr "Irlandés"
+#: conf/global_settings.py:61
+msgid "Irish"
+msgstr "irlandés"
-#: conf/global_settings.py:55
+#: conf/global_settings.py:62
msgid "Galician"
-msgstr "Gallego"
+msgstr "gallego"
-#: conf/global_settings.py:56
+#: conf/global_settings.py:63
msgid "Hungarian"
-msgstr "Húngaro"
+msgstr "húngaro"
-#: conf/global_settings.py:57
+#: conf/global_settings.py:64
msgid "Hebrew"
-msgstr "Hebreo"
+msgstr "hebreo"
-#: conf/global_settings.py:58
+#: conf/global_settings.py:65
msgid "Croatian"
-msgstr "Croata"
+msgstr "croata"
-#: conf/global_settings.py:59
+#: conf/global_settings.py:66
msgid "Icelandic"
-msgstr "Islandés"
+msgstr "islandés"
-#: conf/global_settings.py:60
+#: conf/global_settings.py:67
msgid "Italian"
-msgstr "Italiano"
+msgstr "italiano"
-#: conf/global_settings.py:61
+#: conf/global_settings.py:68
msgid "Japanese"
-msgstr "Japonés"
+msgstr "japonés"
-#: conf/global_settings.py:62
+#: conf/global_settings.py:69
+msgid "Georgian"
+msgstr "georgiano"
+
+#: conf/global_settings.py:70
msgid "Korean"
-msgstr "Koreano"
+msgstr "koreano"
-#: conf/global_settings.py:63
+#: conf/global_settings.py:71
msgid "Khmer"
-msgstr "Jémer"
+msgstr "jémer"
-#: conf/global_settings.py:64
+#: conf/global_settings.py:72
msgid "Kannada"
-msgstr "Canarés"
+msgstr "canarés"
-#: conf/global_settings.py:65
+#: conf/global_settings.py:73
msgid "Latvian"
-msgstr "Letón"
+msgstr "letón"
-#: conf/global_settings.py:66
+#: conf/global_settings.py:74
+msgid "Lithuanian"
+msgstr "lituano"
+
+#: conf/global_settings.py:75
msgid "Macedonian"
-msgstr "Macedonio"
+msgstr "macedonio"
-#: conf/global_settings.py:67
+#: conf/global_settings.py:76
msgid "Dutch"
-msgstr "Holandés"
+msgstr "holandés"
-#: conf/global_settings.py:68
+#: conf/global_settings.py:77
msgid "Norwegian"
-msgstr "Noruego"
+msgstr "noruego"
-#: conf/global_settings.py:69
+#: conf/global_settings.py:78
msgid "Polish"
-msgstr "Polaco"
+msgstr "polaco"
-#: conf/global_settings.py:70
+#: conf/global_settings.py:79
msgid "Portugese"
-msgstr "Portugués"
+msgstr "portugués"
-#: conf/global_settings.py:71
-msgid "Brazilian"
-msgstr "Brasileño"
+#: conf/global_settings.py:80
+msgid "Brazilian Portuguese"
+msgstr "portugués de Brasil"
-#: conf/global_settings.py:72
+#: conf/global_settings.py:81
msgid "Romanian"
-msgstr "Rumano"
+msgstr "rumano"
-#: conf/global_settings.py:73
+#: conf/global_settings.py:82
msgid "Russian"
-msgstr "Ruso"
+msgstr "ruso"
-#: conf/global_settings.py:74
+#: conf/global_settings.py:83
msgid "Slovak"
-msgstr "Eslovaco"
+msgstr "eslovaco"
-#: conf/global_settings.py:75
+#: conf/global_settings.py:84
msgid "Slovenian"
-msgstr "Esloveno"
+msgstr "esloveno"
-#: conf/global_settings.py:76
+#: conf/global_settings.py:85
msgid "Serbian"
-msgstr "Serbio"
+msgstr "serbio"
-#: conf/global_settings.py:77
+#: conf/global_settings.py:86
msgid "Swedish"
-msgstr "Sueco"
+msgstr "sueco"
-#: conf/global_settings.py:78
+#: conf/global_settings.py:87
msgid "Tamil"
-msgstr "Tamil"
+msgstr "tamil"
-#: conf/global_settings.py:79
+#: conf/global_settings.py:88
msgid "Telugu"
-msgstr "Telugu"
+msgstr "telugu"
-#: conf/global_settings.py:80
+#: conf/global_settings.py:89
msgid "Turkish"
-msgstr "Turco"
+msgstr "turco"
-#: conf/global_settings.py:81
+#: conf/global_settings.py:90
msgid "Ukrainian"
-msgstr "Ucraniano"
+msgstr "ucraniano"
-#: conf/global_settings.py:82
+#: conf/global_settings.py:91
msgid "Simplified Chinese"
-msgstr "Chino simplificado"
+msgstr "chino simplificado"
-#: conf/global_settings.py:83
+#: conf/global_settings.py:92
msgid "Traditional Chinese"
-msgstr "Chino tradicional"
+msgstr "chino tradicional"
#: contrib/admin/filterspecs.py:44
#, python-format
@@ -229,49 +245,209 @@ msgstr "Este mes"
msgid "This year"
msgstr "Este año"
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "Yes"
msgstr "Sí"
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "No"
msgstr "No"
-#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "Unknown"
msgstr "Desconocido"
-#: contrib/admin/models.py:18
+#: contrib/admin/models.py:19
msgid "action time"
msgstr "hora de acción"
-#: contrib/admin/models.py:21
+#: contrib/admin/models.py:22
msgid "object id"
msgstr "id de objeto"
-#: contrib/admin/models.py:22
+#: contrib/admin/models.py:23
msgid "object repr"
msgstr "repr de objeto"
-#: contrib/admin/models.py:23
+#: contrib/admin/models.py:24
msgid "action flag"
msgstr "marca de acción"
-#: contrib/admin/models.py:24
+#: contrib/admin/models.py:25
msgid "change message"
msgstr "mensaje de cambio"
-#: contrib/admin/models.py:27
+#: contrib/admin/models.py:28
msgid "log entry"
msgstr "entrada de registro"
-#: contrib/admin/models.py:28
+#: contrib/admin/models.py:29
msgid "log entries"
msgstr "entradas de registro"
+#: contrib/admin/options.py:162 contrib/admin/options.py:181
+msgid "None"
+msgstr "Ninguno"
+
+#: contrib/admin/options.py:348 contrib/auth/admin.py:37
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "Se agregó con éxito %(name)s \"%(obj)s\"."
+
+#: contrib/admin/options.py:352 contrib/admin/options.py:420
+#: contrib/auth/admin.py:42
+msgid "You may edit it again below."
+msgstr "Puede modificarlo nuevamente abajo."
+
+#: contrib/admin/options.py:362 contrib/admin/options.py:429
+#, python-format
+msgid "You may add another %s below."
+msgstr "Puede agregar otro %s abajo."
+
+#: contrib/admin/options.py:396
+#, python-format
+msgid "Changed %s."
+msgstr "Modifica %s."
+
+#: contrib/admin/options.py:396 contrib/admin/options.py:406
+#: core/validators.py:279 db/models/manipulators.py:305
+msgid "and"
+msgstr "y"
+
+#: contrib/admin/options.py:401
+#, python-format
+msgid "Added %(name)s \"%(object)s\"."
+msgstr "Se agregó %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:405
+#, python-format
+msgid "Changed %(list)s for %(name)s \"%(object)s\"."
+msgstr "Se modificaron %(list)s en %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:410
+#, python-format
+msgid "Deleted %(name)s \"%(object)s\"."
+msgstr "Se eliminó %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:415
+msgid "No fields changed."
+msgstr "No ha modificado ningún campo."
+
+#: contrib/admin/options.py:418
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr "Se modificó con éxito %(name)s \"%(obj)s\"."
+
+#: contrib/admin/options.py:426
+#, python-format
+msgid ""
+"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr ""
+"Se agregó con éxito %(name)s \"%(obj)s\". Puede modificarlo nuevamente abajo."
+
+#: contrib/admin/options.py:507
+#, python-format
+msgid "Add %s"
+msgstr "Agregar %s"
+
+#: contrib/admin/options.py:570
+#, python-format
+msgid "Change %s"
+msgstr "Modificar %s"
+
+#: contrib/admin/options.py:600
+msgid "Database error"
+msgstr "Error de base de datos"
+
+#: contrib/admin/options.py:649
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "Se eliminó con éxito %(name)s \"%(obj)s\"."
+
+#: contrib/admin/options.py:655
+msgid "Are you sure?"
+msgstr "¿Está seguro?"
+
+#: contrib/admin/options.py:682
+#, python-format
+msgid "Change history: %s"
+msgstr "Historia de modificaciones: %s"
+
+#: contrib/admin/sites.py:17 contrib/admin/views/decorators.py:16
+#: contrib/auth/forms.py:71 contrib/comments/views/comments.py:56
+msgid ""
+"Please enter a correct username and password. Note that both fields are case-"
+"sensitive."
+msgstr ""
+"Por favor introduzca un nombre de usuario y una contraseña correctos. Note "
+"que ambos campos son sensibles a mayúsculas/minúsculas."
+
+#: contrib/admin/sites.py:218 contrib/admin/views/decorators.py:68
+msgid ""
+"Please log in again, because your session has expired. Don't worry: Your "
+"submission has been saved."
+msgstr ""
+"Por favor, identifíquese de nuevo porque su sesión ha caducado. No se "
+"preocupe: se ha guardado su envío."
+
+#: contrib/admin/sites.py:225 contrib/admin/views/decorators.py:75
+msgid ""
+"Looks like your browser isn't configured to accept cookies. Please enable "
+"cookies, reload this page, and try again."
+msgstr ""
+"Parece que su navegador no está configurado para aceptar cookies. Por favor "
+"actívelas, recargue esta página, e inténtelo de nuevo."
+
+#: contrib/admin/sites.py:239 contrib/admin/sites.py:245
+#: contrib/admin/views/decorators.py:92
+msgid "Usernames cannot contain the '@' character."
+msgstr "Los nombres de usuario no pueden contener el carácter '@'."
+
+#: contrib/admin/sites.py:242 contrib/admin/views/decorators.py:88
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr ""
+"Su dirección de correo electrónico no es su nombre de usuario. Intente "
+"nuevamente usando '%s'."
+
+#: contrib/admin/sites.py:313
+msgid "Site administration"
+msgstr "Administración de sitio"
+
+#: contrib/admin/sites.py:335 contrib/admin/templates/admin/login.html:27
+#: contrib/admin/views/decorators.py:30
+msgid "Log in"
+msgstr "Identificarse"
+
+#: contrib/admin/util.py:126
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr "Uno o más %(fieldname)s en %(name)s: %(obj)s"
+
+#: contrib/admin/util.py:131
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "Uno o más %(fieldname)s en %(name)s:"
+
+#: contrib/admin/widgets.py:66
+msgid "Date:"
+msgstr "Fecha:"
+
+#: contrib/admin/widgets.py:66
+msgid "Time:"
+msgstr "Hora:"
+
+#: contrib/admin/widgets.py:90
+msgid "Currently:"
+msgstr "Actualmente"
+
+#: contrib/admin/widgets.py:90
+msgid "Change:"
+msgstr "Modificar:"
+
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
@@ -282,17 +458,17 @@ msgid "We're sorry, but the requested page could not be found."
msgstr "Lo sentimos, pero no se encuentra la página solicitada."
#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/change_form.html:17
+#: contrib/admin/templates/admin/change_list.html:8
+#: contrib/admin/templates/admin/delete_confirmation.html:6
#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/auth/user/change_password.html:10
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_reset_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
msgid "Home"
@@ -319,22 +495,28 @@ msgstr ""
"mediante correo electrónico y debería ser solucionado en breve. Gracias por "
"su paciencia."
-#: contrib/admin/templates/admin/base.html:26
+#: contrib/admin/templates/admin/base.html:25
msgid "Welcome,"
msgstr "Bienvenido,"
-#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin/base.html:25
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
msgid "Documentation"
msgstr "Documentación"
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/auth/user/change_password.html:13
+#: 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
msgid "Change password"
msgstr "Cambiar contraseña"
-#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
#: contrib/comments/templates/comments/form.html:6
msgid "Log out"
msgstr "Cerrar sesión"
@@ -347,46 +529,43 @@ msgstr "Sitio de administración de Django"
msgid "Django administration"
msgstr "Administración de Django"
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
+#: contrib/admin/templates/admin/change_form.html:19
+#: contrib/admin/templates/admin/index.html:29
msgid "Add"
msgstr "Agregar"
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
+#: contrib/admin/templates/admin/change_form.html:26
+#: contrib/admin/templates/admin/object_history.html:5
msgid "History"
msgstr "Historia"
-#: contrib/admin/templates/admin/change_form.html:21
+#: contrib/admin/templates/admin/change_form.html:27
msgid "View on site"
msgstr "Ver en el sitio"
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
+#: contrib/admin/templates/admin/change_form.html:37
+#: contrib/admin/templates/admin/auth/user/change_password.html:22
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] "Por favor, corrija el siguiente error."
msgstr[1] "Por favor, corrija los siguientes errores."
-#: contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr "Ordenación"
-
-#: contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr "Orden:"
-
-#: contrib/admin/templates/admin/change_list.html:11
+#: contrib/admin/templates/admin/change_list.html:16
#, python-format
msgid "Add %(name)s"
msgstr "Agregar %(name)s"
-#: contrib/admin/templates/admin/delete_confirmation.html:8
+#: contrib/admin/templates/admin/change_list.html:26
+msgid "Filter"
+msgstr "Filtrar"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:9
#: contrib/admin/templates/admin/submit_line.html:3
+#: contrib/admin/templates/admin/edit_inline/tabular.html:15
msgid "Delete"
msgstr "Eliminar"
-#: contrib/admin/templates/admin/delete_confirmation.html:13
+#: contrib/admin/templates/admin/delete_confirmation.html:15
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
@@ -397,7 +576,7 @@ msgstr ""
"de objetos relacionados, pero su cuenta no tiene permiso para eliminar los "
"siguientes tipos de objetos:"
-#: contrib/admin/templates/admin/delete_confirmation.html:20
+#: contrib/admin/templates/admin/delete_confirmation.html:22
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
@@ -406,7 +585,7 @@ msgstr ""
"¿Está seguro de que quiere eliminar los %(object_name)s \"%(escaped_object)s"
"\"? Se eliminarán los siguientes objetos relacionados:"
-#: contrib/admin/templates/admin/delete_confirmation.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:27
msgid "Yes, I'm sure"
msgstr "Sí, estoy seguro"
@@ -415,41 +594,37 @@ msgstr "Sí, estoy seguro"
msgid " By %(filter_title)s "
msgstr " Por %(filter_title)s "
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filtrar"
-
-#: contrib/admin/templates/admin/index.html:17
+#: contrib/admin/templates/admin/index.html:18
#, python-format
msgid "Models available in the %(name)s application."
msgstr "Modelos disponibles en la aplicación %(name)s."
-#: contrib/admin/templates/admin/index.html:18
+#: contrib/admin/templates/admin/index.html:19
#, python-format
msgid "%(name)s"
msgstr "%(name)s"
-#: contrib/admin/templates/admin/index.html:34
+#: contrib/admin/templates/admin/index.html:35
msgid "Change"
msgstr "Modificar"
-#: contrib/admin/templates/admin/index.html:44
+#: contrib/admin/templates/admin/index.html:45
msgid "You don't have permission to edit anything."
msgstr "No tiene permiso para editar nada."
-#: contrib/admin/templates/admin/index.html:52
+#: contrib/admin/templates/admin/index.html:53
msgid "Recent Actions"
msgstr "Acciones recientes"
-#: contrib/admin/templates/admin/index.html:53
+#: contrib/admin/templates/admin/index.html:54
msgid "My Actions"
msgstr "Mis acciones"
-#: contrib/admin/templates/admin/index.html:57
+#: contrib/admin/templates/admin/index.html:58
msgid "None available"
msgstr "Ninguna disponible"
-#: contrib/admin/templates/admin/invalid_setup.html:8
+#: contrib/admin/templates/admin/invalid_setup.html:7
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 "
@@ -459,39 +634,34 @@ msgstr ""
"tablas de la misma hayan sido creadas, y asegúrese de que el usuario "
"apropiado tenga permisos de lectura en la base de datos."
-#: contrib/admin/templates/admin/login.html:17
+#: contrib/admin/templates/admin/login.html:19
#: contrib/comments/templates/comments/form.html:6
#: contrib/comments/templates/comments/form.html:8
msgid "Username:"
msgstr "Usuario:"
-#: contrib/admin/templates/admin/login.html:20
+#: contrib/admin/templates/admin/login.html:22
#: contrib/comments/templates/comments/form.html:8
msgid "Password:"
msgstr "Contraseña:"
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:25
-msgid "Log in"
-msgstr "Identificarse"
-
-#: contrib/admin/templates/admin/object_history.html:17
+#: contrib/admin/templates/admin/object_history.html:16
msgid "Date/time"
msgstr "Fecha/hora"
-#: contrib/admin/templates/admin/object_history.html:18
+#: contrib/admin/templates/admin/object_history.html:17
msgid "User"
msgstr "Usuario"
-#: contrib/admin/templates/admin/object_history.html:19
+#: contrib/admin/templates/admin/object_history.html:18
msgid "Action"
msgstr "Acción"
-#: contrib/admin/templates/admin/object_history.html:25
+#: contrib/admin/templates/admin/object_history.html:24
msgid "DATE_WITH_TIME_FULL"
msgstr "j M Y P"
-#: contrib/admin/templates/admin/object_history.html:35
+#: contrib/admin/templates/admin/object_history.html:32
msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
@@ -543,27 +713,30 @@ msgstr ""
"Primero, introduzca un nombre de usuario y una contraseña. Luego podrá "
"configurar opciones adicionales."
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
+#: contrib/admin/templates/admin/auth/user/add_form.html:13
+#: contrib/auth/forms.py:13 contrib/auth/forms.py:50
msgid "Username"
msgstr "Nombre de usuario:"
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
+#: contrib/admin/templates/admin/auth/user/add_form.html:20
#: contrib/admin/templates/admin/auth/user/change_password.html:33
+#: contrib/auth/forms.py:16 contrib/auth/forms.py:51 contrib/auth/forms.py:167
msgid "Password"
msgstr "Contraseña:"
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
+#: contrib/admin/templates/admin/auth/user/add_form.html:26
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/auth/forms.py:168
msgid "Password (again)"
msgstr "Contraseña (de nuevo)"
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/admin/templates/admin/auth/user/add_form.html:27
+#: contrib/admin/templates/admin/auth/user/change_password.html:40
msgid "Enter the same password as above, for verification."
msgstr ""
"Para verificación, introduzca la misma contraseña que introdujo arriba."
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
+#: contrib/admin/templates/admin/auth/user/change_password.html:26
#, python-format
msgid "Enter a new password for the user <strong>%(username)s</strong>."
msgstr ""
@@ -638,7 +811,7 @@ msgstr "Editar este objeto (nueva ventana)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:28
msgid "As above, but opens the admin page in a new window."
msgstr ""
-"Como antes, pero abre la página de administración en una nueva ventana."
+"Ãdem, pero abre la página de administración en una nueva ventana."
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
@@ -648,23 +821,23 @@ msgstr "Gracias por el tiempo que ha dedicado al sitio web hoy."
msgid "Log in again"
msgstr "Identificarse de nuevo"
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_change_form.html:6
+#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr "Cambio de contraseña"
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "Cambio de contraseña exitoso"
-#: contrib/admin/templates/registration/password_change_done.html:11
+#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "Su contraseña ha sido cambiada."
-#: contrib/admin/templates/registration/password_change_form.html:11
+#: 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."
@@ -673,19 +846,19 @@ msgstr ""
"luego introduzca la nueva contraseña dos veces para verificar que la ha "
"escrito correctamente."
-#: contrib/admin/templates/registration/password_change_form.html:16
+#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "Contraseña antigua:"
-#: contrib/admin/templates/registration/password_change_form.html:18
+#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
msgstr "Contraseña nueva:"
-#: contrib/admin/templates/registration/password_change_form.html:20
+#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
msgstr "Confirme contraseña:"
-#: contrib/admin/templates/registration/password_change_form.html:22
+#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
msgstr "Cambiar mi contraseña"
@@ -706,8 +879,8 @@ msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
msgstr ""
-"Le hemos enviado una nueva contraseña a la dirección que ha suministrado. "
-"Debería recibirla en breve."
+"Le hemos enviado una nueva contraseña a la dirección de correo electrónico "
+"que ha suministrado. Debería recibir la misma en breve."
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
@@ -746,8 +919,8 @@ msgid ""
"Forgotten your password? Enter your e-mail address below, and we'll reset "
"your password and e-mail the new one to you."
msgstr ""
-"¿Ha olvidado su contraseña? Introduzca su dirección de correo electrónico, y "
-"crearemos una nueva que le enviaremos por correo."
+"¿Ha olvidado su contraseña?. Introduzca su dirección de correo electrónico, y "
+"crearemos una nueva la que le será enviada por dicho medio."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
@@ -757,339 +930,222 @@ msgstr "Dirección de correo electrónico:"
msgid "Reset my password"
msgstr "Recuperar mi contraseña"
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Fecha:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Hora:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Actualmente"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Modificar:"
-
#: contrib/admin/templatetags/admin_list.py:257
msgid "All dates"
msgstr "Todas las fechas"
-#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267
+#: contrib/admin/views/main.py:66
#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Se agregó con éxito %(name)s \"%(obj)s\"."
-
-#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr "Puede modificarlo nuevamente abajo."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Agregar usuario"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "Cambio de contraseña exitoso"
-
-#: contrib/admin/views/auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr "Cambiar contraseña: %s"
-
-#: contrib/admin/views/decorators.py:11 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Por favor introduzca un nombre de usuario y una contraseña correctos. Note "
-"que ambos campos son sensibles a mayúsculas/minúsculas."
-
-#: contrib/admin/views/decorators.py:63
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Por favor, identifíquese de nuevo porque su sesión ha caducado. No se "
-"preocupe: se ha guardado su envío."
-
-#: contrib/admin/views/decorators.py:70
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Parece que su navegador no está configurado para aceptar cookies. Actívelas "
-"por favor, recargue esta página, e inténtelo de nuevo."
-
-#: contrib/admin/views/decorators.py:84
-msgid "Usernames cannot contain the '@' character."
-msgstr "Los nombres de usuario no pueden contener el carácter '@'."
+msgid "Select %s"
+msgstr "Seleccione %s"
-#: contrib/admin/views/decorators.py:86
+#: contrib/admin/views/main.py:66
#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"Su dirección de correo no es su nombre de usuario. Intente nuevamente usando "
-"'%s'."
+msgid "Select %s to change"
+msgstr "Seleccione %s a modificar"
-#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
+#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
+#: contrib/admindocs/views.py:57
msgid "tag:"
msgstr "etiqueta:"
-#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
+#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
+#: contrib/admindocs/views.py:91
msgid "filter:"
msgstr "filtrar:"
-#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
+#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
+#: contrib/admindocs/views.py:157
msgid "view:"
msgstr "ver:"
-#: contrib/admin/views/doc.py:166
+#: contrib/admindocs/views.py:187
#, python-format
msgid "App %r not found"
msgstr "Aplicación %r no encontrada"
-#: contrib/admin/views/doc.py:173
+#: contrib/admindocs/views.py:194
#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Modelo %(name)r no encontrado en aplicación %(label)r"
+msgid "Model %(model_name)r not found in app %(app_label)r"
+msgstr "Modelo %(model_name)r no encontrado en aplicación %(app_label)r"
-#: contrib/admin/views/doc.py:185
+#: contrib/admindocs/views.py:206
#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "el objeto `%(label)s.%(type)s` relacionado"
+msgid "the related `%(app_label)s.%(data_type)s` object"
+msgstr "el objeto `%(app_label)s.%(data_type)s` relacionado"
-#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226
+#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
+#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
msgid "model:"
msgstr "modelo:"
-#: contrib/admin/views/doc.py:216
+#: contrib/admindocs/views.py:237
#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "objetos `%(label)s.%(name)s` relacionados"
+msgid "related `%(app_label)s.%(object_name)s` objects"
+msgstr "objetos `%(app_label)s.%(object_name)s` relacionados"
-#: contrib/admin/views/doc.py:221
+#: contrib/admindocs/views.py:242
#, python-format
msgid "all %s"
msgstr "todos los %s"
-#: contrib/admin/views/doc.py:226
+#: contrib/admindocs/views.py:247
#, python-format
msgid "number of %s"
msgstr "número de %s"
-#: contrib/admin/views/doc.py:231
+#: contrib/admindocs/views.py:253
#, python-format
msgid "Fields on %s objects"
msgstr "Campos en objetos %s"
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315
+#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
+#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
+#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
msgid "Integer"
msgstr "Entero"
-#: contrib/admin/views/doc.py:294
+#: contrib/admindocs/views.py:318
msgid "Boolean (Either True or False)"
msgstr "Booleano (Verdadero o Falso)"
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314
+#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
#, python-format
msgid "String (up to %(max_length)s)"
msgstr "Cadena (máximo %(max_length)s)"
-#: contrib/admin/views/doc.py:296
+#: contrib/admindocs/views.py:320
msgid "Comma-separated integers"
msgstr "Enteros separados por comas"
-#: contrib/admin/views/doc.py:297
+#: contrib/admindocs/views.py:321
msgid "Date (without time)"
msgstr "Fecha (sin hora)"
-#: contrib/admin/views/doc.py:298
+#: contrib/admindocs/views.py:322
msgid "Date (with time)"
msgstr "Fecha (con hora)"
-#: contrib/admin/views/doc.py:299
+#: contrib/admindocs/views.py:323
msgid "Decimal number"
msgstr "Número decimal"
-#: contrib/admin/views/doc.py:300
+#: contrib/admindocs/views.py:324
msgid "E-mail address"
msgstr "Dirección de correo electrónico"
-#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
+#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
+#: contrib/admindocs/views.py:329
msgid "File path"
msgstr "Ruta de archivo"
-#: contrib/admin/views/doc.py:303
+#: contrib/admindocs/views.py:327
msgid "Floating point number"
msgstr "Número de punto flotante"
-#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89
+#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
msgid "IP address"
msgstr "Dirección IP"
-#: contrib/admin/views/doc.py:309
+#: contrib/admindocs/views.py:333
msgid "Boolean (Either True, False or None)"
msgstr "Booleano (Verdadero, Falso o Nulo)"
-#: contrib/admin/views/doc.py:310
+#: contrib/admindocs/views.py:334
msgid "Relation to parent model"
msgstr "Relación con el modelo padre"
-#: contrib/admin/views/doc.py:311
+#: contrib/admindocs/views.py:335
msgid "Phone number"
msgstr "Número de teléfono"
-#: contrib/admin/views/doc.py:316
+#: contrib/admindocs/views.py:340
msgid "Text"
msgstr "Texto"
-#: contrib/admin/views/doc.py:317
+#: contrib/admindocs/views.py:341
msgid "Time"
msgstr "Hora"
-#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:7
+#: contrib/admindocs/views.py:342 contrib/flatpages/models.py:8
msgid "URL"
msgstr "URL"
-#: contrib/admin/views/doc.py:319
+#: contrib/admindocs/views.py:343
msgid "U.S. state (two uppercase letters)"
msgstr "Estado de los EE.UU. (dos letras mayúsculas)"
-#: contrib/admin/views/doc.py:320
+#: contrib/admindocs/views.py:344
msgid "XML text"
msgstr "Texto XML"
-#: contrib/admin/views/doc.py:346
+#: contrib/admindocs/views.py:370
#, python-format
msgid "%s does not appear to be a urlpattern object"
msgstr "%s no parece ser un objeto urlpattern"
-#: contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr "Administración de sitio"
-
-#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "Puede agregar otro %s abajo."
-
-#: contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "Agregar %s"
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "Agregado %s."
-
-#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348 core/validators.py:283
-#: db/models/manipulators.py:309
-msgid "and"
-msgstr "y"
+#: contrib/auth/admin.py:17
+msgid "Personal info"
+msgstr "Información personal"
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "Modifica %s."
+#: contrib/auth/admin.py:18
+msgid "Permissions"
+msgstr "Permisos"
-#: contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "Eliminó %s."
+#: contrib/auth/admin.py:19
+msgid "Important dates"
+msgstr "Fechas importantes"
-#: contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr "No ha modificado ningún campo."
+#: contrib/auth/admin.py:20
+msgid "Groups"
+msgstr "Grupos"
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Se modificó con éxito %(name)s \"%(obj)s\"."
+#: contrib/auth/admin.py:47
+msgid "Add user"
+msgstr "Agregar usuario"
-#: contrib/admin/views/main.py:362
-#, python-format
+#: contrib/auth/forms.py:14 contrib/auth/models.py:134
msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
msgstr ""
-"Se agregó con éxito %(name)s \"%(obj)s\". Puede modificarlo nuevamente abajo."
-
-#: contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
-
-#: contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Uno o más %(fieldname)s en %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Uno o más %(fieldname)s en %(name)s:"
-
-#: contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Se eliminó con éxito %(name)s \"%(obj)s\"."
-
-#: contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr "¿Está seguro?"
-
-#: contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "Historia de modificaciones: %s"
+"Obligatorio. Longitud máxima 30 caracteres alfanuméricos (letras, dígitos y "
+"guiones bajos)."
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "Seleccione %s"
+#: contrib/auth/forms.py:15 core/validators.py:72
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Este valor debe contener sólo letras, números y guiones bajos."
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "Seleccione %s a modificar"
+#: contrib/auth/forms.py:17
+msgid "Password confirmation"
+msgstr "Confirmación de contraseña"
-#: contrib/admin/views/main.py:784
-msgid "Database error"
-msgstr "Error de base de datos"
+#: contrib/auth/forms.py:29
+msgid "A user with that username already exists."
+msgstr "Ya existe un usuario con ese nombre."
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
+#: contrib/auth/forms.py:35 contrib/auth/forms.py:154
+#: contrib/auth/forms.py:179
msgid "The two password fields didn't match."
msgstr "Los dos campos de contraseñas no coinciden entre si."
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Ya existe un usuario con ese nombre."
+#: contrib/auth/forms.py:73 contrib/comments/views/comments.py:58
+msgid "This account is inactive."
+msgstr "Esta cuenta está inactiva"
-#: contrib/auth/forms.py:53
+#: contrib/auth/forms.py:78 contrib/comments/views/comments.py:49
msgid ""
"Your Web browser doesn't appear to have cookies enabled. Cookies are "
"required for logging in."
msgstr ""
-"Su navegador Web aparenta no tener cookies activas. Las cookies son un "
-"requerimiento para poder ingresar."
+"Su navegador Web aparenta no estar configurado para aceptar cookies. Las "
+"cookies son un requerimiento para poder ingresar."
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Esta cuenta está inactiva"
+#: contrib/auth/forms.py:91
+msgid "E-mail"
+msgstr "Correo electrónico"
-#: contrib/auth/forms.py:84
+#: contrib/auth/forms.py:100
msgid ""
"That e-mail address doesn't have an associated user account. Are you sure "
"you've registered?"
@@ -1097,16 +1153,24 @@ msgstr ""
"Esa dirección de e-mail no está asociada a ninguna cuenta de usuario. ¿Está "
"seguro de que ya se ha registrado?"
-#: contrib/auth/forms.py:107
+#: contrib/auth/forms.py:125
#, python-format
msgid "Password reset on %s"
msgstr "Reinicialización de contraseña en %s"
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Los dos campos 'nueva contraseña' no coinciden entre si."
+#: contrib/auth/forms.py:132
+msgid "Old password"
+msgstr "Contraseña antigua"
+
+#: contrib/auth/forms.py:133
+msgid "New password"
+msgstr "Contraseña nueva"
+
+#: contrib/auth/forms.py:134
+msgid "New password confirmation"
+msgstr "Confirmación de contraseña nueva"
-#: contrib/auth/forms.py:124
+#: contrib/auth/forms.py:146
msgid "Your old password was entered incorrectly. Please enter it again."
msgstr ""
"La antigua contraseña introducida es incorrecta. Por favor introdúzcala "
@@ -1132,39 +1196,31 @@ msgstr "permisos"
msgid "group"
msgstr "grupo"
-#: contrib/auth/models.py:98 contrib/auth/models.py:141
+#: contrib/auth/models.py:98 contrib/auth/models.py:144
msgid "groups"
msgstr "grupos"
-#: contrib/auth/models.py:131
+#: contrib/auth/models.py:134
msgid "username"
msgstr "nombre de usuario"
-#: contrib/auth/models.py:131
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Requerido. Longitud máxima 30 caracteres alfanuméricos (letras, dígitos y "
-"guiones bajos)."
-
-#: contrib/auth/models.py:132
+#: contrib/auth/models.py:135
msgid "first name"
msgstr "nombre"
-#: contrib/auth/models.py:133
+#: contrib/auth/models.py:136
msgid "last name"
msgstr "apellido"
-#: contrib/auth/models.py:134
+#: contrib/auth/models.py:137
msgid "e-mail address"
-msgstr "dirección de correo"
+msgstr "dirección de correo electrónico"
-#: contrib/auth/models.py:135
+#: contrib/auth/models.py:138
msgid "password"
msgstr "contraseña"
-#: contrib/auth/models.py:135
+#: contrib/auth/models.py:138
msgid ""
"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
"password form</a>."
@@ -1172,47 +1228,47 @@ msgstr ""
"Use '[algo]$[salt]$[hexdigest]' o use el <a href=\"password/\">formulario de "
"cambio de contraseña</a>."
-#: contrib/auth/models.py:136
+#: contrib/auth/models.py:139
msgid "staff status"
msgstr "es staff"
-#: contrib/auth/models.py:136
+#: contrib/auth/models.py:139
msgid "Designates whether the user can log into this admin site."
msgstr "Indica si el usuario puede ingresar a este sitio de administración."
-#: contrib/auth/models.py:137
+#: contrib/auth/models.py:140
msgid "active"
msgstr "activo"
-#: contrib/auth/models.py:137
+#: contrib/auth/models.py:140
msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
+"Designates whether this user should be treated as active. Unselect this "
"instead of deleting accounts."
msgstr ""
-"Indica si el usuario puede ingresar al sitio de administración Django. "
-"Desactive este campo en lugar de eliminar usuarios."
+"Indica si el usuario debe ser tratado como un usuario activo. Desactive este "
+"campo en lugar de eliminar usuarios."
-#: contrib/auth/models.py:138
+#: contrib/auth/models.py:141
msgid "superuser status"
msgstr "es superusuario"
-#: contrib/auth/models.py:138
+#: contrib/auth/models.py:141
msgid ""
"Designates that this user has all permissions without explicitly assigning "
"them."
msgstr ""
-"Indica que este usuario posee todos los permisos, sin que sea necesario "
+"Indica que este usuario posee todos los permisos sin que sea necesario "
"asignarle los mismos en forma explícita."
-#: contrib/auth/models.py:139
+#: contrib/auth/models.py:142
msgid "last login"
msgstr "último ingreso"
-#: contrib/auth/models.py:140
+#: contrib/auth/models.py:143
msgid "date joined"
msgstr "fecha de creación"
-#: contrib/auth/models.py:142
+#: contrib/auth/models.py:145
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
@@ -1220,43 +1276,36 @@ msgstr ""
"Además de los permisos asignados manualmente, este usuario también poseerá "
"todos los permisos de los grupos a los que pertenezca."
-#: contrib/auth/models.py:143
+#: contrib/auth/models.py:146
msgid "user permissions"
msgstr "permisos de usuario"
-#: contrib/auth/models.py:147
+#: contrib/auth/models.py:150
msgid "user"
msgstr "usuario"
-#: contrib/auth/models.py:148
+#: contrib/auth/models.py:151
msgid "users"
msgstr "usuarios"
-#: contrib/auth/models.py:154
-msgid "Personal info"
-msgstr "Información personal"
-
-#: contrib/auth/models.py:155
-msgid "Permissions"
-msgstr "Permisos"
-
-#: contrib/auth/models.py:156
-msgid "Important dates"
-msgstr "Fechas importantes"
-
-#: contrib/auth/models.py:157
-msgid "Groups"
-msgstr "Grupos"
-
-#: contrib/auth/models.py:316
+#: contrib/auth/models.py:306
msgid "message"
msgstr "mensaje"
-#: contrib/auth/views.py:47
+#: contrib/auth/views.py:49
msgid "Logged out"
msgstr "Sesión cerrada"
-#: contrib/comments/models.py:71 contrib/comments/models.py:176
+#: contrib/auth/views.py:116
+msgid "Password changed successfully."
+msgstr "Cambio de contraseña exitoso"
+
+#: contrib/auth/views.py:122
+#, python-format
+msgid "Change password: %s"
+msgstr "Cambiar contraseña: %s"
+
+#: contrib/comments/models.py:71 contrib/comments/models.py:164
msgid "object ID"
msgstr "ID de objeto"
@@ -1265,7 +1314,7 @@ msgid "headline"
msgstr "encabezado"
#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:177
+#: contrib/comments/models.py:165
msgid "comment"
msgstr "comentario"
@@ -1305,11 +1354,11 @@ msgstr "calificación 8"
msgid "is valid rating"
msgstr "es calificación válida"
-#: contrib/comments/models.py:87 contrib/comments/models.py:179
+#: contrib/comments/models.py:87 contrib/comments/models.py:167
msgid "date/time submitted"
msgstr "fecha/hora de envío"
-#: contrib/comments/models.py:88 contrib/comments/models.py:180
+#: contrib/comments/models.py:88 contrib/comments/models.py:168
msgid "is public"
msgstr "es público"
@@ -1329,11 +1378,11 @@ msgstr ""
msgid "comments"
msgstr "comentarios"
-#: contrib/comments/models.py:140 contrib/comments/models.py:222
+#: contrib/comments/models.py:128 contrib/comments/models.py:199
msgid "Content object"
msgstr "Objeto contenido"
-#: contrib/comments/models.py:168
+#: contrib/comments/models.py:156
#, python-format
msgid ""
"Posted by %(user)s at %(date)s\n"
@@ -1348,48 +1397,48 @@ msgstr ""
"\n"
"http://%(domain)s%(url)s"
-#: contrib/comments/models.py:178
+#: contrib/comments/models.py:166
msgid "person's name"
msgstr "nombre de la persona"
-#: contrib/comments/models.py:181
+#: contrib/comments/models.py:169
msgid "ip address"
msgstr "dirección ip"
-#: contrib/comments/models.py:183
+#: contrib/comments/models.py:171
msgid "approved by staff"
msgstr "aprobado por el staff"
-#: contrib/comments/models.py:187
+#: contrib/comments/models.py:175
msgid "free comment"
msgstr "comentario libre"
-#: contrib/comments/models.py:188
+#: contrib/comments/models.py:176
msgid "free comments"
msgstr "comentarios libres"
-#: contrib/comments/models.py:250
+#: contrib/comments/models.py:227
msgid "score"
msgstr "puntuación"
-#: contrib/comments/models.py:251
+#: contrib/comments/models.py:228
msgid "score date"
msgstr "fecha de la puntuación"
-#: contrib/comments/models.py:255
+#: contrib/comments/models.py:232
msgid "karma score"
msgstr "punto karma"
-#: contrib/comments/models.py:256
+#: contrib/comments/models.py:233
msgid "karma scores"
msgstr "puntos karma"
-#: contrib/comments/models.py:260
+#: contrib/comments/models.py:237
#, python-format
msgid "%(score)d rating by %(user)s"
msgstr "puntuado %(score)d por %(user)s"
-#: contrib/comments/models.py:277
+#: contrib/comments/models.py:254
#, python-format
msgid ""
"This comment was flagged by %(user)s:\n"
@@ -1400,36 +1449,36 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/models.py:285
+#: contrib/comments/models.py:262
msgid "flag date"
msgstr "fecha de la marca"
-#: contrib/comments/models.py:289
+#: contrib/comments/models.py:266
msgid "user flag"
msgstr "marca de usuario"
-#: contrib/comments/models.py:290
+#: contrib/comments/models.py:267
msgid "user flags"
msgstr "marcas de usuario"
-#: contrib/comments/models.py:294
+#: contrib/comments/models.py:271
#, python-format
msgid "Flag by %r"
msgstr "Marca de %r"
-#: contrib/comments/models.py:300
+#: contrib/comments/models.py:277
msgid "deletion date"
msgstr "fecha de eliminación"
-#: contrib/comments/models.py:303
+#: contrib/comments/models.py:280
msgid "moderator deletion"
-msgstr "Eliminación por moderador"
+msgstr "eliminación por moderador"
-#: contrib/comments/models.py:304
+#: contrib/comments/models.py:281
msgid "moderator deletions"
msgstr "eliminaciones por moderador"
-#: contrib/comments/models.py:308
+#: contrib/comments/models.py:285
#, python-format
msgid "Moderator deletion by %r"
msgstr "Eliminación del moderador %r"
@@ -1445,7 +1494,7 @@ msgstr "Calificaciones"
#: contrib/comments/templates/comments/form.html:12
#: contrib/comments/templates/comments/form.html:23
msgid "Required"
-msgstr "Requerido"
+msgstr "Obligatorio"
#: contrib/comments/templates/comments/form.html:12
#: contrib/comments/templates/comments/form.html:23
@@ -1470,12 +1519,12 @@ msgstr "Previsualizar comentario"
msgid "Your name:"
msgstr "Su nombre:"
-#: contrib/comments/views/comments.py:28
+#: contrib/comments/views/comments.py:76
msgid ""
"This rating is required because you've entered at least one other rating."
msgstr "Se precisa esta puntuación porque ha introducido al menos otra más."
-#: contrib/comments/views/comments.py:112
+#: contrib/comments/views/comments.py:160
#, python-format
msgid ""
"This comment was posted by a user who has posted fewer than %(count)s "
@@ -1498,7 +1547,7 @@ msgstr[1] ""
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:117
+#: contrib/comments/views/comments.py:165
#, python-format
msgid ""
"This comment was posted by a sketchy user:\n"
@@ -1509,25 +1558,25 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
+#: contrib/comments/views/comments.py:238
+#: contrib/comments/views/comments.py:331
msgid "Only POSTs are allowed"
msgstr "Sólo se admiten POSTs"
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
+#: contrib/comments/views/comments.py:242
+#: contrib/comments/views/comments.py:335
msgid "One or more of the required fields wasn't submitted"
-msgstr "No se proporcionó uno o más de los siguientes campos requeridos"
+msgstr "No se proporcionó uno o más de los campos obligatorios"
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
+#: contrib/comments/views/comments.py:246
+#: contrib/comments/views/comments.py:337
msgid "Somebody tampered with the comment form (security violation)"
msgstr ""
"Alguien está jugando con el formulario de comentarios (violación de "
"seguridad)"
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
+#: contrib/comments/views/comments.py:256
+#: contrib/comments/views/comments.py:343
msgid ""
"The comment form had an invalid 'target' parameter -- the object ID was "
"invalid"
@@ -1535,10 +1584,10 @@ msgstr ""
"El formulario de comentarios tiene un parámetro 'target' no válido (el ID de "
"objeto era inválido)"
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
+#: contrib/comments/views/comments.py:307
+#: contrib/comments/views/comments.py:372
msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "El formulario de comentario no proporcionó 'previsualizar' ni 'enviar'"
+msgstr "El formulario de comentarios no proporcionó 'previsualizar' ni 'enviar'"
#: contrib/comments/views/karma.py:21
msgid "Anonymous users cannot vote"
@@ -1552,42 +1601,46 @@ msgstr "ID de comentario no válido"
msgid "No voting for yourself"
msgstr "Ud. no puede votarse a sí mismo"
-#: contrib/contenttypes/models.py:37
+#: contrib/contenttypes/models.py:67
msgid "python model class name"
msgstr "nombre de la clase python del modelo"
-#: contrib/contenttypes/models.py:40
+#: contrib/contenttypes/models.py:71
msgid "content type"
msgstr "tipo de contenido"
-#: contrib/contenttypes/models.py:41
+#: contrib/contenttypes/models.py:72
msgid "content types"
msgstr "tipos de contenido"
-#: contrib/flatpages/models.py:8
+#: contrib/flatpages/admin.py:9
+msgid "Advanced options"
+msgstr "Opciones avanzadas"
+
+#: contrib/flatpages/models.py:9
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
"Ejemplo: '/about/contact/'. Asegúrese de usar barras '/' al principio y al "
"final."
-#: contrib/flatpages/models.py:9
+#: contrib/flatpages/models.py:10
msgid "title"
msgstr "título"
-#: contrib/flatpages/models.py:10
+#: contrib/flatpages/models.py:11
msgid "content"
msgstr "contenido"
-#: contrib/flatpages/models.py:11
+#: contrib/flatpages/models.py:12
msgid "enable comments"
msgstr "activar comentarios"
-#: contrib/flatpages/models.py:12
+#: contrib/flatpages/models.py:13
msgid "template name"
msgstr "nombre de plantilla"
-#: contrib/flatpages/models.py:13
+#: contrib/flatpages/models.py:14
msgid ""
"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
"will use 'flatpages/default.html'."
@@ -1595,126 +1648,126 @@ msgstr ""
"Ejemplo: 'flatpages/contact_page.html'. Si no lo proporciona, el sistema "
"usará 'flatpages/default.html'."
-#: contrib/flatpages/models.py:14
+#: contrib/flatpages/models.py:15
msgid "registration required"
msgstr "debe estar registrado"
-#: contrib/flatpages/models.py:14
+#: contrib/flatpages/models.py:15
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr "Si está marcado, sólo los usuarios registrados podrán ver la página."
-#: contrib/flatpages/models.py:18
+#: contrib/flatpages/models.py:20
msgid "flat page"
msgstr "página estática"
-#: contrib/flatpages/models.py:19
+#: contrib/flatpages/models.py:21
msgid "flat pages"
msgstr "páginas estáticas"
-#: contrib/humanize/templatetags/humanize.py:20
+#: contrib/humanize/templatetags/humanize.py:19
msgid "th"
msgstr "th"
-#: contrib/humanize/templatetags/humanize.py:20
+#: contrib/humanize/templatetags/humanize.py:19
msgid "st"
msgstr "st"
-#: contrib/humanize/templatetags/humanize.py:20
+#: contrib/humanize/templatetags/humanize.py:19
msgid "nd"
msgstr "nd"
-#: contrib/humanize/templatetags/humanize.py:20
+#: contrib/humanize/templatetags/humanize.py:19
msgid "rd"
msgstr "rd"
-#: contrib/humanize/templatetags/humanize.py:52
+#: contrib/humanize/templatetags/humanize.py:51
#, python-format
msgid "%(value).1f million"
msgid_plural "%(value).1f million"
msgstr[0] "%(value).1f millón"
msgstr[1] "%(value).1f millones"
-#: contrib/humanize/templatetags/humanize.py:55
+#: contrib/humanize/templatetags/humanize.py:54
#, python-format
msgid "%(value).1f billion"
msgid_plural "%(value).1f billion"
msgstr[0] "%(value).1f millardo"
msgstr[1] "%(value).1f millardos"
-#: contrib/humanize/templatetags/humanize.py:58
+#: contrib/humanize/templatetags/humanize.py:57
#, python-format
msgid "%(value).1f trillion"
msgid_plural "%(value).1f trillion"
msgstr[0] "%(value).1f billón"
msgstr[1] "%(value).1f billones"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "one"
msgstr "uno"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "two"
msgstr "dos"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "three"
msgstr "tres"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "four"
msgstr "cuatro"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "five"
msgstr "cinco"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "six"
msgstr "seis"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "seven"
msgstr "siete"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "eight"
msgstr "ocho"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "nine"
msgstr "nueve"
-#: contrib/humanize/templatetags/humanize.py:94
+#: contrib/humanize/templatetags/humanize.py:93
msgid "today"
msgstr "hoy"
-#: contrib/humanize/templatetags/humanize.py:96
+#: contrib/humanize/templatetags/humanize.py:95
msgid "tomorrow"
msgstr "mañana"
-#: contrib/humanize/templatetags/humanize.py:98
+#: contrib/humanize/templatetags/humanize.py:97
msgid "yesterday"
msgstr "ayer"
-#: contrib/localflavor/ar/forms.py:28
+#: contrib/localflavor/ar/forms.py:27
msgid "Enter a postal code in the format NNNN or ANNNNAAA."
msgstr "Introduzca un código postal en formato NNNN o ANNNNAAA."
-#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:96
+#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
#: contrib/localflavor/pe/forms.py:51
msgid "This field requires only numbers."
msgstr "Este campo permite sólo valores numéricos."
-#: contrib/localflavor/ar/forms.py:51
+#: contrib/localflavor/ar/forms.py:50
msgid "This field requires 7 or 8 digits."
msgstr "Este campo requiere 7 u 8 dígitos."
-#: contrib/localflavor/ar/forms.py:80
+#: contrib/localflavor/ar/forms.py:79
msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
msgstr "Introduzca un CUIT válido en formato XX-XXXXXXXX-X o XXXXXXXXXXX."
-#: contrib/localflavor/ar/forms.py:81
+#: contrib/localflavor/ar/forms.py:80
msgid "Invalid CUIT."
msgstr "CUIT inválido."
@@ -1869,7 +1922,7 @@ msgstr "Zurich"
#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12
msgid "Enter a zip code in the format XXXX."
-msgstr "Introduzca un zip code en formato XXX."
+msgstr "Introduzca un zip code en formato XXXX."
#: contrib/localflavor/ch/forms.py:64
msgid ""
@@ -2311,7 +2364,7 @@ msgstr "Introduzca un número de Seguridad Social válido."
msgid "Enter a valid VAT number."
msgstr "Introduzca un número VAT válido."
-#: contrib/localflavor/jp/forms.py:19
+#: contrib/localflavor/jp/forms.py:17
msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
msgstr "Introduzca un código postal en formato XXXXXX o XXX-XXXX."
@@ -3156,7 +3209,7 @@ msgstr "region Zilina"
#: contrib/localflavor/uk/forms.py:21
msgid "Enter a valid postcode."
-msgstr "Introduzca un postcde válido."
+msgstr "Introduzca un postcode válido."
#: contrib/localflavor/uk/uk_regions.py:11
msgid "Bedfordshire"
@@ -3327,10 +3380,13 @@ msgid "County Armagh"
msgstr "County Armagh"
#: contrib/localflavor/uk/uk_regions.py:57
-#: contrib/localflavor/uk/uk_regions.py:58
msgid "County Down"
msgstr "County Down"
+#: contrib/localflavor/uk/uk_regions.py:58
+msgid "County Fermanagh"
+msgstr "County Fermarmagh"
+
#: contrib/localflavor/uk/uk_regions.py:59
msgid "County Londonderry"
msgstr "County Londonderry"
@@ -3496,7 +3552,7 @@ msgid ""
"This should be an absolute path, excluding the domain name. Example: '/"
"events/search/'."
msgstr ""
-"Esta ruta debería ser absoluta, excluyendo el nombre de dominio. Ejemplo: '/"
+"Esta ruta debe ser absoluta, excluyendo el nombre de dominio. Ejemplo: '/"
"events/search/'."
#: contrib/redirects/models.py:9
@@ -3519,7 +3575,7 @@ msgstr "redirección"
msgid "redirects"
msgstr "redirecciones"
-#: contrib/sessions/models.py:46
+#: contrib/sessions/models.py:45
msgid "session key"
msgstr "clave de sesión"
@@ -3547,18 +3603,14 @@ msgstr "nombre de dominio"
msgid "display name"
msgstr "nombre para visualizar"
-#: contrib/sites/models.py:37
+#: contrib/sites/models.py:38
msgid "site"
msgstr "sitio"
-#: contrib/sites/models.py:38
+#: contrib/sites/models.py:39
msgid "sites"
msgstr "sitios"
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Este valor debe contener sólo letras, números y guiones bajos."
-
#: core/validators.py:76
msgid ""
"This value must contain only letters, numbers, underscores, dashes or "
@@ -3604,7 +3656,7 @@ msgstr "No se admiten caracteres no numéricos."
msgid "This value can't be comprised solely of digits."
msgstr "Este valor no puede estar formado sólo por dígitos."
-#: core/validators.py:128 newforms/fields.py:151
+#: core/validators.py:128 forms/fields.py:157
msgid "Enter a whole number."
msgstr "Introduzca un número entero."
@@ -3613,37 +3665,32 @@ msgid "Only alphabetical characters are allowed here."
msgstr "Sólo se admiten caracteres alfabéticos."
#: core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr "El año debe ser 1900 o posterior."
-
-#: core/validators.py:151
#, python-format
msgid "Invalid date: %s"
msgstr "Fecha no válida: %s"
-#: core/validators.py:156 db/models/fields/__init__.py:509
+#: core/validators.py:152 db/models/fields/__init__.py:550
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Introduzca una fecha válida en formato AAAA-MM-DD."
-#: core/validators.py:161
+#: core/validators.py:157
msgid "Enter a valid time in HH:MM format."
msgstr "Introduzca una hora válida en formato HH:MM."
-#: core/validators.py:165 db/models/fields/__init__.py:583
+#: core/validators.py:161 db/models/fields/__init__.py:631
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Introduzca una fecha/hora válida en formato AAAA-MM-DD HH:MM."
-#: core/validators.py:170 newforms/fields.py:402
+#: core/validators.py:166 forms/fields.py:408
msgid "Enter a valid e-mail address."
msgstr "Introduzca una dirección de correo electrónico válida"
-#: core/validators.py:182 core/validators.py:474 newforms/fields.py:432
-#: oldforms/__init__.py:687
+#: core/validators.py:178 core/validators.py:470 forms/fields.py:426
msgid "No file was submitted. Check the encoding type on the form."
msgstr ""
"No se envió un archivo. Verifique el tipo de codificación en el formulario."
-#: core/validators.py:193 newforms/fields.py:458
+#: core/validators.py:189 forms/fields.py:466
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
@@ -3651,28 +3698,28 @@ msgstr ""
"Envíe una imagen válida. El archivo que ha enviado no era una imagen o se "
"trataba de una imagen corrupta."
-#: core/validators.py:200
+#: core/validators.py:196
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "La URL %s no apunta a una imagen válida."
-#: core/validators.py:204
+#: core/validators.py:200
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
"Los números telefónicos deben respetar el formato XXX-XXX-XXXX. \"%s\" no es "
"válido."
-#: core/validators.py:212
+#: core/validators.py:208
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "La URL %s no apunta a un vídeo QuickTime válido."
+msgstr "La URL %s no apunta a un video QuickTime válido."
-#: core/validators.py:216
+#: core/validators.py:212
msgid "A valid URL is required."
msgstr "Se precisa una URL válida."
-#: core/validators.py:230
+#: core/validators.py:226
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@@ -3681,84 +3728,84 @@ msgstr ""
"Se precisa HTML válido. Los errores específicos son:\n"
"%s"
-#: core/validators.py:237
+#: core/validators.py:233
#, python-format
msgid "Badly formed XML: %s"
msgstr "XML mal formado: %s"
-#: core/validators.py:254
+#: core/validators.py:250
#, python-format
msgid "Invalid URL: %s"
msgstr "URL no válida: %s"
-#: core/validators.py:259 core/validators.py:261
+#: core/validators.py:255 core/validators.py:257
#, python-format
msgid "The URL %s is a broken link."
msgstr "La URL %s es un enlace roto."
-#: core/validators.py:267
+#: core/validators.py:263
msgid "Enter a valid U.S. state abbreviation."
msgstr "Introduzca una abreviatura válida de estado de los EE.UU."
-#: core/validators.py:281
+#: core/validators.py:277
#, 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] "¡Vigila tu boca! Aquí no admitimos la palabra %s."
msgstr[1] "¡Vigila tu boca! Aquí no admitimos las palabras %s."
-#: core/validators.py:288
+#: core/validators.py:284
#, python-format
msgid "This field must match the '%s' field."
msgstr "Este campo debe concordar con el campo '%s'."
-#: core/validators.py:307
+#: core/validators.py:303
msgid "Please enter something for at least one field."
msgstr "Por favor, introduzca algo en al menos un campo."
-#: core/validators.py:316 core/validators.py:327
+#: core/validators.py:312 core/validators.py:323
msgid "Please enter both fields or leave them both empty."
msgstr "Por favor, rellene ambos campos o deje ambos vacíos."
-#: core/validators.py:335
+#: core/validators.py:331
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "Se debe proporcionar este campo si %(field)s es %(value)s"
-#: core/validators.py:348
+#: core/validators.py:344
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "Se debe proporcionar este campo si %(field)s no es %(value)s"
-#: core/validators.py:367
+#: core/validators.py:363
msgid "Duplicate values are not allowed."
msgstr "No se admiten valores duplicados."
-#: core/validators.py:382
+#: core/validators.py:378
#, python-format
msgid "This value must be between %(lower)s and %(upper)s."
msgstr "Este valor debe estar entre %(lower)s y %(upper)s."
-#: core/validators.py:384
+#: core/validators.py:380
#, python-format
msgid "This value must be at least %s."
msgstr "Este valor debe ser al menos %s."
-#: core/validators.py:386
+#: core/validators.py:382
#, python-format
msgid "This value must be no more than %s."
msgstr "Este valor debe ser no mayor que %s."
-#: core/validators.py:427
+#: core/validators.py:423
#, python-format
msgid "This value must be a power of %s."
msgstr "Este valor debe ser una potencia de %s."
-#: core/validators.py:437
+#: core/validators.py:433
msgid "Please enter a valid decimal number."
msgstr "Por favor, introduzca un número decimal válido."
-#: core/validators.py:444
+#: core/validators.py:440
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@@ -3770,7 +3817,7 @@ msgstr[1] ""
"Por favor, introduzca un número decimal válido con un maximo de %s dígitos "
"en total."
-#: core/validators.py:447
+#: core/validators.py:443
#, python-format
msgid ""
"Please enter a valid decimal number with a whole part of at most %s digit."
@@ -3783,7 +3830,7 @@ msgstr[1] ""
"Por favor, introduzca un número decimal válido con un máximo de %s dígitos "
"enteros."
-#: core/validators.py:450
+#: core/validators.py:446
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@@ -3795,36 +3842,36 @@ msgstr[1] ""
"Por favor, introduzca un número decimal válido con un máximo de %s "
"posiciones decimales."
-#: core/validators.py:458
+#: core/validators.py:454
msgid "Please enter a valid floating point number."
msgstr "Por favor introduzca un número de punto flotante válido."
-#: core/validators.py:467
+#: core/validators.py:463
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr ""
"Asegúrese de que el archivo que envía es de un tamaño mínimo de %s bytes."
-#: core/validators.py:468
+#: core/validators.py:464
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr ""
"Asegúrese de que el archivo que envía es de un tamaño máximo de %s bytes."
-#: core/validators.py:485
+#: core/validators.py:481
msgid "The format for this field is wrong."
msgstr "El formato de este campo es incorrecto."
-#: core/validators.py:500
+#: core/validators.py:496
msgid "This field is invalid."
msgstr "Este campo no es válido."
-#: core/validators.py:536
+#: core/validators.py:532
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "No se pudo obtener nada de %s."
-#: core/validators.py:539
+#: core/validators.py:535
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
@@ -3832,7 +3879,7 @@ msgstr ""
"La URL %(url)s devolvió la cabecera Content-Type '%(contenttype)s', que no "
"es válida."
-#: core/validators.py:572
+#: core/validators.py:568
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@@ -3841,7 +3888,7 @@ msgstr ""
"Por favor, cierre la etiqueta %(tag)s de la línea %(line)s. (La línea "
"empieza con \"%(start)s\".)"
-#: core/validators.py:576
+#: core/validators.py:572
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
@@ -3850,7 +3897,7 @@ msgstr ""
"Parte del texto que comienza en la línea %(line)s no está permitido en ese "
"contexto. (La línea empieza con \"%(start)s\".)"
-#: core/validators.py:581
+#: core/validators.py:577
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@@ -3859,7 +3906,7 @@ msgstr ""
"El \"%(attr)s\" de la línea %(line)s no es un atributo válido. (La línea "
"empieza con \"%(start)s\".)"
-#: core/validators.py:586
+#: core/validators.py:582
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@@ -3868,7 +3915,7 @@ msgstr ""
"La \"<%(tag)s>\" de la línea %(line)s no es una etiqueta válida. (La línea "
"empieza con \"%(start)s\".)"
-#: core/validators.py:590
+#: core/validators.py:586
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
@@ -3877,7 +3924,7 @@ msgstr ""
"A una etiqueta de la línea %(line)s le faltan uno o más atributos "
"requeridos. (La línea empieza con \"%(start)s\".)"
-#: core/validators.py:595
+#: core/validators.py:591
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
@@ -3886,63 +3933,59 @@ msgstr ""
"El atributo \"%(attr)s\" de la línea %(line)s tiene un valor que no es "
"válido. (La línea empieza con \"%(start)s\".)"
-#: db/models/manipulators.py:308
+#: db/models/manipulators.py:304
#, python-format
msgid "%(object)s with this %(type)s already exists for the given %(field)s."
msgstr "Ya existe un(a) %(object)s con este/a %(type)s para %(field)s."
-#: db/models/fields/__init__.py:52
+#: db/models/fields/__init__.py:47
#, python-format
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "Ya existe %(optname)s con este %(fieldname)s."
-#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:318
-#: db/models/fields/__init__.py:735 db/models/fields/__init__.py:746
-#: newforms/fields.py:45 oldforms/__init__.py:374
+#: db/models/fields/__init__.py:175 db/models/fields/__init__.py:343
+#: db/models/fields/__init__.py:793 db/models/fields/__init__.py:804
+#: forms/fields.py:51 oldforms/__init__.py:374
msgid "This field is required."
msgstr "Este campo es obligatorio."
-#: db/models/fields/__init__.py:418
+#: db/models/fields/__init__.py:450
msgid "This value must be an integer."
msgstr "Este valor debe ser un número entero."
-#: db/models/fields/__init__.py:454
+#: db/models/fields/__init__.py:489
msgid "This value must be either True or False."
msgstr "Este valor debe ser True o False."
-#: db/models/fields/__init__.py:475
+#: db/models/fields/__init__.py:513
msgid "This field cannot be null."
msgstr "Este campo no puede ser nulo."
-#: db/models/fields/__init__.py:644
+#: db/models/fields/__init__.py:700
msgid "This value must be a decimal number."
msgstr "Este valor debe ser un número decimal."
-#: db/models/fields/__init__.py:755
+#: db/models/fields/__init__.py:813
msgid "Enter a valid filename."
msgstr "Introduzca un nombre de archivo válido."
-#: db/models/fields/__init__.py:908
+#: db/models/fields/__init__.py:1004
msgid "This value must be either None, True or False."
msgstr "Este valor debe ser None, True o False."
-#: db/models/fields/related.py:55
+#: db/models/fields/related.py:94
#, python-format
msgid "Please enter a valid %s."
msgstr "Por favor, introduzca un %s válido."
-#: db/models/fields/related.py:658
-msgid "Separate multiple IDs with commas."
-msgstr "Separe múltiples identificadores con comas."
-
-#: db/models/fields/related.py:660
+#: db/models/fields/related.py:729
msgid ""
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
"Mantenga presionada \"Control\" (\"Command\" en una Mac) para seleccionar "
"más de uno."
-#: db/models/fields/related.py:707
+#: db/models/fields/related.py:773
#, python-format
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
msgid_plural ""
@@ -3954,103 +3997,103 @@ msgstr[1] ""
"Por favor, introduzca IDs de %(self)s válidos. Los valores %(value)r no son "
"válidos."
-#: newforms/fields.py:46
+#: forms/fields.py:52
msgid "Enter a valid value."
msgstr "Introduzca un valor válido."
-#: newforms/fields.py:123
+#: forms/fields.py:129
#, python-format
msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
msgstr ""
"Asegúrese de que este valor tenga como máximo %(max)d caracteres (tiene %"
"(length)d)."
-#: newforms/fields.py:124
+#: forms/fields.py:130
#, python-format
msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
msgstr ""
"Asegúrese de que este valor tenga al menos %(min)d caracteres (tiene %"
"(length)d)."
-#: newforms/fields.py:152 newforms/fields.py:181 newforms/fields.py:210
+#: forms/fields.py:158 forms/fields.py:187 forms/fields.py:216
#, python-format
msgid "Ensure this value is less than or equal to %s."
msgstr "Asegúrese de que este valor sea menor o igual a %s."
-#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211
+#: forms/fields.py:159 forms/fields.py:188 forms/fields.py:217
#, python-format
msgid "Ensure this value is greater than or equal to %s."
msgstr "Asegúrese de que este valor sea mayor o igual a %s."
-#: newforms/fields.py:180 newforms/fields.py:209
+#: forms/fields.py:186 forms/fields.py:215
msgid "Enter a number."
msgstr "Introduzca un número."
-#: newforms/fields.py:212
+#: forms/fields.py:218
#, python-format
msgid "Ensure that there are no more than %s digits in total."
msgstr "Asegúrese de que no existan en total mas de %s dígitos."
-#: newforms/fields.py:213
+#: forms/fields.py:219
#, python-format
msgid "Ensure that there are no more than %s decimal places."
msgstr "Asegúrese de que no existan mas de %s lugares decimales."
-#: newforms/fields.py:214
+#: forms/fields.py:220
#, python-format
msgid "Ensure that there are no more than %s digits before the decimal point."
msgstr "Asegúrese de que no existan mas de %s dígitos antes del punto decimal."
-#: newforms/fields.py:262 newforms/fields.py:723
+#: forms/fields.py:268 forms/fields.py:790
msgid "Enter a valid date."
msgstr "Introduzca una fecha válida."
-#: newforms/fields.py:295 newforms/fields.py:724
+#: forms/fields.py:301 forms/fields.py:791
msgid "Enter a valid time."
msgstr "Introduzca una hora válida."
-#: newforms/fields.py:334
+#: forms/fields.py:340
msgid "Enter a valid date/time."
msgstr "Introduzca una fecha/hora válida."
-#: newforms/fields.py:433
+#: forms/fields.py:427
msgid "No file was submitted."
msgstr "No se envió ningún archivo."
-#: newforms/fields.py:434 oldforms/__init__.py:689
+#: forms/fields.py:428 oldforms/__init__.py:693
msgid "The submitted file is empty."
msgstr "El archivo enviado está vacío."
-#: newforms/fields.py:496
+#: forms/fields.py:522
msgid "Enter a valid URL."
msgstr "Introduzca una URL válida."
-#: newforms/fields.py:497
+#: forms/fields.py:523
msgid "This URL appears to be a broken link."
msgstr "La URL parece ser un enlace roto."
-#: newforms/fields.py:559 newforms/models.py:317
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Seleccione una opción válida. Esa opción no es una de las opciones "
-"disponibles."
-
-#: newforms/fields.py:598
+#: forms/fields.py:588 forms/fields.py:639
#, python-format
msgid "Select a valid choice. %(value)s is not one of the available choices."
msgstr ""
"Seleccione una opción válida. %(value)s no es una de las opciones "
"disponibles."
-#: newforms/fields.py:599 newforms/fields.py:661 newforms/models.py:377
+#: forms/fields.py:640 forms/fields.py:701 forms/models.py:581
msgid "Enter a list of values."
msgstr "Introduzca una lista de valores."
-#: newforms/fields.py:752
+#: forms/fields.py:819
msgid "Enter a valid IPv4 address."
msgstr "Introduzca una dirección IPv4 válida"
-#: newforms/models.py:378
+#: forms/models.py:514
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr ""
+"Seleccione una opción válida. Esa opción no es una de las opciones "
+"disponibles."
+
+#: forms/models.py:582
#, python-format
msgid "Select a valid choice. %s is not one of the available choices."
msgstr ""
@@ -4072,40 +4115,40 @@ msgstr "No se permiten saltos de línea."
msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
msgstr "Seleccione una opción válida; '%(data)s' no está en %(choices)s."
-#: oldforms/__init__.py:745
+#: oldforms/__init__.py:754
msgid "Enter a whole number between -32,768 and 32,767."
msgstr "Introduzca un número entero entre -32.768 y 32.767."
-#: oldforms/__init__.py:755
+#: oldforms/__init__.py:764
msgid "Enter a positive number."
msgstr "Introduzca un número positivo."
-#: oldforms/__init__.py:765
+#: oldforms/__init__.py:774
msgid "Enter a whole number between 0 and 32,767."
msgstr "Introduzca un número entero entre 0 y 32.767."
-#: template/defaultfilters.py:691
+#: template/defaultfilters.py:698
msgid "yes,no,maybe"
msgstr "si,no,talvez"
-#: template/defaultfilters.py:722
+#: template/defaultfilters.py:729
#, python-format
msgid "%(size)d byte"
msgid_plural "%(size)d bytes"
msgstr[0] "%(size)d byte"
msgstr[1] "%(size)d bytes"
-#: template/defaultfilters.py:724
+#: template/defaultfilters.py:731
#, python-format
msgid "%.1f KB"
msgstr "%.1f KB"
-#: template/defaultfilters.py:726
+#: template/defaultfilters.py:733
#, python-format
msgid "%.1f MB"
msgstr "%.1f MB"
-#: template/defaultfilters.py:727
+#: template/defaultfilters.py:734
#, python-format
msgid "%.1f GB"
msgstr "%.1f GB"
@@ -4314,7 +4357,7 @@ msgstr "Nov."
msgid "Dec."
msgstr "Dic."
-#: utils/text.py:127
+#: utils/text.py:128
msgid "or"
msgstr "o"
@@ -4368,41 +4411,68 @@ msgstr "%(number)d %(type)s"
msgid ", %(number)d %(type)s"
msgstr ", %(number)d %(type)s"
-#: utils/translation/trans_real.py:399
+#: utils/translation/trans_real.py:412
msgid "DATE_FORMAT"
msgstr "j N Y"
-#: utils/translation/trans_real.py:400
+#: utils/translation/trans_real.py:413
msgid "DATETIME_FORMAT"
msgstr "j N Y P"
-#: utils/translation/trans_real.py:401
+#: utils/translation/trans_real.py:414
msgid "TIME_FORMAT"
msgstr "P"
-#: utils/translation/trans_real.py:417
+#: utils/translation/trans_real.py:430
msgid "YEAR_MONTH_FORMAT"
msgstr "F Y"
-#: utils/translation/trans_real.py:418
+#: utils/translation/trans_real.py:431
msgid "MONTH_DAY_FORMAT"
msgstr "j \\de F"
-#: views/generic/create_update.py:43
+#: views/generic/create_update.py:129
#, python-format
msgid "The %(verbose_name)s was created successfully."
msgstr "Se creó con éxito %(verbose_name)s."
-#: views/generic/create_update.py:117
+#: views/generic/create_update.py:172
#, python-format
msgid "The %(verbose_name)s was updated successfully."
msgstr "Se actualizó con éxito %(verbose_name)s."
-#: views/generic/create_update.py:184
+#: views/generic/create_update.py:214
#, python-format
msgid "The %(verbose_name)s was deleted."
msgstr "Se eliminó %(verbose_name)s."
+#~ msgid "Year must be 1900 or later."
+#~ msgstr "El año debe ser 1900 o posterior."
+
+#~ msgid "Gaeilge"
+#~ msgstr "Irlandés"
+
+#~ msgid "Brazilian"
+#~ msgstr "Brasileño"
+
+#~ msgid "Ordering"
+#~ msgstr "Ordenación"
+
+#~ msgid "Order:"
+#~ msgstr "Orden:"
+
+#~ msgid "Added %s."
+#~ msgstr "Agregado %s."
+
+#~ msgid "Deleted %s."
+#~ msgstr "Eliminó %s."
+
+#~ msgid "The two 'new password' fields didn't match."
+#~ msgstr "Los dos campos 'nueva contraseña' no coinciden entre si."
+
+#~ msgid "Separate multiple IDs with commas."
+#~ msgstr "Separe múltiples identificadores con comas."
+
#~ msgid ""
#~ "Enter a postcode. A space is required between the two postcode parts."
#~ msgstr ""
diff --git a/django/conf/locale/fr/LC_MESSAGES/django.mo b/django/conf/locale/fr/LC_MESSAGES/django.mo
index 60b760f7a8..7db70d5cd9 100644
--- a/django/conf/locale/fr/LC_MESSAGES/django.mo
+++ b/django/conf/locale/fr/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/fr/LC_MESSAGES/django.po b/django/conf/locale/fr/LC_MESSAGES/django.po
index 3e133e8ca7..7a88f84ec7 100644
--- a/django/conf/locale/fr/LC_MESSAGES/django.po
+++ b/django/conf/locale/fr/LC_MESSAGES/django.po
@@ -1,7 +1,7 @@
# translation of django.po to french
# This file is distributed under the same license as the PACKAGE package.
# Copyright (C) 2008 THE PACKAGE'S COPYRIGHT HOLDER.
-#
+#
msgid ""
msgstr ""
"Project-Id-Version: Django\n"
@@ -1066,7 +1066,7 @@ msgstr "Sélectionnez %s"
#: contrib/admin/views/main.py:583
#, python-format
msgid "Select %s to change"
-msgstr "Sélectionnez %s pour changer"
+msgstr "Sélectionnez l'objet %s à changer"
#: contrib/admin/views/main.py:784
msgid "Database error"
@@ -4093,107 +4093,107 @@ msgstr "midi"
#: utils/dates.py:6
msgid "Monday"
-msgstr "Lundi"
+msgstr "lundi"
#: utils/dates.py:6
msgid "Tuesday"
-msgstr "Mardi"
+msgstr "mardi"
#: utils/dates.py:6
msgid "Wednesday"
-msgstr "Mercredi"
+msgstr "mercredi"
#: utils/dates.py:6
msgid "Thursday"
-msgstr "Jeudi"
+msgstr "jeudi"
#: utils/dates.py:6
msgid "Friday"
-msgstr "Vendredi"
+msgstr "vendredi"
#: utils/dates.py:7
msgid "Saturday"
-msgstr "Samedi"
+msgstr "samedi"
#: utils/dates.py:7
msgid "Sunday"
-msgstr "Dimanche"
+msgstr "dimanche"
#: utils/dates.py:10
msgid "Mon"
-msgstr "Lun"
+msgstr "lun"
#: utils/dates.py:10
msgid "Tue"
-msgstr "Mar"
+msgstr "mar"
#: utils/dates.py:10
msgid "Wed"
-msgstr "Mer"
+msgstr "mer"
#: utils/dates.py:10
msgid "Thu"
-msgstr "Jeu"
+msgstr "jeu"
#: utils/dates.py:10
msgid "Fri"
-msgstr "Ven"
+msgstr "ven"
#: utils/dates.py:11
msgid "Sat"
-msgstr "Sam"
+msgstr "sam"
#: utils/dates.py:11
msgid "Sun"
-msgstr "Dim"
+msgstr "dim"
#: utils/dates.py:18
msgid "January"
-msgstr "Janvier"
+msgstr "janvier"
#: utils/dates.py:18
msgid "February"
-msgstr "Février"
+msgstr "février"
#: utils/dates.py:18 utils/dates.py:31
msgid "March"
-msgstr "Mars"
+msgstr "mars"
#: utils/dates.py:18 utils/dates.py:31
msgid "April"
-msgstr "Avril"
+msgstr "avril"
#: utils/dates.py:18 utils/dates.py:31
msgid "May"
-msgstr "Mai"
+msgstr "mai"
#: utils/dates.py:18 utils/dates.py:31
msgid "June"
-msgstr "Juin"
+msgstr "juin"
#: utils/dates.py:19 utils/dates.py:31
msgid "July"
-msgstr "Juillet"
+msgstr "juillet"
#: utils/dates.py:19
msgid "August"
-msgstr "Août"
+msgstr "août"
#: utils/dates.py:19
msgid "September"
-msgstr "Septembre"
+msgstr "septembre"
#: utils/dates.py:19
msgid "October"
-msgstr "Octobre"
+msgstr "octobre"
#: utils/dates.py:19
msgid "November"
-msgstr "Novembre"
+msgstr "novembre"
#: utils/dates.py:20
msgid "December"
-msgstr "Décembre"
+msgstr "décembre"
#: utils/dates.py:23
msgid "jan"
@@ -4245,31 +4245,31 @@ msgstr "déc"
#: utils/dates.py:31
msgid "Jan."
-msgstr "Jan."
+msgstr "jan."
#: utils/dates.py:31
msgid "Feb."
-msgstr "Fév."
+msgstr "fév."
#: utils/dates.py:32
msgid "Aug."
-msgstr "Août"
+msgstr "août"
#: utils/dates.py:32
msgid "Sept."
-msgstr "Sept."
+msgstr "sept."
#: utils/dates.py:32
msgid "Oct."
-msgstr "Oct."
+msgstr "oct."
#: utils/dates.py:32
msgid "Nov."
-msgstr "Nov."
+msgstr "nov."
#: utils/dates.py:32
msgid "Dec."
-msgstr "Déc."
+msgstr "déc."
#: utils/text.py:127
msgid "or"
diff --git a/django/conf/locale/it/LC_MESSAGES/django.mo b/django/conf/locale/it/LC_MESSAGES/django.mo
index e96764a0a8..b04a32eed4 100644
--- a/django/conf/locale/it/LC_MESSAGES/django.mo
+++ b/django/conf/locale/it/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/it/LC_MESSAGES/django.po b/django/conf/locale/it/LC_MESSAGES/django.po
index 4e87ad549d..4c08a43929 100644
--- a/django/conf/locale/it/LC_MESSAGES/django.po
+++ b/django/conf/locale/it/LC_MESSAGES/django.po
@@ -1,13 +1,14 @@
# translation of django.po to Italiano
+# Nicola Larosa <nico@tekNico.net>, 2008.
# Italian translation of Django.
# Copyright (C) 2006 the Lawrence Journal-World
# This file is distributed under the same license as the Django package.
msgid ""
msgstr ""
-"Project-Id-Version: Django vSVN\n"
+"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-07-12 20:30+0200\n"
-"PO-Revision-Date: 2008-07-12 20:45+0200\n"
+"POT-Creation-Date: 2008-08-04 11:52+0200\n"
+"PO-Revision-Date: 2008-08-04 12:08+0200\n"
"Last-Translator: Nicola Larosa <nico@tekNico.net>\n"
"Language-Team: Italiano\n"
"MIME-Version: 1.0\n"
@@ -246,49 +247,208 @@ msgstr "Questo mese"
msgid "This year"
msgstr "Quest'anno"
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
+#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
+#: oldforms/__init__.py:588
msgid "Yes"
msgstr "Sì"
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
+#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
+#: oldforms/__init__.py:588
msgid "No"
msgstr "No"
-#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231
-#: oldforms/__init__.py:592
+#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
+#: oldforms/__init__.py:588
msgid "Unknown"
msgstr "Sconosciuto"
-#: contrib/admin/models.py:18
+#: contrib/admin/models.py:19
msgid "action time"
msgstr "momento dell'azione"
-#: contrib/admin/models.py:21
+#: contrib/admin/models.py:22
msgid "object id"
msgstr "id dell'oggetto"
-#: contrib/admin/models.py:22
+#: contrib/admin/models.py:23
msgid "object repr"
msgstr "rappresentazione dell'oggetto"
-#: contrib/admin/models.py:23
+#: contrib/admin/models.py:24
msgid "action flag"
msgstr "flag di azione"
-#: contrib/admin/models.py:24
+#: contrib/admin/models.py:25
msgid "change message"
msgstr "messaggio di modifica"
-#: contrib/admin/models.py:27
+#: contrib/admin/models.py:28
msgid "log entry"
msgstr "voce di log"
-#: contrib/admin/models.py:28
+#: contrib/admin/models.py:29
msgid "log entries"
msgstr "voci di log"
+#: contrib/admin/options.py:143 contrib/admin/options.py:181
+msgid "None"
+msgstr "Nessuno"
+
+#: contrib/admin/options.py:361 contrib/auth/admin.py:37
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "Il %(name)s \"%(obj)s\" è stato aggiunto correttamente."
+
+#: contrib/admin/options.py:365 contrib/admin/options.py:433
+#: contrib/auth/admin.py:42
+msgid "You may edit it again below."
+msgstr "È possibile modificarlo nuovamente qui sotto."
+
+#: contrib/admin/options.py:375 contrib/admin/options.py:442
+#, python-format
+msgid "You may add another %s below."
+msgstr "È possibile aggiungere un altro %s qui sotto."
+
+#: contrib/admin/options.py:409
+#, python-format
+msgid "Changed %s."
+msgstr "%s modificato."
+
+#: contrib/admin/options.py:409 contrib/admin/options.py:419
+#: core/validators.py:279 db/models/manipulators.py:305
+msgid "and"
+msgstr "e"
+
+#: contrib/admin/options.py:414
+#, python-format
+msgid "Added %(name)s \"%(object)s\"."
+msgstr "Aggiunti %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:418
+#, python-format
+msgid "Changed %(list)s for %(name)s \"%(object)s\"."
+msgstr "Cambiati %(list)s per %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:423
+#, python-format
+msgid "Deleted %(name)s \"%(object)s\"."
+msgstr "Cancellati %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:428
+msgid "No fields changed."
+msgstr "Nessun campo modificato."
+
+#: contrib/admin/options.py:431
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr "Il %(name)s \"%(obj)s\" è stato modificato correttamente."
+
+#: contrib/admin/options.py:439
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr ""
+"Il %(name)s \"%(obj)s\" è stato aggiunto correttamente. È possibile "
+"modificarlo nuovamente qui sotto."
+
+#: contrib/admin/options.py:520
+#, python-format
+msgid "Add %s"
+msgstr "Aggiungi %s"
+
+#: contrib/admin/options.py:582
+#, python-format
+msgid "Change %s"
+msgstr "Modifica %s"
+
+#: contrib/admin/options.py:612
+msgid "Database error"
+msgstr "Errore nel database"
+
+#: contrib/admin/options.py:661
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "Lo %(name)s \"%(obj)s\" è stato cancellato correttamente."
+
+#: contrib/admin/options.py:667
+msgid "Are you sure?"
+msgstr "Sei sicuro?"
+
+#: contrib/admin/options.py:694
+#, python-format
+msgid "Change history: %s"
+msgstr "Tracciato delle modifiche: %s"
+
+#: contrib/admin/sites.py:17 contrib/admin/views/decorators.py:16
+#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56
+msgid ""
+"Please enter a correct username and password. Note that both fields are case-"
+"sensitive."
+msgstr ""
+"Inserire nome utente e password corretti. Entrambi i campi sono case "
+"sensitive."
+
+#: contrib/admin/sites.py:229 contrib/admin/views/decorators.py:68
+msgid ""
+"Please log in again, because your session has expired. Don't worry: Your "
+"submission has been saved."
+msgstr ""
+"La sessione è scaduta: occorre accedere nuovamente. I dati inseriti sono "
+"stati comunque salvati."
+
+#: contrib/admin/sites.py:236 contrib/admin/views/decorators.py:75
+msgid ""
+"Looks like your browser isn't configured to accept cookies. Please enable "
+"cookies, reload this page, and try again."
+msgstr ""
+"Il browser non sembra configurato per accettare i cookie. Una volta "
+"abilitati, ricaricare la pagina e riprovare."
+
+#: contrib/admin/sites.py:250 contrib/admin/sites.py:256
+#: contrib/admin/views/decorators.py:92
+msgid "Usernames cannot contain the '@' character."
+msgstr "I nomi utente non possono contenere il carattere '@'."
+
+#: contrib/admin/sites.py:253 contrib/admin/views/decorators.py:88
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr "Il nome utente non è costituito dall'indirizzo e-mail. Provare con '%s'."
+
+#: contrib/admin/sites.py:321
+msgid "Site administration"
+msgstr "Amministrazione sito"
+
+#: contrib/admin/sites.py:343 contrib/admin/templates/admin/login.html:27
+#: contrib/admin/templates/registration/password_reset_complete.html:14
+#: contrib/admin/views/decorators.py:30
+msgid "Log in"
+msgstr "Accedi"
+
+#: contrib/admin/util.py:126
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr "Uno o più %(fieldname)s in %(name)s: %(obj)s"
+
+#: contrib/admin/util.py:131
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "Uno o più %(fieldname)s in %(name)s:"
+
+#: contrib/admin/widgets.py:65
+msgid "Date:"
+msgstr "Data:"
+
+#: contrib/admin/widgets.py:65
+msgid "Time:"
+msgstr "Ora:"
+
+#: contrib/admin/widgets.py:89
+msgid "Currently:"
+msgstr "Attualmente:"
+
+#: contrib/admin/widgets.py:89
+msgid "Change:"
+msgstr "Modifica:"
+
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
@@ -299,17 +459,19 @@ msgid "We're sorry, but the requested page could not be found."
msgstr "Spiacenti, ma la pagina richiesta non è stata trovata."
#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/change_form.html:17
+#: contrib/admin/templates/admin/change_list.html:8
+#: contrib/admin/templates/admin/delete_confirmation.html:6
#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/auth/user/change_password.html:10
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_reset_complete.html:4
+#: contrib/admin/templates/registration/password_reset_confirm.html:4
#: contrib/admin/templates/registration/password_reset_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
msgid "Home"
@@ -335,22 +497,28 @@ msgstr ""
"Si è verificato un errore. È stato riportato agli amministratori del sito "
"via e-mail e verrà corretto a breve. Grazie per la tua pazienza."
-#: contrib/admin/templates/admin/base.html:26
+#: contrib/admin/templates/admin/base.html:25
msgid "Welcome,"
msgstr "Benvenuto,"
-#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin/base.html:25
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
msgid "Documentation"
msgstr "Documentazione"
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/auth/user/change_password.html:13
+#: 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
msgid "Change password"
msgstr "Cambia la password"
-#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
#: contrib/comments/templates/comments/form.html:6
msgid "Log out"
msgstr "Esci"
@@ -363,46 +531,43 @@ msgstr "Amministrazione sito Django"
msgid "Django administration"
msgstr "Amministrazione Django"
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
+#: contrib/admin/templates/admin/change_form.html:19
+#: contrib/admin/templates/admin/index.html:29
msgid "Add"
msgstr "Aggiungi"
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
+#: contrib/admin/templates/admin/change_form.html:26
+#: contrib/admin/templates/admin/object_history.html:5
msgid "History"
msgstr "Storia"
-#: contrib/admin/templates/admin/change_form.html:21
+#: contrib/admin/templates/admin/change_form.html:27
msgid "View on site"
msgstr "Vedi sul sito"
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
+#: contrib/admin/templates/admin/change_form.html:37
+#: contrib/admin/templates/admin/auth/user/change_password.html:22
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] "Correggere l'errore qui sotto."
msgstr[1] "Correggere gli errori qui sotto."
-#: contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr "Ordinamento"
-
-#: contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr "Ordine:"
-
-#: contrib/admin/templates/admin/change_list.html:11
+#: contrib/admin/templates/admin/change_list.html:16
#, python-format
msgid "Add %(name)s"
msgstr "Aggiungi %(name)s"
-#: contrib/admin/templates/admin/delete_confirmation.html:8
+#: contrib/admin/templates/admin/change_list.html:26
+msgid "Filter"
+msgstr "Filtro"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:9
#: contrib/admin/templates/admin/submit_line.html:3
+#: contrib/admin/templates/admin/edit_inline/tabular.html:15
msgid "Delete"
msgstr "Cancella"
-#: contrib/admin/templates/admin/delete_confirmation.html:13
+#: contrib/admin/templates/admin/delete_confirmation.html:15
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
@@ -413,7 +578,7 @@ msgstr ""
"cancellazione di oggetti collegati, ma questo account non ha i permessi per "
"cancellare gli oggetti dei seguenti tipi:"
-#: contrib/admin/templates/admin/delete_confirmation.html:20
+#: contrib/admin/templates/admin/delete_confirmation.html:22
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
@@ -422,7 +587,7 @@ msgstr ""
"Sei sicuro di voler cancellare gli %(object_name)s \"%(escaped_object)s\"? "
"Tutti i seguenti oggetti collegati saranno cancellati:"
-#: contrib/admin/templates/admin/delete_confirmation.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:27
msgid "Yes, I'm sure"
msgstr "Sì, sono sicuro"
@@ -431,41 +596,37 @@ msgstr "Sì, sono sicuro"
msgid " By %(filter_title)s "
msgstr " Per %(filter_title)s "
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filtro"
-
-#: contrib/admin/templates/admin/index.html:17
+#: contrib/admin/templates/admin/index.html:18
#, python-format
msgid "Models available in the %(name)s application."
msgstr "Modelli disponibili nell'applicazione %(name)s."
-#: contrib/admin/templates/admin/index.html:18
+#: contrib/admin/templates/admin/index.html:19
#, python-format
msgid "%(name)s"
msgstr "%(name)s"
-#: contrib/admin/templates/admin/index.html:34
+#: contrib/admin/templates/admin/index.html:35
msgid "Change"
msgstr "Modifica"
-#: contrib/admin/templates/admin/index.html:44
+#: contrib/admin/templates/admin/index.html:45
msgid "You don't have permission to edit anything."
msgstr "Non hai i privilegi per modificare alcunché."
-#: contrib/admin/templates/admin/index.html:52
+#: contrib/admin/templates/admin/index.html:53
msgid "Recent Actions"
msgstr "Azioni Recenti"
-#: contrib/admin/templates/admin/index.html:53
+#: contrib/admin/templates/admin/index.html:54
msgid "My Actions"
msgstr "Azioni Proprie"
-#: contrib/admin/templates/admin/index.html:57
+#: contrib/admin/templates/admin/index.html:58
msgid "None available"
msgstr "Nessuno disponibile"
-#: contrib/admin/templates/admin/invalid_setup.html:8
+#: contrib/admin/templates/admin/invalid_setup.html:7
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 "
@@ -475,39 +636,34 @@ msgstr ""
"appropriate del database siano state create, e che il database sia leggibile "
"dall'utente appropriato."
-#: contrib/admin/templates/admin/login.html:17
+#: contrib/admin/templates/admin/login.html:19
#: contrib/comments/templates/comments/form.html:6
#: contrib/comments/templates/comments/form.html:8
msgid "Username:"
msgstr "Nome utente:"
-#: contrib/admin/templates/admin/login.html:20
+#: contrib/admin/templates/admin/login.html:22
#: contrib/comments/templates/comments/form.html:8
msgid "Password:"
msgstr "Password:"
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:31
-msgid "Log in"
-msgstr "Accedi"
-
-#: contrib/admin/templates/admin/object_history.html:17
+#: contrib/admin/templates/admin/object_history.html:16
msgid "Date/time"
msgstr "Data/ora"
-#: contrib/admin/templates/admin/object_history.html:18
+#: contrib/admin/templates/admin/object_history.html:17
msgid "User"
msgstr "Utente"
-#: contrib/admin/templates/admin/object_history.html:19
+#: contrib/admin/templates/admin/object_history.html:18
msgid "Action"
msgstr "Azione"
-#: contrib/admin/templates/admin/object_history.html:25
+#: contrib/admin/templates/admin/object_history.html:24
msgid "DATE_WITH_TIME_FULL"
msgstr "j F Y, H:i"
-#: contrib/admin/templates/admin/object_history.html:35
+#: contrib/admin/templates/admin/object_history.html:32
msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
@@ -559,26 +715,29 @@ msgstr ""
"Inserire innanzitutto nome utente e password. Si potrà quindi modificare le "
"altre impostazioni dell'utente."
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
+#: contrib/admin/templates/admin/auth/user/add_form.html:13
+#: contrib/auth/forms.py:14 contrib/auth/forms.py:51
msgid "Username"
msgstr "Nome utente"
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
+#: contrib/admin/templates/admin/auth/user/add_form.html:20
#: contrib/admin/templates/admin/auth/user/change_password.html:33
+#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176
msgid "Password"
msgstr "Password"
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
+#: contrib/admin/templates/admin/auth/user/add_form.html:26
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/auth/forms.py:177
msgid "Password (again)"
msgstr "Password (di nuovo)"
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/admin/templates/admin/auth/user/add_form.html:27
+#: contrib/admin/templates/admin/auth/user/change_password.html:40
msgid "Enter the same password as above, for verification."
msgstr "Inserire la stessa password inserita sopra, come verifica."
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
+#: contrib/admin/templates/admin/auth/user/change_password.html:26
#, python-format
msgid "Enter a new password for the user <strong>%(username)s</strong>."
msgstr "Inserire una nuova password per l'utente <strong>%(username)s</strong>."
@@ -663,23 +822,23 @@ msgstr "Grazie per aver speso il tuo tempo prezioso su questo sito oggi."
msgid "Log in again"
msgstr "Accedi di nuovo"
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_change_form.html:6
+#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr "Cambio password"
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "Cambio di password avvenuto correttamente"
-#: contrib/admin/templates/registration/password_change_done.html:11
+#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "La password è stata cambiata."
-#: contrib/admin/templates/registration/password_change_form.html:11
+#: 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."
@@ -687,22 +846,27 @@ msgstr ""
"Inserire la password attuale, per ragioni di sicurezza, e poi la nuova "
"password due volte, per verificare di averla scritta correttamente."
-#: contrib/admin/templates/registration/password_change_form.html:16
+#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "Password attuale:"
-#: contrib/admin/templates/registration/password_change_form.html:18
+#: contrib/admin/templates/registration/password_change_form.html:19
+#: contrib/admin/templates/registration/password_reset_confirm.html:18
msgid "New password:"
msgstr "Nuova password:"
-#: contrib/admin/templates/registration/password_change_form.html:20
+#: contrib/admin/templates/registration/password_change_form.html:21
+#: contrib/admin/templates/registration/password_reset_confirm.html:20
msgid "Confirm password:"
msgstr "Confermare la password:"
-#: contrib/admin/templates/registration/password_change_form.html:22
+#: contrib/admin/templates/registration/password_change_form.html:23
+#: contrib/admin/templates/registration/password_reset_confirm.html:21
msgid "Change my password"
msgstr "Modifica la mia password"
+#: contrib/admin/templates/registration/password_reset_complete.html:4
+#: contrib/admin/templates/registration/password_reset_confirm.html:6
#: 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
@@ -710,6 +874,39 @@ msgstr "Modifica la mia password"
msgid "Password reset"
msgstr "Reimposta la password"
+#: contrib/admin/templates/registration/password_reset_complete.html:6
+#: contrib/admin/templates/registration/password_reset_complete.html:10
+msgid "Password reset complete"
+msgstr "Password reimpostata"
+
+#: contrib/admin/templates/registration/password_reset_complete.html:12
+msgid "Your password has been set. You may go ahead and log in now."
+msgstr "La tua password è stata impostata. Ora puoi effettuare l'accesso."
+
+#: contrib/admin/templates/registration/password_reset_confirm.html:4
+msgid "Password reset confirmation"
+msgstr "Conferma reimpostazione password"
+
+#: contrib/admin/templates/registration/password_reset_confirm.html:12
+msgid "Enter new password"
+msgstr "Inserisci la nuova password"
+
+#: contrib/admin/templates/registration/password_reset_confirm.html:14
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr "Inserire la nuova password due volte, per verificare di averla scritta correttamente."
+
+#: contrib/admin/templates/registration/password_reset_confirm.html:26
+msgid "Password reset unsuccessful"
+msgstr "Password NON reimpostata"
+
+#: contrib/admin/templates/registration/password_reset_confirm.html:28
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset."
+msgstr "Il link per la reimpostazione della password non era valido, forse perché era già stato usato. Richiedi una nuova reimpostazione della password."
+
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
@@ -717,11 +914,9 @@ msgstr "Password reimpostata correttamente"
#: 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 ""
-"La nuova password è stata inviata all'indirizzo e-mail inserito. Arriverà a "
-"breve."
+"We've e-mailed you instructions for setting your password to the e-mail "
+"address you submitted. You should be receiving it shortly."
+msgstr "Abbiamo inviato le istruzioni per impostare la tua password all'indirizzo e-mail inserito. Arriverà a breve."
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
@@ -733,34 +928,27 @@ msgid "for your user account at %(site_name)s"
msgstr "per il tuo account utente su %(site_name)s"
#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "La tua nuova password è: %(new_password)s"
+msgid "Please go to the following page and choose a new password:"
+msgstr "Vai alla pagina seguente e scegli una nuova password:"
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Puoi liberamente cambiare la tua password tramite questa pagina:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
+#: contrib/admin/templates/registration/password_reset_email.html:9
msgid "Your username, in case you've forgotten:"
msgstr "Il tuo nome utente, in caso l'abbia dimenticato:"
-#: contrib/admin/templates/registration/password_reset_email.html:13
+#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Thanks for using our site!"
msgstr "Grazie per aver usato il nostro sito!"
-#: contrib/admin/templates/registration/password_reset_email.html:15
+#: contrib/admin/templates/registration/password_reset_email.html:13
#, python-format
msgid "The %(site_name)s team"
msgstr "Il team di %(site_name)s"
#: 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 ""
-"Dimenticata la password? Inserire il proprio indirizzo e-mail qui sotto: la "
-"password sarà reimpostata, e la nuova ti verrà inviata per e-mail."
+"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
+"instructions for setting a new one."
+msgstr "Dimenticata la password? Inserisci il tuo indirizzo email qui sotto, e ti invieremo per email le istruzioni per impostarne una nuova."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
@@ -770,325 +958,210 @@ msgstr "Indirizzo e-mail:"
msgid "Reset my password"
msgstr "Reimposta la mia password"
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Data:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Ora:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Attualmente:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Modifica:"
-
#: contrib/admin/templatetags/admin_list.py:257
msgid "All dates"
msgstr "Tutte le date"
-#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267
+#: contrib/admin/views/main.py:65
#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Il %(name)s \"%(obj)s\" è stato aggiunto correttamente."
-
-#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr "È possibile modificarlo nuovamente qui sotto."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Aggiungi utente"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "La password è stata cambiata correttamente."
-
-#: contrib/admin/views/auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr "Cambia la password: %s"
-
-#: contrib/admin/views/decorators.py:17 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Inserire nome utente e password corretti. Entrambi i campi sono case "
-"sensitive."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"La sessione è scaduta: occorre accedere nuovamente. I dati inseriti sono "
-"stati comunque salvati."
-
-#: contrib/admin/views/decorators.py:76
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Il browser non sembra configurato per accettare i cookie. Una volta "
-"abilitati, ricaricare la pagina e riprovare."
+msgid "Select %s"
+msgstr "Scegli %s"
-#: contrib/admin/views/decorators.py:89
+#: contrib/admin/views/main.py:65
#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Il nome utente non è costituito dall'indirizzo e-mail. Provare con '%s'."
-
-#: contrib/admin/views/decorators.py:93
-msgid "Usernames cannot contain the '@' character."
-msgstr "I nomi utente non possono contenere il carattere '@'."
+msgid "Select %s to change"
+msgstr "Scegli %s da modificare"
-#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
+#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
+#: contrib/admindocs/views.py:57
msgid "tag:"
msgstr "tag:"
-#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
+#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
+#: contrib/admindocs/views.py:91
msgid "filter:"
msgstr "filtro:"
-#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
+#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
+#: contrib/admindocs/views.py:157
msgid "view:"
msgstr "view:"
-#: contrib/admin/views/doc.py:166
+#: contrib/admindocs/views.py:187
#, python-format
msgid "App %r not found"
msgstr "Appl. %r non trovata"
-#: contrib/admin/views/doc.py:173
+#: contrib/admindocs/views.py:194
#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Modello %(name)r non trovato nell'appl. %(label)r"
+msgid "Model %(model_name)r not found in app %(app_label)r"
+msgstr "Modello %(model_name)r non trovato nell'appl. %(app_label)r"
-#: contrib/admin/views/doc.py:185
+#: contrib/admindocs/views.py:206
#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "l'oggetto `%(label)s.%(type)s` collegato"
+msgid "the related `%(app_label)s.%(data_type)s` object"
+msgstr "l'oggetto `%(app_label)s.%(data_type)s` collegato"
-#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226
+#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
+#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
msgid "model:"
msgstr "modello:"
-#: contrib/admin/views/doc.py:216
+#: contrib/admindocs/views.py:237
#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "oggetti `%(label)s.%(name)s` collegati"
+msgid "related `%(app_label)s.%(object_name)s` objects"
+msgstr "oggetti `%(app_label)s.%(object_name)s` collegati"
-#: contrib/admin/views/doc.py:221
+#: contrib/admindocs/views.py:242
#, python-format
msgid "all %s"
msgstr "tutti %s"
-#: contrib/admin/views/doc.py:226
+#: contrib/admindocs/views.py:247
#, python-format
msgid "number of %s"
msgstr "numero di %s"
-#: contrib/admin/views/doc.py:231
+#: contrib/admindocs/views.py:253
#, python-format
msgid "Fields on %s objects"
msgstr "Campi sugli oggetti %s"
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315
+#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
+#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
+#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
msgid "Integer"
msgstr "Intero"
-#: contrib/admin/views/doc.py:294
+#: contrib/admindocs/views.py:318
msgid "Boolean (Either True or False)"
msgstr "Booleano (True o False)"
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314
+#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
#, python-format
msgid "String (up to %(max_length)s)"
msgstr "Stringa (fino a %(max_length)s)"
-#: contrib/admin/views/doc.py:296
+#: contrib/admindocs/views.py:320
msgid "Comma-separated integers"
msgstr "Interi separati da virgola"
-#: contrib/admin/views/doc.py:297
+#: contrib/admindocs/views.py:321
msgid "Date (without time)"
msgstr "Data (senza ora)"
-#: contrib/admin/views/doc.py:298
+#: contrib/admindocs/views.py:322
msgid "Date (with time)"
msgstr "Data (con ora)"
-#: contrib/admin/views/doc.py:299
+#: contrib/admindocs/views.py:323
msgid "Decimal number"
msgstr "Numero decimale"
-#: contrib/admin/views/doc.py:300
+#: contrib/admindocs/views.py:324
msgid "E-mail address"
msgstr "Indirizzo e-mail"
-#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
+#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
+#: contrib/admindocs/views.py:329
msgid "File path"
msgstr "Percorso di file"
-#: contrib/admin/views/doc.py:303
+#: contrib/admindocs/views.py:327
msgid "Floating point number"
msgstr "Numero decimale"
-#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89
+#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
msgid "IP address"
msgstr "indirizzo IP"
-#: contrib/admin/views/doc.py:309
+#: contrib/admindocs/views.py:333
msgid "Boolean (Either True, False or None)"
msgstr "Booleano (True, False o None)"
-#: contrib/admin/views/doc.py:310
+#: contrib/admindocs/views.py:334
msgid "Relation to parent model"
msgstr "Collegamento a modello padre"
-#: contrib/admin/views/doc.py:311
+#: contrib/admindocs/views.py:335
msgid "Phone number"
msgstr "Numero di telefono"
-#: contrib/admin/views/doc.py:316
+#: contrib/admindocs/views.py:340
msgid "Text"
msgstr "Testo"
-#: contrib/admin/views/doc.py:317
+#: contrib/admindocs/views.py:341
msgid "Time"
msgstr "Ora"
-#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:8
+#: contrib/admindocs/views.py:342 contrib/flatpages/models.py:8
msgid "URL"
msgstr "URL"
-#: contrib/admin/views/doc.py:319
+#: contrib/admindocs/views.py:343
msgid "U.S. state (two uppercase letters)"
msgstr "Stato USA (due lettere maiuscole)"
-#: contrib/admin/views/doc.py:320
+#: contrib/admindocs/views.py:344
msgid "XML text"
msgstr "Testo XML"
-#: contrib/admin/views/doc.py:346
+#: contrib/admindocs/views.py:370
#, python-format
msgid "%s does not appear to be a urlpattern object"
msgstr "%s non sembra essere un oggetto urlpattern"
-#: contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr "Amministrazione sito"
-
-#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "È possibile aggiungere un altro %s qui sotto."
-
-#: contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "Aggiungi %s"
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "%s aggiunto."
-
-#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348 core/validators.py:283
-#: db/models/manipulators.py:309
-msgid "and"
-msgstr "e"
+#: contrib/auth/admin.py:17
+msgid "Personal info"
+msgstr "Informazioni personali"
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "%s modificato."
+#: contrib/auth/admin.py:18
+msgid "Permissions"
+msgstr "Permessi"
-#: contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "%s cancellato."
+#: contrib/auth/admin.py:19
+msgid "Important dates"
+msgstr "Date importanti"
-#: contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr "Nessun campo modificato."
+#: contrib/auth/admin.py:20
+msgid "Groups"
+msgstr "Gruppi"
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Il %(name)s \"%(obj)s\" è stato modificato correttamente."
+#: contrib/auth/admin.py:47
+msgid "Add user"
+msgstr "Aggiungi utente"
-#: contrib/admin/views/main.py:362
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+#: contrib/auth/forms.py:15 contrib/auth/models.py:134
+msgid ""
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
msgstr ""
-"Il %(name)s \"%(obj)s\" è stato aggiunto correttamente. È possibile "
-"modificarlo nuovamente qui sotto."
-
-#: contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "Modifica %s"
-
-#: contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Uno o più %(fieldname)s in %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Uno o più %(fieldname)s in %(name)s:"
-
-#: contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Lo %(name)s \"%(obj)s\" è stato cancellato correttamente."
-
-#: contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr "Sei sicuro?"
-
-#: contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "Tracciato delle modifiche: %s"
+"Obbligatorio. 30 caratteri o meno. Solo caratteri alfanumerici (lettere, "
+"cifre e sottolineati)."
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "Scegli %s"
+#: contrib/auth/forms.py:16 core/validators.py:72
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Questo valore può contenere solo lettere, cifre e sottolineati."
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "Scegli %s da modificare"
+#: contrib/auth/forms.py:18
+msgid "Password confirmation"
+msgstr "Conferma password"
-#: contrib/admin/views/main.py:765
-msgid "Database error"
-msgstr "Errore nel database"
+#: contrib/auth/forms.py:30
+msgid "A user with that username already exists."
+msgstr "Un utente con questo nome·è già presente."
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
+#: contrib/auth/forms.py:36 contrib/auth/forms.py:146
+#: contrib/auth/forms.py:188
msgid "The two password fields didn't match."
msgstr "I due campi password non corrispondono."
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Un utente con questo nome·è già presente."
+#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58
+msgid "This account is inactive."
+msgstr "Questo account non è attivo."
-#: contrib/auth/forms.py:53
+#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49
msgid ""
"Your Web browser doesn't appear to have cookies enabled. Cookies are "
"required for logging in."
@@ -1096,11 +1169,11 @@ msgstr ""
"Il browser web sembra non avere i cookie abilitati. I cookie sono necessari "
"per poter accedere."
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Questo account non è attivo."
+#: contrib/auth/forms.py:92
+msgid "E-mail"
+msgstr "E-mail"
-#: contrib/auth/forms.py:84
+#: contrib/auth/forms.py:101
msgid ""
"That e-mail address doesn't have an associated user account. Are you sure "
"you've registered?"
@@ -1108,16 +1181,24 @@ msgstr ""
"Questo indirizzo email non è associato ad alcun account utente. Sei sicuro "
"di esserti registrato?"
-#: contrib/auth/forms.py:107
+#: contrib/auth/forms.py:126
#, python-format
msgid "Password reset on %s"
msgstr "Password reimpostata su %s"
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "I due campi 'nuova password' non corrispondono."
+#: contrib/auth/forms.py:134
+msgid "New password"
+msgstr "Nuova password"
-#: contrib/auth/forms.py:124
+#: contrib/auth/forms.py:135
+msgid "New password confirmation"
+msgstr "Conferma nuova password"
+
+#: contrib/auth/forms.py:160
+msgid "Old password"
+msgstr "Password attuale"
+
+#: contrib/auth/forms.py:168
msgid "Your old password was entered incorrectly. Please enter it again."
msgstr "La password attuale non è stata inserita correttamente: va inserita di nuovo."
@@ -1141,39 +1222,31 @@ msgstr "permessi"
msgid "group"
msgstr "gruppo"
-#: contrib/auth/models.py:98 contrib/auth/models.py:148
+#: contrib/auth/models.py:98 contrib/auth/models.py:144
msgid "groups"
msgstr "gruppi"
-#: contrib/auth/models.py:138
+#: contrib/auth/models.py:134
msgid "username"
msgstr "nome utente"
-#: contrib/auth/models.py:138
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Obbligatorio. 30 caratteri o meno. Solo caratteri alfanumerici (lettere, "
-"cifre e sottolineati)."
-
-#: contrib/auth/models.py:139
+#: contrib/auth/models.py:135
msgid "first name"
msgstr "nome"
-#: contrib/auth/models.py:140
+#: contrib/auth/models.py:136
msgid "last name"
msgstr "cognome"
-#: contrib/auth/models.py:141
+#: contrib/auth/models.py:137
msgid "e-mail address"
msgstr "indirizzo e-mail"
-#: contrib/auth/models.py:142
+#: contrib/auth/models.py:138
msgid "password"
msgstr "password"
-#: contrib/auth/models.py:142
+#: contrib/auth/models.py:138
msgid ""
"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
"password form</a>."
@@ -1181,31 +1254,31 @@ msgstr ""
"Usare '[algo]$[salt]$[hexdigest]' oppure la <a href=\"password/\">maschera "
"di cambio password</a>."
-#: contrib/auth/models.py:143
+#: contrib/auth/models.py:139
msgid "staff status"
msgstr "privilegi di staff"
-#: contrib/auth/models.py:143
+#: contrib/auth/models.py:139
msgid "Designates whether the user can log into this admin site."
msgstr "Indica se l'utente può accedere a questo sito di amministrazione."
-#: contrib/auth/models.py:144
+#: contrib/auth/models.py:140
msgid "active"
msgstr "attivo"
-#: contrib/auth/models.py:144
+#: contrib/auth/models.py:140
msgid ""
"Designates whether this user should be treated as active. Unselect this "
"instead of deleting accounts."
msgstr ""
-"Indica se l'utente debba essere considerato attivo. Deselezionare "
-"qui, piuttosto che cancellare gli account."
+"Indica se l'utente debba essere considerato attivo. Deselezionare qui, "
+"piuttosto che cancellare gli account."
-#: contrib/auth/models.py:145
+#: contrib/auth/models.py:141
msgid "superuser status"
msgstr "privilegi di superutente"
-#: contrib/auth/models.py:145
+#: contrib/auth/models.py:141
msgid ""
"Designates that this user has all permissions without explicitly assigning "
"them."
@@ -1213,15 +1286,15 @@ msgstr ""
"Indica che l'utente ha tutti i privilegi, senza che siano stati assegnati "
"esplicitamente."
-#: contrib/auth/models.py:146
+#: contrib/auth/models.py:142
msgid "last login"
msgstr "ultimo accesso"
-#: contrib/auth/models.py:147
+#: contrib/auth/models.py:143
msgid "date joined"
msgstr "iscritto in data"
-#: contrib/auth/models.py:149
+#: contrib/auth/models.py:145
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
@@ -1229,43 +1302,36 @@ msgstr ""
"In aggiunta ai privilegi assegnati manualmente, l'utente riceverà anche "
"tutti i privilegi assegnati ad ogni gruppo cui appartiene."
-#: contrib/auth/models.py:150
+#: contrib/auth/models.py:146
msgid "user permissions"
msgstr "privilegi utente"
-#: contrib/auth/models.py:154
+#: contrib/auth/models.py:150
msgid "user"
msgstr "utente"
-#: contrib/auth/models.py:155
+#: contrib/auth/models.py:151
msgid "users"
msgstr "utenti"
-#: contrib/auth/models.py:160
-msgid "Personal info"
-msgstr "Informazioni personali"
-
-#: contrib/auth/models.py:161
-msgid "Permissions"
-msgstr "Permessi"
-
-#: contrib/auth/models.py:162
-msgid "Important dates"
-msgstr "Date importanti"
-
-#: contrib/auth/models.py:163
-msgid "Groups"
-msgstr "Gruppi"
-
-#: contrib/auth/models.py:323
+#: contrib/auth/models.py:306
msgid "message"
msgstr "messaggio"
-#: contrib/auth/views.py:49
+#: contrib/auth/views.py:51
msgid "Logged out"
msgstr "Accesso annullato"
-#: contrib/comments/models.py:71 contrib/comments/models.py:176
+#: contrib/auth/views.py:162
+msgid "Password changed successfully."
+msgstr "La password è stata cambiata correttamente."
+
+#: contrib/auth/views.py:168
+#, python-format
+msgid "Change password: %s"
+msgstr "Cambia la password: %s"
+
+#: contrib/comments/models.py:71 contrib/comments/models.py:164
msgid "object ID"
msgstr "ID dell'oggetto"
@@ -1274,7 +1340,7 @@ msgid "headline"
msgstr "intestazione"
#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:177
+#: contrib/comments/models.py:165
msgid "comment"
msgstr "commento"
@@ -1314,11 +1380,11 @@ msgstr "valutazione #8"
msgid "is valid rating"
msgstr "è una valutazione valida"
-#: contrib/comments/models.py:87 contrib/comments/models.py:179
+#: contrib/comments/models.py:87 contrib/comments/models.py:167
msgid "date/time submitted"
msgstr "data/ora di inserimento"
-#: contrib/comments/models.py:88 contrib/comments/models.py:180
+#: contrib/comments/models.py:88 contrib/comments/models.py:168
msgid "is public"
msgstr "è pubblico"
@@ -1338,11 +1404,11 @@ msgstr ""
msgid "comments"
msgstr "commenti"
-#: contrib/comments/models.py:140 contrib/comments/models.py:222
+#: contrib/comments/models.py:128 contrib/comments/models.py:199
msgid "Content object"
msgstr "Oggetto con contenuto"
-#: contrib/comments/models.py:168
+#: contrib/comments/models.py:156
#, python-format
msgid ""
"Posted by %(user)s at %(date)s\n"
@@ -1357,48 +1423,48 @@ msgstr ""
"\n"
"http://%(domain)s%(url)s"
-#: contrib/comments/models.py:178
+#: contrib/comments/models.py:166
msgid "person's name"
msgstr "nome della persona"
-#: contrib/comments/models.py:181
+#: contrib/comments/models.py:169
msgid "ip address"
msgstr "indirizzo IP"
-#: contrib/comments/models.py:183
+#: contrib/comments/models.py:171
msgid "approved by staff"
msgstr "approvato dallo staff"
-#: contrib/comments/models.py:187
+#: contrib/comments/models.py:175
msgid "free comment"
msgstr "commento libero"
-#: contrib/comments/models.py:188
+#: contrib/comments/models.py:176
msgid "free comments"
msgstr "commenti liberi"
-#: contrib/comments/models.py:250
+#: contrib/comments/models.py:227
msgid "score"
msgstr "punteggio"
-#: contrib/comments/models.py:251
+#: contrib/comments/models.py:228
msgid "score date"
msgstr "data punteggio"
-#: contrib/comments/models.py:255
+#: contrib/comments/models.py:232
msgid "karma score"
msgstr "livello karma"
-#: contrib/comments/models.py:256
+#: contrib/comments/models.py:233
msgid "karma scores"
msgstr "livelli karma"
-#: contrib/comments/models.py:260
+#: contrib/comments/models.py:237
#, python-format
msgid "%(score)d rating by %(user)s"
msgstr "valutazione: %(score)d da %(user)s"
-#: contrib/comments/models.py:277
+#: contrib/comments/models.py:254
#, python-format
msgid ""
"This comment was flagged by %(user)s:\n"
@@ -1409,36 +1475,36 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/models.py:285
+#: contrib/comments/models.py:262
msgid "flag date"
msgstr "data flag"
-#: contrib/comments/models.py:289
+#: contrib/comments/models.py:266
msgid "user flag"
msgstr "flag utente"
-#: contrib/comments/models.py:290
+#: contrib/comments/models.py:267
msgid "user flags"
msgstr "flag utente"
-#: contrib/comments/models.py:294
+#: contrib/comments/models.py:271
#, python-format
msgid "Flag by %r"
msgstr "Flag da %r"
-#: contrib/comments/models.py:300
+#: contrib/comments/models.py:277
msgid "deletion date"
msgstr "data cancellazione"
-#: contrib/comments/models.py:303
+#: contrib/comments/models.py:280
msgid "moderator deletion"
msgstr "cancellazione da moderatore"
-#: contrib/comments/models.py:304
+#: contrib/comments/models.py:281
msgid "moderator deletions"
msgstr "cancellazioni da moderatore"
-#: contrib/comments/models.py:308
+#: contrib/comments/models.py:285
#, python-format
msgid "Moderator deletion by %r"
msgstr "Cancellazione da moderatore %r"
@@ -1479,13 +1545,13 @@ msgstr "Anteprima commento"
msgid "Your name:"
msgstr "Il tuo nome:"
-#: contrib/comments/views/comments.py:28
+#: contrib/comments/views/comments.py:76
msgid "This rating is required because you've entered at least one other rating."
msgstr ""
"Questa valutazione è obbligatoria perché hai inserito almeno un'altra "
"valutazione."
-#: contrib/comments/views/comments.py:112
+#: contrib/comments/views/comments.py:160
#, python-format
msgid ""
"This comment was posted by a user who has posted fewer than %(count)s "
@@ -1508,7 +1574,7 @@ msgstr[1] ""
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:117
+#: contrib/comments/views/comments.py:165
#, python-format
msgid ""
"This comment was posted by a sketchy user:\n"
@@ -1519,23 +1585,23 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
+#: contrib/comments/views/comments.py:238
+#: contrib/comments/views/comments.py:331
msgid "Only POSTs are allowed"
msgstr "Sono ammessi solo POST"
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
+#: contrib/comments/views/comments.py:242
+#: contrib/comments/views/comments.py:335
msgid "One or more of the required fields wasn't submitted"
msgstr "Uno o più campi richiesti non sono stati inseriti"
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
+#: contrib/comments/views/comments.py:246
+#: contrib/comments/views/comments.py:337
msgid "Somebody tampered with the comment form (security violation)"
msgstr "Qualcuno ha alterato il modulo di commento (violazione di sicurezza)"
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
+#: contrib/comments/views/comments.py:256
+#: contrib/comments/views/comments.py:343
msgid ""
"The comment form had an invalid 'target' parameter -- the object ID was "
"invalid"
@@ -1543,8 +1609,8 @@ msgstr ""
"Il modulo di commento ha un parametro 'target' non valido -- l'ID "
"dell'oggetto non è valido"
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
+#: contrib/comments/views/comments.py:307
+#: contrib/comments/views/comments.py:372
msgid "The comment form didn't provide either 'preview' or 'post'"
msgstr "Il modulo di commento non fornisce né 'anteprima' né 'invia'"
@@ -1572,6 +1638,10 @@ msgstr "content type"
msgid "content types"
msgstr "content type"
+#: contrib/flatpages/admin.py:9
+msgid "Advanced options"
+msgstr "Opzioni avanzate"
+
#: contrib/flatpages/models.py:9
msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
@@ -1620,10 +1690,6 @@ msgstr "pagina statica"
msgid "flat pages"
msgstr "pagine statiche"
-#: contrib/flatpages/models.py:27
-msgid "Advanced options"
-msgstr "Opzioni avanzate"
-
#: contrib/humanize/templatetags/humanize.py:19
msgid "th"
msgstr "º"
@@ -1731,6 +1797,51 @@ msgstr "Inserire un CUIT valido nel formato XX-XXXXXXXX-X o XXXXXXXXXXXX."
msgid "Invalid CUIT."
msgstr "CUIT non valido."
+#: contrib/localflavor/at/at_states.py:5
+msgid "Burgenland"
+msgstr "Burgenland"
+
+#: contrib/localflavor/at/at_states.py:6
+msgid "Carinthia"
+msgstr "Carinthia"
+
+#: contrib/localflavor/at/at_states.py:7
+msgid "Lower Austria"
+msgstr "Bassa Austria"
+
+#: contrib/localflavor/at/at_states.py:8
+msgid "Upper Austria"
+msgstr "Alta Austria"
+
+#: contrib/localflavor/at/at_states.py:9
+msgid "Salzburg"
+msgstr "Salisburgo"
+
+#: contrib/localflavor/at/at_states.py:10
+msgid "Styria"
+msgstr "Styria"
+
+#: contrib/localflavor/at/at_states.py:11
+msgid "Tyrol"
+msgstr "Tirolo"
+
+#: contrib/localflavor/at/at_states.py:12
+msgid "Vorarlberg"
+msgstr "Vorarlberg"
+
+#: contrib/localflavor/at/at_states.py:13
+msgid "Vienna"
+msgstr "Vienna"
+
+#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
+#: contrib/localflavor/no/forms.py:12
+msgid "Enter a zip code in the format XXXX."
+msgstr "Inserire un codice postale nel formato XXXXX ."
+
+#: contrib/localflavor/at/forms.py:48
+msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
+msgstr "Inserire un Numero di Assistenza Sociale Austriaco valido, nel formato XXXX XXXXXX."
+
#: contrib/localflavor/au/forms.py:16
msgid "Enter a 4 digit post code."
msgstr "Inserire un codice postale di 4 cifre."
@@ -1881,10 +1992,6 @@ msgstr "Zug"
msgid "Zurich"
msgstr "Zurigo"
-#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Inserire un codice postale nel formato XXXXX ."
-
#: contrib/localflavor/ch/forms.py:64
msgid ""
"Enter a valid Swiss identity or passport card number in X1234567<0 or "
@@ -2809,6 +2916,26 @@ msgstr "Polonia Maggiore"
msgid "West Pomerania"
msgstr "Pomerania Ovest"
+#: contrib/localflavor/ro/forms.py:19
+msgid "Enter a valid CIF."
+msgstr "Inserire un codice CIF valido."
+
+#: contrib/localflavor/ro/forms.py:56
+msgid "Enter a valid CNP."
+msgstr "Inserire un codice CNP valido."
+
+#: contrib/localflavor/ro/forms.py:141
+msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
+msgstr "Inserire un codice IBAN valido nel formato ROXX-XXXX-XXXX-XXXX-XXXX-XXXX."
+
+#: contrib/localflavor/ro/forms.py:171
+msgid "Phone numbers must be in XXXX-XXXXXX format."
+msgstr "I numeri di telefono devono essere in formato XXXX-XXXXXX."
+
+#: contrib/localflavor/ro/forms.py:194
+msgid "Enter a valid postal code in the format XXXXXX"
+msgstr "Inserire un codice postale valido nel formato XXXXXX."
+
#: contrib/localflavor/sk/forms.py:30
msgid "Enter a postal code in the format XXXXX or XXX XX."
msgstr "Inserire un codice postale nel formato XXXXX o XXX XX ."
@@ -3559,18 +3686,14 @@ msgstr "nome di dominio"
msgid "display name"
msgstr "nome visualizzato"
-#: contrib/sites/models.py:37
+#: contrib/sites/models.py:38
msgid "site"
msgstr "sito"
-#: contrib/sites/models.py:38
+#: contrib/sites/models.py:39
msgid "sites"
msgstr "siti"
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Questo valore può contenere solo lettere, cifre e sottolineati."
-
#: core/validators.py:76
msgid ""
"This value must contain only letters, numbers, underscores, dashes or "
@@ -3615,7 +3738,7 @@ msgstr "Sono ammessi soltanto caratteri numerici."
msgid "This value can't be comprised solely of digits."
msgstr "Questo valore non può essere composto solo da cifre."
-#: core/validators.py:128 newforms/fields.py:157
+#: core/validators.py:128 forms/fields.py:161
msgid "Enter a whole number."
msgstr "Inserire un numero intero."
@@ -3624,62 +3747,58 @@ msgid "Only alphabetical characters are allowed here."
msgstr "Sono ammessi solo caratteri alfabetici."
#: core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr "L'anno deve essere 1900 o successivo."
-
-#: core/validators.py:151
#, python-format
msgid "Invalid date: %s"
msgstr "Data non valida: %s"
-#: core/validators.py:156 db/models/fields/__init__.py:554
+#: core/validators.py:152 db/models/fields/__init__.py:569
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Inserire una data valida in formato AAAA-MM-GG."
-#: core/validators.py:161
+#: core/validators.py:157
msgid "Enter a valid time in HH:MM format."
msgstr "Inserire un ora valida in formato OO:MM."
-#: core/validators.py:165 db/models/fields/__init__.py:631
+#: core/validators.py:161
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Inserire una data/ora valida in formato AAAA-MM-GG OO:MM."
-#: core/validators.py:170 newforms/fields.py:408
+#: core/validators.py:166 forms/fields.py:412
msgid "Enter a valid e-mail address."
msgstr "Inserire un indirizzo e-mail valido."
-#: core/validators.py:182 core/validators.py:474 newforms/fields.py:426
+#: core/validators.py:178 core/validators.py:470 forms/fields.py:430
msgid "No file was submitted. Check the encoding type on the form."
msgstr "Non è stato inviato alcun file. Verificare il tipo di codifica della form."
-#: core/validators.py:193 newforms/fields.py:468
+#: core/validators.py:189 forms/fields.py:470
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "Caricare un'immagine valida. Il file caricato non è un'immagine o è corrotto."
-#: core/validators.py:200
+#: core/validators.py:196
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "La URL %s non punta ad un'immagine valida."
-#: core/validators.py:204
+#: core/validators.py:200
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
"I numeri di telefono devono essere in formato XXX-XXX-XXXX . \"%s\" non è "
"valido."
-#: core/validators.py:212
+#: core/validators.py:208
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "La URL %s non punta ad un video QuickTime valido."
-#: core/validators.py:216
+#: core/validators.py:212
msgid "A valid URL is required."
msgstr "Inserire una URL valida."
-#: core/validators.py:230
+#: core/validators.py:226
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@@ -3688,91 +3807,91 @@ msgstr ""
"È richiesto HTML valido. Gli errori sono i seguenti:\n"
"%s"
-#: core/validators.py:237
+#: core/validators.py:233
#, python-format
msgid "Badly formed XML: %s"
msgstr "XML malformato: %s"
-#: core/validators.py:254
+#: core/validators.py:250
#, python-format
msgid "Invalid URL: %s"
msgstr "URL non valida: %s"
-#: core/validators.py:259 core/validators.py:261
+#: core/validators.py:255 core/validators.py:257
#, python-format
msgid "The URL %s is a broken link."
msgstr "La URL %s è un link non funzionante."
-#: core/validators.py:267
+#: core/validators.py:263
msgid "Enter a valid U.S. state abbreviation."
msgstr "Inserire un valido nome di stato USA abbreviato."
-#: core/validators.py:281
+#: core/validators.py:277
#, 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] "Moderare i termini: la parola %s non è ammessa."
msgstr[1] "Moderare i termini: le parole %s non sono ammesse."
-#: core/validators.py:288
+#: core/validators.py:284
#, python-format
msgid "This field must match the '%s' field."
msgstr "Questo campo deve corrispondere al campo '%s'."
-#: core/validators.py:307
+#: core/validators.py:303
msgid "Please enter something for at least one field."
msgstr "Inserire qualcosa in almeno un campo."
-#: core/validators.py:316 core/validators.py:327
+#: core/validators.py:312 core/validators.py:323
msgid "Please enter both fields or leave them both empty."
msgstr "Inserire entrambi i campi o lasciarli entrambi vuoti."
-#: core/validators.py:335
+#: core/validators.py:331
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "Questo campo è obbligatorio se %(field)s è %(value)s"
-#: core/validators.py:348
+#: core/validators.py:344
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "Questo campo è obbligatorio se %(field)s non è %(value)s"
-#: core/validators.py:367
+#: core/validators.py:363
msgid "Duplicate values are not allowed."
msgstr "Non sono ammessi valori duplicati."
-#: core/validators.py:382
+#: core/validators.py:378
#, python-format
msgid "This value must be between %(lower)s and %(upper)s."
msgstr "Questo valore deve essere compreso tra %(lower)s e %(upper)s."
-#: core/validators.py:384
+#: core/validators.py:380
#, python-format
msgid "This value must be at least %s."
msgstr "Questo valore deve essere almeno pari a %s."
-#: core/validators.py:386
+#: core/validators.py:382
#, python-format
msgid "This value must be no more than %s."
msgstr "Questo valore non deve essere maggiore di %s."
-#: core/validators.py:427
+#: core/validators.py:423
#, python-format
msgid "This value must be a power of %s."
msgstr "Questo valore deve essere una potenza di %s."
-#: core/validators.py:437
+#: core/validators.py:433
msgid "Please enter a valid decimal number."
msgstr "Inserire un numero decimale valido."
-#: core/validators.py:444
+#: core/validators.py:440
#, 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] "Inserire un numero decimale con non più di %s cifra in totale."
msgstr[1] "Inserire un numero decimale con non più di %s cifre in totale."
-#: core/validators.py:447
+#: core/validators.py:443
#, 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."
@@ -3783,48 +3902,48 @@ msgstr[1] ""
"Inserire un numero decimale la cui parte intera sia composta da non più di %"
"s cifre."
-#: core/validators.py:450
+#: core/validators.py:446
#, 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] "Inserire un decimale con non più di %s cifra decimale."
msgstr[1] "Inserire un decimale con non più di %s cifre decimali."
-#: core/validators.py:458
+#: core/validators.py:454
msgid "Please enter a valid floating point number."
msgstr "Inserire un numero decimale valido."
-#: core/validators.py:467
+#: core/validators.py:463
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "Verificare che il file caricato sia grande almeno %s byte."
-#: core/validators.py:468
+#: core/validators.py:464
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "Verificare che il file caricato non sia più grande di %s byte."
-#: core/validators.py:485
+#: core/validators.py:481
msgid "The format for this field is wrong."
msgstr "Il formato di questo campo non è valido."
-#: core/validators.py:500
+#: core/validators.py:496
msgid "This field is invalid."
msgstr "Questo campo non è valido."
-#: core/validators.py:536
+#: core/validators.py:532
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Impossibile recuperare alcunché da %s."
-#: core/validators.py:539
+#: core/validators.py:535
#, python-format
msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
"La URL %(url)s ha restituito un header Content-Type non valido: '%"
"(contenttype)s'."
-#: core/validators.py:572
+#: core/validators.py:568
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@@ -3833,7 +3952,7 @@ msgstr ""
"Chiudere il tag %(tag)s a linea %(line)s. (La linea inizia con \"%(start)s"
"\".)"
-#: core/validators.py:576
+#: core/validators.py:572
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
@@ -3842,7 +3961,7 @@ msgstr ""
"Il testo che comincia a linea %(line)s non e' ammesso in quel contesto. (La "
"linea comincia con \"%(start)s\".)"
-#: core/validators.py:581
+#: core/validators.py:577
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@@ -3851,7 +3970,7 @@ msgstr ""
"\"%(attr)s\" a linea %(line)s non è un attributo valido. (La linea comincia "
"con \"%(start)s\".)"
-#: core/validators.py:586
+#: core/validators.py:582
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@@ -3860,7 +3979,7 @@ msgstr ""
"\"<%(tag)s>\" a linea %(line)s non è un tag valido. (La linea comincia con "
"\"%(start)s\".)"
-#: core/validators.py:590
+#: core/validators.py:586
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
@@ -3869,7 +3988,7 @@ msgstr ""
"Un tag a linea %(line)s manca di uno o più attributi richiesti. (La linea "
"comincia con \"%(start)s\".)"
-#: core/validators.py:595
+#: core/validators.py:591
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
@@ -3878,192 +3997,196 @@ msgstr ""
"L'attributo \"%(attr)s\" a linea %(line)s ha un valore non valido. (La linea "
"comincia con \"%(start)s\".)"
-#: db/models/manipulators.py:308
+#: db/models/manipulators.py:304
#, python-format
msgid "%(object)s with this %(type)s already exists for the given %(field)s."
msgstr "Un %(object)s·con questo·%(type)s·esiste già per questo·%(field)s."
-#: db/models/fields/__init__.py:52
+#: db/models/fields/__init__.py:46
#, python-format
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "Un %(optname)s·con questo·%(fieldname)s·esiste già."
-#: db/models/fields/__init__.py:182 db/models/fields/__init__.py:354
-#: db/models/fields/__init__.py:788 db/models/fields/__init__.py:799
-#: newforms/fields.py:51 oldforms/__init__.py:374
+#: db/models/fields/__init__.py:170 db/models/fields/__init__.py:343
+#: db/models/fields/__init__.py:792 db/models/fields/__init__.py:803
+#: forms/fields.py:52 oldforms/__init__.py:370
msgid "This field is required."
msgstr "Questo campo è obbligatorio."
-#: db/models/fields/__init__.py:454
+#: db/models/fields/__init__.py:457
msgid "This value must be an integer."
msgstr "Questo valore deve essere un intero."
-#: db/models/fields/__init__.py:493
+#: db/models/fields/__init__.py:503
msgid "This value must be either True or False."
msgstr "Questo valore deve essere True o False."
-#: db/models/fields/__init__.py:517
+#: db/models/fields/__init__.py:532
msgid "This field cannot be null."
msgstr "Questo campo non può essere nullo."
-#: db/models/fields/__init__.py:695
+#: db/models/fields/__init__.py:634 db/models/fields/__init__.py:651
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[ss[.uuuuuu]] format."
+msgstr "Inserire una data/ora valida nel formato AAAA-MM-GG OO:MM[ss[.uuuuuu]]."
+
+#: db/models/fields/__init__.py:707
msgid "This value must be a decimal number."
msgstr "Questo valore deve essere un numero decimale."
-#: db/models/fields/__init__.py:808
+#: db/models/fields/__init__.py:812
msgid "Enter a valid filename."
msgstr "Inserire un nome di file valido."
-#: db/models/fields/__init__.py:999
+#: db/models/fields/__init__.py:1013
msgid "This value must be either None, True or False."
msgstr "Questo valore deve essere None, True o False."
-#: db/models/fields/related.py:94
+#: db/models/fields/__init__.py:1128 db/models/fields/__init__.py:1141
+msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
+msgstr "Inserire un ora valida nel formato OO:MM[ss[.uuuuuu]]."
+
+#: db/models/fields/related.py:93
#, python-format
msgid "Please enter a valid %s."
msgstr "Inserire un %s valido."
-#: db/models/fields/related.py:756
-msgid "Separate multiple IDs with commas."
-msgstr "Separare gli ID multipli con virgole."
-
-#: db/models/fields/related.py:758
+#: db/models/fields/related.py:753
msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
"Tenere premuto \"Control\", o \"Command\" su Mac, per selezionarne più di "
"uno."
-#: db/models/fields/related.py:805
+#: db/models/fields/related.py:833
#, 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] "Inserire un ID valido per %(self)s. Il valore %(value)r non è valido."
msgstr[1] "Inserire ID validi per %(self)s. I valori %(value)r non sono validi."
-#: newforms/fields.py:52
+#: forms/fields.py:53
msgid "Enter a valid value."
msgstr "Inserire un valore valido."
-#: newforms/fields.py:129
+#: forms/fields.py:133
#, python-format
msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
msgstr ""
"Assicurarsi che questo valore non contenga più di %(max)d caratteri (ne ha %"
"(length)d)."
-#: newforms/fields.py:130
+#: forms/fields.py:134
#, python-format
msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
msgstr ""
"Assicurarsi che questo valore contenga almeno %(min)d caratteri (ne ha %"
"(length)d)."
-#: newforms/fields.py:158 newforms/fields.py:187 newforms/fields.py:216
+#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
#, python-format
msgid "Ensure this value is less than or equal to %s."
msgstr "Assicurarsi che questo valore sia minore o uguale a %s."
-#: newforms/fields.py:159 newforms/fields.py:188 newforms/fields.py:217
+#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
#, python-format
msgid "Ensure this value is greater than or equal to %s."
msgstr "Assicurarsi che questo valore sia maggiore o uguale a %s."
-#: newforms/fields.py:186 newforms/fields.py:215
+#: forms/fields.py:190 forms/fields.py:219
msgid "Enter a number."
msgstr "Inserire un numero."
-#: newforms/fields.py:218
+#: forms/fields.py:222
#, python-format
msgid "Ensure that there are no more than %s digits in total."
msgstr "Assicurarsi che non vi siano più di %s cifre in totale."
-#: newforms/fields.py:219
+#: forms/fields.py:223
#, python-format
msgid "Ensure that there are no more than %s decimal places."
msgstr "Assicurarsi che non vi siano più di %s cifre decimali."
-#: newforms/fields.py:220
+#: forms/fields.py:224
#, python-format
msgid "Ensure that there are no more than %s digits before the decimal point."
msgstr "Assicurarsi che non vi siano più di %s cifre prima della virgola."
-#: newforms/fields.py:268 newforms/fields.py:779
+#: forms/fields.py:272 forms/fields.py:802
msgid "Enter a valid date."
msgstr "Inserire una data valida."
-#: newforms/fields.py:301 newforms/fields.py:780
+#: forms/fields.py:305 forms/fields.py:803
msgid "Enter a valid time."
msgstr "Inserire un ora valida."
-#: newforms/fields.py:340
+#: forms/fields.py:344
msgid "Enter a valid date/time."
msgstr "Inserire una coppia data/ora valida."
-#: newforms/fields.py:427
+#: forms/fields.py:431
msgid "No file was submitted."
msgstr "Nessun file è stato inviato."
-#: newforms/fields.py:428 oldforms/__init__.py:693
+#: forms/fields.py:432 oldforms/__init__.py:689
msgid "The submitted file is empty."
msgstr "Il file inviato è vuoto."
-#: newforms/fields.py:522
+#: forms/fields.py:531
msgid "Enter a valid URL."
msgstr "Inserire una URL valida."
-#: newforms/fields.py:523
+#: forms/fields.py:532
msgid "This URL appears to be a broken link."
msgstr "Questa URL non sembra funzionare."
-#: newforms/fields.py:588 newforms/models.py:306
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Scegliere un'opzione valida. La scelta effettuata non compare tra quelle "
-"disponibili."
-
-#: newforms/fields.py:627
+#: forms/fields.py:600 forms/fields.py:651
#, python-format
msgid "Select a valid choice. %(value)s is not one of the available choices."
msgstr "Scegliere un'opzione valida. '%(value)s non compare tra quelle disponibili."
-#: newforms/fields.py:628 newforms/fields.py:690 newforms/models.py:373
+#: forms/fields.py:652 forms/fields.py:713 forms/models.py:589
msgid "Enter a list of values."
msgstr "Inserire una lista di valori."
-#: newforms/fields.py:808
+#: forms/fields.py:831
msgid "Enter a valid IPv4 address."
msgstr "Inserire un indirizzo IPv4 valido."
-#: newforms/models.py:374
+#: forms/models.py:522
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr ""
+"Scegliere un'opzione valida. La scelta effettuata non compare tra quelle "
+"disponibili."
+
+#: forms/models.py:590
#, python-format
msgid "Select a valid choice. %s is not one of the available choices."
msgstr "Scegliere un'opzione valida. '%s non compare tra quelle disponibili."
-#: oldforms/__init__.py:409
+#: oldforms/__init__.py:405
#, python-format
msgid "Ensure your text is less than %s character."
msgid_plural "Ensure your text is less than %s characters."
msgstr[0] "Assicurarsi che il testo sia più corto di %s carattere."
msgstr[1] "Assicurarsi che il testo sia più corto di %s caratteri."
-#: oldforms/__init__.py:414
+#: oldforms/__init__.py:410
msgid "Line breaks are not allowed here."
msgstr "Non sono ammessi a capo manuali qui."
-#: oldforms/__init__.py:512 oldforms/__init__.py:586 oldforms/__init__.py:625
+#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621
#, python-format
msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
msgstr "Scegliere un'opzione valida; '%(data)s' non presente in %(choices)s."
-#: oldforms/__init__.py:754
+#: oldforms/__init__.py:750
msgid "Enter a whole number between -32,768 and 32,767."
msgstr "Inserire un numero intero compreso tra -32.768 e 32.767 ."
-#: oldforms/__init__.py:764
+#: oldforms/__init__.py:760
msgid "Enter a positive number."
msgstr "Inserire un numero positivo."
-#: oldforms/__init__.py:774
+#: oldforms/__init__.py:770
msgid "Enter a whole number between 0 and 32,767."
msgstr "Inserire un numero intero compreso tra 0 e 32.767 ."
@@ -4351,37 +4474,37 @@ msgstr "%(number)d %(type)s"
msgid ", %(number)d %(type)s"
msgstr ", %(number)d %(type)s"
-#: utils/translation/trans_real.py:412
+#: utils/translation/trans_real.py:401
msgid "DATE_FORMAT"
msgstr "j F Y"
-#: utils/translation/trans_real.py:413
+#: utils/translation/trans_real.py:402
msgid "DATETIME_FORMAT"
msgstr "j F Y, H:i"
-#: utils/translation/trans_real.py:414
+#: utils/translation/trans_real.py:403
msgid "TIME_FORMAT"
msgstr "H:i"
-#: utils/translation/trans_real.py:430
+#: utils/translation/trans_real.py:419
msgid "YEAR_MONTH_FORMAT"
msgstr "Y F"
-#: utils/translation/trans_real.py:431
+#: utils/translation/trans_real.py:420
msgid "MONTH_DAY_FORMAT"
msgstr "F j"
-#: views/generic/create_update.py:43
+#: views/generic/create_update.py:129
#, python-format
msgid "The %(verbose_name)s was created successfully."
msgstr "%(verbose_name)s è stato creato correttamente."
-#: views/generic/create_update.py:117
+#: views/generic/create_update.py:172
#, python-format
msgid "The %(verbose_name)s was updated successfully."
msgstr "%(verbose_name)s è stato aggiornato correttamente."
-#: views/generic/create_update.py:184
+#: views/generic/create_update.py:214
#, python-format
msgid "The %(verbose_name)s was deleted."
msgstr "%(verbose_name)s è stato cancellato."
diff --git a/django/conf/locale/ka/LC_MESSAGES/django.mo b/django/conf/locale/ka/LC_MESSAGES/django.mo
index 0b611080d0..91957f682b 100644
--- a/django/conf/locale/ka/LC_MESSAGES/django.mo
+++ b/django/conf/locale/ka/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/ka/LC_MESSAGES/django.po b/django/conf/locale/ka/LC_MESSAGES/django.po
index c189e67a81..0649b56458 100644
--- a/django/conf/locale/ka/LC_MESSAGES/django.po
+++ b/django/conf/locale/ka/LC_MESSAGES/django.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-22 21:55+0400\n"
+"POT-Creation-Date: 2008-07-15 21:17+0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: David Avsajanishvili <avsd05@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -14,191 +14,199 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: conf/global_settings.py:39
+#: conf/global_settings.py:44
msgid "Arabic"
msgstr "áƒáƒ áƒáƒ‘ული"
-#: conf/global_settings.py:40
+#: conf/global_settings.py:45
msgid "Bengali"
msgstr "ბენგáƒáƒšáƒ˜áƒ£áƒ áƒ˜"
-#: conf/global_settings.py:41
+#: conf/global_settings.py:46
msgid "Bulgarian"
msgstr "ბულგáƒáƒ áƒ£áƒšáƒ˜"
-#: conf/global_settings.py:42
+#: conf/global_settings.py:47
msgid "Catalan"
msgstr "კáƒáƒ¢áƒáƒšáƒáƒœáƒ£áƒ áƒ˜"
-#: conf/global_settings.py:43
+#: conf/global_settings.py:48
msgid "Czech"
msgstr "ჩეხური"
-#: conf/global_settings.py:44
+#: conf/global_settings.py:49
msgid "Welsh"
msgstr "უელსური"
-#: conf/global_settings.py:45
+#: conf/global_settings.py:50
msgid "Danish"
msgstr "დáƒáƒœáƒ˜áƒ£áƒ áƒ˜"
-#: conf/global_settings.py:46
+#: conf/global_settings.py:51
msgid "German"
msgstr "გერმáƒáƒœáƒ£áƒšáƒ˜"
-#: conf/global_settings.py:47
+#: conf/global_settings.py:52
msgid "Greek"
msgstr "ბერძნული"
-#: conf/global_settings.py:48
+#: conf/global_settings.py:53
msgid "English"
msgstr "ინგლისური"
-#: conf/global_settings.py:49
+#: conf/global_settings.py:54
msgid "Spanish"
msgstr "ესპáƒáƒœáƒ£áƒ áƒ˜"
-#: conf/global_settings.py:50
+#: conf/global_settings.py:55
+msgid "Estonian"
+msgstr "ესტáƒáƒœáƒ£áƒ áƒ˜"
+
+#: conf/global_settings.py:56
msgid "Argentinean Spanish"
msgstr "áƒáƒ áƒ’ენტინის ესპáƒáƒœáƒ£áƒ áƒ˜"
-#: conf/global_settings.py:51
+#: conf/global_settings.py:57
msgid "Basque"
msgstr "ბáƒáƒ¡áƒ™áƒ£áƒ áƒ˜"
-#: conf/global_settings.py:52
+#: conf/global_settings.py:58
msgid "Persian"
msgstr "სპáƒáƒ áƒ¡áƒ£áƒšáƒ˜"
-#: conf/global_settings.py:53
+#: conf/global_settings.py:59
msgid "Finnish"
msgstr "ფინური"
-#: conf/global_settings.py:54
+#: conf/global_settings.py:60
msgid "French"
msgstr "ფრáƒáƒœáƒ’ული"
-#: conf/global_settings.py:55
+#: conf/global_settings.py:61
msgid "Irish"
msgstr "ირლáƒáƒœáƒ“იური"
-#: conf/global_settings.py:56
+#: conf/global_settings.py:62
msgid "Galician"
msgstr "გáƒáƒšáƒ˜áƒªáƒ˜áƒ£áƒ áƒ˜"
-#: conf/global_settings.py:57
+#: conf/global_settings.py:63
msgid "Hungarian"
msgstr "უნგრული"
-#: conf/global_settings.py:58
+#: conf/global_settings.py:64
msgid "Hebrew"
msgstr "ებრáƒáƒ£áƒšáƒ˜"
-#: conf/global_settings.py:59
+#: conf/global_settings.py:65
msgid "Croatian"
msgstr "ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜"
-#: conf/global_settings.py:60
+#: conf/global_settings.py:66
msgid "Icelandic"
msgstr "ისლáƒáƒœáƒ“იური"
-#: conf/global_settings.py:61
+#: conf/global_settings.py:67
msgid "Italian"
msgstr "იტáƒáƒšáƒ˜áƒ£áƒ áƒ˜"
-#: conf/global_settings.py:62
+#: conf/global_settings.py:68
msgid "Japanese"
msgstr "იáƒáƒžáƒáƒœáƒ£áƒ áƒ˜"
-#: conf/global_settings.py:63
+#: conf/global_settings.py:69
msgid "Georgian"
msgstr "ქáƒáƒ áƒ—ული"
-#: conf/global_settings.py:64
+#: conf/global_settings.py:70
msgid "Korean"
msgstr "კáƒáƒ áƒ”ული"
-#: conf/global_settings.py:65
+#: conf/global_settings.py:71
msgid "Khmer"
msgstr "ხმერული"
-#: conf/global_settings.py:66
+#: conf/global_settings.py:72
msgid "Kannada"
msgstr "კáƒáƒœáƒœáƒáƒ“áƒ"
-#: conf/global_settings.py:67
+#: conf/global_settings.py:73
msgid "Latvian"
msgstr "ლáƒáƒ¢áƒ•áƒ˜áƒ£áƒ áƒ˜"
-#: conf/global_settings.py:68
+#: conf/global_settings.py:74
+msgid "Lithuanian"
+msgstr "ლიტვური"
+
+#: conf/global_settings.py:75
msgid "Macedonian"
msgstr "მáƒáƒ™áƒ”დáƒáƒœáƒ£áƒ áƒ˜"
-#: conf/global_settings.py:69
+#: conf/global_settings.py:76
msgid "Dutch"
msgstr "ჰáƒáƒšáƒáƒœáƒ“იური"
-#: conf/global_settings.py:70
+#: conf/global_settings.py:77
msgid "Norwegian"
msgstr "ნáƒáƒ áƒ•áƒ”გიული"
-#: conf/global_settings.py:71
+#: conf/global_settings.py:78
msgid "Polish"
msgstr "პáƒáƒšáƒáƒœáƒ£áƒ áƒ˜"
-#: conf/global_settings.py:72
+#: conf/global_settings.py:79
msgid "Portugese"
msgstr "პáƒáƒ áƒ¢áƒ£áƒ’áƒáƒšáƒ˜áƒ£áƒ áƒ˜"
-#: conf/global_settings.py:73
-msgid "Brazilian"
-msgstr "ბრáƒáƒ–ილიური"
+#: conf/global_settings.py:80
+msgid "Brazilian Portuguese"
+msgstr "ბრáƒáƒ–ილიური პáƒáƒ áƒ¢áƒ£áƒ’áƒáƒšáƒ˜áƒ£áƒ áƒ˜"
-#: conf/global_settings.py:74
+#: conf/global_settings.py:81
msgid "Romanian"
msgstr "რუმინული"
-#: conf/global_settings.py:75
+#: conf/global_settings.py:82
msgid "Russian"
msgstr "რუსული"
-#: conf/global_settings.py:76
+#: conf/global_settings.py:83
msgid "Slovak"
msgstr "სლáƒáƒ•áƒáƒ áƒ£áƒ áƒ˜"
-#: conf/global_settings.py:77
+#: conf/global_settings.py:84
msgid "Slovenian"
msgstr "სლáƒáƒ•áƒ”ნიური"
-#: conf/global_settings.py:78
+#: conf/global_settings.py:85
msgid "Serbian"
msgstr "სერბული"
-#: conf/global_settings.py:79
+#: conf/global_settings.py:86
msgid "Swedish"
msgstr "შვედური"
-#: conf/global_settings.py:80
+#: conf/global_settings.py:87
msgid "Tamil"
msgstr "თáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜"
-#: conf/global_settings.py:81
+#: conf/global_settings.py:88
msgid "Telugu"
msgstr "ტელუგუ"
-#: conf/global_settings.py:82
+#: conf/global_settings.py:89
msgid "Turkish"
msgstr "თურქული"
-#: conf/global_settings.py:83
+#: conf/global_settings.py:90
msgid "Ukrainian"
msgstr "უკრáƒáƒ˜áƒœáƒ£áƒšáƒ˜"
-#: conf/global_settings.py:84
+#: conf/global_settings.py:91
msgid "Simplified Chinese"
msgstr "გáƒáƒ›áƒáƒ áƒ¢áƒ˜áƒ•áƒ”ბული ჩინური"
-#: conf/global_settings.py:85
+#: conf/global_settings.py:92
msgid "Traditional Chinese"
msgstr "ტრáƒáƒ“იციული ჩინური"
@@ -322,7 +330,7 @@ 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 ""
-"áƒáƒ¥ იყრშეცდáƒáƒ›áƒ. იგი გáƒáƒ“áƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒšáƒ˜áƒ სáƒáƒ˜áƒ¢áƒ˜áƒ¡ áƒáƒ“მინისტრáƒáƒ¢áƒáƒ áƒ˜áƒ¡ ელექტრáƒáƒœáƒ£áƒš ფáƒáƒ¡áƒ¢áƒáƒ–ე "
+"სისტემáƒáƒ¨áƒ˜ მáƒáƒ®áƒ“რშეცდáƒáƒ›áƒ. იგი გáƒáƒ“áƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒšáƒ˜áƒ სáƒáƒ˜áƒ¢áƒ˜áƒ¡ áƒáƒ“მინისტრáƒáƒ¢áƒáƒ áƒ˜áƒ¡ ელექტრáƒáƒœáƒ£áƒš ფáƒáƒ¡áƒ¢áƒáƒ–ე "
"დრმáƒáƒšáƒ” გáƒáƒ›áƒáƒ¡áƒ¬áƒáƒ áƒ“ებáƒ. გმáƒáƒ“ლáƒáƒ‘თ მáƒáƒ—მინებისáƒáƒ—ვის."
#: contrib/admin/templates/admin/base.html:26
@@ -477,7 +485,7 @@ msgid "Password:"
msgstr "პáƒáƒ áƒáƒšáƒ˜:"
#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:25
+#: contrib/admin/views/decorators.py:31
msgid "Log in"
msgstr "შესვლáƒ"
@@ -799,7 +807,7 @@ msgstr "პáƒáƒ áƒáƒšáƒ˜ წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით შეიცვáƒáƒšá
msgid "Change password: %s"
msgstr "შევცვáƒáƒšáƒáƒ— პáƒáƒ áƒáƒšáƒ˜: %s"
-#: contrib/admin/views/decorators.py:11 contrib/auth/forms.py:60
+#: contrib/admin/views/decorators.py:17 contrib/auth/forms.py:60
msgid ""
"Please enter a correct username and password. Note that both fields are case-"
"sensitive."
@@ -807,7 +815,7 @@ msgstr ""
"გთხáƒáƒ•áƒ—, შეიყვáƒáƒœáƒáƒ— სწáƒáƒ áƒ˜ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი დრპáƒáƒ áƒáƒšáƒ˜. გáƒáƒ˜áƒ—ვáƒáƒšáƒ˜áƒ¡áƒ¬áƒ˜áƒœáƒ”თ, რáƒáƒ› "
"áƒáƒ áƒ˜áƒ•áƒ” ველი დáƒáƒ›áƒáƒ™áƒ˜áƒ“ებულირრეგისტრზე."
-#: contrib/admin/views/decorators.py:63
+#: contrib/admin/views/decorators.py:69
msgid ""
"Please log in again, because your session has expired. Don't worry: Your "
"submission has been saved."
@@ -815,7 +823,7 @@ msgstr ""
"გთხáƒáƒ•áƒ—, შეხვიდეთ კიდევ ერთხელ, რáƒáƒ“გáƒáƒœáƒáƒª თქვენი სესიის დრრáƒáƒ›áƒáƒ˜áƒ¬áƒ£áƒ áƒ. ნუ "
"ღელáƒáƒ•áƒ—: თქვენს მიერ შეტáƒáƒœáƒ˜áƒšáƒ˜ ცვლილებები შენáƒáƒ®áƒ£áƒšáƒ˜áƒ."
-#: contrib/admin/views/decorators.py:70
+#: contrib/admin/views/decorators.py:76
msgid ""
"Looks like your browser isn't configured to accept cookies. Please enable "
"cookies, reload this page, and try again."
@@ -823,17 +831,17 @@ msgstr ""
"რáƒáƒ’áƒáƒ áƒª ჩáƒáƒœáƒ¡, თქვენი ბრáƒáƒ£áƒ–ერი áƒáƒ  ღებულáƒáƒ‘ს cookie-ებს. გთხáƒáƒ•áƒ—, ჩáƒáƒ áƒ—áƒáƒ— cookie-"
"ების მიღების ფუნქციáƒ, გáƒáƒœáƒáƒáƒ®áƒšáƒ”თ ეს გვერდი დრსცáƒáƒ“ეთ კიდევ ერთხელ."
-#: contrib/admin/views/decorators.py:84
-msgid "Usernames cannot contain the '@' character."
-msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი áƒáƒ  უნდრშეიცáƒáƒ•áƒ“ეს სიმბáƒáƒšáƒáƒ¡ '@'."
-
-#: contrib/admin/views/decorators.py:86
+#: contrib/admin/views/decorators.py:89
#, python-format
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
"ელ-ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი áƒáƒ  áƒáƒ áƒ˜áƒ¡ თქვენი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი. სცáƒáƒ“ეთ '%s' მის "
"ნáƒáƒªáƒ•áƒšáƒáƒ“."
+#: contrib/admin/views/decorators.py:93
+msgid "Usernames cannot contain the '@' character."
+msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი áƒáƒ  უნდრშეიცáƒáƒ•áƒ“ეს სიმბáƒáƒšáƒáƒ¡ '@'."
+
#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
#: contrib/admin/views/doc.py:52
msgid "tag:"
@@ -957,7 +965,7 @@ msgstr "ტექსტი"
msgid "Time"
msgstr "დრáƒ"
-#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:7
+#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:8
msgid "URL"
msgstr ""
@@ -1065,7 +1073,7 @@ msgstr "áƒáƒ•áƒ˜áƒ áƒ©áƒ˜áƒáƒ— %s"
msgid "Select %s to change"
msgstr "áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ %s შესáƒáƒªáƒ•áƒšáƒ”ლáƒáƒ“"
-#: contrib/admin/views/main.py:784
+#: contrib/admin/views/main.py:765
msgid "Database error"
msgstr "მáƒáƒœáƒáƒªáƒ”მთრბáƒáƒ–ის შეცდáƒáƒ›áƒ"
@@ -1129,15 +1137,15 @@ msgstr "უფლებები"
msgid "group"
msgstr "ჯგუფი"
-#: contrib/auth/models.py:98 contrib/auth/models.py:141
+#: contrib/auth/models.py:98 contrib/auth/models.py:148
msgid "groups"
msgstr "ჯგუფები"
-#: contrib/auth/models.py:131
+#: contrib/auth/models.py:138
msgid "username"
msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი"
-#: contrib/auth/models.py:131
+#: contrib/auth/models.py:138
msgid ""
"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
"digits and underscores)."
@@ -1145,23 +1153,23 @@ msgstr ""
"áƒáƒ£áƒªáƒ˜áƒšáƒ”ბელიáƒ. 30 áƒáƒœ ნáƒáƒ™áƒšáƒ”ბი სიმბáƒáƒšáƒ. მხáƒáƒšáƒáƒ“ ლáƒáƒ—ინური áƒáƒ¡áƒáƒ”ბი, ციფრები დრ"
"ხáƒáƒ–გáƒáƒ¡áƒ›áƒ."
-#: contrib/auth/models.py:132
+#: contrib/auth/models.py:139
msgid "first name"
msgstr "სáƒáƒ®áƒ”ლი"
-#: contrib/auth/models.py:133
+#: contrib/auth/models.py:140
msgid "last name"
msgstr "გვáƒáƒ áƒ˜"
-#: contrib/auth/models.py:134
+#: contrib/auth/models.py:141
msgid "e-mail address"
msgstr "ელ. ფáƒáƒ¡áƒ¢áƒ"
-#: contrib/auth/models.py:135
+#: contrib/auth/models.py:142
msgid "password"
msgstr "პáƒáƒ áƒáƒšáƒ˜"
-#: contrib/auth/models.py:135
+#: contrib/auth/models.py:142
msgid ""
"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
"password form</a>."
@@ -1169,46 +1177,46 @@ msgstr ""
"გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ '[algo]$[salt]$[hexdigest]' áƒáƒœ <a href=\"password/\">პáƒáƒ áƒáƒšáƒ˜áƒ¡ "
"შეცვლის ფáƒáƒ áƒ›áƒ</a>."
-#: contrib/auth/models.py:136
+#: contrib/auth/models.py:143
msgid "staff status"
msgstr "თáƒáƒœáƒáƒ›áƒ¨áƒ áƒáƒ›áƒšáƒáƒ‘ის სტáƒáƒ¢áƒ£áƒ¡áƒ˜"
-#: contrib/auth/models.py:136
+#: contrib/auth/models.py:143
msgid "Designates whether the user can log into this admin site."
msgstr ""
"გáƒáƒœáƒ¡áƒáƒ–ღვრáƒáƒ•áƒ¡, áƒáƒ¥áƒ•áƒ¡ თუ áƒáƒ áƒ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს áƒáƒ“მინისტრირების სáƒáƒ˜áƒ¢áƒ–ე შესვლის უფლებáƒ."
-#: contrib/auth/models.py:137
+#: contrib/auth/models.py:144
msgid "active"
msgstr "áƒáƒ¥áƒ¢áƒ˜áƒ£áƒ áƒ˜áƒ"
-#: contrib/auth/models.py:137
+#: contrib/auth/models.py:144
msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
+"Designates whether this user should be treated as active. Unselect this "
"instead of deleting accounts."
msgstr ""
-"გáƒáƒœáƒ¡áƒáƒ–ღვრáƒáƒ•áƒ¡, áƒáƒ¥áƒ•áƒ¡ თუ áƒáƒ áƒ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს Django-ს áƒáƒ“მინისტრირების სáƒáƒ˜áƒ¢áƒ–ე "
-"შესვლის შესáƒáƒ«áƒšáƒ”ბლáƒáƒ‘áƒ. გáƒáƒ“áƒáƒœáƒ˜áƒ¨áƒœáƒ”თ ეს დრáƒáƒ¨áƒ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის წáƒáƒ¨áƒšáƒ˜áƒ¡ მáƒáƒ’ივრáƒáƒ“."
+"გáƒáƒœáƒ¡áƒáƒ–ღვრáƒáƒ•áƒ¡, რáƒáƒ› მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი გáƒáƒáƒ¥áƒ¢áƒ˜áƒ£áƒ áƒ”ბულიáƒ. "
+"მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის წáƒáƒ¨áƒšáƒ˜áƒ¡ მáƒáƒ’ივრáƒáƒ“ გáƒáƒ“áƒáƒœáƒ˜áƒ¨áƒœáƒ”თ ეს დრáƒáƒ¨áƒ."
-#: contrib/auth/models.py:138
+#: contrib/auth/models.py:145
msgid "superuser status"
msgstr "სუპერმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სტáƒáƒ¢áƒ£áƒ¡áƒ˜"
-#: contrib/auth/models.py:138
+#: contrib/auth/models.py:145
msgid ""
"Designates that this user has all permissions without explicitly assigning "
"them."
msgstr "გáƒáƒœáƒ¡áƒáƒ–ღვრáƒáƒ•áƒ¡, რáƒáƒ› áƒáƒ› მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს áƒáƒ¥áƒ•áƒ¡ ყველრუფლებáƒ."
-#: contrib/auth/models.py:139
+#: contrib/auth/models.py:146
msgid "last login"
msgstr "ბáƒáƒšáƒ შესვლáƒ"
-#: contrib/auth/models.py:140
+#: contrib/auth/models.py:147
msgid "date joined"
msgstr "გáƒáƒ¬áƒ”ვრიáƒáƒœáƒ”ბის თáƒáƒ áƒ˜áƒ¦áƒ˜"
-#: contrib/auth/models.py:142
+#: contrib/auth/models.py:149
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
@@ -1216,39 +1224,39 @@ msgstr ""
"ინდივიდუáƒáƒšáƒ£áƒ áƒáƒ“ მითითებული უფლებების გáƒáƒ áƒ“áƒ, ეს მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი მიიღებს áƒáƒ’რეთვე "
"ყველრიმ ჯგუფის უფლებáƒáƒ¡, რáƒáƒ›áƒ”ლშიც იგი გáƒáƒ¬áƒ”ვრიáƒáƒœáƒ”ბულიáƒ."
-#: contrib/auth/models.py:143
+#: contrib/auth/models.py:150
msgid "user permissions"
msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის უფლებები"
-#: contrib/auth/models.py:147
+#: contrib/auth/models.py:154
msgid "user"
msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი"
-#: contrib/auth/models.py:148
+#: contrib/auth/models.py:155
msgid "users"
msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლები"
-#: contrib/auth/models.py:154
+#: contrib/auth/models.py:160
msgid "Personal info"
msgstr "პირáƒáƒ“ი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ"
-#: contrib/auth/models.py:155
+#: contrib/auth/models.py:161
msgid "Permissions"
msgstr "უფლებები"
-#: contrib/auth/models.py:156
+#: contrib/auth/models.py:162
msgid "Important dates"
msgstr "მნიშვნელáƒáƒ•áƒáƒœáƒ˜ თáƒáƒ áƒ˜áƒ¦áƒ”ბი"
-#: contrib/auth/models.py:157
+#: contrib/auth/models.py:163
msgid "Groups"
msgstr "ჯგუფები"
-#: contrib/auth/models.py:316
+#: contrib/auth/models.py:323
msgid "message"
msgstr "შეტყáƒáƒ‘ინებáƒ"
-#: contrib/auth/views.py:47
+#: contrib/auth/views.py:49
msgid "Logged out"
msgstr "გáƒáƒ›áƒáƒ¡áƒ£áƒšáƒ˜ ხáƒáƒ áƒ—"
@@ -1546,42 +1554,42 @@ msgstr "კáƒáƒ›áƒ”ნტáƒáƒ áƒ˜áƒ¡ ID áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ"
msgid "No voting for yourself"
msgstr "სáƒáƒ™áƒ£áƒ—áƒáƒ áƒ˜ თáƒáƒ•áƒ˜áƒ¡áƒáƒ—ვის ხმის მიცემრáƒáƒ™áƒ áƒ«áƒáƒšáƒ£áƒšáƒ˜áƒ"
-#: contrib/contenttypes/models.py:37
+#: contrib/contenttypes/models.py:67
msgid "python model class name"
msgstr "python-ის მáƒáƒ“ელის კლáƒáƒ¡áƒ˜áƒ¡ სáƒáƒ®áƒ”ლი"
-#: contrib/contenttypes/models.py:40
+#: contrib/contenttypes/models.py:71
msgid "content type"
msgstr "კáƒáƒœáƒ¢áƒ”ნტის ტიპი"
-#: contrib/contenttypes/models.py:41
+#: contrib/contenttypes/models.py:72
msgid "content types"
msgstr "კáƒáƒœáƒ¢áƒ”ნტის ტიპები"
-#: contrib/flatpages/models.py:8
+#: contrib/flatpages/models.py:9
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
"მáƒáƒ’áƒáƒšáƒ˜áƒ—ი: '/about/contact/'. ყურáƒáƒ“ღებრმიáƒáƒ¥áƒªáƒ˜áƒ”თ დáƒáƒ®áƒ áƒ˜áƒš ხáƒáƒ–ებს თáƒáƒ•áƒ¨áƒ˜ დრ"
"ბáƒáƒšáƒáƒ¨áƒ˜."
-#: contrib/flatpages/models.py:9
+#: contrib/flatpages/models.py:10
msgid "title"
msgstr "სáƒáƒ—áƒáƒ£áƒ áƒ˜"
-#: contrib/flatpages/models.py:10
+#: contrib/flatpages/models.py:11
msgid "content"
msgstr "კáƒáƒœáƒ¢áƒ”ნტი"
-#: contrib/flatpages/models.py:11
+#: contrib/flatpages/models.py:12
msgid "enable comments"
msgstr "ჩáƒáƒ•áƒ áƒ—áƒáƒ— კáƒáƒ›áƒ”ნტáƒáƒ áƒ”ბი"
-#: contrib/flatpages/models.py:12
+#: contrib/flatpages/models.py:13
msgid "template name"
msgstr "შáƒáƒ‘ლáƒáƒœáƒ˜áƒ¡ სáƒáƒ®áƒ”ლი"
-#: contrib/flatpages/models.py:13
+#: contrib/flatpages/models.py:14
msgid ""
"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
"will use 'flatpages/default.html'."
@@ -1589,24 +1597,28 @@ msgstr ""
"მáƒáƒ’áƒáƒšáƒ˜áƒ—ი: 'flatpages/contact_page.html'. თუ იგი მითითებული áƒáƒ  áƒáƒ áƒ˜áƒ¡, "
"გáƒáƒ›áƒáƒ§áƒ”ნებული იქნებრ'flatpages/default.html'."
-#: contrib/flatpages/models.py:14
+#: contrib/flatpages/models.py:15
msgid "registration required"
msgstr "რეგისტრáƒáƒªáƒ˜áƒ áƒáƒ£áƒªáƒ˜áƒšáƒ”ბელიáƒ"
-#: contrib/flatpages/models.py:14
+#: contrib/flatpages/models.py:15
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr ""
"თუ ეს დრáƒáƒ¨áƒ ჩáƒáƒ áƒ—ულიáƒ, მხáƒáƒšáƒ შემáƒáƒ¡áƒ£áƒš მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლებს ექნებáƒáƒ— გვერდის "
"დáƒáƒ—ვáƒáƒšáƒ˜áƒ”რების სáƒáƒ¨áƒ£áƒáƒšáƒ”ბáƒ."
-#: contrib/flatpages/models.py:18
+#: contrib/flatpages/models.py:20
msgid "flat page"
msgstr "უბრáƒáƒšáƒ გვერდი"
-#: contrib/flatpages/models.py:19
+#: contrib/flatpages/models.py:21
msgid "flat pages"
msgstr "უბრáƒáƒšáƒ გვერდები"
+#: contrib/flatpages/models.py:27
+msgid "Advanced options"
+msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი პáƒáƒ áƒáƒ›áƒ”ტრები"
+
#: contrib/humanize/templatetags/humanize.py:19
msgid "th"
msgstr ""
@@ -3632,23 +3644,23 @@ msgstr "გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებáƒ"
msgid "redirects"
msgstr "გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებები"
-#: contrib/sessions/models.py:41
+#: contrib/sessions/models.py:45
msgid "session key"
msgstr "სესიის გáƒáƒ¡áƒáƒ¦áƒ”ბი"
-#: contrib/sessions/models.py:42
+#: contrib/sessions/models.py:47
msgid "session data"
msgstr "სესიის მáƒáƒœáƒáƒªáƒ”მები"
-#: contrib/sessions/models.py:43
+#: contrib/sessions/models.py:48
msgid "expire date"
msgstr "áƒáƒ›áƒáƒ¬áƒ£áƒ áƒ•áƒ˜áƒ¡ თáƒáƒ áƒ˜áƒ¦áƒ˜"
-#: contrib/sessions/models.py:48
+#: contrib/sessions/models.py:53
msgid "session"
msgstr "სესიáƒ"
-#: contrib/sessions/models.py:49
+#: contrib/sessions/models.py:54
msgid "sessions"
msgstr "სესიები"
@@ -3720,7 +3732,7 @@ msgstr "áƒáƒ áƒáƒªáƒ˜áƒ¤áƒ áƒ£áƒšáƒ˜ სიმბáƒáƒšáƒáƒ”ბი áƒáƒ¥ დ
msgid "This value can't be comprised solely of digits."
msgstr "ეს მნიშვნელáƒáƒ‘რáƒáƒ  უნდრშედგებáƒáƒ“ეს მხáƒáƒšáƒáƒ“ ციფრებისáƒáƒ’áƒáƒœ."
-#: core/validators.py:128 newforms/fields.py:151
+#: core/validators.py:128 newforms/fields.py:157
msgid "Enter a whole number."
msgstr "შეიყვáƒáƒœáƒ”თ მთელი რიცხვი"
@@ -3737,7 +3749,7 @@ msgstr "წელი უნდრიყáƒáƒ¡ 1900 áƒáƒœ მეტი."
msgid "Invalid date: %s"
msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ თáƒáƒ áƒ˜áƒ¦áƒ˜: %s"
-#: core/validators.py:156 db/models/fields/__init__.py:518
+#: core/validators.py:156 db/models/fields/__init__.py:565
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "შეიყვáƒáƒœáƒ”თ სწáƒáƒ áƒ˜ თáƒáƒ áƒ˜áƒ¦áƒ˜ YYYY-MM-DD ფáƒáƒ áƒ›áƒáƒ¢áƒ¨áƒ˜."
@@ -3745,21 +3757,20 @@ msgstr "შეიყვáƒáƒœáƒ”თ სწáƒáƒ áƒ˜ თáƒáƒ áƒ˜áƒ¦áƒ˜ YYYY-MM-D
msgid "Enter a valid time in HH:MM format."
msgstr "შეიყვáƒáƒœáƒ”თ სწáƒáƒ áƒ˜ დრრHH:MM ფáƒáƒ áƒ›áƒáƒ¢áƒ¨áƒ˜."
-#: core/validators.py:165 db/models/fields/__init__.py:595
+#: core/validators.py:165 db/models/fields/__init__.py:642
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "შეიყვáƒáƒœáƒ”თ სწáƒáƒ áƒ˜ თáƒáƒ áƒ˜áƒ¦áƒ˜ დრდრრYYYY-MM-DD HH:MM ფáƒáƒ áƒ›áƒáƒ¢áƒ¨áƒ˜."
-#: core/validators.py:170 newforms/fields.py:402
+#: core/validators.py:170 newforms/fields.py:408
msgid "Enter a valid e-mail address."
msgstr "შეიყვáƒáƒœáƒ”თ სწáƒáƒ áƒ˜ ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი."
-#: core/validators.py:182 core/validators.py:474 newforms/fields.py:432
-#: oldforms/__init__.py:687
+#: core/validators.py:182 core/validators.py:474 newforms/fields.py:426
msgid "No file was submitted. Check the encoding type on the form."
msgstr ""
"ფáƒáƒ˜áƒšáƒ˜ áƒáƒ  იყრგáƒáƒ›áƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒšáƒ˜. შეáƒáƒ›áƒáƒ¬áƒ›áƒ”თ კáƒáƒ“ირების ტიპი მáƒáƒªáƒ”მული ფáƒáƒ áƒ›áƒ˜áƒ¡áƒáƒ—ვის."
-#: core/validators.py:193 newforms/fields.py:458
+#: core/validators.py:193 newforms/fields.py:468
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
@@ -3878,9 +3889,9 @@ msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
"Please enter a valid decimal number with at most %s total digits."
msgstr[0] ""
-"გთხáƒáƒ•áƒ—, შეიყვáƒáƒœáƒáƒ— სწáƒáƒ áƒ˜, áƒáƒ áƒáƒ£áƒ›áƒ”ტეს %s თáƒáƒœáƒ áƒ˜áƒ’ისáƒáƒ’áƒáƒœ შემდგáƒáƒ áƒ˜ áƒáƒ—áƒáƒ‘ითი რიცხვი"
+"გთხáƒáƒ•áƒ—, შეიყვáƒáƒœáƒáƒ— სწáƒáƒ áƒ˜, áƒáƒ áƒáƒ£áƒ›áƒ”ტეს %s თáƒáƒœáƒ áƒ˜áƒ’ისáƒáƒ’áƒáƒœ შემდგáƒáƒ áƒ˜ áƒáƒ—áƒáƒ‘ითი რიცხვი."
msgstr[1] ""
-"გთხáƒáƒ•áƒ—, შეიყვáƒáƒœáƒáƒ— სწáƒáƒ áƒ˜, áƒáƒ áƒáƒ£áƒ›áƒ”ტეს %s თáƒáƒœáƒ áƒ˜áƒ’ისáƒáƒ’áƒáƒœ შემდგáƒáƒ áƒ˜ áƒáƒ—áƒáƒ‘ითი რიცხვი"
+"გთხáƒáƒ•áƒ—, შეიყვáƒáƒœáƒáƒ— სწáƒáƒ áƒ˜, áƒáƒ áƒáƒ£áƒ›áƒ”ტეს %s თáƒáƒœáƒ áƒ˜áƒ’ისáƒáƒ’áƒáƒœ შემდგáƒáƒ áƒ˜ áƒáƒ—áƒáƒ‘ითი რიცხვი."
#: core/validators.py:447
#, python-format
@@ -4009,53 +4020,53 @@ msgstr "%(object)s მáƒáƒªáƒ”მული %(type)s-ით უკვე áƒáƒ á
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "%(optname)s მáƒáƒªáƒ”მული %(fieldname)s-ით უკვე áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს."
-#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:318
-#: db/models/fields/__init__.py:750 db/models/fields/__init__.py:761
-#: newforms/fields.py:45 oldforms/__init__.py:374
+#: db/models/fields/__init__.py:184 db/models/fields/__init__.py:356
+#: db/models/fields/__init__.py:799 db/models/fields/__init__.py:810
+#: newforms/fields.py:51 oldforms/__init__.py:374
msgid "This field is required."
msgstr "ეს ველი áƒáƒ£áƒªáƒ˜áƒšáƒ”ბელიáƒ."
-#: db/models/fields/__init__.py:418
+#: db/models/fields/__init__.py:465
msgid "This value must be an integer."
msgstr "ეს მნიშვნელáƒáƒ‘რუნდრიყáƒáƒ¡ მთელი."
-#: db/models/fields/__init__.py:457
+#: db/models/fields/__init__.py:504
msgid "This value must be either True or False."
msgstr "ეს მნიშვნელáƒáƒ‘რუნდრიყáƒáƒ¡ True áƒáƒœ False."
-#: db/models/fields/__init__.py:481
+#: db/models/fields/__init__.py:528
msgid "This field cannot be null."
msgstr "ეს მნიშვნელáƒáƒ‘რáƒáƒ  შეიძლებრიყáƒáƒ¡ null."
-#: db/models/fields/__init__.py:659
+#: db/models/fields/__init__.py:706
msgid "This value must be a decimal number."
msgstr "ეს მნიშვნელáƒáƒ‘რუნდრიყáƒáƒ¡ áƒáƒ—áƒáƒ‘ითი რიცხვი."
-#: db/models/fields/__init__.py:770
+#: db/models/fields/__init__.py:819
msgid "Enter a valid filename."
msgstr "შეიყვáƒáƒœáƒ”თ სწáƒáƒ áƒ˜ ფáƒáƒ˜áƒšáƒ˜áƒ¡ სáƒáƒ®áƒ”ლი."
-#: db/models/fields/__init__.py:941
+#: db/models/fields/__init__.py:1013
msgid "This value must be either None, True or False."
msgstr "ეს მნიშვნელáƒáƒ‘რუნდრიყáƒáƒ¡ None, True áƒáƒœ False."
-#: db/models/fields/related.py:55
+#: db/models/fields/related.py:94
#, python-format
msgid "Please enter a valid %s."
msgstr "გთხáƒáƒ•áƒ—, შეიყვáƒáƒœáƒáƒ— სწáƒáƒ áƒ˜ %s."
-#: db/models/fields/related.py:658
+#: db/models/fields/related.py:756
msgid "Separate multiple IDs with commas."
msgstr "გáƒáƒ›áƒáƒ§áƒáƒ•áƒ˜áƒ— ID-ები მძიმეებით."
-#: db/models/fields/related.py:660
+#: db/models/fields/related.py:758
msgid ""
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
"დáƒáƒáƒ­áƒ˜áƒ áƒ”თ \"Control\", áƒáƒœ \"Command\" Mac-ზე, ერთზე მეტი მნიშვნელáƒáƒ‘ის "
"áƒáƒ¡áƒáƒ áƒ©áƒ”ვáƒáƒ“."
-#: db/models/fields/related.py:707
+#: db/models/fields/related.py:805
#, python-format
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
msgid_plural ""
@@ -4065,99 +4076,99 @@ msgstr[0] ""
msgstr[1] ""
"გთხáƒáƒ•áƒ—, შეიყვáƒáƒœáƒáƒ— სწáƒáƒ áƒ˜ %(self)s ID-ები. მნიშვნელáƒáƒ‘ები %(value)r áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ."
-#: newforms/fields.py:46
+#: newforms/fields.py:52
msgid "Enter a valid value."
msgstr "შეიყვáƒáƒœáƒ”თ სწáƒáƒ áƒ˜ მნიშვნელáƒáƒ‘áƒ."
-#: newforms/fields.py:123
+#: newforms/fields.py:129
#, python-format
msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
msgstr ""
"დáƒáƒ áƒ¬áƒ›áƒ£áƒœáƒ“ით, რáƒáƒ› მნიშვნელáƒáƒ‘რშედგებრáƒáƒ áƒáƒ£áƒ›áƒ”ტეს %(max)d სიმბáƒáƒšáƒáƒ¡áƒáƒ’áƒáƒœ (áƒáƒ®áƒšáƒ "
"მისი სიგრძერ%(length)d)."
-#: newforms/fields.py:124
+#: newforms/fields.py:130
#, python-format
msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
msgstr ""
"დáƒáƒ áƒ¬áƒ›áƒ£áƒœáƒ“ით, რáƒáƒ› მნიშვნელáƒáƒ‘რშედგებრáƒáƒ áƒáƒœáƒáƒ™áƒšáƒ”ბ %(min)d სიმბáƒáƒšáƒáƒ¡áƒáƒ’áƒáƒœ (áƒáƒ®áƒšáƒ "
"მისი სიგრძერ%(length)d)."
-#: newforms/fields.py:152 newforms/fields.py:181 newforms/fields.py:210
+#: newforms/fields.py:158 newforms/fields.py:187 newforms/fields.py:216
#, python-format
msgid "Ensure this value is less than or equal to %s."
msgstr "დáƒáƒ áƒ¬áƒ›áƒ£áƒœáƒ“ით, რáƒáƒ› მნიშვნელáƒáƒ‘რნáƒáƒ™áƒšáƒ”ბირáƒáƒœ ტáƒáƒšáƒ˜áƒ %s-ზე."
-#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211
+#: newforms/fields.py:159 newforms/fields.py:188 newforms/fields.py:217
#, python-format
msgid "Ensure this value is greater than or equal to %s."
msgstr "დáƒáƒ áƒ¬áƒ›áƒ£áƒœáƒ“ით, რáƒáƒ› მნიშვნელáƒáƒ‘რმეტირáƒáƒœ ტáƒáƒšáƒ˜áƒ %s-ზე."
-#: newforms/fields.py:180 newforms/fields.py:209
+#: newforms/fields.py:186 newforms/fields.py:215
msgid "Enter a number."
msgstr "შეიყვáƒáƒœáƒ”თ რიცხვი."
-#: newforms/fields.py:212
+#: newforms/fields.py:218
#, python-format
msgid "Ensure that there are no more than %s digits in total."
msgstr "დáƒáƒ áƒ¬áƒ›áƒ£áƒœáƒ“ით, რáƒáƒ› მნიშვნელáƒáƒ‘რ%s თáƒáƒœáƒ áƒ˜áƒ’ს áƒáƒ  áƒáƒ¦áƒ”მáƒáƒ¢áƒ”ბáƒ."
-#: newforms/fields.py:213
+#: newforms/fields.py:219
#, python-format
msgid "Ensure that there are no more than %s decimal places."
msgstr "დáƒáƒ áƒ¬áƒ›áƒ£áƒœáƒ“ით, რáƒáƒ› წილáƒáƒ“ი ნáƒáƒ¬áƒ˜áƒšáƒ˜ %s თáƒáƒœáƒ áƒ˜áƒ’ს áƒáƒ  áƒáƒ¦áƒ”მáƒáƒ¢áƒ”ბáƒ."
-#: newforms/fields.py:214
+#: newforms/fields.py:220
#, python-format
msgid "Ensure that there are no more than %s digits before the decimal point."
msgstr "დáƒáƒ áƒ¬áƒ›áƒ£áƒœáƒ“ით, რáƒáƒ› მთელი ნáƒáƒ¬áƒ˜áƒšáƒ˜ %s თáƒáƒœáƒ áƒ˜áƒ’ს áƒáƒ  áƒáƒ¦áƒ”მáƒáƒ¢áƒ”ბáƒ."
-#: newforms/fields.py:262 newforms/fields.py:723
+#: newforms/fields.py:268 newforms/fields.py:781
msgid "Enter a valid date."
msgstr "შეიყვáƒáƒœáƒ”თ სწáƒáƒ áƒ˜ თáƒáƒ áƒ˜áƒ¦áƒ˜."
-#: newforms/fields.py:295 newforms/fields.py:724
+#: newforms/fields.py:301 newforms/fields.py:782
msgid "Enter a valid time."
msgstr "შეიყვáƒáƒœáƒ”თ სწáƒáƒ áƒ˜ დრáƒ."
-#: newforms/fields.py:334
+#: newforms/fields.py:340
msgid "Enter a valid date/time."
msgstr "შეიყვáƒáƒœáƒ”თ სწáƒáƒ áƒ˜ თáƒáƒ áƒ˜áƒ¦áƒ˜ დრდრáƒ."
-#: newforms/fields.py:433
+#: newforms/fields.py:427
msgid "No file was submitted."
msgstr "ფáƒáƒ˜áƒšáƒ˜ áƒáƒ  იყრგáƒáƒ›áƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒšáƒ˜."
-#: newforms/fields.py:434 oldforms/__init__.py:689
+#: newforms/fields.py:428 oldforms/__init__.py:693
msgid "The submitted file is empty."
msgstr "გáƒáƒ›áƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ˜ ცáƒáƒ áƒ˜áƒ”ლიáƒ."
-#: newforms/fields.py:496
+#: newforms/fields.py:524
msgid "Enter a valid URL."
msgstr "შეიყვáƒáƒœáƒ”თ სწáƒáƒ áƒ˜ URL."
-#: newforms/fields.py:497
+#: newforms/fields.py:525
msgid "This URL appears to be a broken link."
msgstr "რáƒáƒ’áƒáƒ áƒª ჩáƒáƒœáƒ¡, URL áƒáƒ áƒ˜áƒ¡ გáƒáƒ¬áƒ§áƒ•áƒ”ტილი ბმული."
-#: newforms/fields.py:559 newforms/models.py:300
+#: newforms/fields.py:590 newforms/models.py:306
msgid "Select a valid choice. That choice is not one of the available choices."
msgstr "áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბი მნიშვნელáƒáƒ‘áƒ. ეს áƒáƒ áƒ©áƒ”ვáƒáƒœáƒ˜ დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბი áƒáƒ  áƒáƒ áƒ˜áƒ¡."
-#: newforms/fields.py:598
+#: newforms/fields.py:629
#, python-format
msgid "Select a valid choice. %(value)s is not one of the available choices."
msgstr "áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბი მნიშვნელáƒáƒ‘áƒ. %(value)s დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბი áƒáƒ  áƒáƒ áƒ˜áƒ¡."
-#: newforms/fields.py:599 newforms/fields.py:661 newforms/models.py:360
+#: newforms/fields.py:630 newforms/fields.py:692 newforms/models.py:373
msgid "Enter a list of values."
msgstr "შეიყვáƒáƒœáƒ”თ მნიშვნელáƒáƒ‘ების სიáƒ."
-#: newforms/fields.py:752
+#: newforms/fields.py:810
msgid "Enter a valid IPv4 address."
msgstr "შეიყვáƒáƒœáƒ”თ სწáƒáƒ áƒ˜ IPv4 მისáƒáƒ›áƒáƒ áƒ—ი."
-#: newforms/models.py:361
+#: newforms/models.py:374
#, python-format
msgid "Select a valid choice. %s is not one of the available choices."
msgstr "áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბი მნიშვნელáƒáƒ‘áƒ. %s დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბი áƒáƒ  áƒáƒ áƒ˜áƒ¡."
@@ -4180,40 +4191,40 @@ msgstr ""
"áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბი მნიშვნელáƒáƒ‘áƒ; '%(data)s' áƒáƒ  áƒáƒ áƒ˜áƒ¡ %(choices)s მნიშვნელáƒáƒ‘ების "
"სიáƒáƒ¨áƒ˜."
-#: oldforms/__init__.py:745
+#: oldforms/__init__.py:754
msgid "Enter a whole number between -32,768 and 32,767."
msgstr "შეიყვáƒáƒœáƒ”თ მთელი რიცხვი -32,768-დáƒáƒœ 32,767-მდე."
-#: oldforms/__init__.py:755
+#: oldforms/__init__.py:764
msgid "Enter a positive number."
msgstr "შეიყვáƒáƒœáƒ”თ დáƒáƒ“ებითი რიცხვი."
-#: oldforms/__init__.py:765
+#: oldforms/__init__.py:774
msgid "Enter a whole number between 0 and 32,767."
msgstr "შეიყვáƒáƒœáƒ”თ მთელი რიცხვი 0-დáƒáƒœ 32,767-მდე."
-#: template/defaultfilters.py:691
+#: template/defaultfilters.py:698
msgid "yes,no,maybe"
msgstr "კი,áƒáƒ áƒ,შესáƒáƒ«áƒšáƒáƒ"
-#: template/defaultfilters.py:722
+#: template/defaultfilters.py:729
#, python-format
msgid "%(size)d byte"
msgid_plural "%(size)d bytes"
msgstr[0] "%(size)d ბáƒáƒ˜áƒ¢áƒ˜"
msgstr[1] "%(size)d ბáƒáƒ˜áƒ¢áƒ˜"
-#: template/defaultfilters.py:724
+#: template/defaultfilters.py:731
#, python-format
msgid "%.1f KB"
msgstr "%.1f კბáƒáƒ˜áƒ¢áƒ˜"
-#: template/defaultfilters.py:726
+#: template/defaultfilters.py:733
#, python-format
msgid "%.1f MB"
msgstr "%.1f მბáƒáƒ˜áƒ¢áƒ˜"
-#: template/defaultfilters.py:727
+#: template/defaultfilters.py:734
#, python-format
msgid "%.1f GB"
msgstr "%.1f გბáƒáƒ˜áƒ¢áƒ˜"
@@ -4422,7 +4433,7 @@ msgstr "ნáƒáƒ”მ."
msgid "Dec."
msgstr "დეკ."
-#: utils/text.py:127
+#: utils/text.py:128
msgid "or"
msgstr "áƒáƒœ"
@@ -4476,23 +4487,23 @@ msgstr ""
msgid ", %(number)d %(type)s"
msgstr ""
-#: utils/translation/trans_real.py:404
+#: utils/translation/trans_real.py:412
msgid "DATE_FORMAT"
msgstr "d.m.Y"
-#: utils/translation/trans_real.py:405
+#: utils/translation/trans_real.py:413
msgid "DATETIME_FORMAT"
msgstr "d.m.Y H:i"
-#: utils/translation/trans_real.py:406
+#: utils/translation/trans_real.py:414
msgid "TIME_FORMAT"
msgstr "H:i"
-#: utils/translation/trans_real.py:422
+#: utils/translation/trans_real.py:430
msgid "YEAR_MONTH_FORMAT"
msgstr "d.m.Y"
-#: utils/translation/trans_real.py:423
+#: utils/translation/trans_real.py:431
msgid "MONTH_DAY_FORMAT"
msgstr "d.m.Y"
@@ -4510,3 +4521,6 @@ msgstr "%(verbose_name)s წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით შეიცვáƒáƒšáƒ
#, python-format
msgid "The %(verbose_name)s was deleted."
msgstr "%(verbose_name)s წáƒáƒ˜áƒ¨áƒáƒšáƒ."
+
+#~ msgid "Brazilian"
+#~ msgstr "ბრáƒáƒ–ილიური"
diff --git a/django/conf/locale/nl/LC_MESSAGES/django.mo b/django/conf/locale/nl/LC_MESSAGES/django.mo
index 3797766bc9..fe68cd416f 100644
--- a/django/conf/locale/nl/LC_MESSAGES/django.mo
+++ b/django/conf/locale/nl/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/nl/LC_MESSAGES/django.po b/django/conf/locale/nl/LC_MESSAGES/django.po
index 13143c5b8b..7aa8d3fe83 100644
--- a/django/conf/locale/nl/LC_MESSAGES/django.po
+++ b/django/conf/locale/nl/LC_MESSAGES/django.po
@@ -1,201 +1,213 @@
+# Dutch translation for Django.
+# Copyright (C) 2008, Django Software Foundation
+# This file is distributed under the same license as the Django package.
+#
msgid ""
msgstr ""
"Project-Id-Version: Django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-27 08:53+0100\n"
-"PO-Revision-Date: 2008-02-27 11:22+0100\n"
-"Last-Translator: jdetaeye <jdetaeye@frepple.com>\n"
+"POT-Creation-Date: 2008-07-30 02:28+0200\n"
+"PO-Revision-Date: 2008-07-31 23:08+0200\n"
+"Last-Translator: Rudolph Froger <rudolphfroger@estrate.nl>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: conf/global_settings.py:39
+#: conf/global_settings.py:44
msgid "Arabic"
msgstr "Arabisch"
-#: conf/global_settings.py:40
+#: conf/global_settings.py:45
msgid "Bengali"
msgstr "Bengaals"
-#: conf/global_settings.py:41
+#: conf/global_settings.py:46
msgid "Bulgarian"
msgstr "Bulgaars"
-#: conf/global_settings.py:42
+#: conf/global_settings.py:47
msgid "Catalan"
msgstr "Catalaans"
-#: conf/global_settings.py:43
+#: conf/global_settings.py:48
msgid "Czech"
msgstr "Tjechisch"
-#: conf/global_settings.py:44
+#: conf/global_settings.py:49
msgid "Welsh"
msgstr "Wels"
-#: conf/global_settings.py:45
+#: conf/global_settings.py:50
msgid "Danish"
msgstr "Deens"
-#: conf/global_settings.py:46
+#: conf/global_settings.py:51
msgid "German"
msgstr "Duits"
-#: conf/global_settings.py:47
+#: conf/global_settings.py:52
msgid "Greek"
msgstr "Grieks"
-#: conf/global_settings.py:48
+#: conf/global_settings.py:53
msgid "English"
msgstr "Engels"
-#: conf/global_settings.py:49
+#: conf/global_settings.py:54
msgid "Spanish"
msgstr "Spaans"
-#: conf/global_settings.py:50
+#: conf/global_settings.py:55
+msgid "Estonian"
+msgstr "Ests"
+
+#: conf/global_settings.py:56
msgid "Argentinean Spanish"
msgstr "Argentijns Spaans"
-#: conf/global_settings.py:51
+#: conf/global_settings.py:57
msgid "Basque"
msgstr "Baskisch"
-#: conf/global_settings.py:52
+#: conf/global_settings.py:58
msgid "Persian"
msgstr "Perzisch"
-#: conf/global_settings.py:53
+#: conf/global_settings.py:59
msgid "Finnish"
msgstr "Fins"
-#: conf/global_settings.py:54
+#: conf/global_settings.py:60
msgid "French"
msgstr "Frans"
-#: conf/global_settings.py:55
+#: conf/global_settings.py:61
msgid "Irish"
msgstr "Iers"
-#: conf/global_settings.py:56
+#: conf/global_settings.py:62
msgid "Galician"
msgstr "Galicisch"
-#: conf/global_settings.py:57
+#: conf/global_settings.py:63
msgid "Hungarian"
msgstr "Hongaars"
-#: conf/global_settings.py:58
+#: conf/global_settings.py:64
msgid "Hebrew"
msgstr "Hebreews"
-#: conf/global_settings.py:59
+#: conf/global_settings.py:65
msgid "Croatian"
msgstr "Kroatisch"
-#: conf/global_settings.py:60
+#: conf/global_settings.py:66
msgid "Icelandic"
msgstr "IJslands"
-#: conf/global_settings.py:61
+#: conf/global_settings.py:67
msgid "Italian"
msgstr "Italiaans"
-#: conf/global_settings.py:62
+#: conf/global_settings.py:68
msgid "Japanese"
msgstr "Japans"
-#: conf/global_settings.py:63
+#: conf/global_settings.py:69
msgid "Georgian"
msgstr "Georgisch"
-#: conf/global_settings.py:64
+#: conf/global_settings.py:70
msgid "Korean"
msgstr "Koreaans"
-#: conf/global_settings.py:65
+#: conf/global_settings.py:71
msgid "Khmer"
msgstr "Khmer"
-#: conf/global_settings.py:66
+#: conf/global_settings.py:72
msgid "Kannada"
msgstr "Kannada"
-#: conf/global_settings.py:67
+#: conf/global_settings.py:73
msgid "Latvian"
msgstr "Lets"
-#: conf/global_settings.py:68
+#: conf/global_settings.py:74
+msgid "Lithuanian"
+msgstr "Litouws"
+
+#: conf/global_settings.py:75
msgid "Macedonian"
msgstr "Macedonisch"
-#: conf/global_settings.py:69
+#: conf/global_settings.py:76
msgid "Dutch"
msgstr "Nederlands"
-#: conf/global_settings.py:70
+#: conf/global_settings.py:77
msgid "Norwegian"
msgstr "Noors"
-#: conf/global_settings.py:71
+#: conf/global_settings.py:78
msgid "Polish"
msgstr "Pools"
-#: conf/global_settings.py:72
+#: conf/global_settings.py:79
msgid "Portugese"
msgstr "Portugees"
-#: conf/global_settings.py:73
-msgid "Brazilian"
-msgstr "Braziliaans"
+#: conf/global_settings.py:80
+msgid "Brazilian Portuguese"
+msgstr "Braziliaans Portugees"
-#: conf/global_settings.py:74
+#: conf/global_settings.py:81
msgid "Romanian"
msgstr "Roemeens"
-#: conf/global_settings.py:75
+#: conf/global_settings.py:82
msgid "Russian"
msgstr "Russisch"
-#: conf/global_settings.py:76
+#: conf/global_settings.py:83
msgid "Slovak"
msgstr "Slovaaks"
-#: conf/global_settings.py:77
+#: conf/global_settings.py:84
msgid "Slovenian"
msgstr "Sloveens"
-#: conf/global_settings.py:78
+#: conf/global_settings.py:85
msgid "Serbian"
msgstr "Servisch"
-#: conf/global_settings.py:79
+#: conf/global_settings.py:86
msgid "Swedish"
msgstr "Zweeds"
-#: conf/global_settings.py:80
+#: conf/global_settings.py:87
msgid "Tamil"
msgstr "Tamil"
-#: conf/global_settings.py:81
+#: conf/global_settings.py:88
msgid "Telugu"
msgstr "Telegu"
-#: conf/global_settings.py:82
+#: conf/global_settings.py:89
msgid "Turkish"
msgstr "Turks"
-#: conf/global_settings.py:83
+#: conf/global_settings.py:90
msgid "Ukrainian"
msgstr "Oekraïens"
-#: conf/global_settings.py:84
+#: conf/global_settings.py:91
msgid "Simplified Chinese"
msgstr "Vereenvoudigd Chinees"
-#: conf/global_settings.py:85
+#: conf/global_settings.py:92
msgid "Traditional Chinese"
msgstr "Traditioneel Chinees"
@@ -208,10 +220,8 @@ msgstr ""
"<h3>Door %s:</h3>\n"
"<ul>\n"
-#: contrib/admin/filterspecs.py:74
-#: contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147
-#: contrib/admin/filterspecs.py:173
+#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
+#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
msgid "All"
msgstr "Alle"
@@ -235,51 +245,205 @@ msgstr "Deze maand"
msgid "This year"
msgstr "Dit jaar"
-#: contrib/admin/filterspecs.py:147
-#: newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "Yes"
msgstr "Ja"
-#: contrib/admin/filterspecs.py:147
-#: newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "No"
msgstr "Nee"
-#: contrib/admin/filterspecs.py:154
-#: newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "Unknown"
msgstr "Onbekend"
-#: contrib/admin/models.py:18
+#: contrib/admin/models.py:19
msgid "action time"
-msgstr "actie tijd"
+msgstr "actietijd"
-#: contrib/admin/models.py:21
+#: contrib/admin/models.py:22
msgid "object id"
-msgstr "object id"
+msgstr "object-id"
-#: contrib/admin/models.py:22
+#: contrib/admin/models.py:23
msgid "object repr"
-msgstr "object repr"
+msgstr "object-repr"
-#: contrib/admin/models.py:23
+#: contrib/admin/models.py:24
msgid "action flag"
-msgstr "actie vlag"
+msgstr "actievlag"
-#: contrib/admin/models.py:24
+#: contrib/admin/models.py:25
msgid "change message"
msgstr "wijzig bericht"
-#: contrib/admin/models.py:27
+#: contrib/admin/models.py:28
msgid "log entry"
-msgstr "log ingave"
+msgstr "logingave"
-#: contrib/admin/models.py:28
+#: contrib/admin/models.py:29
msgid "log entries"
-msgstr "log ingaves"
+msgstr "logingaves"
+
+#: contrib/admin/options.py:161 contrib/admin/options.py:180
+msgid "None"
+msgstr "Geen"
+
+#: contrib/admin/options.py:347 contrib/auth/admin.py:37
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "De %(name)s \"%(obj)s\" is toegevoegd."
+
+#: contrib/admin/options.py:351 contrib/admin/options.py:419
+#: contrib/auth/admin.py:42
+msgid "You may edit it again below."
+msgstr "U kunt dit hieronder weer bewerken."
+
+#: contrib/admin/options.py:361 contrib/admin/options.py:428
+#, python-format
+msgid "You may add another %s below."
+msgstr "U kunt hieronder de volgende %s toevoegen."
+
+#: contrib/admin/options.py:395
+#, python-format
+msgid "Changed %s."
+msgstr "%s gewijzigd."
+
+#: contrib/admin/options.py:395 contrib/admin/options.py:405
+#: core/validators.py:279 db/models/manipulators.py:305
+msgid "and"
+msgstr "en"
+
+#: contrib/admin/options.py:400
+#, python-format
+msgid "Added %(name)s \"%(object)s\"."
+msgstr "%(name)s \"%(object)s\" toegevoegd."
+
+#: contrib/admin/options.py:404
+#, python-format
+msgid "Changed %(list)s for %(name)s \"%(object)s\"."
+msgstr "%(list)s aangepast voor %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:409
+#, python-format
+msgid "Deleted %(name)s \"%(object)s\"."
+msgstr "%(name)s \"%(object)s\" verwijderd."
+
+#: contrib/admin/options.py:414
+msgid "No fields changed."
+msgstr "Geen velden gewijzigd."
+
+#: contrib/admin/options.py:417
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr "Het wijzigen van %(name)s \"%(obj)s\" is geslaagd."
+
+#: contrib/admin/options.py:425
+#, python-format
+msgid ""
+"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr "De %(name)s \"%(obj)s\" was toegevoegd. U kunt het hieronder wijzigen."
+
+#: contrib/admin/options.py:506
+#, python-format
+msgid "Add %s"
+msgstr "Toevoegen %s"
+
+#: contrib/admin/options.py:568
+#, python-format
+msgid "Change %s"
+msgstr "Wijzig %s"
+
+#: contrib/admin/options.py:598
+msgid "Database error"
+msgstr "Databasefout"
+
+#: contrib/admin/options.py:647
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "De verwijdering van %(name)s \"%(obj)s\" is geslaagd."
+
+#: contrib/admin/options.py:653
+msgid "Are you sure?"
+msgstr "Weet u het zeker?"
+
+#: contrib/admin/options.py:680
+#, python-format
+msgid "Change history: %s"
+msgstr "Wijzigingsgeschiedenis: %s"
+
+#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
+#: contrib/auth/forms.py:70 contrib/comments/views/comments.py:56
+msgid ""
+"Please enter a correct username and password. Note that both fields are case-"
+"sensitive."
+msgstr ""
+"Voer een correcte gebruikersnaam en wachtwoord in. Let op, de velden zijn "
+"hoofdletter-gevoelig."
+
+#: contrib/admin/sites.py:233 contrib/admin/views/decorators.py:68
+msgid ""
+"Please log in again, because your session has expired. Don't worry: Your "
+"submission has been saved."
+msgstr ""
+"Uw sessie is verlopen, meld u opnieuw aan. Maakt u zich geen zorgen: Uw "
+"bijdrage is opgeslagen."
+
+#: contrib/admin/sites.py:240 contrib/admin/views/decorators.py:75
+msgid ""
+"Looks like your browser isn't configured to accept cookies. Please enable "
+"cookies, reload this page, and try again."
+msgstr ""
+"Het lijkt erop dat uw browser geen cookies accepteert. Zet het gebruik van "
+"cookies aan in uw browser, laad deze pagina nogmaals en probeer het opnieuw."
+
+#: contrib/admin/sites.py:254 contrib/admin/sites.py:260
+#: contrib/admin/views/decorators.py:92
+msgid "Usernames cannot contain the '@' character."
+msgstr "Gebruikersnamen mogen geen '@' bevatten."
+
+#: contrib/admin/sites.py:257 contrib/admin/views/decorators.py:88
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr "Uw e-mailadres is niet uw gebruikersnaam. Probeer '%s' eens."
+
+#: contrib/admin/sites.py:325
+msgid "Site administration"
+msgstr "Sitebeheer"
+
+#: contrib/admin/sites.py:347 contrib/admin/templates/admin/login.html:27
+#: contrib/admin/views/decorators.py:30
+msgid "Log in"
+msgstr "Inloggen"
+
+#: contrib/admin/util.py:126
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr "Een of meer %(fieldname)s in %(name)s: %(obj)s"
+
+#: contrib/admin/util.py:131
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "Een of meer %(fieldname)s in %(name)s:"
+
+#: contrib/admin/widgets.py:65
+msgid "Date:"
+msgstr "Datum:"
+
+#: contrib/admin/widgets.py:65
+msgid "Time:"
+msgstr "Tijd:"
+
+#: contrib/admin/widgets.py:89
+msgid "Currently:"
+msgstr "Huidige:"
+
+#: contrib/admin/widgets.py:89
+msgid "Change:"
+msgstr "Wijziging:"
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
@@ -291,17 +455,17 @@ msgid "We're sorry, but the requested page could not be found."
msgstr "Onze excuses, maar de gevraagde pagina bestaat niet."
#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/change_form.html:17
+#: contrib/admin/templates/admin/change_list.html:8
+#: contrib/admin/templates/admin/delete_confirmation.html:6
#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/auth/user/change_password.html:10
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_reset_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
msgid "Home"
@@ -309,98 +473,115 @@ msgstr "Voorpagina"
#: contrib/admin/templates/admin/500.html:4
msgid "Server error"
-msgstr "Server fout"
+msgstr "Serverfout"
#: contrib/admin/templates/admin/500.html:6
msgid "Server error (500)"
-msgstr "Server fout (500)"
+msgstr "Serverfout (500)"
#: contrib/admin/templates/admin/500.html:9
msgid "Server Error <em>(500)</em>"
-msgstr "Server Fout <em>(500)</em>"
+msgstr "Serverfout <em>(500)</em>"
#: contrib/admin/templates/admin/500.html:10
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "Er is een fout opgetreden. Dit is inmiddels doorgegeven aan de sitebeheerder via e-mail en zal spoedig worden gerepareerd. Bedankt voor uw geduld."
+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 ""
+"Er is een fout opgetreden. Dit is inmiddels doorgegeven aan de sitebeheerder "
+"via e-mail en zal spoedig worden gerepareerd. Bedankt voor uw geduld."
-#: contrib/admin/templates/admin/base.html:26
+#: contrib/admin/templates/admin/base.html:25
msgid "Welcome,"
msgstr "Welkom,"
-#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin/base.html:25
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
msgid "Documentation"
msgstr "Documentatie"
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/auth/user/change_password.html:13
+#: 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
msgid "Change password"
msgstr "Wachtwoord wijzigen"
-#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
#: contrib/comments/templates/comments/form.html:6
msgid "Log out"
msgstr "Afmelden"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
-msgstr "Django site beheer"
+msgstr "Django sitebeheer"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
-msgstr "Django beheer"
+msgstr "Djangobeheer"
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
+#: contrib/admin/templates/admin/change_form.html:19
+#: contrib/admin/templates/admin/index.html:29
msgid "Add"
msgstr "Toevoegen"
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
+#: contrib/admin/templates/admin/change_form.html:26
+#: contrib/admin/templates/admin/object_history.html:5
msgid "History"
msgstr "Geschiedenis"
-#: contrib/admin/templates/admin/change_form.html:21
+#: contrib/admin/templates/admin/change_form.html:27
msgid "View on site"
msgstr "Toon op site"
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
+#: contrib/admin/templates/admin/change_form.html:37
+#: contrib/admin/templates/admin/auth/user/change_password.html:22
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] "Herstel de fout hieronder."
msgstr[1] "Herstel de fouten hieronder."
-#: contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr "Sortering"
-
-#: contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr "Sortering:"
-
-#: contrib/admin/templates/admin/change_list.html:11
+#: contrib/admin/templates/admin/change_list.html:16
#, python-format
msgid "Add %(name)s"
msgstr "%(name)s toevoegen"
-#: contrib/admin/templates/admin/delete_confirmation.html:8
+#: contrib/admin/templates/admin/change_list.html:26
+msgid "Filter"
+msgstr "Filter"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:9
#: contrib/admin/templates/admin/submit_line.html:3
+#: contrib/admin/templates/admin/edit_inline/tabular.html:15
msgid "Delete"
msgstr "Verwijderen"
-#: contrib/admin/templates/admin/delete_confirmation.html:13
+#: contrib/admin/templates/admin/delete_confirmation.html:15
#, 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 "Het verwijderen van %(object_name)s '%(escaped_object)s' zal ook gerelateerde objecten verwijderen. Echter u heeft geen rechten om de volgende typen objecten te verwijderen:"
+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 ""
+"Het verwijderen van %(object_name)s '%(escaped_object)s' zal ook "
+"gerelateerde objecten verwijderen. Echter u heeft geen rechten om de "
+"volgende typen objecten te verwijderen:"
-#: contrib/admin/templates/admin/delete_confirmation.html:20
+#: contrib/admin/templates/admin/delete_confirmation.html:22
#, 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 "Weet u zeker dat u %(object_name)s \"%(escaped_object)s\" wilt verwijderen? Alle volgende objecten worden verwijderd:"
+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 ""
+"Weet u zeker dat u %(object_name)s \"%(escaped_object)s\" wilt verwijderen? "
+"Alle volgende objecten worden verwijderd:"
-#: contrib/admin/templates/admin/delete_confirmation.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:27
msgid "Yes, I'm sure"
msgstr "Ja, ik weet het zeker"
@@ -409,79 +590,79 @@ msgstr "Ja, ik weet het zeker"
msgid " By %(filter_title)s "
msgstr " Op %(filter_title)s "
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filter"
-
-#: contrib/admin/templates/admin/index.html:17
+#: contrib/admin/templates/admin/index.html:18
#, python-format
msgid "Models available in the %(name)s application."
msgstr "Beschikbare modellen in de %(name)s toepassing."
-#: contrib/admin/templates/admin/index.html:18
+#: contrib/admin/templates/admin/index.html:19
#, python-format
msgid "%(name)s"
msgstr "%(name)s"
-#: contrib/admin/templates/admin/index.html:34
+#: contrib/admin/templates/admin/index.html:35
msgid "Change"
msgstr "Wijzigen"
-#: contrib/admin/templates/admin/index.html:44
+#: contrib/admin/templates/admin/index.html:45
msgid "You don't have permission to edit anything."
msgstr "U heeft geen rechten om iets te wijzigen."
-#: contrib/admin/templates/admin/index.html:52
+#: contrib/admin/templates/admin/index.html:53
msgid "Recent Actions"
msgstr "Recente acties"
-#: contrib/admin/templates/admin/index.html:53
+#: contrib/admin/templates/admin/index.html:54
msgid "My Actions"
msgstr "Mijn acties"
-#: contrib/admin/templates/admin/index.html:57
+#: contrib/admin/templates/admin/index.html:58
msgid "None available"
msgstr "Geen beschikbaar"
-#: 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 "Er is iets mis met de database. Verzeker u ervan dat de benodigde tabellen zijn aangemaakt en dat de database toegankelijk is voor de juiste gebruiker."
+#: contrib/admin/templates/admin/invalid_setup.html:7
+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 ""
+"Er is iets mis met de database. Verzeker u ervan dat de benodigde tabellen "
+"zijn aangemaakt en dat de database toegankelijk is voor de juiste gebruiker."
-#: contrib/admin/templates/admin/login.html:17
+#: contrib/admin/templates/admin/login.html:19
#: contrib/comments/templates/comments/form.html:6
#: contrib/comments/templates/comments/form.html:8
msgid "Username:"
msgstr "Gebruikersnaam:"
-#: contrib/admin/templates/admin/login.html:20
+#: contrib/admin/templates/admin/login.html:22
#: contrib/comments/templates/comments/form.html:8
msgid "Password:"
msgstr "Wachtwoord:"
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:31
-msgid "Log in"
-msgstr "Aanmelden"
-
-#: contrib/admin/templates/admin/object_history.html:17
+#: contrib/admin/templates/admin/object_history.html:16
msgid "Date/time"
msgstr "Datum/tijd"
-#: contrib/admin/templates/admin/object_history.html:18
+#: contrib/admin/templates/admin/object_history.html:17
msgid "User"
msgstr "Gebruiker"
-#: contrib/admin/templates/admin/object_history.html:19
+#: contrib/admin/templates/admin/object_history.html:18
msgid "Action"
msgstr "Actie"
-#: contrib/admin/templates/admin/object_history.html:25
+#: contrib/admin/templates/admin/object_history.html:24
msgid "DATE_WITH_TIME_FULL"
msgstr "d-n-Y H:i:s"
-#: contrib/admin/templates/admin/object_history.html:35
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "Dit object heeft geen wijzigingsgeschiedenis. Het is mogelijk niet via de admin site toegevoegd."
+#: contrib/admin/templates/admin/object_history.html:32
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
+msgstr ""
+"Dit object heeft geen wijzigingsgeschiedenis. Het is mogelijk niet via de "
+"admin site toegevoegd."
#: contrib/admin/templates/admin/pagination.html:10
msgid "Show all"
@@ -520,29 +701,36 @@ msgid "Save"
msgstr "Opslaan"
#: 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 "Vul allereerst een gebruikersnaam en wachtwoord in. Vervolgens kunt u de andere opties instellen."
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+"Vul allereerst een gebruikersnaam en wachtwoord in. Vervolgens kunt u de "
+"andere opties instellen."
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
+#: contrib/admin/templates/admin/auth/user/add_form.html:13
+#: contrib/auth/forms.py:12 contrib/auth/forms.py:49
msgid "Username"
msgstr "Gebruikersnaam"
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
+#: contrib/admin/templates/admin/auth/user/add_form.html:20
#: contrib/admin/templates/admin/auth/user/change_password.html:33
+#: contrib/auth/forms.py:15 contrib/auth/forms.py:50 contrib/auth/forms.py:166
msgid "Password"
msgstr "Wachtwoord"
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
+#: contrib/admin/templates/admin/auth/user/add_form.html:26
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/auth/forms.py:167
msgid "Password (again)"
msgstr "Wachtwoord (nogmaals)"
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/admin/templates/admin/auth/user/add_form.html:27
+#: contrib/admin/templates/admin/auth/user/change_password.html:40
msgid "Enter the same password as above, for verification."
msgstr "Vul hetzelfde wachtwoord als hierboven in, ter bevestiging."
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
+#: contrib/admin/templates/admin/auth/user/change_password.html:26
#, python-format
msgid "Enter a new password for the user <strong>%(username)s</strong>."
msgstr "Geef een nieuw passwoord voor gebruiker <strong>%(username)s</strong>."
@@ -566,27 +754,40 @@ msgid ""
"your computer is \"internal\").</p>\n"
msgstr ""
"\n"
-"<p class=\"help\">Om bookmarklets te installeren, sleep de link naar uw bladwijzers\n"
-"werkbalk, of rechtermuis klik op de link en voeg het toe aan de bladwijzer. Nu kan\n"
-"de bookmarklet vanuit elke pagina op de site worden gekozen. Let erop dat het soms\n"
-"noodzakelijk is dat de computer van waaruit de pagina wordt bekeken intern is.\n"
-"(Raadpleeg uw systeembeheerder of uw computer zich op het interne netwerk bevind).<p>\n"
+"<p class=\"help\">Om bookmarklets te installeren, sleep de link naar uw "
+"bladwijzers\n"
+"werkbalk, of rechtermuis klik op de link en voeg het toe aan de bladwijzer. "
+"Nu kan\n"
+"de bookmarklet vanuit elke pagina op de site worden gekozen. Let erop dat "
+"het soms\n"
+"noodzakelijk is dat de computer van waaruit de pagina wordt bekeken intern "
+"is.\n"
+"(Raadpleeg uw systeembeheerder of uw computer zich op het interne netwerk "
+"bevind).<p>\n"
#: contrib/admin/templates/admin_doc/bookmarklets.html:18
msgid "Documentation for this page"
msgstr "Documentatie voor deze pagina"
#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Jumps you from any page to the documentation for the view that generates that page."
-msgstr "Springt vanuit elke pagina naar de documentatie voor de view die gegenereerd wordt door die pagina"
+msgid ""
+"Jumps you from any page to the documentation for the view that generates "
+"that page."
+msgstr ""
+"Springt vanuit elke pagina naar de documentatie voor de view die gegenereerd "
+"wordt door die pagina"
#: contrib/admin/templates/admin_doc/bookmarklets.html:21
msgid "Show object ID"
-msgstr "Toon object ID"
+msgstr "Toon object-ID"
#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Shows the content-type and unique ID for pages that represent a single object."
-msgstr "Toont de content-type en unieke ID voor pagina's die een enkel object voorstellen."
+msgid ""
+"Shows the content-type and unique ID for pages that represent a single "
+"object."
+msgstr ""
+"Toont het content-type en unieke ID voor pagina's die een enkel object "
+"voorstellen."
#: contrib/admin/templates/admin_doc/bookmarklets.html:24
msgid "Edit this object (current window)"
@@ -594,7 +795,8 @@ msgstr "Bewerk dit object (huidig venster)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:25
msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Gaat naar de beheerpagina voor pagina's die een enkel object weergeven."
+msgstr ""
+"Gaat naar de beheerpagina voor pagina's die een enkel object weergeven."
#: contrib/admin/templates/admin_doc/bookmarklets.html:27
msgid "Edit this object (new window)"
@@ -610,41 +812,45 @@ msgstr "Bedankt voor de aanwezigheid op de site vandaag."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
-msgstr "Meld u opnieuw aan"
+msgstr "Log opnieuw in"
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_change_form.html:6
+#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
-msgstr "Wachtwoord wijziging"
+msgstr "Wachtwoordwijziging"
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "Wachtwoord wijzigen is geslaagd"
-#: contrib/admin/templates/registration/password_change_done.html:11
+#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "Uw wachtwoord is gewijzigd."
-#: contrib/admin/templates/registration/password_change_form.html:11
-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 "Vanwege de beveiliging moet u uw oude en twee keer een nieuw wachtwoord invoeren, zodat we kunnen controleren of er geen typefouten zijn gemaakt."
+#: 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 ""
+"Vanwege de beveiliging moet u uw oude en twee keer een nieuw wachtwoord "
+"invoeren, zodat we kunnen controleren of er geen typefouten zijn gemaakt."
-#: contrib/admin/templates/registration/password_change_form.html:16
+#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "Oud wachtwoord:"
-#: contrib/admin/templates/registration/password_change_form.html:18
+#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
msgstr "Nieuw wachtwoord:"
-#: contrib/admin/templates/registration/password_change_form.html:20
+#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
msgstr "Bevestig wachtwoord:"
-#: contrib/admin/templates/registration/password_change_form.html:22
+#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
msgstr "Wijzig mijn wachtwoord"
@@ -661,8 +867,11 @@ msgid "Password reset successful"
msgstr "Wachtwoord herstel geslaagd"
#: 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 "Een nieuw wachtwoord is per e-mail verstuurd. U zult het spoedig ontvangen."
+msgid ""
+"We've e-mailed a new password to the e-mail address you submitted. You "
+"should be receiving it shortly."
+msgstr ""
+"Een nieuw wachtwoord is per e-mail verstuurd. U zult het spoedig ontvangen."
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
@@ -696,8 +905,12 @@ msgid "The %(site_name)s team"
msgstr "Het %(site_name)s team"
#: 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 "Uw wachtwoord vergeten? Geef uw e-mailadres op en er zal een nieuw wachtwoord worden toegekend en aan u worden toegezonden."
+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 ""
+"Uw wachtwoord vergeten? Geef uw e-mailadres op en er zal een nieuw "
+"wachtwoord worden toegekend en aan u worden toegezonden."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
@@ -707,356 +920,253 @@ msgstr "E-mailadres:"
msgid "Reset my password"
msgstr "Herstel mijn wachtwoord"
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Datum:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Tijd:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Huidige:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Wijziging:"
-
#: contrib/admin/templatetags/admin_list.py:257
msgid "All dates"
msgstr "Alle data"
-#: contrib/admin/views/auth.py:20
-#: contrib/admin/views/main.py:267
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "De %(name)s \"%(obj)s\" is toegevoegd."
-
-#: contrib/admin/views/auth.py:25
-#: contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr "U kunt dit hieronder weer bewerken."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Gebruiker toevoegen"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "Wachtwoord wijzigen is geslaagd"
-
-#: contrib/admin/views/auth.py:65
+#: contrib/admin/views/main.py:65
#, python-format
-msgid "Change password: %s"
-msgstr "Wijzig wachtwoord: %s"
-
-#: contrib/admin/views/decorators.py:17
-#: contrib/auth/forms.py:60
-msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
-msgstr "Voer een correcte gebruikersnaam en wachtwoord in. Let op, de velden zijn hoofdletter-gevoelig."
-
-#: contrib/admin/views/decorators.py:69
-msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
-msgstr "Uw sessie is verlopen, meld u opnieuw aan. Maakt u zich geen zorgen: Uw bijdrage is opgeslagen."
-
-#: contrib/admin/views/decorators.py:76
-msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
-msgstr "Het lijkt erop dat uw browser geen cookies accepteert. Zet het gebruik van cookies aan in uw browser, laad deze pagina nogmaals en probeer het opnieuw."
-
-#: contrib/admin/views/decorators.py:90
-msgid "Usernames cannot contain the '@' character."
-msgstr "Gebruikersnamen mogen geen '@' bevatten."
+msgid "Select %s"
+msgstr "Selecteer %s"
-#: contrib/admin/views/decorators.py:92
+#: contrib/admin/views/main.py:65
#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Uw e-mailadres is niet uw gebruikersnaam. Probeer '%s' eens."
+msgid "Select %s to change"
+msgstr "Selecteer %s om te wijzigen"
-#: contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
+#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
+#: contrib/admindocs/views.py:57
msgid "tag:"
msgstr "tag:"
-#: contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
+#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
+#: contrib/admindocs/views.py:91
msgid "filter:"
msgstr "filter:"
-#: contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
+#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
+#: contrib/admindocs/views.py:157
msgid "view:"
msgstr "view:"
-#: contrib/admin/views/doc.py:166
+#: contrib/admindocs/views.py:187
#, python-format
msgid "App %r not found"
-msgstr "App %r niet gevonden"
+msgstr "Toepassing %r niet gevonden"
-#: contrib/admin/views/doc.py:173
+#: contrib/admindocs/views.py:194
#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Model %(name)r niet gevonden in app %(label)r"
+msgid "Model %(model_name)r not found in app %(app_label)r"
+msgstr "Model %(model_name)r niet gevonden in toepassing %(app_label)r"
-#: contrib/admin/views/doc.py:185
+#: contrib/admindocs/views.py:206
#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "het gerelateerde `%(label)s.%(type)s` object"
+msgid "the related `%(app_label)s.%(data_type)s` object"
+msgstr "het gerelateerde `%(app_label)s.%(data_type)s` object"
-#: contrib/admin/views/doc.py:185
-#: contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221
-#: contrib/admin/views/doc.py:226
+#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
+#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
msgid "model:"
msgstr "model:"
-#: contrib/admin/views/doc.py:216
+#: contrib/admindocs/views.py:237
#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "de gerelateerde `%(label)s.%(name)s` objecten"
+msgid "related `%(app_label)s.%(object_name)s` objects"
+msgstr "gerelateerde `%(app_label)s.%(object_name)s` objecten"
-#: contrib/admin/views/doc.py:221
+#: contrib/admindocs/views.py:242
#, python-format
msgid "all %s"
msgstr "alle %s"
-#: contrib/admin/views/doc.py:226
+#: contrib/admindocs/views.py:247
#, python-format
msgid "number of %s"
msgstr "aantal %s"
-#: contrib/admin/views/doc.py:231
+#: contrib/admindocs/views.py:253
#, python-format
msgid "Fields on %s objects"
msgstr "Velden van %s objecten"
-#: contrib/admin/views/doc.py:293
-#: contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306
-#: contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313
-#: contrib/admin/views/doc.py:315
+#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
+#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
+#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
msgid "Integer"
msgstr "Geheel getal"
-#: contrib/admin/views/doc.py:294
+#: contrib/admindocs/views.py:318
msgid "Boolean (Either True or False)"
msgstr "Boolean (True of False)"
-#: contrib/admin/views/doc.py:295
-#: contrib/admin/views/doc.py:314
+#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
#, python-format
msgid "String (up to %(max_length)s)"
msgstr "Karakterreeks (hooguit %(max_length)s)"
-#: contrib/admin/views/doc.py:296
+#: contrib/admindocs/views.py:320
msgid "Comma-separated integers"
msgstr "Komma-gescheiden gehele getallen"
-#: contrib/admin/views/doc.py:297
+#: contrib/admindocs/views.py:321
msgid "Date (without time)"
msgstr "Datum (zonder tijd)"
-#: contrib/admin/views/doc.py:298
+#: contrib/admindocs/views.py:322
msgid "Date (with time)"
msgstr "Datum (met tijd)"
-#: contrib/admin/views/doc.py:299
+#: contrib/admindocs/views.py:323
msgid "Decimal number"
msgstr "Decimaal getal"
-#: contrib/admin/views/doc.py:300
+#: contrib/admindocs/views.py:324
msgid "E-mail address"
msgstr "E-mailadres"
-#: contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
+#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
+#: contrib/admindocs/views.py:329
msgid "File path"
msgstr "Bestandspad"
-#: contrib/admin/views/doc.py:303
+#: contrib/admindocs/views.py:327
msgid "Floating point number"
msgstr "Decimaal getal"
-#: contrib/admin/views/doc.py:307
-#: contrib/comments/models.py:89
+#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
msgid "IP address"
-msgstr "IP adres"
+msgstr "IP-adres"
-#: contrib/admin/views/doc.py:309
+#: contrib/admindocs/views.py:333
msgid "Boolean (Either True, False or None)"
msgstr "Boolean (True, False of None)"
-#: contrib/admin/views/doc.py:310
+#: contrib/admindocs/views.py:334
msgid "Relation to parent model"
-msgstr "Relatie tot ouder model"
+msgstr "Relatie tot oudermodel"
-#: contrib/admin/views/doc.py:311
+#: contrib/admindocs/views.py:335
msgid "Phone number"
msgstr "Telefoonnummer"
-#: contrib/admin/views/doc.py:316
+#: contrib/admindocs/views.py:340
msgid "Text"
msgstr "Tekst"
-#: contrib/admin/views/doc.py:317
+#: contrib/admindocs/views.py:341
msgid "Time"
msgstr "Tijd"
-#: contrib/admin/views/doc.py:318
-#: contrib/flatpages/models.py:7
+#: contrib/admindocs/views.py:342 contrib/flatpages/models.py:8
msgid "URL"
msgstr "URL"
-#: contrib/admin/views/doc.py:319
+#: contrib/admindocs/views.py:343
msgid "U.S. state (two uppercase letters)"
msgstr "Staat van de VS (twee hoofdletters)"
-#: contrib/admin/views/doc.py:320
+#: contrib/admindocs/views.py:344
msgid "XML text"
-msgstr "XML Tekst"
+msgstr "XML-tekst"
-#: contrib/admin/views/doc.py:346
+#: contrib/admindocs/views.py:370
#, python-format
msgid "%s does not appear to be a urlpattern object"
-msgstr "%s lijkt geen urlpattern object te zijn"
-
-#: contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr "Site beheer"
-
-#: contrib/admin/views/main.py:280
-#: contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "U kunt hieronder de volgende %s toevoegen."
-
-#: contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "Toevoegen %s"
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "%s toegevoegd."
-
-#: contrib/admin/views/main.py:344
-#: contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348
-#: core/validators.py:283
-#: db/models/manipulators.py:309
-msgid "and"
-msgstr "en"
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "Gewijzigd %s"
-
-#: contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "%s verwijderd."
-
-#: contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr "Geen velden gewijzigd."
-
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Het wijzigen van %(name)s \"%(obj)s\" is geslaagd."
-
-#: contrib/admin/views/main.py:362
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "De %(name)s \"%(obj)s\" was toegevoegd. U kunt het hieronder wijzigen."
-
-#: contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "Wijzig %s"
-
-#: contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Een of meer %(fieldname)s in %(name)s: %(obj)s"
+msgstr "%s lijkt geen urlpattern-object te zijn"
-#: contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Een of meer %(fieldname)s in %(name)s:"
+#: contrib/auth/admin.py:17
+msgid "Personal info"
+msgstr "Persoonlijke informatie"
-#: contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "De verwijdering van %(name)s \"%(obj)s\" is geslaagd."
+#: contrib/auth/admin.py:18
+msgid "Permissions"
+msgstr "Rechten"
-#: contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr "Weet u het zeker?"
+#: contrib/auth/admin.py:19
+msgid "Important dates"
+msgstr "Belangrijke datums"
-#: contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "Wijzigingsgeschiedenis: %s"
+#: contrib/auth/admin.py:20
+msgid "Groups"
+msgstr "Groepen"
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "Selecteer %s"
+#: contrib/auth/admin.py:47
+msgid "Add user"
+msgstr "Gebruiker toevoegen"
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "Selecteer %s om te wijzigen"
+#: contrib/auth/forms.py:13 contrib/auth/models.py:134
+msgid ""
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
+msgstr ""
+"Verplicht. 30 tekens of minder. Alleen alfanumerieke tekens (letters, "
+"cijfers en liggende strepen)."
-#: contrib/admin/views/main.py:784
-msgid "Database error"
-msgstr "Database fout"
+#: contrib/auth/forms.py:14 core/validators.py:72
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Deze waarde mag alleen letters, getallen en liggende strepen bevatten."
-#: contrib/auth/forms.py:17
-#: contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "De twee ingevulde wachtwoorden zijn niet gelijk."
+#: contrib/auth/forms.py:16
+msgid "Password confirmation"
+msgstr "Bevestiging wachtwoord"
-#: contrib/auth/forms.py:25
+#: contrib/auth/forms.py:28
msgid "A user with that username already exists."
msgstr "Een gebruiker met deze gebruikersnaam bestaat al."
-#: contrib/auth/forms.py:53
-msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
-msgstr "Het lijkt erop dat uw browser geen cookies accepteert. Om aan te melden moeten cookies worden geaccepteerd."
+#: contrib/auth/forms.py:34 contrib/auth/forms.py:153
+#: contrib/auth/forms.py:178
+msgid "The two password fields didn't match."
+msgstr "De twee ingevulde wachtwoorden zijn niet gelijk."
-#: contrib/auth/forms.py:62
+#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:58
msgid "This account is inactive."
msgstr "Dit account is inactief."
-#: contrib/auth/forms.py:84
-msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?"
-msgstr "Dat e-mailadres heeft geen gerelateerd gebruikersaccount. Weet u zeker dat u zich heeft geregistreerd?"
+#: contrib/auth/forms.py:77 contrib/comments/views/comments.py:49
+msgid ""
+"Your Web browser doesn't appear to have cookies enabled. Cookies are "
+"required for logging in."
+msgstr ""
+"Het lijkt erop dat uw browser geen cookies accepteert. Om aan te melden "
+"moeten cookies worden geaccepteerd."
+
+#: contrib/auth/forms.py:90
+msgid "E-mail"
+msgstr "E-mail"
-#: contrib/auth/forms.py:107
+#: contrib/auth/forms.py:99
+msgid ""
+"That e-mail address doesn't have an associated user account. Are you sure "
+"you've registered?"
+msgstr ""
+"Dat e-mailadres heeft geen gerelateerd gebruikersaccount. Weet u zeker dat u "
+"zich heeft geregistreerd?"
+
+#: contrib/auth/forms.py:124
#, python-format
msgid "Password reset on %s"
msgstr "Wachtwoord hersteld op %s"
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "De twee 'nieuw wachtwoord' velden zijn niet gelijk."
+#: contrib/auth/forms.py:131
+msgid "Old password"
+msgstr "Oud wachtwoord"
-#: contrib/auth/forms.py:124
+#: contrib/auth/forms.py:132
+msgid "New password"
+msgstr "Nieuw wachtwoord"
+
+#: contrib/auth/forms.py:133
+msgid "New password confirmation"
+msgstr "Nieuw wachtwoord bevestigen"
+
+#: contrib/auth/forms.py:145
msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Uw oude wachtwoord was niet correct ingevoerd. Voert u het alstublieft opnieuw in."
+msgstr ""
+"Uw oude wachtwoord was niet correct ingevoerd. Voert u het alstublieft "
+"opnieuw in."
-#: contrib/auth/models.py:73
-#: contrib/auth/models.py:93
+#: contrib/auth/models.py:73 contrib/auth/models.py:93
msgid "name"
msgstr "naam"
@@ -1068,8 +1178,7 @@ msgstr "codenaam"
msgid "permission"
msgstr "recht"
-#: contrib/auth/models.py:79
-#: contrib/auth/models.py:94
+#: contrib/auth/models.py:79 contrib/auth/models.py:94
msgid "permissions"
msgstr "rechten"
@@ -1077,123 +1186,125 @@ msgstr "rechten"
msgid "group"
msgstr "groep"
-#: contrib/auth/models.py:98
-#: contrib/auth/models.py:141
+#: contrib/auth/models.py:98 contrib/auth/models.py:144
msgid "groups"
msgstr "groepen"
-#: contrib/auth/models.py:131
+#: contrib/auth/models.py:134
msgid "username"
msgstr "gebruikersnaam"
-#: contrib/auth/models.py:131
-msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
-msgstr "Verplicht. 30 tekens of minder. Alleen alfanumerieke tekens (letters, cijfers en liggende strepen)."
-
-#: contrib/auth/models.py:132
+#: contrib/auth/models.py:135
msgid "first name"
msgstr "voornaam"
-#: contrib/auth/models.py:133
+#: contrib/auth/models.py:136
msgid "last name"
msgstr "achternaam"
-#: contrib/auth/models.py:134
+#: contrib/auth/models.py:137
msgid "e-mail address"
msgstr "e-mailadres"
-#: contrib/auth/models.py:135
+#: contrib/auth/models.py:138
msgid "password"
msgstr "wachtwoord"
-#: contrib/auth/models.py:135
-msgid "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."
-msgstr "Gebruik '[algo]$[salt]$[hexdigest]' of gebruik het<a href=\"password/\">wijzig passwoord</a> formulier ."
+#: contrib/auth/models.py:138
+msgid ""
+"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
+"password form</a>."
+msgstr ""
+"Gebruik '[algo]$[salt]$[hexdigest]' of gebruik het<a href=\"password/"
+"\">wijzig passwoord</a> formulier ."
-#: contrib/auth/models.py:136
+#: contrib/auth/models.py:139
msgid "staff status"
-msgstr "staf status"
+msgstr "stafstatus"
-#: contrib/auth/models.py:136
+#: contrib/auth/models.py:139
msgid "Designates whether the user can log into this admin site."
-msgstr "Bepaalt of de gebruiker kan inloggen op deze admin site."
+msgstr "Bepaalt of de gebruiker kan inloggen op deze beheersite."
-#: contrib/auth/models.py:137
+#: contrib/auth/models.py:140
msgid "active"
msgstr "actief"
-#: contrib/auth/models.py:137
-msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts."
-msgstr "Bepaalt of de gebruiker kan inloggen op deze admin site. U kunt dit uitvinken in plaats van een gebruiker te verwijderen."
+#: contrib/auth/models.py:140
+msgid ""
+"Designates whether this user should be treated as active. Unselect this "
+"instead of deleting accounts."
+msgstr ""
+"Bepaalt of deze gebruiker als actief dient te worden behandeld. U kunt dit "
+"uitvinken in plaats van een gebruiker te verwijderen."
-#: contrib/auth/models.py:138
+#: contrib/auth/models.py:141
msgid "superuser status"
-msgstr "supergebruiker status"
+msgstr "supergebruikerstatus"
-#: contrib/auth/models.py:138
-msgid "Designates that this user has all permissions without explicitly assigning them."
-msgstr "Bepaalt dat deze gebruiker alle rechten heeft, zonder deze expliciet toe te wijzen."
+#: contrib/auth/models.py:141
+msgid ""
+"Designates that this user has all permissions without explicitly assigning "
+"them."
+msgstr ""
+"Bepaalt dat deze gebruiker alle rechten heeft, zonder deze expliciet toe te "
+"wijzen."
-#: contrib/auth/models.py:139
+#: contrib/auth/models.py:142
msgid "last login"
-msgstr "laatste aanmelding"
+msgstr "laatste inlog"
-#: contrib/auth/models.py:140
+#: contrib/auth/models.py:143
msgid "date joined"
msgstr "datum toegetreden"
-#: contrib/auth/models.py:142
-msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
-msgstr "Bovenop de rechten welke handmatig zijn toegekend, krijgt deze gebruiker ook alle rechten van de groepen waar hij of zij deel van uitmaakt."
+#: contrib/auth/models.py:145
+msgid ""
+"In addition to the permissions manually assigned, this user will also get "
+"all permissions granted to each group he/she is in."
+msgstr ""
+"Bovenop de rechten welke handmatig zijn toegekend, krijgt deze gebruiker ook "
+"alle rechten van de groepen waar hij of zij deel van uitmaakt."
-#: contrib/auth/models.py:143
+#: contrib/auth/models.py:146
msgid "user permissions"
msgstr "gebruikersrechten"
-#: contrib/auth/models.py:147
+#: contrib/auth/models.py:150
msgid "user"
msgstr "gebruiker"
-#: contrib/auth/models.py:148
+#: contrib/auth/models.py:151
msgid "users"
msgstr "gebruikers"
-#: contrib/auth/models.py:154
-msgid "Personal info"
-msgstr "Persoonlijke informatie"
-
-#: contrib/auth/models.py:155
-msgid "Permissions"
-msgstr "Rechten"
-
-#: contrib/auth/models.py:156
-msgid "Important dates"
-msgstr "Belangrijke datums"
-
-#: contrib/auth/models.py:157
-msgid "Groups"
-msgstr "Groepen"
-
-#: contrib/auth/models.py:316
+#: contrib/auth/models.py:306
msgid "message"
msgstr "bericht"
-#: contrib/auth/views.py:47
+#: contrib/auth/views.py:49
msgid "Logged out"
msgstr "Afmelden"
-#: contrib/comments/models.py:71
-#: contrib/comments/models.py:176
+#: contrib/auth/views.py:116
+msgid "Password changed successfully."
+msgstr "Wachtwoord wijzigen is geslaagd"
+
+#: contrib/auth/views.py:122
+#, python-format
+msgid "Change password: %s"
+msgstr "Wijzig wachtwoord: %s"
+
+#: contrib/comments/models.py:71 contrib/comments/models.py:164
msgid "object ID"
-msgstr "object ID"
+msgstr "object-ID"
#: contrib/comments/models.py:72
msgid "headline"
msgstr "kop"
-#: contrib/comments/models.py:73
-#: contrib/comments/models.py:95
-#: contrib/comments/models.py:177
+#: contrib/comments/models.py:73 contrib/comments/models.py:95
+#: contrib/comments/models.py:165
msgid "comment"
msgstr "opmerking"
@@ -1233,13 +1344,11 @@ msgstr "waardering #8"
msgid "is valid rating"
msgstr "is een geldige waardering"
-#: contrib/comments/models.py:87
-#: contrib/comments/models.py:179
+#: contrib/comments/models.py:87 contrib/comments/models.py:167
msgid "date/time submitted"
msgstr "datum/tijd toegevoegd"
-#: contrib/comments/models.py:88
-#: contrib/comments/models.py:180
+#: contrib/comments/models.py:88 contrib/comments/models.py:168
msgid "is public"
msgstr "is openbaar"
@@ -1248,19 +1357,22 @@ msgid "is removed"
msgstr "is verwijderd"
#: contrib/comments/models.py:90
-msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
-msgstr "Kruis deze box aan indien de opmerking niet gepast is. Een \"Dit commentaar is verwijderd\" bericht wordt dan getoond"
+msgid ""
+"Check this box if the comment is inappropriate. A \"This comment has been "
+"removed\" message will be displayed instead."
+msgstr ""
+"Kruis dit vak aan indien de opmerking niet gepast is. Een \"Dit commentaar "
+"is verwijderd\" bericht wordt dan getoond"
#: contrib/comments/models.py:96
msgid "comments"
msgstr "opmerkingen"
-#: contrib/comments/models.py:140
-#: contrib/comments/models.py:222
+#: contrib/comments/models.py:128 contrib/comments/models.py:199
msgid "Content object"
-msgstr "Inhoud object"
+msgstr "Inhoud-object"
-#: contrib/comments/models.py:168
+#: contrib/comments/models.py:156
#, python-format
msgid ""
"Posted by %(user)s at %(date)s\n"
@@ -1269,54 +1381,54 @@ msgid ""
"\n"
"http://%(domain)s%(url)s"
msgstr ""
-"Gepost door %(user)s op %(date)s\n"
+"Geplaatst door %(user)s op %(date)s\n"
"\n"
"%(comment)s\n"
"\n"
"http://%(domain)s%(url)s"
-#: contrib/comments/models.py:178
+#: contrib/comments/models.py:166
msgid "person's name"
msgstr "naam van persoon"
-#: contrib/comments/models.py:181
+#: contrib/comments/models.py:169
msgid "ip address"
-msgstr "ip adres"
+msgstr "ip-adres"
-#: contrib/comments/models.py:183
+#: contrib/comments/models.py:171
msgid "approved by staff"
msgstr "goedgekeurd door de staf"
-#: contrib/comments/models.py:187
+#: contrib/comments/models.py:175
msgid "free comment"
msgstr "vrije opmerking"
-#: contrib/comments/models.py:188
+#: contrib/comments/models.py:176
msgid "free comments"
msgstr "vrije opmerkingen"
-#: contrib/comments/models.py:250
+#: contrib/comments/models.py:227
msgid "score"
msgstr "score"
-#: contrib/comments/models.py:251
+#: contrib/comments/models.py:228
msgid "score date"
-msgstr "score datum"
+msgstr "scoredatum"
-#: contrib/comments/models.py:255
+#: contrib/comments/models.py:232
msgid "karma score"
-msgstr "karma score"
+msgstr "karmascore"
-#: contrib/comments/models.py:256
+#: contrib/comments/models.py:233
msgid "karma scores"
-msgstr "karma scores"
+msgstr "karmascores"
-#: contrib/comments/models.py:260
+#: contrib/comments/models.py:237
#, python-format
msgid "%(score)d rating by %(user)s"
msgstr "%(score)d waardering door %(user)s"
-#: contrib/comments/models.py:277
+#: contrib/comments/models.py:254
#, python-format
msgid ""
"This comment was flagged by %(user)s:\n"
@@ -1327,36 +1439,36 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/models.py:285
+#: contrib/comments/models.py:262
msgid "flag date"
msgstr "markeerdatum"
-#: contrib/comments/models.py:289
+#: contrib/comments/models.py:266
msgid "user flag"
msgstr "gebruikersmarkering"
-#: contrib/comments/models.py:290
+#: contrib/comments/models.py:267
msgid "user flags"
msgstr "gebruikersmarkeringen"
-#: contrib/comments/models.py:294
+#: contrib/comments/models.py:271
#, python-format
msgid "Flag by %r"
msgstr "Gemarkeerd door %r"
-#: contrib/comments/models.py:300
+#: contrib/comments/models.py:277
msgid "deletion date"
-msgstr "datum verwijdering"
+msgstr "verwijderingsdatum"
-#: contrib/comments/models.py:303
+#: contrib/comments/models.py:280
msgid "moderator deletion"
msgstr "verwijderd door moderator"
-#: contrib/comments/models.py:304
+#: contrib/comments/models.py:281
msgid "moderator deletions"
msgstr "verwijderd door moderator"
-#: contrib/comments/models.py:308
+#: contrib/comments/models.py:285
#, python-format
msgid "Moderator deletion by %r"
msgstr "Verwijderd door moderator %r"
@@ -1391,70 +1503,81 @@ msgstr "Opmerking:"
#: contrib/comments/templates/comments/form.html:35
#: contrib/comments/templates/comments/freeform.html:10
msgid "Preview comment"
-msgstr "Concept opmerking"
+msgstr "Conceptopmerking"
#: contrib/comments/templates/comments/freeform.html:4
msgid "Your name:"
msgstr "Uw gebruikersnaam:"
-#: contrib/comments/views/comments.py:28
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "Deze waardering is verplicht omdat u tenminste één andere waardering hebt ingevoerd."
+#: contrib/comments/views/comments.py:76
+msgid ""
+"This rating is required because you've entered at least one other rating."
+msgstr ""
+"Deze waardering is verplicht omdat u tenminste één andere waardering hebt "
+"ingevoerd."
-#: contrib/comments/views/comments.py:112
+#: contrib/comments/views/comments.py:160
#, python-format
msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
+"This comment was posted by a user who has posted fewer than %(count)s "
+"comment:\n"
"\n"
"%(text)s"
msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s comments:\n"
+"This comment was posted by a user who has posted fewer than %(count)s "
+"comments:\n"
"\n"
"%(text)s"
msgstr[0] ""
-"Deze opmerking is gepost door een gebruiker die minder dan %(count)s opmerking heeft gepost:\n"
+"Deze opmerking is gepost door een gebruiker die minder dan %(count)s "
+"opmerking heeft gepost:\n"
"\n"
"%(text)s"
msgstr[1] ""
-"Deze opmerking is gepost door een gebruiker die minder dan %(count)s opmerkingen heeft gepost:\n"
+"Deze opmerking is gepost door een gebruiker die minder dan %(count)s "
+"opmerkingen heeft gepost:\n"
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:117
+#: contrib/comments/views/comments.py:165
#, python-format
msgid ""
"This comment was posted by a sketchy user:\n"
"\n"
"%(text)s"
msgstr ""
-"Deze opmerking is gepost door een \"fijne\" gebruiker:\n"
+"Deze opmerking is gepost door een twijfelachtige gebruiker:\n"
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
+#: contrib/comments/views/comments.py:238
+#: contrib/comments/views/comments.py:331
msgid "Only POSTs are allowed"
msgstr "Alleen POSTs zijn toegestaan"
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
+#: contrib/comments/views/comments.py:242
+#: contrib/comments/views/comments.py:335
msgid "One or more of the required fields wasn't submitted"
-msgstr "Een of meerdere verplichte velden zijn niet ingevuld"
+msgstr "Eén of meerdere verplichte velden zijn niet ingevuld"
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
+#: contrib/comments/views/comments.py:246
+#: contrib/comments/views/comments.py:337
msgid "Somebody tampered with the comment form (security violation)"
msgstr "Iemand heeft het opmerkingenformulier gewijzigd (beveilingsinbreuk)"
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
-msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
-msgstr "Het opmerkingenformulier heeft een ongeldig 'target' parameter -- het object ID was ongeldig"
+#: contrib/comments/views/comments.py:256
+#: contrib/comments/views/comments.py:343
+msgid ""
+"The comment form had an invalid 'target' parameter -- the object ID was "
+"invalid"
+msgstr ""
+"Het opmerkingenformulier heeft een ongeldige 'target' parameter -- het "
+"object-ID was ongeldig"
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
+#: contrib/comments/views/comments.py:307
+#: contrib/comments/views/comments.py:372
msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Het opmerkingenformulier heeft geen 'voorbeeld' of 'post'"
+msgstr "Het opmerkingenformulier verschaft geen 'voorbeeld' of 'post'"
#: contrib/comments/views/karma.py:21
msgid "Anonymous users cannot vote"
@@ -1462,61 +1585,72 @@ msgstr "Anonieme gebruikers kunnen niet stemmen"
#: contrib/comments/views/karma.py:25
msgid "Invalid comment ID"
-msgstr "Ongeldige opmerkingen ID"
+msgstr "Ongeldige opmerkingen-ID"
#: contrib/comments/views/karma.py:27
msgid "No voting for yourself"
msgstr "Niet op uzelf stemmen"
-#: contrib/contenttypes/models.py:37
+#: contrib/contenttypes/models.py:67
msgid "python model class name"
-msgstr "python model-class-naam"
+msgstr "klassenaam van pythonmodel"
-#: contrib/contenttypes/models.py:40
+#: contrib/contenttypes/models.py:71
msgid "content type"
msgstr "inhoudstype"
-#: contrib/contenttypes/models.py:41
+#: contrib/contenttypes/models.py:72
msgid "content types"
msgstr "inhoudstypen"
-#: contrib/flatpages/models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Voorbeeld: '/about/contact/'. Zorg voor slashes aan het begin en eind."
+#: contrib/flatpages/admin.py:9
+msgid "Advanced options"
+msgstr "Geavanceerde opties"
#: contrib/flatpages/models.py:9
+msgid ""
+"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgstr "Voorbeeld: '/about/contact/'. Zorg voor slashes aan het begin en eind."
+
+#: contrib/flatpages/models.py:10
msgid "title"
msgstr "titel"
-#: contrib/flatpages/models.py:10
+#: contrib/flatpages/models.py:11
msgid "content"
msgstr "inhoud"
-#: contrib/flatpages/models.py:11
+#: contrib/flatpages/models.py:12
msgid "enable comments"
msgstr "opmerkingen toestaan"
-#: contrib/flatpages/models.py:12
+#: contrib/flatpages/models.py:13
msgid "template name"
msgstr "sjabloonnaam"
-#: contrib/flatpages/models.py:13
-msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."
-msgstr "Voorbeeld: 'flatpages/contact_page.html'. Als deze niet is opgegeven, dan wordt 'flatpages/default.html' gebruikt."
-
#: contrib/flatpages/models.py:14
+msgid ""
+"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
+"will use 'flatpages/default.html'."
+msgstr ""
+"Voorbeeld: 'flatpages/contact_page.html'. Als deze niet is opgegeven, dan "
+"wordt 'flatpages/default.html' gebruikt."
+
+#: contrib/flatpages/models.py:15
msgid "registration required"
msgstr "registratie verplicht"
-#: contrib/flatpages/models.py:14
+#: contrib/flatpages/models.py:15
msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Indien dit is aangekruist kunnen alleen ingelogde gebruikers deze pagina bekijken."
+msgstr ""
+"Indien dit is aangekruist kunnen alleen ingelogde gebruikers deze pagina "
+"bekijken."
-#: contrib/flatpages/models.py:18
+#: contrib/flatpages/models.py:20
msgid "flat page"
msgstr "platte pagina"
-#: contrib/flatpages/models.py:19
+#: contrib/flatpages/models.py:21
msgid "flat pages"
msgstr "platte pagina's"
@@ -1547,19 +1681,19 @@ msgstr[1] "%(value).1f miljoen"
#, python-format
msgid "%(value).1f billion"
msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f biljoen"
-msgstr[1] "%(value).1f biljoen"
+msgstr[0] "%(value).1f miljard"
+msgstr[1] "%(value).1f miljard"
#: contrib/humanize/templatetags/humanize.py:57
#, python-format
msgid "%(value).1f trillion"
msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f triljoen"
-msgstr[1] "%(value).1f triljoen"
+msgstr[0] "%(value).1f biljoen"
+msgstr[1] "%(value).1f biljoen"
#: contrib/humanize/templatetags/humanize.py:73
msgid "one"
-msgstr "een"
+msgstr "één"
#: contrib/humanize/templatetags/humanize.py:73
msgid "two"
@@ -1607,1785 +1741,1881 @@ msgstr "gisteren"
#: contrib/localflavor/ar/forms.py:27
msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr ""
+msgstr "Geef een postcode op volgens het NNNN of ANNNNAAA formaat."
-#: contrib/localflavor/ar/forms.py:49
-#: contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135
-#: contrib/localflavor/pe/forms.py:23
+#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
+#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
#: contrib/localflavor/pe/forms.py:51
msgid "This field requires only numbers."
-msgstr ""
+msgstr "Dit veld dient alleen cijfers te bevatten."
#: contrib/localflavor/ar/forms.py:50
msgid "This field requires 7 or 8 digits."
-msgstr ""
+msgstr "Dit veld dient 7 of 8 cijfers te zijn."
#: contrib/localflavor/ar/forms.py:79
msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr ""
+msgstr "Geef een geldige CUIT op in het XX-XXXXXXXX-X of XXXXXXXXXXXX formaat."
#: contrib/localflavor/ar/forms.py:80
msgid "Invalid CUIT."
+msgstr "Ongeldige CUIT."
+
+#: contrib/localflavor/at/at_states.py:5
+msgid "Burgenland"
+msgstr "Burgenland"
+
+#: contrib/localflavor/at/at_states.py:6
+msgid "Carinthia"
+msgstr "Carinthia"
+
+#: contrib/localflavor/at/at_states.py:7
+msgid "Lower Austria"
+msgstr "Lager Australië"
+
+#: contrib/localflavor/at/at_states.py:8
+msgid "Upper Austria"
+msgstr "Hoger Australië"
+
+#: contrib/localflavor/at/at_states.py:9
+msgid "Salzburg"
+msgstr "Salzburg"
+
+#: contrib/localflavor/at/at_states.py:10
+msgid "Styria"
+msgstr "Styria"
+
+#: contrib/localflavor/at/at_states.py:11
+msgid "Tyrol"
+msgstr "Tirol"
+
+#: contrib/localflavor/at/at_states.py:12
+msgid "Vorarlberg"
+msgstr "Vorarlberg"
+
+#: contrib/localflavor/at/at_states.py:13
+msgid "Vienna"
+msgstr "Wenen"
+
+#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
+#: contrib/localflavor/no/forms.py:12
+msgid "Enter a zip code in the format XXXX."
+msgstr "Geef een postcode op in het formaat XXXX."
+
+#: contrib/localflavor/at/forms.py:48
+msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
msgstr ""
+"Geef een geldig Oostenrijks Sociaalnummer op in het XXX-XX-XXXX formaat."
#: contrib/localflavor/au/forms.py:16
msgid "Enter a 4 digit post code."
-msgstr ""
+msgstr "Geef een vier cijferige postcode op."
#: contrib/localflavor/br/forms.py:21
msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr ""
+msgstr "Geef een postcode op in het formaat XXXXX-XXX."
#: contrib/localflavor/br/forms.py:30
msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr ""
+msgstr "Telefoonnummers dienen volgens het XX-XXXX-XXXX formaat te zijn."
#: contrib/localflavor/br/forms.py:58
-msgid "Select a valid brazilian state. That state is not one of the available states."
-msgstr ""
+msgid ""
+"Select a valid brazilian state. That state is not one of the available "
+"states."
+msgstr "Selecteer een geldige braziliaanse staat. Uw keuze is niet geldig."
#: contrib/localflavor/br/forms.py:94
msgid "Invalid CPF number."
-msgstr ""
+msgstr "Ongeldig CPF nummer."
#: contrib/localflavor/br/forms.py:95
msgid "This field requires at most 11 digits or 14 characters."
-msgstr ""
+msgstr "Dit veld dient maximaal 11 cijfers of 14 letters te bevatten."
#: contrib/localflavor/br/forms.py:134
msgid "Invalid CNPJ number."
-msgstr ""
+msgstr "Ongeldig CNPJ nummer."
#: contrib/localflavor/br/forms.py:136
msgid "This field requires at least 14 digits"
-msgstr ""
+msgstr "Dit vereist minimaal 14 cijfers."
#: contrib/localflavor/ca/forms.py:17
msgid "Enter a postal code in the format XXX XXX."
-msgstr ""
+msgstr "Geef een postcode op in het formaat XXX XXX."
#: contrib/localflavor/ca/forms.py:88
msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
msgstr ""
+"Geef een geldig Canadees Sociaal Verzekeringsnummer op volgens het XXX-XXX-"
+"XXX formaat."
#: contrib/localflavor/ch/ch_states.py:5
msgid "Aargau"
-msgstr ""
+msgstr "Aargau"
#: contrib/localflavor/ch/ch_states.py:6
msgid "Appenzell Innerrhoden"
-msgstr ""
+msgstr "Appenzell Innerrhoden"
#: contrib/localflavor/ch/ch_states.py:7
msgid "Appenzell Ausserrhoden"
-msgstr ""
+msgstr "Appenzell Ausserrhoden"
#: contrib/localflavor/ch/ch_states.py:8
msgid "Basel-Stadt"
-msgstr ""
+msgstr "Basel-Stad"
#: contrib/localflavor/ch/ch_states.py:9
msgid "Basel-Land"
-msgstr ""
+msgstr "Basel-Land"
#: contrib/localflavor/ch/ch_states.py:10
msgid "Berne"
-msgstr ""
+msgstr "Bern"
#: contrib/localflavor/ch/ch_states.py:11
msgid "Fribourg"
-msgstr ""
+msgstr "Fribourg"
#: contrib/localflavor/ch/ch_states.py:12
msgid "Geneva"
-msgstr ""
+msgstr "Genève"
#: contrib/localflavor/ch/ch_states.py:13
msgid "Glarus"
-msgstr ""
+msgstr "Glarus"
#: contrib/localflavor/ch/ch_states.py:14
msgid "Graubuenden"
-msgstr ""
+msgstr "Graubuenden"
#: contrib/localflavor/ch/ch_states.py:15
msgid "Jura"
-msgstr ""
+msgstr "Jura"
#: contrib/localflavor/ch/ch_states.py:16
msgid "Lucerne"
-msgstr ""
+msgstr "Lucerne"
#: contrib/localflavor/ch/ch_states.py:17
msgid "Neuchatel"
-msgstr ""
+msgstr "Neuchatel"
#: contrib/localflavor/ch/ch_states.py:18
msgid "Nidwalden"
-msgstr ""
+msgstr "Nidwalden"
#: contrib/localflavor/ch/ch_states.py:19
msgid "Obwalden"
-msgstr ""
+msgstr "Obwalden"
#: contrib/localflavor/ch/ch_states.py:20
msgid "Schaffhausen"
-msgstr ""
+msgstr "Schaffhausen"
#: contrib/localflavor/ch/ch_states.py:21
msgid "Schwyz"
-msgstr ""
+msgstr "Schwyz"
#: contrib/localflavor/ch/ch_states.py:22
msgid "Solothurn"
-msgstr ""
+msgstr "Solothurn"
#: contrib/localflavor/ch/ch_states.py:23
msgid "St. Gallen"
-msgstr ""
+msgstr "St. Gallen"
#: contrib/localflavor/ch/ch_states.py:24
msgid "Thurgau"
-msgstr ""
+msgstr "Thurgau"
#: contrib/localflavor/ch/ch_states.py:25
msgid "Ticino"
-msgstr ""
+msgstr "Ticino"
#: contrib/localflavor/ch/ch_states.py:26
msgid "Uri"
-msgstr ""
+msgstr "Uri"
#: contrib/localflavor/ch/ch_states.py:27
msgid "Valais"
-msgstr ""
+msgstr "Valais"
#: contrib/localflavor/ch/ch_states.py:28
msgid "Vaud"
-msgstr ""
+msgstr "Vaud"
#: contrib/localflavor/ch/ch_states.py:29
msgid "Zug"
-msgstr ""
+msgstr "Zug"
#: contrib/localflavor/ch/ch_states.py:30
msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr ""
+msgstr "Zurich"
#: contrib/localflavor/ch/forms.py:64
-msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format."
+msgid ""
+"Enter a valid Swiss identity or passport card number in X1234567<0 or "
+"1234567890 format."
msgstr ""
+"Geef een geldig Zwitsers identiteits- of paspoortnummer op volgens het "
+"X1234567<0 of 1234567890 formaat"
#: contrib/localflavor/cl/forms.py:29
msgid "Enter a valid Chilean RUT."
-msgstr ""
+msgstr "Geen een geldige Chileense RUT op."
#: contrib/localflavor/cl/forms.py:30
msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr ""
+msgstr "Geef een geldige Chileense RUT op. Het formaat is XX.XXX.XXX-X."
#: contrib/localflavor/cl/forms.py:31
msgid "The Chilean RUT is not valid."
-msgstr ""
+msgstr "De Chileense RUT is ongeldig."
#: contrib/localflavor/de/de_states.py:5
msgid "Baden-Wuerttemberg"
-msgstr ""
+msgstr "Baden-Wuerttemberg"
#: contrib/localflavor/de/de_states.py:6
msgid "Bavaria"
-msgstr ""
+msgstr "Beieren"
#: contrib/localflavor/de/de_states.py:7
msgid "Berlin"
-msgstr ""
+msgstr "Berlijn"
#: contrib/localflavor/de/de_states.py:8
msgid "Brandenburg"
-msgstr ""
+msgstr "Brandenburg"
#: contrib/localflavor/de/de_states.py:9
msgid "Bremen"
-msgstr ""
+msgstr "Bremen"
#: contrib/localflavor/de/de_states.py:10
msgid "Hamburg"
-msgstr ""
+msgstr "Hamburg"
#: contrib/localflavor/de/de_states.py:11
msgid "Hessen"
-msgstr ""
+msgstr "Hessen"
#: contrib/localflavor/de/de_states.py:12
msgid "Mecklenburg-Western Pomerania"
-msgstr ""
+msgstr "Mecklenburg-Western Pomerania"
#: contrib/localflavor/de/de_states.py:13
msgid "Lower Saxony"
-msgstr ""
+msgstr "Nedersaksen"
#: contrib/localflavor/de/de_states.py:14
msgid "North Rhine-Westphalia"
-msgstr ""
+msgstr "Noord Rijn-Westfalen"
#: contrib/localflavor/de/de_states.py:15
msgid "Rhineland-Palatinate"
-msgstr ""
+msgstr "Rijnland-Palts"
#: contrib/localflavor/de/de_states.py:16
msgid "Saarland"
-msgstr ""
+msgstr "Saarland"
#: contrib/localflavor/de/de_states.py:17
msgid "Saxony"
-msgstr ""
+msgstr "Saksen"
#: contrib/localflavor/de/de_states.py:18
msgid "Saxony-Anhalt"
-msgstr ""
+msgstr "Saksen-Anhalt"
#: contrib/localflavor/de/de_states.py:19
msgid "Schleswig-Holstein"
-msgstr ""
+msgstr "Sleeswijk-Holstein"
#: contrib/localflavor/de/de_states.py:20
msgid "Thuringia"
-msgstr ""
+msgstr "Thüringen"
-#: contrib/localflavor/de/forms.py:14
-#: contrib/localflavor/fi/forms.py:12
+#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
#: contrib/localflavor/fr/forms.py:15
msgid "Enter a zip code in the format XXXXX."
-msgstr ""
+msgstr "Geef een postcode op in het formaat XXXXX."
#: contrib/localflavor/de/forms.py:41
-msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format."
+msgid ""
+"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
+"format."
msgstr ""
+"Geef een geldig Duits identiteitsnummer op volgens het XXXXXXXXXXX-XXXXXXX-"
+"XXXXXXX-X formaat."
#: contrib/localflavor/es/es_provinces.py:5
msgid "Arava"
-msgstr ""
+msgstr "Arava"
#: contrib/localflavor/es/es_provinces.py:6
msgid "Albacete"
-msgstr ""
+msgstr "Albacete"
#: contrib/localflavor/es/es_provinces.py:7
msgid "Alacant"
-msgstr ""
+msgstr "Alacant"
#: contrib/localflavor/es/es_provinces.py:8
msgid "Almeria"
-msgstr ""
+msgstr "Almeria"
#: contrib/localflavor/es/es_provinces.py:9
msgid "Avila"
-msgstr ""
+msgstr "Avila"
#: contrib/localflavor/es/es_provinces.py:10
msgid "Badajoz"
-msgstr ""
+msgstr "Badajoz"
#: contrib/localflavor/es/es_provinces.py:11
msgid "Illes Balears"
-msgstr ""
+msgstr "Balearen"
#: contrib/localflavor/es/es_provinces.py:12
msgid "Barcelona"
-msgstr ""
+msgstr "Barcelona"
#: contrib/localflavor/es/es_provinces.py:13
msgid "Burgos"
-msgstr ""
+msgstr "Burgos"
#: contrib/localflavor/es/es_provinces.py:14
msgid "Caceres"
-msgstr ""
+msgstr "Caceres"
#: contrib/localflavor/es/es_provinces.py:15
msgid "Cadiz"
-msgstr ""
+msgstr "Cadiz"
#: contrib/localflavor/es/es_provinces.py:16
msgid "Castello"
-msgstr ""
+msgstr "Castello"
#: contrib/localflavor/es/es_provinces.py:17
msgid "Ciudad Real"
-msgstr ""
+msgstr "Ciudad Real"
#: contrib/localflavor/es/es_provinces.py:18
msgid "Cordoba"
-msgstr ""
+msgstr "Cordoba"
#: contrib/localflavor/es/es_provinces.py:19
msgid "A Coruna"
-msgstr ""
+msgstr "A Coruna"
#: contrib/localflavor/es/es_provinces.py:20
msgid "Cuenca"
-msgstr ""
+msgstr "Cuenca"
#: contrib/localflavor/es/es_provinces.py:21
msgid "Girona"
-msgstr ""
+msgstr "Girona"
#: contrib/localflavor/es/es_provinces.py:22
msgid "Granada"
-msgstr ""
+msgstr "Granada"
#: contrib/localflavor/es/es_provinces.py:23
msgid "Guadalajara"
-msgstr ""
+msgstr "Guadalajara"
#: contrib/localflavor/es/es_provinces.py:24
msgid "Guipuzkoa"
-msgstr ""
+msgstr "Guipuzkoa"
#: contrib/localflavor/es/es_provinces.py:25
msgid "Huelva"
-msgstr ""
+msgstr "Huelva"
#: contrib/localflavor/es/es_provinces.py:26
msgid "Huesca"
-msgstr ""
+msgstr "Huesca"
#: contrib/localflavor/es/es_provinces.py:27
msgid "Jaen"
-msgstr ""
+msgstr "Jaen"
#: contrib/localflavor/es/es_provinces.py:28
msgid "Leon"
-msgstr ""
+msgstr "Leon"
#: contrib/localflavor/es/es_provinces.py:29
msgid "Lleida"
-msgstr ""
+msgstr "Lleida"
#: contrib/localflavor/es/es_provinces.py:30
#: contrib/localflavor/es/es_regions.py:17
msgid "La Rioja"
-msgstr ""
+msgstr "La Rioja"
#: contrib/localflavor/es/es_provinces.py:31
msgid "Lugo"
-msgstr ""
+msgstr "Lugo"
#: contrib/localflavor/es/es_provinces.py:32
#: contrib/localflavor/es/es_regions.py:18
msgid "Madrid"
-msgstr ""
+msgstr "Madrid"
#: contrib/localflavor/es/es_provinces.py:33
msgid "Malaga"
-msgstr ""
+msgstr "Malaga"
#: contrib/localflavor/es/es_provinces.py:34
msgid "Murcia"
-msgstr ""
+msgstr "Murcia"
#: contrib/localflavor/es/es_provinces.py:35
msgid "Navarre"
-msgstr ""
+msgstr "Navarre"
#: contrib/localflavor/es/es_provinces.py:36
msgid "Ourense"
-msgstr ""
+msgstr "Ourense"
#: contrib/localflavor/es/es_provinces.py:37
msgid "Asturias"
-msgstr ""
+msgstr "Asturias"
#: contrib/localflavor/es/es_provinces.py:38
msgid "Palencia"
-msgstr ""
+msgstr "Palencia"
#: contrib/localflavor/es/es_provinces.py:39
msgid "Las Palmas"
-msgstr ""
+msgstr "Las Palmas"
#: contrib/localflavor/es/es_provinces.py:40
msgid "Pontevedra"
-msgstr ""
+msgstr "Pontevedra"
#: contrib/localflavor/es/es_provinces.py:41
msgid "Salamanca"
-msgstr ""
+msgstr "Salamanca"
#: contrib/localflavor/es/es_provinces.py:42
msgid "Santa Cruz de Tenerife"
-msgstr ""
+msgstr "Santa Cruz de Tenerife"
#: contrib/localflavor/es/es_provinces.py:43
#: contrib/localflavor/es/es_regions.py:11
msgid "Cantabria"
-msgstr ""
+msgstr "Cantabria"
#: contrib/localflavor/es/es_provinces.py:44
msgid "Segovia"
-msgstr ""
+msgstr "Segovia"
#: contrib/localflavor/es/es_provinces.py:45
msgid "Seville"
-msgstr ""
+msgstr "Sevilla"
#: contrib/localflavor/es/es_provinces.py:46
msgid "Soria"
-msgstr ""
+msgstr "Soria"
#: contrib/localflavor/es/es_provinces.py:47
msgid "Tarragona"
-msgstr ""
+msgstr "Tarragona"
#: contrib/localflavor/es/es_provinces.py:48
msgid "Teruel"
-msgstr ""
+msgstr "Teruel"
#: contrib/localflavor/es/es_provinces.py:49
msgid "Toledo"
-msgstr ""
+msgstr "Toledo"
#: contrib/localflavor/es/es_provinces.py:50
msgid "Valencia"
-msgstr ""
+msgstr "Valencië"
#: contrib/localflavor/es/es_provinces.py:51
msgid "Valladolid"
-msgstr ""
+msgstr "Valladolid"
#: contrib/localflavor/es/es_provinces.py:52
msgid "Bizkaia"
-msgstr ""
+msgstr "Bizkaia"
#: contrib/localflavor/es/es_provinces.py:53
msgid "Zamora"
-msgstr ""
+msgstr "Zamora"
#: contrib/localflavor/es/es_provinces.py:54
msgid "Zaragoza"
-msgstr ""
+msgstr "Zaragoza"
#: contrib/localflavor/es/es_provinces.py:55
msgid "Ceuta"
-msgstr ""
+msgstr "Ceuta"
#: contrib/localflavor/es/es_provinces.py:56
msgid "Melilla"
-msgstr ""
+msgstr "Melilla"
#: contrib/localflavor/es/es_regions.py:5
msgid "Andalusia"
-msgstr ""
+msgstr "Andalusië"
#: contrib/localflavor/es/es_regions.py:6
msgid "Aragon"
-msgstr ""
+msgstr "Aragon"
#: contrib/localflavor/es/es_regions.py:7
msgid "Principality of Asturias"
-msgstr ""
+msgstr "Prinsdom Asturië"
#: contrib/localflavor/es/es_regions.py:8
msgid "Balearic Islands"
-msgstr ""
+msgstr "Balearen"
#: contrib/localflavor/es/es_regions.py:9
msgid "Basque Country"
-msgstr ""
+msgstr "Baskenland"
#: contrib/localflavor/es/es_regions.py:10
msgid "Canary Islands"
-msgstr ""
+msgstr "Canarische Eilanden"
#: contrib/localflavor/es/es_regions.py:12
msgid "Castile-La Mancha"
-msgstr ""
+msgstr "Castilië-La Mancha"
#: contrib/localflavor/es/es_regions.py:13
msgid "Castile and Leon"
-msgstr ""
+msgstr "Castilië en León"
#: contrib/localflavor/es/es_regions.py:14
msgid "Catalonia"
-msgstr ""
+msgstr "Catalonië"
#: contrib/localflavor/es/es_regions.py:15
msgid "Extremadura"
-msgstr ""
+msgstr "Extremadura"
#: contrib/localflavor/es/es_regions.py:16
msgid "Galicia"
-msgstr ""
+msgstr "Galicië"
#: contrib/localflavor/es/es_regions.py:19
msgid "Region of Murcia"
-msgstr ""
+msgstr "Murcia"
#: contrib/localflavor/es/es_regions.py:20
msgid "Foral Community of Navarre"
-msgstr ""
+msgstr "Navarra"
#: contrib/localflavor/es/es_regions.py:21
msgid "Valencian Community"
-msgstr ""
+msgstr "Valencia"
#: contrib/localflavor/es/forms.py:19
msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr ""
+msgstr "Vul een postcode in volgens het 01XXX - 52XXX formaat."
#: contrib/localflavor/es/forms.py:39
-msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX."
+msgid ""
+"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
+"9XXXXXXXX."
msgstr ""
+"Geef een geldig telefoonnummer op in één van de volgende formaten: "
+"6XXXXXXXX, 8XXXXXXXX of 9XXXXXXXX."
#: contrib/localflavor/es/forms.py:66
msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr ""
+msgstr "Geef een geldige NIF, NIE of CIF op."
#: contrib/localflavor/es/forms.py:67
msgid "Please enter a valid NIF or NIE."
-msgstr ""
+msgstr "Geef een geldige NIF of NIE op."
#: contrib/localflavor/es/forms.py:68
msgid "Invalid checksum for NIF."
-msgstr ""
+msgstr "Ongeldig controlegetal voor NIF."
#: contrib/localflavor/es/forms.py:69
msgid "Invalid checksum for NIE."
-msgstr ""
+msgstr "Ongeldig controlegetal voor NIE."
#: contrib/localflavor/es/forms.py:70
msgid "Invalid checksum for CIF."
-msgstr ""
+msgstr "Ongeldig controlegetal voor CIF."
#: contrib/localflavor/es/forms.py:142
-msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
+msgid ""
+"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
msgstr ""
+"Geef een geldig bankrekeningnummer op in het formaat XXXX-XXXX-XX-XXXXXXXXXX."
#: contrib/localflavor/es/forms.py:143
msgid "Invalid checksum for bank account number."
-msgstr ""
+msgstr "Ongeldig controlegetal voor het bankrekeningnummer."
#: contrib/localflavor/fi/forms.py:28
msgid "Enter a valid Finnish social security number."
-msgstr ""
+msgstr "Geef een geldig Fins sociaal nummer op."
#: contrib/localflavor/in_/forms.py:14
msgid "Enter a zip code in the format XXXXXXX."
-msgstr ""
+msgstr "Geef een geldige postcode op in het formaat XXXXXXX."
#: contrib/localflavor/is_/forms.py:17
-msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
+msgid ""
+"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
msgstr ""
+"Geef een geldig IJslands identificatienummer op. Het formaat is XXXXXX-XXXX."
#: contrib/localflavor/is_/forms.py:18
msgid "The Icelandic identification number is not valid."
-msgstr ""
+msgstr "Het IJslandse identificatienummer is niet geldig."
#: contrib/localflavor/it/forms.py:14
msgid "Enter a valid zip code."
-msgstr ""
+msgstr "Geef een geldige postcode op."
#: contrib/localflavor/it/forms.py:43
msgid "Enter a valid Social Security number."
-msgstr ""
+msgstr "Geef een geldig Sociaal Nummer op."
#: contrib/localflavor/it/forms.py:68
msgid "Enter a valid VAT number."
-msgstr ""
+msgstr "Geef een geldig BTW nummer op."
#: contrib/localflavor/jp/forms.py:17
msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr ""
+msgstr "Geef een geldige postcode op in het formaat XXXXXXX of XXX-XXXX."
#: contrib/localflavor/jp/jp_prefectures.py:4
msgid "Hokkaido"
-msgstr ""
+msgstr "Hokkaido"
#: contrib/localflavor/jp/jp_prefectures.py:5
msgid "Aomori"
-msgstr ""
+msgstr "Aomori"
#: contrib/localflavor/jp/jp_prefectures.py:6
msgid "Iwate"
-msgstr ""
+msgstr "Iwate"
#: contrib/localflavor/jp/jp_prefectures.py:7
msgid "Miyagi"
-msgstr ""
+msgstr "Miyagi"
#: contrib/localflavor/jp/jp_prefectures.py:8
msgid "Akita"
-msgstr ""
+msgstr "Akita"
#: contrib/localflavor/jp/jp_prefectures.py:9
msgid "Yamagata"
-msgstr ""
+msgstr "Yamagata"
#: contrib/localflavor/jp/jp_prefectures.py:10
msgid "Fukushima"
-msgstr ""
+msgstr "Fukushima"
#: contrib/localflavor/jp/jp_prefectures.py:11
msgid "Ibaraki"
-msgstr ""
+msgstr "Ibaraki"
#: contrib/localflavor/jp/jp_prefectures.py:12
msgid "Tochigi"
-msgstr ""
+msgstr "Tochigi"
#: contrib/localflavor/jp/jp_prefectures.py:13
msgid "Gunma"
-msgstr ""
+msgstr "Gunma"
#: contrib/localflavor/jp/jp_prefectures.py:14
msgid "Saitama"
-msgstr ""
+msgstr "Saitama"
#: contrib/localflavor/jp/jp_prefectures.py:15
msgid "Chiba"
-msgstr ""
+msgstr "Saitama"
#: contrib/localflavor/jp/jp_prefectures.py:16
msgid "Tokyo"
-msgstr ""
+msgstr "Tokyo"
#: contrib/localflavor/jp/jp_prefectures.py:17
msgid "Kanagawa"
-msgstr ""
+msgstr "Kanagawa"
#: contrib/localflavor/jp/jp_prefectures.py:18
msgid "Yamanashi"
-msgstr ""
+msgstr "Yamanashi"
#: contrib/localflavor/jp/jp_prefectures.py:19
msgid "Nagano"
-msgstr ""
+msgstr "Nagano"
#: contrib/localflavor/jp/jp_prefectures.py:20
msgid "Niigata"
-msgstr ""
+msgstr "Niigata"
#: contrib/localflavor/jp/jp_prefectures.py:21
msgid "Toyama"
-msgstr ""
+msgstr "Toyama"
#: contrib/localflavor/jp/jp_prefectures.py:22
msgid "Ishikawa"
-msgstr ""
+msgstr "Ishikawa"
#: contrib/localflavor/jp/jp_prefectures.py:23
msgid "Fukui"
-msgstr ""
+msgstr "Fukui"
#: contrib/localflavor/jp/jp_prefectures.py:24
msgid "Gifu"
-msgstr ""
+msgstr "Gifu"
#: contrib/localflavor/jp/jp_prefectures.py:25
msgid "Shizuoka"
-msgstr ""
+msgstr "Shizuoka"
#: contrib/localflavor/jp/jp_prefectures.py:26
msgid "Aichi"
-msgstr ""
+msgstr "Aichi"
#: contrib/localflavor/jp/jp_prefectures.py:27
msgid "Mie"
-msgstr ""
+msgstr "Mie"
#: contrib/localflavor/jp/jp_prefectures.py:28
msgid "Shiga"
-msgstr ""
+msgstr "Shiga"
#: contrib/localflavor/jp/jp_prefectures.py:29
msgid "Kyoto"
-msgstr ""
+msgstr "Kyoto"
#: contrib/localflavor/jp/jp_prefectures.py:30
msgid "Osaka"
-msgstr ""
+msgstr "Osaka"
#: contrib/localflavor/jp/jp_prefectures.py:31
msgid "Hyogo"
-msgstr ""
+msgstr "Hyogo"
#: contrib/localflavor/jp/jp_prefectures.py:32
msgid "Nara"
-msgstr ""
+msgstr "Nara"
#: contrib/localflavor/jp/jp_prefectures.py:33
msgid "Wakayama"
-msgstr ""
+msgstr "Wakayama"
#: contrib/localflavor/jp/jp_prefectures.py:34
msgid "Tottori"
-msgstr ""
+msgstr "Tottori"
#: contrib/localflavor/jp/jp_prefectures.py:35
msgid "Shimane"
-msgstr ""
+msgstr "Shimane"
#: contrib/localflavor/jp/jp_prefectures.py:36
msgid "Okayama"
-msgstr ""
+msgstr "Okayama"
#: contrib/localflavor/jp/jp_prefectures.py:37
msgid "Hiroshima"
-msgstr ""
+msgstr "Hiroshima"
#: contrib/localflavor/jp/jp_prefectures.py:38
msgid "Yamaguchi"
-msgstr ""
+msgstr "Yamaguchi"
#: contrib/localflavor/jp/jp_prefectures.py:39
msgid "Tokushima"
-msgstr ""
+msgstr "Tokushima"
#: contrib/localflavor/jp/jp_prefectures.py:40
msgid "Kagawa"
-msgstr ""
+msgstr "Kagawa"
#: contrib/localflavor/jp/jp_prefectures.py:41
msgid "Ehime"
-msgstr ""
+msgstr "Ehime"
#: contrib/localflavor/jp/jp_prefectures.py:42
msgid "Kochi"
-msgstr ""
+msgstr "Kochi"
#: contrib/localflavor/jp/jp_prefectures.py:43
msgid "Fukuoka"
-msgstr ""
+msgstr "Fukuoka"
#: contrib/localflavor/jp/jp_prefectures.py:44
msgid "Saga"
-msgstr ""
+msgstr "Saga"
#: contrib/localflavor/jp/jp_prefectures.py:45
msgid "Nagasaki"
-msgstr ""
+msgstr "Nagasaki"
#: contrib/localflavor/jp/jp_prefectures.py:46
msgid "Kumamoto"
-msgstr ""
+msgstr "Kumamoto"
#: contrib/localflavor/jp/jp_prefectures.py:47
msgid "Oita"
-msgstr ""
+msgstr "Oita"
#: contrib/localflavor/jp/jp_prefectures.py:48
msgid "Miyazaki"
-msgstr ""
+msgstr "Miyazaki"
#: contrib/localflavor/jp/jp_prefectures.py:49
msgid "Kagoshima"
-msgstr ""
+msgstr "Kagoshima"
#: contrib/localflavor/jp/jp_prefectures.py:50
msgid "Okinawa"
-msgstr ""
+msgstr "Okinawa"
#: contrib/localflavor/mx/mx_states.py:12
msgid "Aguascalientes"
-msgstr ""
+msgstr "Aguascalientes"
#: contrib/localflavor/mx/mx_states.py:13
msgid "Baja California"
-msgstr ""
+msgstr "Baja California"
#: contrib/localflavor/mx/mx_states.py:14
msgid "Baja California Sur"
-msgstr ""
+msgstr "Baja California Sur"
#: contrib/localflavor/mx/mx_states.py:15
msgid "Campeche"
-msgstr ""
+msgstr "Campeche"
#: contrib/localflavor/mx/mx_states.py:16
msgid "Chihuahua"
-msgstr ""
+msgstr "Chihuahua"
#: contrib/localflavor/mx/mx_states.py:17
msgid "Chiapas"
-msgstr ""
+msgstr "Chiapas"
#: contrib/localflavor/mx/mx_states.py:18
msgid "Coahuila"
-msgstr ""
+msgstr "Coahuila"
#: contrib/localflavor/mx/mx_states.py:19
msgid "Colima"
-msgstr ""
+msgstr "Colima"
#: contrib/localflavor/mx/mx_states.py:20
msgid "Distrito Federal"
-msgstr ""
+msgstr "Distrito Federal"
#: contrib/localflavor/mx/mx_states.py:21
msgid "Durango"
-msgstr ""
+msgstr "Durango"
#: contrib/localflavor/mx/mx_states.py:22
msgid "Guerrero"
-msgstr ""
+msgstr "Guerrero"
#: contrib/localflavor/mx/mx_states.py:23
msgid "Guanajuato"
-msgstr ""
+msgstr "Guanajuato"
#: contrib/localflavor/mx/mx_states.py:24
msgid "Hidalgo"
-msgstr ""
+msgstr "Hidalgo"
#: contrib/localflavor/mx/mx_states.py:25
msgid "Jalisco"
-msgstr ""
+msgstr "Jalisco"
#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr ""
+msgid "Estado de México"
+msgstr "de Staat Mexico"
#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr ""
+msgid "Michoacán"
+msgstr "Michoacán"
#: contrib/localflavor/mx/mx_states.py:28
msgid "Morelos"
-msgstr ""
+msgstr "Morelos"
#: contrib/localflavor/mx/mx_states.py:29
msgid "Nayarit"
-msgstr ""
+msgstr "Nayarit"
#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr ""
+msgid "Nuevo León"
+msgstr "Nuevo León"
#: contrib/localflavor/mx/mx_states.py:31
msgid "Oaxaca"
-msgstr ""
+msgstr "Oaxaca"
#: contrib/localflavor/mx/mx_states.py:32
msgid "Puebla"
-msgstr ""
+msgstr "Puebla"
#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr ""
+msgid "Querétaro"
+msgstr "Querétaro"
#: contrib/localflavor/mx/mx_states.py:34
msgid "Quintana Roo"
-msgstr ""
+msgstr "Quintana Roo"
#: contrib/localflavor/mx/mx_states.py:35
msgid "Sinaloa"
-msgstr ""
+msgstr "Sinaloa"
#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr ""
+msgid "San Luis Potosí"
+msgstr "San Luis Potosí"
#: contrib/localflavor/mx/mx_states.py:37
msgid "Sonora"
-msgstr ""
+msgstr "Sonora"
#: contrib/localflavor/mx/mx_states.py:38
msgid "Tabasco"
-msgstr ""
+msgstr "Tabasco"
#: contrib/localflavor/mx/mx_states.py:39
msgid "Tamaulipas"
-msgstr ""
+msgstr "Tamaulipas"
#: contrib/localflavor/mx/mx_states.py:40
msgid "Tlaxcala"
-msgstr ""
+msgstr "Tlaxcala"
#: contrib/localflavor/mx/mx_states.py:41
msgid "Veracruz"
-msgstr ""
+msgstr "Veracruz"
#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr ""
+msgid "Yucatán"
+msgstr "Yucatán"
#: contrib/localflavor/mx/mx_states.py:43
msgid "Zacatecas"
-msgstr ""
+msgstr "Zacatecas"
-#: contrib/localflavor/nl/forms.py:21
+#: contrib/localflavor/nl/forms.py:22
msgid "Enter a valid postal code"
-msgstr "Geef een geldige postcode"
+msgstr "Geef een geldige postcode op"
-#: contrib/localflavor/nl/forms.py:52
+#: contrib/localflavor/nl/forms.py:53
msgid "Enter a valid phone number"
-msgstr "Geef een geldig telefoonnummer"
+msgstr "Geef een geldig telefoonnummer op"
-#: contrib/localflavor/nl/forms.py:78
+#: contrib/localflavor/nl/forms.py:79
msgid "Enter a valid SoFi number"
msgstr "Geef een geldig SoFi nummer"
+#: contrib/localflavor/nl/forms.py:115
+msgid "Enter a valid Dutch bank account number"
+msgstr "Geef een geldig Nederlands bankrekeningnummer op"
+
#: contrib/localflavor/nl/nl_provinces.py:4
msgid "Drente"
-msgstr ""
+msgstr "Drente"
#: contrib/localflavor/nl/nl_provinces.py:5
msgid "Flevoland"
-msgstr ""
+msgstr "Flevoland"
#: contrib/localflavor/nl/nl_provinces.py:6
msgid "Friesland"
-msgstr ""
+msgstr "Friesland"
#: contrib/localflavor/nl/nl_provinces.py:7
msgid "Gelderland"
-msgstr ""
+msgstr "Gelderland"
#: contrib/localflavor/nl/nl_provinces.py:8
msgid "Groningen"
-msgstr ""
+msgstr "Groningen"
#: contrib/localflavor/nl/nl_provinces.py:9
msgid "Limburg"
-msgstr ""
+msgstr "Limburg"
#: contrib/localflavor/nl/nl_provinces.py:10
msgid "Noord-Brabant"
-msgstr ""
+msgstr "Noord-Brabant"
#: contrib/localflavor/nl/nl_provinces.py:11
msgid "Noord-Holland"
-msgstr ""
+msgstr "Noord-Holland"
#: contrib/localflavor/nl/nl_provinces.py:12
msgid "Overijssel"
-msgstr ""
+msgstr "Overijssel"
#: contrib/localflavor/nl/nl_provinces.py:13
msgid "Utrecht"
-msgstr ""
+msgstr "Utrecht"
#: contrib/localflavor/nl/nl_provinces.py:14
msgid "Zeeland"
-msgstr ""
+msgstr "Zeeland"
#: contrib/localflavor/nl/nl_provinces.py:15
msgid "Zuid-Holland"
-msgstr ""
+msgstr "Zuid-Holland"
#: contrib/localflavor/no/forms.py:33
msgid "Enter a valid Norwegian social security number."
-msgstr ""
+msgstr "Geef een geldig Noors Sociaal Nummer op."
#: contrib/localflavor/pe/forms.py:24
msgid "This field requires 8 digits."
-msgstr ""
+msgstr "Dit veld vereist 8 cijfers."
#: contrib/localflavor/pe/forms.py:52
msgid "This field requires 11 digits."
-msgstr ""
+msgstr "Dit veld vereist 11 cijfers."
#: contrib/localflavor/pl/forms.py:39
msgid "National Identification Number consists of 11 digits."
-msgstr ""
+msgstr "Het Nationaal Identificatie Nummer bestaat uit 11 cijfers."
#: contrib/localflavor/pl/forms.py:40
msgid "Wrong checksum for the National Identification Number."
-msgstr ""
+msgstr "Verkeerd controlecijfer voor het Nationaal Identificatie Nummer."
#: contrib/localflavor/pl/forms.py:72
-msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
+msgid ""
+"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
msgstr ""
+"Geef een fiscaal nummer (NIP) op volgens het formaat XXX-XXX-XX-XX or XX-XX-"
+"XXX-XXX."
#: contrib/localflavor/pl/forms.py:73
msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr ""
+msgstr "Verkeerd controlecijfer voor het fiscaal nummer (NIP)."
#: contrib/localflavor/pl/forms.py:112
msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
msgstr ""
+"Het Nationaal Zakelijk Registratie Nummer (REGON) bestaat uit 7 of 9 cijfers."
#: contrib/localflavor/pl/forms.py:113
msgid "Wrong checksum for the National Business Register Number (REGON)."
msgstr ""
+"Verkeerd controlecijfer op het Nationaal Zakelijk Registratie Nummer (REGON)."
#: contrib/localflavor/pl/forms.py:156
msgid "Enter a postal code in the format XX-XXX."
-msgstr ""
+msgstr "Geef een postcode op in het formaat XX-XXX."
#: contrib/localflavor/pl/pl_voivodeships.py:8
msgid "Lower Silesia"
-msgstr ""
+msgstr "Neder-Silezië"
#: contrib/localflavor/pl/pl_voivodeships.py:9
msgid "Kuyavia-Pomerania"
-msgstr ""
+msgstr "Kuyavia-Pomerania"
#: contrib/localflavor/pl/pl_voivodeships.py:10
msgid "Lublin"
-msgstr ""
+msgstr "Lublin"
#: contrib/localflavor/pl/pl_voivodeships.py:11
msgid "Lubusz"
-msgstr ""
+msgstr "Lubusz"
#: contrib/localflavor/pl/pl_voivodeships.py:12
msgid "Lodz"
-msgstr ""
+msgstr "Lodz"
#: contrib/localflavor/pl/pl_voivodeships.py:13
msgid "Lesser Poland"
-msgstr ""
+msgstr "Klein-Polen"
#: contrib/localflavor/pl/pl_voivodeships.py:14
msgid "Masovia"
-msgstr ""
+msgstr "Masovia"
#: contrib/localflavor/pl/pl_voivodeships.py:15
msgid "Opole"
-msgstr ""
+msgstr "Opole"
#: contrib/localflavor/pl/pl_voivodeships.py:16
msgid "Subcarpatia"
-msgstr ""
+msgstr "Subcarpatia"
#: contrib/localflavor/pl/pl_voivodeships.py:17
msgid "Podlasie"
-msgstr ""
+msgstr "Podlasie"
#: contrib/localflavor/pl/pl_voivodeships.py:18
msgid "Pomerania"
-msgstr ""
+msgstr "Pomerania"
#: contrib/localflavor/pl/pl_voivodeships.py:19
msgid "Silesia"
-msgstr ""
+msgstr "Silesia"
#: contrib/localflavor/pl/pl_voivodeships.py:20
msgid "Swietokrzyskie"
-msgstr ""
+msgstr "Swietokrzyskie"
#: contrib/localflavor/pl/pl_voivodeships.py:21
msgid "Warmia-Masuria"
-msgstr ""
+msgstr "Warmia-Masuria"
#: contrib/localflavor/pl/pl_voivodeships.py:22
msgid "Greater Poland"
-msgstr ""
+msgstr "Groot-Polen"
#: contrib/localflavor/pl/pl_voivodeships.py:23
msgid "West Pomerania"
+msgstr "West Pomerania"
+
+#: contrib/localflavor/ro/forms.py:19
+msgid "Enter a valid CIF."
+msgstr "Geef een geldige CIF op."
+
+#: contrib/localflavor/ro/forms.py:56
+msgid "Enter a valid CNP."
+msgstr "Geef een geldige CNP op."
+
+#: contrib/localflavor/ro/forms.py:141
+msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
msgstr ""
+"Geef een geldige IBAN volgens het ROXX-XXXX-XXXX-XXXX-XXXX-XXXX formaat"
+
+#: contrib/localflavor/ro/forms.py:171
+msgid "Phone numbers must be in XXXX-XXXXXX format."
+msgstr "Telefoonnummers moeten volgens het XXXX-XXXXXX formaat te zijn."
+
+#: contrib/localflavor/ro/forms.py:194
+msgid "Enter a valid postal code in the format XXXXXX"
+msgstr "Geef een geldige postcode in het formaat XXXXXX"
#: contrib/localflavor/sk/forms.py:30
msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr ""
+msgstr "Geef een postcode op in het formaat XXXXX of XXX XX."
#: contrib/localflavor/sk/sk_districts.py:8
msgid "Banska Bystrica"
-msgstr ""
+msgstr "Banska Bystrica"
#: contrib/localflavor/sk/sk_districts.py:9
msgid "Banska Stiavnica"
-msgstr ""
+msgstr "Banska Stiavnica"
#: contrib/localflavor/sk/sk_districts.py:10
msgid "Bardejov"
-msgstr ""
+msgstr "Bardejov"
#: contrib/localflavor/sk/sk_districts.py:11
msgid "Banovce nad Bebravou"
-msgstr ""
+msgstr "Banovce nad Bebravou"
#: contrib/localflavor/sk/sk_districts.py:12
msgid "Brezno"
-msgstr ""
+msgstr "Brezno"
#: contrib/localflavor/sk/sk_districts.py:13
msgid "Bratislava I"
-msgstr ""
+msgstr "Bratislava I"
#: contrib/localflavor/sk/sk_districts.py:14
msgid "Bratislava II"
-msgstr ""
+msgstr "Bratislava II"
#: contrib/localflavor/sk/sk_districts.py:15
msgid "Bratislava III"
-msgstr ""
+msgstr "Bratislava III"
#: contrib/localflavor/sk/sk_districts.py:16
msgid "Bratislava IV"
-msgstr ""
+msgstr "Bratislava IV"
#: contrib/localflavor/sk/sk_districts.py:17
msgid "Bratislava V"
-msgstr ""
+msgstr "Bratislava V"
#: contrib/localflavor/sk/sk_districts.py:18
msgid "Bytca"
-msgstr ""
+msgstr "Bytca"
#: contrib/localflavor/sk/sk_districts.py:19
msgid "Cadca"
-msgstr ""
+msgstr "Cadca"
#: contrib/localflavor/sk/sk_districts.py:20
msgid "Detva"
-msgstr ""
+msgstr "Detva"
#: contrib/localflavor/sk/sk_districts.py:21
msgid "Dolny Kubin"
-msgstr ""
+msgstr "Dolny Kubin"
#: contrib/localflavor/sk/sk_districts.py:22
msgid "Dunajska Streda"
-msgstr ""
+msgstr "Dunajska Streda"
#: contrib/localflavor/sk/sk_districts.py:23
msgid "Galanta"
-msgstr ""
+msgstr "Galanta"
#: contrib/localflavor/sk/sk_districts.py:24
msgid "Gelnica"
-msgstr ""
+msgstr "Gelnica"
#: contrib/localflavor/sk/sk_districts.py:25
msgid "Hlohovec"
-msgstr ""
+msgstr "Hlohovec"
#: contrib/localflavor/sk/sk_districts.py:26
msgid "Humenne"
-msgstr ""
+msgstr "Humenne"
#: contrib/localflavor/sk/sk_districts.py:27
msgid "Ilava"
-msgstr ""
+msgstr "Ilava"
#: contrib/localflavor/sk/sk_districts.py:28
msgid "Kezmarok"
-msgstr ""
+msgstr "Kezmarok"
#: contrib/localflavor/sk/sk_districts.py:29
msgid "Komarno"
-msgstr ""
+msgstr "Komarno"
#: contrib/localflavor/sk/sk_districts.py:30
msgid "Kosice I"
-msgstr ""
+msgstr "Kosice I"
#: contrib/localflavor/sk/sk_districts.py:31
msgid "Kosice II"
-msgstr ""
+msgstr "Kosice II"
#: contrib/localflavor/sk/sk_districts.py:32
msgid "Kosice III"
-msgstr ""
+msgstr "Kosice III"
#: contrib/localflavor/sk/sk_districts.py:33
msgid "Kosice IV"
-msgstr ""
+msgstr "Kosice IV"
#: contrib/localflavor/sk/sk_districts.py:34
msgid "Kosice - okolie"
-msgstr ""
+msgstr "Kosice - okolie"
#: contrib/localflavor/sk/sk_districts.py:35
msgid "Krupina"
-msgstr ""
+msgstr "Krupina"
#: contrib/localflavor/sk/sk_districts.py:36
msgid "Kysucke Nove Mesto"
-msgstr ""
+msgstr "Kysucke Nove Mesto"
#: contrib/localflavor/sk/sk_districts.py:37
msgid "Levice"
-msgstr ""
+msgstr "Levice"
#: contrib/localflavor/sk/sk_districts.py:38
msgid "Levoca"
-msgstr ""
+msgstr "Levoca"
#: contrib/localflavor/sk/sk_districts.py:39
msgid "Liptovsky Mikulas"
-msgstr ""
+msgstr "Liptovsky Mikulas"
#: contrib/localflavor/sk/sk_districts.py:40
msgid "Lucenec"
-msgstr ""
+msgstr "Lucenec"
#: contrib/localflavor/sk/sk_districts.py:41
msgid "Malacky"
-msgstr ""
+msgstr "Malacky"
#: contrib/localflavor/sk/sk_districts.py:42
msgid "Martin"
-msgstr ""
+msgstr "Martin"
#: contrib/localflavor/sk/sk_districts.py:43
msgid "Medzilaborce"
-msgstr ""
+msgstr "Medzilaborce"
#: contrib/localflavor/sk/sk_districts.py:44
msgid "Michalovce"
-msgstr ""
+msgstr "Michalovce"
#: contrib/localflavor/sk/sk_districts.py:45
msgid "Myjava"
-msgstr ""
+msgstr "Myjava"
#: contrib/localflavor/sk/sk_districts.py:46
msgid "Namestovo"
-msgstr ""
+msgstr "Namestovo"
#: contrib/localflavor/sk/sk_districts.py:47
msgid "Nitra"
-msgstr ""
+msgstr "Nitra"
#: contrib/localflavor/sk/sk_districts.py:48
msgid "Nove Mesto nad Vahom"
-msgstr ""
+msgstr "Nove Mesto nad Vahom"
#: contrib/localflavor/sk/sk_districts.py:49
msgid "Nove Zamky"
-msgstr ""
+msgstr "Nove Zamky"
#: contrib/localflavor/sk/sk_districts.py:50
msgid "Partizanske"
-msgstr ""
+msgstr "Partizanske"
#: contrib/localflavor/sk/sk_districts.py:51
msgid "Pezinok"
-msgstr ""
+msgstr "Pezinok"
#: contrib/localflavor/sk/sk_districts.py:52
msgid "Piestany"
-msgstr ""
+msgstr "Piestany"
#: contrib/localflavor/sk/sk_districts.py:53
msgid "Poltar"
-msgstr ""
+msgstr "Poltar"
#: contrib/localflavor/sk/sk_districts.py:54
msgid "Poprad"
-msgstr ""
+msgstr "Poprad"
#: contrib/localflavor/sk/sk_districts.py:55
msgid "Povazska Bystrica"
-msgstr ""
+msgstr "Povazska Bystrica"
#: contrib/localflavor/sk/sk_districts.py:56
msgid "Presov"
-msgstr ""
+msgstr "Presov"
#: contrib/localflavor/sk/sk_districts.py:57
msgid "Prievidza"
-msgstr ""
+msgstr "Prievidza"
#: contrib/localflavor/sk/sk_districts.py:58
msgid "Puchov"
-msgstr ""
+msgstr "Puchov"
#: contrib/localflavor/sk/sk_districts.py:59
msgid "Revuca"
-msgstr ""
+msgstr "Revuca"
#: contrib/localflavor/sk/sk_districts.py:60
msgid "Rimavska Sobota"
-msgstr ""
+msgstr "Rimavska Sobota"
#: contrib/localflavor/sk/sk_districts.py:61
msgid "Roznava"
-msgstr ""
+msgstr "Roznava"
#: contrib/localflavor/sk/sk_districts.py:62
msgid "Ruzomberok"
-msgstr ""
+msgstr "Ruzomberok"
#: contrib/localflavor/sk/sk_districts.py:63
msgid "Sabinov"
-msgstr ""
+msgstr "Sabinov"
#: contrib/localflavor/sk/sk_districts.py:64
msgid "Senec"
-msgstr ""
+msgstr "Senec"
#: contrib/localflavor/sk/sk_districts.py:65
msgid "Senica"
-msgstr ""
+msgstr "Senica"
#: contrib/localflavor/sk/sk_districts.py:66
msgid "Skalica"
-msgstr ""
+msgstr "Skalica"
#: contrib/localflavor/sk/sk_districts.py:67
msgid "Snina"
-msgstr ""
+msgstr "Snina"
#: contrib/localflavor/sk/sk_districts.py:68
msgid "Sobrance"
-msgstr ""
+msgstr "Sobrance"
#: contrib/localflavor/sk/sk_districts.py:69
msgid "Spisska Nova Ves"
-msgstr ""
+msgstr "Spisska Nova Ves"
#: contrib/localflavor/sk/sk_districts.py:70
msgid "Stara Lubovna"
-msgstr ""
+msgstr "Stara Lubovna"
#: contrib/localflavor/sk/sk_districts.py:71
msgid "Stropkov"
-msgstr ""
+msgstr "Stropkov"
#: contrib/localflavor/sk/sk_districts.py:72
msgid "Svidnik"
-msgstr ""
+msgstr "Svidnik"
#: contrib/localflavor/sk/sk_districts.py:73
msgid "Sala"
-msgstr ""
+msgstr "Sala"
#: contrib/localflavor/sk/sk_districts.py:74
msgid "Topolcany"
-msgstr ""
+msgstr "Topolcany"
#: contrib/localflavor/sk/sk_districts.py:75
msgid "Trebisov"
-msgstr ""
+msgstr "Trebisov"
#: contrib/localflavor/sk/sk_districts.py:76
msgid "Trencin"
-msgstr ""
+msgstr "Trencin"
#: contrib/localflavor/sk/sk_districts.py:77
msgid "Trnava"
-msgstr ""
+msgstr "Trnava"
#: contrib/localflavor/sk/sk_districts.py:78
msgid "Turcianske Teplice"
-msgstr ""
+msgstr "Turcianske Teplice"
#: contrib/localflavor/sk/sk_districts.py:79
msgid "Tvrdosin"
-msgstr ""
+msgstr "Tvrdosin"
#: contrib/localflavor/sk/sk_districts.py:80
msgid "Velky Krtis"
-msgstr ""
+msgstr "Velky Krtis"
#: contrib/localflavor/sk/sk_districts.py:81
msgid "Vranov nad Toplou"
-msgstr ""
+msgstr "Vranov nad Toplou"
#: contrib/localflavor/sk/sk_districts.py:82
msgid "Zlate Moravce"
-msgstr ""
+msgstr "Zlate Moravce"
#: contrib/localflavor/sk/sk_districts.py:83
msgid "Zvolen"
-msgstr ""
+msgstr "Zvolen"
#: contrib/localflavor/sk/sk_districts.py:84
msgid "Zarnovica"
-msgstr ""
+msgstr "Zarnovica"
#: contrib/localflavor/sk/sk_districts.py:85
msgid "Ziar nad Hronom"
-msgstr ""
+msgstr "Ziar nad Hronom"
#: contrib/localflavor/sk/sk_districts.py:86
msgid "Zilina"
-msgstr ""
+msgstr "Zilina"
#: contrib/localflavor/sk/sk_regions.py:8
msgid "Banska Bystrica region"
-msgstr ""
+msgstr "Regio Banská Bystrica"
#: contrib/localflavor/sk/sk_regions.py:9
msgid "Bratislava region"
-msgstr ""
+msgstr "Regio Bratislava"
#: contrib/localflavor/sk/sk_regions.py:10
msgid "Kosice region"
-msgstr ""
+msgstr "Regio Košice"
#: contrib/localflavor/sk/sk_regions.py:11
msgid "Nitra region"
-msgstr ""
+msgstr "Regio Nitra"
#: contrib/localflavor/sk/sk_regions.py:12
msgid "Presov region"
-msgstr ""
+msgstr "Regio Prešov"
#: contrib/localflavor/sk/sk_regions.py:13
msgid "Trencin region"
-msgstr ""
+msgstr "Regio TrenÄín"
#: contrib/localflavor/sk/sk_regions.py:14
msgid "Trnava region"
-msgstr ""
+msgstr "Regio Trnava"
#: contrib/localflavor/sk/sk_regions.py:15
msgid "Zilina region"
-msgstr ""
+msgstr "Regio Žilina"
#: contrib/localflavor/uk/forms.py:21
msgid "Enter a valid postcode."
-msgstr ""
+msgstr "Geef een geldige postcode op."
#: contrib/localflavor/uk/uk_regions.py:11
msgid "Bedfordshire"
-msgstr ""
+msgstr "Bedfordshire"
#: contrib/localflavor/uk/uk_regions.py:12
msgid "Buckinghamshire"
-msgstr ""
+msgstr "Buckinghamshire"
#: contrib/localflavor/uk/uk_regions.py:14
msgid "Cheshire"
-msgstr ""
+msgstr "Cheshire"
#: contrib/localflavor/uk/uk_regions.py:15
msgid "Cornwall and Isles of Scilly"
-msgstr ""
+msgstr "Cornwall en de Scilly-Eilanden"
#: contrib/localflavor/uk/uk_regions.py:16
msgid "Cumbria"
-msgstr ""
+msgstr "Cumbria"
#: contrib/localflavor/uk/uk_regions.py:17
msgid "Derbyshire"
-msgstr ""
+msgstr "Derbyshire"
#: contrib/localflavor/uk/uk_regions.py:18
msgid "Devon"
-msgstr ""
+msgstr "Devon"
#: contrib/localflavor/uk/uk_regions.py:19
msgid "Dorset"
-msgstr ""
+msgstr "Dorset"
#: contrib/localflavor/uk/uk_regions.py:20
msgid "Durham"
-msgstr ""
+msgstr "Durham"
#: contrib/localflavor/uk/uk_regions.py:21
msgid "East Sussex"
-msgstr ""
+msgstr "Oost-Sussex"
#: contrib/localflavor/uk/uk_regions.py:22
msgid "Essex"
-msgstr ""
+msgstr "Essex"
#: contrib/localflavor/uk/uk_regions.py:23
msgid "Gloucestershire"
-msgstr ""
+msgstr "Gloucestershire"
#: contrib/localflavor/uk/uk_regions.py:24
msgid "Greater London"
-msgstr ""
+msgstr "Groot-Londen"
#: contrib/localflavor/uk/uk_regions.py:25
msgid "Greater Manchester"
-msgstr ""
+msgstr "Groot-Manchester"
#: contrib/localflavor/uk/uk_regions.py:26
msgid "Hampshire"
-msgstr ""
+msgstr "Hampshire"
#: contrib/localflavor/uk/uk_regions.py:27
msgid "Hertfordshire"
-msgstr ""
+msgstr "Hertfordshire"
#: contrib/localflavor/uk/uk_regions.py:28
msgid "Kent"
-msgstr ""
+msgstr "Kent"
#: contrib/localflavor/uk/uk_regions.py:29
msgid "Lancashire"
-msgstr ""
+msgstr "Lancashire"
#: contrib/localflavor/uk/uk_regions.py:30
msgid "Leicestershire"
-msgstr ""
+msgstr "Leicestershire"
#: contrib/localflavor/uk/uk_regions.py:31
msgid "Lincolnshire"
-msgstr ""
+msgstr "Lincolnshire"
#: contrib/localflavor/uk/uk_regions.py:32
msgid "Merseyside"
-msgstr ""
+msgstr "Merseyside"
#: contrib/localflavor/uk/uk_regions.py:33
msgid "Norfolk"
-msgstr ""
+msgstr "Norfolk"
#: contrib/localflavor/uk/uk_regions.py:34
msgid "North Yorkshire"
-msgstr ""
+msgstr "Noord-Yorkshire"
#: contrib/localflavor/uk/uk_regions.py:35
msgid "Northamptonshire"
-msgstr ""
+msgstr "Northamptonshire"
#: contrib/localflavor/uk/uk_regions.py:36
msgid "Northumberland"
-msgstr ""
+msgstr "Northumberland"
#: contrib/localflavor/uk/uk_regions.py:37
msgid "Nottinghamshire"
-msgstr ""
+msgstr "Nottinghamshire"
#: contrib/localflavor/uk/uk_regions.py:38
msgid "Oxfordshire"
-msgstr ""
+msgstr "Oxfordshire"
#: contrib/localflavor/uk/uk_regions.py:39
msgid "Shropshire"
-msgstr ""
+msgstr "Shropshire"
#: contrib/localflavor/uk/uk_regions.py:40
msgid "Somerset"
-msgstr ""
+msgstr "Somerset"
#: contrib/localflavor/uk/uk_regions.py:41
msgid "South Yorkshire"
-msgstr ""
+msgstr "Zuid-Yorkshire"
#: contrib/localflavor/uk/uk_regions.py:42
msgid "Staffordshire"
-msgstr ""
+msgstr "Staffordshire"
#: contrib/localflavor/uk/uk_regions.py:43
msgid "Suffolk"
-msgstr ""
+msgstr "Suffolk"
#: contrib/localflavor/uk/uk_regions.py:44
msgid "Surrey"
-msgstr ""
+msgstr "Surrey"
#: contrib/localflavor/uk/uk_regions.py:45
msgid "Tyne and Wear"
-msgstr ""
+msgstr "Tyne and Wear"
#: contrib/localflavor/uk/uk_regions.py:46
msgid "Warwickshire"
-msgstr ""
+msgstr "Warwickshire"
#: contrib/localflavor/uk/uk_regions.py:47
msgid "West Midlands"
-msgstr ""
+msgstr "West-Midlands"
#: contrib/localflavor/uk/uk_regions.py:48
msgid "West Sussex"
-msgstr ""
+msgstr "West-Sussex"
#: contrib/localflavor/uk/uk_regions.py:49
msgid "West Yorkshire"
-msgstr ""
+msgstr "West-Yorkshire"
#: contrib/localflavor/uk/uk_regions.py:50
msgid "Wiltshire"
-msgstr ""
+msgstr "Wiltshire"
#: contrib/localflavor/uk/uk_regions.py:51
msgid "Worcestershire"
-msgstr ""
+msgstr "Worcestershire"
#: contrib/localflavor/uk/uk_regions.py:55
msgid "County Antrim"
-msgstr ""
+msgstr "Graafschap Antrim"
#: contrib/localflavor/uk/uk_regions.py:56
msgid "County Armagh"
-msgstr ""
+msgstr "Graafschap Armagh"
#: contrib/localflavor/uk/uk_regions.py:57
msgid "County Down"
-msgstr ""
+msgstr "Graafschap Down"
#: contrib/localflavor/uk/uk_regions.py:58
msgid "County Fermanagh"
-msgstr ""
+msgstr "Graafschap Fermanagh"
#: contrib/localflavor/uk/uk_regions.py:59
msgid "County Londonderry"
-msgstr ""
+msgstr "Graafschap Londonderry"
#: contrib/localflavor/uk/uk_regions.py:60
msgid "County Tyrone"
-msgstr ""
+msgstr "Graafschap Tyrone"
#: contrib/localflavor/uk/uk_regions.py:64
msgid "Clwyd"
-msgstr ""
+msgstr "Clwyd"
#: contrib/localflavor/uk/uk_regions.py:65
msgid "Dyfed"
-msgstr ""
+msgstr "Dyfed"
#: contrib/localflavor/uk/uk_regions.py:66
msgid "Gwent"
-msgstr ""
+msgstr "Gwent"
#: contrib/localflavor/uk/uk_regions.py:67
msgid "Gwynedd"
-msgstr ""
+msgstr "Gwynedd"
#: contrib/localflavor/uk/uk_regions.py:68
msgid "Mid Glamorgan"
-msgstr ""
+msgstr "Mid Glamorgan"
#: contrib/localflavor/uk/uk_regions.py:69
msgid "Powys"
-msgstr ""
+msgstr "Powys"
#: contrib/localflavor/uk/uk_regions.py:70
msgid "South Glamorgan"
-msgstr ""
+msgstr "Zuid-Glamorgan"
#: contrib/localflavor/uk/uk_regions.py:71
msgid "West Glamorgan"
-msgstr ""
+msgstr "West-Glamorgan"
#: contrib/localflavor/uk/uk_regions.py:75
msgid "Borders"
-msgstr ""
+msgstr "Schotse-Borders"
#: contrib/localflavor/uk/uk_regions.py:76
msgid "Central Scotland"
-msgstr ""
+msgstr "Centraal-Schotland"
#: contrib/localflavor/uk/uk_regions.py:77
msgid "Dumfries and Galloway"
-msgstr ""
+msgstr "Dumfries en Galloway"
#: contrib/localflavor/uk/uk_regions.py:78
msgid "Fife"
-msgstr ""
+msgstr "Fife"
#: contrib/localflavor/uk/uk_regions.py:79
msgid "Grampian"
-msgstr ""
+msgstr "Grampian"
#: contrib/localflavor/uk/uk_regions.py:80
msgid "Highland"
-msgstr ""
+msgstr "Highland"
#: contrib/localflavor/uk/uk_regions.py:81
msgid "Lothian"
-msgstr ""
+msgstr "Lothian"
#: contrib/localflavor/uk/uk_regions.py:82
msgid "Orkney Islands"
-msgstr ""
+msgstr "Orkneyeilanden"
#: contrib/localflavor/uk/uk_regions.py:83
msgid "Shetland Islands"
-msgstr ""
+msgstr "Shetlandeilanden"
#: contrib/localflavor/uk/uk_regions.py:84
msgid "Strathclyde"
-msgstr ""
+msgstr "Strathclyde"
#: contrib/localflavor/uk/uk_regions.py:85
msgid "Tayside"
-msgstr ""
+msgstr "Tayside"
#: contrib/localflavor/uk/uk_regions.py:86
msgid "Western Isles"
-msgstr ""
+msgstr "Buiten-Hebriden"
#: contrib/localflavor/uk/uk_regions.py:90
msgid "England"
-msgstr ""
+msgstr "Engeland"
#: contrib/localflavor/uk/uk_regions.py:91
msgid "Northern Ireland"
-msgstr ""
+msgstr "Noord-Ierland"
#: contrib/localflavor/uk/uk_regions.py:92
msgid "Scotland"
-msgstr ""
+msgstr "Schotland"
#: contrib/localflavor/uk/uk_regions.py:93
msgid "Wales"
-msgstr ""
+msgstr "Wales"
#: contrib/localflavor/us/forms.py:16
msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr ""
+msgstr "Geef een geldige postcode op volgens het XXXXX of XXXXX-XXXX formaat."
#: contrib/localflavor/us/forms.py:54
msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
+msgstr "Geef een geldig V.S. Sociaalnummer op in het XXX-XX-XXXX formaat."
#: contrib/localflavor/za/forms.py:20
msgid "Enter a valid South African ID number"
-msgstr ""
+msgstr "Geef een geldig Zuid-Afrikaans identificatienummer op"
#: contrib/localflavor/za/forms.py:54
msgid "Enter a valid South African postal code"
-msgstr ""
+msgstr "Geef een geldige Zuid-Afrikaanse postcode op"
#: contrib/localflavor/za/za_provinces.py:4
msgid "Eastern Cape"
-msgstr ""
+msgstr "Oost-Kaap"
#: contrib/localflavor/za/za_provinces.py:5
msgid "Free State"
-msgstr ""
+msgstr "Vrijstaat"
#: contrib/localflavor/za/za_provinces.py:6
msgid "Gauteng"
-msgstr ""
+msgstr "Gauteng"
#: contrib/localflavor/za/za_provinces.py:7
msgid "KwaZulu-Natal"
-msgstr ""
+msgstr "KwaZulu-Natal"
#: contrib/localflavor/za/za_provinces.py:8
msgid "Limpopo"
-msgstr ""
+msgstr "Limpopo"
#: contrib/localflavor/za/za_provinces.py:9
msgid "Mpumalanga"
-msgstr ""
+msgstr "Mpumalanga"
#: contrib/localflavor/za/za_provinces.py:10
msgid "Northern Cape"
-msgstr ""
+msgstr "Noord-Kaap"
#: contrib/localflavor/za/za_provinces.py:11
msgid "North West"
-msgstr ""
+msgstr "Noordwest"
#: contrib/localflavor/za/za_provinces.py:12
msgid "Western Cape"
-msgstr ""
+msgstr "West-Kaap"
#: contrib/redirects/models.py:7
msgid "redirect from"
msgstr "omgeleid via"
#: contrib/redirects/models.py:8
-msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
-msgstr "Dit moet een absoluut pad zijn, zonder de domein naam. Bijvoorbeeld: '/events/search/'."
+msgid ""
+"This should be an absolute path, excluding the domain name. Example: '/"
+"events/search/'."
+msgstr ""
+"Dit moet een absoluut pad zijn, zonder de domeinnaam. Bijvoorbeeld: '/events/"
+"search/'."
#: contrib/redirects/models.py:9
msgid "redirect to"
msgstr "omleiden naar"
#: contrib/redirects/models.py:10
-msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
-msgstr "Dit kan een absoluut pad (zoals hierboven) zijn of een volledige URL beginnend met 'http://'."
+msgid ""
+"This can be either an absolute path (as above) or a full URL starting with "
+"'http://'."
+msgstr ""
+"Dit kan een absoluut pad (zoals hierboven) zijn of een volledige URL "
+"beginnend met 'http://'."
#: contrib/redirects/models.py:13
msgid "redirect"
@@ -3395,23 +3625,23 @@ msgstr "omleiding"
msgid "redirects"
msgstr "omleidingen"
-#: contrib/sessions/models.py:41
+#: contrib/sessions/models.py:45
msgid "session key"
msgstr "sessiesleutel"
-#: contrib/sessions/models.py:42
+#: contrib/sessions/models.py:47
msgid "session data"
msgstr "sessiegegevens"
-#: contrib/sessions/models.py:43
+#: contrib/sessions/models.py:48
msgid "expire date"
msgstr "verloopdatum"
-#: contrib/sessions/models.py:48
+#: contrib/sessions/models.py:53
msgid "session"
msgstr "sessie"
-#: contrib/sessions/models.py:49
+#: contrib/sessions/models.py:54
msgid "sessions"
msgstr "sessies"
@@ -3423,25 +3653,27 @@ msgstr "domeinnaam"
msgid "display name"
msgstr "weergavenaam"
-#: contrib/sites/models.py:37
+#: contrib/sites/models.py:38
msgid "site"
msgstr "site"
-#: contrib/sites/models.py:38
+#: contrib/sites/models.py:39
msgid "sites"
msgstr "sites"
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Deze waarde mag alleen letters, getallen en liggende strepen bevatten."
-
#: core/validators.py:76
-msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
-msgstr "Deze waarde mag alleen letters, cijfers, liggende strepen en schuine strepen bevatten."
+msgid ""
+"This value must contain only letters, numbers, underscores, dashes or "
+"slashes."
+msgstr ""
+"Deze waarde mag alleen letters, cijfers, liggende strepen en schuine strepen "
+"bevatten."
#: core/validators.py:80
msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Deze waarde mag alleen letters, cijfers, liggende strepen en verbindingsstrepen bevatten."
+msgstr ""
+"Deze waarde mag alleen letters, cijfers, liggende strepen en "
+"verbindingsstrepen bevatten."
#: core/validators.py:84
msgid "Uppercase letters are not allowed here."
@@ -3461,7 +3693,7 @@ msgstr "Geef geldige e-mailadressen op, gescheiden door komma's."
#: core/validators.py:111
msgid "Please enter a valid IP address."
-msgstr "Geef een geldig IP adres op."
+msgstr "Geef een geldig IP-adres op."
#: core/validators.py:115
msgid "Empty values are not allowed here."
@@ -3475,8 +3707,7 @@ msgstr "Niet-numerieke karakters zijn hier niet toegestaan."
msgid "This value can't be comprised solely of digits."
msgstr "Deze waarde kan niet alleen uit cijfers bestaan."
-#: core/validators.py:128
-#: newforms/fields.py:151
+#: core/validators.py:128 forms/fields.py:158
msgid "Enter a whole number."
msgstr "Geef een geheel getal op."
@@ -3485,65 +3716,62 @@ msgid "Only alphabetical characters are allowed here."
msgstr "Alleen alfabetische karakters zijn toegestaan"
#: core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr "Het jaartal moet 1900 of later zijn."
-
-#: core/validators.py:151
#, python-format
msgid "Invalid date: %s"
msgstr "Ongeldige datum: %s"
-#: core/validators.py:156
-#: db/models/fields/__init__.py:522
+#: core/validators.py:152 db/models/fields/__init__.py:560
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Geef een geldige datum in JJJJ-MM-DD formaat."
-#: core/validators.py:161
+#: core/validators.py:157
msgid "Enter a valid time in HH:MM format."
msgstr "Geef een geldige tijd in UU:MM formaat."
-#: core/validators.py:165
-#: db/models/fields/__init__.py:599
+#: core/validators.py:161 db/models/fields/__init__.py:641
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Geef geldige datum/tijd in JJJJ-MM-DD UU:MM formaat."
-#: core/validators.py:170
-#: newforms/fields.py:402
+#: core/validators.py:166 forms/fields.py:409
msgid "Enter a valid e-mail address."
msgstr "Geef een geldig e-mailadres op."
-#: core/validators.py:182
-#: core/validators.py:474
-#: newforms/fields.py:432
-#: oldforms/__init__.py:687
+#: core/validators.py:178 core/validators.py:470 forms/fields.py:427
msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Er was geen bestand verstuurd. Controleer het coderings type van het formulier."
+msgstr ""
+"Er was geen bestand verstuurd. Controleer het coderingstype van het "
+"formulier."
-#: core/validators.py:193
-#: newforms/fields.py:458
-msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
-msgstr "Bestand ongeldig. Het bestand dat is gegeven is geen afbeelding of is beschadigd."
+#: core/validators.py:189 forms/fields.py:467
+msgid ""
+"Upload a valid image. The file you uploaded was either not an image or a "
+"corrupted image."
+msgstr ""
+"Bestand ongeldig. Het bestand dat is gegeven is geen afbeelding of is "
+"beschadigd."
-#: core/validators.py:200
+#: core/validators.py:196
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "De URL %s wijst niet naar een geldige afbeelding."
-#: core/validators.py:204
+#: core/validators.py:200
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Telefoonnummers moeten volgens het XXX-XXX-XXXX formaat zijn. \"%s\" is ongeldig."
+msgstr ""
+"Telefoonnummers moeten volgens het XXX-XXX-XXXX formaat zijn. \"%s\" is "
+"ongeldig."
-#: core/validators.py:212
+#: core/validators.py:208
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "De URL %s wijst niet naar een geldige QuickTime video."
-#: core/validators.py:216
+#: core/validators.py:212
msgid "A valid URL is required."
msgstr "Een geldige URL is vereist."
-#: core/validators.py:230
+#: core/validators.py:226
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@@ -3552,208 +3780,240 @@ msgstr ""
"Geldige HTML is vereist. De specifieke fouten zijn:\n"
"%s"
-#: core/validators.py:237
+#: core/validators.py:233
#, python-format
msgid "Badly formed XML: %s"
msgstr "Foute XML: %s"
-#: core/validators.py:254
+#: core/validators.py:250
#, python-format
msgid "Invalid URL: %s"
msgstr "Ongeldige URL: %s"
-#: core/validators.py:259
-#: core/validators.py:261
+#: core/validators.py:255 core/validators.py:257
#, python-format
msgid "The URL %s is a broken link."
msgstr "De URL %s is niet een werkende link."
-#: core/validators.py:267
+#: core/validators.py:263
msgid "Enter a valid U.S. state abbreviation."
msgstr "Geef een geldige afkorting van een staat in de VS."
-#: core/validators.py:281
+#: core/validators.py:277
#, 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] "Pas op uw taalgebruik! Gebruik van %s niet toegestaan."
-msgstr[1] "Pas op uw taalgebruik! Gebruik van de woorden %s is niet toegestaan."
+msgstr[1] ""
+"Pas op uw taalgebruik! Gebruik van de woorden %s is niet toegestaan."
-#: core/validators.py:288
+#: core/validators.py:284
#, python-format
msgid "This field must match the '%s' field."
-msgstr "Dit veld moet overeenkomen met het '%s' veld."
+msgstr "Dit veld moet overeenkomen met het '%s'-veld."
-#: core/validators.py:307
+#: core/validators.py:303
msgid "Please enter something for at least one field."
-msgstr "Voer tenminste 1 veld in."
+msgstr "Voer tenminste één veld in."
-#: core/validators.py:316
-#: core/validators.py:327
+#: core/validators.py:312 core/validators.py:323
msgid "Please enter both fields or leave them both empty."
msgstr "Voer waarden in beide velden in of laat beide leeg."
-#: core/validators.py:335
+#: core/validators.py:331
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "Dit veld moet opgegeven worden indien %(field)s %(value)s is"
-#: core/validators.py:348
+#: core/validators.py:344
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "Dit veld moet worden opgegeven indien %(field)s niet %(value)s is"
-#: core/validators.py:367
+#: core/validators.py:363
msgid "Duplicate values are not allowed."
msgstr "Dubbele waarden zijn niet toegestaan."
-#: core/validators.py:382
+#: core/validators.py:378
#, python-format
msgid "This value must be between %(lower)s and %(upper)s."
msgstr "De waarde moet tussen %(lower)s en %(upper)s zijn."
-#: core/validators.py:384
+#: core/validators.py:380
#, python-format
msgid "This value must be at least %s."
msgstr "De waarde moet minimaal %s zijn."
-#: core/validators.py:386
+#: core/validators.py:382
#, python-format
msgid "This value must be no more than %s."
msgstr "De waarde mag niet meer zijn dan %s."
-#: core/validators.py:427
+#: core/validators.py:423
#, python-format
msgid "This value must be a power of %s."
msgstr "De waarde moet een macht van %s zijn."
-#: core/validators.py:437
+#: core/validators.py:433
msgid "Please enter a valid decimal number."
msgstr "Geef een geldig decimaal getal."
-#: core/validators.py:444
+#: core/validators.py:440
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
+msgid_plural ""
+"Please enter a valid decimal number with at most %s total digits."
msgstr[0] "Geef een geldig decimaal getal met hooguit %s cijfer."
msgstr[1] "Geef een geldig decimaal getal met hooguit %s cijfers."
-#: core/validators.py:447
+#: core/validators.py:443
#, 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] "Geef een geldig decimaal getal waarbij het gehele getal minimaal %s cijfer heeft."
-msgstr[1] "Geef een geldig decimaal getal waarbij het gehele getal minimaal %s cijfers heeft."
+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] ""
+"Geef een geldig decimaal getal waarbij het gehele getal minimaal %s cijfer "
+"heeft."
+msgstr[1] ""
+"Geef een geldig decimaal getal waarbij het gehele getal minimaal %s cijfers "
+"heeft."
-#: core/validators.py:450
+#: core/validators.py:446
#, 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."
+msgid_plural ""
+"Please enter a valid decimal number with at most %s decimal places."
msgstr[0] "Geef een decimaal getal met hooguit %s cijfer achter de komma."
msgstr[1] "Geef een decimaal getal met hooguit %s cijfers achter de komma."
-#: core/validators.py:458
+#: core/validators.py:454
msgid "Please enter a valid floating point number."
msgstr "Geef een geldig decimaal getal."
-#: core/validators.py:467
+#: core/validators.py:463
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "Zorg ervoor dat het bestand minstens %s bytes groot is."
-#: core/validators.py:468
+#: core/validators.py:464
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "Zorg ervoor dat het bestand hoogstens %s bytes groot is."
-#: core/validators.py:485
+#: core/validators.py:481
msgid "The format for this field is wrong."
msgstr "Het formaat van dit veld is foutief."
-#: core/validators.py:500
+#: core/validators.py:496
msgid "This field is invalid."
msgstr "Dit veld is ongeldig."
-#: core/validators.py:536
+#: core/validators.py:532
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Kan niks ophalen van %s."
-#: core/validators.py:539
+#: core/validators.py:535
#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "De geretourneerde URL %(url)s bevat een ongeldige Content-Type '%(contenttype)s."
+msgid ""
+"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
+msgstr ""
+"De geretourneerde URL %(url)s bevat een ongeldige Content-Type '%"
+"(contenttype)s."
-#: core/validators.py:572
+#: core/validators.py:568
#, python-format
-msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
-msgstr "Sluit de niet gesloten %(tag)s tag op regel %(line)s. (Regel start met \"%(start)s\".)"
+msgid ""
+"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
+"\"%(start)s\".)"
+msgstr ""
+"Sluit de niet gesloten %(tag)s tag op regel %(line)s. (Regel start met \"%"
+"(start)s\".)"
-#: core/validators.py:576
+#: core/validators.py:572
#, python-format
-msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
-msgstr "Tekst beginnend op regel %(line)s is in deze context niet toegestaan. (Regel start met \"%(start)s\".)"
+msgid ""
+"Some text starting on line %(line)s is not allowed in that context. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"Tekst beginnend op regel %(line)s is in deze context niet toegestaan. (Regel "
+"start met \"%(start)s\".)"
-#: core/validators.py:581
+#: core/validators.py:577
#, python-format
-msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
-msgstr "\"%(attr)s\" op regel %(line)s is een ongeldig attribuut. (Regel start met \"%(start)s\".)"
+msgid ""
+"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
+"(start)s\".)"
+msgstr ""
+"\"%(attr)s\" op regel %(line)s is een ongeldig attribuut. (Regel start met "
+"\"%(start)s\".)"
-#: core/validators.py:586
+#: core/validators.py:582
#, python-format
-msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
-msgstr "\"<%(tag)s>\" op regel %(line)s is een ongeldige tag. (Regel start met \"%(start)s\".)"
+msgid ""
+"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
+"(start)s\".)"
+msgstr ""
+"\"<%(tag)s>\" op regel %(line)s is een ongeldige tag. (Regel start met \"%"
+"(start)s\".)"
-#: core/validators.py:590
+#: core/validators.py:586
#, python-format
-msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
-msgstr "Een of meerdere attributen ontbreken bij een tag op regel %(line)s. (Regel start met \"%(start)s\".)"
+msgid ""
+"A tag on line %(line)s is missing one or more required attributes. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"Een of meerdere attributen ontbreken bij een tag op regel %(line)s. (Regel "
+"start met \"%(start)s\".)"
-#: core/validators.py:595
+#: core/validators.py:591
#, python-format
-msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
-msgstr "De \"%(attr)s\" attribuut op regel %(line)s heeft een ongeldige waarde. (Regel start met \"%(start)s\".)"
+msgid ""
+"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"De \"%(attr)s\" attribuut op regel %(line)s heeft een ongeldige waarde. "
+"(Regel start met \"%(start)s\".)"
-#: db/models/manipulators.py:308
+#: db/models/manipulators.py:304
#, python-format
msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s van het type %(type)s bestaat al voor het gegeven %(field)s."
+msgstr ""
+"%(object)s van het type %(type)s bestaat al voor het gegeven %(field)s."
-#: db/models/fields/__init__.py:52
+#: db/models/fields/__init__.py:47
#, python-format
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "%(optname)s met deze %(fieldname)s bestaat al."
-#: db/models/fields/__init__.py:161
-#: db/models/fields/__init__.py:322
-#: db/models/fields/__init__.py:754
-#: db/models/fields/__init__.py:765
-#: newforms/fields.py:45
-#: oldforms/__init__.py:374
+#: db/models/fields/__init__.py:175 db/models/fields/__init__.py:344
+#: db/models/fields/__init__.py:803 db/models/fields/__init__.py:814
+#: forms/fields.py:52 oldforms/__init__.py:374
msgid "This field is required."
msgstr "Dit veld is verplicht."
-#: db/models/fields/__init__.py:422
+#: db/models/fields/__init__.py:458
msgid "This value must be an integer."
msgstr "De waarde moet een geheel getal zijn."
-#: db/models/fields/__init__.py:461
+#: db/models/fields/__init__.py:499
msgid "This value must be either True or False."
msgstr "De waarde moet of True (Waar) of False (Onwaar) zijn."
-#: db/models/fields/__init__.py:485
+#: db/models/fields/__init__.py:523
msgid "This field cannot be null."
msgstr "Dit veld mag niet leeg zijn."
-#: db/models/fields/__init__.py:663
+#: db/models/fields/__init__.py:710
msgid "This value must be a decimal number."
msgstr "De waarde moet een getal zijn."
-#: db/models/fields/__init__.py:774
+#: db/models/fields/__init__.py:823
msgid "Enter a valid filename."
msgstr "Geef een geldige bestandsnaam."
-#: db/models/fields/__init__.py:945
+#: db/models/fields/__init__.py:1014
msgid "This value must be either None, True or False."
msgstr "De waarde moet of None (leeg), True (Waar) of False (Onwaar) zijn."
@@ -3762,121 +4022,114 @@ msgstr "De waarde moet of None (leeg), True (Waar) of False (Onwaar) zijn."
msgid "Please enter a valid %s."
msgstr "Geef een geldig %s veld."
-#: db/models/fields/related.py:694
-msgid "Separate multiple IDs with commas."
-msgstr "Scheid meerdere ID's door komma's."
-
-#: db/models/fields/related.py:696
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Houd \"Control\", of \"Command\" op een Mac, ingedrukt om meerdere te selecteren."
+#: db/models/fields/related.py:729
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr ""
+"Houd \"Control\", of \"Command\" op een Mac, ingedrukt om meerdere te "
+"selecteren."
-#: db/models/fields/related.py:743
+#: db/models/fields/related.py:773
#, 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."
+msgid_plural ""
+"Please enter valid %(self)s IDs. The values %(value)r are invalid."
msgstr[0] "Geef een geldig %(self)s IDs. De waarde %(value)r is ongeldig."
msgstr[1] "Geef een geldig %(self)s IDs. De waarden %(value)r zijn ongeldig."
-#: newforms/fields.py:46
+#: forms/fields.py:53
msgid "Enter a valid value."
msgstr "Geef een geldige waarde."
-#: newforms/fields.py:123
+#: forms/fields.py:130
#, python-format
msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Zorg ervoor de waarde korter is dan %(max)d tekens (huidige lengte %(length)d)."
+msgstr ""
+"Zorg ervoor dat waarde korter is dan %(max)d tekens (huidige lengte %(length)"
+"d)."
-#: newforms/fields.py:124
+#: forms/fields.py:131
#, python-format
msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Zorg ervoor dat uw tekst langer is dan %(min)d tekens (huidige lengte %(length)d)."
+msgstr ""
+"Zorg ervoor dat uw tekst langer is dan %(min)d tekens (huidige lengte %"
+"(length)d)."
-#: newforms/fields.py:152
-#: newforms/fields.py:181
-#: newforms/fields.py:210
+#: forms/fields.py:159 forms/fields.py:188 forms/fields.py:217
#, python-format
msgid "Ensure this value is less than or equal to %s."
msgstr "Zorg ervoor dat de waarde kleiner of gelijk is aan %s."
-#: newforms/fields.py:153
-#: newforms/fields.py:182
-#: newforms/fields.py:211
+#: forms/fields.py:160 forms/fields.py:189 forms/fields.py:218
#, python-format
msgid "Ensure this value is greater than or equal to %s."
msgstr "Zorg ervoor de waarde groter of gelijk is aan %s."
-#: newforms/fields.py:180
-#: newforms/fields.py:209
+#: forms/fields.py:187 forms/fields.py:216
msgid "Enter a number."
msgstr "Geef een getal op."
-#: newforms/fields.py:212
+#: forms/fields.py:219
#, python-format
msgid "Ensure that there are no more than %s digits in total."
msgstr "Zorg dat er minder dan %s cijfers zijn."
-#: newforms/fields.py:213
+#: forms/fields.py:220
#, python-format
msgid "Ensure that there are no more than %s decimal places."
msgstr "Zorg dat er minder dan %s cijfers na de komma zijn."
-#: newforms/fields.py:214
+#: forms/fields.py:221
#, python-format
msgid "Ensure that there are no more than %s digits before the decimal point."
msgstr "Zorg dat er minder dan %s cijfers voor de komma zijn."
-#: newforms/fields.py:262
-#: newforms/fields.py:723
+#: forms/fields.py:269 forms/fields.py:799
msgid "Enter a valid date."
msgstr "Geef een geldige datum op."
-#: newforms/fields.py:295
-#: newforms/fields.py:724
+#: forms/fields.py:302 forms/fields.py:800
msgid "Enter a valid time."
-msgstr "Geef een geldige datum op."
+msgstr "Geef een geldige tijd op."
-#: newforms/fields.py:334
+#: forms/fields.py:341
msgid "Enter a valid date/time."
msgstr "Geef een geldige datum/tijd op."
-#: newforms/fields.py:433
+#: forms/fields.py:428
msgid "No file was submitted."
-msgstr "Geen file werd aangeboden."
+msgstr "Geen bestand werd aangeboden."
-#: newforms/fields.py:434
-#: oldforms/__init__.py:689
+#: forms/fields.py:429 oldforms/__init__.py:693
msgid "The submitted file is empty."
msgstr "Het gegeven bestand is leeg."
-#: newforms/fields.py:496
+#: forms/fields.py:528
msgid "Enter a valid URL."
msgstr "Geef een geldige URL op."
-#: newforms/fields.py:497
+#: forms/fields.py:529
msgid "This URL appears to be a broken link."
-msgstr "Deze URL schijnt niet te werken."
+msgstr "Deze URL lijkt niet te werken."
-#: newforms/fields.py:559
-#: newforms/models.py:300
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Selecteer een geldige keuze. Deze keuze is niet beschikbaar."
-
-#: newforms/fields.py:598
+#: forms/fields.py:597 forms/fields.py:648
#, python-format
msgid "Select a valid choice. %(value)s is not one of the available choices."
msgstr "Selecteer een geldige keuze. %(value)s is geen beschikbare keuze."
-#: newforms/fields.py:599
-#: newforms/fields.py:661
-#: newforms/models.py:360
+#: forms/fields.py:649 forms/fields.py:710 forms/models.py:581
msgid "Enter a list of values."
msgstr "Geef een lijst op met waardes."
-#: newforms/fields.py:752
+#: forms/fields.py:828
msgid "Enter a valid IPv4 address."
-msgstr "Geef een geldig IPv4 adres op."
+msgstr "Geef een geldig IPv4-adres op."
+
+#: forms/models.py:514
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "Selecteer een geldige keuze. Deze keuze is niet beschikbaar."
-#: newforms/models.py:361
+#: forms/models.py:582
#, python-format
msgid "Select a valid choice. %s is not one of the available choices."
msgstr "Selecteer een geldige keuze. %s is geen beschikbare keuze."
@@ -3892,66 +4145,64 @@ msgstr[1] "Zorg ervoor dat uw tekst korter is dan %s karakters."
msgid "Line breaks are not allowed here."
msgstr "Regeleindes zijn niet toegestaan."
-#: oldforms/__init__.py:512
-#: oldforms/__init__.py:586
-#: oldforms/__init__.py:625
+#: oldforms/__init__.py:512 oldforms/__init__.py:586 oldforms/__init__.py:625
#, python-format
msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
msgstr "Selecteer een geldige keuze; '%(data)s is niet in %(choices)s."
-#: oldforms/__init__.py:745
+#: oldforms/__init__.py:754
msgid "Enter a whole number between -32,768 and 32,767."
msgstr "Geef een geheel getal op tussen -32.768 en 32.767."
-#: oldforms/__init__.py:755
+#: oldforms/__init__.py:764
msgid "Enter a positive number."
msgstr "Geef een geheel getal op."
-#: oldforms/__init__.py:765
+#: oldforms/__init__.py:774
msgid "Enter a whole number between 0 and 32,767."
msgstr "Geef een geheel getal op tussen 0 en 32.767."
-#: template/defaultfilters.py:695
+#: template/defaultfilters.py:698
msgid "yes,no,maybe"
msgstr "ja,nee,misschien"
-#: template/defaultfilters.py:726
+#: template/defaultfilters.py:729
#, python-format
msgid "%(size)d byte"
msgid_plural "%(size)d bytes"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%(size)d byte"
+msgstr[1] "%(size)d bytes"
-#: template/defaultfilters.py:728
+#: template/defaultfilters.py:731
#, python-format
msgid "%.1f KB"
-msgstr ""
+msgstr "%.1f KB"
-#: template/defaultfilters.py:730
+#: template/defaultfilters.py:733
#, python-format
msgid "%.1f MB"
-msgstr ""
+msgstr "%.1f MB"
-#: template/defaultfilters.py:731
+#: template/defaultfilters.py:734
#, python-format
msgid "%.1f GB"
-msgstr ""
+msgstr "%.1f GB"
#: utils/dateformat.py:41
msgid "p.m."
-msgstr ""
+msgstr "p.m."
#: utils/dateformat.py:42
msgid "a.m."
-msgstr ""
+msgstr "a.m."
#: utils/dateformat.py:47
msgid "PM"
-msgstr ""
+msgstr "PM"
#: utils/dateformat.py:48
msgid "AM"
-msgstr ""
+msgstr "AM"
#: utils/dateformat.py:97
msgid "midnight"
@@ -4025,28 +4276,23 @@ msgstr "januari"
msgid "February"
msgstr "februari"
-#: utils/dates.py:18
-#: utils/dates.py:31
+#: utils/dates.py:18 utils/dates.py:31
msgid "March"
msgstr "maart"
-#: utils/dates.py:18
-#: utils/dates.py:31
+#: utils/dates.py:18 utils/dates.py:31
msgid "April"
msgstr "april"
-#: utils/dates.py:18
-#: utils/dates.py:31
+#: utils/dates.py:18 utils/dates.py:31
msgid "May"
msgstr "mei"
-#: utils/dates.py:18
-#: utils/dates.py:31
+#: utils/dates.py:18 utils/dates.py:31
msgid "June"
msgstr "juni"
-#: utils/dates.py:19
-#: utils/dates.py:31
+#: utils/dates.py:19 utils/dates.py:31
msgid "July"
msgstr "juli"
@@ -4080,7 +4326,7 @@ msgstr "feb"
#: utils/dates.py:23
msgid "mar"
-msgstr "mar"
+msgstr "mrt"
#: utils/dates.py:23
msgid "apr"
@@ -4146,7 +4392,7 @@ msgstr "nov."
msgid "Dec."
msgstr "dec."
-#: utils/text.py:127
+#: utils/text.py:128
msgid "or"
msgstr "of"
@@ -4195,48 +4441,44 @@ msgstr "minuut"
#: utils/timesince.py:51
#, python-format
msgid "%(number)d %(type)s"
-msgstr ""
+msgstr "%(number)d %(type)s"
#: utils/timesince.py:57
#, python-format
msgid ", %(number)d %(type)s"
-msgstr ""
+msgstr ", %(number)d %(type)s"
-#: utils/translation/trans_real.py:404
+#: utils/translation/trans_real.py:401
msgid "DATE_FORMAT"
msgstr "j-n-Y"
-#: utils/translation/trans_real.py:405
+#: utils/translation/trans_real.py:402
msgid "DATETIME_FORMAT"
msgstr "j-n-Y H:i"
-#: utils/translation/trans_real.py:406
+#: utils/translation/trans_real.py:403
msgid "TIME_FORMAT"
msgstr "H:i"
-#: utils/translation/trans_real.py:422
+#: utils/translation/trans_real.py:419
msgid "YEAR_MONTH_FORMAT"
msgstr "F Y"
-#: utils/translation/trans_real.py:423
+#: utils/translation/trans_real.py:420
msgid "MONTH_DAY_FORMAT"
msgstr "j F"
-#: views/generic/create_update.py:43
+#: views/generic/create_update.py:129
#, python-format
msgid "The %(verbose_name)s was created successfully."
msgstr "De %(verbose_name)s is succesvol aangemaakt."
-#: views/generic/create_update.py:117
+#: views/generic/create_update.py:172
#, python-format
msgid "The %(verbose_name)s was updated successfully."
msgstr "De %(verbose_name)s is succesvol aangepast."
-#: views/generic/create_update.py:184
+#: views/generic/create_update.py:214
#, python-format
msgid "The %(verbose_name)s was deleted."
msgstr "De %(verbose_name)s is verwijderd."
-
-#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
-#~ msgstr "Gebruik '[algo]$[salt]$[hexdigest]'"
-
diff --git a/django/conf/locale/no/LC_MESSAGES/django.mo b/django/conf/locale/no/LC_MESSAGES/django.mo
index 1009491ba6..9dd1ec2500 100644
--- a/django/conf/locale/no/LC_MESSAGES/django.mo
+++ b/django/conf/locale/no/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/no/LC_MESSAGES/django.po b/django/conf/locale/no/LC_MESSAGES/django.po
index 75f3d45188..573cb2ae05 100644
--- a/django/conf/locale/no/LC_MESSAGES/django.po
+++ b/django/conf/locale/no/LC_MESSAGES/django.po
@@ -7,1255 +7,1333 @@ msgstr ""
"Project-Id-Version: Django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-05-16 10:12+0200\n"
-"PO-Revision-Date: 2007-08-29 18:22+0200\n"
+"PO-Revision-Date: 2008-07-15 19:10+0200\n"
"Last-Translator: jonklo\n"
"Language-Team: Norsk <no@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: db/models/manipulators.py:309
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s med %(type)s finnes allerede for angitt %(field)s."
-
-#: db/models/manipulators.py:310 core/validators.py:275
-#: contrib/admin/views/main.py:342 contrib/admin/views/main.py:344
-#: contrib/admin/views/main.py:346
-msgid "and"
-msgstr "og"
-
-#: db/models/fields/__init__.py:49
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s med %(fieldname)s finnes allerede."
-
-#: db/models/fields/__init__.py:156 db/models/fields/__init__.py:313
-#: db/models/fields/__init__.py:721 db/models/fields/__init__.py:732
-#: oldforms/__init__.py:373 newforms/models.py:193 newforms/fields.py:92
-#: newforms/fields.py:490 newforms/fields.py:566 newforms/fields.py:577
-msgid "This field is required."
-msgstr "Dette feltet er påkrevd."
-
-#: db/models/fields/__init__.py:411
-msgid "This value must be an integer."
-msgstr "Denne verdien må være et heltall."
-
-#: db/models/fields/__init__.py:446
-msgid "This value must be either True or False."
-msgstr "Denne verdien må være enten \"True\" eller \"False\"."
-
-#: db/models/fields/__init__.py:467
-msgid "This field cannot be null."
-msgstr "Dette feltet kan ikke være null/tom."
-
-#: db/models/fields/__init__.py:501 core/validators.py:155
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Skriv inn en dato i Ã…Ã…Ã…Ã…-MM-DD format."
-
-#: db/models/fields/__init__.py:570 core/validators.py:164
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Skriv inn dato og tid i Ã…Ã…Ã…Ã…-MM-DD TT:MM format."
-
-#: db/models/fields/__init__.py:631
-msgid "This value must be a decimal number."
-msgstr "Denne verdien må være et desimaltall."
-
-#: db/models/fields/__init__.py:741
-msgid "Enter a valid filename."
-msgstr "Skriv inn et godkjent filnavn."
-
-#: db/models/fields/__init__.py:883
-msgid "This value must be either None, True or False."
-msgstr "Denne verdien må være enten None, True eller False."
-
-#: db/models/fields/related.py:55
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Vennligst skriv inn en/et gyldig %s."
-
-#: db/models/fields/related.py:658
-msgid "Separate multiple IDs with commas."
-msgstr "Separer flere ID-er med komma."
-
-#: db/models/fields/related.py:660
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Hold nede \"Control\", eller \"Command\" på en Mac, for å velge mer enn en."
-
-#: db/models/fields/related.py:707
-#, 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] "Skriv inn gyldige %(self)s ID-er. Verdien %(value)r er ikke gyldig."
-msgstr[1] ""
-"Skriv inn gyldige %(self)s ID-er. Verdiene %(value)r er ikke gyldige."
-
-#: conf/global_settings.py:39
+#: conf/global_settings.py:44
msgid "Arabic"
msgstr "Arabisk"
-#: conf/global_settings.py:40
+#: conf/global_settings.py:45
msgid "Bengali"
msgstr "Bengalsk"
-#: conf/global_settings.py:41
+#: conf/global_settings.py:46
msgid "Bulgarian"
msgstr "Bulgarsk"
-#: conf/global_settings.py:42
+#: conf/global_settings.py:47
msgid "Catalan"
msgstr "Katalansk"
-#: conf/global_settings.py:43
+#: conf/global_settings.py:48
msgid "Czech"
msgstr "Tsjekkisk"
-#: conf/global_settings.py:44
+#: conf/global_settings.py:49
msgid "Welsh"
msgstr "Walisisk"
-#: conf/global_settings.py:45
+#: conf/global_settings.py:50
msgid "Danish"
msgstr "Dansk"
-#: conf/global_settings.py:46
+#: conf/global_settings.py:51
msgid "German"
msgstr "Tysk"
-#: conf/global_settings.py:47
+#: conf/global_settings.py:52
msgid "Greek"
msgstr "Gresk"
-#: conf/global_settings.py:48
+#: conf/global_settings.py:53
msgid "English"
msgstr "Engelsk"
-#: conf/global_settings.py:49
+#: conf/global_settings.py:54
msgid "Spanish"
msgstr "Spansk"
-#: conf/global_settings.py:50
+#: conf/global_settings.py:55
+msgid "Estonian"
+msgstr "Estisk"
+
+#: conf/global_settings.py:56
msgid "Argentinean Spanish"
msgstr "Argentinsk spansk"
-#: conf/global_settings.py:51
+#: conf/global_settings.py:57
+msgid "Basque"
+msgstr "Baskisk"
+
+#: conf/global_settings.py:58
msgid "Persian"
msgstr "Persisk"
-#: conf/global_settings.py:52
+#: conf/global_settings.py:59
msgid "Finnish"
msgstr "Finsk"
-#: conf/global_settings.py:53
+#: conf/global_settings.py:60
msgid "French"
msgstr "Fransk"
-#: conf/global_settings.py:54
+#: conf/global_settings.py:61
+msgid "Irish"
+msgstr "Irsk"
+
+#: conf/global_settings.py:62
msgid "Galician"
msgstr "Galisisk"
-#: conf/global_settings.py:55
+#: conf/global_settings.py:63
msgid "Hungarian"
msgstr "Ungarsk"
-#: conf/global_settings.py:56
+#: conf/global_settings.py:64
msgid "Hebrew"
-msgstr "Hebraiske"
+msgstr "Hebraisk"
-#: conf/global_settings.py:57
+#: conf/global_settings.py:65
msgid "Croatian"
msgstr "Kroatisk"
-#: conf/global_settings.py:58
+#: conf/global_settings.py:66
msgid "Icelandic"
msgstr "Islandsk"
-#: conf/global_settings.py:59
+#: conf/global_settings.py:67
msgid "Italian"
msgstr "Italiensk"
-#: conf/global_settings.py:60
+#: conf/global_settings.py:68
msgid "Japanese"
msgstr "Japansk"
-#: conf/global_settings.py:61
+#: conf/global_settings.py:69
+msgid "Georgian"
+msgstr "Georgisk"
+
+#: conf/global_settings.py:70
msgid "Korean"
msgstr "Koreansk"
-#: conf/global_settings.py:62
+#: conf/global_settings.py:71
+msgid "Khmer"
+msgstr "Khmer"
+
+#: conf/global_settings.py:72
msgid "Kannada"
-msgstr ""
+msgstr "Kannada"
-#: conf/global_settings.py:63
+#: conf/global_settings.py:73
msgid "Latvian"
msgstr "Latvisk"
-#: conf/global_settings.py:64
+#: conf/global_settings.py:74
+msgid "Lithuanian"
+msgstr "Litauisk"
+
+#: conf/global_settings.py:75
msgid "Macedonian"
msgstr "Makedonsk"
-#: conf/global_settings.py:65
+#: conf/global_settings.py:76
msgid "Dutch"
msgstr "Nederlandsk"
-#: conf/global_settings.py:66
+#: conf/global_settings.py:77
msgid "Norwegian"
msgstr "Norsk"
-#: conf/global_settings.py:67
+#: conf/global_settings.py:78
msgid "Polish"
msgstr "Polsk"
-#: conf/global_settings.py:68
+#: conf/global_settings.py:79
msgid "Portugese"
msgstr "Portugisisk"
-#: conf/global_settings.py:69
-msgid "Brazilian"
-msgstr "Brasiliansk"
+#: conf/global_settings.py:80
+msgid "Brazilian Portuguese"
+msgstr "Brasiliansk portugisisk"
-#: conf/global_settings.py:70
+#: conf/global_settings.py:81
msgid "Romanian"
msgstr "Rumensk"
-#: conf/global_settings.py:71
+#: conf/global_settings.py:82
msgid "Russian"
msgstr "Russisk"
-#: conf/global_settings.py:72
+#: conf/global_settings.py:83
msgid "Slovak"
msgstr "Slovakisk"
-#: conf/global_settings.py:73
+#: conf/global_settings.py:84
msgid "Slovenian"
msgstr "Slovensk"
-#: conf/global_settings.py:74
+#: conf/global_settings.py:85
msgid "Serbian"
msgstr "Serbisk"
-#: conf/global_settings.py:75
+#: conf/global_settings.py:86
msgid "Swedish"
msgstr "Svensk"
-#: conf/global_settings.py:76
+#: conf/global_settings.py:87
msgid "Tamil"
-msgstr ""
+msgstr "Tamil"
-#: conf/global_settings.py:77
+#: conf/global_settings.py:88
msgid "Telugu"
-msgstr ""
+msgstr "Telugu"
-#: conf/global_settings.py:78
+#: conf/global_settings.py:89
msgid "Turkish"
msgstr "Tyrkisk"
-#: conf/global_settings.py:79
+#: conf/global_settings.py:90
msgid "Ukrainian"
msgstr "Ukrainsk"
-#: conf/global_settings.py:80
+#: conf/global_settings.py:91
msgid "Simplified Chinese"
msgstr "Simplifisert kinesisk"
-#: conf/global_settings.py:81
+#: conf/global_settings.py:92
msgid "Traditional Chinese"
msgstr "Tradisjonell kinesisk"
-#: core/validators.py:71
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Dette feltet kan bare inneholde bokstaver, nummer eller understreker."
-
-#: core/validators.py:75
+#: contrib/admin/filterspecs.py:44
+#, python-format
msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
+"<h3>By %s:</h3>\n"
+"<ul>\n"
msgstr ""
-"Dette feltet kan bare inneholde bokstaver, nummer, understreker, bindestreker"
-" eller skråstreker."
+"<h3>Av %s:</h3>\n"
+"<ul>\n"
-#: core/validators.py:79
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Dette feltet kan bare inneholde bokstaver, nummer, understreker eller "
-"bindestreker."
+#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
+#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
+msgid "All"
+msgstr "Alle"
-#: core/validators.py:83
-msgid "Uppercase letters are not allowed here."
-msgstr "Store bokstaver er ikke tillatt her."
+#: contrib/admin/filterspecs.py:113
+msgid "Any date"
+msgstr "NÃ¥r som helst"
-#: core/validators.py:87
-msgid "Lowercase letters are not allowed here."
-msgstr "Små bokstaver er ikke tillatt her."
+#: contrib/admin/filterspecs.py:114
+msgid "Today"
+msgstr "I dag"
-#: core/validators.py:94
-msgid "Enter only digits separated by commas."
-msgstr "Skriv inn bare tall, adskilt med komma."
+#: contrib/admin/filterspecs.py:117
+msgid "Past 7 days"
+msgstr "Siste 7 dager"
-#: core/validators.py:106
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Skriv inn e-postadresser, adskilt med komma."
+#: contrib/admin/filterspecs.py:119
+msgid "This month"
+msgstr "Denne måneden"
-#: core/validators.py:110
-msgid "Please enter a valid IP address."
-msgstr "Vennligst skriv inn en gyldig IP-adresse."
+#: contrib/admin/filterspecs.py:121
+msgid "This year"
+msgstr "I år"
-#: core/validators.py:114
-msgid "Empty values are not allowed here."
-msgstr "Dette felte kan ikke være tomt."
+#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
+#: oldforms/__init__.py:592
+msgid "Yes"
+msgstr "Ja"
-#: core/validators.py:118
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Dette feltet kan kun bestå av tall."
+#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
+#: oldforms/__init__.py:592
+msgid "No"
+msgstr "Nei"
-#: core/validators.py:122
-msgid "This value can't be comprised solely of digits."
-msgstr "Dette feltet kan ikke bare bestå av nummer."
+#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231
+#: oldforms/__init__.py:592
+msgid "Unknown"
+msgstr "Ukjent"
-#: core/validators.py:127 newforms/fields.py:142
-msgid "Enter a whole number."
-msgstr "Skriv inn et helt nummer."
+#: contrib/admin/models.py:18
+msgid "action time"
+msgstr "tid for handling"
-#: core/validators.py:131
-msgid "Only alphabetical characters are allowed here."
-msgstr "Bare alfabetiske tegn er tillatt her."
+#: contrib/admin/models.py:21
+msgid "object id"
+msgstr "objekt-ID"
-#: core/validators.py:146
-msgid "Year must be 1900 or later."
-msgstr "År må være 1900 eller senere."
+#: contrib/admin/models.py:22
+msgid "object repr"
+msgstr "objekt repr"
-#: core/validators.py:150
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Ugyldig dato: %s"
+#: contrib/admin/models.py:23
+msgid "action flag"
+msgstr "handlingsflagg"
-#: core/validators.py:160
-msgid "Enter a valid time in HH:MM format."
-msgstr "Skriv inn tiden i TT:MM format."
+#: contrib/admin/models.py:24
+msgid "change message"
+msgstr "endre melding"
-#: core/validators.py:169 newforms/fields.py:336
-msgid "Enter a valid e-mail address."
-msgstr "Skriv inn en godkjent e-postadresse."
+#: contrib/admin/models.py:27
+msgid "log entry"
+msgstr "logginnlegg"
-#: core/validators.py:181 core/validators.py:461 oldforms/__init__.py:686
-#: newforms/fields.py:376
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Ingen fil ble "
+#: contrib/admin/models.py:28
+msgid "log entries"
+msgstr "logginnlegg"
+
+#: contrib/admin/templates/admin/404.html:4
+#: contrib/admin/templates/admin/404.html:8
+msgid "Page not found"
+msgstr "Fant ikke siden"
+
+#: contrib/admin/templates/admin/404.html:10
+msgid "We're sorry, but the requested page could not be found."
+msgstr "Beklager, men siden du spør etter finnes ikke."
+
+#: contrib/admin/templates/admin/500.html:4
+#: contrib/admin/templates/admin/base.html:37
+#: contrib/admin/templates/admin/change_form.html:12
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/delete_confirmation.html:5
+#: contrib/admin/templates/admin/invalid_setup.html:4
+#: contrib/admin/templates/admin/object_history.html:4
+#: contrib/admin/templates/admin/auth/user/change_password.html:11
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+#: contrib/admin/templates/registration/logged_out.html:4
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/registration/password_reset_done.html:4
+#: contrib/admin/templates/registration/password_reset_form.html:4
+msgid "Home"
+msgstr "Hjem"
-#: core/validators.py:185 newforms/fields.py:397
+#: contrib/admin/templates/admin/500.html:4
+msgid "Server error"
+msgstr "Tjenerfeil"
+
+#: contrib/admin/templates/admin/500.html:6
+msgid "Server error (500)"
+msgstr "Tjenerfeil (500)"
+
+#: contrib/admin/templates/admin/500.html:9
+msgid "Server Error <em>(500)</em>"
+msgstr "Tjenerfeil <em>(500)</em>"
+
+#: contrib/admin/templates/admin/500.html:10
msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
+"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 ""
-"Last opp et gyldig bilde. Filen du lastet opp var ikke et bilde, eller så var"
-" det det ødelagt."
+"Det har oppstått en feil. Feilen er blitt rapportert til administrator via e-"
+"post, og vil bli fikset snart. Takk for din tålmodighet."
-#: core/validators.py:192
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "Internettadressen %s peker ikke til et gyldig bilde."
+#: contrib/admin/templates/admin/base.html:26
+msgid "Welcome,"
+msgstr "Velkommen,"
-#: core/validators.py:196
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Telefonnummeret må være i XXX-XXX-XXXX format. \"%s\" er ugyldig."
+#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Documentation"
+msgstr "Dokumentasjon"
-#: core/validators.py:204
+#: contrib/admin/templates/admin/base.html:29
+#: contrib/admin/templates/admin/auth/user/change_password.html:14
+#: contrib/admin/templates/admin/auth/user/change_password.html:45
+msgid "Change password"
+msgstr "Endre passord"
+
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/comments/templates/comments/form.html:6
+msgid "Log out"
+msgstr "Logg ut"
+
+#: contrib/admin/templates/admin/base_site.html:4
+msgid "Django site admin"
+msgstr "Django administrasjonsside"
+
+#: contrib/admin/templates/admin/base_site.html:7
+msgid "Django administration"
+msgstr "Django-administrasjon"
+
+#: contrib/admin/templates/admin/change_form.html:14
+#: contrib/admin/templates/admin/index.html:28
+msgid "Add"
+msgstr "Legg til"
+
+#: contrib/admin/templates/admin/change_form.html:20
+#: contrib/admin/templates/admin/object_history.html:4
+msgid "History"
+msgstr "Historikk"
+
+#: contrib/admin/templates/admin/change_form.html:21
+msgid "View on site"
+msgstr "Vis på nettsted"
+
+#: contrib/admin/templates/admin/change_form.html:31
+#: contrib/admin/templates/admin/auth/user/change_password.html:23
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Vennligst fiks feilen under."
+msgstr[1] "Vennligst fiks feilene under."
+
+#: contrib/admin/templates/admin/change_form.html:49
+msgid "Ordering"
+msgstr "Rekkefølge"
+
+#: contrib/admin/templates/admin/change_form.html:52
+msgid "Order:"
+msgstr "Rekkefølge:"
+
+#: contrib/admin/templates/admin/change_list.html:11
#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "Internettadressen %s peker ikke til en gyldig QuickTime-video."
+msgid "Add %(name)s"
+msgstr "Legg til %(name)s"
-#: core/validators.py:208
-msgid "A valid URL is required."
-msgstr "En gyldig internettadresse er påkrevd."
+#: contrib/admin/templates/admin/delete_confirmation.html:8
+#: contrib/admin/templates/admin/submit_line.html:3
+msgid "Delete"
+msgstr "Slett"
-#: core/validators.py:222
+#: contrib/admin/templates/admin/delete_confirmation.html:13
#, python-format
msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
+"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 ""
-"Gyldig HTML er påkrevd. Feilene var:\n"
-"%s"
+"Hvis du sletter %(object_name)s '%(escaped_object)s', vil også slette "
+"relaterte objekter, men du har ikke tillatelse til å slette følgende "
+"objekttyper:"
-#: core/validators.py:229
+#: contrib/admin/templates/admin/delete_confirmation.html:20
#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Ikke velformet XML: %s"
+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 ""
+"Er du sikker på at du vil slette %(object_name)s \"%(escaped_object)s\"? "
+"Alle de følgende relaterte objektene vil bli slettet:"
-#: core/validators.py:246
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Ugyldig URL: %s"
+#: contrib/admin/templates/admin/delete_confirmation.html:25
+msgid "Yes, I'm sure"
+msgstr "Ja, jeg er sikker"
-#: core/validators.py:251 core/validators.py:253
+#: contrib/admin/templates/admin/filter.html:2
#, python-format
-msgid "The URL %s is a broken link."
-msgstr "Internettadresse %s fører til en side som ikke eksisterer."
+msgid " By %(filter_title)s "
+msgstr "Av %(filter_title)s "
-#: core/validators.py:259
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Skriv inn en godkjent amerikansk delstatsforkortelse."
+#: contrib/admin/templates/admin/filters.html:4
+msgid "Filter"
+msgstr "Filtrering"
-#: core/validators.py:273
+#: contrib/admin/templates/admin/index.html:17
#, 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] "Pass munnen din! Ordet %s er ikke tillatt her."
-msgstr[1] "Pass munnen din! Ordene %s er ikke tillatt her."
+msgid "Models available in the %(name)s application."
+msgstr "Modeller tilgjengelig i %(name)s-applikasjonen."
-#: core/validators.py:280
+#: contrib/admin/templates/admin/index.html:18
#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Dette feltet må være det samme som i '%s'-feltet."
+msgid "%(name)s"
+msgstr "%(name)s"
-#: core/validators.py:299
-msgid "Please enter something for at least one field."
-msgstr "Vennligst skriv inn noe i minst et felt."
+#: contrib/admin/templates/admin/index.html:34
+msgid "Change"
+msgstr "Endre"
-#: core/validators.py:308 core/validators.py:319
-msgid "Please enter both fields or leave them both empty."
-msgstr "Vennligst skriv inn noe i begge felta, eller la dem stå blanke."
+#: contrib/admin/templates/admin/index.html:44
+msgid "You don't have permission to edit anything."
+msgstr "Du har ikke rettigheter til å endre noe."
-#: core/validators.py:327
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Dette feltet må bare brukes hvis %(field)s er lik %(value)s"
+#: contrib/admin/templates/admin/index.html:52
+msgid "Recent Actions"
+msgstr "Siste handlinger"
-#: core/validators.py:340
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Dette feltet må bare brukes hvis %(field)s ikke er lik %(value)s"
+#: contrib/admin/templates/admin/index.html:53
+msgid "My Actions"
+msgstr "Mine handlinger"
-#: core/validators.py:359
-msgid "Duplicate values are not allowed."
-msgstr "Like verdier er ikke tillatt."
+#: contrib/admin/templates/admin/index.html:57
+msgid "None available"
+msgstr "Ingen tilgjengelige"
-#: core/validators.py:374
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Denne verdien må være mellom %(lower)s og %(upper)s."
+#: 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 ""
+"Noe er galt med databaseinstallasjonen din. Sørg for at databasetabellene er "
+"opprettet og at brukeren har de nødvendige rettigheter."
-#: core/validators.py:376
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Denne verdien må minst være %s."
+#: contrib/admin/templates/admin/login.html:17
+#: contrib/comments/templates/comments/form.html:6
+#: contrib/comments/templates/comments/form.html:8
+msgid "Username:"
+msgstr "Brukernavn:"
-#: core/validators.py:378
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Denne verdien kan ikke være mer enn %s."
+#: contrib/admin/templates/admin/login.html:20
+#: contrib/comments/templates/comments/form.html:8
+msgid "Password:"
+msgstr "Passord:"
-#: core/validators.py:414
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Denne verdien må være et kvadrat av %s."
+#: contrib/admin/templates/admin/login.html:25
+#: contrib/admin/views/decorators.py:31
+msgid "Log in"
+msgstr "Logg inn"
-#: core/validators.py:424
-msgid "Please enter a valid decimal number."
-msgstr "Vennligst skriv inn et gyldig desimaltall."
+#: contrib/admin/templates/admin/object_history.html:17
+msgid "Date/time"
+msgstr "Dato/tid"
-#: core/validators.py:431
-#, 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] "Skriv inn et desimaltall med maks %s siffer."
-msgstr[1] "Skriv inn et desimaltall med maks %s siffer."
+#: contrib/admin/templates/admin/object_history.html:18
+msgid "User"
+msgstr "Bruker"
-#: core/validators.py:434
-#, python-format
+#: contrib/admin/templates/admin/object_history.html:19
+msgid "Action"
+msgstr "Handling"
+
+#: contrib/admin/templates/admin/object_history.html:25
+msgid "DATE_WITH_TIME_FULL"
+msgstr "H:i, j. M Y"
+
+#: contrib/admin/templates/admin/object_history.html:35
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] "Skriv inn et desimaltall hvor heltallsdelen er maks %s siffer."
-msgstr[1] "Skriv inn et desimaltall hvor heltallsdelen er maks %s siffer."
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
+msgstr ""
+"Dette objektet har ingen endringshistorikk. Det var sannsynligvis ikke lagt "
+"til via denne administrasjonssiden."
-#: core/validators.py:437
-#, 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] "Skriv inn et desimaltall med maks %s siffer bak komma."
-msgstr[1] "Skriv inn et desimaltall med maks %s siffer bak komma."
+#: contrib/admin/templates/admin/pagination.html:10
+msgid "Show all"
+msgstr "Vis alle"
-#: core/validators.py:445
-msgid "Please enter a valid floating point number."
-msgstr "Vennligst skriv inn et gyldig flyttall."
+#: contrib/admin/templates/admin/search_form.html:8
+msgid "Go"
+msgstr "GÃ¥"
-#: core/validators.py:454
+#: contrib/admin/templates/admin/search_form.html:10
#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Vær sikker på at fila du prøver å laste opp minst er %s bytes stor."
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] "Ett resultat"
+msgstr[1] "%(counter)s resultat"
-#: core/validators.py:455
+#: contrib/admin/templates/admin/search_form.html:10
#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Vær sikker på at fila du prøver å laste opp ikke er mer enn %s bytes"
-" stor."
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s totalt"
-#: core/validators.py:472
-msgid "The format for this field is wrong."
-msgstr "Formatet i dette feltet er feil."
+#: contrib/admin/templates/admin/submit_line.html:4
+msgid "Save as new"
+msgstr "Lagre som ny"
-#: core/validators.py:487
-msgid "This field is invalid."
-msgstr "Dette feltet er ugyldig."
+#: contrib/admin/templates/admin/submit_line.html:5
+msgid "Save and add another"
+msgstr "Lagre og legg til ny"
-#: core/validators.py:523
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Klarte ikke å hente noe fra %s."
+#: contrib/admin/templates/admin/submit_line.html:6
+msgid "Save and continue editing"
+msgstr "Lagre og fortsett å endre"
-#: core/validators.py:526
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"Internettadressen %(url)s returnerte den ugyldige Content-Type-headeren "
-"'%(contenttype)s'."
+#: contrib/admin/templates/admin/submit_line.html:7
+msgid "Save"
+msgstr "Lagre"
-#: core/validators.py:559
-#, python-format
+#: contrib/admin/templates/admin/auth/user/add_form.html:6
msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
msgstr ""
-"Vennligst lukk taggen %(tag)s på linje %(line)s. (Linjen starer med "
-"\"%(start)s\".)"
+"Skriv først inn brukernavn og passord. Deretter vil du få mulighet til å "
+"endre flere brukerinnstillinger."
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:12
+msgid "Username"
+msgstr "Brukernavn"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:18
+#: contrib/admin/templates/admin/auth/user/change_password.html:33
+msgid "Password"
+msgstr "Passord"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:23
+#: contrib/admin/templates/admin/auth/user/change_password.html:38
+msgid "Password (again)"
+msgstr "Passord (gjenta)"
-#: core/validators.py:563
+#: contrib/admin/templates/admin/auth/user/add_form.html:24
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+msgid "Enter the same password as above, for verification."
+msgstr "Skriv inn det samme passordet som ovenfor, for verifisering."
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:27
#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Skriv inn et nytt passord for brukeren <strong>%(username)s</strong>."
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Bookmarklets"
+msgstr "Bokmerker"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
+msgid "Documentation bookmarklets"
+msgstr "Dokumentasjonsbokmerker"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:8
msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
+"\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 ""
-"Noe av teksten som starter på linje %(line)s er ikke tillatt. (Linjen "
-"starter med \"%(start)s\".)"
+"\n"
+"<p class=\"help\">For å installere bokmerker, dra linken til verktøylinja\n"
+"for bokmerker, eller høyreklikk og legg til i bokmerker. Nå kan du du velge\n"
+"bokmerket fra hvilken som helst side på nettstedet. Noen av disse\n"
+"bokmerkene krever at datamaskinen du bruker er markert som \"intern\"\n"
+"(kontakt din systemadministrator hvis du er usikker på om maskinen din er "
+"\"intern\").</p>\n"
-#: core/validators.py:568
-#, python-format
+#: contrib/admin/templates/admin_doc/bookmarklets.html:18
+msgid "Documentation for this page"
+msgstr "Dokumentasjon for denne siden"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:19
msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
+"Jumps you from any page to the documentation for the view that generates "
+"that page."
msgstr ""
-"\"%(attr)s\" på linje %(line)s er et ugyldig attributt. (Linjen starter "
-"med \"%(start)s\".)"
+"Hopp fra hvilken som helst side til dokumentasjonen for visningsfunksjonen "
+"som genererte den siden."
-#: core/validators.py:573
-#, python-format
+#: contrib/admin/templates/admin_doc/bookmarklets.html:21
+msgid "Show object ID"
+msgstr "Vis objekt-ID"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:22
msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
+"Shows the content-type and unique ID for pages that represent a single "
+"object."
msgstr ""
-"\"<%(tag)s>\" på linje %(line)s er et ugyldig element. (Linjen starter med "
-"\"%(start)s\".)"
+"Viser \"content-type\" og en unik ID for sider som representerer et enkelt "
+"objekt."
-#: core/validators.py:577
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:24
+msgid "Edit this object (current window)"
+msgstr "Endre dette objektet (nåværende vindu)"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:25
+msgid "Jumps to the admin page for pages that represent a single object."
msgstr ""
-"Et element på linje %(line)s mangler et av de påkrevde attributtene. (Linjen "
-"starter med \"%(start)s\".)"
+"Hopper til administrasjonssiden for sider som representerer et enkelt objekt."
-#: core/validators.py:582
-#, python-format
+#: contrib/admin/templates/admin_doc/bookmarklets.html:27
+msgid "Edit this object (new window)"
+msgstr "Endre dette objektet (nytt vindu)"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:28
+msgid "As above, but opens the admin page in a new window."
+msgstr "Samme som over, men åpner administrasjonssiden i et nytt vindu."
+
+#: contrib/admin/templates/registration/logged_out.html:8
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "Takk for at du valgte å bruke kvalitetstid på nettstedet i dag."
+
+#: contrib/admin/templates/registration/logged_out.html:10
+msgid "Log in again"
+msgstr "Logg inn igjen"
+
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/registration/password_change_form.html:5
+#: contrib/admin/templates/registration/password_change_form.html:9
+msgid "Password change"
+msgstr "Endre passord"
+
+#: contrib/admin/templates/registration/password_change_done.html:5
+#: contrib/admin/templates/registration/password_change_done.html:9
+msgid "Password change successful"
+msgstr "Passordet er endret"
+
+#: contrib/admin/templates/registration/password_change_done.html:11
+msgid "Your password was changed."
+msgstr "Ditt passord er endret."
+
+#: contrib/admin/templates/registration/password_change_form.html:11
msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
+"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 ""
-"\"%(attr)s\"-attributtet på linje %(line)s har en ugyldig verdi. (Linjen "
-"starter med \"%(start)s\".)"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s ble opprettet."
+"Venligst skriv inn ditt gamle passord, av sikkerthetsårsaker. Skriv deretter "
+"inn ditt nye passord to ganger, slik at vi kan kontrollere at det er korrekt."
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s ble oppdatert."
+#: contrib/admin/templates/registration/password_change_form.html:16
+msgid "Old password:"
+msgstr "Gammelt passord:"
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s ble slettet."
+#: contrib/admin/templates/registration/password_change_form.html:18
+msgid "New password:"
+msgstr "Nytt passord:"
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Mandag"
+#: contrib/admin/templates/registration/password_change_form.html:20
+msgid "Confirm password:"
+msgstr "Gjenta nytt passord:"
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Tirsdag"
+#: contrib/admin/templates/registration/password_change_form.html:22
+msgid "Change my password"
+msgstr "Endre passord"
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Onsdag"
+#: 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 "Tilbakestill passord"
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Torsdag"
+#: contrib/admin/templates/registration/password_reset_done.html:6
+#: contrib/admin/templates/registration/password_reset_done.html:10
+msgid "Password reset successful"
+msgstr "Passordet ble tilbakestilt"
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Fredag"
+#: 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 ""
+"Vi har sendt deg et nytt passord til e-postadressen du oppgav. Du vil "
+"forhåpentligvis motta det snart."
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Lørdag"
+#: contrib/admin/templates/registration/password_reset_email.html:2
+msgid "You're receiving this e-mail because you requested a password reset"
+msgstr ""
+"Du har mottatt denne e-posten fordi du har bedt om tilbakestillelse av "
+"passordet ditt"
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Søndag"
+#: contrib/admin/templates/registration/password_reset_email.html:3
+#, python-format
+msgid "for your user account at %(site_name)s"
+msgstr "for din konto hos %(site_name)s"
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Man"
+#: contrib/admin/templates/registration/password_reset_email.html:5
+#, python-format
+msgid "Your new password is: %(new_password)s"
+msgstr "Ditt nye passord er: %(new_password)s"
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Tirs"
+#: contrib/admin/templates/registration/password_reset_email.html:7
+msgid "Feel free to change this password by going to this page:"
+msgstr "Du kan endre dette passordet ved å gå til denne siden:"
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Ons"
+#: contrib/admin/templates/registration/password_reset_email.html:11
+msgid "Your username, in case you've forgotten:"
+msgstr "Brukernavnet ditt, i tilfelle du har glemt det:"
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Tors"
+#: contrib/admin/templates/registration/password_reset_email.html:13
+msgid "Thanks for using our site!"
+msgstr "Takk for at du bruker siden vår!"
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Fre"
+#: contrib/admin/templates/registration/password_reset_email.html:15
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "Hilsen %(site_name)s"
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Lør"
+#: 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 ""
+"Har du glemt passordet ditt? Skriv inn e-postadressen din under, så sender "
+"vi deg et nytt passord."
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Søn"
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "E-mail address:"
+msgstr "E-postadresse:"
-#: utils/dates.py:18
-msgid "January"
-msgstr "Januar"
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "Reset my password"
+msgstr "Tilbakestill mitt passord"
-#: utils/dates.py:18
-msgid "February"
-msgstr "Februar"
+#: contrib/admin/templates/widget/date_time.html:3
+msgid "Date:"
+msgstr "Dato:"
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "Mars"
+#: contrib/admin/templates/widget/date_time.html:4
+msgid "Time:"
+msgstr "Tid:"
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "April"
+#: contrib/admin/templates/widget/file.html:2
+msgid "Currently:"
+msgstr "NÃ¥:"
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "Mai"
+#: contrib/admin/templates/widget/file.html:3
+msgid "Change:"
+msgstr "Endre:"
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "Juni"
+#: contrib/admin/templatetags/admin_list.py:257
+msgid "All dates"
+msgstr "Alle datoer"
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "Juli"
+#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "%(name)s \"%(obj)s\" ble opprettet."
-#: utils/dates.py:19
-msgid "August"
-msgstr "August"
+#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271
+#: contrib/admin/views/main.py:356
+msgid "You may edit it again below."
+msgstr "Du kan endre igjen under."
-#: utils/dates.py:19
-msgid "September"
-msgstr "September"
+#: contrib/admin/views/auth.py:31
+msgid "Add user"
+msgstr "Ny bruker"
-#: utils/dates.py:19
-msgid "October"
-msgstr "Oktober"
+#: contrib/admin/views/auth.py:58
+msgid "Password changed successfully."
+msgstr "Passordet er endret."
-#: utils/dates.py:19
-msgid "November"
-msgstr "November"
+#: contrib/admin/views/auth.py:65
+#, python-format
+msgid "Change password: %s"
+msgstr "Endre passord: %s"
-#: utils/dates.py:20
-msgid "December"
-msgstr "Desember"
+#: contrib/admin/views/decorators.py:17 contrib/auth/forms.py:60
+msgid ""
+"Please enter a correct username and password. Note that both fields are case-"
+"sensitive."
+msgstr ""
+"Vennligst angi korrekt brukernavn og passord. Merk at det er forskjell på "
+"små og store bokstaver."
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
+#: contrib/admin/views/decorators.py:69
+msgid ""
+"Please log in again, because your session has expired. Don't worry: Your "
+"submission has been saved."
+msgstr ""
+"Du må logge inn igjen, fordi økten din har gått ut. Slapp av, innlegget ditt "
+"ble lagret."
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
+#: contrib/admin/views/decorators.py:76
+msgid ""
+"Looks like your browser isn't configured to accept cookies. Please enable "
+"cookies, reload this page, and try again."
+msgstr ""
+"Det ser ut som om nettleseren din ikke støtter informasjonskapsler "
+"('cookies'). Vennligst konfigurer nettleseren din og prøv igjen."
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
+#: contrib/admin/views/decorators.py:89
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr "E-postadressen din er ikke brukernavnet ditt, prøv '%s' i stede."
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
+#: contrib/admin/views/decorators.py:93
+msgid "Usernames cannot contain the '@' character."
+msgstr "Brukernavnet kan ikke inneholde '@'."
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
+#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
+#: contrib/admin/views/doc.py:52
+msgid "tag:"
+msgstr "tag:"
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
+#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81
+#: contrib/admin/views/doc.py:83
+msgid "filter:"
+msgstr "filter:"
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
+#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139
+#: contrib/admin/views/doc.py:141
+msgid "view:"
+msgstr "view:"
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
+#: contrib/admin/views/doc.py:166
+#, python-format
+msgid "App %r not found"
+msgstr "Fant ikke applikasjonen %r"
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
+#: contrib/admin/views/doc.py:173
+#, python-format
+msgid "Model %(name)r not found in app %(label)r"
+msgstr "Fant ikke modellen %(name)r i applikasjonen %(label)r"
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
+#: contrib/admin/views/doc.py:185
+#, python-format
+msgid "the related `%(label)s.%(type)s` object"
+msgstr "det relaterte `%(label)s.%(type)s`-objektet"
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
+#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207
+#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226
+msgid "model:"
+msgstr "modell:"
-#: utils/dates.py:24
-msgid "dec"
-msgstr "des"
+#: contrib/admin/views/doc.py:216
+#, python-format
+msgid "related `%(label)s.%(name)s` objects"
+msgstr "relaterte `%(label)s.%(name)s`-objekter"
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "Jan."
+#: contrib/admin/views/doc.py:221
+#, python-format
+msgid "all %s"
+msgstr "alle %s"
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "Feb."
+#: contrib/admin/views/doc.py:226
+#, python-format
+msgid "number of %s"
+msgstr "antall %s"
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "Aug."
+#: contrib/admin/views/doc.py:231
+#, python-format
+msgid "Fields on %s objects"
+msgstr "Felter på %s-objekter"
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "Sept."
+#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304
+#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312
+#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315
+msgid "Integer"
+msgstr "Heltall"
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "Okt."
+#: contrib/admin/views/doc.py:294
+msgid "Boolean (Either True or False)"
+msgstr "Boolsk (\"True\" eller \"False\")"
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "Nov."
+#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314
+#, python-format
+msgid "String (up to %(max_length)s)"
+msgstr "Tekst (opp til %(max_length)s tegn)"
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "Des."
+#: contrib/admin/views/doc.py:296
+msgid "Comma-separated integers"
+msgstr "Heltall adskilt med komma"
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "Ã¥r"
-msgstr[1] "Ã¥r"
+#: contrib/admin/views/doc.py:297
+msgid "Date (without time)"
+msgstr "Dato (uten tid)"
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "måned"
-msgstr[1] "måndeder"
+#: contrib/admin/views/doc.py:298
+msgid "Date (with time)"
+msgstr "Dato/tid"
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "uke"
-msgstr[1] "uker"
+#: contrib/admin/views/doc.py:299
+msgid "Decimal number"
+msgstr "Desimaltall"
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "dag"
-msgstr[1] "dager"
+#: contrib/admin/views/doc.py:300
+msgid "E-mail address"
+msgstr "E-postadresse"
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "time"
-msgstr[1] "timer"
+#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
+#: contrib/admin/views/doc.py:305
+msgid "File path"
+msgstr "Filsti"
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minutt"
-msgstr[1] "minutter"
+#: contrib/admin/views/doc.py:303
+msgid "Floating point number"
+msgstr "Flyttall"
-#: utils/timesince.py:39
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr ""
+#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89
+msgid "IP address"
+msgstr "IP-adresse"
-#: utils/timesince.py:45
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ""
+#: contrib/admin/views/doc.py:309
+msgid "Boolean (Either True, False or None)"
+msgstr "Boolsk (\"True\", \"False\" eller \"None\")"
-#: utils/text.py:127
-msgid "or"
-msgstr "eller"
+#: contrib/admin/views/doc.py:310
+msgid "Relation to parent model"
+msgstr "Relasjon til foreldermodell"
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr ""
+#: contrib/admin/views/doc.py:311
+msgid "Phone number"
+msgstr "Telefonnummer"
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr ""
+#: contrib/admin/views/doc.py:316
+msgid "Text"
+msgstr "Tekst"
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr ""
+#: contrib/admin/views/doc.py:317
+msgid "Time"
+msgstr "Tid"
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr ""
+#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:8
+msgid "URL"
+msgstr "Nettadresse"
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "midnatt"
+#: contrib/admin/views/doc.py:319
+msgid "U.S. state (two uppercase letters)"
+msgstr "Stat (i USA, to store bokstaver)"
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "middag"
+#: contrib/admin/views/doc.py:320
+msgid "XML text"
+msgstr "XML-tekst"
-#: utils/translation/trans_real.py:391
-msgid "DATE_FORMAT"
-msgstr "j. M Y"
+#: contrib/admin/views/doc.py:346
+#, python-format
+msgid "%s does not appear to be a urlpattern object"
+msgstr "%s ser ikke ut til å være et urlpattern-objekt"
-#: utils/translation/trans_real.py:392
-msgid "DATETIME_FORMAT"
-msgstr "h:i, j. M Y"
+#: contrib/admin/views/main.py:233
+msgid "Site administration"
+msgstr "Nettstedsadministrasjon"
-#: utils/translation/trans_real.py:393
-msgid "TIME_FORMAT"
-msgstr "h:i"
+#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365
+#, python-format
+msgid "You may add another %s below."
+msgstr "Du kan legge til en ny %s under."
-#: utils/translation/trans_real.py:409
-msgid "YEAR_MONTH_FORMAT"
-msgstr "Y M"
+#: contrib/admin/views/main.py:298
+#, python-format
+msgid "Add %s"
+msgstr "Ny %s"
-#: utils/translation/trans_real.py:410
-msgid "MONTH_DAY_FORMAT"
-msgstr "j. M"
+#: contrib/admin/views/main.py:344
+#, python-format
+msgid "Added %s."
+msgstr "La til %s."
-#: contrib/contenttypes/models.py:37
-msgid "python model class name"
-msgstr "python modell klasse navn"
+#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346
+#: contrib/admin/views/main.py:348 core/validators.py:283
+#: db/models/manipulators.py:309
+msgid "and"
+msgstr "og"
-#: contrib/contenttypes/models.py:40
-msgid "content type"
-msgstr "innholdstype"
+#: contrib/admin/views/main.py:346
+#, python-format
+msgid "Changed %s."
+msgstr "Endret %s."
-#: contrib/contenttypes/models.py:41
-msgid "content types"
-msgstr "innholdstyper"
+#: contrib/admin/views/main.py:348
+#, python-format
+msgid "Deleted %s."
+msgstr "Slettet %s."
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "th"
-msgstr ""
+#: contrib/admin/views/main.py:351
+msgid "No fields changed."
+msgstr "Ingen felt endret."
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "st"
-msgstr ""
+#: contrib/admin/views/main.py:354
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr "%(name)s \"%(obj)s\" ble endret."
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "nd"
-msgstr ""
+#: contrib/admin/views/main.py:362
+#, python-format
+msgid ""
+"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr "%(name)s \"%(obj)s\" ble endret. Du kan endre det igjen under."
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "rd"
-msgstr ""
+#: contrib/admin/views/main.py:400
+#, python-format
+msgid "Change %s"
+msgstr "Endre %s"
-#: contrib/humanize/templatetags/humanize.py:50
+#: contrib/admin/views/main.py:487
#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f million"
-msgstr[1] "%(value).1f millioner"
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr "En eller flere %(fieldname)s i %(name)s: %(obj)s"
-#: contrib/humanize/templatetags/humanize.py:53
+#: contrib/admin/views/main.py:492
#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milliard"
-msgstr[1] "%(value).1f milliarder"
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "En eller flere %(fieldname)s i %(name)s:"
-#: contrib/humanize/templatetags/humanize.py:56
+#: contrib/admin/views/main.py:524
#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f billion"
-msgstr[1] "%(value).1f billioner"
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "%(name)s \"%(obj)s\" ble slettet."
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "one"
-msgstr "en"
+#: contrib/admin/views/main.py:527
+msgid "Are you sure?"
+msgstr "Er du sikker?"
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "two"
-msgstr "to"
+#: contrib/admin/views/main.py:549
+#, python-format
+msgid "Change history: %s"
+msgstr "Endringshistorikk: %s"
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "three"
-msgstr "tre"
+#: contrib/admin/views/main.py:583
+#, python-format
+msgid "Select %s"
+msgstr "Velg %s"
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "four"
-msgstr "fire"
+#: contrib/admin/views/main.py:583
+#, python-format
+msgid "Select %s to change"
+msgstr "Velg %s du ønsker å endre"
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "five"
-msgstr "fem"
+#: contrib/admin/views/main.py:765
+msgid "Database error"
+msgstr "Databasefeil"
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "six"
-msgstr "seks"
+#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
+msgid "The two password fields didn't match."
+msgstr "De to passordfeltene er ikke like."
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "seven"
-msgstr "sju"
+#: contrib/auth/forms.py:25
+msgid "A user with that username already exists."
+msgstr "Det eksisterer allerede en bruker med dette brukernavnet."
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "eight"
-msgstr "Ã¥tte"
+#: contrib/auth/forms.py:53
+msgid ""
+"Your Web browser doesn't appear to have cookies enabled. Cookies are "
+"required for logging in."
+msgstr ""
+"Din nettleser ser ikke ut til å støtte informasjonskapsler (cookies). "
+"Informasjonskapsler er påkrevd for å logge inn."
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "nine"
-msgstr "ni"
+#: contrib/auth/forms.py:62
+msgid "This account is inactive."
+msgstr "Denne kontoen er inaktiv."
-#: contrib/humanize/templatetags/humanize.py:90
-msgid "today"
-msgstr "i dag"
+#: contrib/auth/forms.py:84
+msgid ""
+"That e-mail address doesn't have an associated user account. Are you sure "
+"you've registered?"
+msgstr ""
+"Den oppgitte e-postadressen er ikke registrert hos oss. Er du sikker på at "
+"du har en konto her?"
-#: contrib/humanize/templatetags/humanize.py:92
-msgid "tomorrow"
-msgstr "i morgen"
+#: contrib/auth/forms.py:107
+#, python-format
+msgid "Password reset on %s"
+msgstr "Tilbakestilling av passord på %s"
-#: contrib/humanize/templatetags/humanize.py:94
-msgid "yesterday"
-msgstr "i går"
+#: contrib/auth/forms.py:117
+msgid "The two 'new password' fields didn't match."
+msgstr "De to feltene for nytt passord er ikke like."
-#: contrib/auth/views.py:47
-msgid "Logged out"
-msgstr "Logget ut"
+#: contrib/auth/forms.py:124
+msgid "Your old password was entered incorrectly. Please enter it again."
+msgstr "Ditt gamle passord er feil. Vennligst prøv igjen."
-#: contrib/auth/models.py:53 contrib/auth/models.py:73
+#: contrib/auth/models.py:73 contrib/auth/models.py:93
msgid "name"
msgstr "navn"
-#: contrib/auth/models.py:55
+#: contrib/auth/models.py:75
msgid "codename"
msgstr "kodenavn"
-#: contrib/auth/models.py:58
+#: contrib/auth/models.py:78
msgid "permission"
msgstr "rettighet"
-#: contrib/auth/models.py:59 contrib/auth/models.py:74
+#: contrib/auth/models.py:79 contrib/auth/models.py:94
msgid "permissions"
msgstr "rettigheter"
-#: contrib/auth/models.py:77
+#: contrib/auth/models.py:97
msgid "group"
msgstr "gruppe"
-#: contrib/auth/models.py:78 contrib/auth/models.py:121
+#: contrib/auth/models.py:98 contrib/auth/models.py:148
msgid "groups"
msgstr "grupper"
-#: contrib/auth/models.py:111
+#: contrib/auth/models.py:138
msgid "username"
msgstr "brukernavn"
-#: contrib/auth/models.py:111
+#: contrib/auth/models.py:138
msgid ""
"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
"digits and underscores)."
-msgstr "Påkrevd. 30 tegn eller færre. Kun alfanumeriske tegn (bokstaver, "
-"tall og understreker)."
+msgstr ""
+"Påkrevd. 30 tegn eller færre. Kun alfanumeriske tegn (bokstaver, tall og "
+"understreker)."
-#: contrib/auth/models.py:112
+#: contrib/auth/models.py:139
msgid "first name"
msgstr "fornavn"
-#: contrib/auth/models.py:113
+#: contrib/auth/models.py:140
msgid "last name"
msgstr "etternavn"
-#: contrib/auth/models.py:114
+#: contrib/auth/models.py:141
msgid "e-mail address"
msgstr "e-postadresse"
-#: contrib/auth/models.py:115
+#: contrib/auth/models.py:142
msgid "password"
msgstr "passord"
-#: contrib/auth/models.py:115
+#: contrib/auth/models.py:142
msgid ""
"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
"password form</a>."
-msgstr "Bruk '[algo]$[salt]$[hexdigest]' eller <a href=\"password/\">endre "
-"passord-skjemaet</a>."
+msgstr ""
+"Bruk '[algo]$[salt]$[hexdigest]' eller <a href=\"password/\">endre passord-"
+"skjemaet</a>."
-#: contrib/auth/models.py:116
+#: contrib/auth/models.py:143
msgid "staff status"
msgstr "administrasjonsstatus"
-#: contrib/auth/models.py:116
+#: contrib/auth/models.py:143
msgid "Designates whether the user can log into this admin site."
-msgstr "Bestemmer om brukeren kan logge inn på disse administrasjonssidene."
+msgstr "Angir at brukeren kan logge inn på disse administrasjonssidene."
-#: contrib/auth/models.py:117
+#: contrib/auth/models.py:144
msgid "active"
msgstr "aktiv"
-#: contrib/auth/models.py:117
+#: contrib/auth/models.py:144
msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
+"Designates whether this user should be treated as active. Unselect this "
"instead of deleting accounts."
-msgstr "Bestemmer om brukeren kan logge inn på disse sidene. Huk av denne "
-"i stedet for å slette kontoen."
+msgstr ""
+"Angir at denne brukeren er aktiv. Huk av denne i stedet for å slette kontoen."
-#: contrib/auth/models.py:118
+#: contrib/auth/models.py:145
msgid "superuser status"
msgstr "superbruker"
-#: contrib/auth/models.py:118
+#: contrib/auth/models.py:145
msgid ""
"Designates that this user has all permissions without explicitly assigning "
"them."
-msgstr "Bestemmer om denne brukeren har alle rettigheter, uten å sette de "
-"eksplisitt."
+msgstr ""
+"Angir at denne brukeren har alle rettigheter, uten å sette de eksplisitt."
-#: contrib/auth/models.py:119
+#: contrib/auth/models.py:146
msgid "last login"
msgstr "siste innlogging"
-#: contrib/auth/models.py:120
+#: contrib/auth/models.py:147
msgid "date joined"
-msgstr "registreringsdato"
+msgstr "registrert"
-#: contrib/auth/models.py:122
+#: contrib/auth/models.py:149
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
msgstr ""
-"I tillegg til rettighetene som blir gitt manuelt, får brukeren også full "
-"tilgang til rettighetene til gruppene han/hun er i."
+"I tillegg til de rettighetene som blir angitt manuelt, får brukeren også "
+"rettighetene gitt til gruppene han/hun er med i."
-#: contrib/auth/models.py:123
+#: contrib/auth/models.py:150
msgid "user permissions"
msgstr "Brukerrettigheter"
-#: contrib/auth/models.py:127
+#: contrib/auth/models.py:154
msgid "user"
msgstr "bruker"
-#: contrib/auth/models.py:128
+#: contrib/auth/models.py:155
msgid "users"
msgstr "brukere"
-#: contrib/auth/models.py:134
+#: contrib/auth/models.py:160
msgid "Personal info"
msgstr "Personlig informasjon"
-#: contrib/auth/models.py:135
+#: contrib/auth/models.py:161
msgid "Permissions"
msgstr "Rettigheter"
-#: contrib/auth/models.py:136
+#: contrib/auth/models.py:162
msgid "Important dates"
msgstr "Viktige datoer"
-#: contrib/auth/models.py:137
+#: contrib/auth/models.py:163
msgid "Groups"
msgstr "Grupper"
-#: contrib/auth/models.py:288
+#: contrib/auth/models.py:323
msgid "message"
msgstr "melding"
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "De to passordfeltene er ikke like."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Det eksisterer en bruker med dette brukernavnet."
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Din nettleser ser ikke ut til å støtte informasjonskapsler (cookies). "
-"Informasjonskapsler er påkrevd for å logge inn."
-
-#: 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 ""
-"Vennligst angi korrekt brukernavn og passord. Merk at det er forskjell på "
-"små og store bokstaver."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Denne kontoen er inaktiv."
-
-#: contrib/auth/forms.py:84
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr "Den oppgitte e-postadressen er ikke registrert hos oss. Er du sikker"
-"på at du har en konto her?"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "De to feltene for nytt passord er ikke like."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Ditt gamle passord er feil. Vennligst prøv igjen."
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "omadresser fra"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Dette burde vært en fullstendig sti, uten domenenavnet. Eksempel: '/"
-"nyheter/les/"
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "omadresser til"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Dette kan enten være en fullstendig sti (som over), eller en hel "
-"internettadresse som starter med 'http://'"
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "omadressering"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "omadresserelser"
+#: contrib/auth/views.py:49
+msgid "Logged out"
+msgstr "Logget ut"
-#: contrib/comments/models.py:67 contrib/comments/models.py:169
+#: contrib/comments/models.py:71 contrib/comments/models.py:176
msgid "object ID"
msgstr "objekt-ID"
-#: contrib/comments/models.py:68
+#: contrib/comments/models.py:72
msgid "headline"
msgstr "overskrift"
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:170
+#: contrib/comments/models.py:73 contrib/comments/models.py:95
+#: contrib/comments/models.py:177
msgid "comment"
msgstr "kommentar"
-#: contrib/comments/models.py:70
+#: contrib/comments/models.py:74
msgid "rating #1"
msgstr "rangering #1 "
-#: contrib/comments/models.py:71
+#: contrib/comments/models.py:75
msgid "rating #2"
msgstr "rangering #2"
-#: contrib/comments/models.py:72
+#: contrib/comments/models.py:76
msgid "rating #3"
msgstr "rangering #3"
-#: contrib/comments/models.py:73
+#: contrib/comments/models.py:77
msgid "rating #4"
msgstr "rangering #4"
-#: contrib/comments/models.py:74
+#: contrib/comments/models.py:78
msgid "rating #5"
msgstr "rangering #5"
-#: contrib/comments/models.py:75
+#: contrib/comments/models.py:79
msgid "rating #6"
msgstr "rangering #6"
-#: contrib/comments/models.py:76
+#: contrib/comments/models.py:80
msgid "rating #7"
msgstr "rangering #7"
-#: contrib/comments/models.py:77
+#: contrib/comments/models.py:81
msgid "rating #8"
msgstr "rangering #8"
-#: contrib/comments/models.py:82
+#: contrib/comments/models.py:86
msgid "is valid rating"
msgstr "er gyldig rangering"
-#: contrib/comments/models.py:83 contrib/comments/models.py:172
+#: contrib/comments/models.py:87 contrib/comments/models.py:179
msgid "date/time submitted"
msgstr "dato/tid for innsendelse"
-#: contrib/comments/models.py:84 contrib/comments/models.py:173
+#: contrib/comments/models.py:88 contrib/comments/models.py:180
msgid "is public"
msgstr "er tilgjengelig for alle"
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:306
-msgid "IP address"
-msgstr "IP-adresse"
-
-#: contrib/comments/models.py:86
+#: contrib/comments/models.py:90
msgid "is removed"
msgstr "er fjernet"
-#: contrib/comments/models.py:86
+#: contrib/comments/models.py:90
msgid ""
"Check this box if the comment is inappropriate. A \"This comment has been "
"removed\" message will be displayed instead."
msgstr ""
"Huk av denne avkryssningsboksen hvis kommentaren er upasende. Beskjeden "
-"\"Denne kommentaren er blitt fjernet\" vil bli vist istedet."
+"\"Denne kommentaren har blitt fjernet\" vil bli vist i stedet."
-#: contrib/comments/models.py:91
+#: contrib/comments/models.py:96
msgid "comments"
msgstr "kommentarer"
-#: contrib/comments/models.py:134 contrib/comments/models.py:213
+#: contrib/comments/models.py:140 contrib/comments/models.py:222
msgid "Content object"
msgstr "innholdsobjekt"
-#: contrib/comments/models.py:162
+#: contrib/comments/models.py:168
#, python-format
msgid ""
"Posted by %(user)s at %(date)s\n"
@@ -1264,54 +1342,54 @@ msgid ""
"\n"
"http://%(domain)s%(url)s"
msgstr ""
-"Sendt av %(user)s på %(date)s\n"
+"Skrevet av %(user)s, %(date)s\n"
"\n"
"%(comment)s\n"
"\n"
"http://%(domain)s%(url)s"
-#: contrib/comments/models.py:171
+#: contrib/comments/models.py:178
msgid "person's name"
msgstr "personens navn"
-#: contrib/comments/models.py:174
+#: contrib/comments/models.py:181
msgid "ip address"
msgstr "IP-adresse"
-#: contrib/comments/models.py:176
+#: contrib/comments/models.py:183
msgid "approved by staff"
msgstr "godkjent av moderator"
-#: contrib/comments/models.py:179
+#: contrib/comments/models.py:187
msgid "free comment"
msgstr "Ã¥pen kommentar"
-#: contrib/comments/models.py:180
+#: contrib/comments/models.py:188
msgid "free comments"
msgstr "Ã¥pne kommentarer"
-#: contrib/comments/models.py:239
+#: contrib/comments/models.py:250
msgid "score"
msgstr "poeng"
-#: contrib/comments/models.py:240
+#: contrib/comments/models.py:251
msgid "score date"
msgstr "poengdato"
-#: contrib/comments/models.py:243
+#: contrib/comments/models.py:255
msgid "karma score"
msgstr "karmapoeng"
-#: contrib/comments/models.py:244
+#: contrib/comments/models.py:256
msgid "karma scores"
msgstr "karmapoeng"
-#: contrib/comments/models.py:248
+#: contrib/comments/models.py:260
#, python-format
msgid "%(score)d rating by %(user)s"
msgstr "%(score)d rangering av %(user)s"
-#: contrib/comments/models.py:264
+#: contrib/comments/models.py:277
#, python-format
msgid ""
"This comment was flagged by %(user)s:\n"
@@ -1322,58 +1400,82 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/models.py:271
+#: contrib/comments/models.py:285
msgid "flag date"
msgstr "flaggdato"
-#: contrib/comments/models.py:274
+#: contrib/comments/models.py:289
msgid "user flag"
msgstr "brukerflag"
-#: contrib/comments/models.py:275
+#: contrib/comments/models.py:290
msgid "user flags"
msgstr "brukerflag"
-#: contrib/comments/models.py:279
+#: contrib/comments/models.py:294
#, python-format
msgid "Flag by %r"
msgstr "Flagg med %r"
-#: contrib/comments/models.py:284
+#: contrib/comments/models.py:300
msgid "deletion date"
msgstr "dato fjernet"
-#: contrib/comments/models.py:286
+#: contrib/comments/models.py:303
msgid "moderator deletion"
msgstr "fjernet av moderator"
-#: contrib/comments/models.py:287
+#: contrib/comments/models.py:304
msgid "moderator deletions"
msgstr "fjernet av moderator"
-#: contrib/comments/models.py:291
+#: contrib/comments/models.py:308
#, python-format
msgid "Moderator deletion by %r"
-msgstr "Fjernet av moderator med %r"
+msgstr "Fjernet av moderator %r"
-#: contrib/comments/views/karma.py:20
-msgid "Anonymous users cannot vote"
-msgstr "Anonyme brukere kan ikke stemme"
+#: contrib/comments/templates/comments/form.html:8
+msgid "Forgotten your password?"
+msgstr "Har du glemt passordet ditt?"
-#: contrib/comments/views/karma.py:24
-msgid "Invalid comment ID"
-msgstr "Ikke gyldig kommentar-ID"
+#: contrib/comments/templates/comments/form.html:12
+msgid "Ratings"
+msgstr "Rangeringer"
-#: contrib/comments/views/karma.py:26
-msgid "No voting for yourself"
-msgstr "Du kan ikke stemme på deg selv"
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Required"
+msgstr "PÃ¥krevd"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Optional"
+msgstr "Valgfri"
+
+#: contrib/comments/templates/comments/form.html:23
+msgid "Post a photo"
+msgstr "Send et bilde"
+
+#: contrib/comments/templates/comments/form.html:28
+#: contrib/comments/templates/comments/freeform.html:5
+msgid "Comment:"
+msgstr "Kommentar:"
+
+#: contrib/comments/templates/comments/form.html:35
+#: contrib/comments/templates/comments/freeform.html:10
+msgid "Preview comment"
+msgstr "Forhåndvis kommentar"
+
+#: contrib/comments/templates/comments/freeform.html:4
+msgid "Your name:"
+msgstr "Ditt navn:"
#: contrib/comments/views/comments.py:28
msgid ""
"This rating is required because you've entered at least one other rating."
msgstr ""
"Denne rangeringen er påkrevd, fordi du har rangert en eller flere ting fra "
-"før "
+"før."
#: contrib/comments/views/comments.py:112
#, python-format
@@ -1388,13 +1490,13 @@ msgid_plural ""
"\n"
"%(text)s"
msgstr[0] ""
-"Denne kommentaren var skrevet av en bruker som har fra før skrevet under %"
-"(count)s kommentarer:\n"
+"Denne kommentaren var skrevet av en bruker som har skrevet mindre enn "
+"%(count)s kommentarer:\n"
"\n"
"%(text)s"
msgstr[1] ""
-"Denne kommentaren var skrevet av en bruker som har fra før skrevet under %"
-"(count)s kommentarer:\n"
+"Denne kommentaren var skrevet av en bruker som har skrevet mindre enn "
+"%(count)s kommentarer:\n"
"\n"
"%(text)s"
@@ -1409,1178 +1511,1084 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:189
-#: contrib/comments/views/comments.py:281
+#: contrib/comments/views/comments.py:190
+#: contrib/comments/views/comments.py:283
msgid "Only POSTs are allowed"
msgstr "Kun POST er tillatt"
-#: contrib/comments/views/comments.py:193
-#: contrib/comments/views/comments.py:285
+#: contrib/comments/views/comments.py:194
+#: contrib/comments/views/comments.py:287
msgid "One or more of the required fields wasn't submitted"
msgstr "En eller flere av feltene som er påkrevd ble ikke sendt."
-#: contrib/comments/views/comments.py:197
-#: contrib/comments/views/comments.py:287
+#: contrib/comments/views/comments.py:198
+#: contrib/comments/views/comments.py:289
msgid "Somebody tampered with the comment form (security violation)"
msgstr "Noen har endret på komentarfeltene (sikkerhetsadvarsel)"
-#: contrib/comments/views/comments.py:207
-#: contrib/comments/views/comments.py:293
+#: contrib/comments/views/comments.py:208
+#: contrib/comments/views/comments.py:295
msgid ""
"The comment form had an invalid 'target' parameter -- the object ID was "
"invalid"
msgstr "Skjemaet hadde en ugyldig 'target'-verdi - objekt-IDen var ugyldig"
-#: contrib/comments/views/comments.py:258
-#: contrib/comments/views/comments.py:322
+#: contrib/comments/views/comments.py:259
+#: contrib/comments/views/comments.py:324
msgid "The comment form didn't provide either 'preview' or 'post'"
msgstr "Kommentarskjemaet la ikke ved 'preview'- eller 'post'-element"
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Ditt navn:"
-
-#: contrib/comments/templates/comments/freeform.html:5
-#: contrib/comments/templates/comments/form.html:28
-msgid "Comment:"
-msgstr "Kommentar:"
-
-#: contrib/comments/templates/comments/freeform.html:10
-#: contrib/comments/templates/comments/form.html:35
-msgid "Preview comment"
-msgstr "Forhåndvis kommentar"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "Brukernavn:"
-
-#: 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/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
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Log out"
-msgstr "Logg ut"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Passord:"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Har du glemt passordet ditt?"
+#: contrib/comments/views/karma.py:21
+msgid "Anonymous users cannot vote"
+msgstr "Anonyme brukere kan ikke stemme"
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Rangeringer"
+#: contrib/comments/views/karma.py:25
+msgid "Invalid comment ID"
+msgstr "Ugyldig kommentar-ID"
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "PÃ¥krevd"
+#: contrib/comments/views/karma.py:27
+msgid "No voting for yourself"
+msgstr "Du kan ikke stemme på deg selv"
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Valgfri"
+#: contrib/contenttypes/models.py:67
+msgid "python model class name"
+msgstr "python-modell klassenavn"
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Send et bilde"
+#: contrib/contenttypes/models.py:71
+msgid "content type"
+msgstr "innholdstype"
-#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:317
-msgid "URL"
-msgstr "URL"
+#: contrib/contenttypes/models.py:72
+msgid "content types"
+msgstr "innholdstyper"
-#: contrib/flatpages/models.py:8
+#: contrib/flatpages/models.py:9
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
"Eksempel: '/om/kontakt/'. Vær sikker på at det er en skråstrek foran og bak."
-#: contrib/flatpages/models.py:9
+#: contrib/flatpages/models.py:10
msgid "title"
msgstr "tittel"
-#: contrib/flatpages/models.py:10
+#: contrib/flatpages/models.py:11
msgid "content"
msgstr "innhold"
-#: contrib/flatpages/models.py:11
+#: contrib/flatpages/models.py:12
msgid "enable comments"
msgstr "tillat kommentarer"
-#: contrib/flatpages/models.py:12
+#: contrib/flatpages/models.py:13
msgid "template name"
-msgstr "navn på mal"
+msgstr "malnavn"
-#: contrib/flatpages/models.py:13
+#: contrib/flatpages/models.py:14
msgid ""
"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
"will use 'flatpages/default.html'."
msgstr ""
-"Eksempel: 'flatpages/kontakt_side.html'. Hvis denne ikke denne er gitt, vil "
+"Eksempel: 'flatpages/kontakt_side.html'. Hvis denne ikke er gitt, vil "
"'flatpages/default.html' bli brukt."
-#: contrib/flatpages/models.py:14
+#: contrib/flatpages/models.py:15
msgid "registration required"
msgstr "registrering kreves"
-#: contrib/flatpages/models.py:14
+#: contrib/flatpages/models.py:15
msgid "If this is checked, only logged-in users will be able to view the page."
msgstr ""
"Hvis denne er krysset av, er det kun innloggede brukere som kan se siden."
-#: contrib/flatpages/models.py:18
+#: contrib/flatpages/models.py:20
msgid "flat page"
msgstr "flatside"
-#: contrib/flatpages/models.py:19
+#: contrib/flatpages/models.py:21
msgid "flat pages"
msgstr "flatsider"
-#: contrib/sessions/models.py:68
+#: contrib/flatpages/models.py:27
+msgid "Advanced options"
+msgstr "Avanserte innstillinger"
+
+#: contrib/humanize/templatetags/humanize.py:19
+msgid "th"
+msgstr ""
+
+#: contrib/humanize/templatetags/humanize.py:19
+msgid "st"
+msgstr ""
+
+#: contrib/humanize/templatetags/humanize.py:19
+msgid "nd"
+msgstr ""
+
+#: contrib/humanize/templatetags/humanize.py:19
+msgid "rd"
+msgstr ""
+
+#: contrib/humanize/templatetags/humanize.py:51
+#, python-format
+msgid "%(value).1f million"
+msgid_plural "%(value).1f million"
+msgstr[0] "%(value).1f million"
+msgstr[1] "%(value).1f millioner"
+
+#: contrib/humanize/templatetags/humanize.py:54
+#, python-format
+msgid "%(value).1f billion"
+msgid_plural "%(value).1f billion"
+msgstr[0] "%(value).1f milliard"
+msgstr[1] "%(value).1f milliarder"
+
+#: contrib/humanize/templatetags/humanize.py:57
+#, python-format
+msgid "%(value).1f trillion"
+msgid_plural "%(value).1f trillion"
+msgstr[0] "%(value).1f billion"
+msgstr[1] "%(value).1f billioner"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "one"
+msgstr "én"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "two"
+msgstr "to"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "three"
+msgstr "tre"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "four"
+msgstr "fire"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "five"
+msgstr "fem"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "six"
+msgstr "seks"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "seven"
+msgstr "sju"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "eight"
+msgstr "Ã¥tte"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "nine"
+msgstr "ni"
+
+#: contrib/humanize/templatetags/humanize.py:93
+msgid "today"
+msgstr "i dag"
+
+#: contrib/humanize/templatetags/humanize.py:95
+msgid "tomorrow"
+msgstr "i morgen"
+
+#: contrib/humanize/templatetags/humanize.py:97
+msgid "yesterday"
+msgstr "i går"
+
+#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12
+msgid "Enter a zip code in the format XXXX."
+msgstr "Skriv inn et postnummer som XXXX."
+
+#: contrib/localflavor/no/forms.py:33
+msgid "Enter a valid Norwegian social security number."
+msgstr "Skriv et gyldig norsk personnummer."
+
+#: contrib/redirects/models.py:7
+msgid "redirect from"
+msgstr "omadresser fra"
+
+#: contrib/redirects/models.py:8
+msgid ""
+"This should be an absolute path, excluding the domain name. Example: '/"
+"events/search/'."
+msgstr ""
+"Dette burde vært en fullstendig sti, uten domenenavnet. Eksempel: '/nyheter/"
+"les/"
+
+#: contrib/redirects/models.py:9
+msgid "redirect to"
+msgstr "omadresser til"
+
+#: contrib/redirects/models.py:10
+msgid ""
+"This can be either an absolute path (as above) or a full URL starting with "
+"'http://'."
+msgstr ""
+"Dette kan enten være en fullstendig sti (som over), eller en fullstendig "
+"nettadresse som starter med 'http://'"
+
+#: contrib/redirects/models.py:13
+msgid "redirect"
+msgstr "omadressering"
+
+#: contrib/redirects/models.py:14
+msgid "redirects"
+msgstr "omadresserelser"
+
+#: contrib/sessions/models.py:45
msgid "session key"
msgstr "sesjonsnøkkel"
-#: contrib/sessions/models.py:69
+#: contrib/sessions/models.py:47
msgid "session data"
msgstr "sesjonsdata"
-#: contrib/sessions/models.py:70
+#: contrib/sessions/models.py:48
msgid "expire date"
msgstr "utløpsdato"
-#: contrib/sessions/models.py:74
+#: contrib/sessions/models.py:53
msgid "session"
msgstr "sesjon"
-#: contrib/sessions/models.py:75
+#: contrib/sessions/models.py:54
msgid "sessions"
msgstr "sesjoner"
-#: contrib/sites/models.py:15
+#: contrib/sites/models.py:32
msgid "domain name"
msgstr "domenenavn"
-#: contrib/sites/models.py:16
+#: contrib/sites/models.py:33
msgid "display name"
msgstr "visningsnavn"
-#: contrib/sites/models.py:20
+#: contrib/sites/models.py:37
msgid "site"
msgstr "nettsted"
-#: contrib/sites/models.py:21
+#: contrib/sites/models.py:38
msgid "sites"
msgstr "nettsteder"
-#: contrib/admin/filterspecs.py:42
-#, python-format
+#: core/validators.py:72
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Dette feltet kan bare inneholde bokstaver, nummer og understreker."
+
+#: core/validators.py:76
msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
+"This value must contain only letters, numbers, underscores, dashes or "
+"slashes."
msgstr ""
-"<h3>Av %s:</h3>\n"
-"<ul>\n"
+"Dette feltet kan bare inneholde bokstaver, nummer, understreker, "
+"bindestreker eller skråstreker."
-#: contrib/admin/filterspecs.py:72 contrib/admin/filterspecs.py:90
-#: contrib/admin/filterspecs.py:145 contrib/admin/filterspecs.py:171
-msgid "All"
-msgstr "Alle"
-
-#: contrib/admin/filterspecs.py:111
-msgid "Any date"
-msgstr "NÃ¥r som helst"
+#: core/validators.py:80
+msgid "This value must contain only letters, numbers, underscores or hyphens."
+msgstr ""
+"Dette feltet kan bare inneholde bokstaver, nummer, understreker eller "
+"bindestreker."
-#: contrib/admin/filterspecs.py:112
-msgid "Today"
-msgstr "I dag"
+#: core/validators.py:84
+msgid "Uppercase letters are not allowed here."
+msgstr "Store bokstaver er ikke tillatt her."
-#: contrib/admin/filterspecs.py:115
-msgid "Past 7 days"
-msgstr "Siste 7 dager"
+#: core/validators.py:88
+msgid "Lowercase letters are not allowed here."
+msgstr "Små bokstaver er ikke tillatt her."
-#: contrib/admin/filterspecs.py:117
-msgid "This month"
-msgstr "Denne måneden"
+#: core/validators.py:95
+msgid "Enter only digits separated by commas."
+msgstr "Skriv inn kun tall adskilt med komma."
-#: contrib/admin/filterspecs.py:119
-msgid "This year"
-msgstr "I år"
+#: core/validators.py:107
+msgid "Enter valid e-mail addresses separated by commas."
+msgstr "Skriv inn gyldige e-postadresser, adskilt med komma."
-#: contrib/admin/filterspecs.py:145 oldforms/__init__.py:591
-#: newforms/widgets.py:188
-msgid "Yes"
-msgstr "Ja"
+#: core/validators.py:111
+msgid "Please enter a valid IP address."
+msgstr "Vennligst skriv inn en gyldig IP-adresse."
-#: contrib/admin/filterspecs.py:145 oldforms/__init__.py:591
-#: newforms/widgets.py:188
-msgid "No"
-msgstr "Nei"
+#: core/validators.py:115
+msgid "Empty values are not allowed here."
+msgstr "Dette feltet kan ikke være tomt."
-#: contrib/admin/filterspecs.py:152 oldforms/__init__.py:591
-#: newforms/widgets.py:188
-msgid "Unknown"
-msgstr "Ukjent"
+#: core/validators.py:119
+msgid "Non-numeric characters aren't allowed here."
+msgstr "Dette feltet kan kun bestå av tall."
-#: contrib/admin/models.py:17
-msgid "action time"
-msgstr "tid for handling"
+#: core/validators.py:123
+msgid "This value can't be comprised solely of digits."
+msgstr "Dette feltet kan ikke bare bestå av siffer."
-#: contrib/admin/models.py:20
-msgid "object id"
-msgstr "objekt-ID"
+#: core/validators.py:128 newforms/fields.py:157
+msgid "Enter a whole number."
+msgstr "Skriv inn et helt nummer."
-#: contrib/admin/models.py:21
-msgid "object repr"
-msgstr "objekt repr"
+#: core/validators.py:132
+msgid "Only alphabetical characters are allowed here."
+msgstr "Bare alfabetiske tegn er tillatt her."
-#: contrib/admin/models.py:22
-msgid "action flag"
-msgstr "handlingsflagg"
+#: core/validators.py:147
+msgid "Year must be 1900 or later."
+msgstr "År må være 1900 eller senere."
-#: contrib/admin/models.py:23
-msgid "change message"
-msgstr "endre melding"
+#: core/validators.py:151
+#, python-format
+msgid "Invalid date: %s"
+msgstr "Ugyldig dato: %s"
-#: contrib/admin/models.py:26
-msgid "log entry"
-msgstr "logginnlegg"
+#: core/validators.py:156 db/models/fields/__init__.py:554
+msgid "Enter a valid date in YYYY-MM-DD format."
+msgstr "Skriv inn en gyldig dato som Ã…Ã…Ã…Ã…-MM-DD."
-#: contrib/admin/models.py:27
-msgid "log entries"
-msgstr "logginnlegg"
+#: core/validators.py:161
+msgid "Enter a valid time in HH:MM format."
+msgstr "Skriv inn tiden som TT:MM."
-#: contrib/admin/templatetags/admin_list.py:254
-msgid "All dates"
-msgstr "Alle datoer"
+#: core/validators.py:165 db/models/fields/__init__.py:631
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
+msgstr "Skriv inn dato og tid som Ã…Ã…Ã…Ã…-MM-DD TT:MM."
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "Logg inn"
+#: core/validators.py:170 newforms/fields.py:408
+msgid "Enter a valid e-mail address."
+msgstr "Skriv inn en gyldig e-postadresse."
-#: 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 ""
-"Du må logge inn igjen, fordi økten din har gått ut. Slapp av, innlegget ditt "
-"ble lagret."
+#: core/validators.py:182 core/validators.py:474 newforms/fields.py:426
+msgid "No file was submitted. Check the encoding type on the form."
+msgstr "Ingen fil ble sendt. Sjekk \"encoding\"-typen på skjemaet."
-#: contrib/admin/views/decorators.py:69
+#: core/validators.py:193 newforms/fields.py:468
msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
+"Upload a valid image. The file you uploaded was either not an image or a "
+"corrupted image."
msgstr ""
-"Det ser ut som om nettleseren din ikke støtter informasjonskapsler "
-"('cookies'). Vennligst konfigurer nettleseren din, og prøv igjen."
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "Brukernavnet kan ikke inneholde '@'"
+"Last opp et gyldig bilde. Filen du lastet opp var ikke et bilde eller "
+"var ødelagt."
-#: contrib/admin/views/decorators.py:85
+#: core/validators.py:200
#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "E-postadressen din er ikke brukernavnet ditt, prøv '%s' i stede."
+msgid "The URL %s does not point to a valid image."
+msgstr "Nettadressen %s peker ikke på et gyldig bilde."
-#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:264
+#: core/validators.py:204
#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" ble lagt inn i databasen."
-
-#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:268
-#: contrib/admin/views/main.py:354
-msgid "You may edit it again below."
-msgstr "Du kan endre under"
+msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
+msgstr "Telefonnummeret må være i XXX-XXX-XXXX format. \"%s\" er ugyldig."
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Ny bruker"
+#: core/validators.py:212
+#, python-format
+msgid "The URL %s does not point to a valid QuickTime video."
+msgstr "Nettadressen %s peker ikke på en gyldig QuickTime-video."
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "Passordet er endret."
+#: core/validators.py:216
+msgid "A valid URL is required."
+msgstr "En gyldig nettadresse er påkrevd."
-#: contrib/admin/views/auth.py:65
+#: core/validators.py:230
#, python-format
-msgid "Change password: %s"
-msgstr "Endre passord: %s"
-
-#: contrib/admin/views/main.py:230
-msgid "Site administration"
-msgstr "Nettstedsadministrasjon"
+msgid ""
+"Valid HTML is required. Specific errors are:\n"
+"%s"
+msgstr ""
+"Gyldig HTML er påkrevd. Feilene var:\n"
+"%s"
-#: contrib/admin/views/main.py:278 contrib/admin/views/main.py:363
+#: core/validators.py:237
#, python-format
-msgid "You may add another %s below."
-msgstr "Du kan legge til en ny %s under."
+msgid "Badly formed XML: %s"
+msgstr "Ikke velformet XML: %s"
-#: contrib/admin/views/main.py:296
+#: core/validators.py:254
#, python-format
-msgid "Add %s"
-msgstr "Ny %s"
+msgid "Invalid URL: %s"
+msgstr "Ugyldig nettadresse: %s"
-#: contrib/admin/views/main.py:342
+#: core/validators.py:259 core/validators.py:261
#, python-format
-msgid "Added %s."
-msgstr "La til %s"
+msgid "The URL %s is a broken link."
+msgstr "Nettadressen %s fører til en side som ikke eksisterer."
-#: contrib/admin/views/main.py:344
+#: core/validators.py:267
+msgid "Enter a valid U.S. state abbreviation."
+msgstr "Skriv inn en gyldig amerikansk delstatsforkortelse."
+
+#: core/validators.py:281
#, python-format
-msgid "Changed %s."
-msgstr "Endret %s."
+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] "Pass munnen din! Ordet %s er ikke tillatt her."
+msgstr[1] "Pass munnen din! Ordene %s er ikke tillatt her."
-#: contrib/admin/views/main.py:346
+#: core/validators.py:288
#, python-format
-msgid "Deleted %s."
-msgstr "Slettet %s."
+msgid "This field must match the '%s' field."
+msgstr "Dette feltet må være det samme som '%s'-feltet."
-#: contrib/admin/views/main.py:349
-msgid "No fields changed."
-msgstr "Ingen felt endret."
+#: core/validators.py:307
+msgid "Please enter something for at least one field."
+msgstr "Vennligst skriv inn noe i minst ett felt."
+
+#: core/validators.py:316 core/validators.py:327
+msgid "Please enter both fields or leave them both empty."
+msgstr "Vennligst skriv inn noe i begge feltene, eller la begge være blanke."
-#: contrib/admin/views/main.py:352
+#: core/validators.py:335
#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" ble endret."
+msgid "This field must be given if %(field)s is %(value)s"
+msgstr "Dette feltet kreves hvis %(field)s er lik %(value)s"
-#: contrib/admin/views/main.py:360
+#: core/validators.py:348
#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" ble endret. Du kan endre det igjen under."
+msgid "This field must be given if %(field)s is not %(value)s"
+msgstr "Dette feltet kreves hvis %(field)s ikke er lik %(value)s"
-#: contrib/admin/views/main.py:398
+#: core/validators.py:367
+msgid "Duplicate values are not allowed."
+msgstr "Like verdier er ikke tillatt."
+
+#: core/validators.py:382
#, python-format
-msgid "Change %s"
-msgstr "Endre %s"
+msgid "This value must be between %(lower)s and %(upper)s."
+msgstr "Denne verdien må være mellom %(lower)s og %(upper)s."
-#: contrib/admin/views/main.py:483
+#: core/validators.py:384
#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "En eller flere %(fieldname)s i %(name)s: %(obj)s"
+msgid "This value must be at least %s."
+msgstr "Denne verdien må minst være %s."
-#: contrib/admin/views/main.py:488
+#: core/validators.py:386
#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "En eller flere %(fieldname)s i %(name)s:"
+msgid "This value must be no more than %s."
+msgstr "Denne verdien kan ikke være mer enn %s."
-#: contrib/admin/views/main.py:520
+#: core/validators.py:427
#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" ble slettet."
+msgid "This value must be a power of %s."
+msgstr "Denne verdien må være et kvadrat av %s."
-#: contrib/admin/views/main.py:523
-msgid "Are you sure?"
-msgstr "Er du sikker?"
+#: core/validators.py:437
+msgid "Please enter a valid decimal number."
+msgstr "Vennligst skriv inn et gyldig desimaltall."
-#: contrib/admin/views/main.py:545
+#: core/validators.py:444
#, python-format
-msgid "Change history: %s"
-msgstr "Endringshistorikk: %s"
+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] "Skriv inn et desimaltall med maks %s siffer."
+msgstr[1] "Skriv inn et desimaltall med maks %s siffer."
-#: contrib/admin/views/main.py:579
+#: core/validators.py:447
#, python-format
-msgid "Select %s"
-msgstr "Velg %s"
+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] "Skriv inn et desimaltall hvor heltallsdelen er maks %s siffer."
+msgstr[1] "Skriv inn et desimaltall hvor heltallsdelen er maks %s siffer."
-#: contrib/admin/views/main.py:579
+#: core/validators.py:450
#, python-format
-msgid "Select %s to change"
-msgstr "Velg %s for å endre"
+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] "Skriv inn et desimaltall med maks %s siffer bak komma."
+msgstr[1] "Skriv inn et desimaltall med maks %s siffer bak komma."
-#: contrib/admin/views/main.py:780
-msgid "Database error"
-msgstr "Databasefeil"
+#: core/validators.py:458
+msgid "Please enter a valid floating point number."
+msgstr "Vennligst skriv inn et gyldig flyttall."
-#: contrib/admin/views/doc.py:47 contrib/admin/views/doc.py:49
-#: contrib/admin/views/doc.py:51
-msgid "tag:"
-msgstr ""
+#: core/validators.py:467
+#, python-format
+msgid "Make sure your uploaded file is at least %s bytes big."
+msgstr "Vær sikker på at filen du prøver å laste opp minst er %s bytes."
-#: contrib/admin/views/doc.py:78 contrib/admin/views/doc.py:80
-#: contrib/admin/views/doc.py:82
-msgid "filter:"
+#: core/validators.py:468
+#, python-format
+msgid "Make sure your uploaded file is at most %s bytes big."
msgstr ""
+"Vær sikker på at filen du prøver å laste opp ikke er mer enn %s bytes."
-#: contrib/admin/views/doc.py:136 contrib/admin/views/doc.py:138
-#: contrib/admin/views/doc.py:140
-msgid "view:"
-msgstr ""
+#: core/validators.py:485
+msgid "The format for this field is wrong."
+msgstr "Formatet i dette feltet er feil."
-#: contrib/admin/views/doc.py:165
-#, python-format
-msgid "App %r not found"
-msgstr "Fan ikke applikasjonen %r"
+#: core/validators.py:500
+msgid "This field is invalid."
+msgstr "Dette feltet er ugyldig."
-#: contrib/admin/views/doc.py:172
+#: core/validators.py:536
#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Fant ikke %(name)r-modellen i applikasjonen %(label)r"
+msgid "Could not retrieve anything from %s."
+msgstr "Klarte ikke å hente noe fra %s."
-#: contrib/admin/views/doc.py:184
+#: core/validators.py:539
#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "det relaterte `%(label)s.%(type)s`-objektet"
-
-#: contrib/admin/views/doc.py:184 contrib/admin/views/doc.py:206
-#: contrib/admin/views/doc.py:220 contrib/admin/views/doc.py:225
-msgid "model:"
+msgid ""
+"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
+"Nettadressen %(url)s returnerte den ugyldige Content-Type-headeren "
+"'%(contenttype)s'."
-#: contrib/admin/views/doc.py:215
+#: core/validators.py:572
#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "relaterte `%(label)s.%(name)s`-objekter"
+msgid ""
+"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
+"\"%(start)s\".)"
+msgstr ""
+"Vennligst lukk taggen %(tag)s på linje %(line)s. (Linjen starer med "
+"\"%(start)s\".)"
-#: contrib/admin/views/doc.py:220
+#: core/validators.py:576
#, python-format
-msgid "all %s"
-msgstr "alle %s"
+msgid ""
+"Some text starting on line %(line)s is not allowed in that context. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"Noe av teksten som starter på linje %(line)s er ikke tillatt. (Linjen "
+"starter med \"%(start)s\".)"
-#: contrib/admin/views/doc.py:225
+#: core/validators.py:581
#, python-format
-msgid "number of %s"
-msgstr "antall %s"
+msgid ""
+"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
+"(start)s\".)"
+msgstr ""
+"\"%(attr)s\" på linje %(line)s er et ugyldig attributt. (Linjen starter med "
+"\"%(start)s\".)"
-#: contrib/admin/views/doc.py:230
+#: core/validators.py:586
#, python-format
-msgid "Fields on %s objects"
-msgstr "Felter på %s objekter"
+msgid ""
+"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
+"(start)s\".)"
+msgstr ""
+"\"<%(tag)s>\" på linje %(line)s er et ugyldig element. (Linjen starter med "
+"\"%(start)s\".)"
-#: contrib/admin/views/doc.py:292 contrib/admin/views/doc.py:303
-#: contrib/admin/views/doc.py:305 contrib/admin/views/doc.py:311
-#: contrib/admin/views/doc.py:312 contrib/admin/views/doc.py:314
-msgid "Integer"
-msgstr "Heltall"
+#: core/validators.py:590
+#, python-format
+msgid ""
+"A tag on line %(line)s is missing one or more required attributes. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"Et element på linje %(line)s mangler et av de påkrevde attributtene. (Linjen "
+"starter med \"%(start)s\".)"
-#: contrib/admin/views/doc.py:293
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (enten \"True\" eller \"False\")"
+#: core/validators.py:595
+#, python-format
+msgid ""
+"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"\"%(attr)s\"-attributtet på linje %(line)s har en ugyldig verdi. (Linjen "
+"starter med \"%(start)s\".)"
-#: contrib/admin/views/doc.py:294 contrib/admin/views/doc.py:313
+#: db/models/manipulators.py:308
#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Tekst (opp til %(max_length)s tegn)"
+msgid "%(object)s with this %(type)s already exists for the given %(field)s."
+msgstr "%(object)s med %(type)s finnes allerede for angitt %(field)s."
-#: contrib/admin/views/doc.py:295
-msgid "Comma-separated integers"
-msgstr "Heltall adskilt med komma"
+#: db/models/fields/__init__.py:52
+#, python-format
+msgid "%(optname)s with this %(fieldname)s already exists."
+msgstr "%(optname)s med %(fieldname)s finnes allerede."
-#: contrib/admin/views/doc.py:296
-msgid "Date (without time)"
-msgstr "Dato (uten tid)"
+#: db/models/fields/__init__.py:182 db/models/fields/__init__.py:354
+#: db/models/fields/__init__.py:788 db/models/fields/__init__.py:799
+#: newforms/fields.py:51 oldforms/__init__.py:374
+msgid "This field is required."
+msgstr "Dette feltet er påkrevd."
-#: contrib/admin/views/doc.py:297
-msgid "Date (with time)"
-msgstr "Dato/tid"
+#: db/models/fields/__init__.py:454
+msgid "This value must be an integer."
+msgstr "Denne verdien må være et heltall."
-#: contrib/admin/views/doc.py:298
-msgid "Decimal number"
-msgstr "Desimaltall"
+#: db/models/fields/__init__.py:493
+msgid "This value must be either True or False."
+msgstr "Denne verdien må være \"True\" eller \"False\"."
-#: contrib/admin/views/doc.py:299
-msgid "E-mail address"
-msgstr "E-postadresse"
+#: db/models/fields/__init__.py:517
+msgid "This field cannot be null."
+msgstr "Dette feltet kan ikke være tomt."
-#: contrib/admin/views/doc.py:300 contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:304
-msgid "File path"
-msgstr "Filsti"
+#: db/models/fields/__init__.py:695
+msgid "This value must be a decimal number."
+msgstr "Denne verdien må være et desimaltall."
-#: contrib/admin/views/doc.py:302
-msgid "Floating point number"
-msgstr "Flyttall"
+#: db/models/fields/__init__.py:808
+msgid "Enter a valid filename."
+msgstr "Skriv inn et gyldig filnavn."
-#: contrib/admin/views/doc.py:308
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (enten \"True\", \"False\" eller \"None\")"
+#: db/models/fields/__init__.py:1002
+msgid "This value must be either None, True or False."
+msgstr "Denne verdien må være None, True eller False."
-#: contrib/admin/views/doc.py:309
-msgid "Relation to parent model"
-msgstr "Relasjon til foreldermodell"
+#: db/models/fields/related.py:94
+#, python-format
+msgid "Please enter a valid %s."
+msgstr "Vennligst skriv inn en/et gyldig %s."
-#: contrib/admin/views/doc.py:310
-msgid "Phone number"
-msgstr "Telefonnummer"
+#: db/models/fields/related.py:756
+msgid "Separate multiple IDs with commas."
+msgstr "Separer flere ID-er med komma."
-#: contrib/admin/views/doc.py:315
-msgid "Text"
-msgstr "Tekst"
+#: db/models/fields/related.py:758
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr ""
+"Hold nede \"Control\", eller \"Command\" på en Mac, for å velge mer enn en."
-#: contrib/admin/views/doc.py:316
-msgid "Time"
-msgstr "Tid"
+#: db/models/fields/related.py:805
+#, 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] "Skriv inn gyldige %(self)s ID-er. Verdien %(value)r er ikke gyldig."
+msgstr[1] ""
+"Skriv inn gyldige %(self)s ID-er. Verdiene %(value)r er ikke gyldige."
-#: contrib/admin/views/doc.py:318
-msgid "U.S. state (two uppercase letters)"
-msgstr "Stat (i USA, to store bokstaver)"
+#: newforms/fields.py:52
+msgid "Enter a valid value."
+msgstr "Skriv inn en gyldig verdi."
-#: contrib/admin/views/doc.py:319
-msgid "XML text"
-msgstr "XML-tekst"
+#: newforms/fields.py:129
+#, python-format
+msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
+msgstr "Pass på at denne er på maks %(max)d tegn (den er %(length)d)."
-#: contrib/admin/views/doc.py:345
+#: newforms/fields.py:130
#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ser ikke ut til å være et urlpattern-objekt"
+msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
+msgstr "Pass på at denne er på minst %(min)d tegn (den er %(length)d)."
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "NÃ¥:"
+#: newforms/fields.py:158 newforms/fields.py:187 newforms/fields.py:216
+#, python-format
+msgid "Ensure this value is less than or equal to %s."
+msgstr "Pass på at denne er mindre eller lik %s."
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Endre:"
+#: newforms/fields.py:159 newforms/fields.py:188 newforms/fields.py:217
+#, python-format
+msgid "Ensure this value is greater than or equal to %s."
+msgstr "Pass på at denne er større eller lik %s."
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Dato:"
+#: newforms/fields.py:186 newforms/fields.py:215
+msgid "Enter a number."
+msgstr "Skriv inn et tall."
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Tid:"
+#: newforms/fields.py:218
+#, python-format
+msgid "Ensure that there are no more than %s digits in total."
+msgstr "Pass på at det ikke er mer enn %s siffer totalt."
-#: contrib/admin/templates/admin/object_history.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/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:3
-msgid "Documentation"
-msgstr "Dokumentasjon"
+#: newforms/fields.py:219
+#, python-format
+msgid "Ensure that there are no more than %s decimal places."
+msgstr "Pass på at ikke er mer enn %s desimaler."
-#: contrib/admin/templates/admin/object_history.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/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
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Change password"
-msgstr "Endre passord"
+#: newforms/fields.py:220
+#, python-format
+msgid "Ensure that there are no more than %s digits before the decimal point."
+msgstr "Pass på at det ikke er mer enn %s siffer foran komma."
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_list.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
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Hjem"
+#: newforms/fields.py:268 newforms/fields.py:781
+msgid "Enter a valid date."
+msgstr "Skriv inn en gyldig dato."
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "History"
-msgstr "Historikk"
+#: newforms/fields.py:301 newforms/fields.py:782
+msgid "Enter a valid time."
+msgstr "Skriv inn et gyldig tidspunkt."
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Dato/tid"
+#: newforms/fields.py:340
+msgid "Enter a valid date/time."
+msgstr "Skriv inn et gyldig tidspunkt."
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "Bruker"
+#: newforms/fields.py:427
+msgid "No file was submitted."
+msgstr "Ingen fil ble sendt."
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "Handling"
+#: newforms/fields.py:428 oldforms/__init__.py:693
+msgid "The submitted file is empty."
+msgstr "Filen er tom."
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "h:i, j. M Y"
+#: newforms/fields.py:524
+msgid "Enter a valid URL."
+msgstr "Skriv inn en gyldig nettadresse."
-#: 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 ""
-"Dette objektet har ingen endringshistorikk. Det var sannsynligvis ikke lagt "
-"til via denne siden."
+#: newforms/fields.py:525
+msgid "This URL appears to be a broken link."
+msgstr "Denne nettadressen fører til en side som ikke eksisterer."
-#: contrib/admin/templates/admin/change_list.html:12
-#, python-format
-msgid "Add %(name)s"
-msgstr "Legg til %(name)s"
+#: newforms/fields.py:590 newforms/models.py:306
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "Velg et gyldig valg. Ditt valg er ikke et av de tilgjengelige valgene."
-#: contrib/admin/templates/admin/filter.html:2
+#: newforms/fields.py:629
#, python-format
-msgid " By %(filter_title)s "
-msgstr "Av %(filter_title)s "
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Tjenerfeil"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Tjenerfeil (500)"
+msgid "Select a valid choice. %(value)s is not one of the available choices."
+msgstr "Velg et gyldig valg. %(value)s er ikke et av de tilgjengelige valgene."
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Tjenerfeil <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Det har oppstått en feil. Feilen er blitt rapportert til administrator via e-"
-"post, og vil bli fikset snart. Takk for din tålmodighet."
-
-#: 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 "Noe er galt med databaseinstallasjonen din. Sørg for at "
-"databasetabellene er opprett, og at brukeren har de nødvendige rettigheter."
+#: newforms/fields.py:630 newforms/fields.py:692 newforms/models.py:373
+msgid "Enter a list of values."
+msgstr "Skriv inn en liste med verdier."
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "GÃ¥"
+#: newforms/fields.py:810
+msgid "Enter a valid IPv4 address."
+msgstr "Skriv inn en gyldig IPv4-adresse."
-#: contrib/admin/templates/admin/search_form.html:10
+#: newforms/models.py:374
#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "Ett resultat"
-msgstr[1] "(counter)s resultat"
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr "Velg et gyldig valg. %s er ikke et av de tilgjengelige valgene."
-#: contrib/admin/templates/admin/search_form.html:10
+#: oldforms/__init__.py:409
#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s totalt"
+msgid "Ensure your text is less than %s character."
+msgid_plural "Ensure your text is less than %s characters."
+msgstr[0] "Pass på at teksten er kortere enn %s tegn."
+msgstr[1] "Pass på at teksten er kortere enn %s tegn."
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Vis alle"
+#: oldforms/__init__.py:414
+msgid "Line breaks are not allowed here."
+msgstr "Det er ikke tillatt med linjeskift her."
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django administrasjonsside"
+#: oldforms/__init__.py:512 oldforms/__init__.py:586 oldforms/__init__.py:625
+#, python-format
+msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
+msgstr "Velg et gyldig valg. '%(data)s' er ikke i %(choices)s."
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django-administrasjon"
+#: oldforms/__init__.py:754
+msgid "Enter a whole number between -32,768 and 32,767."
+msgstr "Skriv inn et heltall mellom -32768 og 32767."
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filter"
+#: oldforms/__init__.py:764
+msgid "Enter a positive number."
+msgstr "Skriv inn et positivt heltall."
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Fant ikke siden"
+#: oldforms/__init__.py:774
+msgid "Enter a whole number between 0 and 32,767."
+msgstr "Skriv inn et heltall mellom 0 og 32767."
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Beklager, men siden du spør etter finnes ikke."
+#: template/defaultfilters.py:698
+msgid "yes,no,maybe"
+msgstr "ja,nei,kanskje"
-#: contrib/admin/templates/admin/index.html:17
+#: template/defaultfilters.py:729
#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modeller tilgjengelig i %(name)s-applikasjonen."
+msgid "%(size)d byte"
+msgid_plural "%(size)d bytes"
+msgstr[0] ""
+msgstr[1] ""
-#: contrib/admin/templates/admin/index.html:18
+#: template/defaultfilters.py:731
#, python-format
-msgid "%(name)s"
+msgid "%.1f KB"
msgstr ""
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "Legg til"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Endre"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Du har ikke rettigheter til å endre noe."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Siste handlinger"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Mine handlinger"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Ingen tilgjengelige"
-
-#: contrib/admin/templates/admin/change_form.html:22
-msgid "View on site"
-msgstr "Vis på nettsted"
-
-#: 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] "Vennligst fiks feilen under."
-msgstr[1] "Vennligst fiks feilene under."
-
-#: contrib/admin/templates/admin/change_form.html:50
-msgid "Ordering"
-msgstr "Rekkefølge"
-
-#: contrib/admin/templates/admin/change_form.html:53
-msgid "Order:"
-msgstr "Rekkefølge:"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Velkommen,"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Slett"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
+#: template/defaultfilters.py:733
#, 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:"
+msgid "%.1f MB"
msgstr ""
-"Hivs du sletter %(object_name)s '%(escaped_object)s', vil du også slette "
-"relaterte objekter, men du har ikke tillatelse til å slette følgende "
-"objektene:"
-#: contrib/admin/templates/admin/delete_confirmation.html:21
+#: template/defaultfilters.py:734
#, 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:"
+msgid "%.1f GB"
msgstr ""
-"Er du sikker på at du vill slette %(object_name)s \"%(escaped_object)s\"? "
-"Alle de følgende relaterte objektene vil bli slettet:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "Ja, jeg er sikker"
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Lagre som ny"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Lagre og legg til ny"
+#: utils/dateformat.py:41
+msgid "p.m."
+msgstr ""
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Lagre og fortsett å endre"
+#: utils/dateformat.py:42
+msgid "a.m."
+msgstr ""
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Lagre"
+#: utils/dateformat.py:47
+msgid "PM"
+msgstr ""
-#: 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 "Skriv inn et nytt passord for brukeren <strong>%(username)s</strong>."
+#: utils/dateformat.py:48
+msgid "AM"
+msgstr ""
-#: contrib/admin/templates/admin/auth/user/change_password.html:34
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-msgid "Password"
-msgstr "Passord"
+#: utils/dateformat.py:97
+msgid "midnight"
+msgstr "midnatt"
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-msgid "Password (again)"
-msgstr "Passord (gjenta)"
+#: utils/dateformat.py:99
+msgid "noon"
+msgstr "middag"
-#: 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 "Skriv inn det samme passordet som ovenfor, for verifisering."
+#: utils/dates.py:6
+msgid "Monday"
+msgstr "Mandag"
-#: 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 "Skriv først inn brukernavn og passord. Deretter vil du få mulighet "
-"til å endre flere brukerinnstillinger."
+#: utils/dates.py:6
+msgid "Tuesday"
+msgstr "Tirsdag"
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Brukernavn"
+#: utils/dates.py:6
+msgid "Wednesday"
+msgstr "Onsdag"
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Endre passord"
+#: utils/dates.py:6
+msgid "Thursday"
+msgstr "Torsdag"
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Passordet er endret"
+#: utils/dates.py:6
+msgid "Friday"
+msgstr "Fredag"
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Ditt passord er endret."
+#: utils/dates.py:7
+msgid "Saturday"
+msgstr "Lørdag"
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "Tilbakestill passord"
+#: utils/dates.py:7
+msgid "Sunday"
+msgstr "Søndag"
-#: 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 ""
-"Har du glemt passordet ditt? Skriv inn e-postadressen din under, så sender "
-"vi deg et nytt passord til deg."
+#: utils/dates.py:10
+msgid "Mon"
+msgstr "Man"
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-postadresse:"
+#: utils/dates.py:10
+msgid "Tue"
+msgstr "Tirs"
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Tilbakestill mitt passord"
+#: utils/dates.py:10
+msgid "Wed"
+msgstr "Ons"
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Takk for at du valgte å bruke kvalitetstid på nettstedet i dag."
+#: utils/dates.py:10
+msgid "Thu"
+msgstr "Tors"
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Logg inn igjen"
+#: utils/dates.py:10
+msgid "Fri"
+msgstr "Fre"
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Passordet ble tilbakestilt"
+#: utils/dates.py:11
+msgid "Sat"
+msgstr "Lør"
-#: 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 ""
-"Vi har sendt deg et nytt passord til e-postadressen du oppgav. Du vil "
-"forhåpentligvis motta det snart."
+#: utils/dates.py:11
+msgid "Sun"
+msgstr "Søn"
-#: 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 ""
-"Venligst skriv inn ditt gamle passord, av sikkerthetsårsaker. Skriv deretter "
-"inn ditt nye passord to ganger, slik at vi kan kontrollere at det er rett."
+#: utils/dates.py:18
+msgid "January"
+msgstr "Januar"
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Gammelt passord:"
+#: utils/dates.py:18
+msgid "February"
+msgstr "Februar"
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Nytt passord:"
+#: utils/dates.py:18 utils/dates.py:31
+msgid "March"
+msgstr "Mars"
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Gjenta nytt passord:"
+#: utils/dates.py:18 utils/dates.py:31
+msgid "April"
+msgstr "April"
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Endre passord"
+#: utils/dates.py:18 utils/dates.py:31
+msgid "May"
+msgstr "Mai"
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr ""
-"Du har mottatt denne e-posten fordi du ba om å tilbakestille passordet ditt"
+#: utils/dates.py:18 utils/dates.py:31
+msgid "June"
+msgstr "Juni"
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "for din konto hos %(site_name)s"
+#: utils/dates.py:19 utils/dates.py:31
+msgid "July"
+msgstr "Juli"
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Ditt nye passord er: %(new_password)s"
+#: utils/dates.py:19
+msgid "August"
+msgstr "August"
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Du kan endre dette passordet ved å gå til denne siden:"
+#: utils/dates.py:19
+msgid "September"
+msgstr "September"
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "I tilfellet du har glemt brukernavnet ditt, så er det:"
+#: utils/dates.py:19
+msgid "October"
+msgstr "Oktober"
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Takk for at du bruker siden vår!"
+#: utils/dates.py:19
+msgid "November"
+msgstr "November"
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Hilsen %(site_name)s"
+#: utils/dates.py:20
+msgid "December"
+msgstr "Desember"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bokmerker"
+#: utils/dates.py:23
+msgid "jan"
+msgstr "jan"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "Dokumentasjonsbokmerker"
+#: utils/dates.py:23
+msgid "feb"
+msgstr "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 ""
-"\n"
-"<p class=\"help\">For å installere bokmerker, dra linken til verktøylinja\n"
-"for bokmerker, eller høyreklikk og legg til i bokmerker. Nå kan du du velge\n"
-"bokmerket fra hvilken som helst side på nettstedet. Noen av disse\n"
-"bokmerkene krever at datamaskinen du bruker er markert som \"intern\"\n"
-"(kontakt din systemadministrator hvis du er usikker på om maskinen din er "
-"\"intern\").</p>\n"
+#: utils/dates.py:23
+msgid "mar"
+msgstr "mar"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Dokumentasjon for denne siden"
+#: utils/dates.py:23
+msgid "apr"
+msgstr "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 ""
-"Hopp fra hvilken som helst side til dokumentasjonen for visnings funksjonen "
-"som laget siden."
+#: utils/dates.py:23
+msgid "may"
+msgstr "mai"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Vis objekt-ID"
+#: utils/dates.py:23
+msgid "jun"
+msgstr "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 ""
-"Viser \"content-type\" og en unik ID for sider som representerer et enkelt "
-"objekt."
+#: utils/dates.py:24
+msgid "jul"
+msgstr "jul"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Endre dette objektet (nåværende vindu)"
+#: utils/dates.py:24
+msgid "aug"
+msgstr "aug"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Hopper til administrasjonsiden for sider som representerer et enkelt objekt."
+#: utils/dates.py:24
+msgid "sep"
+msgstr "sep"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Endre dette objektet (nytt vindu)"
+#: utils/dates.py:24
+msgid "oct"
+msgstr "okt"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "Samme som over, men åpner administrasjonsiden i et nytt vindu."
+#: utils/dates.py:24
+msgid "nov"
+msgstr "nov"
-#: contrib/localflavor/no/forms.py:14 contrib/localflavor/ch/forms.py:18
-msgid "Enter a zip code in the format XXXX."
-msgstr "Skriv inn et postnummer som XXXX."
+#: utils/dates.py:24
+msgid "dec"
+msgstr "des"
-#: contrib/localflavor/no/forms.py:35
-msgid "Enter a valid Norwegian social security number."
-msgstr "Skriv et gyldig norsk personnummer."
+#: utils/dates.py:31
+msgid "Jan."
+msgstr "Jan."
-#: template/defaultfilters.py:485
-msgid "yes,no,maybe"
-msgstr "ja,nei,kanskje"
+#: utils/dates.py:31
+msgid "Feb."
+msgstr "Feb."
-#: template/defaultfilters.py:514
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] ""
-msgstr[1] ""
+#: utils/dates.py:32
+msgid "Aug."
+msgstr "Aug."
-#: template/defaultfilters.py:516
-#, python-format
-msgid "%.1f KB"
-msgstr ""
+#: utils/dates.py:32
+msgid "Sept."
+msgstr "Sept."
-#: template/defaultfilters.py:518
-#, python-format
-msgid "%.1f MB"
-msgstr ""
+#: utils/dates.py:32
+msgid "Oct."
+msgstr "Okt."
-#: template/defaultfilters.py:519
-#, python-format
-msgid "%.1f GB"
-msgstr ""
+#: utils/dates.py:32
+msgid "Nov."
+msgstr "Nov."
-#: oldforms/__init__.py:408
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Sjekk at teksten er kortere enn %s tegn."
-msgstr[1] "Sjekk at teksten er kortere enn %s tegn."
+#: utils/dates.py:32
+msgid "Dec."
+msgstr "Des."
-#: oldforms/__init__.py:413
-msgid "Line breaks are not allowed here."
-msgstr "Det er ikke tillatt med linjeskift her."
+#: utils/text.py:128
+msgid "or"
+msgstr "eller"
-#: oldforms/__init__.py:511 oldforms/__init__.py:585 oldforms/__init__.py:624
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Velg et gyldig valg; '%(data)s' er ikke i %(choices)s."
+#: utils/timesince.py:21
+msgid "year"
+msgid_plural "years"
+msgstr[0] "Ã¥r"
+msgstr[1] "Ã¥r"
-#: oldforms/__init__.py:688 newforms/fields.py:380
-msgid "The submitted file is empty."
-msgstr "Filen er tom."
+#: utils/timesince.py:22
+msgid "month"
+msgid_plural "months"
+msgstr[0] "måned"
+msgstr[1] "måneder"
-#: oldforms/__init__.py:744
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Skriv inn et heltall mellom -32768 og 32767."
+#: utils/timesince.py:23
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "uke"
+msgstr[1] "uker"
-#: oldforms/__init__.py:754
-msgid "Enter a positive number."
-msgstr "Skriv inn et positivt heltall."
+#: utils/timesince.py:24
+msgid "day"
+msgid_plural "days"
+msgstr[0] "dag"
+msgstr[1] "dager"
-#: oldforms/__init__.py:764
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Skriv inn et heltall mellom 0 og 32767."
+#: utils/timesince.py:25
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "time"
+msgstr[1] "timer"
-#: newforms/models.py:180 newforms/fields.py:478
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Velg et gyldig valg. Ditt valg er ikke et av de gyldige valgene."
+#: utils/timesince.py:26
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minutt"
+msgstr[1] "minutter"
-#: newforms/models.py:197 newforms/fields.py:494 newforms/fields.py:570
-msgid "Enter a list of values."
-msgstr "Skriv inn en liste med verdier."
+#: utils/timesince.py:46
+msgid "minutes"
+msgstr "minutter"
-#: newforms/models.py:203 newforms/fields.py:500
+#: utils/timesince.py:51
#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Velg et gyldig valg; %s er ikke et av de tilgjengelige valgene."
+msgid "%(number)d %(type)s"
+msgstr ""
-#: newforms/fields.py:116
+#: utils/timesince.py:57
#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Pass på at denne er på maks %(max)d tegn (den er %(length)d)."
+msgid ", %(number)d %(type)s"
+msgstr ""
-#: newforms/fields.py:118
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Pass på at denne er på minst %(min)d tegn (den er %(length)d)."
+#: utils/translation/trans_real.py:412
+msgid "DATE_FORMAT"
+msgstr "j. M Y"
-#: newforms/fields.py:144 newforms/fields.py:167 newforms/fields.py:197
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Pass på at denne er mindre eller lik %s."
+#: utils/translation/trans_real.py:413
+msgid "DATETIME_FORMAT"
+msgstr "H:i, j. M Y"
-#: newforms/fields.py:146 newforms/fields.py:169 newforms/fields.py:199
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Pass på at denne er større eller lik %s."
+#: utils/translation/trans_real.py:414
+msgid "TIME_FORMAT"
+msgstr "H:i"
-#: newforms/fields.py:165 newforms/fields.py:192
-msgid "Enter a number."
-msgstr "Skriv inn et tall."
+#: utils/translation/trans_real.py:430
+msgid "YEAR_MONTH_FORMAT"
+msgstr "M Y"
-#: newforms/fields.py:201
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Pass på at det ikke er mer enn %s siffer totalt."
+#: utils/translation/trans_real.py:431
+msgid "MONTH_DAY_FORMAT"
+msgstr "j. M"
-#: newforms/fields.py:203
+#: views/generic/create_update.py:43
#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Pass på at ikke er mer enn %s desimaler."
+msgid "The %(verbose_name)s was created successfully."
+msgstr "%(verbose_name)s ble opprettet."
-#: newforms/fields.py:205
+#: views/generic/create_update.py:117
#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Pass på at det ikke er mer enn %s siffer foran komma."
-
-#: newforms/fields.py:238 newforms/fields.py:610
-msgid "Enter a valid date."
-msgstr "Skriv inn en gyldig dato."
-
-#: newforms/fields.py:265 newforms/fields.py:612
-msgid "Enter a valid time."
-msgstr "Skriv inn et gyldig tidspunkt."
-
-#: newforms/fields.py:301
-msgid "Enter a valid date/time."
-msgstr "Skriv inn et gyldig tidspunkt."
-
-#: newforms/fields.py:314
-msgid "Enter a valid value."
-msgstr "Skriv inn en gyldig verdi."
-
-#: newforms/fields.py:378
-msgid "No file was submitted."
-msgstr "Ingen fil ble sendt."
-
-#: newforms/fields.py:403 newforms/fields.py:425
-msgid "Enter a valid URL."
-msgstr "Skriv inn en gyldig URL."
-
-#: newforms/fields.py:427
-msgid "This URL appears to be a broken link."
-msgstr "Denne URL'en fører til en side som ikke eksisterer."
+msgid "The %(verbose_name)s was updated successfully."
+msgstr "%(verbose_name)s ble oppdatert."
+#: views/generic/create_update.py:184
+#, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr "%(verbose_name)s ble slettet."
diff --git a/django/conf/locale/pl/LC_MESSAGES/django.mo b/django/conf/locale/pl/LC_MESSAGES/django.mo
index 5cdabb1d11..9ad15e833a 100644
--- a/django/conf/locale/pl/LC_MESSAGES/django.mo
+++ b/django/conf/locale/pl/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/pl/LC_MESSAGES/django.po b/django/conf/locale/pl/LC_MESSAGES/django.po
index 6f73bb45d0..77605f1627 100644
--- a/django/conf/locale/pl/LC_MESSAGES/django.po
+++ b/django/conf/locale/pl/LC_MESSAGES/django.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-06-24 07:36+0200\n"
+"POT-Creation-Date: 2008-07-27 21:57+0200\n"
"PO-Revision-Date: 2008-02-25 15:53+0100\n"
"Last-Translator: Jarek Zgoda <jarek.zgoda@gmail.com>\n"
"Language-Team: Polish <pl@li.org>\n"
@@ -246,49 +246,207 @@ msgstr "Ten miesiÄ…c"
msgid "This year"
msgstr "Ten rok"
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "Yes"
msgstr "Tak"
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "No"
msgstr "Nie"
-#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "Unknown"
msgstr "Nieznany"
-#: contrib/admin/models.py:18
+#: contrib/admin/models.py:19
msgid "action time"
msgstr "czas akcji"
-#: contrib/admin/models.py:21
+#: contrib/admin/models.py:22
msgid "object id"
msgstr "id obiektu"
-#: contrib/admin/models.py:22
+#: contrib/admin/models.py:23
msgid "object repr"
msgstr "reprezentacja obiektu"
-#: contrib/admin/models.py:23
+#: contrib/admin/models.py:24
msgid "action flag"
msgstr "flaga akcji"
-#: contrib/admin/models.py:24
+#: contrib/admin/models.py:25
msgid "change message"
msgstr "zmień wiadomość"
-#: contrib/admin/models.py:27
+#: contrib/admin/models.py:28
msgid "log entry"
msgstr "log"
-#: contrib/admin/models.py:28
+#: contrib/admin/models.py:29
msgid "log entries"
msgstr "logi"
+#: contrib/admin/options.py:161 contrib/admin/options.py:180
+msgid "None"
+msgstr "brak"
+
+#: contrib/admin/options.py:347 contrib/auth/admin.py:37
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "%(name)s \"%(obj)s\" dodany pomyślnie."
+
+#: contrib/admin/options.py:351 contrib/admin/options.py:419
+#: contrib/auth/admin.py:42
+msgid "You may edit it again below."
+msgstr "Możesz ponownie edytować wpis poniżej."
+
+#: contrib/admin/options.py:361 contrib/admin/options.py:428
+#, python-format
+msgid "You may add another %s below."
+msgstr "Możesz dodać nowy wpis %s poniżej."
+
+#: contrib/admin/options.py:395
+#, python-format
+msgid "Changed %s."
+msgstr "Zmieniono %s"
+
+#: contrib/admin/options.py:395 contrib/admin/options.py:405
+#: core/validators.py:279 db/models/manipulators.py:305
+msgid "and"
+msgstr "i"
+
+#: contrib/admin/options.py:400
+#, python-format
+msgid "Added %(name)s \"%(object)s\"."
+msgstr "Dodano %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:404
+#, python-format
+msgid "Changed %(list)s for %(name)s \"%(object)s\"."
+msgstr "Zmieniono %(list)s w %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:409
+#, python-format
+msgid "Deleted %(name)s \"%(object)s\"."
+msgstr "Usunięto %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:414
+msgid "No fields changed."
+msgstr "Żadne pole nie zmienione."
+
+#: contrib/admin/options.py:417
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr "%(name)s \"%(obj)s\" zostało pomyślnie zmienione."
+
+#: contrib/admin/options.py:425
+#, python-format
+msgid ""
+"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr ""
+"%(name)s \"%(obj)s\" dodane pomyślnie. Możesz edytować ponownie wpis poniżej."
+
+#: contrib/admin/options.py:506
+#, python-format
+msgid "Add %s"
+msgstr "Dodaj %s"
+
+#: contrib/admin/options.py:568
+#, python-format
+msgid "Change %s"
+msgstr "Zmień %s"
+
+#: contrib/admin/options.py:598
+msgid "Database error"
+msgstr "BÅ‚Ä…d bazy danych"
+
+#: contrib/admin/options.py:647
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "%(name)s \"%(obj)s\" usunięty pomyślnie."
+
+#: contrib/admin/options.py:653
+msgid "Are you sure?"
+msgstr "JesteÅ› pewien?"
+
+#: contrib/admin/options.py:680
+#, python-format
+msgid "Change history: %s"
+msgstr "Historia zmian: %s"
+
+#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
+#: contrib/auth/forms.py:70 contrib/comments/views/comments.py:56
+msgid ""
+"Please enter a correct username and password. Note that both fields are case-"
+"sensitive."
+msgstr ""
+"Proszę wpisać poprawną nazwę użytkownika i hasło. Uwaga: wielkość liter ma "
+"znaczenie."
+
+#: contrib/admin/sites.py:233 contrib/admin/views/decorators.py:68
+msgid ""
+"Please log in again, because your session has expired. Don't worry: Your "
+"submission has been saved."
+msgstr ""
+"Zaloguj się ponownie. Twoja sesja wygasła lecz twoje zgłoszenie zostało "
+"zapisane."
+
+#: contrib/admin/sites.py:240 contrib/admin/views/decorators.py:75
+msgid ""
+"Looks like your browser isn't configured to accept cookies. Please enable "
+"cookies, reload this page, and try again."
+msgstr ""
+"Twoja przeglądarka nie chce akceptować ciasteczek. Zmień jej ustawienia i "
+"spróbuj ponownie."
+
+#: contrib/admin/sites.py:254 contrib/admin/sites.py:260
+#: contrib/admin/views/decorators.py:92
+msgid "Usernames cannot contain the '@' character."
+msgstr "Nazwy użytkowników nie mogą zawierać znaków '@'."
+
+#: contrib/admin/sites.py:257 contrib/admin/views/decorators.py:88
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr "Twój adres e-mail to nie jest twój login. Spróbuj '%s'."
+
+#: contrib/admin/sites.py:325
+msgid "Site administration"
+msgstr "Administracja stronÄ…"
+
+#: contrib/admin/sites.py:347 contrib/admin/templates/admin/login.html:27
+#: contrib/admin/views/decorators.py:30
+msgid "Log in"
+msgstr "Zaloguj siÄ™"
+
+#: contrib/admin/util.py:126
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr "Jedno lub więcej %(fieldname)s w %(name)s: %(obj)s"
+
+#: contrib/admin/util.py:131
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "Jedno lub więcej %(fieldname)s w %(name)s:"
+
+#: contrib/admin/widgets.py:65
+msgid "Date:"
+msgstr "Data:"
+
+#: contrib/admin/widgets.py:65
+msgid "Time:"
+msgstr "Czas:"
+
+#: contrib/admin/widgets.py:89
+msgid "Currently:"
+msgstr "Teraz:"
+
+#: contrib/admin/widgets.py:89
+msgid "Change:"
+msgstr "Zmień:"
+
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
@@ -299,17 +457,17 @@ msgid "We're sorry, but the requested page could not be found."
msgstr "Niestety, żądana strona nie została znaleziona."
#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/change_form.html:17
+#: contrib/admin/templates/admin/change_list.html:8
+#: contrib/admin/templates/admin/delete_confirmation.html:6
#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/auth/user/change_password.html:10
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_reset_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
msgid "Home"
@@ -335,22 +493,28 @@ msgstr ""
"Wystąpił niespodziewany błąd. Raport został wysłany e-mailem "
"administratorowi strony."
-#: contrib/admin/templates/admin/base.html:26
+#: contrib/admin/templates/admin/base.html:25
msgid "Welcome,"
msgstr "Witaj,"
-#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin/base.html:25
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
msgid "Documentation"
msgstr "Dokumentacja"
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/auth/user/change_password.html:13
+#: 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
msgid "Change password"
msgstr "Zmiana hasła"
-#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
#: contrib/comments/templates/comments/form.html:6
msgid "Log out"
msgstr "Wyloguj siÄ™"
@@ -363,47 +527,44 @@ msgstr "Administracja stronÄ… Django"
msgid "Django administration"
msgstr "Administracja Django"
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
+#: contrib/admin/templates/admin/change_form.html:19
+#: contrib/admin/templates/admin/index.html:29
msgid "Add"
msgstr "Dodaj"
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
+#: contrib/admin/templates/admin/change_form.html:26
+#: contrib/admin/templates/admin/object_history.html:5
msgid "History"
msgstr "Historia"
-#: contrib/admin/templates/admin/change_form.html:21
+#: contrib/admin/templates/admin/change_form.html:27
msgid "View on site"
msgstr "Pokaż na stronie"
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
+#: contrib/admin/templates/admin/change_form.html:37
+#: contrib/admin/templates/admin/auth/user/change_password.html:22
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] "Proszę popraw poniższy błąd"
msgstr[1] "Proszę popraw poniższe błędy"
msgstr[2] "Proszę popraw poniższe błędy"
-#: contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr "Sortowanie"
-
-#: contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr "PorzÄ…dek:"
-
-#: contrib/admin/templates/admin/change_list.html:11
+#: contrib/admin/templates/admin/change_list.html:16
#, python-format
msgid "Add %(name)s"
msgstr "Dodaj %(name)s"
-#: contrib/admin/templates/admin/delete_confirmation.html:8
+#: contrib/admin/templates/admin/change_list.html:26
+msgid "Filter"
+msgstr "Filtr"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:9
#: contrib/admin/templates/admin/submit_line.html:3
+#: contrib/admin/templates/admin/edit_inline/tabular.html:15
msgid "Delete"
msgstr "Usuń"
-#: contrib/admin/templates/admin/delete_confirmation.html:13
+#: contrib/admin/templates/admin/delete_confirmation.html:15
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
@@ -414,7 +575,7 @@ msgstr ""
"zależnych obiektów, lecz nie posiadasz uprawnień do usunięcia następujących "
"typów obiektów:"
-#: contrib/admin/templates/admin/delete_confirmation.html:20
+#: contrib/admin/templates/admin/delete_confirmation.html:22
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
@@ -423,7 +584,7 @@ msgstr ""
"Czy chcesz skasować %(object_name)s \"%(escaped_object)s\"? Następujące "
"zależne obiekty zostaną skasowane:"
-#: contrib/admin/templates/admin/delete_confirmation.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:27
msgid "Yes, I'm sure"
msgstr "Tak, na pewno"
@@ -432,41 +593,37 @@ msgstr "Tak, na pewno"
msgid " By %(filter_title)s "
msgstr " Używając %(filter_title)s "
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filtr"
-
-#: contrib/admin/templates/admin/index.html:17
+#: contrib/admin/templates/admin/index.html:18
#, python-format
msgid "Models available in the %(name)s application."
msgstr "Modele dostępne w aplikacji %(name)s."
-#: contrib/admin/templates/admin/index.html:18
+#: contrib/admin/templates/admin/index.html:19
#, python-format
msgid "%(name)s"
msgstr "%(name)s"
-#: contrib/admin/templates/admin/index.html:34
+#: contrib/admin/templates/admin/index.html:35
msgid "Change"
msgstr "Zmień"
-#: contrib/admin/templates/admin/index.html:44
+#: contrib/admin/templates/admin/index.html:45
msgid "You don't have permission to edit anything."
msgstr "Nie masz uprawnień by edytować cokolwiek"
-#: contrib/admin/templates/admin/index.html:52
+#: contrib/admin/templates/admin/index.html:53
msgid "Recent Actions"
msgstr "Ostatnie akcje"
-#: contrib/admin/templates/admin/index.html:53
+#: contrib/admin/templates/admin/index.html:54
msgid "My Actions"
msgstr "Moje akcje"
-#: contrib/admin/templates/admin/index.html:57
+#: contrib/admin/templates/admin/index.html:58
msgid "None available"
msgstr "Brak"
-#: contrib/admin/templates/admin/invalid_setup.html:8
+#: contrib/admin/templates/admin/invalid_setup.html:7
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 "
@@ -476,39 +633,34 @@ msgstr ""
"tabele zostały utworzone i odpowiedni użytkownik jest uprawniony do ich "
"odczytu."
-#: contrib/admin/templates/admin/login.html:17
+#: contrib/admin/templates/admin/login.html:19
#: contrib/comments/templates/comments/form.html:6
#: contrib/comments/templates/comments/form.html:8
msgid "Username:"
msgstr "Nazwa użytkownika:"
-#: contrib/admin/templates/admin/login.html:20
+#: contrib/admin/templates/admin/login.html:22
#: contrib/comments/templates/comments/form.html:8
msgid "Password:"
msgstr "Hasło:"
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:31
-msgid "Log in"
-msgstr "Zaloguj siÄ™"
-
-#: contrib/admin/templates/admin/object_history.html:17
+#: contrib/admin/templates/admin/object_history.html:16
msgid "Date/time"
msgstr "Data/czas"
-#: contrib/admin/templates/admin/object_history.html:18
+#: contrib/admin/templates/admin/object_history.html:17
msgid "User"
msgstr "Użytkownik"
-#: contrib/admin/templates/admin/object_history.html:19
+#: contrib/admin/templates/admin/object_history.html:18
msgid "Action"
msgstr "Akcja"
-#: contrib/admin/templates/admin/object_history.html:25
+#: contrib/admin/templates/admin/object_history.html:24
msgid "DATE_WITH_TIME_FULL"
msgstr "j F Y H:i:s"
-#: contrib/admin/templates/admin/object_history.html:35
+#: contrib/admin/templates/admin/object_history.html:32
msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
@@ -561,26 +713,29 @@ msgstr ""
"Najpierw podaj nazwę użytkownika i hasło. Następnie będziesz mógł edytować "
"więcej opcji użytkownika."
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
+#: contrib/admin/templates/admin/auth/user/add_form.html:13
+#: contrib/auth/forms.py:12 contrib/auth/forms.py:49
msgid "Username"
msgstr "Nazwa użytkownika"
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
+#: contrib/admin/templates/admin/auth/user/add_form.html:20
#: contrib/admin/templates/admin/auth/user/change_password.html:33
+#: contrib/auth/forms.py:15 contrib/auth/forms.py:50 contrib/auth/forms.py:166
msgid "Password"
msgstr "Hasło"
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
+#: contrib/admin/templates/admin/auth/user/add_form.html:26
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/auth/forms.py:167
msgid "Password (again)"
msgstr "Hasło (powtórz)"
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/admin/templates/admin/auth/user/add_form.html:27
+#: contrib/admin/templates/admin/auth/user/change_password.html:40
msgid "Enter the same password as above, for verification."
msgstr "Podaj powyższe hasło w celu weryfikacji."
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
+#: contrib/admin/templates/admin/auth/user/change_password.html:26
#, python-format
msgid "Enter a new password for the user <strong>%(username)s</strong>."
msgstr "Podaj nowe hasło dla użytkownika <strong>%(username)s</strong>."
@@ -661,41 +816,41 @@ msgstr "Dziękujemy za odwiedzenie serwisu."
msgid "Log in again"
msgstr "Zaloguj ponownie"
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_change_form.html:6
+#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr "Zmiana hasła"
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "Hasło zmienione"
-#: contrib/admin/templates/registration/password_change_done.html:11
+#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "Twoje hasło zostało zmienione"
-#: contrib/admin/templates/registration/password_change_form.html:11
+#: 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 "Podaj swoje stare hasło i dwa razy nowe."
-#: contrib/admin/templates/registration/password_change_form.html:16
+#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "Stare hasło:"
-#: contrib/admin/templates/registration/password_change_form.html:18
+#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
msgstr "Nowe hasło:"
-#: contrib/admin/templates/registration/password_change_form.html:20
+#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
msgstr "Potwierdź hasło:"
-#: contrib/admin/templates/registration/password_change_form.html:22
+#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
msgstr "Zmień hasło"
@@ -765,325 +920,210 @@ msgstr "Adres e-mail:"
msgid "Reset my password"
msgstr "Zresetuj moje hasło"
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Data:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Czas:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Teraz:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Zmień:"
-
#: contrib/admin/templatetags/admin_list.py:257
msgid "All dates"
msgstr "Wszystkie daty"
-#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" dodany pomyślnie."
-
-#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr "Możesz ponownie edytować wpis poniżej."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Dodaj użytkownika"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "Hasło zostało zmienione pomyślnie."
-
-#: contrib/admin/views/auth.py:65
+#: contrib/admin/views/main.py:65
#, python-format
-msgid "Change password: %s"
-msgstr "Zmień hasło: %s"
-
-#: contrib/admin/views/decorators.py:17 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Proszę wpisać poprawną nazwę użytkownika i hasło. Uwaga: wielkość liter ma "
-"znaczenie."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Zaloguj się ponownie. Twoja sesja wygasła lecz twoje zgłoszenie zostało "
-"zapisane."
-
-#: contrib/admin/views/decorators.py:76
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Twoja przeglądarka nie chce akceptować ciasteczek. Zmień jej ustawienia i "
-"spróbuj ponownie."
+msgid "Select %s"
+msgstr "Zaznacz %s"
-#: contrib/admin/views/decorators.py:89
+#: contrib/admin/views/main.py:65
#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Twój adres e-mail to nie jest twój login. Spróbuj '%s'."
-
-#: contrib/admin/views/decorators.py:93
-msgid "Usernames cannot contain the '@' character."
-msgstr "Nazwy użytkowników nie mogą zawierać znaków '@'."
+msgid "Select %s to change"
+msgstr "Zaznacz %s aby zmienić"
-#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
+#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
+#: contrib/admindocs/views.py:57
msgid "tag:"
msgstr "tag:"
-#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
+#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
+#: contrib/admindocs/views.py:91
msgid "filter:"
msgstr "filtr:"
-#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
+#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
+#: contrib/admindocs/views.py:157
msgid "view:"
msgstr "widok:"
-#: contrib/admin/views/doc.py:166
+#: contrib/admindocs/views.py:187
#, python-format
msgid "App %r not found"
msgstr "Aplikacja %r nie została znaleziona"
-#: contrib/admin/views/doc.py:173
+#: contrib/admindocs/views.py:194
#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Model %(name)r nie został znaleziony w aplikacji %(label)r"
+msgid "Model %(model_name)r not found in app %(app_label)r"
+msgstr "Model %(model_name)r nie został znaleziony w aplikacji %(app_label)r"
-#: contrib/admin/views/doc.py:185
+#: contrib/admindocs/views.py:206
#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "powiÄ…zany obiekt `%(label)s.%(type)s`"
+msgid "the related `%(app_label)s.%(data_type)s` object"
+msgstr "powiÄ…zany obiekt `%(app_label)s.%(data_type)s`"
-#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226
+#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
+#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
msgid "model:"
msgstr "model:"
-#: contrib/admin/views/doc.py:216
+#: contrib/admindocs/views.py:237
#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "powiÄ…zane obiekty `%(label)s.%(name)s`"
+msgid "related `%(app_label)s.%(object_name)s` objects"
+msgstr "powiÄ…zane obiekty `%(app_label)s.%(object_name)s`"
-#: contrib/admin/views/doc.py:221
+#: contrib/admindocs/views.py:242
#, python-format
msgid "all %s"
msgstr "wszystkie %s"
-#: contrib/admin/views/doc.py:226
+#: contrib/admindocs/views.py:247
#, python-format
msgid "number of %s"
msgstr "liczba %s"
-#: contrib/admin/views/doc.py:231
+#: contrib/admindocs/views.py:253
#, python-format
msgid "Fields on %s objects"
msgstr "Pola obiektów %s"
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315
+#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
+#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
+#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
msgid "Integer"
msgstr "Liczba całkowita"
-#: contrib/admin/views/doc.py:294
+#: contrib/admindocs/views.py:318
msgid "Boolean (Either True or False)"
msgstr "Wartość logiczna (True, False - prawda lub fałsz)"
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314
+#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
#, python-format
msgid "String (up to %(max_length)s)"
msgstr "ÅaÅ„cuch (do %(max_length)s znaków)"
-#: contrib/admin/views/doc.py:296
+#: contrib/admindocs/views.py:320
msgid "Comma-separated integers"
msgstr "Liczby całkowite rozdzielone przecinkami"
-#: contrib/admin/views/doc.py:297
+#: contrib/admindocs/views.py:321
msgid "Date (without time)"
msgstr "Data (bez godziny)"
-#: contrib/admin/views/doc.py:298
+#: contrib/admindocs/views.py:322
msgid "Date (with time)"
msgstr "Data (z godzinÄ…)"
-#: contrib/admin/views/doc.py:299
+#: contrib/admindocs/views.py:323
msgid "Decimal number"
msgstr "Numer dziesiętny"
-#: contrib/admin/views/doc.py:300
+#: contrib/admindocs/views.py:324
msgid "E-mail address"
msgstr "Adres e-mail"
-#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
+#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
+#: contrib/admindocs/views.py:329
msgid "File path"
msgstr "Ścieżka do pliku"
-#: contrib/admin/views/doc.py:303
+#: contrib/admindocs/views.py:327
msgid "Floating point number"
msgstr "Liczba zmiennoprzecinkowa"
-#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89
+#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
msgid "IP address"
msgstr "Adres IP"
-#: contrib/admin/views/doc.py:309
+#: contrib/admindocs/views.py:333
msgid "Boolean (Either True, False or None)"
msgstr "Wartość logiczna (True, False, None - prawda, fałsz lub nic)"
-#: contrib/admin/views/doc.py:310
+#: contrib/admindocs/views.py:334
msgid "Relation to parent model"
msgstr "Relacja do modelu rodzica"
-#: contrib/admin/views/doc.py:311
+#: contrib/admindocs/views.py:335
msgid "Phone number"
msgstr "Numer telefonu"
-#: contrib/admin/views/doc.py:316
+#: contrib/admindocs/views.py:340
msgid "Text"
msgstr "Tekst"
-#: contrib/admin/views/doc.py:317
+#: contrib/admindocs/views.py:341
msgid "Time"
msgstr "Czas"
-#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:8
+#: contrib/admindocs/views.py:342 contrib/flatpages/models.py:8
msgid "URL"
msgstr "URL"
-#: contrib/admin/views/doc.py:319
+#: contrib/admindocs/views.py:343
msgid "U.S. state (two uppercase letters)"
msgstr "Stan USA (dwie duże litery)"
-#: contrib/admin/views/doc.py:320
+#: contrib/admindocs/views.py:344
msgid "XML text"
msgstr "Tekst XML"
-#: contrib/admin/views/doc.py:346
+#: contrib/admindocs/views.py:370
#, python-format
msgid "%s does not appear to be a urlpattern object"
msgstr "%s nie jest obiektem urlpattern"
-#: contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr "Administracja stronÄ…"
-
-#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "Możesz dodać nowy wpis %s poniżej."
-
-#: contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "Dodaj %s"
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "Dodano %s"
-
-#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348 core/validators.py:283
-#: db/models/manipulators.py:309
-msgid "and"
-msgstr "i"
+#: contrib/auth/admin.py:17
+msgid "Personal info"
+msgstr "Dane osobowe"
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "Zmieniono %s"
+#: contrib/auth/admin.py:18
+msgid "Permissions"
+msgstr "Uprawnienia"
-#: contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "Skasowano %s"
+#: contrib/auth/admin.py:19
+msgid "Important dates"
+msgstr "Ważne daty"
-#: contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr "Żadne pole nie zmienione."
+#: contrib/auth/admin.py:20
+msgid "Groups"
+msgstr "Grupy"
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" zostało pomyślnie zmienione."
+#: contrib/auth/admin.py:47
+msgid "Add user"
+msgstr "Dodaj użytkownika"
-#: contrib/admin/views/main.py:362
-#, python-format
+#: contrib/auth/forms.py:13 contrib/auth/models.py:134
msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
msgstr ""
-"%(name)s \"%(obj)s\" dodane pomyślnie. Możesz edytować ponownie wpis poniżej."
-
-#: contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "Zmień %s"
-
-#: contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Jedno lub więcej %(fieldname)s w %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Jedno lub więcej %(fieldname)s w %(name)s:"
-
-#: contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" usunięty pomyślnie."
-
-#: contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr "JesteÅ› pewien?"
-
-#: contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "Historia zmian: %s"
+"Wymagane. 30 znaków lub mniej. Tylko znaki alfanumeryczne (litery, cyfry i "
+"podkreślenia)."
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "Zaznacz %s"
+#: contrib/auth/forms.py:14 core/validators.py:72
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "To pole może zawierać tylko litery, cyfry i podkreślenia."
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "Zaznacz %s aby zmienić"
+#: contrib/auth/forms.py:16
+msgid "Password confirmation"
+msgstr "Potwierdzenie hasła"
-#: contrib/admin/views/main.py:765
-msgid "Database error"
-msgstr "BÅ‚Ä…d bazy danych"
+#: contrib/auth/forms.py:28
+msgid "A user with that username already exists."
+msgstr "Użytkownik o tej nazwie już istnieje."
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
+#: contrib/auth/forms.py:34 contrib/auth/forms.py:153
+#: contrib/auth/forms.py:178
msgid "The two password fields didn't match."
msgstr "Hasła się nie zgadzają."
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Użytkownik o tej nazwie już istnieje."
+#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:58
+msgid "This account is inactive."
+msgstr "To konto jest nieaktywne."
-#: contrib/auth/forms.py:53
+#: contrib/auth/forms.py:77 contrib/comments/views/comments.py:49
msgid ""
"Your Web browser doesn't appear to have cookies enabled. Cookies are "
"required for logging in."
@@ -1091,11 +1131,11 @@ msgstr ""
"Twoja przeglądarka nie chce akceptować ciasteczek. Są one wymagane do "
"zalogowania siÄ™."
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "To konto jest nieaktywne."
+#: contrib/auth/forms.py:90
+msgid "E-mail"
+msgstr "E-mail"
-#: contrib/auth/forms.py:84
+#: contrib/auth/forms.py:99
msgid ""
"That e-mail address doesn't have an associated user account. Are you sure "
"you've registered?"
@@ -1103,16 +1143,24 @@ msgstr ""
"Ten adres e-mail nie ma przypisanego konta. Jesteś pewien, że "
"zarejestrowałeś się?"
-#: contrib/auth/forms.py:107
+#: contrib/auth/forms.py:124
#, python-format
msgid "Password reset on %s"
msgstr "Hasło zresetowane dla %s"
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Pola 'nowe hasło' nie zgadzają się."
+#: contrib/auth/forms.py:131
+msgid "Old password"
+msgstr "Stare hasło"
-#: contrib/auth/forms.py:124
+#: contrib/auth/forms.py:132
+msgid "New password"
+msgstr "Nowe hasło"
+
+#: contrib/auth/forms.py:133
+msgid "New password confirmation"
+msgstr "Nowe hasło ponownie"
+
+#: contrib/auth/forms.py:145
msgid "Your old password was entered incorrectly. Please enter it again."
msgstr "Podane stare hasło jest niepoprawne. Proszę podać je jeszcze raz."
@@ -1136,39 +1184,31 @@ msgstr "uprawnienia"
msgid "group"
msgstr "grupa"
-#: contrib/auth/models.py:98 contrib/auth/models.py:148
+#: contrib/auth/models.py:98 contrib/auth/models.py:144
msgid "groups"
msgstr "grupy"
-#: contrib/auth/models.py:138
+#: contrib/auth/models.py:134
msgid "username"
msgstr "użytkownik"
-#: contrib/auth/models.py:138
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Wymagane. 30 znaków lub mniej. Tylko znaki alfanumeryczne (litery, cyfry i "
-"podkreślenia)."
-
-#: contrib/auth/models.py:139
+#: contrib/auth/models.py:135
msgid "first name"
msgstr "ImiÄ™"
-#: contrib/auth/models.py:140
+#: contrib/auth/models.py:136
msgid "last name"
msgstr "Nazwisko"
-#: contrib/auth/models.py:141
+#: contrib/auth/models.py:137
msgid "e-mail address"
msgstr "adres e-mail"
-#: contrib/auth/models.py:142
+#: contrib/auth/models.py:138
msgid "password"
msgstr "hasło"
-#: contrib/auth/models.py:142
+#: contrib/auth/models.py:138
msgid ""
"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
"password form</a>."
@@ -1176,19 +1216,19 @@ msgstr ""
"Użyj '[algo]$[salt]$[hexdigest]' lub <a href=\"password/\">formularza zmiany "
"hasła</a>."
-#: contrib/auth/models.py:143
+#: contrib/auth/models.py:139
msgid "staff status"
msgstr "w zespole"
-#: contrib/auth/models.py:143
+#: contrib/auth/models.py:139
msgid "Designates whether the user can log into this admin site."
msgstr "Oznacza czy użytkownik może zalogować się do panelu admina."
-#: contrib/auth/models.py:144
+#: contrib/auth/models.py:140
msgid "active"
msgstr "aktywny"
-#: contrib/auth/models.py:144
+#: contrib/auth/models.py:140
msgid ""
"Designates whether this user should be treated as active. Unselect this "
"instead of deleting accounts."
@@ -1196,11 +1236,11 @@ msgstr ""
"Oznacza czy użytkownika należy uważać za aktywnego. Odznacz tozamiast usuwać "
"konta."
-#: contrib/auth/models.py:145
+#: contrib/auth/models.py:141
msgid "superuser status"
msgstr "Główny Administrator"
-#: contrib/auth/models.py:145
+#: contrib/auth/models.py:141
msgid ""
"Designates that this user has all permissions without explicitly assigning "
"them."
@@ -1208,15 +1248,15 @@ msgstr ""
"Oznacza, że ten użytkownik ma wszystkie uprawnienia bez jawnego "
"przypisywania ich."
-#: contrib/auth/models.py:146
+#: contrib/auth/models.py:142
msgid "last login"
msgstr "ostatnio zalogowany"
-#: contrib/auth/models.py:147
+#: contrib/auth/models.py:143
msgid "date joined"
msgstr "data przyłączenia"
-#: contrib/auth/models.py:149
+#: contrib/auth/models.py:145
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
@@ -1224,43 +1264,36 @@ msgstr ""
"Oprócz uprawnień przypisanych bezpośrednio użytkownikowi otrzyma on "
"uprawnienia grup, do których należy."
-#: contrib/auth/models.py:150
+#: contrib/auth/models.py:146
msgid "user permissions"
msgstr "uprawnienia użytkownika"
-#: contrib/auth/models.py:154
+#: contrib/auth/models.py:150
msgid "user"
msgstr "użytkownik"
-#: contrib/auth/models.py:155
+#: contrib/auth/models.py:151
msgid "users"
msgstr "użytkownicy"
-#: contrib/auth/models.py:161
-msgid "Personal info"
-msgstr "Dane osobowe"
-
-#: contrib/auth/models.py:162
-msgid "Permissions"
-msgstr "Uprawnienia"
-
-#: contrib/auth/models.py:163
-msgid "Important dates"
-msgstr "Ważne daty"
-
-#: contrib/auth/models.py:164
-msgid "Groups"
-msgstr "Grupy"
-
-#: contrib/auth/models.py:323
+#: contrib/auth/models.py:306
msgid "message"
msgstr "wiadomość"
-#: contrib/auth/views.py:48
+#: contrib/auth/views.py:49
msgid "Logged out"
msgstr "Wylogowany"
-#: contrib/comments/models.py:71 contrib/comments/models.py:176
+#: contrib/auth/views.py:116
+msgid "Password changed successfully."
+msgstr "Hasło zostało zmienione pomyślnie."
+
+#: contrib/auth/views.py:122
+#, python-format
+msgid "Change password: %s"
+msgstr "Zmień hasło: %s"
+
+#: contrib/comments/models.py:71 contrib/comments/models.py:164
msgid "object ID"
msgstr "ID obiektu"
@@ -1269,7 +1302,7 @@ msgid "headline"
msgstr "nagłówek"
#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:177
+#: contrib/comments/models.py:165
msgid "comment"
msgstr "komentarz"
@@ -1309,11 +1342,11 @@ msgstr "ocena #8"
msgid "is valid rating"
msgstr "jest poprawnÄ… ocenÄ…"
-#: contrib/comments/models.py:87 contrib/comments/models.py:179
+#: contrib/comments/models.py:87 contrib/comments/models.py:167
msgid "date/time submitted"
msgstr "data/czas dodania"
-#: contrib/comments/models.py:88 contrib/comments/models.py:180
+#: contrib/comments/models.py:88 contrib/comments/models.py:168
msgid "is public"
msgstr "publicznie dostępny"
@@ -1333,11 +1366,11 @@ msgstr ""
msgid "comments"
msgstr "komentarze"
-#: contrib/comments/models.py:140 contrib/comments/models.py:222
+#: contrib/comments/models.py:128 contrib/comments/models.py:199
msgid "Content object"
msgstr "Obiekt treści"
-#: contrib/comments/models.py:168
+#: contrib/comments/models.py:156
#, python-format
msgid ""
"Posted by %(user)s at %(date)s\n"
@@ -1352,48 +1385,48 @@ msgstr ""
"\n"
"http://%(domain)s%(url)s"
-#: contrib/comments/models.py:178
+#: contrib/comments/models.py:166
msgid "person's name"
msgstr "Nazwa osoby"
-#: contrib/comments/models.py:181
+#: contrib/comments/models.py:169
msgid "ip address"
msgstr "adres ip"
-#: contrib/comments/models.py:183
+#: contrib/comments/models.py:171
msgid "approved by staff"
msgstr "zaakceptowano"
-#: contrib/comments/models.py:187
+#: contrib/comments/models.py:175
msgid "free comment"
msgstr "wolny komentarz"
-#: contrib/comments/models.py:188
+#: contrib/comments/models.py:176
msgid "free comments"
msgstr "wolne komentarze"
-#: contrib/comments/models.py:250
+#: contrib/comments/models.py:227
msgid "score"
msgstr "ilość punktów"
-#: contrib/comments/models.py:251
+#: contrib/comments/models.py:228
msgid "score date"
msgstr "data przyznania punktów"
-#: contrib/comments/models.py:255
+#: contrib/comments/models.py:232
msgid "karma score"
msgstr "ilość punktów"
-#: contrib/comments/models.py:256
+#: contrib/comments/models.py:233
msgid "karma scores"
msgstr "wyniki"
-#: contrib/comments/models.py:260
+#: contrib/comments/models.py:237
#, python-format
msgid "%(score)d rating by %(user)s"
msgstr "%(score)d ocenÄ™ przez %(user)s"
-#: contrib/comments/models.py:277
+#: contrib/comments/models.py:254
#, python-format
msgid ""
"This comment was flagged by %(user)s:\n"
@@ -1404,36 +1437,36 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/models.py:285
+#: contrib/comments/models.py:262
msgid "flag date"
msgstr "data flagi"
-#: contrib/comments/models.py:289
+#: contrib/comments/models.py:266
msgid "user flag"
msgstr "flaga użytkownika"
-#: contrib/comments/models.py:290
+#: contrib/comments/models.py:267
msgid "user flags"
msgstr "flagi użytkownika"
-#: contrib/comments/models.py:294
+#: contrib/comments/models.py:271
#, python-format
msgid "Flag by %r"
msgstr "Flaga %r"
-#: contrib/comments/models.py:300
+#: contrib/comments/models.py:277
msgid "deletion date"
msgstr "data skasowania"
-#: contrib/comments/models.py:303
+#: contrib/comments/models.py:280
msgid "moderator deletion"
msgstr "usunięcie moderatora"
-#: contrib/comments/models.py:304
+#: contrib/comments/models.py:281
msgid "moderator deletions"
msgstr "usunięcia moderatorów"
-#: contrib/comments/models.py:308
+#: contrib/comments/models.py:285
#, python-format
msgid "Moderator deletion by %r"
msgstr "Usunięcie moderatora przez %r"
@@ -1474,12 +1507,12 @@ msgstr "PodglÄ…d"
msgid "Your name:"
msgstr "Twoje imiÄ™:"
-#: contrib/comments/views/comments.py:28
+#: contrib/comments/views/comments.py:76
msgid ""
"This rating is required because you've entered at least one other rating."
msgstr "Ta ocena jest wymagana gdyż podałeś przynajmniej jedną inną ocenę."
-#: contrib/comments/views/comments.py:112
+#: contrib/comments/views/comments.py:160
#, python-format
msgid ""
"This comment was posted by a user who has posted fewer than %(count)s "
@@ -1507,7 +1540,7 @@ msgstr[2] ""
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:117
+#: contrib/comments/views/comments.py:165
#, python-format
msgid ""
"This comment was posted by a sketchy user:\n"
@@ -1518,25 +1551,25 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
+#: contrib/comments/views/comments.py:238
+#: contrib/comments/views/comments.py:331
msgid "Only POSTs are allowed"
msgstr "Dozwolone tylko POSTy"
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
+#: contrib/comments/views/comments.py:242
+#: contrib/comments/views/comments.py:335
msgid "One or more of the required fields wasn't submitted"
msgstr "Jedno lub więcej wymaganych pól nie zostało wypełnionych"
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
+#: contrib/comments/views/comments.py:246
+#: contrib/comments/views/comments.py:337
msgid "Somebody tampered with the comment form (security violation)"
msgstr ""
"Ktoś próbował obejść zabezpieczenia formularza komentarzy (naruszenie "
"bezpieczeństwa)"
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
+#: contrib/comments/views/comments.py:256
+#: contrib/comments/views/comments.py:343
msgid ""
"The comment form had an invalid 'target' parameter -- the object ID was "
"invalid"
@@ -1544,8 +1577,8 @@ msgstr ""
"Formularz komentarza miał niepoprawny parametr 'target' -- ID obiektu było "
"niepoprawne"
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
+#: contrib/comments/views/comments.py:307
+#: contrib/comments/views/comments.py:372
msgid "The comment form didn't provide either 'preview' or 'post'"
msgstr "Formularz komentarza nie zapewnił obiektów 'preview' ani 'post'"
@@ -1573,6 +1606,10 @@ msgstr "typ zawartości"
msgid "content types"
msgstr "typy zawartości"
+#: contrib/flatpages/admin.py:9
+msgid "Advanced options"
+msgstr "Opcje zaawansowane"
+
#: contrib/flatpages/models.py:9
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
@@ -1621,10 +1658,6 @@ msgstr "strona statyczna"
msgid "flat pages"
msgstr "strony statyczne"
-#: contrib/flatpages/models.py:27
-msgid "Advanced options"
-msgstr "Opcje zaawansowane"
-
#: contrib/humanize/templatetags/humanize.py:19
msgid "th"
msgstr "-y"
@@ -1735,6 +1768,53 @@ msgstr "Podaj poprawny numer CUIT w formacie XX-XXXXXXXX-X lub XXXXXXXXXXXX."
msgid "Invalid CUIT."
msgstr "Niepoprawny CUIT"
+#: contrib/localflavor/at/at_states.py:5
+#, fuzzy
+msgid "Burgenland"
+msgstr "Fryzja"
+
+#: contrib/localflavor/at/at_states.py:6
+msgid "Carinthia"
+msgstr "Karyntia"
+
+#: contrib/localflavor/at/at_states.py:7
+msgid "Lower Austria"
+msgstr "Dolna Austria"
+
+#: contrib/localflavor/at/at_states.py:8
+msgid "Upper Austria"
+msgstr "Górna Austria"
+
+#: contrib/localflavor/at/at_states.py:9
+msgid "Salzburg"
+msgstr "Salzburg"
+
+#: contrib/localflavor/at/at_states.py:10
+msgid "Styria"
+msgstr "Styria"
+
+#: contrib/localflavor/at/at_states.py:11
+msgid "Tyrol"
+msgstr "Tyrol"
+
+#: contrib/localflavor/at/at_states.py:12
+msgid "Vorarlberg"
+msgstr "Vorarlberg"
+
+#: contrib/localflavor/at/at_states.py:13
+msgid "Vienna"
+msgstr "Wiedeń"
+
+#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
+#: contrib/localflavor/no/forms.py:12
+msgid "Enter a zip code in the format XXXX."
+msgstr "Wpisz kod pocztowy w formacie XXXX."
+
+#: contrib/localflavor/at/forms.py:48
+msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
+msgstr ""
+"Wpisz poprawny numer austriackiego ubezpieczenia w formacie XXXX XXXXXX."
+
#: contrib/localflavor/au/forms.py:16
msgid "Enter a 4 digit post code."
msgstr "Wpisz czterocyfrowy kod pocztowy."
@@ -1884,10 +1964,6 @@ msgstr "Zug"
msgid "Zurich"
msgstr "Zurych"
-#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Wpisz kod pocztowy w formacie XXXX."
-
#: contrib/localflavor/ch/forms.py:64
msgid ""
"Enter a valid Swiss identity or passport card number in X1234567<0 or "
@@ -2808,6 +2884,26 @@ msgstr "Wielkopolskie"
msgid "West Pomerania"
msgstr "Zachodniopomorskie"
+#: contrib/localflavor/ro/forms.py:19
+msgid "Enter a valid CIF."
+msgstr "Wpisz poprawny CIF."
+
+#: contrib/localflavor/ro/forms.py:56
+msgid "Enter a valid CNP."
+msgstr "Wpisz poprawny CNP."
+
+#: contrib/localflavor/ro/forms.py:141
+msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
+msgstr "Podaj poprawny IBAN w formacie ROXX-XXXX-XXXX-XXXX-XXXX-XXXX"
+
+#: contrib/localflavor/ro/forms.py:171
+msgid "Phone numbers must be in XXXX-XXXXXX format."
+msgstr "Numery telefoniczne muszą być w formacie XXXX-XXXXXX."
+
+#: contrib/localflavor/ro/forms.py:194
+msgid "Enter a valid postal code in the format XXXXXX"
+msgstr "Wpisz kod pocztowy w formacie XXXXXX."
+
#: contrib/localflavor/sk/forms.py:30
msgid "Enter a postal code in the format XXXXX or XXX XX."
msgstr "Wpisz kod pocztowy w formacie XXXXX or XXX XX."
@@ -3552,18 +3648,14 @@ msgstr "nazwa domeny"
msgid "display name"
msgstr "wyświetlana nazwa"
-#: contrib/sites/models.py:37
+#: contrib/sites/models.py:38
msgid "site"
msgstr "strona"
-#: contrib/sites/models.py:38
+#: contrib/sites/models.py:39
msgid "sites"
msgstr "strony"
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "To pole może zawierać tylko litery, cyfry i podkreślenia."
-
#: core/validators.py:76
msgid ""
"This value must contain only letters, numbers, underscores, dashes or "
@@ -3608,7 +3700,7 @@ msgstr "Tu mogą być tylko cyfry."
msgid "This value can't be comprised solely of digits."
msgstr "To pole nie może zawierać jedynie cyfr."
-#: core/validators.py:128 newforms/fields.py:152
+#: core/validators.py:128 forms/fields.py:158
msgid "Enter a whole number."
msgstr "Wpisz liczbę całkowitą."
@@ -3617,36 +3709,31 @@ msgid "Only alphabetical characters are allowed here."
msgstr "Tutaj sÄ… dozwolone tylko litery."
#: core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr "Rok nie może być wcześniejszy niż 1900."
-
-#: core/validators.py:151
#, python-format
msgid "Invalid date: %s"
msgstr "Niepoprawna data: %s"
-#: core/validators.py:156 db/models/fields/__init__.py:548
+#: core/validators.py:152 db/models/fields/__init__.py:559
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Proszę wpisać poprawną datę w formacie RRRR-MM-DD."
-#: core/validators.py:161
+#: core/validators.py:157
msgid "Enter a valid time in HH:MM format."
msgstr "Proszę wpisać poprawną godzinę w formacie HH:MM."
-#: core/validators.py:165 db/models/fields/__init__.py:625
+#: core/validators.py:161 db/models/fields/__init__.py:640
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Wprowadź poprawną datę i godzinę w formacie RRRR-MM-DD GG:MM."
-#: core/validators.py:170 newforms/fields.py:403
+#: core/validators.py:166 forms/fields.py:409
msgid "Enter a valid e-mail address."
msgstr "Wprowadź poprawny adres e-mail."
-#: core/validators.py:182 core/validators.py:474 newforms/fields.py:433
-#: oldforms/__init__.py:687
+#: core/validators.py:178 core/validators.py:470 forms/fields.py:427
msgid "No file was submitted. Check the encoding type on the form."
msgstr "Nie wysłano żadnego pliku. Sprawdź typ kodowania formularza."
-#: core/validators.py:193 newforms/fields.py:459
+#: core/validators.py:189 forms/fields.py:467
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
@@ -3654,28 +3741,28 @@ msgstr ""
"Wgraj poprawny plik graficzny. Ten, który został wgrany, nie jest obrazem, "
"albo jest uszkodzony."
-#: core/validators.py:200
+#: core/validators.py:196
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "Odnośnik %s nie wskazuje na poprawny plik z obrazem."
-#: core/validators.py:204
+#: core/validators.py:200
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
"Numery telefoniczne muszą być w formacie XXX-XXX-XXXX. \"%s\" jest "
"niepoprawny."
-#: core/validators.py:212
+#: core/validators.py:208
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "Odnośnik %s nie wskazuje na poprawne nagranie QuickTime video."
-#: core/validators.py:216
+#: core/validators.py:212
msgid "A valid URL is required."
msgstr "Wymagany jest poprawny URL."
-#: core/validators.py:230
+#: core/validators.py:226
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@@ -3684,26 +3771,26 @@ msgstr ""
"Wymagany jest poprawny HTML. Błędy, które wystąpiły:\n"
"%s"
-#: core/validators.py:237
+#: core/validators.py:233
#, python-format
msgid "Badly formed XML: %s"
msgstr "Nieprawidłowy format XML: %s"
-#: core/validators.py:254
+#: core/validators.py:250
#, python-format
msgid "Invalid URL: %s"
msgstr "Niepoprawny odnośnik: %s"
-#: core/validators.py:259 core/validators.py:261
+#: core/validators.py:255 core/validators.py:257
#, python-format
msgid "The URL %s is a broken link."
msgstr "Odnośnik %s jest nieprawidłowy."
-#: core/validators.py:267
+#: core/validators.py:263
msgid "Enter a valid U.S. state abbreviation."
msgstr "Wpisz poprawny kod stanu U.S.A."
-#: core/validators.py:281
+#: core/validators.py:277
#, 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."
@@ -3711,59 +3798,59 @@ msgstr[0] "Nie wolno przeklinać! Słowo %s nie jest dozwolone."
msgstr[1] "Nie wolno przeklinać! Słowa %s nie są dozwolone."
msgstr[2] "Nie wolno przeklinać! Słowa %s nie są dozwolone."
-#: core/validators.py:288
+#: core/validators.py:284
#, python-format
msgid "This field must match the '%s' field."
msgstr "To pole musi pasować do pola '%s'."
-#: core/validators.py:307
+#: core/validators.py:303
msgid "Please enter something for at least one field."
msgstr "Proszę uzupełnić przynajmniej jedno pole."
-#: core/validators.py:316 core/validators.py:327
+#: core/validators.py:312 core/validators.py:323
msgid "Please enter both fields or leave them both empty."
msgstr "Proszę uzupełnić oba pola lub zostawić je puste."
-#: core/validators.py:335
+#: core/validators.py:331
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "To pole musi być uzupełnione, jeśli %(field)s ma wartość %(value)s"
-#: core/validators.py:348
+#: core/validators.py:344
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr ""
"To pole musi być uzupełnione, jeśli %(field)s ma wartość inną niż %(value)s"
-#: core/validators.py:367
+#: core/validators.py:363
msgid "Duplicate values are not allowed."
msgstr "Duplikaty nie sÄ… dozwolone."
-#: core/validators.py:382
+#: core/validators.py:378
#, python-format
msgid "This value must be between %(lower)s and %(upper)s."
msgstr "Ta wartość musi być pomiędzy %(lower)s a %(upper)s."
-#: core/validators.py:384
+#: core/validators.py:380
#, python-format
msgid "This value must be at least %s."
msgstr "Ta wartość nie może być mniejsza od %s."
-#: core/validators.py:386
+#: core/validators.py:382
#, python-format
msgid "This value must be no more than %s."
msgstr "Ta wartość nie może być większa od %s."
-#: core/validators.py:427
+#: core/validators.py:423
#, python-format
msgid "This value must be a power of %s."
msgstr "Ta wartość musi być potęgą %s."
-#: core/validators.py:437
+#: core/validators.py:433
msgid "Please enter a valid decimal number."
msgstr "Proszę wpisać poprawną liczbę dziesiętną."
-#: core/validators.py:444
+#: core/validators.py:440
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@@ -3775,7 +3862,7 @@ msgstr[1] ""
msgstr[2] ""
"Proszę wpisać poprawną liczbę dziesiętną o nie więcej niż %s cyfrach."
-#: core/validators.py:447
+#: core/validators.py:443
#, python-format
msgid ""
"Please enter a valid decimal number with a whole part of at most %s digit."
@@ -3788,7 +3875,7 @@ msgstr[1] ""
msgstr[2] ""
"Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfr."
-#: core/validators.py:450
+#: core/validators.py:446
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@@ -3803,41 +3890,41 @@ msgstr[2] ""
"Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsc po "
"przecinku."
-#: core/validators.py:458
+#: core/validators.py:454
msgid "Please enter a valid floating point number."
msgstr "Proszę wpisać poprawną liczbę rzeczywistą."
-#: core/validators.py:467
+#: core/validators.py:463
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "Upewnij się, że wgrany plik ma conajmniej %s bajtów."
-#: core/validators.py:468
+#: core/validators.py:464
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "Upewnij się, że wgrany plik ma co najwyżej %s bajtów."
-#: core/validators.py:485
+#: core/validators.py:481
msgid "The format for this field is wrong."
msgstr "Format tego pola jest nieprawidłowy."
-#: core/validators.py:500
+#: core/validators.py:496
msgid "This field is invalid."
msgstr "To pole jest nieprawidłowe."
-#: core/validators.py:536
+#: core/validators.py:532
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Nie można nic pobrać z %s."
-#: core/validators.py:539
+#: core/validators.py:535
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
"URL %(url)s zwrócił niepoprawny nagłówek Content-Type '%(contenttype)s'."
-#: core/validators.py:572
+#: core/validators.py:568
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@@ -3846,7 +3933,7 @@ msgstr ""
"Proszę zamknąć tag %(tag)s z linii %(line)s. (Linia zaczyna się od \"%(start)"
"s\".)"
-#: core/validators.py:576
+#: core/validators.py:572
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
@@ -3855,7 +3942,7 @@ msgstr ""
"Część tekstu od linii %(line)s nie jest dozwolony w tym kontekście. (Linia "
"zaczyna siÄ™ od \"%(start)s\".)"
-#: core/validators.py:581
+#: core/validators.py:577
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@@ -3864,7 +3951,7 @@ msgstr ""
"\"%(attr)s\" w linii %(line)s jest niepoprawnym atrybutem. (Linia zaczyna "
"siÄ™ od \"%(start)s\".)"
-#: core/validators.py:586
+#: core/validators.py:582
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@@ -3873,7 +3960,7 @@ msgstr ""
"\"<%(tag)s>\" w linii %(line)s nie jest poprawnym tagiem. (Linia zaczyna siÄ™ "
"od \"%(start)s\".)"
-#: core/validators.py:590
+#: core/validators.py:586
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
@@ -3882,7 +3969,7 @@ msgstr ""
"Tag w linii %(line)s nie posiada jednego lub więcej wymaganych atrybutów. "
"(Linia zaczyna siÄ™ od \"%(start)s\".)"
-#: core/validators.py:595
+#: core/validators.py:591
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
@@ -3891,65 +3978,61 @@ msgstr ""
"Atrybut \"%(attr)s\" w linii %(line)s ma niepoprawną wartość. (Linia zaczyna "
"siÄ™ od \"%(start)s\".)"
-#: db/models/manipulators.py:308
+#: db/models/manipulators.py:304
#, python-format
msgid "%(object)s with this %(type)s already exists for the given %(field)s."
msgstr "%(object)s z %(type)s już istnieje dla %(field)s."
-#: db/models/fields/__init__.py:51
+#: db/models/fields/__init__.py:47
#, python-format
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "Już istnieje %(optname)s z %(fieldname)s."
-#: db/models/fields/__init__.py:176 db/models/fields/__init__.py:348
-#: db/models/fields/__init__.py:780 db/models/fields/__init__.py:791
-#: newforms/fields.py:46 oldforms/__init__.py:374
+#: db/models/fields/__init__.py:175 db/models/fields/__init__.py:343
+#: db/models/fields/__init__.py:802 db/models/fields/__init__.py:813
+#: forms/fields.py:52 oldforms/__init__.py:374
msgid "This field is required."
msgstr "To pole jest wymagane."
-#: db/models/fields/__init__.py:448
+#: db/models/fields/__init__.py:457
msgid "This value must be an integer."
msgstr "Ta wartość musi być liczbą całkowitą."
-#: db/models/fields/__init__.py:487
+#: db/models/fields/__init__.py:498
msgid "This value must be either True or False."
msgstr ""
"Ta wartość musi być wartością logiczną (True, False - prawda lub fałsz)."
-#: db/models/fields/__init__.py:511
+#: db/models/fields/__init__.py:522
msgid "This field cannot be null."
msgstr "To pole nie może być puste."
-#: db/models/fields/__init__.py:689
+#: db/models/fields/__init__.py:709
msgid "This value must be a decimal number."
msgstr "Ta wartość musi być liczbą dziesiętną."
-#: db/models/fields/__init__.py:800
+#: db/models/fields/__init__.py:822
msgid "Enter a valid filename."
msgstr "Wpisz poprawnÄ… nazwÄ™ pliku."
-#: db/models/fields/__init__.py:981
+#: db/models/fields/__init__.py:1013
msgid "This value must be either None, True or False."
msgstr ""
"Ta wartość musi być jedną z None (nic), True (prawda) lub False (fałsz)."
-#: db/models/fields/related.py:94
+#: db/models/fields/related.py:93
#, python-format
msgid "Please enter a valid %s."
msgstr "Proszę wpisać poprawne %s."
-#: db/models/fields/related.py:746
-msgid "Separate multiple IDs with commas."
-msgstr "Oddziel identyfikatory przecinkami."
-
-#: db/models/fields/related.py:748
+#: db/models/fields/related.py:729
msgid ""
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
"Przytrzymaj wciśnięty klawisz \"Ctrl\" lub \"Command\" na Mac'u aby "
"zaznaczyć więcej niż jeden wybór."
-#: db/models/fields/related.py:795
+#: db/models/fields/related.py:773
#, python-format
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
msgid_plural ""
@@ -3964,100 +4047,100 @@ msgstr[2] ""
"Proszę podać poprawne identyfikatory %(self)s. Wartości %(value)r są "
"niepoprawne."
-#: newforms/fields.py:47
+#: forms/fields.py:53
msgid "Enter a valid value."
msgstr "Wpisz poprawną wartość."
-#: newforms/fields.py:124
+#: forms/fields.py:130
#, python-format
msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
msgstr ""
"Upewnij się, że ta wartość ma co najwyżej %(max)d znaków (ma długość %"
"(length)d)."
-#: newforms/fields.py:125
+#: forms/fields.py:131
#, python-format
msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
msgstr ""
"Upewnij się, że ta wartość ma co najmniej %(min)d znaków (ma długość %"
"(length)d)."
-#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211
+#: forms/fields.py:159 forms/fields.py:188 forms/fields.py:217
#, python-format
msgid "Ensure this value is less than or equal to %s."
msgstr "Upewnij się, że ta wartość jest mniejsza lub równa %s."
-#: newforms/fields.py:154 newforms/fields.py:183 newforms/fields.py:212
+#: forms/fields.py:160 forms/fields.py:189 forms/fields.py:218
#, python-format
msgid "Ensure this value is greater than or equal to %s."
msgstr "Upewnij się, że ta wartość jest większa lub równa %s."
-#: newforms/fields.py:181 newforms/fields.py:210
+#: forms/fields.py:187 forms/fields.py:216
msgid "Enter a number."
msgstr "Wpisz liczbÄ™."
-#: newforms/fields.py:213
+#: forms/fields.py:219
#, python-format
msgid "Ensure that there are no more than %s digits in total."
msgstr "Upewnij się, że jest nie więcej niż %s cyfr."
-#: newforms/fields.py:214
+#: forms/fields.py:220
#, python-format
msgid "Ensure that there are no more than %s decimal places."
msgstr "Upewnij się, że jest nie więcej niż %s miejsc po przecinku."
-#: newforms/fields.py:215
+#: forms/fields.py:221
#, python-format
msgid "Ensure that there are no more than %s digits before the decimal point."
msgstr "Upewnij się, że jest nie więcej niż %s miejsc przed przecinkiem."
-#: newforms/fields.py:263 newforms/fields.py:750
+#: forms/fields.py:269 forms/fields.py:799
msgid "Enter a valid date."
msgstr "Wpisz poprawnÄ… datÄ™."
-#: newforms/fields.py:296 newforms/fields.py:751
+#: forms/fields.py:302 forms/fields.py:800
msgid "Enter a valid time."
msgstr "Wpisz poprawnÄ… godzinÄ™."
-#: newforms/fields.py:335
+#: forms/fields.py:341
msgid "Enter a valid date/time."
msgstr "Wpisz poprawnÄ… datÄ™/godzinÄ™."
-#: newforms/fields.py:434
+#: forms/fields.py:428
msgid "No file was submitted."
msgstr "Żaden plik nie został przesłany."
-#: newforms/fields.py:435 oldforms/__init__.py:689
+#: forms/fields.py:429 oldforms/__init__.py:693
msgid "The submitted file is empty."
msgstr "Wysłany plik jest pusty."
-#: newforms/fields.py:497
+#: forms/fields.py:528
msgid "Enter a valid URL."
msgstr "Wpisz poprawny URL."
-#: newforms/fields.py:498
+#: forms/fields.py:529
msgid "This URL appears to be a broken link."
msgstr "Ten odnośnik jest nieprawidłowy."
-#: newforms/fields.py:559 newforms/models.py:305
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Wybierz poprawną wartość. Podana nie jest jednym z dostępnych wyborów."
-
-#: newforms/fields.py:598
+#: forms/fields.py:597 forms/fields.py:648
#, python-format
msgid "Select a valid choice. %(value)s is not one of the available choices."
msgstr ""
"Wybierz poprawną wartość. %(value)s nie jest jednym z dostępnych wyborów."
-#: newforms/fields.py:599 newforms/fields.py:661 newforms/models.py:372
+#: forms/fields.py:649 forms/fields.py:710 forms/models.py:581
msgid "Enter a list of values."
msgstr "Podaj listę wartości."
-#: newforms/fields.py:779
+#: forms/fields.py:828
msgid "Enter a valid IPv4 address."
msgstr "Wprowadź poprawny adres IPv4."
-#: newforms/models.py:373
+#: forms/models.py:514
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "Wybierz poprawną wartość. Podana nie jest jednym z dostępnych wyborów."
+
+#: forms/models.py:582
#, python-format
msgid "Select a valid choice. %s is not one of the available choices."
msgstr "Wybierz poprawną wartość. %s nie jest jednym z dostępnych wyborów."
@@ -4079,15 +4162,15 @@ msgstr "Znaki nowej linii sÄ… tutaj niedopuszczalne."
msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
msgstr "Wybierz poprawną opcję; '%(data)s' nie jest wśród %(choices)s."
-#: oldforms/__init__.py:745
+#: oldforms/__init__.py:754
msgid "Enter a whole number between -32,768 and 32,767."
msgstr "Proszę wpisać liczbę całkowitą z zakresu od -32 768 do 32 767"
-#: oldforms/__init__.py:755
+#: oldforms/__init__.py:764
msgid "Enter a positive number."
msgstr "Proszę wpisać liczbę dodatnią."
-#: oldforms/__init__.py:765
+#: oldforms/__init__.py:774
msgid "Enter a whole number between 0 and 32,767."
msgstr "Proszę wpisać liczbę całkowitą z zakresu od 0 do 32 767"
@@ -4322,7 +4405,7 @@ msgstr "Lis."
msgid "Dec."
msgstr "Gru."
-#: utils/text.py:127
+#: utils/text.py:128
msgid "or"
msgstr "lub"
@@ -4382,41 +4465,62 @@ msgstr "%(number)d %(type)s"
msgid ", %(number)d %(type)s"
msgstr ", %(number)d %(type)s"
-#: utils/translation/trans_real.py:403
+#: utils/translation/trans_real.py:401
msgid "DATE_FORMAT"
msgstr "Y-m-d"
-#: utils/translation/trans_real.py:404
+#: utils/translation/trans_real.py:402
msgid "DATETIME_FORMAT"
msgstr "Y-m-d H:i:s"
-#: utils/translation/trans_real.py:405
+#: utils/translation/trans_real.py:403
msgid "TIME_FORMAT"
msgstr "H:i:s"
-#: utils/translation/trans_real.py:421
+#: utils/translation/trans_real.py:419
msgid "YEAR_MONTH_FORMAT"
msgstr "Y-m"
-#: utils/translation/trans_real.py:422
+#: utils/translation/trans_real.py:420
msgid "MONTH_DAY_FORMAT"
msgstr "m-d"
-#: views/generic/create_update.py:43
+#: views/generic/create_update.py:129
#, python-format
msgid "The %(verbose_name)s was created successfully."
msgstr "%(verbose_name)s zostało pomyślnie utworzone."
-#: views/generic/create_update.py:117
+#: views/generic/create_update.py:172
#, python-format
msgid "The %(verbose_name)s was updated successfully."
msgstr "%(verbose_name)s zostało pomyślnie zmienione."
-#: views/generic/create_update.py:184
+#: views/generic/create_update.py:214
#, python-format
msgid "The %(verbose_name)s was deleted."
msgstr "%(verbose_name)s zostało usunięte."
+#~ msgid "Ordering"
+#~ msgstr "Sortowanie"
+
+#~ msgid "Order:"
+#~ msgstr "PorzÄ…dek:"
+
+#~ msgid "Added %s."
+#~ msgstr "Dodano %s"
+
+#~ msgid "Deleted %s."
+#~ msgstr "Skasowano %s"
+
+#~ msgid "The two 'new password' fields didn't match."
+#~ msgstr "Pola 'nowe hasło' nie zgadzają się."
+
+#~ msgid "Year must be 1900 or later."
+#~ msgstr "Rok nie może być wcześniejszy niż 1900."
+
+#~ msgid "Separate multiple IDs with commas."
+#~ msgstr "Oddziel identyfikatory przecinkami."
+
#~ msgid "Brazilian"
#~ msgstr "Brazylijski"
diff --git a/django/conf/locale/pt_BR/LC_MESSAGES/django.mo b/django/conf/locale/pt_BR/LC_MESSAGES/django.mo
index 921eef2230..f254e69e97 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 264b233bc5..5f4555a5d1 100644
--- a/django/conf/locale/pt_BR/LC_MESSAGES/django.po
+++ b/django/conf/locale/pt_BR/LC_MESSAGES/django.po
@@ -1358,7 +1358,7 @@ msgstr "aprovado pela equipe"
#: contrib/comments/models.py:187
msgid "free comment"
-msgstr "fomentário livre"
+msgstr "comentário livre"
#: contrib/comments/models.py:188
msgid "free comments"
diff --git a/django/conf/locale/sr/LC_MESSAGES/django.mo b/django/conf/locale/sr/LC_MESSAGES/django.mo
index 08ed5b16e5..89e36aad09 100644
--- a/django/conf/locale/sr/LC_MESSAGES/django.mo
+++ b/django/conf/locale/sr/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/sr/LC_MESSAGES/django.po b/django/conf/locale/sr/LC_MESSAGES/django.po
index 4053068d9b..b89345285e 100644
--- a/django/conf/locale/sr/LC_MESSAGES/django.po
+++ b/django/conf/locale/sr/LC_MESSAGES/django.po
@@ -2,350 +2,225 @@ 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: 2007-02-20 18:50+0100\n"
-"Last-Translator: Petar Marić <petar.maric@gmail.com>\n"
-"Language-Team: Nesh <nesh@studioquatro.co.yu> & Petar <petar.maric@gmail.com>\n"
+"POT-Creation-Date: 2008-07-29 12:06+0200\n"
+"PO-Revision-Date: 2008-07-29 12:52+0100\n"
+"Last-Translator: Nebojsa Djordjevic <djnesh@gmail.com>\n"
+"Language-Team: Nesh <djnesh@gmail.com> & Petar <petar.maric@gmail.com>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Poedit-Country: YUGOSLAVIA\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Poedit-Basepath: ../../../../\n"
+"X-Poedit-Language: Serbian\n"
-#: contrib/comments/models.py:67
-#: contrib/comments/models.py:166
-msgid "object ID"
-msgstr "ID objekta"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "naslov"
-
-#: contrib/comments/models.py:69
-#: contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "komentar"
+#: conf/global_settings.py:44
+msgid "Arabic"
+msgstr "Arapski"
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "ocena #1"
+#: conf/global_settings.py:45
+msgid "Bengali"
+msgstr "Bengalski"
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "ocena #2"
+#: conf/global_settings.py:46
+msgid "Bulgarian"
+msgstr "Bugarski"
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "ocena #3"
+#: conf/global_settings.py:47
+#, fuzzy
+msgid "Catalan"
+msgstr "Italijanski"
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "ocena #4"
+#: conf/global_settings.py:48
+msgid "Czech"
+msgstr "Češki"
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "ocena #5"
+#: conf/global_settings.py:49
+msgid "Welsh"
+msgstr "Welšski"
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "ocena #6"
+#: conf/global_settings.py:50
+msgid "Danish"
+msgstr "Danski"
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "ocena #7"
+#: conf/global_settings.py:51
+msgid "German"
+msgstr "NemaÄki"
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "ocena #8"
+#: conf/global_settings.py:52
+msgid "Greek"
+msgstr "GrÄki"
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "da li je ocena validna"
+#: conf/global_settings.py:53
+msgid "English"
+msgstr "Engleski"
-#: contrib/comments/models.py:83
-#: contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "datum/vreme slanja"
+#: conf/global_settings.py:54
+msgid "Spanish"
+msgstr "Å panski"
-#: contrib/comments/models.py:84
-#: contrib/comments/models.py:170
-msgid "is public"
-msgstr "da li je javni"
+#: conf/global_settings.py:55
+#, fuzzy
+msgid "Estonian"
+msgstr "Rumunski"
-#: contrib/comments/models.py:85
-#: contrib/admin/views/doc.py:289
-msgid "IP address"
-msgstr "IP adresa"
+#: conf/global_settings.py:56
+msgid "Argentinean Spanish"
+msgstr "Å panski (Argentina)"
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "da li je obrisan"
+#: conf/global_settings.py:57
+msgid "Basque"
+msgstr "Baskijski"
-#: 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 "Izaberite ako je komentar neodgovarajući. Biće ispisano \"Ovaj komentar je obrisan\" umesto teksta komentara."
+#: conf/global_settings.py:58
+msgid "Persian"
+msgstr "Persijski"
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "komentari"
+#: conf/global_settings.py:59
+msgid "Finnish"
+msgstr "Finski"
-#: contrib/comments/models.py:131
-#: contrib/comments/models.py:207
-msgid "Content object"
-msgstr "Objekat sa sadržajem"
+#: conf/global_settings.py:60
+msgid "French"
+msgstr "Francuski"
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Poslao %(user)s dana %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
+#: conf/global_settings.py:61
+msgid "Irish"
+msgstr "Irski"
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "ime"
+#: conf/global_settings.py:62
+msgid "Galician"
+msgstr "Galski"
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "ip adresa"
+#: conf/global_settings.py:63
+msgid "Hungarian"
+msgstr "Mađarski"
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "odobreno od strane moderatora"
+#: conf/global_settings.py:64
+msgid "Hebrew"
+msgstr "Hebrejski"
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "slobodan komentar"
+#: conf/global_settings.py:65
+msgid "Croatian"
+msgstr "Hrvatski"
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "slobodni komentari"
+#: conf/global_settings.py:66
+msgid "Icelandic"
+msgstr "Islandski"
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "rezultat"
+#: conf/global_settings.py:67
+msgid "Italian"
+msgstr "Italijanski"
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "datum rezultata"
+#: conf/global_settings.py:68
+msgid "Japanese"
+msgstr "Japanski"
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "\"karma\" rezultat"
+#: conf/global_settings.py:69
+#, fuzzy
+msgid "Georgian"
+msgstr "NemaÄki"
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "\"karma\" rezultati"
+#: conf/global_settings.py:70
+#, fuzzy
+msgid "Korean"
+msgstr "Norveški"
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "Ocena %(score)d od strane %(user)s"
+#: conf/global_settings.py:71
+msgid "Khmer"
+msgstr "Kmerski"
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
+# wtf?
+#: conf/global_settings.py:72
+#, fuzzy
+msgid "Kannada"
msgstr ""
-"Ovaj komentar je oznaÄen od %(user)s:\n"
-"\n"
-"%(text)s"
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "datum oznaÄavanja"
+#: conf/global_settings.py:73
+msgid "Latvian"
+msgstr "Latvijski"
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "korisniÄka oznaka"
+#: conf/global_settings.py:74
+msgid "Lithuanian"
+msgstr "Litvanijski"
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "korisniÄke oznake"
+#: conf/global_settings.py:75
+msgid "Macedonian"
+msgstr "Makedonski"
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "%r je oznaÄio"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "datum brisanja"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "brisanje od strane moderatora"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "brisanja od strane moderatora"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Obrisao moderator %r"
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "Anonimni korisnici ne mogu da glasaju"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "Neispravan ID komentara"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "Ne možete glasati sami za sebe"
-
-# nesh: grrrrr, ala je rogobatno
-# petar: malo sam ga izmenio da bude jasniji
-#: contrib/comments/views/comments.py:28
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "Ova ocena je obavezna pošto ste uneli bar jednu ocenu."
-
-#: contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Ovaj komentar je poslat od korisnika koji je poslao manje od %(count)s komentara:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Ovaj komentar je poslat od korisnika koji je poslao manje od %(count)s komentara:\n"
-"\n"
-"%(text)s"
-msgstr[2] ""
-"Ovaj komentar je poslat od korisnika koji je poslao manje od %(count)s komentara:\n"
-"\n"
-"%(text)s"
-
-# nesh: skethcy???
-# petar: Pojma nemam sta im to znaci
-#: contrib/comments/views/comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Komentar je poslat od strane \"sketchy\" korisnika:\n"
-"\n"
-"%(text)s"
+#: conf/global_settings.py:76
+msgid "Dutch"
+msgstr "Holandski"
-#: contrib/comments/views/comments.py:189
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "Jedino je POST dozvoljen"
+#: conf/global_settings.py:77
+msgid "Norwegian"
+msgstr "Norveški"
-#: contrib/comments/views/comments.py:193
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Jedno ili više obaveznih polja nije poslato"
+#: conf/global_settings.py:78
+msgid "Polish"
+msgstr "Poljski"
-#: contrib/comments/views/comments.py:197
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Neko je menjao formu za komentare (povreda sigurnosti)"
+#: conf/global_settings.py:79
+msgid "Portugese"
+msgstr "Portugalski"
-#: contrib/comments/views/comments.py:207
-#: contrib/comments/views/comments.py:292
-msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
-msgstr "Forma komentara ima neispravni 'target' parametar -- ID objekta je neispravan"
+#: conf/global_settings.py:80
+#, fuzzy
+msgid "Brazilian Portuguese"
+msgstr "Brazilski"
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Ovaj komentar nije koristio ni 'preview' ni 'post'"
+#: conf/global_settings.py:81
+msgid "Romanian"
+msgstr "Rumunski"
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "KorisniÄko ime:"
+#: conf/global_settings.py:82
+msgid "Russian"
+msgstr "Ruski"
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Lozinka:"
+#: conf/global_settings.py:83
+msgid "Slovak"
+msgstr "SlovaÄki"
-#: contrib/comments/templates/comments/form.html:6
-msgid "Forgotten your password?"
-msgstr "Zaboravili ste lozinku?"
+#: conf/global_settings.py:84
+msgid "Slovenian"
+msgstr "SlovenaÄki"
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Log out"
-msgstr "Odjavite se"
+#: conf/global_settings.py:85
+msgid "Serbian"
+msgstr "Srpski"
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Ocene"
+#: conf/global_settings.py:86
+msgid "Swedish"
+msgstr "Å vedski"
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Obavezan unos"
+#: conf/global_settings.py:87
+#, fuzzy
+msgid "Tamil"
+msgstr ""
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Opcioni unos"
+#: conf/global_settings.py:88
+#, fuzzy
+msgid "Telugu"
+msgstr ""
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Pošaljite sliku"
+#: conf/global_settings.py:89
+msgid "Turkish"
+msgstr "Turski"
-#: contrib/comments/templates/comments/form.html:27
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Komentar:"
+#: conf/global_settings.py:90
+msgid "Ukrainian"
+msgstr "Ukrajinski"
-#: contrib/comments/templates/comments/form.html:32
-#: contrib/comments/templates/comments/freeform.html:9
-msgid "Preview comment"
-msgstr "Pregled komentara"
+#: conf/global_settings.py:91
+msgid "Simplified Chinese"
+msgstr "Kineski (pojednostavljen)"
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Vaše ime:"
+#: conf/global_settings.py:92
+msgid "Traditional Chinese"
+msgstr "Tradicionalni Kineski"
-#: contrib/admin/filterspecs.py:40
+#: contrib/admin/filterspecs.py:44
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
@@ -354,350 +229,303 @@ msgstr ""
"<h3>Po %s:</h3>\n"
"<ul>\n"
-#: contrib/admin/filterspecs.py:70
-#: contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:74
+#: contrib/admin/filterspecs.py:92
+#: contrib/admin/filterspecs.py:147
+#: contrib/admin/filterspecs.py:173
msgid "All"
msgstr "Sve"
-#: contrib/admin/filterspecs.py:109
+#: contrib/admin/filterspecs.py:113
msgid "Any date"
msgstr "Bilo koji datum"
-#: contrib/admin/filterspecs.py:110
+#: contrib/admin/filterspecs.py:114
msgid "Today"
msgstr "Danas"
-#: contrib/admin/filterspecs.py:113
+#: contrib/admin/filterspecs.py:117
msgid "Past 7 days"
msgstr "U zadnjih 7 dana"
-#: contrib/admin/filterspecs.py:115
+#: contrib/admin/filterspecs.py:119
msgid "This month"
msgstr "Ovoga meseca"
-#: contrib/admin/filterspecs.py:117
+#: contrib/admin/filterspecs.py:121
msgid "This year"
msgstr "Ove godine"
-#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:147
+#: forms/widgets.py:379
+#: oldforms/__init__.py:592
msgid "Yes"
msgstr "Da"
-#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:147
+#: forms/widgets.py:379
+#: oldforms/__init__.py:592
msgid "No"
msgstr "Ne"
-#: contrib/admin/filterspecs.py:150
+#: contrib/admin/filterspecs.py:154
+#: forms/widgets.py:379
+#: oldforms/__init__.py:592
msgid "Unknown"
msgstr "Nepoznato"
-#: contrib/admin/models.py:16
+#: contrib/admin/models.py:19
msgid "action time"
msgstr "vreme aktivnosti"
-#: contrib/admin/models.py:19
+#: contrib/admin/models.py:22
msgid "object id"
msgstr "id objekta"
-#: contrib/admin/models.py:20
+#: contrib/admin/models.py:23
msgid "object repr"
msgstr "opis objekta"
-#: contrib/admin/models.py:21
+#: contrib/admin/models.py:24
msgid "action flag"
msgstr "oznaka aktivnosti"
-#: contrib/admin/models.py:22
+#: contrib/admin/models.py:25
msgid "change message"
msgstr "opis izmene"
-#: contrib/admin/models.py:25
+#: contrib/admin/models.py:28
msgid "log entry"
msgstr "unos u dnevniku izmena"
-#: contrib/admin/models.py:26
+#: contrib/admin/models.py:29
msgid "log entries"
msgstr "unosi u dnevniku izmena"
-#: contrib/admin/templatetags/admin_list.py:228
-msgid "All dates"
-msgstr "Svi datumi"
-
-#: 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 "Unesite ispravno korisniÄko ime i Å¡ifru. Napomena: oba polja prave razliku izmeÄ‘u velikih i malih slova."
-
-#: contrib/admin/views/decorators.py:23
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "Prijavite se"
-
-#: contrib/admin/views/decorators.py:61
-msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
-msgstr "Ponovo se prijavite poÅ¡to je vaÅ¡a sesija istekla. Ne brinite, vaÅ¡i podaci su saÄuvani."
+#: contrib/admin/options.py:161
+#: contrib/admin/options.py:180
+msgid "None"
+msgstr "None"
-#: contrib/admin/views/decorators.py:68
-msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
-msgstr "VaÅ¡ internet ÄitaÄ nije prihvatio \"cookie\". Nakon aktiviranja odgovarajuće opcije ponovo uÄitajte stranu."
-
-#: contrib/admin/views/decorators.py:82
-msgid "Usernames cannot contain the '@' character."
-msgstr "KorisniÄka imena ne mogu sadržati karakter '@'."
-
-#: contrib/admin/views/decorators.py:84
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "VaÅ¡e korisniÄko ime nije data e-mail adresa. PokuÅ¡ajte sa '%s'."
-
-#: contrib/admin/views/main.py:226
-msgid "Site administration"
-msgstr "Administracija sajta"
-
-#: contrib/admin/views/main.py:260
+#: contrib/admin/options.py:347
+#: contrib/auth/admin.py:37
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "Uspešno dodat %(name)s \"%(obj)s\"."
-#: contrib/admin/views/main.py:264
-#: contrib/admin/views/main.py:348
+#: contrib/admin/options.py:351
+#: contrib/admin/options.py:419
+#: contrib/auth/admin.py:42
msgid "You may edit it again below."
msgstr "Možete ga ponovo izmeniti."
-#: contrib/admin/views/main.py:272
-#: contrib/admin/views/main.py:357
+#: contrib/admin/options.py:361
+#: contrib/admin/options.py:428
#, python-format
msgid "You may add another %s below."
msgstr "Možete dodati još jedan %s."
-#: contrib/admin/views/main.py:290
+#: contrib/admin/options.py:395
#, python-format
-msgid "Add %s"
-msgstr "Dodajte %s"
-
-#: contrib/admin/views/main.py:336
-#, python-format
-msgid "Added %s."
-msgstr "Dodat %s"
+msgid "Changed %s."
+msgstr "Izmenjen %s."
-#: contrib/admin/views/main.py:336
-#: contrib/admin/views/main.py:338
-#: contrib/admin/views/main.py:340
+#: contrib/admin/options.py:395
+#: contrib/admin/options.py:405
+#: core/validators.py:279
+#: db/models/manipulators.py:305
msgid "and"
msgstr "i"
-#: contrib/admin/views/main.py:338
+#: contrib/admin/options.py:400
#, python-format
-msgid "Changed %s."
-msgstr "Izmenjen %s."
+msgid "Added %(name)s \"%(object)s\"."
+msgstr "Dodato %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:404
+#, python-format
+msgid "Changed %(list)s for %(name)s \"%(object)s\"."
+msgstr "Promenjeno %(list)s za %(name)s \"%(object)s\"."
-#: contrib/admin/views/main.py:340
+#: contrib/admin/options.py:409
#, python-format
-msgid "Deleted %s."
-msgstr "Obrisan %s."
+msgid "Deleted %(name)s \"%(object)s\"."
+msgstr "Obrisano %(name)s \"%(object)s\"."
-#: contrib/admin/views/main.py:343
+#: contrib/admin/options.py:414
msgid "No fields changed."
msgstr "Nijedno polje nije izmenjeno."
-#: contrib/admin/views/main.py:346
+#: contrib/admin/options.py:417
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr "Uspešno izmenjen: %(name)s \"%(obj)s\"."
-#: contrib/admin/views/main.py:354
+#: contrib/admin/options.py:425
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr "%(name)s \"%(obj)s\" je uspešno dodat. Možete ga ponovo izmeniti."
-#: contrib/admin/views/main.py:392
+#: contrib/admin/options.py:506
#, python-format
-msgid "Change %s"
-msgstr "Izmeni %s"
+msgid "Add %s"
+msgstr "Dodajte %s"
-#: contrib/admin/views/main.py:470
+#: contrib/admin/options.py:568
#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Jedno ili više %(fieldname)s u %(name)s: %(obj)s"
+msgid "Change %s"
+msgstr "Izmeni %s"
-#: contrib/admin/views/main.py:475
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Jedan ili više %(fieldname)s u %(name)s:"
+#: contrib/admin/options.py:598
+msgid "Database error"
+msgstr "Greška u bazi podataka"
-#: contrib/admin/views/main.py:508
+#: contrib/admin/options.py:647
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr "Uspešno obrisan: %(name)s \"%(obj)s\"."
-#: contrib/admin/views/main.py:511
+#: contrib/admin/options.py:653
msgid "Are you sure?"
msgstr "Da li ste sigurni?"
-#: contrib/admin/views/main.py:533
+#: contrib/admin/options.py:680
#, python-format
msgid "Change history: %s"
msgstr "Istorija izmena: %s"
-#: contrib/admin/views/main.py:565
-#, python-format
-msgid "Select %s"
-msgstr "Izaberite %s"
+#: contrib/admin/sites.py:18
+#: contrib/admin/views/decorators.py:16
+#: contrib/auth/forms.py:70
+#: contrib/comments/views/comments.py:56
+msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
+msgstr "Unesite ispravno korisniÄko ime i Å¡ifru. Napomena: oba polja prave razliku izmeÄ‘u velikih i malih slova."
-#: contrib/admin/views/main.py:565
-#, python-format
-msgid "Select %s to change"
-msgstr "Izaberite %s za izmenu"
+#: contrib/admin/sites.py:233
+#: contrib/admin/views/decorators.py:68
+msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
+msgstr "Ponovo se prijavite poÅ¡to je vaÅ¡a sesija istekla. Ne brinite, vaÅ¡i podaci su saÄuvani."
-#: contrib/admin/views/doc.py:277
-#: contrib/admin/views/doc.py:286
-#: contrib/admin/views/doc.py:288
-#: contrib/admin/views/doc.py:294
-#: contrib/admin/views/doc.py:295
-#: contrib/admin/views/doc.py:297
-msgid "Integer"
-msgstr "Ceo broj"
+#: contrib/admin/sites.py:240
+#: contrib/admin/views/decorators.py:75
+msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
+msgstr "VaÅ¡ internet ÄitaÄ nije prihvatio \"cookie\". Nakon aktiviranja odgovarajuće opcije ponovo uÄitajte stranu."
-#: contrib/admin/views/doc.py:278
-msgid "Boolean (Either True or False)"
-msgstr "LogiÄka vrednost (TaÄno ili NetaÄno)"
+#: contrib/admin/sites.py:254
+#: contrib/admin/sites.py:260
+#: contrib/admin/views/decorators.py:92
+msgid "Usernames cannot contain the '@' character."
+msgstr "KorisniÄka imena ne mogu sadržati karakter '@'."
-#: contrib/admin/views/doc.py:279
-#: contrib/admin/views/doc.py:296
+#: contrib/admin/sites.py:257
+#: contrib/admin/views/decorators.py:88
#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "Niz karaktera (maksimalno %(maxlength)s karaktera)"
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr "VaÅ¡e korisniÄko ime nije data e-mail adresa. PokuÅ¡ajte sa '%s'."
-#: contrib/admin/views/doc.py:280
-msgid "Comma-separated integers"
-msgstr "Brojevi razdvojeni zarezima"
+#: contrib/admin/sites.py:325
+msgid "Site administration"
+msgstr "Administracija sajta"
-#: contrib/admin/views/doc.py:281
-msgid "Date (without time)"
-msgstr "Datum (bez vremena)"
+#: contrib/admin/sites.py:347
+#: contrib/admin/templates/admin/login.html:27
+#: contrib/admin/views/decorators.py:30
+msgid "Log in"
+msgstr "Prijavite se"
-#: contrib/admin/views/doc.py:282
-msgid "Date (with time)"
-msgstr "Datum (sa vremenom)"
+#: contrib/admin/util.py:126
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr "Jedno ili više %(fieldname)s u %(name)s: %(obj)s"
-#: contrib/admin/views/doc.py:283
-msgid "E-mail address"
-msgstr "E-mail adresa"
+#: contrib/admin/util.py:131
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "Jedan ili više %(fieldname)s u %(name)s:"
-#: contrib/admin/views/doc.py:284
-#: contrib/admin/views/doc.py:287
-msgid "File path"
-msgstr "Putanja do datoteke"
+#: contrib/admin/widgets.py:65
+msgid "Date:"
+msgstr "Datum:"
-#: contrib/admin/views/doc.py:285
-msgid "Decimal number"
-msgstr "Decimalni broj"
+#: contrib/admin/widgets.py:65
+msgid "Time:"
+msgstr "Vreme:"
-#: contrib/admin/views/doc.py:291
-msgid "Boolean (Either True, False or None)"
-msgstr "LogiÄka vrednost (TaÄno, NetaÄno ili prazno)"
+#: contrib/admin/widgets.py:89
+msgid "Currently:"
+msgstr "Trenutno:"
-#: contrib/admin/views/doc.py:292
-msgid "Relation to parent model"
-msgstr "Relacija ka nadređenom objektu"
+#: contrib/admin/widgets.py:89
+msgid "Change:"
+msgstr "Izmenite:"
-#: contrib/admin/views/doc.py:293
-msgid "Phone number"
-msgstr "Telefonski broj"
+#: contrib/admin/templates/admin/404.html:4
+#: contrib/admin/templates/admin/404.html:8
+msgid "Page not found"
+msgstr "Strana nije pronađena"
-#: contrib/admin/views/doc.py:298
-msgid "Text"
-msgstr "Tekst"
+#: contrib/admin/templates/admin/404.html:10
+msgid "We're sorry, but the requested page could not be found."
+msgstr "Tražena strana ne postoji."
-#: contrib/admin/views/doc.py:299
-msgid "Time"
-msgstr "Vreme"
+#: contrib/admin/templates/admin/500.html:4
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/change_form.html:17
+#: contrib/admin/templates/admin/change_list.html:8
+#: contrib/admin/templates/admin/delete_confirmation.html:6
+#: contrib/admin/templates/admin/invalid_setup.html:4
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/auth/user/change_password.html:10
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+#: contrib/admin/templates/registration/logged_out.html:4
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_reset_done.html:4
+#: contrib/admin/templates/registration/password_reset_form.html:4
+msgid "Home"
+msgstr "PoÄetna strana"
-#: contrib/admin/views/doc.py:300
-#: contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
+#: contrib/admin/templates/admin/500.html:4
+msgid "Server error"
+msgstr "Greška na serveru"
-#: contrib/admin/views/doc.py:301
-msgid "U.S. state (two uppercase letters)"
-msgstr "U.S. država (dva VELIKA slova)"
+#: contrib/admin/templates/admin/500.html:6
+msgid "Server error (500)"
+msgstr "Greška na serveru (500)"
-#: contrib/admin/views/doc.py:302
-msgid "XML text"
-msgstr "XML tekst"
+#: contrib/admin/templates/admin/500.html:9
+msgid "Server Error <em>(500)</em>"
+msgstr "Greška na serveru <em>(500)</em>"
+
+#: contrib/admin/templates/admin/500.html:10
+msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
+msgstr "Dogodila se greška koja je prijavljena administratorima."
-#: 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
+msgid "Welcome,"
+msgstr "Dobrodošli,"
+
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
#: contrib/admin/templates/registration/password_change_done.html:3
#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
msgid "Documentation"
msgstr "Dokumentacija"
-#: 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/auth/user/change_password.html:13
+#: contrib/admin/templates/admin/auth/user/change_password.html:46
#: contrib/admin/templates/registration/password_change_done.html:3
#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
msgid "Change password"
msgstr "Izmenite lozinku"
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "PoÄetna strana"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:20
-msgid "History"
-msgstr "Istorija"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Datum/vreme"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "Korisnik"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "Aktivnost"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "j. N Y, H:i"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "Ovaj objekat nema istoriju promena. Najverovatnije nije dodat korišćenjem administracije sajta."
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/comments/templates/comments/form.html:6
+msgid "Log out"
+msgstr "Odjavite se"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
@@ -707,120 +535,147 @@ msgstr "Django administracija sajta"
msgid "Django administration"
msgstr "Django administracija"
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Greška na serveru"
+#: contrib/admin/templates/admin/change_form.html:19
+#: contrib/admin/templates/admin/index.html:29
+msgid "Add"
+msgstr "Dodajte"
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Greška na serveru (500)"
+#: contrib/admin/templates/admin/change_form.html:26
+#: contrib/admin/templates/admin/object_history.html:5
+msgid "History"
+msgstr "Istorija"
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Greška na serveru <em>(500)</em>"
+#: contrib/admin/templates/admin/change_form.html:27
+msgid "View on site"
+msgstr "Pogledaj na sajtu"
-#: 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 "Dogodila se greška koja je prijavljena administratorima."
+#: contrib/admin/templates/admin/change_form.html:37
+#: contrib/admin/templates/admin/auth/user/change_password.html:22
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Ispravite dole navedenu grešku."
+msgstr[1] "Ispravite dole navedene greške."
+msgstr[2] "Ispravite dole navedene greške."
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Strana nije pronađena"
+#: contrib/admin/templates/admin/change_list.html:16
+#, python-format
+msgid "Add %(name)s"
+msgstr "Dodajte %(name)s"
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Tražena strana ne postoji."
+#: contrib/admin/templates/admin/change_list.html:26
+msgid "Filter"
+msgstr "Filter"
-#: contrib/admin/templates/admin/index.html:17
+#: contrib/admin/templates/admin/delete_confirmation.html:9
+#: contrib/admin/templates/admin/submit_line.html:3
+#: contrib/admin/templates/admin/edit_inline/tabular.html:15
+msgid "Delete"
+msgstr "Obrišite"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:15
+#, 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 "Brisanjem %(object_name)s '%(escaped_object)s' došlo bi do brisanja pridruženih objekata, ali nemate prava da brišete sledeće objekte:"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:22
+#, 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 "Da li ste sigurni da želite da obrišete %(object_name)s \"%(escaped_object)s\"? Takođe će biti obrisani sledeći pridruženi objekti:"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:27
+msgid "Yes, I'm sure"
+msgstr "Da, siguran sam"
+
+#: contrib/admin/templates/admin/filter.html:2
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " Po %(filter_title)s"
+
+#: contrib/admin/templates/admin/index.html:18
#, python-format
msgid "Models available in the %(name)s application."
msgstr "Dostupni modeli u aplikaciji %(name)s."
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "Dodajte"
+#: contrib/admin/templates/admin/index.html:19
+#, python-format
+msgid "%(name)s"
+msgstr "%(name)s"
-#: contrib/admin/templates/admin/index.html:34
+#: contrib/admin/templates/admin/index.html:35
msgid "Change"
msgstr "Izmenite"
-#: contrib/admin/templates/admin/index.html:44
+#: contrib/admin/templates/admin/index.html:45
msgid "You don't have permission to edit anything."
msgstr "Nemate prava da vršite izmene."
-#: contrib/admin/templates/admin/index.html:52
+#: contrib/admin/templates/admin/index.html:53
msgid "Recent Actions"
msgstr "Poslednje aktivnosti"
-#: contrib/admin/templates/admin/index.html:53
+#: contrib/admin/templates/admin/index.html:54
msgid "My Actions"
msgstr "Moje aktivnosti"
-#: contrib/admin/templates/admin/index.html:57
+#: contrib/admin/templates/admin/index.html:58
msgid "None available"
msgstr "Bez aktivnosti"
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Dodajte %(name)s"
+#: contrib/admin/templates/admin/invalid_setup.html:7
+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 "NeÅ¡to nije u redu sa vaÅ¡om istalacijom baze podataka. Proverite da li su sve tabele kreirane i Äitljive od strane definisanog korisnika."
+
+#: contrib/admin/templates/admin/login.html:19
+#: contrib/comments/templates/comments/form.html:6
+#: contrib/comments/templates/comments/form.html:8
+msgid "Username:"
+msgstr "KorisniÄko ime:"
#: contrib/admin/templates/admin/login.html:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "Da li ste <a href=\"/password_reset/\">zaboravili vašu lozinku?</a>?"
+#: contrib/comments/templates/comments/form.html:8
+msgid "Password:"
+msgstr "Lozinka:"
-#: contrib/admin/templates/admin/base.html:23
-msgid "Welcome,"
-msgstr "Dobrodošli,"
+#: contrib/admin/templates/admin/object_history.html:16
+msgid "Date/time"
+msgstr "Datum/vreme"
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Obrišite"
+#: contrib/admin/templates/admin/object_history.html:17
+msgid "User"
+msgstr "Korisnik"
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid "Deleting the %(object_name)s '%(object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "Brisanjem %(object_name)s '%(object)s' došlo bi do brisanja pridruženih objekata, ali nemate prava da brišete sledeće objekte:"
+#: contrib/admin/templates/admin/object_history.html:18
+msgid "Action"
+msgstr "Aktivnost"
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid "Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of the following related items will be deleted:"
-msgstr "Da li ste sigurni da želite da obrišete %(object_name)s \"%(object)s\"? Takođe će biti obrisani sledeći pridruženi objekti:"
+#: contrib/admin/templates/admin/object_history.html:24
+msgid "DATE_WITH_TIME_FULL"
+msgstr "j. N Y, H:i"
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "Da, siguran sam"
+#: contrib/admin/templates/admin/object_history.html:32
+msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
+msgstr "Ovaj objekat nema istoriju promena. Najverovatnije nije dodat korišćenjem administracije sajta."
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(title)s "
-msgstr " Po %(title)s "
+#: contrib/admin/templates/admin/pagination.html:10
+msgid "Show all"
+msgstr "Prikaži sve"
#: contrib/admin/templates/admin/search_form.html:8
msgid "Go"
msgstr "Nađi"
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Pogledaj na sajtu"
-
-#: contrib/admin/templates/admin/change_form.html:30
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Ispravite dole navedenu grešku."
-msgstr[1] "Ispravite dole navedene greške."
-msgstr[2] "Ispravite dole navedene greške."
-
-#: contrib/admin/templates/admin/change_form.html:48
-msgid "Ordering"
-msgstr "Redosled"
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] "1 rezultat"
+msgstr[1] "%(counter)s rezultata"
+msgstr[2] "%(counter)s rezultata"
-#: contrib/admin/templates/admin/change_form.html:51
-msgid "Order:"
-msgstr "Red:"
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "%(full_result_count)s ukupno"
#: contrib/admin/templates/admin/submit_line.html:4
msgid "Save as new"
@@ -838,40 +693,92 @@ msgstr "Snimite i nastavite sa izmenama"
msgid "Save"
msgstr "Snimite"
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Izmenite lozinku"
+#: 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 "Prvo unesite korisniÄko ime i lozinku da bi ste mogli menjati ostale opcije za korisnika."
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:13
+#: contrib/auth/forms.py:12
+#: contrib/auth/forms.py:49
+msgid "Username"
+msgstr "KorisniÄko ime"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:20
+#: contrib/admin/templates/admin/auth/user/change_password.html:33
+#: contrib/auth/forms.py:15
+#: contrib/auth/forms.py:50
+#: contrib/auth/forms.py:166
+msgid "Password"
+msgstr "Lozinka"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:26
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/auth/forms.py:167
+msgid "Password (again)"
+msgstr "Lozinka (ponovo)"
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:27
+#: contrib/admin/templates/admin/auth/user/change_password.html:40
+msgid "Enter the same password as above, for verification."
+msgstr "Zbog provere, ponovite lozinku."
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:26
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Unesite novu lozinku za korisnika <strong>%(username)s</strong>."
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Lozinka je uspešno izmenjena"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Bookmarklets"
+msgstr "Bookmarklets"
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Vaša lozinka je izmenjena."
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
+msgid "Documentation bookmarklets"
+msgstr "Dokumentacioni \"bookmarklets\""
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "Resetovanje lozinke"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:8
+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 ""
+"\n"
+"<p class=\"help\">Da bi ste instalirali \"bookmarklet\", odvucite link u vaÅ¡e \"bookmark\"-e, ili kliknite desnim tasterom i dodajte ga. Sada možete da izaberete \"bookmark\" sa bilo koje strane na sajtu. Napomena: pristup nekima od strana mora biti sa kompjutera Äija je IP adresa oznaÄena kao \"internal\" (kontaktirajte sistem administratora ako niste sigurni da li je vaÅ¡ IP oznaÄen kao \"internal\").</p>\n"
-#: 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 "Zaboravili ste svoju lozinku? Unesite vašu e-mail adresu i dobićete novu lozinku na dati e-mail."
+#: contrib/admin/templates/admin_doc/bookmarklets.html:18
+msgid "Documentation for this page"
+msgstr "Dokumentacija za ovu stranu"
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-mail adresa:"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:19
+msgid "Jumps you from any page to the documentation for the view that generates that page."
+msgstr "SkaÄe sa bilo koje strane na stranu sa dokumentacijom za \"view\" koji generiÅ¡e tu stranu."
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Resetujte moju lozinku"
+#: contrib/admin/templates/admin_doc/bookmarklets.html:21
+msgid "Show object ID"
+msgstr "Prikažite ID objekta"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:22
+msgid "Shows the content-type and unique ID for pages that represent a single object."
+msgstr "Prikazuje \"content-type\" i jedinstveni ID strane koje predstavlja jedan objekt."
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:24
+msgid "Edit this object (current window)"
+msgstr "Izmena objekta (u aktivnom prozoru)"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:25
+msgid "Jumps to the admin page for pages that represent a single object."
+msgstr "SkaÄe na admin stranu za strane koje predstavljaju objekt."
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:27
+msgid "Edit this object (new window)"
+msgstr "Izmeni objekat (novi prozor)"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:28
+msgid "As above, but opens the admin page in a new window."
+msgstr "Kao iznad, samo otvara admin stranu u novom prozoru."
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
@@ -881,14 +788,21 @@ msgstr "Hvala Vam na poseti."
msgid "Log in again"
msgstr "Prijavite se ponovo"
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Vaša lozinka je uspešno resetovana"
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_change_form.html:6
+#: contrib/admin/templates/registration/password_change_form.html:10
+msgid "Password change"
+msgstr "Izmenite lozinku"
-#: 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 "Nova lozinka vam je poslata na zadatu e-mail adresu. E-mail bi trebao da stigne u narednih nekoliko minuta."
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
+msgid "Password change successful"
+msgstr "Lozinka je uspešno izmenjena"
+
+#: contrib/admin/templates/registration/password_change_done.html:12
+msgid "Your password was changed."
+msgstr "Vaša lozinka je izmenjena."
#: 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."
@@ -910,6 +824,22 @@ msgstr "Potvrdite novu lozinku:"
msgid "Change my password"
msgstr "Izmenite moju lozinku"
+#: 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 "Resetovanje lozinke"
+
+#: contrib/admin/templates/registration/password_reset_done.html:6
+#: contrib/admin/templates/registration/password_reset_done.html:10
+msgid "Password reset successful"
+msgstr "Vaša lozinka je uspešno resetovana"
+
+#: 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 "Nova lozinka vam je poslata na zadatu e-mail adresu. E-mail bi trebao da stigne u narednih nekoliko minuta."
+
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
msgstr "Primili ste ovaj e-mail jer ste zatražili resetovanje lozinke"
@@ -941,712 +871,2888 @@ msgstr "Hvala Vam na poseti!"
msgid "The %(site_name)s team"
msgstr "%(site_name)s tim"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
+#: 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 "Zaboravili ste svoju lozinku? Unesite vašu e-mail adresu i dobićete novu lozinku na dati e-mail."
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "Dokumentacioni \"bookmarklets\""
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "E-mail address:"
+msgstr "E-mail adresa:"
-#: 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/admin/templates/registration/password_reset_form.html:16
+msgid "Reset my password"
+msgstr "Resetujte moju lozinku"
+
+#: contrib/admin/templatetags/admin_list.py:257
+msgid "All dates"
+msgstr "Svi datumi"
+
+#: contrib/admin/views/main.py:65
+#, python-format
+msgid "Select %s"
+msgstr "Izaberite %s"
+
+#: contrib/admin/views/main.py:65
+#, python-format
+msgid "Select %s to change"
+msgstr "Izaberite %s za izmenu"
+
+#: contrib/admindocs/views.py:53
+#: contrib/admindocs/views.py:55
+#: contrib/admindocs/views.py:57
+msgid "tag:"
msgstr ""
-"\n"
-"<p class=\"help\">Da bi ste instalirali \"bookmarklet\", odvucite link u vaÅ¡e \"bookmark\"-e, ili kliknite desnim tasterom i dodajte ga. Sada možete da izaberete \"bookmark\" sa bilo koje strane na sajtu. Napomena: pristup nekima od strana mora biti sa kompjutera Äija je IP adresa oznaÄena kao \"internal\" (kontaktirajte sistem administratora ako niste sigurni da li je vaÅ¡ IP oznaÄen kao \"internal\").</p>\n"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Dokumentacija za ovu stranu"
+#: contrib/admindocs/views.py:87
+#: contrib/admindocs/views.py:89
+#: contrib/admindocs/views.py:91
+msgid "filter:"
+msgstr ""
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid "Jumps you from any page to the documentation for the view that generates that page."
-msgstr "SkaÄe sa bilo koje strane na stranu sa dokumentacijom za \"view\" koji generiÅ¡e tu stranu."
+#: contrib/admindocs/views.py:153
+#: contrib/admindocs/views.py:155
+#: contrib/admindocs/views.py:157
+msgid "view:"
+msgstr ""
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Prikažite ID objekta"
+#: contrib/admindocs/views.py:187
+#, python-format
+msgid "App %r not found"
+msgstr "Aplikacija %r nije nađena"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid "Shows the content-type and unique ID for pages that represent a single object."
-msgstr "Prikazuje \"content-type\" i jedinstveni ID strane koje predstavlja jedan objekt."
+#: contrib/admindocs/views.py:194
+#, python-format
+msgid "Model %(model_name)r not found in app %(app_label)r"
+msgstr "Model %(model_name)r nije nađen u aplikaciji %(app_label)r"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Izmena objekta (u aktivnom prozoru)"
+#: contrib/admindocs/views.py:206
+#, python-format
+msgid "the related `%(app_label)s.%(data_type)s` object"
+msgstr "povezani `%(app_label)s.%(data_type)s` objekti"
+
+#: contrib/admindocs/views.py:206
+#: contrib/admindocs/views.py:228
+#: contrib/admindocs/views.py:242
+#: contrib/admindocs/views.py:247
+msgid "model:"
+msgstr ""
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "SkaÄe na admin stranu za strane koje predstavljaju objekt."
+#: contrib/admindocs/views.py:237
+#, python-format
+msgid "related `%(app_label)s.%(object_name)s` objects"
+msgstr "povezani `%(app_label)s.%(object_name)s` objekti"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Izmeni objekat (novi prozor)"
+#: contrib/admindocs/views.py:242
+#, python-format
+msgid "all %s"
+msgstr "svi %s"
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "Kao iznad, samo otvara admin stranu u novom prozoru."
+#: contrib/admindocs/views.py:247
+#, python-format
+msgid "number of %s"
+msgstr "broj %s"
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Datum:"
+#: contrib/admindocs/views.py:253
+#, python-format
+msgid "Fields on %s objects"
+msgstr "Polja u %s objekata"
+
+#: contrib/admindocs/views.py:317
+#: contrib/admindocs/views.py:328
+#: contrib/admindocs/views.py:330
+#: contrib/admindocs/views.py:336
+#: contrib/admindocs/views.py:337
+#: contrib/admindocs/views.py:339
+msgid "Integer"
+msgstr "Ceo broj"
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Vreme:"
+#: contrib/admindocs/views.py:318
+msgid "Boolean (Either True or False)"
+msgstr "LogiÄka vrednost (TaÄno ili NetaÄno)"
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Trenutno:"
+#: contrib/admindocs/views.py:319
+#: contrib/admindocs/views.py:338
+#, python-format
+msgid "String (up to %(max_length)s)"
+msgstr "Niz karaktera (maksimalno %(max_length)s karaktera)"
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Izmenite:"
+#: contrib/admindocs/views.py:320
+msgid "Comma-separated integers"
+msgstr "Brojevi razdvojeni zarezima"
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "preusmeri od"
+#: contrib/admindocs/views.py:321
+msgid "Date (without time)"
+msgstr "Datum (bez vremena)"
-#: contrib/redirects/models.py:8
-msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
-msgstr "Unesite apsolutnu putanju bez imena domena. Primer: '/dogadjaji/pretraga/'."
+#: contrib/admindocs/views.py:322
+msgid "Date (with time)"
+msgstr "Datum (sa vremenom)"
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "preusmeri ka"
+#: contrib/admindocs/views.py:323
+msgid "Decimal number"
+msgstr "Decimalni broj"
-#: contrib/redirects/models.py:10
-msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
-msgstr "Može biti apsolutna putanja (kao gore) ili puni URL koji poÄinje sa 'http://'."
+#: contrib/admindocs/views.py:324
+msgid "E-mail address"
+msgstr "E-mail adresa"
-#: contrib/redirects/models.py:12
-msgid "redirect"
-msgstr "Preusmeravanje"
+#: contrib/admindocs/views.py:325
+#: contrib/admindocs/views.py:326
+#: contrib/admindocs/views.py:329
+msgid "File path"
+msgstr "Putanja do datoteke"
-#: contrib/redirects/models.py:13
-msgid "redirects"
-msgstr "Preusmeravanja"
+#: contrib/admindocs/views.py:327
+msgid "Floating point number"
+msgstr ""
+#: contrib/admindocs/views.py:331
+#: contrib/comments/models.py:89
+msgid "IP address"
+msgstr "IP adresa"
+
+#: contrib/admindocs/views.py:333
+msgid "Boolean (Either True, False or None)"
+msgstr "LogiÄka vrednost (TaÄno, NetaÄno ili prazno)"
+
+#: contrib/admindocs/views.py:334
+msgid "Relation to parent model"
+msgstr "Relacija ka nadređenom objektu"
+
+#: contrib/admindocs/views.py:335
+msgid "Phone number"
+msgstr "Telefonski broj"
+
+#: contrib/admindocs/views.py:340
+msgid "Text"
+msgstr "Tekst"
+
+#: contrib/admindocs/views.py:341
+msgid "Time"
+msgstr "Vreme"
+
+#: contrib/admindocs/views.py:342
#: contrib/flatpages/models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Primer: '/o-nama/kontakt/'. Proverite da li ste uneli '/' na poÄetku i na kraju."
+msgid "URL"
+msgstr "URL"
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "naslov"
+#: contrib/admindocs/views.py:343
+msgid "U.S. state (two uppercase letters)"
+msgstr "U.S. država (dva VELIKA slova)"
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "sadržaj"
+#: contrib/admindocs/views.py:344
+msgid "XML text"
+msgstr "XML tekst"
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "omogućite komentare"
+#: contrib/admindocs/views.py:370
+#, python-format
+msgid "%s does not appear to be a urlpattern object"
+msgstr "%s nije urlpattern objekt"
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "naziv templejta"
+#: contrib/auth/admin.py:17
+msgid "Personal info"
+msgstr "LiÄne informacije"
-#: contrib/flatpages/models.py:13
-msgid "Example: 'flatpages/contact_page'. If this isn't provided, the system will use 'flatpages/default'."
-msgstr "Primer: 'flatpages/kontakt-stranica'. Ako ne zadate sistem će koristiti 'flatpages/default'."
+#: contrib/auth/admin.py:18
+msgid "Permissions"
+msgstr "Dozvole"
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "samo za registrovane korisnike"
+#: contrib/auth/admin.py:19
+msgid "Important dates"
+msgstr "Važni datumi"
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Ako izaberete ovu opciju samo prijavljeni korisnici će imati pristup datoj strani."
+#: contrib/auth/admin.py:20
+msgid "Groups"
+msgstr "Grupe"
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "statiÄna strana"
+#: contrib/auth/admin.py:47
+msgid "Add user"
+msgstr "Dodajte korisnika"
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "statiÄne strane"
+#: contrib/auth/forms.py:13
+#: contrib/auth/models.py:134
+msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
+msgstr "Obavezno. 30 ili manje karaktera. Samo slova, brojevi i donja crta \"_\"."
+
+# nesh: Ovo je opis za stari SlugField
+#: contrib/auth/forms.py:14
+#: core/validators.py:72
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Ovo polje može sadržati samo slova, brojeve i donju crtu (_)."
-#: contrib/auth/models.py:13
-#: contrib/auth/models.py:26
+#: contrib/auth/forms.py:16
+msgid "Password confirmation"
+msgstr "Potvrdite lozinku"
+
+#: contrib/auth/forms.py:28
+msgid "A user with that username already exists."
+msgstr "Korisnik već postoji."
+
+#: contrib/auth/forms.py:34
+#: contrib/auth/forms.py:153
+#: contrib/auth/forms.py:178
+msgid "The two password fields didn't match."
+msgstr "Polja za lozinku nisu ista."
+
+#: contrib/auth/forms.py:72
+#: contrib/comments/views/comments.py:58
+msgid "This account is inactive."
+msgstr "Neaktivni nalog."
+
+#: contrib/auth/forms.py:77
+#: contrib/comments/views/comments.py:49
+msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
+msgstr "VaÅ¡ internet ÄitaÄ nije prihvatio \"cookie\". \"Cookie\" podrÅ¡ka je potrebna da bi ste mogli da se prijavite."
+
+#: contrib/auth/forms.py:90
+msgid "E-mail"
+msgstr "E-mail"
+
+#: contrib/auth/forms.py:99
+msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?"
+msgstr "Ova e-mail adresa nije povezana sa nijednim korisniÄkim nalogom. Da li ste sigurni da ste registrovani?"
+
+#: contrib/auth/forms.py:124
+#, python-format
+msgid "Password reset on %s"
+msgstr "Resetovanje lozinke za %s"
+
+#: contrib/auth/forms.py:131
+msgid "Old password"
+msgstr "Stara lozinka"
+
+#: contrib/auth/forms.py:132
+msgid "New password"
+msgstr "Nova lozinka"
+
+#: contrib/auth/forms.py:133
+msgid "New password confirmation"
+msgstr "Potvrda nove lozinke"
+
+#: contrib/auth/forms.py:145
+msgid "Your old password was entered incorrectly. Please enter it again."
+msgstr "Pogrešna stara lozinka. Unesite je ponovo."
+
+#: contrib/auth/models.py:73
+#: contrib/auth/models.py:93
msgid "name"
msgstr "ime"
-#: contrib/auth/models.py:15
+#: contrib/auth/models.py:75
msgid "codename"
msgstr "Å¡ifra dozvole"
-#: contrib/auth/models.py:17
+#: contrib/auth/models.py:78
msgid "permission"
msgstr "dozvola"
-#: contrib/auth/models.py:18
-#: contrib/auth/models.py:27
+#: contrib/auth/models.py:79
+#: contrib/auth/models.py:94
msgid "permissions"
msgstr "dozvole"
-#: contrib/auth/models.py:29
+#: contrib/auth/models.py:97
msgid "group"
msgstr "grupa"
-#: contrib/auth/models.py:30
-#: contrib/auth/models.py:65
+#: contrib/auth/models.py:98
+#: contrib/auth/models.py:144
msgid "groups"
msgstr "grupe"
-#: contrib/auth/models.py:55
+#: contrib/auth/models.py:134
msgid "username"
msgstr "korisniÄko ime"
-#: contrib/auth/models.py:56
+#: contrib/auth/models.py:135
msgid "first name"
msgstr "ime"
-#: contrib/auth/models.py:57
+#: contrib/auth/models.py:136
msgid "last name"
msgstr "prezime"
-#: contrib/auth/models.py:58
+#: contrib/auth/models.py:137
msgid "e-mail address"
msgstr "e-mail adresa"
-#: contrib/auth/models.py:59
+#: contrib/auth/models.py:138
msgid "password"
msgstr "lozinka"
-#: contrib/auth/models.py:59
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr "Koristite '[algo]$[salt]$[hexdigest]'"
+#: contrib/auth/models.py:138
+msgid "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."
+msgstr "Koristite '[algo]$[salt]$[hexdigest]' ili <a href=\"password/\">promeni lozinku</a>."
-#: contrib/auth/models.py:60
+#: contrib/auth/models.py:139
msgid "staff status"
msgstr "dozvoljen pristup administraciji sajta"
-#: contrib/auth/models.py:60
+#: contrib/auth/models.py:139
msgid "Designates whether the user can log into this admin site."
msgstr "Da li korisnik ima pristup administratorskom delu sajta."
-#: contrib/auth/models.py:61
+#: contrib/auth/models.py:140
msgid "active"
msgstr "aktivan"
-#: contrib/auth/models.py:62
+#: contrib/auth/models.py:140
+msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts."
+msgstr "OznaÄava aktivne korisnike. Koristite umesto brisanja naloga."
+
+#: contrib/auth/models.py:141
msgid "superuser status"
msgstr "da li je korisnik administrator"
-#: contrib/auth/models.py:63
+#: contrib/auth/models.py:141
+msgid "Designates that this user has all permissions without explicitly assigning them."
+msgstr "OznaÄava korisnike koji imaju sva prava."
+
+#: contrib/auth/models.py:142
msgid "last login"
msgstr "vreme poslednje posete"
-#: contrib/auth/models.py:64
+#: contrib/auth/models.py:143
msgid "date joined"
msgstr "datum otvaranja naloga"
-#: contrib/auth/models.py:66
+#: contrib/auth/models.py:145
msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
msgstr "Uz ruÄno dodata prava, korisnik će dobiti sva prava iz grupa kojima pripada."
-#: contrib/auth/models.py:67
+#: contrib/auth/models.py:146
msgid "user permissions"
msgstr "korisniÄke dozvole"
-#: contrib/auth/models.py:70
+#: contrib/auth/models.py:150
msgid "user"
msgstr "korisnik"
-#: contrib/auth/models.py:71
+#: contrib/auth/models.py:151
msgid "users"
msgstr "korisnici"
-#: contrib/auth/models.py:76
-msgid "Personal info"
-msgstr "LiÄne informacije"
+#: contrib/auth/models.py:306
+msgid "message"
+msgstr "poruka"
-#: contrib/auth/models.py:77
-msgid "Permissions"
-msgstr "Dozvole"
+#: contrib/auth/views.py:49
+msgid "Logged out"
+msgstr "Odjavljeni ste"
-#: contrib/auth/models.py:78
-msgid "Important dates"
-msgstr "Važni datumi"
+#: contrib/auth/views.py:116
+msgid "Password changed successfully."
+msgstr "Lozinka je uspešno izmenjena."
-#: contrib/auth/models.py:79
-msgid "Groups"
-msgstr "Grupe"
+#: contrib/auth/views.py:122
+#, python-format
+msgid "Change password: %s"
+msgstr "Izmenite lozinku: %s"
-#: contrib/auth/models.py:219
-msgid "message"
-msgstr "poruka"
+#: contrib/comments/models.py:71
+#: contrib/comments/models.py:164
+msgid "object ID"
+msgstr "ID objekta"
-#: contrib/auth/forms.py:30
-msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
-msgstr "VaÅ¡ internet ÄitaÄ nije prihvatio \"cookie\". \"Cookie\" podrÅ¡ka je potrebna da bi ste mogli da se prijavite."
+#: contrib/comments/models.py:72
+msgid "headline"
+msgstr "naslov"
+
+#: contrib/comments/models.py:73
+#: contrib/comments/models.py:95
+#: contrib/comments/models.py:165
+msgid "comment"
+msgstr "komentar"
+
+#: contrib/comments/models.py:74
+msgid "rating #1"
+msgstr "ocena #1"
+
+#: contrib/comments/models.py:75
+msgid "rating #2"
+msgstr "ocena #2"
+
+#: contrib/comments/models.py:76
+msgid "rating #3"
+msgstr "ocena #3"
+
+#: contrib/comments/models.py:77
+msgid "rating #4"
+msgstr "ocena #4"
-#: contrib/contenttypes/models.py:25
+#: contrib/comments/models.py:78
+msgid "rating #5"
+msgstr "ocena #5"
+
+#: contrib/comments/models.py:79
+msgid "rating #6"
+msgstr "ocena #6"
+
+#: contrib/comments/models.py:80
+msgid "rating #7"
+msgstr "ocena #7"
+
+#: contrib/comments/models.py:81
+msgid "rating #8"
+msgstr "ocena #8"
+
+#: contrib/comments/models.py:86
+msgid "is valid rating"
+msgstr "da li je ocena validna"
+
+#: contrib/comments/models.py:87
+#: contrib/comments/models.py:167
+msgid "date/time submitted"
+msgstr "datum/vreme slanja"
+
+#: contrib/comments/models.py:88
+#: contrib/comments/models.py:168
+msgid "is public"
+msgstr "da li je javni"
+
+#: contrib/comments/models.py:90
+msgid "is removed"
+msgstr "da li je obrisan"
+
+#: contrib/comments/models.py:90
+msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
+msgstr "Izaberite ako je komentar neodgovarajući. Biće ispisano \"Ovaj komentar je obrisan\" umesto teksta komentara."
+
+#: contrib/comments/models.py:96
+msgid "comments"
+msgstr "komentari"
+
+#: contrib/comments/models.py:128
+#: contrib/comments/models.py:199
+msgid "Content object"
+msgstr "Objekat sa sadržajem"
+
+#: contrib/comments/models.py:156
+#, python-format
+msgid ""
+"Posted by %(user)s at %(date)s\n"
+"\n"
+"%(comment)s\n"
+"\n"
+"http://%(domain)s%(url)s"
+msgstr ""
+"Poslao %(user)s dana %(date)s\n"
+"\n"
+"%(comment)s\n"
+"\n"
+"http://%(domain)s%(url)s"
+
+#: contrib/comments/models.py:166
+msgid "person's name"
+msgstr "ime"
+
+#: contrib/comments/models.py:169
+msgid "ip address"
+msgstr "ip adresa"
+
+#: contrib/comments/models.py:171
+msgid "approved by staff"
+msgstr "odobreno od strane moderatora"
+
+#: contrib/comments/models.py:175
+msgid "free comment"
+msgstr "slobodan komentar"
+
+#: contrib/comments/models.py:176
+msgid "free comments"
+msgstr "slobodni komentari"
+
+#: contrib/comments/models.py:227
+msgid "score"
+msgstr "rezultat"
+
+#: contrib/comments/models.py:228
+msgid "score date"
+msgstr "datum rezultata"
+
+#: contrib/comments/models.py:232
+msgid "karma score"
+msgstr "\"karma\" rezultat"
+
+#: contrib/comments/models.py:233
+msgid "karma scores"
+msgstr "\"karma\" rezultati"
+
+#: contrib/comments/models.py:237
+#, python-format
+msgid "%(score)d rating by %(user)s"
+msgstr "Ocena %(score)d od strane %(user)s"
+
+#: contrib/comments/models.py:254
+#, python-format
+msgid ""
+"This comment was flagged by %(user)s:\n"
+"\n"
+"%(text)s"
+msgstr ""
+"Ovaj komentar je oznaÄen od %(user)s:\n"
+"\n"
+"%(text)s"
+
+#: contrib/comments/models.py:262
+msgid "flag date"
+msgstr "datum oznaÄavanja"
+
+#: contrib/comments/models.py:266
+msgid "user flag"
+msgstr "korisniÄka oznaka"
+
+#: contrib/comments/models.py:267
+msgid "user flags"
+msgstr "korisniÄke oznake"
+
+#: contrib/comments/models.py:271
+#, python-format
+msgid "Flag by %r"
+msgstr "%r je oznaÄio"
+
+#: contrib/comments/models.py:277
+msgid "deletion date"
+msgstr "datum brisanja"
+
+#: contrib/comments/models.py:280
+msgid "moderator deletion"
+msgstr "brisanje od strane moderatora"
+
+#: contrib/comments/models.py:281
+msgid "moderator deletions"
+msgstr "brisanja od strane moderatora"
+
+#: contrib/comments/models.py:285
+#, python-format
+msgid "Moderator deletion by %r"
+msgstr "Obrisao moderator %r"
+
+#: contrib/comments/templates/comments/form.html:8
+msgid "Forgotten your password?"
+msgstr "Zaboravili ste lozinku?"
+
+#: contrib/comments/templates/comments/form.html:12
+msgid "Ratings"
+msgstr "Ocene"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Required"
+msgstr "Obavezan unos"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Optional"
+msgstr "Opcioni unos"
+
+#: contrib/comments/templates/comments/form.html:23
+msgid "Post a photo"
+msgstr "Pošaljite sliku"
+
+#: contrib/comments/templates/comments/form.html:28
+#: contrib/comments/templates/comments/freeform.html:5
+msgid "Comment:"
+msgstr "Komentar:"
+
+#: contrib/comments/templates/comments/form.html:35
+#: contrib/comments/templates/comments/freeform.html:10
+msgid "Preview comment"
+msgstr "Pregled komentara"
+
+#: contrib/comments/templates/comments/freeform.html:4
+msgid "Your name:"
+msgstr "Vaše ime:"
+
+# nesh: grrrrr, ala je rogobatno
+# petar: malo sam ga izmenio da bude jasniji
+#: contrib/comments/views/comments.py:76
+msgid "This rating is required because you've entered at least one other rating."
+msgstr "Ova ocena je obavezna pošto ste uneli bar jednu ocenu."
+
+#: contrib/comments/views/comments.py:160
+#, 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] ""
+"Ovaj komentar je poslat od korisnika koji je poslao manje od %(count)s komentara:\n"
+"\n"
+"%(text)s"
+msgstr[1] ""
+"Ovaj komentar je poslat od korisnika koji je poslao manje od %(count)s komentara:\n"
+"\n"
+"%(text)s"
+msgstr[2] ""
+"Ovaj komentar je poslat od korisnika koji je poslao manje od %(count)s komentara:\n"
+"\n"
+"%(text)s"
+
+# nesh: skethcy???
+# petar: Pojma nemam sta im to znaci
+#: contrib/comments/views/comments.py:165
+#, python-format
+msgid ""
+"This comment was posted by a sketchy user:\n"
+"\n"
+"%(text)s"
+msgstr ""
+"Komentar je poslat od strane \"sketchy\" korisnika:\n"
+"\n"
+"%(text)s"
+
+#: contrib/comments/views/comments.py:238
+#: contrib/comments/views/comments.py:331
+msgid "Only POSTs are allowed"
+msgstr "Jedino je POST dozvoljen"
+
+#: contrib/comments/views/comments.py:242
+#: contrib/comments/views/comments.py:335
+msgid "One or more of the required fields wasn't submitted"
+msgstr "Jedno ili više obaveznih polja nije poslato"
+
+#: contrib/comments/views/comments.py:246
+#: contrib/comments/views/comments.py:337
+msgid "Somebody tampered with the comment form (security violation)"
+msgstr "Neko je menjao formu za komentare (povreda sigurnosti)"
+
+#: contrib/comments/views/comments.py:256
+#: contrib/comments/views/comments.py:343
+msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
+msgstr "Forma komentara ima neispravni 'target' parametar -- ID objekta je neispravan"
+
+#: contrib/comments/views/comments.py:307
+#: contrib/comments/views/comments.py:372
+msgid "The comment form didn't provide either 'preview' or 'post'"
+msgstr "Ovaj komentar nije koristio ni 'preview' ni 'post'"
+
+#: contrib/comments/views/karma.py:21
+msgid "Anonymous users cannot vote"
+msgstr "Anonimni korisnici ne mogu da glasaju"
+
+#: contrib/comments/views/karma.py:25
+msgid "Invalid comment ID"
+msgstr "Neispravan ID komentara"
+
+#: contrib/comments/views/karma.py:27
+msgid "No voting for yourself"
+msgstr "Ne možete glasati sami za sebe"
+
+#: contrib/contenttypes/models.py:67
msgid "python model class name"
msgstr "naziv python modula"
-#: contrib/contenttypes/models.py:28
+#: contrib/contenttypes/models.py:71
msgid "content type"
msgstr "tip sadržaja"
-#: contrib/contenttypes/models.py:29
+#: contrib/contenttypes/models.py:72
msgid "content types"
msgstr "tipovi sadržaja"
-#: contrib/sessions/models.py:35
-msgid "session key"
-msgstr "kljuÄ sesije"
+#: contrib/flatpages/admin.py:9
+msgid "Advanced options"
+msgstr "Napredne opcije"
-#: contrib/sessions/models.py:36
-msgid "session data"
-msgstr "podaci sesije"
+#: contrib/flatpages/models.py:9
+msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgstr "Primer: '/o-nama/kontakt/'. Proverite da li ste uneli '/' na poÄetku i na kraju."
-#: contrib/sessions/models.py:37
-msgid "expire date"
-msgstr "datum prestanka važenja sesije"
+#: contrib/flatpages/models.py:10
+msgid "title"
+msgstr "naslov"
-#: contrib/sessions/models.py:41
-msgid "session"
-msgstr "sesija"
+#: contrib/flatpages/models.py:11
+msgid "content"
+msgstr "sadržaj"
-#: contrib/sessions/models.py:42
-msgid "sessions"
-msgstr "sesije"
+#: contrib/flatpages/models.py:12
+msgid "enable comments"
+msgstr "omogućite komentare"
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "ime domena"
+#: contrib/flatpages/models.py:13
+msgid "template name"
+msgstr "naziv templejta"
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "naziv"
+#: contrib/flatpages/models.py:14
+msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."
+msgstr "Primer: 'flatpages/kontakt-stranica.html'. Ako ne zadate sistem će koristiti 'flatpages/default.html'."
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "sajt"
+#: contrib/flatpages/models.py:15
+msgid "registration required"
+msgstr "samo za registrovane korisnike"
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "sajtovi"
+#: contrib/flatpages/models.py:15
+msgid "If this is checked, only logged-in users will be able to view the page."
+msgstr "Ako izaberete ovu opciju samo prijavljeni korisnici će imati pristup datoj strani."
-#: utils/translation.py:360
-msgid "DATE_FORMAT"
-msgstr "D, d.m.Y."
+#: contrib/flatpages/models.py:20
+msgid "flat page"
+msgstr "statiÄna strana"
-#: utils/translation.py:361
-msgid "DATETIME_FORMAT"
-msgstr "d.m.Y. H:i:s"
+#: contrib/flatpages/models.py:21
+msgid "flat pages"
+msgstr "statiÄne strane"
-#: utils/translation.py:362
-msgid "TIME_FORMAT"
-msgstr "H:i:s"
+# th/rd se ne koriste kod nas
+#: contrib/humanize/templatetags/humanize.py:19
+msgid "th"
+msgstr ""
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Ponedeljak"
+# vidi "th"
+#: contrib/humanize/templatetags/humanize.py:19
+msgid "st"
+msgstr ""
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Utorak"
+# vidi "th"
+#: contrib/humanize/templatetags/humanize.py:19
+msgid "nd"
+msgstr ""
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Sreda"
+# vidi "th"
+#: contrib/humanize/templatetags/humanize.py:19
+msgid "rd"
+msgstr ""
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "ÄŒetvrtak"
+#: contrib/humanize/templatetags/humanize.py:51
+#, python-format
+msgid "%(value).1f million"
+msgid_plural "%(value).1f million"
+msgstr[0] "%(value).1f milion"
+msgstr[1] "%(value).1f miliona"
+msgstr[2] "%(value).1f miliona"
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Petak"
+#: contrib/humanize/templatetags/humanize.py:54
+#, python-format
+msgid "%(value).1f billion"
+msgid_plural "%(value).1f billion"
+msgstr[0] "%(value).1f milijarda"
+msgstr[1] "%(value).1f milijarde"
+msgstr[2] "%(value).1f milijardi"
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Subota"
+#: contrib/humanize/templatetags/humanize.py:57
+#, python-format
+msgid "%(value).1f trillion"
+msgid_plural "%(value).1f trillion"
+msgstr[0] "%(value).1f bilion"
+msgstr[1] "%(value).1f biliona"
+msgstr[2] "%(value).1f biliona"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "one"
+msgstr "jedan"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "two"
+msgstr "dva"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "three"
+msgstr "tri"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "four"
+msgstr "Äetiri"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "five"
+msgstr "pet"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "six"
+msgstr "Å¡est"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "seven"
+msgstr "sedam"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "eight"
+msgstr "osam"
+
+#: contrib/humanize/templatetags/humanize.py:73
+msgid "nine"
+msgstr "devet"
+
+#: contrib/humanize/templatetags/humanize.py:93
+msgid "today"
+msgstr "danas"
+
+#: contrib/humanize/templatetags/humanize.py:95
+msgid "tomorrow"
+msgstr "sutra"
+
+#: contrib/humanize/templatetags/humanize.py:97
+msgid "yesterday"
+msgstr "juÄe"
+
+#: contrib/localflavor/ar/forms.py:27
+msgid "Enter a postal code in the format NNNN or ANNNNAAA."
+msgstr ""
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Nedelja"
+#: contrib/localflavor/ar/forms.py:49
+#: contrib/localflavor/br/forms.py:96
+#: contrib/localflavor/br/forms.py:135
+#: contrib/localflavor/pe/forms.py:23
+#: contrib/localflavor/pe/forms.py:51
+msgid "This field requires only numbers."
+msgstr "U ovo polje se mogu uneti samo brojevi."
-#: utils/dates.py:14
-msgid "January"
-msgstr "Januar"
+#: contrib/localflavor/ar/forms.py:50
+msgid "This field requires 7 or 8 digits."
+msgstr "Morate unete 7 ili 8 cifara."
-#: utils/dates.py:14
-msgid "February"
-msgstr "Februar"
+#: contrib/localflavor/ar/forms.py:79
+msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
+msgstr ""
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "March"
-msgstr "Mart"
+#: contrib/localflavor/ar/forms.py:80
+#, fuzzy
+msgid "Invalid CUIT."
+msgstr "Neispravan URL: %s"
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "April"
-msgstr "April"
+#: contrib/localflavor/at/at_states.py:5
+msgid "Burgenland"
+msgstr ""
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "May"
-msgstr "Maj"
+#: contrib/localflavor/at/at_states.py:6
+msgid "Carinthia"
+msgstr ""
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "June"
-msgstr "Jun"
+#: contrib/localflavor/at/at_states.py:7
+msgid "Lower Austria"
+msgstr ""
-#: utils/dates.py:15
-#: utils/dates.py:27
-msgid "July"
-msgstr "Jul"
+#: contrib/localflavor/at/at_states.py:8
+msgid "Upper Austria"
+msgstr ""
-#: utils/dates.py:15
-msgid "August"
-msgstr "Avgust"
+#: contrib/localflavor/at/at_states.py:9
+msgid "Salzburg"
+msgstr ""
-#: utils/dates.py:15
-msgid "September"
-msgstr "Septembar"
+#: contrib/localflavor/at/at_states.py:10
+#, fuzzy
+msgid "Styria"
+msgstr "Srpski"
-#: utils/dates.py:15
-msgid "October"
-msgstr "Oktobar"
+#: contrib/localflavor/at/at_states.py:11
+msgid "Tyrol"
+msgstr ""
-#: utils/dates.py:15
-msgid "November"
-msgstr "Novembar"
+#: contrib/localflavor/at/at_states.py:12
+msgid "Vorarlberg"
+msgstr ""
-#: utils/dates.py:16
-msgid "December"
-msgstr "Decembar"
+#: contrib/localflavor/at/at_states.py:13
+msgid "Vienna"
+msgstr ""
-#: utils/dates.py:19
-msgid "jan"
-msgstr "jan"
+#: contrib/localflavor/at/forms.py:20
+#: contrib/localflavor/ch/forms.py:16
+#: contrib/localflavor/no/forms.py:12
+#, fuzzy
+msgid "Enter a zip code in the format XXXX."
+msgstr "Unesite ispravno vreme u HH:MM formatu."
-#: utils/dates.py:19
-msgid "feb"
-msgstr "feb"
+#: contrib/localflavor/at/forms.py:48
+msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
+msgstr ""
-#: utils/dates.py:19
-msgid "mar"
-msgstr "mar"
+#: contrib/localflavor/au/forms.py:16
+msgid "Enter a 4 digit post code."
+msgstr ""
-#: utils/dates.py:19
-msgid "apr"
-msgstr "apr"
+#: contrib/localflavor/br/forms.py:21
+#, fuzzy
+msgid "Enter a zip code in the format XXXXX-XXX."
+msgstr "Unesite ispravno vreme u HH:MM formatu."
-#: utils/dates.py:19
-msgid "may"
-msgstr "maj"
+# nesh: tel. brojevi su u ameriÄkom formatu, ovo se ionako neće koristiti u i18n delu
+#: contrib/localflavor/br/forms.py:30
+#, fuzzy
+msgid "Phone numbers must be in XX-XXXX-XXXX format."
+msgstr "Telefonski brojevi moraju biti u formatu XXX-XXX-XXXX. \"%s\" je neispravan."
-#: utils/dates.py:19
-msgid "jun"
-msgstr "jun"
+#: contrib/localflavor/br/forms.py:58
+msgid "Select a valid brazilian state. That state is not one of the available states."
+msgstr ""
-#: utils/dates.py:20
-msgid "jul"
-msgstr "jul"
+#: contrib/localflavor/br/forms.py:94
+msgid "Invalid CPF number."
+msgstr ""
-#: utils/dates.py:20
-msgid "aug"
+#: contrib/localflavor/br/forms.py:95
+msgid "This field requires at most 11 digits or 14 characters."
+msgstr ""
+
+#: contrib/localflavor/br/forms.py:134
+msgid "Invalid CNPJ number."
+msgstr ""
+
+#: contrib/localflavor/br/forms.py:136
+#, fuzzy
+msgid "This field requires at least 14 digits"
+msgstr "Obavezno polje."
+
+#: contrib/localflavor/ca/forms.py:17
+#, fuzzy
+msgid "Enter a postal code in the format XXX XXX."
+msgstr "Unesite ispravno vreme u HH:MM formatu."
+
+#: contrib/localflavor/ca/forms.py:88
+msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:5
+msgid "Aargau"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:6
+msgid "Appenzell Innerrhoden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:7
+msgid "Appenzell Ausserrhoden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:8
+msgid "Basel-Stadt"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:9
+msgid "Basel-Land"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:10
+#, fuzzy
+msgid "Berne"
+msgstr "korisniÄko ime"
+
+#: contrib/localflavor/ch/ch_states.py:11
+msgid "Fribourg"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:12
+msgid "Geneva"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:13
+#, fuzzy
+msgid "Glarus"
+msgstr "Grupe"
+
+#: contrib/localflavor/ch/ch_states.py:14
+msgid "Graubuenden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:15
+msgid "Jura"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:16
+#, fuzzy
+msgid "Lucerne"
+msgstr "korisniÄko ime"
+
+#: contrib/localflavor/ch/ch_states.py:17
+msgid "Neuchatel"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:18
+msgid "Nidwalden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:19
+msgid "Obwalden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:20
+msgid "Schaffhausen"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:21
+msgid "Schwyz"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:22
+msgid "Solothurn"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:23
+msgid "St. Gallen"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:24
+#, fuzzy
+msgid "Thurgau"
+msgstr "ÄŒetvrtak"
+
+#: contrib/localflavor/ch/ch_states.py:25
+msgid "Ticino"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:26
+msgid "Uri"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:27
+msgid "Valais"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:28
+msgid "Vaud"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:29
+#, fuzzy
+msgid "Zug"
msgstr "avg"
-#: utils/dates.py:20
-msgid "sep"
-msgstr "sep"
+#: contrib/localflavor/ch/ch_states.py:30
+msgid "Zurich"
+msgstr ""
-#: utils/dates.py:20
-msgid "oct"
-msgstr "okt"
+#: contrib/localflavor/ch/forms.py:64
+msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format."
+msgstr ""
-#: utils/dates.py:20
-msgid "nov"
-msgstr "nov"
+#: contrib/localflavor/cl/forms.py:29
+#, fuzzy
+msgid "Enter a valid Chilean RUT."
+msgstr "Unesite ispravno ime fajla."
-#: utils/dates.py:20
-msgid "dec"
-msgstr "dec"
+#: contrib/localflavor/cl/forms.py:30
+msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
+msgstr ""
-#: utils/dates.py:27
-msgid "Jan."
+#: contrib/localflavor/cl/forms.py:31
+#, fuzzy
+msgid "The Chilean RUT is not valid."
+msgstr "Neispravno polje."
+
+#: contrib/localflavor/de/de_states.py:5
+msgid "Baden-Wuerttemberg"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:6
+msgid "Bavaria"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:7
+#, fuzzy
+msgid "Berlin"
+msgstr "Brazilski"
+
+#: contrib/localflavor/de/de_states.py:8
+msgid "Brandenburg"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:9
+msgid "Bremen"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:10
+msgid "Hamburg"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:11
+#, fuzzy
+msgid "Hessen"
+msgstr "poruka"
+
+#: contrib/localflavor/de/de_states.py:12
+msgid "Mecklenburg-Western Pomerania"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:13
+msgid "Lower Saxony"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:14
+msgid "North Rhine-Westphalia"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:15
+msgid "Rhineland-Palatinate"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:16
+msgid "Saarland"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:17
+msgid "Saxony"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:18
+msgid "Saxony-Anhalt"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:19
+msgid "Schleswig-Holstein"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:20
+msgid "Thuringia"
+msgstr ""
+
+#: contrib/localflavor/de/forms.py:14
+#: contrib/localflavor/fi/forms.py:12
+#: contrib/localflavor/fr/forms.py:15
+#, fuzzy
+msgid "Enter a zip code in the format XXXXX."
+msgstr "Unesite ispravno vreme u HH:MM formatu."
+
+#: contrib/localflavor/de/forms.py:41
+msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format."
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:5
+msgid "Arava"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:6
+msgid "Albacete"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:7
+msgid "Alacant"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:8
+msgid "Almeria"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:9
+msgid "Avila"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:10
+msgid "Badajoz"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:11
+msgid "Illes Balears"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:12
+msgid "Barcelona"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:13
+msgid "Burgos"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:14
+msgid "Caceres"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:15
+msgid "Cadiz"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:16
+msgid "Castello"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:17
+msgid "Ciudad Real"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:18
+msgid "Cordoba"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:19
+msgid "A Coruna"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:20
+msgid "Cuenca"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:21
+msgid "Girona"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:22
+#, fuzzy
+msgid "Granada"
+msgstr "NemaÄki"
+
+#: contrib/localflavor/es/es_provinces.py:23
+msgid "Guadalajara"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:24
+msgid "Guipuzkoa"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:25
+msgid "Huelva"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:26
+#, fuzzy
+msgid "Huesca"
+msgstr "Utorak"
+
+#: contrib/localflavor/es/es_provinces.py:27
+#, fuzzy
+msgid "Jaen"
msgstr "Jan."
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "Feb."
+#: contrib/localflavor/es/es_provinces.py:28
+msgid "Leon"
+msgstr ""
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "Avg."
+#: contrib/localflavor/es/es_provinces.py:29
+msgid "Lleida"
+msgstr ""
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "Sept."
+#: contrib/localflavor/es/es_provinces.py:30
+#: contrib/localflavor/es/es_regions.py:17
+msgid "La Rioja"
+msgstr ""
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "Okt."
+#: contrib/localflavor/es/es_provinces.py:31
+msgid "Lugo"
+msgstr ""
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "Nov."
+#: contrib/localflavor/es/es_provinces.py:32
+#: contrib/localflavor/es/es_regions.py:18
+msgid "Madrid"
+msgstr ""
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "Dec."
+#: contrib/localflavor/es/es_provinces.py:33
+msgid "Malaga"
+msgstr ""
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "godina"
-msgstr[1] "godine"
-msgstr[2] "godina"
+#: contrib/localflavor/es/es_provinces.py:34
+msgid "Murcia"
+msgstr ""
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mesec"
-msgstr[1] "meseca"
-msgstr[2] "meseci"
+#: contrib/localflavor/es/es_provinces.py:35
+msgid "Navarre"
+msgstr ""
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "nedelja"
-msgstr[1] "nedelje"
-msgstr[2] "nedelja"
+#: contrib/localflavor/es/es_provinces.py:36
+msgid "Ourense"
+msgstr ""
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "dan"
-msgstr[1] "dana"
-msgstr[2] "dana"
+#: contrib/localflavor/es/es_provinces.py:37
+msgid "Asturias"
+msgstr ""
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "sat"
-msgstr[1] "sata"
-msgstr[2] "sati"
+#: contrib/localflavor/es/es_provinces.py:38
+#, fuzzy
+msgid "Palencia"
+msgstr "Galski"
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minut"
-msgstr[1] "munuta"
-msgstr[2] "minuta"
+#: contrib/localflavor/es/es_provinces.py:39
+msgid "Las Palmas"
+msgstr ""
-#: conf/global_settings.py:37
-msgid "Bengali"
-msgstr "Bengalski"
+#: contrib/localflavor/es/es_provinces.py:40
+msgid "Pontevedra"
+msgstr ""
-#: conf/global_settings.py:38
-msgid "Czech"
+#: contrib/localflavor/es/es_provinces.py:41
+msgid "Salamanca"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:42
+msgid "Santa Cruz de Tenerife"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:43
+#: contrib/localflavor/es/es_regions.py:11
+msgid "Cantabria"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:44
+#, fuzzy
+msgid "Segovia"
+msgstr "SlovenaÄki"
+
+#: contrib/localflavor/es/es_provinces.py:45
+msgid "Seville"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:46
+#, fuzzy
+msgid "Soria"
+msgstr "Srpski"
+
+#: contrib/localflavor/es/es_provinces.py:47
+msgid "Tarragona"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:48
+msgid "Teruel"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:49
+msgid "Toledo"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:50
+#, fuzzy
+msgid "Valencia"
+msgstr "Galski"
+
+#: contrib/localflavor/es/es_provinces.py:51
+msgid "Valladolid"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:52
+msgid "Bizkaia"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:53
+msgid "Zamora"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:54
+msgid "Zaragoza"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:55
+msgid "Ceuta"
+msgstr ""
+
+#: contrib/localflavor/es/es_provinces.py:56
+msgid "Melilla"
+msgstr ""
+
+#: contrib/localflavor/es/es_regions.py:5
+msgid "Andalusia"
+msgstr ""
+
+#: contrib/localflavor/es/es_regions.py:6
+msgid "Aragon"
+msgstr ""
+
+#: contrib/localflavor/es/es_regions.py:7
+msgid "Principality of Asturias"
+msgstr ""
+
+#: contrib/localflavor/es/es_regions.py:8
+msgid "Balearic Islands"
+msgstr ""
+
+#: contrib/localflavor/es/es_regions.py:9
+msgid "Basque Country"
+msgstr ""
+
+#: contrib/localflavor/es/es_regions.py:10
+msgid "Canary Islands"
+msgstr ""
+
+#: contrib/localflavor/es/es_regions.py:12
+msgid "Castile-La Mancha"
+msgstr ""
+
+#: contrib/localflavor/es/es_regions.py:13
+msgid "Castile and Leon"
+msgstr ""
+
+#: contrib/localflavor/es/es_regions.py:14
+#, fuzzy
+msgid "Catalonia"
+msgstr "Italijanski"
+
+#: contrib/localflavor/es/es_regions.py:15
+msgid "Extremadura"
+msgstr ""
+
+#: contrib/localflavor/es/es_regions.py:16
+#, fuzzy
+msgid "Galicia"
+msgstr "Galski"
+
+#: contrib/localflavor/es/es_regions.py:19
+msgid "Region of Murcia"
+msgstr ""
+
+#: contrib/localflavor/es/es_regions.py:20
+msgid "Foral Community of Navarre"
+msgstr ""
+
+#: contrib/localflavor/es/es_regions.py:21
+msgid "Valencian Community"
+msgstr ""
+
+#: contrib/localflavor/es/forms.py:19
+msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
+msgstr ""
+
+#: contrib/localflavor/es/forms.py:39
+msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX."
+msgstr ""
+
+#: contrib/localflavor/es/forms.py:66
+#, fuzzy
+msgid "Please enter a valid NIF, NIE, or CIF."
+msgstr "Unesite ispravnu IP adresu."
+
+#: contrib/localflavor/es/forms.py:67
+#, fuzzy
+msgid "Please enter a valid NIF or NIE."
+msgstr "Unesite ispravan %s."
+
+#: contrib/localflavor/es/forms.py:68
+msgid "Invalid checksum for NIF."
+msgstr ""
+
+#: contrib/localflavor/es/forms.py:69
+msgid "Invalid checksum for NIE."
+msgstr ""
+
+#: contrib/localflavor/es/forms.py:70
+msgid "Invalid checksum for CIF."
+msgstr ""
+
+#: contrib/localflavor/es/forms.py:142
+msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
+msgstr ""
+
+#: contrib/localflavor/es/forms.py:143
+msgid "Invalid checksum for bank account number."
+msgstr ""
+
+#: contrib/localflavor/fi/forms.py:28
+#, fuzzy
+msgid "Enter a valid Finnish social security number."
+msgstr "Unesite ispravno ime fajla."
+
+#: contrib/localflavor/in_/forms.py:14
+#, fuzzy
+msgid "Enter a zip code in the format XXXXXXX."
+msgstr "Unesite ispravno vreme u HH:MM formatu."
+
+#: contrib/localflavor/is_/forms.py:17
+msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
+msgstr ""
+
+#: contrib/localflavor/is_/forms.py:18
+msgid "The Icelandic identification number is not valid."
+msgstr ""
+
+#: contrib/localflavor/it/forms.py:14
+#, fuzzy
+msgid "Enter a valid zip code."
+msgstr "Unesite ispravno ime fajla."
+
+#: contrib/localflavor/it/forms.py:43
+#, fuzzy
+msgid "Enter a valid Social Security number."
+msgstr "Unesite ispravno ime fajla."
+
+#: contrib/localflavor/it/forms.py:68
+#, fuzzy
+msgid "Enter a valid VAT number."
+msgstr "Unesite ispravno ime fajla."
+
+#: contrib/localflavor/jp/forms.py:17
+msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:4
+msgid "Hokkaido"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:5
+msgid "Aomori"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:6
+msgid "Iwate"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:7
+msgid "Miyagi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:8
+msgid "Akita"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:9
+msgid "Yamagata"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:10
+msgid "Fukushima"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:11
+msgid "Ibaraki"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:12
+msgid "Tochigi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:13
+msgid "Gunma"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:14
+msgid "Saitama"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:15
+msgid "Chiba"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:16
+msgid "Tokyo"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:17
+msgid "Kanagawa"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:18
+msgid "Yamanashi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:19
+msgid "Nagano"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:20
+msgid "Niigata"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:21
+msgid "Toyama"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:22
+msgid "Ishikawa"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:23
+msgid "Fukui"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:24
+msgid "Gifu"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:25
+msgid "Shizuoka"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:26
+msgid "Aichi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:27
+msgid "Mie"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:28
+msgid "Shiga"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:29
+msgid "Kyoto"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:30
+msgid "Osaka"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:31
+msgid "Hyogo"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:32
+msgid "Nara"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:33
+msgid "Wakayama"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:34
+msgid "Tottori"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:35
+#, fuzzy
+msgid "Shimane"
+msgstr "Izmenite"
+
+#: contrib/localflavor/jp/jp_prefectures.py:36
+msgid "Okayama"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:37
+msgid "Hiroshima"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:38
+msgid "Yamaguchi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:39
+msgid "Tokushima"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:40
+msgid "Kagawa"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:41
+#, fuzzy
+msgid "Ehime"
+msgstr "Vreme"
+
+#: contrib/localflavor/jp/jp_prefectures.py:42
+msgid "Kochi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:43
+msgid "Fukuoka"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:44
+msgid "Saga"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:45
+msgid "Nagasaki"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:46
+msgid "Kumamoto"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:47
+msgid "Oita"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:48
+msgid "Miyazaki"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:49
+msgid "Kagoshima"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:50
+msgid "Okinawa"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:12
+msgid "Aguascalientes"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:13
+msgid "Baja California"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:14
+msgid "Baja California Sur"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:15
+#, fuzzy
+msgid "Campeche"
msgstr "Češki"
-#: conf/global_settings.py:39
-msgid "Welsh"
-msgstr "Welšski"
+#: contrib/localflavor/mx/mx_states.py:16
+msgid "Chihuahua"
+msgstr ""
-#: conf/global_settings.py:40
-msgid "Danish"
-msgstr "Danski"
+#: contrib/localflavor/mx/mx_states.py:17
+msgid "Chiapas"
+msgstr ""
-#: conf/global_settings.py:41
-msgid "German"
+#: contrib/localflavor/mx/mx_states.py:18
+msgid "Coahuila"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:19
+msgid "Colima"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:20
+msgid "Distrito Federal"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:21
+msgid "Durango"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:22
+msgid "Guerrero"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:23
+msgid "Guanajuato"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:24
+msgid "Hidalgo"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:25
+msgid "Jalisco"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:26
+msgid "Estado de México"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:27
+msgid "Michoacán"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:28
+msgid "Morelos"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:29
+msgid "Nayarit"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:30
+msgid "Nuevo León"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:31
+msgid "Oaxaca"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:32
+msgid "Puebla"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:33
+msgid "Querétaro"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:34
+msgid "Quintana Roo"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:35
+#, fuzzy
+msgid "Sinaloa"
+msgstr "SlovaÄki"
+
+#: contrib/localflavor/mx/mx_states.py:36
+msgid "San Luis Potosí"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:37
+msgid "Sonora"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:38
+msgid "Tabasco"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:39
+msgid "Tamaulipas"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:40
+msgid "Tlaxcala"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:41
+msgid "Veracruz"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:42
+msgid "Yucatán"
+msgstr ""
+
+#: contrib/localflavor/mx/mx_states.py:43
+msgid "Zacatecas"
+msgstr ""
+
+#: contrib/localflavor/nl/forms.py:21
+#, fuzzy
+msgid "Enter a valid postal code"
+msgstr "Unesite ispravnu e-mail adresu."
+
+#: contrib/localflavor/nl/forms.py:52
+#, fuzzy
+msgid "Enter a valid phone number"
+msgstr "Unesite celi broj."
+
+#: contrib/localflavor/nl/forms.py:78
+#, fuzzy
+msgid "Enter a valid SoFi number"
+msgstr "Unesite ispravno ime fajla."
+
+#: contrib/localflavor/nl/nl_provinces.py:4
+#, fuzzy
+msgid "Drente"
+msgstr "Obrišite"
+
+#: contrib/localflavor/nl/nl_provinces.py:5
+msgid "Flevoland"
+msgstr ""
+
+#: contrib/localflavor/nl/nl_provinces.py:6
+msgid "Friesland"
+msgstr ""
+
+#: contrib/localflavor/nl/nl_provinces.py:7
+#, fuzzy
+msgid "Gelderland"
msgstr "NemaÄki"
-#: conf/global_settings.py:42
-msgid "Greek"
-msgstr "GrÄki"
+#: contrib/localflavor/nl/nl_provinces.py:8
+msgid "Groningen"
+msgstr ""
-#: conf/global_settings.py:43
-msgid "English"
-msgstr "Engleski"
+#: contrib/localflavor/nl/nl_provinces.py:9
+msgid "Limburg"
+msgstr ""
-#: conf/global_settings.py:44
-msgid "Spanish"
-msgstr "Å panski"
+#: contrib/localflavor/nl/nl_provinces.py:10
+msgid "Noord-Brabant"
+msgstr ""
-#: conf/global_settings.py:45
-msgid "French"
+#: contrib/localflavor/nl/nl_provinces.py:11
+msgid "Noord-Holland"
+msgstr ""
+
+#: contrib/localflavor/nl/nl_provinces.py:12
+msgid "Overijssel"
+msgstr ""
+
+#: contrib/localflavor/nl/nl_provinces.py:13
+#, fuzzy
+msgid "Utrecht"
msgstr "Francuski"
-#: conf/global_settings.py:46
-msgid "Galician"
-msgstr "Galski"
+#: contrib/localflavor/nl/nl_provinces.py:14
+#, fuzzy
+msgid "Zeeland"
+msgstr "Islandski"
-#: conf/global_settings.py:47
-msgid "Hungarian"
-msgstr "Mađarski"
+#: contrib/localflavor/nl/nl_provinces.py:15
+msgid "Zuid-Holland"
+msgstr ""
-#: conf/global_settings.py:48
-msgid "Hebrew"
-msgstr "Hebrejski"
+#: contrib/localflavor/no/forms.py:33
+#, fuzzy
+msgid "Enter a valid Norwegian social security number."
+msgstr "Unesite ispravan decimalni broj."
-#: conf/global_settings.py:49
-msgid "Icelandic"
-msgstr "Islandski"
+#: contrib/localflavor/pe/forms.py:24
+#, fuzzy
+msgid "This field requires 8 digits."
+msgstr "Obavezno polje."
-#: conf/global_settings.py:50
-msgid "Italian"
-msgstr "Italijanski"
+#: contrib/localflavor/pe/forms.py:52
+#, fuzzy
+msgid "This field requires 11 digits."
+msgstr "Obavezno polje."
-#: conf/global_settings.py:51
-msgid "Japanese"
-msgstr "Japanski"
+#: contrib/localflavor/pl/forms.py:39
+msgid "National Identification Number consists of 11 digits."
+msgstr ""
-#: conf/global_settings.py:52
-msgid "Dutch"
-msgstr "Holandski"
+#: contrib/localflavor/pl/forms.py:40
+msgid "Wrong checksum for the National Identification Number."
+msgstr ""
-#: conf/global_settings.py:53
-msgid "Norwegian"
-msgstr "Norveški"
+#: contrib/localflavor/pl/forms.py:72
+msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
+msgstr ""
-#: conf/global_settings.py:54
-msgid "Brazilian"
-msgstr "Brazilski"
+#: contrib/localflavor/pl/forms.py:73
+msgid "Wrong checksum for the Tax Number (NIP)."
+msgstr ""
-#: conf/global_settings.py:55
-msgid "Romanian"
+#: contrib/localflavor/pl/forms.py:112
+msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
+msgstr ""
+
+#: contrib/localflavor/pl/forms.py:113
+msgid "Wrong checksum for the National Business Register Number (REGON)."
+msgstr ""
+
+#: contrib/localflavor/pl/forms.py:156
+#, fuzzy
+msgid "Enter a postal code in the format XX-XXX."
+msgstr "Unesite ispravno vreme u HH:MM formatu."
+
+#: contrib/localflavor/pl/pl_voivodeships.py:8
+msgid "Lower Silesia"
+msgstr ""
+
+#: contrib/localflavor/pl/pl_voivodeships.py:9
+msgid "Kuyavia-Pomerania"
+msgstr ""
+
+#: contrib/localflavor/pl/pl_voivodeships.py:10
+msgid "Lublin"
+msgstr ""
+
+#: contrib/localflavor/pl/pl_voivodeships.py:11
+msgid "Lubusz"
+msgstr ""
+
+#: contrib/localflavor/pl/pl_voivodeships.py:12
+msgid "Lodz"
+msgstr ""
+
+#: contrib/localflavor/pl/pl_voivodeships.py:13
+msgid "Lesser Poland"
+msgstr ""
+
+#: contrib/localflavor/pl/pl_voivodeships.py:14
+msgid "Masovia"
+msgstr ""
+
+#: contrib/localflavor/pl/pl_voivodeships.py:15
+#, fuzzy
+msgid "Opole"
+msgstr "Opcioni unos"
+
+#: contrib/localflavor/pl/pl_voivodeships.py:16
+msgid "Subcarpatia"
+msgstr ""
+
+#: contrib/localflavor/pl/pl_voivodeships.py:17
+msgid "Podlasie"
+msgstr ""
+
+#: contrib/localflavor/pl/pl_voivodeships.py:18
+#, fuzzy
+msgid "Pomerania"
msgstr "Rumunski"
-#: conf/global_settings.py:56
-msgid "Russian"
-msgstr "Ruski"
+#: contrib/localflavor/pl/pl_voivodeships.py:19
+#, fuzzy
+msgid "Silesia"
+msgstr "SlovenaÄki"
-#: conf/global_settings.py:57
-msgid "Slovak"
-msgstr "SlovaÄki"
+#: contrib/localflavor/pl/pl_voivodeships.py:20
+msgid "Swietokrzyskie"
+msgstr ""
-#: conf/global_settings.py:58
-msgid "Slovenian"
+#: contrib/localflavor/pl/pl_voivodeships.py:21
+msgid "Warmia-Masuria"
+msgstr ""
+
+#: contrib/localflavor/pl/pl_voivodeships.py:22
+msgid "Greater Poland"
+msgstr ""
+
+#: contrib/localflavor/pl/pl_voivodeships.py:23
+msgid "West Pomerania"
+msgstr ""
+
+#: contrib/localflavor/ro/forms.py:19
+#, fuzzy
+msgid "Enter a valid CIF."
+msgstr "Unesite ispravno ime fajla."
+
+#: contrib/localflavor/ro/forms.py:56
+#, fuzzy
+msgid "Enter a valid CNP."
+msgstr "Unesite ispravno ime fajla."
+
+#: contrib/localflavor/ro/forms.py:141
+msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
+msgstr ""
+
+# nesh: tel. brojevi su u ameriÄkom formatu, ovo se ionako neće koristiti u i18n delu
+#: contrib/localflavor/ro/forms.py:171
+#, fuzzy
+msgid "Phone numbers must be in XXXX-XXXXXX format."
+msgstr "Telefonski brojevi moraju biti u formatu XXX-XXX-XXXX. \"%s\" je neispravan."
+
+#: contrib/localflavor/ro/forms.py:194
+#, fuzzy
+msgid "Enter a valid postal code in the format XXXXXX"
+msgstr "Unesite ispravno vreme u HH:MM formatu."
+
+#: contrib/localflavor/sk/forms.py:30
+msgid "Enter a postal code in the format XXXXX or XXX XX."
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:8
+msgid "Banska Bystrica"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:9
+msgid "Banska Stiavnica"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:10
+msgid "Bardejov"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:11
+msgid "Banovce nad Bebravou"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:12
+msgid "Brezno"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:13
+msgid "Bratislava I"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:14
+msgid "Bratislava II"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:15
+msgid "Bratislava III"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:16
+msgid "Bratislava IV"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:17
+msgid "Bratislava V"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:18
+msgid "Bytca"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:19
+msgid "Cadca"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:20
+msgid "Detva"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:21
+msgid "Dolny Kubin"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:22
+msgid "Dunajska Streda"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:23
+#, fuzzy
+msgid "Galanta"
+msgstr "Galski"
+
+#: contrib/localflavor/sk/sk_districts.py:24
+#, fuzzy
+msgid "Gelnica"
+msgstr "Galski"
+
+#: contrib/localflavor/sk/sk_districts.py:25
+msgid "Hlohovec"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:26
+msgid "Humenne"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:27
+msgid "Ilava"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:28
+msgid "Kezmarok"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:29
+msgid "Komarno"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:30
+msgid "Kosice I"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:31
+msgid "Kosice II"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:32
+msgid "Kosice III"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:33
+msgid "Kosice IV"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:34
+msgid "Kosice - okolie"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:35
+msgid "Krupina"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:36
+msgid "Kysucke Nove Mesto"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:37
+msgid "Levice"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:38
+msgid "Levoca"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:39
+msgid "Liptovsky Mikulas"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:40
+msgid "Lucenec"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:41
+msgid "Malacky"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:42
+#, fuzzy
+msgid "Martin"
+msgstr "Ocene"
+
+#: contrib/localflavor/sk/sk_districts.py:43
+msgid "Medzilaborce"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:44
+msgid "Michalovce"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:45
+msgid "Myjava"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:46
+msgid "Namestovo"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:47
+msgid "Nitra"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:48
+msgid "Nove Mesto nad Vahom"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:49
+msgid "Nove Zamky"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:50
+msgid "Partizanske"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:51
+msgid "Pezinok"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:52
+msgid "Piestany"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:53
+msgid "Poltar"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:54
+msgid "Poprad"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:55
+msgid "Povazska Bystrica"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:56
+msgid "Presov"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:57
+msgid "Prievidza"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:58
+msgid "Puchov"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:59
+msgid "Revuca"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:60
+msgid "Rimavska Sobota"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:61
+msgid "Roznava"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:62
+msgid "Ruzomberok"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:63
+msgid "Sabinov"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:64
+msgid "Senec"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:65
+#, fuzzy
+msgid "Senica"
msgstr "SlovenaÄki"
-#: conf/global_settings.py:59
-msgid "Serbian"
-msgstr "Srpski"
+#: contrib/localflavor/sk/sk_districts.py:66
+#, fuzzy
+msgid "Skalica"
+msgstr "Galski"
-#: conf/global_settings.py:60
-msgid "Swedish"
-msgstr "Å vedski"
+#: contrib/localflavor/sk/sk_districts.py:67
+msgid "Snina"
+msgstr ""
-#: conf/global_settings.py:61
-msgid "Ukrainian"
-msgstr "Ukrajinski"
+#: contrib/localflavor/sk/sk_districts.py:68
+msgid "Sobrance"
+msgstr ""
-#: conf/global_settings.py:62
-msgid "Simplified Chinese"
-msgstr "Kineski (pojednostavljen)"
+#: contrib/localflavor/sk/sk_districts.py:69
+msgid "Spisska Nova Ves"
+msgstr ""
-#: conf/global_settings.py:63
-msgid "Traditional Chinese"
-msgstr "Tradicionalni Kineski"
+#: contrib/localflavor/sk/sk_districts.py:70
+msgid "Stara Lubovna"
+msgstr ""
-# nesh: Ovo je opis za stari SlugField
-#: core/validators.py:60
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Ovo polje može sadržati samo slova, brojeve i donju crtu (_)."
+#: contrib/localflavor/sk/sk_districts.py:71
+msgid "Stropkov"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:72
+msgid "Svidnik"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:73
+msgid "Sala"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:74
+msgid "Topolcany"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:75
+msgid "Trebisov"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:76
+#, fuzzy
+msgid "Trencin"
+msgstr "Francuski"
+
+#: contrib/localflavor/sk/sk_districts.py:77
+msgid "Trnava"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:78
+msgid "Turcianske Teplice"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:79
+msgid "Tvrdosin"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:80
+msgid "Velky Krtis"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:81
+msgid "Vranov nad Toplou"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:82
+msgid "Zlate Moravce"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:83
+msgid "Zvolen"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:84
+msgid "Zarnovica"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:85
+msgid "Ziar nad Hronom"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_districts.py:86
+msgid "Zilina"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_regions.py:8
+msgid "Banska Bystrica region"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_regions.py:9
+msgid "Bratislava region"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_regions.py:10
+msgid "Kosice region"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_regions.py:11
+msgid "Nitra region"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_regions.py:12
+msgid "Presov region"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_regions.py:13
+msgid "Trencin region"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_regions.py:14
+msgid "Trnava region"
+msgstr ""
+
+#: contrib/localflavor/sk/sk_regions.py:15
+msgid "Zilina region"
+msgstr ""
+
+#: contrib/localflavor/uk/forms.py:21
+#, fuzzy
+msgid "Enter a valid postcode."
+msgstr "Unesite ispravno ime fajla."
+
+#: contrib/localflavor/uk/uk_regions.py:11
+msgid "Bedfordshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:12
+msgid "Buckinghamshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:14
+msgid "Cheshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:15
+msgid "Cornwall and Isles of Scilly"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:16
+msgid "Cumbria"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:17
+msgid "Derbyshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:18
+msgid "Devon"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:19
+msgid "Dorset"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:20
+msgid "Durham"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:21
+msgid "East Sussex"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:22
+msgid "Essex"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:23
+msgid "Gloucestershire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:24
+msgid "Greater London"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:25
+msgid "Greater Manchester"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:26
+msgid "Hampshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:27
+msgid "Hertfordshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:28
+msgid "Kent"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:29
+msgid "Lancashire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:30
+msgid "Leicestershire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:31
+msgid "Lincolnshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:32
+msgid "Merseyside"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:33
+msgid "Norfolk"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:34
+msgid "North Yorkshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:35
+msgid "Northamptonshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:36
+msgid "Northumberland"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:37
+msgid "Nottinghamshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:38
+msgid "Oxfordshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:39
+msgid "Shropshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:40
+msgid "Somerset"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:41
+msgid "South Yorkshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:42
+msgid "Staffordshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:43
+msgid "Suffolk"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:44
+#, fuzzy
+msgid "Surrey"
+msgstr "Trenutno:"
+
+#: contrib/localflavor/uk/uk_regions.py:45
+msgid "Tyne and Wear"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:46
+msgid "Warwickshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:47
+msgid "West Midlands"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:48
+msgid "West Sussex"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:49
+msgid "West Yorkshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:50
+msgid "Wiltshire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:51
+msgid "Worcestershire"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:55
+msgid "County Antrim"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:56
+msgid "County Armagh"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:57
+msgid "County Down"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:58
+msgid "County Fermanagh"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:59
+msgid "County Londonderry"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:60
+msgid "County Tyrone"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:64
+msgid "Clwyd"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:65
+msgid "Dyfed"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:66
+msgid "Gwent"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:67
+msgid "Gwynedd"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:68
+msgid "Mid Glamorgan"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:69
+msgid "Powys"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:70
+msgid "South Glamorgan"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:71
+msgid "West Glamorgan"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:75
+#, fuzzy
+msgid "Borders"
+msgstr "Red:"
+
+#: contrib/localflavor/uk/uk_regions.py:76
+msgid "Central Scotland"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:77
+msgid "Dumfries and Galloway"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:78
+msgid "Fife"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:79
+#, fuzzy
+msgid "Grampian"
+msgstr "NemaÄki"
+
+#: contrib/localflavor/uk/uk_regions.py:80
+msgid "Highland"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:81
+#, fuzzy
+msgid "Lothian"
+msgstr "Prijavite se"
+
+#: contrib/localflavor/uk/uk_regions.py:82
+msgid "Orkney Islands"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:83
+msgid "Shetland Islands"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:84
+msgid "Strathclyde"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:85
+msgid "Tayside"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:86
+msgid "Western Isles"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:90
+msgid "England"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:91
+msgid "Northern Ireland"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:92
+msgid "Scotland"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:93
+msgid "Wales"
+msgstr ""
+
+#: contrib/localflavor/us/forms.py:16
+msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
+msgstr ""
+
+#: contrib/localflavor/us/forms.py:54
+msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
+msgstr ""
+
+#: contrib/localflavor/za/forms.py:20
+#, fuzzy
+msgid "Enter a valid South African ID number"
+msgstr "Unesite ispravno ime fajla."
+
+#: contrib/localflavor/za/forms.py:54
+#, fuzzy
+msgid "Enter a valid South African postal code"
+msgstr "Unesite ispravno ime fajla."
+
+#: contrib/localflavor/za/za_provinces.py:4
+msgid "Eastern Cape"
+msgstr ""
+
+#: contrib/localflavor/za/za_provinces.py:5
+msgid "Free State"
+msgstr ""
+
+#: contrib/localflavor/za/za_provinces.py:6
+msgid "Gauteng"
+msgstr ""
+
+#: contrib/localflavor/za/za_provinces.py:7
+msgid "KwaZulu-Natal"
+msgstr ""
+
+#: contrib/localflavor/za/za_provinces.py:8
+msgid "Limpopo"
+msgstr ""
+
+#: contrib/localflavor/za/za_provinces.py:9
+msgid "Mpumalanga"
+msgstr ""
+
+#: contrib/localflavor/za/za_provinces.py:10
+msgid "Northern Cape"
+msgstr ""
+
+#: contrib/localflavor/za/za_provinces.py:11
+msgid "North West"
+msgstr ""
+
+#: contrib/localflavor/za/za_provinces.py:12
+msgid "Western Cape"
+msgstr ""
+
+#: contrib/redirects/models.py:7
+msgid "redirect from"
+msgstr "preusmeri od"
-#: core/validators.py:64
+#: contrib/redirects/models.py:8
+msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
+msgstr "Unesite apsolutnu putanju bez imena domena. Primer: '/dogadjaji/pretraga/'."
+
+#: contrib/redirects/models.py:9
+msgid "redirect to"
+msgstr "preusmeri ka"
+
+#: contrib/redirects/models.py:10
+msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
+msgstr "Može biti apsolutna putanja (kao gore) ili puni URL koji poÄinje sa 'http://'."
+
+#: contrib/redirects/models.py:13
+msgid "redirect"
+msgstr "Preusmeravanje"
+
+#: contrib/redirects/models.py:14
+msgid "redirects"
+msgstr "Preusmeravanja"
+
+#: contrib/sessions/models.py:45
+msgid "session key"
+msgstr "kljuÄ sesije"
+
+#: contrib/sessions/models.py:47
+msgid "session data"
+msgstr "podaci sesije"
+
+#: contrib/sessions/models.py:48
+msgid "expire date"
+msgstr "datum prestanka važenja sesije"
+
+#: contrib/sessions/models.py:53
+msgid "session"
+msgstr "sesija"
+
+#: contrib/sessions/models.py:54
+msgid "sessions"
+msgstr "sesije"
+
+#: contrib/sites/models.py:32
+msgid "domain name"
+msgstr "ime domena"
+
+#: contrib/sites/models.py:33
+msgid "display name"
+msgstr "naziv"
+
+#: contrib/sites/models.py:38
+msgid "site"
+msgstr "sajt"
+
+#: contrib/sites/models.py:39
+msgid "sites"
+msgstr "sajtovi"
+
+#: core/validators.py:76
msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
msgstr "Ovo polje može sadržati samo slova, brojeve, donju crtu (_), crtu (-) i kose crte."
-#: core/validators.py:72
+#: core/validators.py:80
+#, fuzzy
+msgid "This value must contain only letters, numbers, underscores or hyphens."
+msgstr "Ovo polje može sadržati samo slova, brojeve, donju crtu (_), crtu (-) i kose crte."
+
+#: core/validators.py:84
msgid "Uppercase letters are not allowed here."
msgstr "Velika slova nisu dozvoljena."
-#: core/validators.py:76
+#: core/validators.py:88
msgid "Lowercase letters are not allowed here."
msgstr "Mala slova nisu dozvoljena."
-#: core/validators.py:83
+#: core/validators.py:95
msgid "Enter only digits separated by commas."
msgstr "Unesite brojeve razdvojene zarezima."
-#: core/validators.py:95
+#: core/validators.py:107
msgid "Enter valid e-mail addresses separated by commas."
msgstr "Unesite ispravne e-mail adrese razdvojene zarezima."
-#: core/validators.py:99
+#: core/validators.py:111
msgid "Please enter a valid IP address."
msgstr "Unesite ispravnu IP adresu."
-#: core/validators.py:103
+#: core/validators.py:115
msgid "Empty values are not allowed here."
msgstr "Prazne vrednosti nisu dozvoljene."
-#: core/validators.py:107
+#: core/validators.py:119
msgid "Non-numeric characters aren't allowed here."
msgstr "Ovde možete uneti samo brojeve."
-#: core/validators.py:111
+#: core/validators.py:123
msgid "This value can't be comprised solely of digits."
msgstr "Podatak se ne može sastojati samo od brojeva."
-#: core/validators.py:116
+#: core/validators.py:128
+#: forms/fields.py:158
msgid "Enter a whole number."
msgstr "Unesite celi broj."
-#: core/validators.py:120
+#: core/validators.py:132
msgid "Only alphabetical characters are allowed here."
msgstr "Ovde možete koristiti samo slova."
-#: core/validators.py:124
+#: core/validators.py:147
+#, python-format
+msgid "Invalid date: %s"
+msgstr "Neispravan datum: %s"
+
+#: core/validators.py:152
+#: db/models/fields/__init__.py:574
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Unesite ispravan datum u YYYY-MM-DD formatu."
-#: core/validators.py:128
+#: core/validators.py:157
msgid "Enter a valid time in HH:MM format."
msgstr "Unesite ispravno vreme u HH:MM formatu."
-#: core/validators.py:132
-#: db/models/fields/__init__.py:468
+#: core/validators.py:161
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Unesite ispravan datum i vreme u YYYY-MM-DD HH:MM formatu."
-#: core/validators.py:136
+#: core/validators.py:166
+#: forms/fields.py:409
msgid "Enter a valid e-mail address."
msgstr "Unesite ispravnu e-mail adresu."
-#: core/validators.py:148
+#: core/validators.py:178
+#: core/validators.py:470
+#: forms/fields.py:427
+msgid "No file was submitted. Check the encoding type on the form."
+msgstr "Fajl nije poslat, proverite tip enkoding form-a."
+
+#: core/validators.py:189
+#: forms/fields.py:467
msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
msgstr "Pošaljite ispravnu sliku. Fajl koji ste poslali ili nije slika ili je sam fajl oštećen."
-#: core/validators.py:155
+#: core/validators.py:196
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "URL %s ne pokazuje na ispravnu sliku"
# nesh: tel. brojevi su u ameriÄkom formatu, ovo se ionako neće koristiti u i18n delu
-#: core/validators.py:159
+#: core/validators.py:200
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr "Telefonski brojevi moraju biti u formatu XXX-XXX-XXXX. \"%s\" je neispravan."
-#: core/validators.py:167
+#: core/validators.py:208
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "URL %s ne pokazuje na ispravni QuickTime video fajl."
-#: core/validators.py:171
+#: core/validators.py:212
msgid "A valid URL is required."
msgstr "Unesite ispravan URL."
-#: core/validators.py:185
+#: core/validators.py:226
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@@ -1655,28 +3761,28 @@ msgstr ""
"Unesite ispravan HTML. Greške su:\n"
"%s"
-#: core/validators.py:192
+#: core/validators.py:233
#, python-format
msgid "Badly formed XML: %s"
msgstr "Neispravan XML: %s"
-#: core/validators.py:202
+#: core/validators.py:250
#, python-format
msgid "Invalid URL: %s"
msgstr "Neispravan URL: %s"
-#: core/validators.py:206
-#: core/validators.py:208
+#: core/validators.py:255
+#: core/validators.py:257
#, python-format
msgid "The URL %s is a broken link."
msgstr "URL %s je neispravan link."
# nesh: Ni ovo nije interesantno za i18n
-#: core/validators.py:214
+#: core/validators.py:263
msgid "Enter a valid U.S. state abbreviation."
msgstr "Unesite ispravnu skraćenicu za U.S. državu."
-#: core/validators.py:229
+#: core/validators.py:277
#, 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."
@@ -1684,44 +3790,59 @@ msgstr[0] "Pripazi na jezik! %s reÄ nije ovde dozvoljena."
msgstr[1] "Pripazi na jezik! %s reÄi nisu ovde dozvoljene."
msgstr[2] "Pripazi na jezik! %s reÄi nisu ovde dozvoljene."
-#: core/validators.py:236
+#: core/validators.py:284
#, python-format
msgid "This field must match the '%s' field."
msgstr "Ovo polje mora biti jednako sa poljem '%s'."
-#: core/validators.py:255
+#: core/validators.py:303
msgid "Please enter something for at least one field."
msgstr "Morate popuniti barem jedno polje."
-#: core/validators.py:264
-#: core/validators.py:275
+#: core/validators.py:312
+#: core/validators.py:323
msgid "Please enter both fields or leave them both empty."
msgstr "Popunite oba polja ili oba ostavite prazna."
-#: core/validators.py:282
+#: core/validators.py:331
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "Ovo polje mora biti uneto ako polje %(field)s ima vrednost %(value)s"
-#: core/validators.py:294
+#: core/validators.py:344
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "Ovo polje mora biti uneto ako polje %(field)s nema vrednost %(value)s"
-#: core/validators.py:313
+#: core/validators.py:363
msgid "Duplicate values are not allowed."
msgstr "Duple vrednosti nisu dozvoljene."
-#: core/validators.py:336
+#: core/validators.py:378
+#, python-format
+msgid "This value must be between %(lower)s and %(upper)s."
+msgstr "Vrednost mora biti između %(lower)s i %(upper)s."
+
+#: core/validators.py:380
+#, python-format
+msgid "This value must be at least %s."
+msgstr "Vrednost mora biti najmanje %s."
+
+#: core/validators.py:382
+#, python-format
+msgid "This value must be no more than %s."
+msgstr "Vrednost ne sme biti veća od %s."
+
+#: core/validators.py:423
#, python-format
msgid "This value must be a power of %s."
msgstr "Vrednost mora biti stepena %s."
-#: core/validators.py:347
+#: core/validators.py:433
msgid "Please enter a valid decimal number."
msgstr "Unesite ispravan decimalni broj."
-#: core/validators.py:349
+#: core/validators.py:440
#, 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."
@@ -1729,7 +3850,15 @@ msgstr[0] "Unesite ispravan decimalni broj sa %s cifrom."
msgstr[1] "Unesite ispravan decimalni broj sa %s cifre."
msgstr[2] "Unesite ispravan decimalni broj sa %s cifara."
-#: core/validators.py:352
+#: core/validators.py:443
+#, 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] "Unesite ispravan decimalni broj sa celim delom od najviše %s cifre."
+msgstr[1] "Unesite ispravan decimalni broj sa celim delom od najviše %s cifre."
+msgstr[2] "Unesite ispravan decimalni broj sa celim delom od najviše %s cifara."
+
+#: core/validators.py:446
#, 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."
@@ -1737,112 +3866,131 @@ msgstr[0] "Unesite decimalni broj sa najviše %s decimalnim mestom."
msgstr[1] "Unesite decimalni broj sa najviše %s decimalna mesta."
msgstr[2] "Unesite decimalni broj sa najviše %s decimalnih mesta."
-#: core/validators.py:362
+#: core/validators.py:454
+msgid "Please enter a valid floating point number."
+msgstr "Unesite ispravan decimalni broj."
+
+#: core/validators.py:463
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "VeliÄina fajla mora biti najmanje %s bajtova."
-#: core/validators.py:363
+#: core/validators.py:464
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "VeliÄina fajla mora biti najviÅ¡e %s bajtova."
-#: core/validators.py:376
+#: core/validators.py:481
msgid "The format for this field is wrong."
msgstr "Pogrešan format polja."
-#: core/validators.py:391
+#: core/validators.py:496
msgid "This field is invalid."
msgstr "Neispravno polje."
-#: core/validators.py:426
+#: core/validators.py:532
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Ništa nije moglo da se skine sa URL-a %s."
-#: core/validators.py:429
+#: core/validators.py:535
#, python-format
msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr "Sa URL-a %(url)s se vratio pogrešan Content-Type header '%(contenttype)s'."
-#: core/validators.py:462
+#: core/validators.py:568
#, python-format
msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
msgstr "Zatvorite nezatvoren tag \"%(tag)s\" iz reda %(line)s. (Red poÄinje sa \"%(start)s\".)"
-#: core/validators.py:466
+#: core/validators.py:572
#, python-format
msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
msgstr "Tekst koji poÄinje u redu %(line)s nije dozvoljen u ovom kontekstu. (Red poÄinje sa \"%(start)s\".)"
-#: core/validators.py:471
+#: core/validators.py:577
#, python-format
msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
msgstr "Atribut \"%(attr)s\" u red %(line)s je neispravan. (Red poÄinje sa \"%(start)s\".)"
-#: core/validators.py:476
+#: core/validators.py:582
#, python-format
msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
msgstr "Tag \"<%(tag)s>\" u redu %(line)s je neispravan. (Red poÄinje \"%(start)s\".)"
-#: core/validators.py:480
+#: core/validators.py:586
#, python-format
msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
msgstr "Tag-u u redu %(line)s nedostaje jedan ili viÅ¡e atributa. (Red poÄinje sa \"%(start)s\".)"
-#: core/validators.py:485
+#: core/validators.py:591
#, python-format
msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
msgstr "Atribut \"%(attr)s\" u redu %(line)s ima neispravnu vrednost. (Red poÄinje sa \"%(start)s\".)"
-#: db/models/manipulators.py:302
+#: db/models/manipulators.py:304
#, python-format
msgid "%(object)s with this %(type)s already exists for the given %(field)s."
msgstr "%(object)s sa ovim tipom %(type)s već postoji za polje %(field)s."
-#: db/models/fields/__init__.py:40
+#: db/models/fields/__init__.py:47
#, python-format
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "%(optname)s sa ovim %(fieldname)s već postoji."
-#: 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
+#: db/models/fields/__init__.py:175
+#: db/models/fields/__init__.py:348
+#: db/models/fields/__init__.py:797
+#: db/models/fields/__init__.py:808
+#: forms/fields.py:52
+#: oldforms/__init__.py:374
msgid "This field is required."
msgstr "Obavezno polje."
-#: db/models/fields/__init__.py:337
+#: db/models/fields/__init__.py:462
msgid "This value must be an integer."
msgstr "Vrednost mora biti celi broj."
-#: db/models/fields/__init__.py:369
+#: db/models/fields/__init__.py:508
msgid "This value must be either True or False."
msgstr "Vrednost mora biti True ili False."
-#: db/models/fields/__init__.py:385
+#: db/models/fields/__init__.py:537
msgid "This field cannot be null."
msgstr "Polje ne može sadržati praznu vrednost."
-#: db/models/fields/__init__.py:562
+#: db/models/fields/__init__.py:639
+#: db/models/fields/__init__.py:656
+msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[ss[.uuuuuu]] format."
+msgstr "Unesite ispravan datum i vreme u YYYY-MM-DD HH:MM[ss[.uuuuuu]] formatu."
+
+#: db/models/fields/__init__.py:712
+msgid "This value must be a decimal number."
+msgstr "Vrednost mora biti decimalni broj."
+
+#: db/models/fields/__init__.py:817
msgid "Enter a valid filename."
msgstr "Unesite ispravno ime fajla."
-#: db/models/fields/related.py:43
+#: db/models/fields/__init__.py:1018
+msgid "This value must be either None, True or False."
+msgstr "Vrednost mora biti None, True ili False."
+
+#: db/models/fields/__init__.py:1133
+#: db/models/fields/__init__.py:1146
+msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
+msgstr "Unesite ispravno vreme u HH:MM[:ss[.uuuuuu]] formatu."
+
+#: db/models/fields/related.py:93
#, python-format
msgid "Please enter a valid %s."
msgstr "Unesite ispravan %s."
-#: db/models/fields/related.py:579
-msgid "Separate multiple IDs with commas."
-msgstr "Odvojite višestruke ID-ove zarezima."
-
-#: db/models/fields/related.py:581
+#: db/models/fields/related.py:730
msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr "Koristite \"Ctrl\" (PC) ili \"Jabuku\" (Mek) da bi ste selektovali više stavki."
-#: db/models/fields/related.py:625
+#: db/models/fields/related.py:774
#, 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."
@@ -1850,7 +3998,111 @@ msgstr[0] "Unesite validne %(self)s ID-ove. Vrednost %(value)r je neispravna."
msgstr[1] "Unesite validne %(self)s ID-ove. Vrednost %(value)r je neispravna."
msgstr[2] "Unesite validne %(self)s ID-ove. Vrednost %(value)r je neispravna."
-#: forms/__init__.py:380
+#: forms/fields.py:53
+msgid "Enter a valid value."
+msgstr "Unesite ispravnu vrednost."
+
+#: forms/fields.py:130
+#, python-format
+msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
+msgstr "Proverite dužinu, maksimum je %(max)d karaktera (dobijeno %(length)d)."
+
+#: forms/fields.py:131
+#, python-format
+msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
+msgstr "Proverite dužinu, minimum je %(min)d karaktera (dobijeno %(length)d)."
+
+#: forms/fields.py:159
+#: forms/fields.py:188
+#: forms/fields.py:217
+#, python-format
+msgid "Ensure this value is less than or equal to %s."
+msgstr "Vrednost mora biti manja ili jednaka %s."
+
+#: forms/fields.py:160
+#: forms/fields.py:189
+#: forms/fields.py:218
+#, python-format
+msgid "Ensure this value is greater than or equal to %s."
+msgstr "Proverite da li je vrednost veća ili jednaka %s."
+
+#: forms/fields.py:187
+#: forms/fields.py:216
+msgid "Enter a number."
+msgstr "Unesite broj."
+
+#: forms/fields.py:219
+#, python-format
+msgid "Ensure that there are no more than %s digits in total."
+msgstr "Proverite da nema više od %s cifara."
+
+#: forms/fields.py:220
+#, python-format
+msgid "Ensure that there are no more than %s decimal places."
+msgstr "Proverite da nema više od %s decimalnih mesta."
+
+#: forms/fields.py:221
+#, python-format
+msgid "Ensure that there are no more than %s digits before the decimal point."
+msgstr "Proverite da nema više od %s cifara u celom delu."
+
+#: forms/fields.py:269
+#: forms/fields.py:799
+msgid "Enter a valid date."
+msgstr "Unesite ispravan datum."
+
+#: forms/fields.py:302
+#: forms/fields.py:800
+msgid "Enter a valid time."
+msgstr "Unesite ispravno vreme."
+
+#: forms/fields.py:341
+msgid "Enter a valid date/time."
+msgstr "Unesite ispravan datum i vreme."
+
+#: forms/fields.py:428
+msgid "No file was submitted."
+msgstr "Fajl nije poslat."
+
+#: forms/fields.py:429
+#: oldforms/__init__.py:693
+msgid "The submitted file is empty."
+msgstr "Poslati fajl je prazan."
+
+#: forms/fields.py:528
+msgid "Enter a valid URL."
+msgstr "Unesite ispravan URL."
+
+#: forms/fields.py:529
+msgid "This URL appears to be a broken link."
+msgstr "URL je neispravan link."
+
+#: forms/fields.py:597
+#: forms/fields.py:648
+#, python-format
+msgid "Select a valid choice. %(value)s is not one of the available choices."
+msgstr "Izaberite validnu opciju. %(value)s nije među njima."
+
+#: forms/fields.py:649
+#: forms/fields.py:710
+#: forms/models.py:581
+msgid "Enter a list of values."
+msgstr "Unesite listu vrednosti."
+
+#: forms/fields.py:828
+msgid "Enter a valid IPv4 address."
+msgstr "Unesite IPv4 adresu."
+
+#: forms/models.py:514
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "Izaberite validnu opciju. Izabrana opcija nije validna."
+
+#: forms/models.py:582
+#, python-format
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr "Izaberite validnu opciju. Opcija %s nije validna."
+
+#: oldforms/__init__.py:409
#, python-format
msgid "Ensure your text is less than %s character."
msgid_plural "Ensure your text is less than %s characters."
@@ -1858,37 +4110,373 @@ msgstr[0] "Tekst mora imati manje od %s slova."
msgstr[1] "Tekst mora imati manje od %s slova."
msgstr[2] "Tekst mora imati manje od %s slova."
-#: forms/__init__.py:385
+#: oldforms/__init__.py:414
msgid "Line breaks are not allowed here."
msgstr "Novi redovi ovde nisu dozvoljeni."
-#: forms/__init__.py:480
-#: forms/__init__.py:551
-#: forms/__init__.py:589
+#: oldforms/__init__.py:512
+#: oldforms/__init__.py:586
+#: oldforms/__init__.py:625
#, python-format
msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
msgstr "Izaberite validnu opciju: '%(data)s' nije u %(choices)s."
-#: forms/__init__.py:645
-msgid "The submitted file is empty."
-msgstr "Poslati fajl je prazan."
-
-#: forms/__init__.py:699
+#: oldforms/__init__.py:754
msgid "Enter a whole number between -32,768 and 32,767."
msgstr "Unesite celi broj između -32,768 i 32,767."
-#: forms/__init__.py:708
+#: oldforms/__init__.py:764
msgid "Enter a positive number."
msgstr "Unesite pozitivan broj."
-#: forms/__init__.py:717
+#: oldforms/__init__.py:774
msgid "Enter a whole number between 0 and 32,767."
msgstr "Unesite celi broj između 0 i 32,767."
-#: template/defaultfilters.py:379
+#: template/defaultfilters.py:698
msgid "yes,no,maybe"
msgstr "da,ne,možda"
+#: template/defaultfilters.py:729
+#, python-format
+msgid "%(size)d byte"
+msgid_plural "%(size)d bytes"
+msgstr[0] "%(size)d bajt"
+msgstr[1] "%(size)d bajta"
+msgstr[2] "%(size)d bajtova"
+
+#: template/defaultfilters.py:731
+#, python-format
+msgid "%.1f KB"
+msgstr ""
+
+#: template/defaultfilters.py:733
+#, python-format
+msgid "%.1f MB"
+msgstr ""
+
+#: template/defaultfilters.py:734
+#, python-format
+msgid "%.1f GB"
+msgstr ""
+
+#: utils/dateformat.py:41
+msgid "p.m."
+msgstr "popodne"
+
+#: utils/dateformat.py:42
+msgid "a.m."
+msgstr "prepodne"
+
+#: utils/dateformat.py:47
+msgid "PM"
+msgstr "popodne"
+
+#: utils/dateformat.py:48
+msgid "AM"
+msgstr "prepodne"
+
+#: utils/dateformat.py:97
+msgid "midnight"
+msgstr "ponoć"
+
+#: utils/dateformat.py:99
+msgid "noon"
+msgstr "podne"
+
+#: utils/dates.py:6
+msgid "Monday"
+msgstr "Ponedeljak"
+
+#: utils/dates.py:6
+msgid "Tuesday"
+msgstr "Utorak"
+
+#: utils/dates.py:6
+msgid "Wednesday"
+msgstr "Sreda"
+
+#: utils/dates.py:6
+msgid "Thursday"
+msgstr "ÄŒetvrtak"
+
+#: utils/dates.py:6
+msgid "Friday"
+msgstr "Petak"
+
+#: utils/dates.py:7
+msgid "Saturday"
+msgstr "Subota"
+
+#: utils/dates.py:7
+msgid "Sunday"
+msgstr "Nedelja"
+
+#: utils/dates.py:10
+msgid "Mon"
+msgstr "Pon"
+
+#: utils/dates.py:10
+msgid "Tue"
+msgstr "Uto"
+
+#: utils/dates.py:10
+msgid "Wed"
+msgstr "Sre"
+
+#: utils/dates.py:10
+msgid "Thu"
+msgstr "ÄŒet"
+
+#: utils/dates.py:10
+msgid "Fri"
+msgstr "Pet"
+
+#: utils/dates.py:11
+msgid "Sat"
+msgstr "Sub"
+
+#: utils/dates.py:11
+msgid "Sun"
+msgstr "Ned"
+
+#: utils/dates.py:18
+msgid "January"
+msgstr "Januar"
+
+#: utils/dates.py:18
+msgid "February"
+msgstr "Februar"
+
+#: utils/dates.py:18
+#: utils/dates.py:31
+msgid "March"
+msgstr "Mart"
+
+#: utils/dates.py:18
+#: utils/dates.py:31
+msgid "April"
+msgstr "April"
+
+#: utils/dates.py:18
+#: utils/dates.py:31
+msgid "May"
+msgstr "Maj"
+
+#: utils/dates.py:18
+#: utils/dates.py:31
+msgid "June"
+msgstr "Jun"
+
+#: utils/dates.py:19
+#: utils/dates.py:31
+msgid "July"
+msgstr "Jul"
+
+#: utils/dates.py:19
+msgid "August"
+msgstr "Avgust"
+
+#: utils/dates.py:19
+msgid "September"
+msgstr "Septembar"
+
+#: utils/dates.py:19
+msgid "October"
+msgstr "Oktobar"
+
+#: utils/dates.py:19
+msgid "November"
+msgstr "Novembar"
+
+#: utils/dates.py:20
+msgid "December"
+msgstr "Decembar"
+
+#: utils/dates.py:23
+msgid "jan"
+msgstr "jan"
+
+#: utils/dates.py:23
+msgid "feb"
+msgstr "feb"
+
+#: utils/dates.py:23
+msgid "mar"
+msgstr "mar"
+
+#: utils/dates.py:23
+msgid "apr"
+msgstr "apr"
+
+#: utils/dates.py:23
+msgid "may"
+msgstr "maj"
+
+#: utils/dates.py:23
+msgid "jun"
+msgstr "jun"
+
+#: utils/dates.py:24
+msgid "jul"
+msgstr "jul"
+
+#: utils/dates.py:24
+msgid "aug"
+msgstr "avg"
+
+#: utils/dates.py:24
+msgid "sep"
+msgstr "sep"
+
+#: utils/dates.py:24
+msgid "oct"
+msgstr "okt"
+
+#: utils/dates.py:24
+msgid "nov"
+msgstr "nov"
+
+#: utils/dates.py:24
+msgid "dec"
+msgstr "dec"
+
+#: utils/dates.py:31
+msgid "Jan."
+msgstr "Jan."
+
+#: utils/dates.py:31
+msgid "Feb."
+msgstr "Feb."
+
+#: utils/dates.py:32
+msgid "Aug."
+msgstr "Avg."
+
+#: utils/dates.py:32
+msgid "Sept."
+msgstr "Sept."
+
+#: utils/dates.py:32
+msgid "Oct."
+msgstr "Okt."
+
+#: utils/dates.py:32
+msgid "Nov."
+msgstr "Nov."
+
+#: utils/dates.py:32
+msgid "Dec."
+msgstr "Dec."
+
+#: utils/text.py:128
+msgid "or"
+msgstr "ili"
+
+#: utils/timesince.py:21
+msgid "year"
+msgid_plural "years"
+msgstr[0] "godina"
+msgstr[1] "godine"
+msgstr[2] "godina"
+
+#: utils/timesince.py:22
+msgid "month"
+msgid_plural "months"
+msgstr[0] "mesec"
+msgstr[1] "meseca"
+msgstr[2] "meseci"
+
+#: utils/timesince.py:23
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "nedelja"
+msgstr[1] "nedelje"
+msgstr[2] "nedelja"
+
+#: utils/timesince.py:24
+msgid "day"
+msgid_plural "days"
+msgstr[0] "dan"
+msgstr[1] "dana"
+msgstr[2] "dana"
+
+#: utils/timesince.py:25
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "sat"
+msgstr[1] "sata"
+msgstr[2] "sati"
+
+#: utils/timesince.py:26
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minut"
+msgstr[1] "munuta"
+msgstr[2] "minuta"
+
+#: utils/timesince.py:46
+msgid "minutes"
+msgstr "minuta"
+
+#: utils/timesince.py:51
+#, python-format
+msgid "%(number)d %(type)s"
+msgstr "%(type)s: %(number)d"
+
+#: utils/timesince.py:57
+#, python-format
+msgid ", %(number)d %(type)s"
+msgstr ", %(type)s: %(number)d"
+
+#: utils/translation/trans_real.py:401
+msgid "DATE_FORMAT"
+msgstr "D, d.m.Y."
+
+#: utils/translation/trans_real.py:402
+msgid "DATETIME_FORMAT"
+msgstr "d.m.Y. H:i:s"
+
+#: utils/translation/trans_real.py:403
+msgid "TIME_FORMAT"
+msgstr "H:i:s"
+
+#: utils/translation/trans_real.py:419
+msgid "YEAR_MONTH_FORMAT"
+msgstr "m.Y."
+
+#: utils/translation/trans_real.py:420
+msgid "MONTH_DAY_FORMAT"
+msgstr "d.m."
+
+#: views/generic/create_update.py:129
+#, python-format
+msgid "The %(verbose_name)s was created successfully."
+msgstr "%(verbose_name)s uspešno kreiran."
+
+#: views/generic/create_update.py:172
+#, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr "%(verbose_name)s uspešno promenjen."
+
+#: views/generic/create_update.py:214
+#, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr "%(verbose_name)s je obrisan."
+
+#~ msgid "Added %s."
+#~ msgstr "Dodat %s"
+#~ msgid "Deleted %s."
+#~ msgstr "Obrisan %s."
+#~ msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
+#~ msgstr ""
+#~ "Da li ste <a href=\"/password_reset/\">zaboravili vašu lozinku?</a>?"
+#~ msgid "Ordering"
+#~ msgstr "Redosled"
+#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
+#~ msgstr "Koristite '[algo]$[salt]$[hexdigest]'"
+#~ msgid "Separate multiple IDs with commas."
+#~ msgstr "Odvojite višestruke ID-ove zarezima."
#~ msgid "Comment"
#~ msgstr "Komentar"
#~ msgid "Comments"
diff --git a/django/conf/locale/sr/LC_MESSAGES/djangojs.mo b/django/conf/locale/sr/LC_MESSAGES/djangojs.mo
index 5713185742..1de89774d7 100644
--- a/django/conf/locale/sr/LC_MESSAGES/djangojs.mo
+++ b/django/conf/locale/sr/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/django/conf/locale/sr/LC_MESSAGES/djangojs.po b/django/conf/locale/sr/LC_MESSAGES/djangojs.po
index 65a17757f7..c1338be4bd 100644
--- a/django/conf/locale/sr/LC_MESSAGES/djangojs.po
+++ b/django/conf/locale/sr/LC_MESSAGES/djangojs.po
@@ -7,15 +7,17 @@ msgid ""
msgstr ""
"Project-Id-Version: Django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-12-09 11:51+0100\n"
-"PO-Revision-Date: 2007-02-20 18:51+0100\n"
-"Last-Translator: Petar Marić <petar.maric@gmail.com>\n"
-"Language-Team: Nesh <nesh@studioquatro.co.yu> & Petar <petar.maric@gmail.com> <sr@li.org>\n"
+"POT-Creation-Date: 2008-07-29 12:07+0200\n"
+"PO-Revision-Date: 2008-07-29 12:53+0100\n"
+"Last-Translator: Nebojsa Djordjevic <djnesh@gmail.com>\n"
+"Language-Team: Nesh <djnesh@gmail.com> & Petar <petar.maric@gmail.com> <sr@li.org>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Country: YUGOSLAVIA\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Poedit-Language: Serbian\n"
+"X-Poedit-SourceCharset: utf-8\n"
#: contrib/admin/media/js/SelectFilter2.js:33
#, perl-format
@@ -47,63 +49,72 @@ msgstr "Izaberite potrebno i kliknite"
msgid "Clear all"
msgstr "Obrišite sve"
-#: contrib/admin/media/js/dateparse.js:26
#: contrib/admin/media/js/calendar.js:24
+#: contrib/admin/media/js/dateparse.js:32
msgid "January February March April May June July August September October November December"
msgstr "Januar Februar Mart April Maj Jun Jul Avgust Septembar Oktobar Novembar Decembar"
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Nedelja Ponedeljak Utorak Sreda ÄŒetvrtak Petak Subota"
-
#: contrib/admin/media/js/calendar.js:25
msgid "S M T W T F S"
msgstr "N P U S Č P S"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
+#: contrib/admin/media/js/dateparse.js:33
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
+msgstr "Nedelja Ponedeljak Utorak Sreda ÄŒetvrtak Petak Subota"
+
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
+msgid "Show"
+msgstr "Prikaži"
+
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
+msgid "Hide"
+msgstr "Sakrij"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
msgid "Now"
msgstr "Sada"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
msgid "Clock"
msgstr "Sat"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
msgid "Choose a time"
msgstr "Izaberite vreme"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
msgid "Midnight"
msgstr "Ponoć"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
msgid "6 a.m."
msgstr "6 sati"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
msgid "Noon"
msgstr "Podne"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
msgid "Cancel"
msgstr "Poništi"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
msgid "Today"
msgstr "Danas"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
msgid "Calendar"
msgstr "Kalendar"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
msgid "Yesterday"
msgstr "JuÄe"
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
msgid "Tomorrow"
msgstr "Sutra"
diff --git a/django/conf/locale/sv/LC_MESSAGES/django.mo b/django/conf/locale/sv/LC_MESSAGES/django.mo
index acb08754a5..f6cf8c22c5 100644
--- a/django/conf/locale/sv/LC_MESSAGES/django.mo
+++ b/django/conf/locale/sv/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/sv/LC_MESSAGES/django.po b/django/conf/locale/sv/LC_MESSAGES/django.po
index b6ef3c3a6d..32d04d4b14 100644
--- a/django/conf/locale/sv/LC_MESSAGES/django.po
+++ b/django/conf/locale/sv/LC_MESSAGES/django.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-05-26 10:58+0200\n"
+"POT-Creation-Date: 2008-07-27 21:27+0200\n"
"PO-Revision-Date: 2008-05-26 11:15+0200\n"
"Last-Translator: Ludvig Ericson <ludvig.ericson@gmail.com>\n"
"Language-Team: Django I18N <Django-I18N@googlegroups.com>\n"
@@ -17,191 +17,199 @@ msgstr ""
"X-Poedit-Language: Swedish\n"
"X-Poedit-Country: SWEDEN\n"
-#: conf/global_settings.py:43
+#: conf/global_settings.py:44
msgid "Arabic"
msgstr "Arabiska"
-#: conf/global_settings.py:44
+#: conf/global_settings.py:45
msgid "Bengali"
msgstr "Bengaliska"
-#: conf/global_settings.py:45
+#: conf/global_settings.py:46
msgid "Bulgarian"
msgstr "Bulgariska"
-#: conf/global_settings.py:46
+#: conf/global_settings.py:47
msgid "Catalan"
msgstr "Katalanska"
-#: conf/global_settings.py:47
+#: conf/global_settings.py:48
msgid "Czech"
msgstr "Tjeckiska"
-#: conf/global_settings.py:48
+#: conf/global_settings.py:49
msgid "Welsh"
msgstr "Walesiska"
-#: conf/global_settings.py:49
+#: conf/global_settings.py:50
msgid "Danish"
msgstr "Danska"
-#: conf/global_settings.py:50
+#: conf/global_settings.py:51
msgid "German"
msgstr "Tyska"
-#: conf/global_settings.py:51
+#: conf/global_settings.py:52
msgid "Greek"
msgstr "Grekiska"
-#: conf/global_settings.py:52
+#: conf/global_settings.py:53
msgid "English"
msgstr "Engelska"
-#: conf/global_settings.py:53
+#: conf/global_settings.py:54
msgid "Spanish"
msgstr "Spanska"
-#: conf/global_settings.py:54
+#: conf/global_settings.py:55
+msgid "Estonian"
+msgstr "Estländska"
+
+#: conf/global_settings.py:56
msgid "Argentinean Spanish"
msgstr "Argentisk Spanska"
-#: conf/global_settings.py:55
+#: conf/global_settings.py:57
msgid "Basque"
msgstr "Baskiska"
-#: conf/global_settings.py:56
+#: conf/global_settings.py:58
msgid "Persian"
msgstr "Persiska"
-#: conf/global_settings.py:57
+#: conf/global_settings.py:59
msgid "Finnish"
msgstr "Finska"
-#: conf/global_settings.py:58
+#: conf/global_settings.py:60
msgid "French"
msgstr "Franska"
-#: conf/global_settings.py:59
+#: conf/global_settings.py:61
msgid "Irish"
msgstr "Irländska"
-#: conf/global_settings.py:60
+#: conf/global_settings.py:62
msgid "Galician"
msgstr "Galisiska"
-#: conf/global_settings.py:61
+#: conf/global_settings.py:63
msgid "Hungarian"
msgstr "Ungerska"
-#: conf/global_settings.py:62
+#: conf/global_settings.py:64
msgid "Hebrew"
msgstr "Hebreiska"
-#: conf/global_settings.py:63
+#: conf/global_settings.py:65
msgid "Croatian"
msgstr "Kroatiska"
-#: conf/global_settings.py:64
+#: conf/global_settings.py:66
msgid "Icelandic"
msgstr "Isländska"
-#: conf/global_settings.py:65
+#: conf/global_settings.py:67
msgid "Italian"
msgstr "Italienska"
-#: conf/global_settings.py:66
+#: conf/global_settings.py:68
msgid "Japanese"
msgstr "Japanska"
-#: conf/global_settings.py:67
+#: conf/global_settings.py:69
msgid "Georgian"
msgstr "Georgiska"
-#: conf/global_settings.py:68
+#: conf/global_settings.py:70
msgid "Korean"
msgstr "Koreanska"
-#: conf/global_settings.py:69
+#: conf/global_settings.py:71
msgid "Khmer"
msgstr "Khmer"
-#: conf/global_settings.py:70
+#: conf/global_settings.py:72
msgid "Kannada"
msgstr "Kannada"
-#: conf/global_settings.py:71
+#: conf/global_settings.py:73
msgid "Latvian"
msgstr "Lettiska"
-#: conf/global_settings.py:72
+#: conf/global_settings.py:74
+msgid "Lithuanian"
+msgstr "Lettiska"
+
+#: conf/global_settings.py:75
msgid "Macedonian"
msgstr "Makedonska"
-#: conf/global_settings.py:73
+#: conf/global_settings.py:76
msgid "Dutch"
msgstr "Holländska"
-#: conf/global_settings.py:74
+#: conf/global_settings.py:77
msgid "Norwegian"
msgstr "Norska"
-#: conf/global_settings.py:75
+#: conf/global_settings.py:78
msgid "Polish"
msgstr "Polska"
-#: conf/global_settings.py:76
+#: conf/global_settings.py:79
msgid "Portugese"
msgstr "Portugisiska"
-#: conf/global_settings.py:77
+#: conf/global_settings.py:80
msgid "Brazilian Portuguese"
msgstr "Brasiliensk portugisiska"
-#: conf/global_settings.py:78
+#: conf/global_settings.py:81
msgid "Romanian"
msgstr "Rumänska"
-#: conf/global_settings.py:79
+#: conf/global_settings.py:82
msgid "Russian"
msgstr "Ryska"
-#: conf/global_settings.py:80
+#: conf/global_settings.py:83
msgid "Slovak"
msgstr "Slovakiska"
-#: conf/global_settings.py:81
+#: conf/global_settings.py:84
msgid "Slovenian"
msgstr "Slovenska"
-#: conf/global_settings.py:82
+#: conf/global_settings.py:85
msgid "Serbian"
msgstr "Serbiska"
-#: conf/global_settings.py:83
+#: conf/global_settings.py:86
msgid "Swedish"
msgstr "Svenska"
-#: conf/global_settings.py:84
+#: conf/global_settings.py:87
msgid "Tamil"
msgstr "Tamilska"
-#: conf/global_settings.py:85
+#: conf/global_settings.py:88
msgid "Telugu"
msgstr "Telugu"
-#: conf/global_settings.py:86
+#: conf/global_settings.py:89
msgid "Turkish"
msgstr "Turkiska"
-#: conf/global_settings.py:87
+#: conf/global_settings.py:90
msgid "Ukrainian"
msgstr "Ukrainska"
-#: conf/global_settings.py:88
+#: conf/global_settings.py:91
msgid "Simplified Chinese"
msgstr "Förenklad Kinesiska"
-#: conf/global_settings.py:89
+#: conf/global_settings.py:92
msgid "Traditional Chinese"
msgstr "Traditionell Kinesiska"
@@ -239,49 +247,206 @@ msgstr "Denna månad"
msgid "This year"
msgstr "Detta år"
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "Yes"
msgstr "Ja"
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "No"
msgstr "Nej"
-#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
#: oldforms/__init__.py:592
msgid "Unknown"
msgstr "Okänt"
-#: contrib/admin/models.py:18
+#: contrib/admin/models.py:19
msgid "action time"
msgstr "händelsetid"
-#: contrib/admin/models.py:21
+#: contrib/admin/models.py:22
msgid "object id"
msgstr "objektets id"
-#: contrib/admin/models.py:22
+#: contrib/admin/models.py:23
msgid "object repr"
msgstr "objektets beskrivning"
-#: contrib/admin/models.py:23
+#: contrib/admin/models.py:24
msgid "action flag"
msgstr "händelseflagga"
-#: contrib/admin/models.py:24
+#: contrib/admin/models.py:25
msgid "change message"
msgstr "ändra meddelande"
-#: contrib/admin/models.py:27
+#: contrib/admin/models.py:28
msgid "log entry"
msgstr "loggpost"
-#: contrib/admin/models.py:28
+#: contrib/admin/models.py:29
msgid "log entries"
msgstr "loggposter"
+#: contrib/admin/options.py:161 contrib/admin/options.py:180
+msgid "None"
+msgstr "Inget"
+
+#: contrib/admin/options.py:347 contrib/auth/admin.py:37
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "%(name)s \"%(obj)s\" lades till."
+
+#: contrib/admin/options.py:351 contrib/admin/options.py:419
+#: contrib/auth/admin.py:42
+msgid "You may edit it again below."
+msgstr "Du kan ändra det igen nedanför."
+
+#: contrib/admin/options.py:361 contrib/admin/options.py:428
+#, python-format
+msgid "You may add another %s below."
+msgstr "Du kan lägga till ytterligare %s nedanför."
+
+#: contrib/admin/options.py:395
+#, python-format
+msgid "Changed %s."
+msgstr "Ändrade %s."
+
+#: contrib/admin/options.py:395 contrib/admin/options.py:405
+#: core/validators.py:279 db/models/manipulators.py:305
+msgid "and"
+msgstr "och"
+
+#: contrib/admin/options.py:400
+msgid "Added %(name)s \"%(object)s\"."
+msgstr "Lade till %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:404
+#, python-format
+msgid "Changed %(list)s for %(name)s \"%(object)s\"."
+msgstr "Ändrade %(list)s på %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:409
+#, python-format
+msgid "Deleted %(name)s \"%(object)s\"."
+msgstr "Tog bort %(name)s \"%(object)s\"."
+
+#: contrib/admin/options.py:414
+msgid "No fields changed."
+msgstr "Inga fält ändrade."
+
+#: contrib/admin/options.py:417
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr "%(name)s \"%(obj)s\" ändrades."
+
+#: contrib/admin/options.py:425
+#, python-format
+msgid ""
+"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr ""
+"%(name)s \"%(obj)s\" lades till. Du kan redigera objektet igen nedanför."
+
+#: contrib/admin/options.py:506
+#, python-format
+msgid "Add %s"
+msgstr "Lägg till %s"
+
+#: contrib/admin/options.py:568
+#, python-format
+msgid "Change %s"
+msgstr "Ändra %s"
+
+#: contrib/admin/options.py:598
+msgid "Database error"
+msgstr "Databasfel"
+
+#: contrib/admin/options.py:647
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "%(name)s \"%(obj)s\" togs bort."
+
+#: contrib/admin/options.py:653
+msgid "Are you sure?"
+msgstr "Är du säker?"
+
+#: contrib/admin/options.py:680
+#, python-format
+msgid "Change history: %s"
+msgstr "Ändringshistorik: %s"
+
+#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
+#: contrib/auth/forms.py:70 contrib/comments/views/comments.py:56
+msgid ""
+"Please enter a correct username and password. Note that both fields are case-"
+"sensitive."
+msgstr ""
+"Var god ange ett korrekt användarnamn och lösenord. Tänk på att skilja "
+"mellan gemener och versaler."
+
+#: contrib/admin/sites.py:233 contrib/admin/views/decorators.py:68
+msgid ""
+"Please log in again, because your session has expired. Don't worry: Your "
+"submission has been saved."
+msgstr ""
+"Du måste logga in igen eftersom din session har förfallit. Oroa dig inte: "
+"Din data har sparats."
+
+#: contrib/admin/sites.py:240 contrib/admin/views/decorators.py:75
+msgid ""
+"Looks like your browser isn't configured to accept cookies. Please enable "
+"cookies, reload this page, and try again."
+msgstr ""
+"Det verkar som att din webläsare inte är konfigurerad att acceptera cookies. "
+"Aktivera cookies, ladda om denna sida och försök igen."
+
+#: contrib/admin/sites.py:254 contrib/admin/sites.py:260
+#: contrib/admin/views/decorators.py:92
+msgid "Usernames cannot contain the '@' character."
+msgstr "Användarnamn får inte innehålla '@'-tecknet."
+
+#: contrib/admin/sites.py:257 contrib/admin/views/decorators.py:88
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr "Din e-postadress är inte ditt användarnamn. Försök med '%s' istället."
+
+#: contrib/admin/sites.py:325
+msgid "Site administration"
+msgstr "Webbplatsadministration"
+
+#: contrib/admin/sites.py:347 contrib/admin/templates/admin/login.html:27
+#: contrib/admin/views/decorators.py:30
+msgid "Log in"
+msgstr "Logga in"
+
+#: contrib/admin/util.py:126
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr "Ett eller flera %(fieldname)s i %(name)s: %(obj)s"
+
+#: contrib/admin/util.py:131
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "Ett eller flera %(fieldname)s i %(name)s:"
+
+#: contrib/admin/widgets.py:65
+msgid "Date:"
+msgstr "Datum:"
+
+#: contrib/admin/widgets.py:65
+msgid "Time:"
+msgstr "Tid:"
+
+#: contrib/admin/widgets.py:89
+msgid "Currently:"
+msgstr "Aktuell:"
+
+#: contrib/admin/widgets.py:89
+msgid "Change:"
+msgstr "Ändra:"
+
#: contrib/admin/templates/admin/404.html:4
#: contrib/admin/templates/admin/404.html:8
msgid "Page not found"
@@ -292,17 +457,17 @@ msgid "We're sorry, but the requested page could not be found."
msgstr "Vi beklagar men den begärda sidan hittades inte."
#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/change_form.html:17
+#: contrib/admin/templates/admin/change_list.html:8
+#: contrib/admin/templates/admin/delete_confirmation.html:6
#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/auth/user/change_password.html:10
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
#: contrib/admin/templates/registration/password_reset_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
msgid "Home"
@@ -328,22 +493,28 @@ msgstr ""
"Ett fel har uppstått. Administratören har meddelats via e-post och felet bör "
"vara åtgärdat inom kort. Tack för visat tålamod."
-#: contrib/admin/templates/admin/base.html:26
+#: contrib/admin/templates/admin/base.html:25
msgid "Welcome,"
msgstr "Välkommen,"
-#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin/base.html:25
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
msgid "Documentation"
msgstr "Dokumentation"
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/auth/user/change_password.html:13
+#: 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
msgid "Change password"
msgstr "Ändra lösenord"
-#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/registration/password_change_form.html:3
#: contrib/comments/templates/comments/form.html:6
msgid "Log out"
msgstr "Logga ut"
@@ -356,46 +527,43 @@ msgstr "Django webbplatsadministration"
msgid "Django administration"
msgstr "Django-administration"
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
+#: contrib/admin/templates/admin/change_form.html:19
+#: contrib/admin/templates/admin/index.html:29
msgid "Add"
msgstr "Lägg till"
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
+#: contrib/admin/templates/admin/change_form.html:26
+#: contrib/admin/templates/admin/object_history.html:5
msgid "History"
msgstr "Historik"
-#: contrib/admin/templates/admin/change_form.html:21
+#: contrib/admin/templates/admin/change_form.html:27
msgid "View on site"
msgstr "Visa på webbplats"
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
+#: contrib/admin/templates/admin/change_form.html:37
+#: contrib/admin/templates/admin/auth/user/change_password.html:22
msgid "Please correct the error below."
msgid_plural "Please correct the errors below."
msgstr[0] "Rätta till felet nedan."
msgstr[1] "Rätta till felen nedan."
-#: contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr "Sortering"
-
-#: contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr "Sortera:"
-
-#: contrib/admin/templates/admin/change_list.html:11
+#: contrib/admin/templates/admin/change_list.html:16
#, python-format
msgid "Add %(name)s"
msgstr "Lägg till %(name)s"
-#: contrib/admin/templates/admin/delete_confirmation.html:8
+#: contrib/admin/templates/admin/change_list.html:26
+msgid "Filter"
+msgstr "Filter"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:9
#: contrib/admin/templates/admin/submit_line.html:3
+#: contrib/admin/templates/admin/edit_inline/tabular.html:15
msgid "Delete"
msgstr "Ta bort"
-#: contrib/admin/templates/admin/delete_confirmation.html:13
+#: contrib/admin/templates/admin/delete_confirmation.html:15
#, python-format
msgid ""
"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
@@ -406,7 +574,7 @@ msgstr ""
"relaterade objekt togs bort, men ditt konto har inte rättigheter att ta bort "
"följande objekttyper:"
-#: contrib/admin/templates/admin/delete_confirmation.html:20
+#: contrib/admin/templates/admin/delete_confirmation.html:22
#, python-format
msgid ""
"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
@@ -415,7 +583,7 @@ msgstr ""
"Är du säker på att du vill ta bort %(object_name)s \"%(escaped_object)s\"? "
"Följande relaterade objekt kommer att tas bort:"
-#: contrib/admin/templates/admin/delete_confirmation.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:27
msgid "Yes, I'm sure"
msgstr "Ja, jag är säker"
@@ -424,41 +592,37 @@ msgstr "Ja, jag är säker"
msgid " By %(filter_title)s "
msgstr " Av %(filter_title)s "
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filter"
-
-#: contrib/admin/templates/admin/index.html:17
+#: contrib/admin/templates/admin/index.html:18
#, python-format
msgid "Models available in the %(name)s application."
msgstr "Modeller tillgängliga i applikationen %(name)s."
-#: contrib/admin/templates/admin/index.html:18
+#: contrib/admin/templates/admin/index.html:19
#, python-format
msgid "%(name)s"
msgstr "%(name)s"
-#: contrib/admin/templates/admin/index.html:34
+#: contrib/admin/templates/admin/index.html:35
msgid "Change"
msgstr "Ändra"
-#: contrib/admin/templates/admin/index.html:44
+#: contrib/admin/templates/admin/index.html:45
msgid "You don't have permission to edit anything."
msgstr "Du har inte rättigheter att redigera något."
-#: contrib/admin/templates/admin/index.html:52
+#: contrib/admin/templates/admin/index.html:53
msgid "Recent Actions"
msgstr "Senaste Händelser"
-#: contrib/admin/templates/admin/index.html:53
+#: contrib/admin/templates/admin/index.html:54
msgid "My Actions"
msgstr "Mina händelser"
-#: contrib/admin/templates/admin/index.html:57
+#: contrib/admin/templates/admin/index.html:58
msgid "None available"
msgstr "Inga tillgängliga"
-#: contrib/admin/templates/admin/invalid_setup.html:8
+#: contrib/admin/templates/admin/invalid_setup.html:7
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 "
@@ -467,39 +631,34 @@ msgstr ""
"Någonting är fel med din databasinstallation. Se till att de rätta "
"databastabellerna har skapats och att databasen är läsbar av rätt användare."
-#: contrib/admin/templates/admin/login.html:17
+#: contrib/admin/templates/admin/login.html:19
#: contrib/comments/templates/comments/form.html:6
#: contrib/comments/templates/comments/form.html:8
msgid "Username:"
msgstr "Användarnamn:"
-#: contrib/admin/templates/admin/login.html:20
+#: contrib/admin/templates/admin/login.html:22
#: contrib/comments/templates/comments/form.html:8
msgid "Password:"
msgstr "Lösenord:"
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:31
-msgid "Log in"
-msgstr "Logga in"
-
-#: contrib/admin/templates/admin/object_history.html:17
+#: contrib/admin/templates/admin/object_history.html:16
msgid "Date/time"
msgstr "Datum tid"
-#: contrib/admin/templates/admin/object_history.html:18
+#: contrib/admin/templates/admin/object_history.html:17
msgid "User"
msgstr "Användare"
-#: contrib/admin/templates/admin/object_history.html:19
+#: contrib/admin/templates/admin/object_history.html:18
msgid "Action"
msgstr "Händelse"
-#: contrib/admin/templates/admin/object_history.html:25
+#: contrib/admin/templates/admin/object_history.html:24
msgid "DATE_WITH_TIME_FULL"
msgstr "Y-m-d H:i:s"
-#: contrib/admin/templates/admin/object_history.html:35
+#: contrib/admin/templates/admin/object_history.html:32
msgid ""
"This object doesn't have a change history. It probably wasn't added via this "
"admin site."
@@ -551,26 +710,29 @@ msgstr ""
"Ange först ett användarnamn och ett lösenord. Efter det kommer du att få "
"fler användaralternativ."
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
+#: contrib/admin/templates/admin/auth/user/add_form.html:13
+#: contrib/auth/forms.py:12 contrib/auth/forms.py:49
msgid "Username"
msgstr "Användarnamn"
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
+#: contrib/admin/templates/admin/auth/user/add_form.html:20
#: contrib/admin/templates/admin/auth/user/change_password.html:33
+#: contrib/auth/forms.py:15 contrib/auth/forms.py:50 contrib/auth/forms.py:166
msgid "Password"
msgstr "Lösenord"
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
+#: contrib/admin/templates/admin/auth/user/add_form.html:26
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/auth/forms.py:167
msgid "Password (again)"
msgstr "Lösenord (igen)"
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/admin/templates/admin/auth/user/add_form.html:27
+#: contrib/admin/templates/admin/auth/user/change_password.html:40
msgid "Enter the same password as above, for verification."
msgstr "Fyll i samma lösenord som ovan för verifiering."
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
+#: contrib/admin/templates/admin/auth/user/change_password.html:26
#, python-format
msgid "Enter a new password for the user <strong>%(username)s</strong>."
msgstr "Ange nytt lösenord för användare <strong>%(username)s</strong>."
@@ -652,23 +814,23 @@ msgstr "Tack för att du spenderade lite kvalitetstid med webbplatsen idag."
msgid "Log in again"
msgstr "Logga in igen"
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_change_form.html:6
+#: contrib/admin/templates/registration/password_change_form.html:10
msgid "Password change"
msgstr "Ändra lösenord"
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
msgid "Password change successful"
msgstr "Lösenordet ändrades"
-#: contrib/admin/templates/registration/password_change_done.html:11
+#: contrib/admin/templates/registration/password_change_done.html:12
msgid "Your password was changed."
msgstr "Ditt lösenord har ändrats."
-#: contrib/admin/templates/registration/password_change_form.html:11
+#: 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."
@@ -676,19 +838,19 @@ msgstr ""
"Var god fyll i ditt gamla lösenord för säkerhets skull och skriv sedan in "
"ditt nya lösenord två gånger så vi kan kontrollera att du skrev det rätt."
-#: contrib/admin/templates/registration/password_change_form.html:16
+#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
msgstr "Gammalt lösenord:"
-#: contrib/admin/templates/registration/password_change_form.html:18
+#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
msgstr "Nytt lösenord:"
-#: contrib/admin/templates/registration/password_change_form.html:20
+#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
msgstr "Bekräfta lösenord:"
-#: contrib/admin/templates/registration/password_change_form.html:22
+#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
msgstr "Ändra mitt lösenord"
@@ -760,325 +922,210 @@ msgstr "E-postadress:"
msgid "Reset my password"
msgstr "Nollställ mitt lösenord"
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Datum:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Tid:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Aktuell:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Ändra:"
-
#: contrib/admin/templatetags/admin_list.py:257
msgid "All dates"
msgstr "Alla datum"
-#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267
+#: contrib/admin/views/main.py:65
#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" lades till."
-
-#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr "Du kan ändra det igen nedanför."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Lägg till användare"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "Lösenordet ändrades."
-
-#: contrib/admin/views/auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr "Ändra lösenord: %s"
-
-#: contrib/admin/views/decorators.py:17 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Var god ange ett korrekt användarnamn och lösenord. Tänk på att skilja "
-"mellan gemener och versaler."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Du måste logga in igen eftersom din session har förfallit. Oroa dig inte: "
-"Din data har sparats."
-
-#: contrib/admin/views/decorators.py:76
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Det verkar som att din webläsare inte är konfigurerad att acceptera cookies. "
-"Aktivera cookies, ladda om denna sida och försök igen."
+msgid "Select %s"
+msgstr "Välj %s"
-#: contrib/admin/views/decorators.py:89
+#: contrib/admin/views/main.py:65
#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Din e-postadress är inte ditt användarnamn. Försök med '%s' istället."
-
-#: contrib/admin/views/decorators.py:93
-msgid "Usernames cannot contain the '@' character."
-msgstr "Användarnamn får inte innehålla '@'-tecknet."
+msgid "Select %s to change"
+msgstr "Välj %s att ändra"
-#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
+#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
+#: contrib/admindocs/views.py:57
msgid "tag:"
msgstr "tagg:"
-#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
+#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
+#: contrib/admindocs/views.py:91
msgid "filter:"
msgstr "filter:"
-#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
+#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
+#: contrib/admindocs/views.py:157
msgid "view:"
msgstr "vy:"
-#: contrib/admin/views/doc.py:166
+#: contrib/admindocs/views.py:187
#, python-format
msgid "App %r not found"
msgstr "Applikation %r hittades inte"
-#: contrib/admin/views/doc.py:173
+#: contrib/admindocs/views.py:194
#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Modell %(name)r hittades inte i applikation %(label)r"
+msgid "Model %(model_name)r not found in app %(app_label)r"
+msgstr "Modell %(model_name)r hittades inte i applikation %(app_label)r"
-#: contrib/admin/views/doc.py:185
+#: contrib/admindocs/views.py:206
#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "det relaterade `%(label)s.%(type)s`-objektet"
+msgid "the related `%(app_label)s.%(data_type)s` object"
+msgstr "det relaterade `%(app_label)s.%(data_type)s`-objektet"
-#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226
+#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
+#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
msgid "model:"
msgstr "modell:"
-#: contrib/admin/views/doc.py:216
+#: contrib/admindocs/views.py:237
#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "relaterade `%(label)s.%(name)s`-objekt"
+msgid "related `%(app_label)s.%(object_name)s` objects"
+msgstr "relaterade `%(app_label)s.%(object_name)s`-objekt"
-#: contrib/admin/views/doc.py:221
+#: contrib/admindocs/views.py:242
#, python-format
msgid "all %s"
msgstr "alla %s"
-#: contrib/admin/views/doc.py:226
+#: contrib/admindocs/views.py:247
#, python-format
msgid "number of %s"
msgstr "antal %s"
-#: contrib/admin/views/doc.py:231
+#: contrib/admindocs/views.py:253
#, python-format
msgid "Fields on %s objects"
msgstr "Fält på %s objekt"
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315
+#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
+#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
+#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
msgid "Integer"
msgstr "Heltal"
-#: contrib/admin/views/doc.py:294
+#: contrib/admindocs/views.py:318
msgid "Boolean (Either True or False)"
msgstr "Boolesk (antingen True eller False)"
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314
+#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
#, python-format
msgid "String (up to %(max_length)s)"
msgstr "Sträng (upp till %(max_length)s)"
-#: contrib/admin/views/doc.py:296
+#: contrib/admindocs/views.py:320
msgid "Comma-separated integers"
msgstr "Komma-separerade heltal"
-#: contrib/admin/views/doc.py:297
+#: contrib/admindocs/views.py:321
msgid "Date (without time)"
msgstr "Datum (utan tid)"
-#: contrib/admin/views/doc.py:298
+#: contrib/admindocs/views.py:322
msgid "Date (with time)"
msgstr "Datum (med tid)"
-#: contrib/admin/views/doc.py:299
+#: contrib/admindocs/views.py:323
msgid "Decimal number"
msgstr "Decimaltal"
-#: contrib/admin/views/doc.py:300
+#: contrib/admindocs/views.py:324
msgid "E-mail address"
msgstr "E-postadress"
-#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
+#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
+#: contrib/admindocs/views.py:329
msgid "File path"
msgstr "Sökväg till fil"
-#: contrib/admin/views/doc.py:303
+#: contrib/admindocs/views.py:327
msgid "Floating point number"
msgstr "Flyttal"
-#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89
+#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
msgid "IP address"
msgstr "IP-adress"
-#: contrib/admin/views/doc.py:309
+#: contrib/admindocs/views.py:333
msgid "Boolean (Either True, False or None)"
msgstr "Boolesk (antingen True, False eller None)"
-#: contrib/admin/views/doc.py:310
+#: contrib/admindocs/views.py:334
msgid "Relation to parent model"
msgstr "Relation till förälder-modell"
-#: contrib/admin/views/doc.py:311
+#: contrib/admindocs/views.py:335
msgid "Phone number"
msgstr "Telefonnummer"
-#: contrib/admin/views/doc.py:316
+#: contrib/admindocs/views.py:340
msgid "Text"
msgstr "Text"
-#: contrib/admin/views/doc.py:317
+#: contrib/admindocs/views.py:341
msgid "Time"
msgstr "Tid"
-#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:8
+#: contrib/admindocs/views.py:342 contrib/flatpages/models.py:8
msgid "URL"
msgstr "URL"
-#: contrib/admin/views/doc.py:319
+#: contrib/admindocs/views.py:343
msgid "U.S. state (two uppercase letters)"
msgstr "Delstat i USA (två versaler)"
-#: contrib/admin/views/doc.py:320
+#: contrib/admindocs/views.py:344
msgid "XML text"
msgstr "XML-text"
-#: contrib/admin/views/doc.py:346
+#: contrib/admindocs/views.py:370
#, python-format
msgid "%s does not appear to be a urlpattern object"
msgstr "%s verkar inte vara ett urlpattern-objekt"
-#: contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr "Webbplatsadministration"
-
-#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "Du kan lägga till ytterligare %s nedanför."
-
-#: contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "Lägg till %s"
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "Lade till %s."
-
-#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348 core/validators.py:283
-#: db/models/manipulators.py:309
-msgid "and"
-msgstr "och"
+#: contrib/auth/admin.py:17
+msgid "Personal info"
+msgstr "Personlig information"
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "Ändrade %s."
+#: contrib/auth/admin.py:18
+msgid "Permissions"
+msgstr "Rättigheter"
-#: contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "Tog bort %s."
+#: contrib/auth/admin.py:19
+msgid "Important dates"
+msgstr "Viktiga datum"
-#: contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr "Inga fält ändrade."
+#: contrib/auth/admin.py:20
+msgid "Groups"
+msgstr "Grupper"
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" ändrades."
+#: contrib/auth/admin.py:47
+msgid "Add user"
+msgstr "Lägg till användare"
-#: contrib/admin/views/main.py:362
-#, python-format
+#: contrib/auth/forms.py:13 contrib/auth/models.py:134
msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
msgstr ""
-"%(name)s \"%(obj)s\" lades till. Du kan redigera objektet igen nedanför."
-
-#: contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "Ändra %s"
-
-#: contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Ett eller flera %(fieldname)s i %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Ett eller flera %(fieldname)s i %(name)s:"
-
-#: contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" togs bort."
-
-#: contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr "Är du säker?"
-
-#: contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "Ändringshistorik: %s"
+"Obligatorisk. 30 tecken eller färre. Endast bokstäver, siffror eller "
+"understreck."
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "Välj %s"
+#: contrib/auth/forms.py:14 core/validators.py:72
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Detta värde får endast innehålla bokstäver, siffror och understreck."
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "Välj %s att ändra"
+#: contrib/auth/forms.py:16
+msgid "Password confirmation"
+msgstr "Lösenordsbekräftelse"
-#: contrib/admin/views/main.py:765
-msgid "Database error"
-msgstr "Databasfel"
+#: contrib/auth/forms.py:28
+msgid "A user with that username already exists."
+msgstr "En användare med det användarnamnet finns redan."
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
+#: contrib/auth/forms.py:34 contrib/auth/forms.py:153
+#: contrib/auth/forms.py:178
msgid "The two password fields didn't match."
msgstr "De två lösenordsfälten stämde inte överens."
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "En användare med det användarnamnet finns redan."
+#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:58
+msgid "This account is inactive."
+msgstr "Detta konto är inaktivt."
-#: contrib/auth/forms.py:53
+#: contrib/auth/forms.py:77 contrib/comments/views/comments.py:49
msgid ""
"Your Web browser doesn't appear to have cookies enabled. Cookies are "
"required for logging in."
@@ -1086,11 +1133,11 @@ msgstr ""
"Din webbläsare verkar inte tillåta cookies. Cookies behövs för att kunna "
"logga in."
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Detta konto är inaktivt."
+#: contrib/auth/forms.py:90
+msgid "E-mail"
+msgstr "E-postadress"
-#: contrib/auth/forms.py:84
+#: contrib/auth/forms.py:99
msgid ""
"That e-mail address doesn't have an associated user account. Are you sure "
"you've registered?"
@@ -1098,16 +1145,24 @@ msgstr ""
"Den e-postadressen är inte associerad med något användarkonto. Är du säker "
"på att du har registrerat dig?"
-#: contrib/auth/forms.py:107
+#: contrib/auth/forms.py:124
#, python-format
msgid "Password reset on %s"
-msgstr "Lösenord nollställt: %s"
+msgstr "Lösenord nollställt för %s"
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "De två 'nytt lösenord'-fälten stämde inte överens."
+#: contrib/auth/forms.py:131
+msgid "Old password"
+msgstr "Gammalt lösenord"
-#: contrib/auth/forms.py:124
+#: contrib/auth/forms.py:132
+msgid "New password"
+msgstr "Nytt lösenord"
+
+#: contrib/auth/forms.py:133
+msgid "New password confirmation"
+msgstr "Bekräfta nytt lösenord"
+
+#: contrib/auth/forms.py:145
msgid "Your old password was entered incorrectly. Please enter it again."
msgstr "Ditt gamla lösenord var felaktigt ifyllt. Var vänlig fyll i det igen."
@@ -1131,39 +1186,31 @@ msgstr "rättigheter"
msgid "group"
msgstr "grupp"
-#: contrib/auth/models.py:98 contrib/auth/models.py:141
+#: contrib/auth/models.py:98 contrib/auth/models.py:144
msgid "groups"
msgstr "grupper"
-#: contrib/auth/models.py:131
+#: contrib/auth/models.py:134
msgid "username"
msgstr "användarnamn"
-#: contrib/auth/models.py:131
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Obligatorisk. 30 tecken eller färre. Endast bokstäver, siffror eller "
-"understreck."
-
-#: contrib/auth/models.py:132
+#: contrib/auth/models.py:135
msgid "first name"
msgstr "förnamn"
-#: contrib/auth/models.py:133
+#: contrib/auth/models.py:136
msgid "last name"
msgstr "efternamn"
-#: contrib/auth/models.py:134
+#: contrib/auth/models.py:137
msgid "e-mail address"
msgstr "e-postadress"
-#: contrib/auth/models.py:135
+#: contrib/auth/models.py:138
msgid "password"
msgstr "lösenord"
-#: contrib/auth/models.py:135
+#: contrib/auth/models.py:138
msgid ""
"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
"password form</a>."
@@ -1171,31 +1218,31 @@ msgstr ""
"Använd '[algo]$[salt]$[hexdigest]' eller använd <a href=\"password/\">Ändra "
"lösenord-formuläret</a>."
-#: contrib/auth/models.py:136
+#: contrib/auth/models.py:139
msgid "staff status"
msgstr "personalstatus"
-#: contrib/auth/models.py:136
+#: contrib/auth/models.py:139
msgid "Designates whether the user can log into this admin site."
msgstr "Avgör om användaren kan logga in på denna adminsida."
-#: contrib/auth/models.py:137
+#: contrib/auth/models.py:140
msgid "active"
msgstr "aktiv"
-#: contrib/auth/models.py:137
+#: contrib/auth/models.py:140
msgid ""
"Designates whether this user should be treated as active. Unselect this "
"instead of deleting accounts."
msgstr ""
-"Anger om användaren skall betraktas som aktiv. Avmarkera detta istället "
-"för att ta bort konton."
+"Anger om användaren skall betraktas som aktiv. Avmarkera detta istället för "
+"att ta bort konton."
-#: contrib/auth/models.py:138
+#: contrib/auth/models.py:141
msgid "superuser status"
msgstr "superanvändare"
-#: contrib/auth/models.py:138
+#: contrib/auth/models.py:141
msgid ""
"Designates that this user has all permissions without explicitly assigning "
"them."
@@ -1203,15 +1250,15 @@ msgstr ""
"Anger att denna användare har alla rättigheter utan att uttryckligen "
"tilldela dem."
-#: contrib/auth/models.py:139
+#: contrib/auth/models.py:142
msgid "last login"
msgstr "senaste inloggning"
-#: contrib/auth/models.py:140
+#: contrib/auth/models.py:143
msgid "date joined"
msgstr "registreringsdatum"
-#: contrib/auth/models.py:142
+#: contrib/auth/models.py:145
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
@@ -1219,43 +1266,36 @@ msgstr ""
"Förutom de rättigheterna som utdelas manuellt så kommer användaren dessutom "
"få samma rättigheter som de grupper där han/hon är medlem."
-#: contrib/auth/models.py:143
+#: contrib/auth/models.py:146
msgid "user permissions"
msgstr "användarättigheter"
-#: contrib/auth/models.py:147
+#: contrib/auth/models.py:150
msgid "user"
msgstr "användare"
-#: contrib/auth/models.py:148
+#: contrib/auth/models.py:151
msgid "users"
msgstr "användare"
-#: contrib/auth/models.py:154
-msgid "Personal info"
-msgstr "Personlig information"
-
-#: contrib/auth/models.py:155
-msgid "Permissions"
-msgstr "Rättigheter"
-
-#: contrib/auth/models.py:156
-msgid "Important dates"
-msgstr "Viktiga datum"
-
-#: contrib/auth/models.py:157
-msgid "Groups"
-msgstr "Grupper"
-
-#: contrib/auth/models.py:316
+#: contrib/auth/models.py:306
msgid "message"
msgstr "meddelande"
-#: contrib/auth/views.py:47
+#: contrib/auth/views.py:49
msgid "Logged out"
msgstr "Utloggad"
-#: contrib/comments/models.py:71 contrib/comments/models.py:176
+#: contrib/auth/views.py:116
+msgid "Password changed successfully."
+msgstr "Lösenordet ändrades."
+
+#: contrib/auth/views.py:122
+#, python-format
+msgid "Change password: %s"
+msgstr "Ändra lösenord: %s"
+
+#: contrib/comments/models.py:71 contrib/comments/models.py:164
msgid "object ID"
msgstr "objektets ID"
@@ -1264,7 +1304,7 @@ msgid "headline"
msgstr "rubrik"
#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:177
+#: contrib/comments/models.py:165
msgid "comment"
msgstr "kommentar"
@@ -1304,11 +1344,11 @@ msgstr "betyg #8"
msgid "is valid rating"
msgstr "är ett giltigt betyg"
-#: contrib/comments/models.py:87 contrib/comments/models.py:179
+#: contrib/comments/models.py:87 contrib/comments/models.py:167
msgid "date/time submitted"
msgstr "skickat datum/tid"
-#: contrib/comments/models.py:88 contrib/comments/models.py:180
+#: contrib/comments/models.py:88 contrib/comments/models.py:168
msgid "is public"
msgstr "är offentlig"
@@ -1328,11 +1368,11 @@ msgstr ""
msgid "comments"
msgstr "kommentarer"
-#: contrib/comments/models.py:140 contrib/comments/models.py:222
+#: contrib/comments/models.py:128 contrib/comments/models.py:199
msgid "Content object"
msgstr "Innehållsobjekt"
-#: contrib/comments/models.py:168
+#: contrib/comments/models.py:156
#, python-format
msgid ""
"Posted by %(user)s at %(date)s\n"
@@ -1347,48 +1387,48 @@ msgstr ""
"\n"
"http://%(domain)s%(url)s"
-#: contrib/comments/models.py:178
+#: contrib/comments/models.py:166
msgid "person's name"
msgstr "personens namn"
-#: contrib/comments/models.py:181
+#: contrib/comments/models.py:169
msgid "ip address"
msgstr "IP-adress"
-#: contrib/comments/models.py:183
+#: contrib/comments/models.py:171
msgid "approved by staff"
msgstr "godkänd av personal"
-#: contrib/comments/models.py:187
+#: contrib/comments/models.py:175
msgid "free comment"
msgstr "fri kommentar"
-#: contrib/comments/models.py:188
+#: contrib/comments/models.py:176
msgid "free comments"
msgstr "fria kommentarer"
-#: contrib/comments/models.py:250
+#: contrib/comments/models.py:227
msgid "score"
msgstr "poäng"
-#: contrib/comments/models.py:251
+#: contrib/comments/models.py:228
msgid "score date"
msgstr "poäng tilldelad"
-#: contrib/comments/models.py:255
+#: contrib/comments/models.py:232
msgid "karma score"
msgstr "karmapoäng"
-#: contrib/comments/models.py:256
+#: contrib/comments/models.py:233
msgid "karma scores"
msgstr "karmapoäng"
-#: contrib/comments/models.py:260
+#: contrib/comments/models.py:237
#, python-format
msgid "%(score)d rating by %(user)s"
msgstr "Betyg %(score)d av %(user)s"
-#: contrib/comments/models.py:277
+#: contrib/comments/models.py:254
#, python-format
msgid ""
"This comment was flagged by %(user)s:\n"
@@ -1399,36 +1439,36 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/models.py:285
+#: contrib/comments/models.py:262
msgid "flag date"
msgstr "flaggdatum"
-#: contrib/comments/models.py:289
+#: contrib/comments/models.py:266
msgid "user flag"
msgstr "användarflagga"
-#: contrib/comments/models.py:290
+#: contrib/comments/models.py:267
msgid "user flags"
msgstr "användarflaggor"
-#: contrib/comments/models.py:294
+#: contrib/comments/models.py:271
#, python-format
msgid "Flag by %r"
msgstr "Flaggad av %r"
-#: contrib/comments/models.py:300
+#: contrib/comments/models.py:277
msgid "deletion date"
msgstr "borttagningsdatum"
-#: contrib/comments/models.py:303
+#: contrib/comments/models.py:280
msgid "moderator deletion"
msgstr "borttaget av moderator"
-#: contrib/comments/models.py:304
+#: contrib/comments/models.py:281
msgid "moderator deletions"
msgstr "borttagna av moderator"
-#: contrib/comments/models.py:308
+#: contrib/comments/models.py:285
#, python-format
msgid "Moderator deletion by %r"
msgstr "Borttaget av moderator %r"
@@ -1469,12 +1509,12 @@ msgstr "Förhandsgranska kommentar"
msgid "Your name:"
msgstr "Ditt namn:"
-#: contrib/comments/views/comments.py:28
+#: contrib/comments/views/comments.py:76
msgid ""
"This rating is required because you've entered at least one other rating."
msgstr "Detta betyg krävs eftersom du har fyllt i minst ett annat betyg."
-#: contrib/comments/views/comments.py:112
+#: contrib/comments/views/comments.py:160
#, python-format
msgid ""
"This comment was posted by a user who has posted fewer than %(count)s "
@@ -1497,7 +1537,7 @@ msgstr[1] ""
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:117
+#: contrib/comments/views/comments.py:165
#, python-format
msgid ""
"This comment was posted by a sketchy user:\n"
@@ -1508,23 +1548,23 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
+#: contrib/comments/views/comments.py:238
+#: contrib/comments/views/comments.py:331
msgid "Only POSTs are allowed"
msgstr "Endast POST är tillåtet"
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
+#: contrib/comments/views/comments.py:242
+#: contrib/comments/views/comments.py:335
msgid "One or more of the required fields wasn't submitted"
msgstr "Ett eller flera av de obligatoriska fälten skickades inte"
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
+#: contrib/comments/views/comments.py:246
+#: contrib/comments/views/comments.py:337
msgid "Somebody tampered with the comment form (security violation)"
msgstr "Någon har manipulerat kommentarformuläret (säkerhetsintrång)"
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
+#: contrib/comments/views/comments.py:256
+#: contrib/comments/views/comments.py:343
msgid ""
"The comment form had an invalid 'target' parameter -- the object ID was "
"invalid"
@@ -1532,8 +1572,8 @@ msgstr ""
"Kommentarformuläret hade en ogiltig 'target'-parameter -- objektets ID var "
"ogiltigt"
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
+#: contrib/comments/views/comments.py:307
+#: contrib/comments/views/comments.py:372
msgid "The comment form didn't provide either 'preview' or 'post'"
msgstr ""
"Kommentarformuläret tillhandahöll varken 'förhandsgranska' eller 'post'"
@@ -1562,6 +1602,10 @@ msgstr "innehålls typ"
msgid "content types"
msgstr "innehålls typer"
+#: contrib/flatpages/admin.py:9
+msgid "Advanced options"
+msgstr "Avancerade inställningar"
+
#: contrib/flatpages/models.py:9
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
@@ -1608,32 +1652,27 @@ msgstr "statisk sida"
msgid "flat pages"
msgstr "statiska sidor"
-#: contrib/flatpages/models.py:27
-msgid "Advanced options"
-msgstr "Avancerade inställningar"
-
# Setting these as fuzzy because they might not make sense in Swedish. Consider
# the code's usage of them. They turn numbers such as 1 in to 1st, which isn't
# how we do it in Swedish, we do it by textualizing the number: first, första.
# For the time being, we'll leave these as fuzzy, IMO. // toxik
-
#: contrib/humanize/templatetags/humanize.py:19
-#,fuzzy
+#, fuzzy
msgid "th"
msgstr ":a"
#: contrib/humanize/templatetags/humanize.py:19
-#,fuzzy
+#, fuzzy
msgid "st"
msgstr ":a"
#: contrib/humanize/templatetags/humanize.py:19
-#,fuzzy
+#, fuzzy
msgid "nd"
msgstr ":e"
#: contrib/humanize/templatetags/humanize.py:19
-#,fuzzy
+#, fuzzy
msgid "rd"
msgstr ":e"
@@ -1728,6 +1767,58 @@ msgstr "Fyll i ett giltigt CUIT med formatet XX-XXXXXXXX-X eller XXXXXXXXXXXX."
msgid "Invalid CUIT."
msgstr "Felaktigt CUIT."
+#: contrib/localflavor/at/at_states.py:5
+#, fuzzy
+msgid "Burgenland"
+msgstr "Friesland"
+
+#: contrib/localflavor/at/at_states.py:6
+#, fuzzy
+msgid "Carinthia"
+msgstr "Kantabrien"
+
+#: contrib/localflavor/at/at_states.py:7
+#, fuzzy
+msgid "Lower Austria"
+msgstr "Lower Silesia"
+
+#: contrib/localflavor/at/at_states.py:8
+msgid "Upper Austria"
+msgstr ""
+
+#: contrib/localflavor/at/at_states.py:9
+#, fuzzy
+msgid "Salzburg"
+msgstr "Hamburg"
+
+#: contrib/localflavor/at/at_states.py:10
+#, fuzzy
+msgid "Styria"
+msgstr "Soria"
+
+#: contrib/localflavor/at/at_states.py:11
+#, fuzzy
+msgid "Tyrol"
+msgstr "Tokyo"
+
+#: contrib/localflavor/at/at_states.py:12
+msgid "Vorarlberg"
+msgstr ""
+
+#: contrib/localflavor/at/at_states.py:13
+msgid "Vienna"
+msgstr ""
+
+#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
+#: contrib/localflavor/no/forms.py:12
+msgid "Enter a zip code in the format XXXX."
+msgstr "Fyll i postnummer med formatet XXXX."
+
+#: contrib/localflavor/at/forms.py:48
+#, fuzzy
+msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
+msgstr "Fyll i ett giltigt amerikanskt personnummer i formatet XXX-XX-XXXX."
+
#: contrib/localflavor/au/forms.py:16
msgid "Enter a 4 digit post code."
msgstr "Fyll i ett fyrsiffrigt postnummer."
@@ -1878,10 +1969,6 @@ msgstr "Zug"
msgid "Zurich"
msgstr "Zürich"
-#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Fyll i postnummer med formatet XXXX."
-
#: contrib/localflavor/ch/forms.py:64
msgid ""
"Enter a valid Swiss identity or passport card number in X1234567<0 or "
@@ -2804,6 +2891,31 @@ msgstr ""
msgid "West Pomerania"
msgstr ""
+#: contrib/localflavor/ro/forms.py:19
+#, fuzzy
+msgid "Enter a valid CIF."
+msgstr "Fyll i en giltig URL."
+
+#: contrib/localflavor/ro/forms.py:56
+#, fuzzy
+msgid "Enter a valid CNP."
+msgstr "Fyll i en giltig URL."
+
+#: contrib/localflavor/ro/forms.py:141
+#, fuzzy
+msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
+msgstr "Fyll i ett giltigt CUIT med formatet XX-XXXXXXXX-X eller XXXXXXXXXXXX."
+
+#: contrib/localflavor/ro/forms.py:171
+#, fuzzy
+msgid "Phone numbers must be in XXXX-XXXXXX format."
+msgstr "Telefonnummer måste vara i formatet XX-XXXX-XXXX."
+
+#: contrib/localflavor/ro/forms.py:194
+#, fuzzy
+msgid "Enter a valid postal code in the format XXXXXX"
+msgstr "Fyll i ett postnummer med formatet XXX XXX."
+
#: contrib/localflavor/sk/forms.py:30
msgid "Enter a postal code in the format XXXXX or XXX XX."
msgstr "Fyll i ett postnummer med formatet XXXXX eller XXX XX."
@@ -3524,23 +3636,23 @@ msgstr "omdirigera"
msgid "redirects"
msgstr "omdirigeringar"
-#: contrib/sessions/models.py:41
+#: contrib/sessions/models.py:45
msgid "session key"
msgstr "sessionsnyckel"
-#: contrib/sessions/models.py:42
+#: contrib/sessions/models.py:47
msgid "session data"
msgstr "sessionsdata"
-#: contrib/sessions/models.py:43
+#: contrib/sessions/models.py:48
msgid "expire date"
msgstr "utgångsdatum"
-#: contrib/sessions/models.py:48
+#: contrib/sessions/models.py:53
msgid "session"
msgstr "session"
-#: contrib/sessions/models.py:49
+#: contrib/sessions/models.py:54
msgid "sessions"
msgstr "sessioner"
@@ -3552,18 +3664,14 @@ msgstr "domännamn"
msgid "display name"
msgstr "visningsnamn"
-#: contrib/sites/models.py:37
+#: contrib/sites/models.py:38
msgid "site"
msgstr "webbplats"
-#: contrib/sites/models.py:38
+#: contrib/sites/models.py:39
msgid "sites"
msgstr "webbplatser"
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Detta värde får endast innehålla bokstäver, siffror och understreck."
-
#: core/validators.py:76
msgid ""
"This value must contain only letters, numbers, underscores, dashes or "
@@ -3610,7 +3718,7 @@ msgstr "Icke-numeriska tecken är inte tillåtna här."
msgid "This value can't be comprised solely of digits."
msgstr "Detta värde kan inte enbart bestå av siffror."
-#: core/validators.py:128 newforms/fields.py:152
+#: core/validators.py:128 forms/fields.py:158
msgid "Enter a whole number."
msgstr "Fyll i ett heltal."
@@ -3619,36 +3727,31 @@ msgid "Only alphabetical characters are allowed here."
msgstr "Endast bokstäver är tillåtna här."
#: core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr "Årtal måste vara 1900 eller senare."
-
-#: core/validators.py:151
#, python-format
msgid "Invalid date: %s"
msgstr "Ogiltigt datum: %s"
-#: core/validators.py:156 db/models/fields/__init__.py:548
+#: core/validators.py:152 db/models/fields/__init__.py:559
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Fyll i ett giltigt datum med formatet Ã…Ã…Ã…Ã…-MM-DD."
-#: core/validators.py:161
+#: core/validators.py:157
msgid "Enter a valid time in HH:MM format."
msgstr "Fyll i ett giltigt klockslag med formatet TT:MM."
-#: core/validators.py:165 db/models/fields/__init__.py:625
+#: core/validators.py:161 db/models/fields/__init__.py:640
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Fyll i en giltig tidpunkt med formatet Ã…Ã…Ã…Ã…-MM-DD TT:MM."
-#: core/validators.py:170 newforms/fields.py:403
+#: core/validators.py:166 forms/fields.py:409
msgid "Enter a valid e-mail address."
msgstr "Fyll i en giltig e-postadress."
-#: core/validators.py:182 core/validators.py:474 newforms/fields.py:433
-#: oldforms/__init__.py:687
+#: core/validators.py:178 core/validators.py:470 forms/fields.py:427
msgid "No file was submitted. Check the encoding type on the form."
msgstr "Ingen fil skickades. Kontrollera kodningnstypen i formuläret."
-#: core/validators.py:193 newforms/fields.py:459
+#: core/validators.py:189 forms/fields.py:467
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
@@ -3656,28 +3759,28 @@ msgstr ""
"Ladda upp en giltig bild. Filen du laddade upp var antingen ingen bild eller "
"en korrupt bild."
-#: core/validators.py:200
+#: core/validators.py:196
#, python-format
msgid "The URL %s does not point to a valid image."
msgstr "URL:en %s pekar inte på en giltig bild."
-#: core/validators.py:204
+#: core/validators.py:200
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
"Telefonnummer måste vara angivna med formatet XXX-XXX-XXXX. \"%s\" är "
"ogiltigt."
-#: core/validators.py:212
+#: core/validators.py:208
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
msgstr "URL:en %s pekar inte på en giltig QuickTime-video."
-#: core/validators.py:216
+#: core/validators.py:212
msgid "A valid URL is required."
msgstr "En giltig URL krävs."
-#: core/validators.py:230
+#: core/validators.py:226
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
@@ -3686,84 +3789,84 @@ msgstr ""
"Giltig HTML krävs. Specifika fel är:\n"
"%s"
-#: core/validators.py:237
+#: core/validators.py:233
#, python-format
msgid "Badly formed XML: %s"
msgstr "Felaktigt formaterad XML: %s"
-#: core/validators.py:254
+#: core/validators.py:250
#, python-format
msgid "Invalid URL: %s"
msgstr "Felaktig URL: %s"
-#: core/validators.py:259 core/validators.py:261
+#: core/validators.py:255 core/validators.py:257
#, python-format
msgid "The URL %s is a broken link."
msgstr "URL:en %s är en trasig länk."
-#: core/validators.py:267
+#: core/validators.py:263
msgid "Enter a valid U.S. state abbreviation."
msgstr "Fyll i en giltig förkortning för en amerikansk delstat."
-#: core/validators.py:281
+#: core/validators.py:277
#, 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] "Akta din tunga! Ordet %s är inte tillåtet här."
msgstr[1] "Akta din tunga! Orden %s är inte tillåtna här."
-#: core/validators.py:288
+#: core/validators.py:284
#, python-format
msgid "This field must match the '%s' field."
msgstr "Detta fält måste matcha fältet '%s'."
-#: core/validators.py:307
+#: core/validators.py:303
msgid "Please enter something for at least one field."
msgstr "Var god fyll i minst ett fält."
-#: core/validators.py:316 core/validators.py:327
+#: core/validators.py:312 core/validators.py:323
msgid "Please enter both fields or leave them both empty."
msgstr "Fyll antingen i båda fälten eller lämna båda tomma."
-#: core/validators.py:335
+#: core/validators.py:331
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "Detta fält måste anges om %(field)s är %(value)s"
-#: core/validators.py:348
+#: core/validators.py:344
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "Detta fält måste anges om %(field)s inte är %(value)s"
-#: core/validators.py:367
+#: core/validators.py:363
msgid "Duplicate values are not allowed."
msgstr "Dubbletter är inte tillåtna."
-#: core/validators.py:382
+#: core/validators.py:378
#, python-format
msgid "This value must be between %(lower)s and %(upper)s."
msgstr "Detta värde måste vara mellan %(lower)s och %(upper)s."
-#: core/validators.py:384
+#: core/validators.py:380
#, python-format
msgid "This value must be at least %s."
msgstr "Detta värde måste vara minst %s."
-#: core/validators.py:386
+#: core/validators.py:382
#, python-format
msgid "This value must be no more than %s."
msgstr "Detta värde får inte vara mer än %s."
-#: core/validators.py:427
+#: core/validators.py:423
#, python-format
msgid "This value must be a power of %s."
msgstr "Detta värde måste vara en potens av %s."
-#: core/validators.py:437
+#: core/validators.py:433
msgid "Please enter a valid decimal number."
msgstr "Fyll i ett giltigt decimaltal."
-#: core/validators.py:444
+#: core/validators.py:440
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
@@ -3771,7 +3874,7 @@ msgid_plural ""
msgstr[0] "Fyll i ett giltigt decimaltal med som mest %s siffra totalt."
msgstr[1] "Fyll i ett giltigt decimaltal med som mest %s siffror totalt."
-#: core/validators.py:447
+#: core/validators.py:443
#, python-format
msgid ""
"Please enter a valid decimal number with a whole part of at most %s digit."
@@ -3782,7 +3885,7 @@ msgstr[0] ""
msgstr[1] ""
"Fyll i ett giltigt decimaltal med en heltalsdel med som mest %s siffror."
-#: core/validators.py:450
+#: core/validators.py:446
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
@@ -3790,34 +3893,34 @@ msgid_plural ""
msgstr[0] "Fyll i ett giltigt decimaltal med som mest %s decimal."
msgstr[1] "Fyll i ett giltigt decimaltal med som mest %s decimaler."
-#: core/validators.py:458
+#: core/validators.py:454
msgid "Please enter a valid floating point number."
msgstr "Fyll i ett giltigt flyttal."
-#: core/validators.py:467
+#: core/validators.py:463
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr "Se till att filen du laddade upp är minst %s byte stor."
-#: core/validators.py:468
+#: core/validators.py:464
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr "Se till att filen du laddade upp är som mest %s byte stor."
-#: core/validators.py:485
+#: core/validators.py:481
msgid "The format for this field is wrong."
msgstr "Formatet för detta fält är fel."
-#: core/validators.py:500
+#: core/validators.py:496
msgid "This field is invalid."
msgstr "Detta fält är ogiltigt."
-#: core/validators.py:536
+#: core/validators.py:532
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "Kunde inte hämta något från %s."
-#: core/validators.py:539
+#: core/validators.py:535
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
@@ -3825,7 +3928,7 @@ msgstr ""
"URL:en %(url)s returnerade den ogiltiga Content-Type headern '%(contenttype)"
"s'."
-#: core/validators.py:572
+#: core/validators.py:568
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
@@ -3834,7 +3937,7 @@ msgstr ""
"Var god avsluta den oavslutade taggen %(tag)s på rad %(line)s. (Raden börjar "
"med \"%(start)s\".)"
-#: core/validators.py:576
+#: core/validators.py:572
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
@@ -3843,7 +3946,7 @@ msgstr ""
"En del text som börjar på rad %(line)s är inte tillåten i det sammanhanget. "
"(Raden börjar med \"%(start)s\".)"
-#: core/validators.py:581
+#: core/validators.py:577
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
@@ -3852,7 +3955,7 @@ msgstr ""
"\"%(attr)s\" på rad %(line)s är ett ogiltigt attribut. (Raden börjar med \"%"
"(start)s\".)"
-#: core/validators.py:586
+#: core/validators.py:582
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
@@ -3861,7 +3964,7 @@ msgstr ""
"\"<%(tag)s>\" på rad %(line)s är en ogiltig tagg. (Raden börjar med \"%"
"(start)s\".)"
-#: core/validators.py:590
+#: core/validators.py:586
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
@@ -3870,7 +3973,7 @@ msgstr ""
"En tagg på rad %(line)s saknar en eller flera obligatoriska attribut. (Raden "
"börjar med \"%(start)s\".)"
-#: core/validators.py:595
+#: core/validators.py:591
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
@@ -3879,62 +3982,58 @@ msgstr ""
"Attributet \"%(attr)s\" på rad %(line)s har ett ogiltigt värde. (Raden "
"börjar med \"%(start)s\".)"
-#: db/models/manipulators.py:308
+#: db/models/manipulators.py:304
#, python-format
msgid "%(object)s with this %(type)s already exists for the given %(field)s."
msgstr "%(object)s med typen %(type)s finns redan för %(field)s."
-#: db/models/fields/__init__.py:54
+#: db/models/fields/__init__.py:47
#, python-format
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "%(optname)s med detta %(fieldname)s finns redan."
-#: db/models/fields/__init__.py:179 db/models/fields/__init__.py:348
-#: db/models/fields/__init__.py:780 db/models/fields/__init__.py:791
-#: newforms/fields.py:46 oldforms/__init__.py:374
+#: db/models/fields/__init__.py:175 db/models/fields/__init__.py:343
+#: db/models/fields/__init__.py:802 db/models/fields/__init__.py:813
+#: forms/fields.py:52 oldforms/__init__.py:374
msgid "This field is required."
msgstr "Detta fält måste fyllas i."
-#: db/models/fields/__init__.py:448
+#: db/models/fields/__init__.py:457
msgid "This value must be an integer."
msgstr "Detta värde måste vara ett heltal."
-#: db/models/fields/__init__.py:487
+#: db/models/fields/__init__.py:498
msgid "This value must be either True or False."
msgstr "Detta värde måste vara antingen True eller False."
-#: db/models/fields/__init__.py:511
+#: db/models/fields/__init__.py:522
msgid "This field cannot be null."
msgstr "Detta fält får inte vara null."
-#: db/models/fields/__init__.py:689
+#: db/models/fields/__init__.py:709
msgid "This value must be a decimal number."
msgstr "Detta värde måste vara ett decimaltal."
-#: db/models/fields/__init__.py:800
+#: db/models/fields/__init__.py:822
msgid "Enter a valid filename."
msgstr "Fyll i ett giltigt filnamn."
-#: db/models/fields/__init__.py:981
+#: db/models/fields/__init__.py:1013
msgid "This value must be either None, True or False."
msgstr "Detta värde måste vara antingen None, True eller False."
-#: db/models/fields/related.py:94
+#: db/models/fields/related.py:93
#, python-format
msgid "Please enter a valid %s."
msgstr "Var god fyll i giltig %s."
-#: db/models/fields/related.py:721
-msgid "Separate multiple IDs with commas."
-msgstr "Separera flera ID-nummer med kommatecken."
-
-#: db/models/fields/related.py:723
+#: db/models/fields/related.py:729
msgid ""
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
"Håll ner \"Control\" eller \"Command\" på en Mac för att välja fler än en."
-#: db/models/fields/related.py:770
+#: db/models/fields/related.py:773
#, python-format
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
msgid_plural ""
@@ -3944,101 +4043,101 @@ msgstr[0] ""
msgstr[1] ""
"Var god och fyll giltiga %(self)s ID-nummer. Värdena %(value)r är ogiltiga."
-#: newforms/fields.py:47
+#: forms/fields.py:53
msgid "Enter a valid value."
msgstr "Fyll i ett giltigt värde."
-#: newforms/fields.py:124
+#: forms/fields.py:130
#, python-format
msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
msgstr ""
"Kontrollera att detta värde har högst %(max)d tecken (det har %(length)d)."
-#: newforms/fields.py:125
+#: forms/fields.py:131
#, python-format
msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
msgstr ""
"Kontrollera att detta värde har minst %(min)d tecken (det har %(length)d)."
-#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211
+#: forms/fields.py:159 forms/fields.py:188 forms/fields.py:217
#, python-format
msgid "Ensure this value is less than or equal to %s."
msgstr "Kontrollera att detta värde är mindre eller lika med %s."
-#: newforms/fields.py:154 newforms/fields.py:183 newforms/fields.py:212
+#: forms/fields.py:160 forms/fields.py:189 forms/fields.py:218
#, python-format
msgid "Ensure this value is greater than or equal to %s."
msgstr "Kontrollera att detta värde är mer eller lika med %s."
-#: newforms/fields.py:181 newforms/fields.py:210
+#: forms/fields.py:187 forms/fields.py:216
msgid "Enter a number."
msgstr "Fyll i ett tal."
-#: newforms/fields.py:213
+#: forms/fields.py:219
#, python-format
msgid "Ensure that there are no more than %s digits in total."
msgstr "Kontrollera att det inte finns mer än totalt %s siffror."
-#: newforms/fields.py:214
+#: forms/fields.py:220
#, python-format
msgid "Ensure that there are no more than %s decimal places."
msgstr "Kontrollera att det inte finns mer än %s decimaler."
-#: newforms/fields.py:215
+#: forms/fields.py:221
#, python-format
msgid "Ensure that there are no more than %s digits before the decimal point."
msgstr "Kontrollera att det inte finns mer än %s siffror före decimaltecknet."
-#: newforms/fields.py:263 newforms/fields.py:751
+#: forms/fields.py:269 forms/fields.py:799
msgid "Enter a valid date."
msgstr "Fyll i ett giltigt datum."
-#: newforms/fields.py:296 newforms/fields.py:752
+#: forms/fields.py:302 forms/fields.py:800
msgid "Enter a valid time."
msgstr "Fyll i en giltig tid."
-#: newforms/fields.py:335
+#: forms/fields.py:341
msgid "Enter a valid date/time."
msgstr "Fyll i ett giltigt datum/tid."
-#: newforms/fields.py:434
+#: forms/fields.py:428
msgid "No file was submitted."
msgstr "Ingen fil skickades."
-#: newforms/fields.py:435 oldforms/__init__.py:689
+#: forms/fields.py:429 oldforms/__init__.py:693
msgid "The submitted file is empty."
msgstr "Den skickade filen är tom."
-#: newforms/fields.py:497
+#: forms/fields.py:528
msgid "Enter a valid URL."
msgstr "Fyll i en giltig URL."
-#: newforms/fields.py:498
+#: forms/fields.py:529
msgid "This URL appears to be a broken link."
msgstr "Denna URL verkar vara en trasig länk."
-#: newforms/fields.py:560 newforms/models.py:299
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Välj ett giltigt alternativ. Det valet finns inte bland tillgängliga "
-"alternativ."
-
-#: newforms/fields.py:599
+#: forms/fields.py:597 forms/fields.py:648
#, python-format
msgid "Select a valid choice. %(value)s is not one of the available choices."
msgstr ""
"Välj ett giltigt alternativ. %(value)s finns inte bland tillgängliga "
"alternativ."
-#: newforms/fields.py:600 newforms/fields.py:662 newforms/models.py:371
+#: forms/fields.py:649 forms/fields.py:710 forms/models.py:581
msgid "Enter a list of values."
msgstr "Fyll i en lista med värden."
-#: newforms/fields.py:780
+#: forms/fields.py:828
msgid "Enter a valid IPv4 address."
msgstr "Fyll i en giltig IPv4 adress."
-#: newforms/models.py:372
+#: forms/models.py:514
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr ""
+"Välj ett giltigt alternativ. Det valet finns inte bland tillgängliga "
+"alternativ."
+
+#: forms/models.py:582
#, python-format
msgid "Select a valid choice. %s is not one of the available choices."
msgstr ""
@@ -4060,15 +4159,15 @@ msgstr "Radbrytningar är inte tillåtna här."
msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
msgstr "Välj ett giltigt alternativ; '%(data)s' finns inte bland %(choices)s."
-#: oldforms/__init__.py:745
+#: oldforms/__init__.py:754
msgid "Enter a whole number between -32,768 and 32,767."
msgstr "Fyll i ett heltal mellan -32768 och 32767."
-#: oldforms/__init__.py:755
+#: oldforms/__init__.py:764
msgid "Enter a positive number."
msgstr "Fyll i ett positivt tal."
-#: oldforms/__init__.py:765
+#: oldforms/__init__.py:774
msgid "Enter a whole number between 0 and 32,767."
msgstr "Fyll i ett heltal mellan 0 och 32767."
@@ -4302,7 +4401,7 @@ msgstr "Nov."
msgid "Dec."
msgstr "Dec."
-#: utils/text.py:127
+#: utils/text.py:128
msgid "or"
msgstr "eller"
@@ -4356,41 +4455,62 @@ msgstr "%(number)d %(type)s"
msgid ", %(number)d %(type)s"
msgstr ", %(number)d %(type)s"
-#: utils/translation/trans_real.py:403
+#: utils/translation/trans_real.py:401
msgid "DATE_FORMAT"
msgstr "Y-m-d"
-#: utils/translation/trans_real.py:404
+#: utils/translation/trans_real.py:402
msgid "DATETIME_FORMAT"
msgstr "Y-m-d H:i"
-#: utils/translation/trans_real.py:405
+#: utils/translation/trans_real.py:403
msgid "TIME_FORMAT"
msgstr "H:i"
-#: utils/translation/trans_real.py:421
+#: utils/translation/trans_real.py:419
msgid "YEAR_MONTH_FORMAT"
msgstr "F Y"
-#: utils/translation/trans_real.py:422
+#: utils/translation/trans_real.py:420
msgid "MONTH_DAY_FORMAT"
msgstr "j F"
-#: views/generic/create_update.py:43
+#: views/generic/create_update.py:129
#, python-format
msgid "The %(verbose_name)s was created successfully."
msgstr "%(verbose_name)s skapades."
-#: views/generic/create_update.py:117
+#: views/generic/create_update.py:172
#, python-format
msgid "The %(verbose_name)s was updated successfully."
msgstr "%(verbose_name)s uppdaterades."
-#: views/generic/create_update.py:184
+#: views/generic/create_update.py:214
#, python-format
msgid "The %(verbose_name)s was deleted."
msgstr "%(verbose_name)s togs bort."
+#~ msgid "Ordering"
+#~ msgstr "Sortering"
+
+#~ msgid "Order:"
+#~ msgstr "Sortera:"
+
+#~ msgid "Added %s."
+#~ msgstr "Lade till %s."
+
+#~ msgid "Deleted %s."
+#~ msgstr "Tog bort %s."
+
+#~ msgid "The two 'new password' fields didn't match."
+#~ msgstr "De två 'nytt lösenord'-fälten stämde inte överens."
+
+#~ msgid "Year must be 1900 or later."
+#~ msgstr "Årtal måste vara 1900 eller senare."
+
+#~ msgid "Separate multiple IDs with commas."
+#~ msgstr "Separera flera ID-nummer med kommatecken."
+
#~ msgid "Brazilian"
#~ msgstr "Brasilianska"
diff --git a/django/conf/project_template/urls.py b/django/conf/project_template/urls.py
index 98335a151c..7b56d73c9e 100644
--- a/django/conf/project_template/urls.py
+++ b/django/conf/project_template/urls.py
@@ -1,15 +1,16 @@
from django.conf.urls.defaults import *
-# Uncomment this for admin:
-#from django.contrib import admin
+# Uncomment the next two lines to enable the admin:
+# from django.contrib import admin
+# admin.autodiscover()
urlpatterns = patterns('',
# Example:
# (r'^{{ project_name }}/', include('{{ project_name }}.foo.urls')),
- # Uncomment this for admin docs:
- #(r'^admin/doc/', include('django.contrib.admindocs.urls')),
+ # Uncomment the next line to enable admin documentation:
+ # (r'^admin/doc/', include('django.contrib.admindocs.urls')),
- # Uncomment this for admin:
- #('^admin/(.*)', admin.site.root),
+ # Uncomment the next line for to enable the admin:
+ # (r'^admin/(.*)', admin.site.root),
)
diff --git a/django/contrib/admin/__init__.py b/django/contrib/admin/__init__.py
index 56b64faacb..704dc58ee4 100644
--- a/django/contrib/admin/__init__.py
+++ b/django/contrib/admin/__init__.py
@@ -8,9 +8,12 @@ def autodiscover():
not present. This forces an import on them to register any admin bits they
may want.
"""
+ import imp
from django.conf import settings
for app in settings.INSTALLED_APPS:
try:
- __import__("%s.admin" % app)
+ imp.find_module("admin", __import__(app, {}, {}, [app.split(".")[-1]]).__path__)
except ImportError:
- pass
+ # there is no app admin.py, skip it
+ continue
+ __import__("%s.admin" % app)
diff --git a/django/contrib/admin/media/css/rtl.css b/django/contrib/admin/media/css/rtl.css
index 1974e7c2ec..54175a7f9a 100644
--- a/django/contrib/admin/media/css/rtl.css
+++ b/django/contrib/admin/media/css/rtl.css
@@ -44,3 +44,6 @@ div.breadcrumbs { text-align:right; }
.selector { float: right;}
.selector .selector-filter { text-align: right;}
+
+/* x unsorted */
+.inline-related h2 { text-align:right }
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index 501014a0d5..d161c58e64 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -1,5 +1,4 @@
-from django import oldforms, template
-from django import forms
+from django import forms, template
from django.forms.formsets import all_valid
from django.forms.models import modelform_factory, inlineformset_factory
from django.forms.models import BaseInlineFormset
@@ -15,7 +14,10 @@ from django.utils.safestring import mark_safe
from django.utils.text import capfirst, get_text_list
from django.utils.translation import ugettext as _
from django.utils.encoding import force_unicode
-import sets
+try:
+ set
+except NameError:
+ from sets import Set as set # Python 2.3 fallback
HORIZONTAL, VERTICAL = 1, 2
# returns the <ul> class for a given radio_admin field
@@ -90,7 +92,7 @@ class Fieldline(object):
yield AdminField(self.form, field, is_first=(i == 0))
def errors(self):
- return mark_safe(u'\n'.join([self.form[f].errors.as_ul() for f in self.fields]))
+ return mark_safe(u'\n'.join([self.form[f].errors.as_ul() for f in self.fields]).strip('\n'))
class AdminField(object):
def __init__(self, form, field, is_first):
@@ -130,6 +132,23 @@ class BaseModelAdmin(object):
If kwargs are given, they're passed to the form Field's constructor.
"""
+
+ # If the field specifies choices, we don't need to look for special
+ # admin widgets - we just need to use a select widget of some kind.
+ if db_field.choices:
+ if db_field.name in self.radio_fields:
+ # If the field is named as a radio_field, use a RadioSelect
+ kwargs['widget'] = widgets.AdminRadioSelect(
+ choices=db_field.get_choices(include_blank=db_field.blank,
+ blank_choice=[('', _('None'))]),
+ attrs={
+ 'class': get_ul_class(self.radio_fields[db_field.name]),
+ }
+ )
+ else:
+ # Otherwise, use the default select widget.
+ return db_field.formfield(**kwargs)
+
# For DateTimeFields, use a special field and widget.
if isinstance(db_field, models.DateTimeField):
kwargs['form_class'] = forms.SplitDateTimeField
@@ -162,10 +181,13 @@ class BaseModelAdmin(object):
kwargs['empty_label'] = db_field.blank and _('None') or None
else:
if isinstance(db_field, models.ManyToManyField):
- if db_field.name in self.raw_id_fields:
+ # If it uses an intermediary model, don't show field in admin.
+ if db_field.rel.through is not None:
+ return None
+ elif db_field.name in self.raw_id_fields:
kwargs['widget'] = widgets.ManyToManyRawIdWidget(db_field.rel)
kwargs['help_text'] = ''
- elif db_field.name in (self.filter_vertical + self.filter_horizontal):
+ elif db_field.name in (list(self.filter_vertical) + list(self.filter_horizontal)):
kwargs['widget'] = widgets.FilteredSelectMultiple(db_field.verbose_name, (db_field.name in self.filter_vertical))
# Wrap the widget's render() method with a method that adds
# extra HTML to the end of the rendered output.
@@ -174,15 +196,6 @@ class BaseModelAdmin(object):
if not db_field.name in self.raw_id_fields:
formfield.widget = widgets.RelatedFieldWidgetWrapper(formfield.widget, db_field.rel, self.admin_site)
return formfield
-
- if db_field.choices and db_field.name in self.radio_fields:
- kwargs['widget'] = widgets.AdminRadioSelect(
- choices=db_field.get_choices(include_blank=db_field.blank,
- blank_choice=[('', _('None'))]),
- attrs={
- 'class': get_ul_class(self.radio_fields[db_field.name]),
- }
- )
# For any other type of field, just call its formfield() method.
return db_field.formfield(**kwargs)
@@ -210,7 +223,7 @@ class ModelAdmin(BaseModelAdmin):
save_on_top = False
ordering = None
inlines = []
-
+
# Custom templates (designed to be over-ridden in subclasses)
change_form_template = None
change_list_template = None
@@ -261,7 +274,7 @@ class ModelAdmin(BaseModelAdmin):
js.extend(['js/getElementsBySelector.js', 'js/dom-drag.js' , 'js/admin/ordering.js'])
if self.filter_vertical or self.filter_horizontal:
js.extend(['js/SelectBox.js' , 'js/SelectFilter2.js'])
-
+
return forms.Media(js=['%s%s' % (settings.ADMIN_MEDIA_PREFIX, url) for url in js])
media = property(_media)
@@ -345,7 +358,7 @@ class ModelAdmin(BaseModelAdmin):
pk_value = new_object._get_pk_val()
LogEntry.objects.log_action(request.user.id, ContentType.objects.get_for_model(self.model).id, pk_value, force_unicode(new_object), ADDITION)
- msg = _('The %(name)s "%(obj)s" was added successfully.') % {'name': opts.verbose_name, 'obj': new_object}
+ msg = _('The %(name)s "%(obj)s" was added successfully.') % {'name': force_unicode(opts.verbose_name), 'obj': new_object}
# Here, we distinguish between different save types by checking for
# the presence of keys in request.POST.
if request.POST.has_key("_continue"):
@@ -359,7 +372,7 @@ class ModelAdmin(BaseModelAdmin):
# escape() calls force_unicode.
(escape(pk_value), escape(new_object)))
elif request.POST.has_key("_addanother"):
- request.user.message_set.create(message=msg + ' ' + (_("You may add another %s below.") % opts.verbose_name))
+ request.user.message_set.create(message=msg + ' ' + (_("You may add another %s below.") % force_unicode(opts.verbose_name)))
return HttpResponseRedirect(request.path)
else:
request.user.message_set.create(message=msg)
@@ -378,7 +391,7 @@ class ModelAdmin(BaseModelAdmin):
Saves the object in the "change" stage and returns an HttpResponseRedirect.
`form` is a bound Form instance that's verified to be valid.
-
+
`formsets` is a sequence of InlineFormSet instances that are verified to be valid.
"""
from django.contrib.admin.models import LogEntry, CHANGE
@@ -394,20 +407,20 @@ class ModelAdmin(BaseModelAdmin):
change_message = []
if form.changed_data:
change_message.append(_('Changed %s.') % get_text_list(form.changed_data, _('and')))
-
+
if formsets:
for formset in formsets:
for added_object in formset.new_objects:
- change_message.append(_('Added %(name)s "%(object)s".')
+ change_message.append(_('Added %(name)s "%(object)s".')
% {'name': added_object._meta.verbose_name,
'object': added_object})
for changed_object, changed_fields in formset.changed_objects:
- change_message.append(_('Changed %(list)s for %(name)s "%(object)s".')
- % {'list': get_text_list(changed_fields, _('and')),
- 'name': changed_object._meta.verbose_name,
+ change_message.append(_('Changed %(list)s for %(name)s "%(object)s".')
+ % {'list': get_text_list(changed_fields, _('and')),
+ 'name': changed_object._meta.verbose_name,
'object': changed_object})
for deleted_object in formset.deleted_objects:
- change_message.append(_('Deleted %(name)s "%(object)s".')
+ change_message.append(_('Deleted %(name)s "%(object)s".')
% {'name': deleted_object._meta.verbose_name,
'object': deleted_object})
change_message = ' '.join(change_message)
@@ -415,7 +428,7 @@ class ModelAdmin(BaseModelAdmin):
change_message = _('No fields changed.')
LogEntry.objects.log_action(request.user.id, ContentType.objects.get_for_model(self.model).id, pk_value, force_unicode(new_object), CHANGE, change_message)
- msg = _('The %(name)s "%(obj)s" was changed successfully.') % {'name': opts.verbose_name, 'obj': new_object}
+ msg = _('The %(name)s "%(obj)s" was changed successfully.') % {'name': force_unicode(opts.verbose_name), 'obj': new_object}
if request.POST.has_key("_continue"):
request.user.message_set.create(message=msg + ' ' + _("You may edit it again below."))
if request.REQUEST.has_key('_popup'):
@@ -423,10 +436,10 @@ class ModelAdmin(BaseModelAdmin):
else:
return HttpResponseRedirect(request.path)
elif request.POST.has_key("_saveasnew"):
- request.user.message_set.create(message=_('The %(name)s "%(obj)s" was added successfully. You may edit it again below.') % {'name': opts.verbose_name, 'obj': new_object})
+ request.user.message_set.create(message=_('The %(name)s "%(obj)s" was added successfully. You may edit it again below.') % {'name': force_unicode(opts.verbose_name), 'obj': new_object})
return HttpResponseRedirect("../%s/" % pk_value)
elif request.POST.has_key("_addanother"):
- request.user.message_set.create(message=msg + ' ' + (_("You may add another %s below.") % opts.verbose_name))
+ request.user.message_set.create(message=msg + ' ' + (_("You may add another %s below.") % force_unicode(opts.verbose_name)))
return HttpResponseRedirect("../add/")
else:
request.user.message_set.create(message=msg)
@@ -504,7 +517,7 @@ class ModelAdmin(BaseModelAdmin):
inline_admin_formsets.append(inline_admin_formset)
context = {
- 'title': _('Add %s') % opts.verbose_name,
+ 'title': _('Add %s') % force_unicode(opts.verbose_name),
'adminform': adminForm,
'is_popup': request.REQUEST.has_key('_popup'),
'show_delete': False,
@@ -534,7 +547,7 @@ class ModelAdmin(BaseModelAdmin):
raise PermissionDenied
if obj is None:
- raise Http404('%s object with primary key %r does not exist.' % (opts.verbose_name, escape(object_id)))
+ raise Http404('%s object with primary key %r does not exist.' % (force_unicode(opts.verbose_name), escape(object_id)))
if request.POST and request.POST.has_key("_saveasnew"):
return self.add_view(request, form_url='../../add/')
@@ -557,17 +570,16 @@ class ModelAdmin(BaseModelAdmin):
adminForm = AdminForm(form, self.get_fieldsets(request, obj), self.prepopulated_fields)
media = self.media + adminForm.media
- for fs in inline_formsets:
- media = media + fs.media
inline_admin_formsets = []
for inline, formset in zip(self.inline_instances, inline_formsets):
fieldsets = list(inline.get_fieldsets(request, obj))
inline_admin_formset = InlineAdminFormSet(inline, formset, fieldsets)
inline_admin_formsets.append(inline_admin_formset)
+ media = media + inline_admin_formset.media
context = {
- 'title': _('Change %s') % opts.verbose_name,
+ 'title': _('Change %s') % force_unicode(opts.verbose_name),
'adminform': adminForm,
'object_id': object_id,
'original': obj,
@@ -599,7 +611,7 @@ class ModelAdmin(BaseModelAdmin):
if ERROR_FLAG in request.GET.keys():
return render_to_response('admin/invalid_setup.html', {'title': _('Database error')})
return HttpResponseRedirect(request.path + '?' + ERROR_FLAG + '=1')
-
+
context = {
'title': cl.title,
'is_popup': cl.is_popup,
@@ -632,12 +644,12 @@ class ModelAdmin(BaseModelAdmin):
raise PermissionDenied
if obj is None:
- raise Http404('%s object with primary key %r does not exist.' % (opts.verbose_name, escape(object_id)))
+ raise Http404('%s object with primary key %r does not exist.' % (force_unicode(opts.verbose_name), escape(object_id)))
# Populate deleted_objects, a data structure of all related objects that
# will also be deleted.
deleted_objects = [mark_safe(u'%s: <a href="../../%s/">%s</a>' % (escape(force_unicode(capfirst(opts.verbose_name))), quote(object_id), escape(obj))), []]
- perms_needed = sets.Set()
+ perms_needed = set()
get_deleted_objects(deleted_objects, perms_needed, request.user, obj, opts, 1, self.admin_site)
if request.POST: # The user has already confirmed the deletion.
@@ -650,10 +662,10 @@ class ModelAdmin(BaseModelAdmin):
if not self.has_change_permission(request, None):
return HttpResponseRedirect("../../../../")
return HttpResponseRedirect("../../")
-
+
context = {
"title": _("Are you sure?"),
- "object_name": opts.verbose_name,
+ "object_name": force_unicode(opts.verbose_name),
"object": obj,
"deleted_objects": deleted_objects,
"perms_lacking": perms_needed,
@@ -681,7 +693,7 @@ class ModelAdmin(BaseModelAdmin):
context = {
'title': _('Change history: %s') % force_unicode(obj),
'action_list': action_list,
- 'module_name': capfirst(opts.verbose_name_plural),
+ 'module_name': capfirst(force_unicode(opts.verbose_name_plural)),
'object': obj,
'root_path': self.admin_site.root_path,
}
@@ -761,6 +773,13 @@ class InlineAdminFormSet(object):
for field_name in flatten_fieldsets(self.fieldsets):
yield self.formset.form.base_fields[field_name]
+ def _media(self):
+ media = self.formset.media
+ for fs in self:
+ media = media + fs.media
+ return media
+ media = property(_media)
+
class InlineAdminForm(AdminForm):
"""
A wrapper around an inline form for use in the admin system.
diff --git a/django/contrib/admin/sites.py b/django/contrib/admin/sites.py
index bb4dc58ece..26e935e7fb 100644
--- a/django/contrib/admin/sites.py
+++ b/django/contrib/admin/sites.py
@@ -1,3 +1,7 @@
+import base64
+import cPickle as pickle
+import re
+
from django import http, template
from django.contrib.admin import ModelAdmin
from django.contrib.auth import authenticate, login
@@ -8,11 +12,7 @@ from django.utils.text import capfirst
from django.utils.translation import ugettext_lazy, ugettext as _
from django.views.decorators.cache import never_cache
from django.conf import settings
-import base64
-import cPickle as pickle
-import datetime
-import md5
-import re
+from django.utils.hashcompat import md5_constructor
ERROR_MESSAGE = ugettext_lazy("Please enter a correct username and password. Note that both fields are case-sensitive.")
LOGIN_FORM_KEY = 'this_is_the_login_form'
@@ -26,16 +26,14 @@ class NotRegistered(Exception):
pass
def _encode_post_data(post_data):
- from django.conf import settings
pickled = pickle.dumps(post_data)
- pickled_md5 = md5.new(pickled + settings.SECRET_KEY).hexdigest()
+ pickled_md5 = md5_constructor(pickled + settings.SECRET_KEY).hexdigest()
return base64.encodestring(pickled + pickled_md5)
def _decode_post_data(encoded_data):
- from django.conf import settings
encoded_data = base64.decodestring(encoded_data)
pickled, tamper_check = encoded_data[:-32], encoded_data[-32:]
- if md5.new(pickled + settings.SECRET_KEY).hexdigest() != tamper_check:
+ if md5_constructor(pickled + settings.SECRET_KEY).hexdigest() != tamper_check:
from django.core.exceptions import SuspiciousOperation
raise SuspiciousOperation, "User may have tampered with session cookie."
return pickle.loads(pickled)
@@ -47,10 +45,10 @@ class AdminSite(object):
register() method, and the root() method can then be used as a Django view function
that presents a full admin interface for the collection of registered models.
"""
-
+
index_template = None
login_template = None
-
+
def __init__(self):
self._registry = {} # model_class class -> admin_class instance
@@ -66,19 +64,33 @@ class AdminSite(object):
If a model is already registered, this will raise AlreadyRegistered.
"""
- do_validate = admin_class and settings.DEBUG
- if do_validate:
- # don't import the humongous validation code unless required
+ # Don't import the humongous validation code unless required
+ if admin_class and settings.DEBUG:
from django.contrib.admin.validation import validate
- admin_class = admin_class or ModelAdmin
- # TODO: Handle options
+ else:
+ validate = lambda model, adminclass: None
+
+ if not admin_class:
+ admin_class = ModelAdmin
if isinstance(model_or_iterable, ModelBase):
model_or_iterable = [model_or_iterable]
for model in model_or_iterable:
if model in self._registry:
raise AlreadyRegistered('The model %s is already registered' % model.__name__)
- if do_validate:
- validate(admin_class, model)
+
+ # If we got **options then dynamically construct a subclass of
+ # admin_class with those **options.
+ if options:
+ # For reasons I don't quite understand, without a __module__
+ # the created class appears to "live" in the wrong place,
+ # which causes issues later on.
+ options['__module__'] = __name__
+ admin_class = type("%sAdmin" % model.__name__, (admin_class,), options)
+
+ # Validate (which might be a no-op)
+ validate(admin_class, model)
+
+ # Instantiate the admin class to save in the registry
self._registry[model] = admin_class(model, self)
def unregister(self, model_or_iterable):
@@ -102,23 +114,23 @@ class AdminSite(object):
return request.user.is_authenticated() and request.user.is_staff
def root(self, request, url):
- """
+ """
Handles main URL routing for the admin app.
`url` is the remainder of the URL -- e.g. 'comments/comment/'.
"""
if request.method == 'GET' and not request.path.endswith('/'):
return http.HttpResponseRedirect(request.path + '/')
-
+
# Figure out the admin base URL path and stash it for later use
self.root_path = re.sub(re.escape(url) + '$', '', request.path)
-
+
url = url.rstrip('/') # Trim trailing slash, if it exists.
# The 'logout' view doesn't require that the person is logged in.
if url == 'logout':
return self.logout(request)
-
+
# Check permission to continue or display login form.
if not self.has_permission(request):
return self.login(request)
@@ -139,7 +151,7 @@ class AdminSite(object):
match = USER_CHANGE_PASSWORD_URL_RE.match(url)
if match:
return self.user_change_password(request, match.group(1))
-
+
if '/' in url:
return self.model_page(request, *url.split('/', 2))
@@ -189,7 +201,6 @@ class AdminSite(object):
This takes into account the USE_I18N setting. If it's set to False, the
generated JavaScript will be leaner and faster.
"""
- from django.conf import settings
if settings.USE_I18N:
from django.views.i18n import javascript_catalog
else:
@@ -249,9 +260,6 @@ class AdminSite(object):
else:
if user.is_active and user.is_staff:
login(request, user)
- # TODO: set last_login with an event.
- user.last_login = datetime.datetime.now()
- user.save()
if request.POST.has_key('post_data'):
post_data = _decode_post_data(request.POST['post_data'])
if post_data and not post_data.has_key(LOGIN_FORM_KEY):
@@ -308,14 +316,14 @@ class AdminSite(object):
# Sort the models alphabetically within each app.
for app in app_list:
app['models'].sort(lambda x, y: cmp(x['name'], y['name']))
-
+
context = {
'title': _('Site administration'),
'app_list': app_list,
'root_path': self.root_path,
}
context.update(extra_context or {})
- return render_to_response(self.index_template or 'admin/index.html', context,
+ return render_to_response(self.index_template or 'admin/index.html', context,
context_instance=template.RequestContext(request)
)
index = never_cache(index)
@@ -330,7 +338,7 @@ class AdminSite(object):
post_data = _encode_post_data(request.POST)
else:
post_data = _encode_post_data({})
-
+
context = {
'title': _('Log in'),
'app_path': request.path,
diff --git a/django/contrib/admin/templates/admin/includes/fieldset.html b/django/contrib/admin/templates/admin/includes/fieldset.html
index a61795cfe4..27e54c75d3 100644
--- a/django/contrib/admin/templates/admin/includes/fieldset.html
+++ b/django/contrib/admin/templates/admin/includes/fieldset.html
@@ -1,6 +1,6 @@
<fieldset class="module aligned {{ fieldset.classes }}">
{% if fieldset.name %}<h2>{{ fieldset.name }}</h2>{% endif %}
- {% if fieldset.description %}<div class="description">{{ fieldset.description }}</div>{% endif %}
+ {% if fieldset.description %}<div class="description">{{ fieldset.description|safe }}</div>{% endif %}
{% for line in fieldset %}
<div class="form-row{% if line.errors %} errors{% endif %} {% for field in line %}{{ field.field.name }} {% endfor %} ">
{{ line.errors }}
@@ -14,4 +14,4 @@
{% endfor %}
</div>
{% endfor %}
-</fieldset> \ No newline at end of file
+</fieldset>
diff --git a/django/contrib/admin/templates/admin_doc/model_detail.html b/django/contrib/admin/templates/admin_doc/model_detail.html
index 81bf87db15..414397f23a 100644
--- a/django/contrib/admin/templates/admin_doc/model_detail.html
+++ b/django/contrib/admin/templates/admin_doc/model_detail.html
@@ -34,7 +34,7 @@
<tr>
<td>{{ field.name }}</td>
<td>{{ field.data_type }}</td>
- <td>{% if field.verbose %}{{ field.verbose }}{% endif %}{% if field.help_text %} - {{ field.help_text }}{% endif %}</td>
+ <td>{% if field.verbose %}{{ field.verbose }}{% endif %}{% if field.help_text %} - {{ field.help_text|safe }}{% endif %}</td>
</tr>
{% endfor %}
</tbody>
diff --git a/django/contrib/admin/templates/registration/password_reset_complete.html b/django/contrib/admin/templates/registration/password_reset_complete.html
new file mode 100644
index 0000000000..fceb167a88
--- /dev/null
+++ b/django/contrib/admin/templates/registration/password_reset_complete.html
@@ -0,0 +1,16 @@
+{% extends "admin/base_site.html" %}
+{% load i18n %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password reset' %}</div>{% endblock %}
+
+{% block title %}{% trans 'Password reset complete' %}{% endblock %}
+
+{% block content %}
+
+<h1>{% trans 'Password reset complete' %}</h1>
+
+<p>{% trans "Your password has been set. You may go ahead and log in now." %}</p>
+
+<p><a href="{{ login_url }}">{% trans 'Log in' %}</a></p>
+
+{% endblock %}
diff --git a/django/contrib/admin/templates/registration/password_reset_confirm.html b/django/contrib/admin/templates/registration/password_reset_confirm.html
new file mode 100644
index 0000000000..9ba0e5af27
--- /dev/null
+++ b/django/contrib/admin/templates/registration/password_reset_confirm.html
@@ -0,0 +1,32 @@
+{% extends "admin/base_site.html" %}
+{% load i18n %}
+
+{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password reset confirmation' %}</div>{% endblock %}
+
+{% block title %}{% trans 'Password reset' %}{% endblock %}
+
+{% block content %}
+
+{% if validlink %}
+
+<h1>{% trans 'Enter new password' %}</h1>
+
+<p>{% trans "Please enter your new password twice so we can verify you typed it in correctly." %}</p>
+
+<form action="" method="post">
+{% if form.new_password1.errors %}{{ form.new_password1.errors }}{% endif %}
+<p class="aligned wide"><label for="id_new_password1">{% trans 'New password:' %}</label>{{ form.new_password1 }}</p>
+{% if form.new_password2.errors %}{{ form.new_password2.errors }}{% endif %}
+<p class="aligned wide"><label for="id_new_password2">{% trans 'Confirm password:' %}</label>{{ form.new_password2 }}</p>
+<p><input type="submit" value="{% trans 'Change my password' %}" /></p>
+</form>
+
+{% else %}
+
+<h1>{% trans 'Password reset unsuccessful' %}</h1>
+
+<p>{% trans "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." %}
+
+{% endif %}
+
+{% endblock %}
diff --git a/django/contrib/admin/templates/registration/password_reset_done.html b/django/contrib/admin/templates/registration/password_reset_done.html
index f97b5688c2..e223bdb9de 100644
--- a/django/contrib/admin/templates/registration/password_reset_done.html
+++ b/django/contrib/admin/templates/registration/password_reset_done.html
@@ -9,6 +9,6 @@
<h1>{% trans 'Password reset successful' %}</h1>
-<p>{% trans "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly." %}</p>
+<p>{% trans "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly." %}</p>
{% endblock %}
diff --git a/django/contrib/admin/templates/registration/password_reset_email.html b/django/contrib/admin/templates/registration/password_reset_email.html
index f765dd0670..3b2d5b0f34 100644
--- a/django/contrib/admin/templates/registration/password_reset_email.html
+++ b/django/contrib/admin/templates/registration/password_reset_email.html
@@ -1,15 +1,15 @@
-{% load i18n %}
+{% load i18n %}{% autoescape off %}
{% trans "You're receiving this e-mail because you requested a password reset" %}
{% blocktrans %}for your user account at {{ site_name }}{% endblocktrans %}.
-{% blocktrans %}Your new password is: {{ new_password }}{% endblocktrans %}
-
-{% trans "Feel free to change this password by going to this page:" %}
-
-http://{{ domain }}/password_change/
-
+{% trans "Please go to the following page and choose a new password:" %}
+{% block reset_link %}
+{{ protocol }}://{{ domain }}/reset/{{ uid }}-{{ token }}/
+{% endblock %}
{% trans "Your username, in case you've forgotten:" %} {{ user.username }}
{% trans "Thanks for using our site!" %}
{% blocktrans %}The {{ site_name }} team{% endblocktrans %}
+
+{% endautoescape %}
diff --git a/django/contrib/admin/templates/registration/password_reset_form.html b/django/contrib/admin/templates/registration/password_reset_form.html
index d8c7d03f93..4ecebc77a1 100644
--- a/django/contrib/admin/templates/registration/password_reset_form.html
+++ b/django/contrib/admin/templates/registration/password_reset_form.html
@@ -9,7 +9,7 @@
<h1>{% trans "Password reset" %}</h1>
-<p>{% trans "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you." %}</p>
+<p>{% trans "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one." %}</p>
<form action="" method="post">
{% if form.email.errors %}{{ form.email.errors }}{% endif %}
diff --git a/django/contrib/admin/validation.py b/django/contrib/admin/validation.py
index 2c9cb8554d..a42f2eb985 100644
--- a/django/contrib/admin/validation.py
+++ b/django/contrib/admin/validation.py
@@ -1,3 +1,7 @@
+try:
+ set
+except NameError:
+ from sets import Set as set # Python 2.3 fallback
from django.core.exceptions import ImproperlyConfigured
from django.db import models
@@ -165,6 +169,8 @@ def _validate_base(cls, model):
_check_form_field_existsw('fields', field)
if cls.fieldsets:
raise ImproperlyConfigured('Both fieldsets and fields are specified in %s.' % cls.__name__)
+ if len(cls.fields) > len(set(cls.fields)):
+ raise ImproperlyConfigured('There are duplicate field(s) in %s.fields' % cls.__name__)
# fieldsets
if cls.fieldsets: # default value is None
@@ -179,7 +185,10 @@ def _validate_base(cls, model):
raise ImproperlyConfigured("`fields` key is required in "
"%s.fieldsets[%d][1] field options dict."
% (cls.__name__, idx))
- for field in flatten_fieldsets(cls.fieldsets):
+ flattened_fieldsets = flatten_fieldsets(cls.fieldsets)
+ if len(flattened_fieldsets) > len(set(flattened_fieldsets)):
+ raise ImproperlyConfigured('There are duplicate field(s) in %s.fieldsets' % cls.__name__)
+ for field in flattened_fieldsets:
_check_form_field_existsw("fieldsets[%d][1]['fields']" % idx, field)
# form
diff --git a/django/contrib/admin/views/decorators.py b/django/contrib/admin/views/decorators.py
index 57517cc821..cf0cd704c2 100644
--- a/django/contrib/admin/views/decorators.py
+++ b/django/contrib/admin/views/decorators.py
@@ -1,5 +1,4 @@
import base64
-import md5
import cPickle as pickle
try:
from functools import wraps
@@ -12,6 +11,7 @@ from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login
from django.shortcuts import render_to_response
from django.utils.translation import ugettext_lazy, ugettext as _
+from django.utils.hashcompat import md5_constructor
ERROR_MESSAGE = ugettext_lazy("Please enter a correct username and password. Note that both fields are case-sensitive.")
LOGIN_FORM_KEY = 'this_is_the_login_form'
@@ -35,13 +35,13 @@ def _display_login_form(request, error_message=''):
def _encode_post_data(post_data):
pickled = pickle.dumps(post_data)
- pickled_md5 = md5.new(pickled + settings.SECRET_KEY).hexdigest()
+ pickled_md5 = md5_constructor(pickled + settings.SECRET_KEY).hexdigest()
return base64.encodestring(pickled + pickled_md5)
def _decode_post_data(encoded_data):
encoded_data = base64.decodestring(encoded_data)
pickled, tamper_check = encoded_data[:-32], encoded_data[-32:]
- if md5.new(pickled + settings.SECRET_KEY).hexdigest() != tamper_check:
+ if md5_constructor(pickled + settings.SECRET_KEY).hexdigest() != tamper_check:
from django.core.exceptions import SuspiciousOperation
raise SuspiciousOperation, "User may have tampered with session cookie."
return pickle.loads(pickled)
@@ -87,7 +87,7 @@ def staff_member_required(view_func):
if len(users) == 1:
message = _("Your e-mail address is not your username. Try '%s' instead.") % users[0].username
else:
- # Either we cannot find the user, or if more than 1
+ # Either we cannot find the user, or if more than 1
# we cannot guess which user is the correct one.
message = _("Usernames cannot contain the '@' character.")
return _display_login_form(request, message)
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index 926270cc68..116d9d49f1 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -6,7 +6,6 @@ from django.db import models
from django.db.models.query import QuerySet
from django.utils.encoding import force_unicode, smart_str
from django.utils.translation import ugettext
-from django.utils.safestring import mark_safe
from django.utils.http import urlencode
import operator
diff --git a/django/contrib/admin/widgets.py b/django/contrib/admin/widgets.py
index 1139f8af60..1737920312 100644
--- a/django/contrib/admin/widgets.py
+++ b/django/contrib/admin/widgets.py
@@ -7,8 +7,7 @@ import copy
from django import forms
from django.forms.widgets import RadioFieldRenderer
from django.forms.util import flatatt
-from django.utils.datastructures import MultiValueDict
-from django.utils.text import capfirst, truncate_words
+from django.utils.text import truncate_words
from django.utils.translation import ugettext as _
from django.utils.safestring import mark_safe
from django.utils.encoding import force_unicode
diff --git a/django/contrib/admindocs/views.py b/django/contrib/admindocs/views.py
index e81293adcb..d6d263c851 100644
--- a/django/contrib/admindocs/views.py
+++ b/django/contrib/admindocs/views.py
@@ -5,7 +5,7 @@ from django.contrib.admin.views.decorators import staff_member_required
from django.db import models
from django.shortcuts import render_to_response
from django.core.exceptions import ImproperlyConfigured, ViewDoesNotExist
-from django.http import Http404, get_host
+from django.http import Http404
from django.core import urlresolvers
from django.contrib.admindocs import utils
from django.contrib.sites.models import Site
diff --git a/django/contrib/auth/admin.py b/django/contrib/auth/admin.py
index 998692a6cb..f97935d599 100644
--- a/django/contrib/auth/admin.py
+++ b/django/contrib/auth/admin.py
@@ -1,6 +1,6 @@
from django.contrib.auth.models import User, Group
from django.core.exceptions import PermissionDenied
-from django import oldforms, template
+from django import template
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.utils.translation import ugettext, ugettext_lazy as _
diff --git a/django/contrib/auth/decorators.py b/django/contrib/auth/decorators.py
index 25bc20780e..1371c62eea 100644
--- a/django/contrib/auth/decorators.py
+++ b/django/contrib/auth/decorators.py
@@ -1,7 +1,7 @@
try:
- from functools import wraps, update_wrapper
+ from functools import update_wrapper
except ImportError:
- from django.utils.functional import wraps, update_wrapper # Python 2.3, 2.4 fallback.
+ from django.utils.functional import update_wrapper # Python 2.3, 2.4 fallback.
from django.contrib.auth import REDIRECT_FIELD_NAME
from django.http import HttpResponseRedirect
diff --git a/django/contrib/auth/forms.py b/django/contrib/auth/forms.py
index 13ddcd3841..13647865d4 100644
--- a/django/contrib/auth/forms.py
+++ b/django/contrib/auth/forms.py
@@ -1,10 +1,11 @@
from django.contrib.auth.models import User
from django.contrib.auth import authenticate
+from django.contrib.auth.tokens import default_token_generator
from django.contrib.sites.models import Site
from django.template import Context, loader
-from django.core import validators
from django import forms
from django.utils.translation import ugettext_lazy as _
+from django.utils.http import int_to_base36
class UserCreationForm(forms.ModelForm):
"""
@@ -13,13 +14,13 @@ class UserCreationForm(forms.ModelForm):
username = forms.RegexField(label=_("Username"), max_length=30, regex=r'^\w+$',
help_text = _("Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."),
error_message = _("This value must contain only letters, numbers and underscores."))
- password1 = forms.CharField(label=_("Password"), max_length=60, widget=forms.PasswordInput)
- password2 = forms.CharField(label=_("Password confirmation"), max_length=60, widget=forms.PasswordInput)
-
+ password1 = forms.CharField(label=_("Password"), widget=forms.PasswordInput)
+ password2 = forms.CharField(label=_("Password confirmation"), widget=forms.PasswordInput)
+
class Meta:
model = User
fields = ("username",)
-
+
def clean_username(self):
username = self.cleaned_data["username"]
try:
@@ -27,14 +28,14 @@ class UserCreationForm(forms.ModelForm):
except User.DoesNotExist:
return username
raise forms.ValidationError(_("A user with that username already exists."))
-
+
def clean_password2(self):
password1 = self.cleaned_data["password1"]
password2 = self.cleaned_data["password2"]
if password1 != password2:
raise forms.ValidationError(_("The two password fields didn't match."))
return password2
-
+
def save(self, commit=True):
user = super(UserCreationForm, self).save(commit=False)
user.set_password(self.cleaned_data["password1"])
@@ -48,8 +49,8 @@ class AuthenticationForm(forms.Form):
username/password logins.
"""
username = forms.CharField(label=_("Username"), max_length=30)
- password = forms.CharField(label=_("Password"), max_length=30, widget=forms.PasswordInput)
-
+ password = forms.CharField(label=_("Password"), widget=forms.PasswordInput)
+
def __init__(self, request=None, *args, **kwargs):
"""
If request is passed in, the form will validate that cookies are
@@ -60,36 +61,36 @@ class AuthenticationForm(forms.Form):
self.request = request
self.user_cache = None
super(AuthenticationForm, self).__init__(*args, **kwargs)
-
+
def clean(self):
username = self.cleaned_data.get('username')
password = self.cleaned_data.get('password')
-
+
if username and password:
self.user_cache = authenticate(username=username, password=password)
if self.user_cache is None:
raise forms.ValidationError(_("Please enter a correct username and password. Note that both fields are case-sensitive."))
elif not self.user_cache.is_active:
raise forms.ValidationError(_("This account is inactive."))
-
+
# TODO: determine whether this should move to its own method.
if self.request:
if not self.request.session.test_cookie_worked():
raise forms.ValidationError(_("Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."))
-
+
return self.cleaned_data
-
+
def get_user_id(self):
if self.user_cache:
return self.user_cache.id
return None
-
+
def get_user(self):
return self.user_cache
class PasswordResetForm(forms.Form):
- email = forms.EmailField(label=_("E-mail"), max_length=40)
-
+ email = forms.EmailField(label=_("E-mail"), max_length=75)
+
def clean_email(self):
"""
Validates that a user exists with the given e-mail address.
@@ -98,16 +99,14 @@ class PasswordResetForm(forms.Form):
self.users_cache = User.objects.filter(email__iexact=email)
if len(self.users_cache) == 0:
raise forms.ValidationError(_("That e-mail address doesn't have an associated user account. Are you sure you've registered?"))
-
- def save(self, domain_override=None, email_template_name='registration/password_reset_email.html'):
+
+ def save(self, domain_override=None, email_template_name='registration/password_reset_email.html',
+ use_https=False, token_generator=default_token_generator):
"""
- Calculates a new password randomly and sends it to the user.
+ Generates a one-use only link for resetting password and sends to the user
"""
from django.core.mail import send_mail
for user in self.users_cache:
- new_pass = User.objects.make_random_password()
- user.set_password(new_pass)
- user.save()
if not domain_override:
current_site = Site.objects.get_current()
site_name = current_site.name
@@ -116,36 +115,29 @@ class PasswordResetForm(forms.Form):
site_name = domain = domain_override
t = loader.get_template(email_template_name)
c = {
- 'new_password': new_pass,
'email': user.email,
'domain': domain,
'site_name': site_name,
+ 'uid': int_to_base36(user.id),
'user': user,
+ 'token': token_generator.make_token(user),
+ 'protocol': use_https and 'https' or 'http',
}
send_mail(_("Password reset on %s") % site_name,
t.render(Context(c)), None, [user.email])
-class PasswordChangeForm(forms.Form):
+class SetPasswordForm(forms.Form):
"""
- A form that lets a user change his/her password.
+ A form that lets a user change set his/her password without
+ entering the old password
"""
- old_password = forms.CharField(label=_("Old password"), max_length=30, widget=forms.PasswordInput)
- new_password1 = forms.CharField(label=_("New password"), max_length=30, widget=forms.PasswordInput)
- new_password2 = forms.CharField(label=_("New password confirmation"), max_length=30, widget=forms.PasswordInput)
-
+ new_password1 = forms.CharField(label=_("New password"), widget=forms.PasswordInput)
+ new_password2 = forms.CharField(label=_("New password confirmation"), widget=forms.PasswordInput)
+
def __init__(self, user, *args, **kwargs):
self.user = user
- super(PasswordChangeForm, self).__init__(*args, **kwargs)
-
- def clean_old_password(self):
- """
- Validates that the old_password field is correct.
- """
- old_password = self.cleaned_data["old_password"]
- if not self.user.check_password(old_password):
- raise forms.ValidationError(_("Your old password was entered incorrectly. Please enter it again."))
- return old_password
-
+ super(SetPasswordForm, self).__init__(*args, **kwargs)
+
def clean_new_password2(self):
password1 = self.cleaned_data.get('new_password1')
password2 = self.cleaned_data.get('new_password2')
@@ -153,24 +145,41 @@ class PasswordChangeForm(forms.Form):
if password1 != password2:
raise forms.ValidationError(_("The two password fields didn't match."))
return password2
-
+
def save(self, commit=True):
self.user.set_password(self.cleaned_data['new_password1'])
if commit:
self.user.save()
return self.user
+class PasswordChangeForm(SetPasswordForm):
+ """
+ A form that lets a user change his/her password by entering
+ their old password.
+ """
+ old_password = forms.CharField(label=_("Old password"), widget=forms.PasswordInput)
+
+ def clean_old_password(self):
+ """
+ Validates that the old_password field is correct.
+ """
+ old_password = self.cleaned_data["old_password"]
+ if not self.user.check_password(old_password):
+ raise forms.ValidationError(_("Your old password was entered incorrectly. Please enter it again."))
+ return old_password
+PasswordChangeForm.base_fields.keyOrder = ['old_password', 'new_password1', 'new_password2']
+
class AdminPasswordChangeForm(forms.Form):
"""
A form used to change the password of a user in the admin interface.
"""
- password1 = forms.CharField(label=_("Password"), max_length=60, widget=forms.PasswordInput)
- password2 = forms.CharField(label=_("Password (again)"), max_length=60, widget=forms.PasswordInput)
-
+ password1 = forms.CharField(label=_("Password"), widget=forms.PasswordInput)
+ password2 = forms.CharField(label=_("Password (again)"), widget=forms.PasswordInput)
+
def __init__(self, user, *args, **kwargs):
self.user = user
super(AdminPasswordChangeForm, self).__init__(*args, **kwargs)
-
+
def clean_password2(self):
password1 = self.cleaned_data.get('password1')
password2 = self.cleaned_data.get('password2')
@@ -178,7 +187,7 @@ class AdminPasswordChangeForm(forms.Form):
if password1 != password2:
raise forms.ValidationError(_("The two password fields didn't match."))
return password2
-
+
def save(self, commit=True):
"""
Saves the new password.
diff --git a/django/contrib/auth/management/commands/createsuperuser.py b/django/contrib/auth/management/commands/createsuperuser.py
index 4299762c74..91e39f7235 100644
--- a/django/contrib/auth/management/commands/createsuperuser.py
+++ b/django/contrib/auth/management/commands/createsuperuser.py
@@ -7,7 +7,7 @@ import os
import re
import sys
from optparse import make_option
-from django.contrib.auth.models import User, UNUSABLE_PASSWORD
+from django.contrib.auth.models import User
from django.core import validators
from django.core.management.base import BaseCommand, CommandError
diff --git a/django/contrib/auth/models.py b/django/contrib/auth/models.py
index a0ed4f366f..3ea184a7f8 100644
--- a/django/contrib/auth/models.py
+++ b/django/contrib/auth/models.py
@@ -358,6 +358,9 @@ class AnonymousUser(object):
def has_perm(self, perm):
return False
+ def has_perms(self, perm_list):
+ return False
+
def has_module_perms(self, module):
return False
diff --git a/django/contrib/auth/tests/__init__.py b/django/contrib/auth/tests/__init__.py
index 6242303f46..2458800b22 100644
--- a/django/contrib/auth/tests/__init__.py
+++ b/django/contrib/auth/tests/__init__.py
@@ -1,8 +1,11 @@
-from django.contrib.auth.tests.basic import BASIC_TESTS, PasswordResetTest
+from django.contrib.auth.tests.basic import BASIC_TESTS
+from django.contrib.auth.tests.views import PasswordResetTest
from django.contrib.auth.tests.forms import FORM_TESTS
+from django.contrib.auth.tests.tokens import TOKEN_GENERATOR_TESTS
__test__ = {
'BASIC_TESTS': BASIC_TESTS,
'PASSWORDRESET_TESTS': PasswordResetTest,
'FORM_TESTS': FORM_TESTS,
+ 'TOKEN_GENERATOR_TESTS': TOKEN_GENERATOR_TESTS
}
diff --git a/django/contrib/auth/tests/basic.py b/django/contrib/auth/tests/basic.py
index 76dbdc9cb9..2071710279 100644
--- a/django/contrib/auth/tests/basic.py
+++ b/django/contrib/auth/tests/basic.py
@@ -54,24 +54,3 @@ u'joe@somewhere.org'
>>> u.password
u'!'
"""
-
-from django.test import TestCase
-from django.core import mail
-
-class PasswordResetTest(TestCase):
- fixtures = ['authtestdata.json']
- urls = 'django.contrib.auth.urls'
-
- def test_email_not_found(self):
- "Error is raised if the provided email address isn't currently registered"
- response = self.client.get('/password_reset/')
- self.assertEquals(response.status_code, 200)
- response = self.client.post('/password_reset/', {'email': 'not_a_real_email@email.com'})
- self.assertContains(response, "That e-mail address doesn't have an associated user account")
- self.assertEquals(len(mail.outbox), 0)
-
- def test_email_found(self):
- "Email is sent if a valid email address is provided for password reset"
- response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})
- self.assertEquals(response.status_code, 302)
- self.assertEquals(len(mail.outbox), 1)
diff --git a/django/contrib/auth/tests/forms.py b/django/contrib/auth/tests/forms.py
index 1e1e0a95d4..01f4995bb7 100644
--- a/django/contrib/auth/tests/forms.py
+++ b/django/contrib/auth/tests/forms.py
@@ -2,7 +2,7 @@
FORM_TESTS = """
>>> from django.contrib.auth.models import User
>>> from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
->>> from django.contrib.auth.forms import PasswordChangeForm
+>>> from django.contrib.auth.forms import PasswordChangeForm, SetPasswordForm
The user already exists.
@@ -95,6 +95,32 @@ True
>>> form.non_field_errors()
[]
+SetPasswordForm:
+
+The two new passwords do not match.
+
+>>> data = {
+... 'new_password1': 'abc123',
+... 'new_password2': 'abc',
+... }
+>>> form = SetPasswordForm(user, data)
+>>> form.is_valid()
+False
+>>> form["new_password2"].errors
+[u"The two password fields didn't match."]
+
+The success case.
+
+>>> data = {
+... 'new_password1': 'abc123',
+... 'new_password2': 'abc123',
+... }
+>>> form = SetPasswordForm(user, data)
+>>> form.is_valid()
+True
+
+PasswordChangeForm:
+
The old password is incorrect.
>>> data = {
@@ -132,4 +158,9 @@ The success case.
>>> form.is_valid()
True
+Regression test - check the order of fields:
+
+>>> PasswordChangeForm(user, {}).fields.keys()
+['old_password', 'new_password1', 'new_password2']
+
"""
diff --git a/django/contrib/auth/tests/tokens.py b/django/contrib/auth/tests/tokens.py
new file mode 100644
index 0000000000..6d3a964fe7
--- /dev/null
+++ b/django/contrib/auth/tests/tokens.py
@@ -0,0 +1,29 @@
+TOKEN_GENERATOR_TESTS = """
+>>> from django.contrib.auth.models import User, AnonymousUser
+>>> from django.contrib.auth.tokens import PasswordResetTokenGenerator
+>>> from django.conf import settings
+>>> u = User.objects.create_user('tokentestuser', 'test2@example.com', 'testpw')
+>>> p0 = PasswordResetTokenGenerator()
+>>> tk1 = p0.make_token(u)
+>>> p0.check_token(u, tk1)
+True
+
+Tests to ensure we can use the token after n days, but no greater.
+Use a mocked version of PasswordResetTokenGenerator so we can change
+the value of 'today'
+
+>>> class Mocked(PasswordResetTokenGenerator):
+... def __init__(self, today):
+... self._today_val = today
+... def _today(self):
+... return self._today_val
+
+>>> from datetime import date, timedelta
+>>> p1 = Mocked(date.today() + timedelta(settings.PASSWORD_RESET_TIMEOUT_DAYS))
+>>> p1.check_token(u, tk1)
+True
+>>> p2 = Mocked(date.today() + timedelta(settings.PASSWORD_RESET_TIMEOUT_DAYS + 1))
+>>> p2.check_token(u, tk1)
+False
+
+"""
diff --git a/django/contrib/auth/tests/views.py b/django/contrib/auth/tests/views.py
new file mode 100644
index 0000000000..9abdc3baaf
--- /dev/null
+++ b/django/contrib/auth/tests/views.py
@@ -0,0 +1,88 @@
+
+import re
+from django.contrib.auth.models import User
+from django.test import TestCase
+from django.core import mail
+
+class PasswordResetTest(TestCase):
+ fixtures = ['authtestdata.json']
+ urls = 'django.contrib.auth.urls'
+
+ def test_email_not_found(self):
+ "Error is raised if the provided email address isn't currently registered"
+ response = self.client.get('/password_reset/')
+ self.assertEquals(response.status_code, 200)
+ response = self.client.post('/password_reset/', {'email': 'not_a_real_email@email.com'})
+ self.assertContains(response, "That e-mail address doesn't have an associated user account")
+ self.assertEquals(len(mail.outbox), 0)
+
+ def test_email_found(self):
+ "Email is sent if a valid email address is provided for password reset"
+ response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})
+ self.assertEquals(response.status_code, 302)
+ self.assertEquals(len(mail.outbox), 1)
+ self.assert_("http://" in mail.outbox[0].body)
+
+ def _test_confirm_start(self):
+ # Start by creating the email
+ response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})
+ self.assertEquals(response.status_code, 302)
+ self.assertEquals(len(mail.outbox), 1)
+ return self._read_signup_email(mail.outbox[0])
+
+ def _read_signup_email(self, email):
+ urlmatch = re.search(r"https?://[^/]*(/.*reset/\S*)", email.body)
+ self.assert_(urlmatch is not None, "No URL found in sent email")
+ return urlmatch.group(), urlmatch.groups()[0]
+
+ def test_confirm_valid(self):
+ url, path = self._test_confirm_start()
+ response = self.client.get(path)
+ # redirect to a 'complete' page:
+ self.assertEquals(response.status_code, 200)
+ self.assert_("Please enter your new password" in response.content)
+
+ def test_confirm_invalid(self):
+ url, path = self._test_confirm_start()
+ # Lets munge the token in the path, but keep the same length,
+ # in case the URL conf will reject a different length
+ path = path[:-5] + ("0"*4) + path[-1]
+
+ response = self.client.get(path)
+ self.assertEquals(response.status_code, 200)
+ self.assert_("The password reset link was invalid" in response.content)
+
+ def test_confirm_invalid_post(self):
+ # Same as test_confirm_invalid, but trying
+ # to do a POST instead.
+ url, path = self._test_confirm_start()
+ path = path[:-5] + ("0"*4) + path[-1]
+
+ response = self.client.post(path, {'new_password1': 'anewpassword',
+ 'new_password2':' anewpassword'})
+ # Check the password has not been changed
+ u = User.objects.get(email='staffmember@example.com')
+ self.assert_(not u.check_password("anewpassword"))
+
+ def test_confirm_complete(self):
+ url, path = self._test_confirm_start()
+ response = self.client.post(path, {'new_password1': 'anewpassword',
+ 'new_password2': 'anewpassword'})
+ # It redirects us to a 'complete' page:
+ self.assertEquals(response.status_code, 302)
+ # Check the password has been changed
+ u = User.objects.get(email='staffmember@example.com')
+ self.assert_(u.check_password("anewpassword"))
+
+ # Check we can't use the link again
+ response = self.client.get(path)
+ self.assertEquals(response.status_code, 200)
+ self.assert_("The password reset link was invalid" in response.content)
+
+ def test_confirm_different_passwords(self):
+ url, path = self._test_confirm_start()
+ response = self.client.post(path, {'new_password1': 'anewpassword',
+ 'new_password2':' x'})
+ self.assertEquals(response.status_code, 200)
+ self.assert_("The two password fields didn't match" in response.content)
+
diff --git a/django/contrib/auth/tokens.py b/django/contrib/auth/tokens.py
new file mode 100644
index 0000000000..c9b353583c
--- /dev/null
+++ b/django/contrib/auth/tokens.py
@@ -0,0 +1,66 @@
+from datetime import date
+from django.conf import settings
+from django.utils.http import int_to_base36, base36_to_int
+
+class PasswordResetTokenGenerator(object):
+ """
+ Stratgy object used to generate and check tokens for the password
+ reset mechanism.
+ """
+ def make_token(self, user):
+ """
+ Returns a token that can be used once to do a password reset
+ for the given user.
+ """
+ return self._make_token_with_timestamp(user, self._num_days(self._today()))
+
+ def check_token(self, user, token):
+ """
+ Check that a password reset token is correct for a given user.
+ """
+ # Parse the tokem
+ try:
+ ts_b36, hash = token.split("-")
+ except ValueError:
+ return False
+
+ try:
+ ts = base36_to_int(ts_b36)
+ except ValueError:
+ return False
+
+ # Check that the timestamp/uid has not been tampered with
+ if self._make_token_with_timestamp(user, ts) != token:
+ return False
+
+ # Check the timestamp is within limit
+ if (self._num_days(self._today()) - ts) > settings.PASSWORD_RESET_TIMEOUT_DAYS:
+ return False
+
+ return True
+
+ def _make_token_with_timestamp(self, user, timestamp):
+ # timestamp is number of days since 2001-1-1. Converted to
+ # base 36, this gives us a 3 digit string until about 2121
+ ts_b36 = int_to_base36(timestamp)
+
+ # By hashing on the internal state of the user and using state
+ # that is sure to change (the password salt will change as soon as
+ # the password is set, at least for current Django auth, and
+ # last_login will also change), we produce a hash that will be
+ # invalid as soon as it is used.
+ # We limit the hash to 20 chars to keep URL short
+ from django.utils.hashcompat import sha_constructor
+ hash = sha_constructor(settings.SECRET_KEY + unicode(user.id) +
+ user.password + unicode(user.last_login) +
+ unicode(timestamp)).hexdigest()[::2]
+ return "%s-%s" % (ts_b36, hash)
+
+ def _num_days(self, dt):
+ return (dt - date(2001,1,1)).days
+
+ def _today(self):
+ # Used for mocking in tests
+ return date.today()
+
+default_token_generator = PasswordResetTokenGenerator()
diff --git a/django/contrib/auth/urls.py b/django/contrib/auth/urls.py
index 5ddfcf15e8..72052c3795 100644
--- a/django/contrib/auth/urls.py
+++ b/django/contrib/auth/urls.py
@@ -5,9 +5,12 @@
from django.conf.urls.defaults import *
urlpatterns = patterns('',
- ('^logout/$', 'django.contrib.auth.views.logout'),
- ('^password_change/$', 'django.contrib.auth.views.password_change'),
- ('^password_change/done/$', 'django.contrib.auth.views.password_change_done'),
- ('^password_reset/$', 'django.contrib.auth.views.password_reset')
+ (r'^logout/$', 'django.contrib.auth.views.logout'),
+ (r'^password_change/$', 'django.contrib.auth.views.password_change'),
+ (r'^password_change/done/$', 'django.contrib.auth.views.password_change_done'),
+ (r'^password_reset/$', 'django.contrib.auth.views.password_reset'),
+ (r'^password_reset/done/$', 'django.contrib.auth.views.password_reset_done'),
+ (r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm'),
+ (r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete'),
)
diff --git a/django/contrib/auth/views.py b/django/contrib/auth/views.py
index 0a52240631..e503f87caa 100644
--- a/django/contrib/auth/views.py
+++ b/django/contrib/auth/views.py
@@ -1,13 +1,15 @@
+from django.conf import settings
from django.contrib.auth import REDIRECT_FIELD_NAME
from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import AuthenticationForm
-from django.contrib.auth.forms import PasswordResetForm, PasswordChangeForm, AdminPasswordChangeForm
+from django.contrib.auth.forms import PasswordResetForm, SetPasswordForm, PasswordChangeForm, AdminPasswordChangeForm
+from django.contrib.auth.tokens import default_token_generator
from django.core.exceptions import PermissionDenied
from django.shortcuts import render_to_response, get_object_or_404
from django.contrib.sites.models import Site, RequestSite
-from django.http import HttpResponseRedirect
+from django.http import HttpResponseRedirect, Http404
from django.template import RequestContext
-from django.utils.http import urlquote
+from django.utils.http import urlquote, base36_to_int
from django.utils.html import escape
from django.utils.translation import ugettext as _
from django.contrib.auth.models import User
@@ -65,19 +67,29 @@ def redirect_to_login(next, login_url=None, redirect_field_name=REDIRECT_FIELD_N
login_url = settings.LOGIN_URL
return HttpResponseRedirect('%s?%s=%s' % (login_url, urlquote(redirect_field_name), urlquote(next)))
+# 4 views for password reset:
+# - password_reset sends the mail
+# - password_reset_done shows a success message for the above
+# - password_reset_confirm checks the link the user clicked and
+# prompts for a new password
+# - password_reset_complete shows a success message for the above
+
def password_reset(request, is_admin_site=False, template_name='registration/password_reset_form.html',
email_template_name='registration/password_reset_email.html',
- password_reset_form=PasswordResetForm):
+ password_reset_form=PasswordResetForm, token_generator=default_token_generator):
if request.method == "POST":
form = password_reset_form(request.POST)
if form.is_valid():
+ opts = {}
+ opts['use_https'] = request.is_secure()
+ opts['token_generator'] = token_generator
if is_admin_site:
- form.save(domain_override=request.META['HTTP_HOST'])
+ opts['domain_override'] = request.META['HTTP_HOST']
else:
- if Site._meta.installed:
- form.save(email_template_name=email_template_name)
- else:
- form.save(domain_override=RequestSite(request).domain, email_template_name=email_template_name)
+ opts['email_template_name'] = email_template_name
+ if not Site._meta.installed:
+ opts['domain_override'] = RequestSite(request).domain
+ form.save(**opts)
return HttpResponseRedirect('%sdone/' % request.path)
else:
form = password_reset_form()
@@ -88,6 +100,40 @@ def password_reset(request, is_admin_site=False, template_name='registration/pas
def password_reset_done(request, template_name='registration/password_reset_done.html'):
return render_to_response(template_name, context_instance=RequestContext(request))
+def password_reset_confirm(request, uidb36=None, token=None, template_name='registration/password_reset_confirm.html',
+ token_generator=default_token_generator, set_password_form=SetPasswordForm):
+ """
+ View that checks the hash in a password reset link and presents a
+ form for entering a new password.
+ """
+ assert uidb36 is not None and token is not None # checked by URLconf
+ try:
+ uid_int = base36_to_int(uidb36)
+ except ValueError:
+ raise Http404
+
+ user = get_object_or_404(User, id=uid_int)
+ context_instance = RequestContext(request)
+
+ if token_generator.check_token(user, token):
+ context_instance['validlink'] = True
+ if request.method == 'POST':
+ form = set_password_form(user, request.POST)
+ if form.is_valid():
+ form.save()
+ return HttpResponseRedirect("../done/")
+ else:
+ form = set_password_form(None)
+ else:
+ context_instance['validlink'] = False
+ form = None
+ context_instance['form'] = form
+ return render_to_response(template_name, context_instance=context_instance)
+
+def password_reset_complete(request, template_name='registration/password_reset_complete.html'):
+ return render_to_response(template_name, context_instance=RequestContext(request,
+ {'login_url': settings.LOGIN_URL}))
+
def password_change(request, template_name='registration/password_change_form.html'):
if request.method == "POST":
form = PasswordChangeForm(request.user, request.POST)
diff --git a/django/contrib/comments/models.py b/django/contrib/comments/models.py
index a13fec9e6e..fdf34c8997 100644
--- a/django/contrib/comments/models.py
+++ b/django/contrib/comments/models.py
@@ -29,8 +29,8 @@ class CommentManager(models.Manager):
'pa,ra') and target (something like 'lcom.eventtimes:5157'). Used to
validate that submitted form options have not been tampered-with.
"""
- import md5
- return md5.new(options + photo_options + rating_options + target + settings.SECRET_KEY).hexdigest()
+ from django.utils.hashcompat import md5_constructor
+ return md5_constructor(options + photo_options + rating_options + target + settings.SECRET_KEY).hexdigest()
def get_rating_options(self, rating_string):
"""
diff --git a/django/contrib/contenttypes/generic.py b/django/contrib/contenttypes/generic.py
index e91be70d1b..2d38936265 100644
--- a/django/contrib/contenttypes/generic.py
+++ b/django/contrib/contenttypes/generic.py
@@ -95,7 +95,7 @@ class GenericForeignKey(object):
setattr(instance, self.cache_attr, value)
class GenericRelation(RelatedField, Field):
- """Provides an accessor to generic related objects (i.e. comments)"""
+ """Provides an accessor to generic related objects (e.g. comments)"""
def __init__(self, to, **kwargs):
kwargs['verbose_name'] = kwargs.get('verbose_name', None)
@@ -104,6 +104,9 @@ class GenericRelation(RelatedField, Field):
limit_choices_to=kwargs.pop('limit_choices_to', None),
symmetrical=kwargs.pop('symmetrical', True))
+ # By its very nature, a GenericRelation doesn't create a table.
+ self.creates_table = False
+
# Override content-type/object-id field names on the related class
self.object_id_field_name = kwargs.pop("object_id_field", "object_id")
self.content_type_field_name = kwargs.pop("content_type_field", "content_type")
diff --git a/django/contrib/csrf/middleware.py b/django/contrib/csrf/middleware.py
index 1a75a5d6ab..24c1511c91 100644
--- a/django/contrib/csrf/middleware.py
+++ b/django/contrib/csrf/middleware.py
@@ -2,44 +2,45 @@
Cross Site Request Forgery Middleware.
This module provides a middleware that implements protection
-against request forgeries from other sites.
-
+against request forgeries from other sites.
"""
+
+import re
+import itertools
+
from django.conf import settings
from django.http import HttpResponseForbidden
+from django.utils.hashcompat import md5_constructor
from django.utils.safestring import mark_safe
-import md5
-import re
-import itertools
_ERROR_MSG = mark_safe('<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><body><h1>403 Forbidden</h1><p>Cross Site Request Forgery detected. Request aborted.</p></body></html>')
_POST_FORM_RE = \
re.compile(r'(<form\W[^>]*\bmethod=(\'|"|)POST(\'|"|)\b[^>]*>)', re.IGNORECASE)
-
-_HTML_TYPES = ('text/html', 'application/xhtml+xml')
+
+_HTML_TYPES = ('text/html', 'application/xhtml+xml')
def _make_token(session_id):
- return md5.new(settings.SECRET_KEY + session_id).hexdigest()
+ return md5_constructor(settings.SECRET_KEY + session_id).hexdigest()
class CsrfMiddleware(object):
"""Django middleware that adds protection against Cross Site
- Request Forgeries by adding hidden form fields to POST forms and
- checking requests for the correct value.
-
- In the list of middlewares, SessionMiddleware is required, and must come
- after this middleware. CsrfMiddleWare must come after compression
+ Request Forgeries by adding hidden form fields to POST forms and
+ checking requests for the correct value.
+
+ In the list of middlewares, SessionMiddleware is required, and must come
+ after this middleware. CsrfMiddleWare must come after compression
middleware.
-
- If a session ID cookie is present, it is hashed with the SECRET_KEY
- setting to create an authentication token. This token is added to all
- outgoing POST forms and is expected on all incoming POST requests that
+
+ If a session ID cookie is present, it is hashed with the SECRET_KEY
+ setting to create an authentication token. This token is added to all
+ outgoing POST forms and is expected on all incoming POST requests that
have a session ID cookie.
-
- If you are setting cookies directly, instead of using Django's session
+
+ If you are setting cookies directly, instead of using Django's session
framework, this middleware will not work.
"""
-
+
def process_request(self, request):
if request.method == 'POST':
try:
@@ -54,10 +55,10 @@ class CsrfMiddleware(object):
request_csrf_token = request.POST['csrfmiddlewaretoken']
except KeyError:
return HttpResponseForbidden(_ERROR_MSG)
-
+
if request_csrf_token != csrf_token:
return HttpResponseForbidden(_ERROR_MSG)
-
+
return None
def process_response(self, request, response):
@@ -66,7 +67,7 @@ class CsrfMiddleware(object):
cookie = response.cookies[settings.SESSION_COOKIE_NAME]
csrf_token = _make_token(cookie.value)
except KeyError:
- # No outgoing cookie to set session, but
+ # No outgoing cookie to set session, but
# a session might already exist.
try:
session_id = request.COOKIES[settings.SESSION_COOKIE_NAME]
@@ -74,12 +75,12 @@ class CsrfMiddleware(object):
except KeyError:
# no incoming or outgoing cookie
pass
-
+
if csrf_token is not None and \
response['Content-Type'].split(';')[0] in _HTML_TYPES:
-
+
# ensure we don't add the 'id' attribute twice (HTML validity)
- idattributes = itertools.chain(("id='csrfmiddlewaretoken'",),
+ idattributes = itertools.chain(("id='csrfmiddlewaretoken'",),
itertools.repeat(''))
def add_csrf_field(match):
"""Returns the matched <form> tag plus the added <input> element"""
diff --git a/django/contrib/databrowse/plugins/calendars.py b/django/contrib/databrowse/plugins/calendars.py
index a4524e20dd..ac2f522148 100644
--- a/django/contrib/databrowse/plugins/calendars.py
+++ b/django/contrib/databrowse/plugins/calendars.py
@@ -4,7 +4,6 @@ from django.contrib.databrowse.datastructures import EasyModel
from django.contrib.databrowse.sites import DatabrowsePlugin
from django.shortcuts import render_to_response
from django.utils.text import capfirst
-from django.utils.translation import get_date_formats
from django.utils.encoding import force_unicode
from django.utils.safestring import mark_safe
from django.views.generic import date_based
diff --git a/django/contrib/databrowse/plugins/fieldchoices.py b/django/contrib/databrowse/plugins/fieldchoices.py
index 0a58e7a6ab..8f77792579 100644
--- a/django/contrib/databrowse/plugins/fieldchoices.py
+++ b/django/contrib/databrowse/plugins/fieldchoices.py
@@ -6,7 +6,6 @@ from django.shortcuts import render_to_response
from django.utils.text import capfirst
from django.utils.encoding import smart_str, force_unicode
from django.utils.safestring import mark_safe
-from django.views.generic import date_based
import urllib
class FieldChoicePlugin(DatabrowsePlugin):
diff --git a/django/contrib/databrowse/sites.py b/django/contrib/databrowse/sites.py
index 5d8c1c8b49..9ef35dbc1c 100644
--- a/django/contrib/databrowse/sites.py
+++ b/django/contrib/databrowse/sites.py
@@ -1,6 +1,6 @@
from django import http
from django.db import models
-from django.contrib.databrowse.datastructures import EasyModel, EasyChoice
+from django.contrib.databrowse.datastructures import EasyModel
from django.shortcuts import render_to_response
from django.utils.safestring import mark_safe
diff --git a/django/contrib/databrowse/views.py b/django/contrib/databrowse/views.py
index c17aad5d85..4543e95780 100644
--- a/django/contrib/databrowse/views.py
+++ b/django/contrib/databrowse/views.py
@@ -1,7 +1,5 @@
-from django.db.models import FieldDoesNotExist, DateTimeField
from django.http import Http404
from django.shortcuts import render_to_response
-from django.contrib.databrowse.datastructures import EasyModel, EasyChoice
###########
# CHOICES #
diff --git a/django/contrib/formtools/preview.py b/django/contrib/formtools/preview.py
index db5d58e971..c56fdff628 100644
--- a/django/contrib/formtools/preview.py
+++ b/django/contrib/formtools/preview.py
@@ -2,12 +2,13 @@
Formtools Preview application.
"""
+import cPickle as pickle
+
from django.conf import settings
from django.http import Http404
from django.shortcuts import render_to_response
from django.template.context import RequestContext
-import cPickle as pickle
-import md5
+from django.utils.hashcompat import md5_constructor
AUTO_ID = 'formtools_%s' # Each form here uses this as its auto_id parameter.
@@ -109,7 +110,7 @@ class FormPreview(object):
# Use HIGHEST_PROTOCOL because it's the most efficient. It requires
# Python 2.3, but Django requires 2.3 anyway, so that's OK.
pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
- return md5.new(pickled).hexdigest()
+ return md5_constructor(pickled).hexdigest()
def failed_hash(self, request):
"Returns an HttpResponse in the case of an invalid security hash."
diff --git a/django/contrib/formtools/tests.py b/django/contrib/formtools/tests.py
index 99fe80bbb3..2ea0cc90a4 100644
--- a/django/contrib/formtools/tests.py
+++ b/django/contrib/formtools/tests.py
@@ -1,7 +1,6 @@
from django import forms
from django.contrib.formtools import preview
from django import http
-from django.conf import settings
from django.test import TestCase
success_string = "Done was called!"
diff --git a/django/contrib/formtools/wizard.py b/django/contrib/formtools/wizard.py
index 7b96d91187..984b6e487e 100644
--- a/django/contrib/formtools/wizard.py
+++ b/django/contrib/formtools/wizard.py
@@ -4,13 +4,14 @@ step and storing the form's state as HTML hidden fields so that no state is
stored on the server side.
"""
+import cPickle as pickle
+
from django import forms
from django.conf import settings
from django.http import Http404
from django.shortcuts import render_to_response
from django.template.context import RequestContext
-import cPickle as pickle
-import md5
+from django.utils.hashcompat import md5_constructor
class FormWizard(object):
# Dictionary of extra template context variables.
@@ -150,7 +151,7 @@ class FormWizard(object):
# Use HIGHEST_PROTOCOL because it's the most efficient. It requires
# Python 2.3, but Django requires 2.3 anyway, so that's OK.
pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
- return md5.new(pickled).hexdigest()
+ return md5_constructor(pickled).hexdigest()
def determine_step(self, request, *args, **kwargs):
"""
diff --git a/django/contrib/gis/db/backend/oracle/field.py b/django/contrib/gis/db/backend/oracle/field.py
index 829d5a5b02..22625f5e10 100644
--- a/django/contrib/gis/db/backend/oracle/field.py
+++ b/django/contrib/gis/db/backend/oracle/field.py
@@ -70,7 +70,7 @@ class OracleSpatialField(Field):
style.SQL_TABLE('MDSYS.SPATIAL_INDEX') + ';'
return sql
- def _post_create_sql(self, style, db_table):
+ def post_create_sql(self, style, db_table):
"""
Returns SQL that will be executed after the model has been
created.
diff --git a/django/contrib/gis/db/backend/postgis/field.py b/django/contrib/gis/db/backend/postgis/field.py
index 1e055ff60b..9d6c0fad24 100644
--- a/django/contrib/gis/db/backend/postgis/field.py
+++ b/django/contrib/gis/db/backend/postgis/field.py
@@ -50,7 +50,7 @@ class PostGISField(Field):
style.SQL_KEYWORD(index_opts) + ' );'
return sql
- def _post_create_sql(self, style, db_table):
+ def post_create_sql(self, style, db_table):
"""
Returns SQL that will be executed after the model has been
created. Geometry columns must be added after creation with the
diff --git a/django/contrib/gis/db/models/manager.py b/django/contrib/gis/db/models/manager.py
index 4b010ac20c..602d11251a 100644
--- a/django/contrib/gis/db/models/manager.py
+++ b/django/contrib/gis/db/models/manager.py
@@ -4,6 +4,11 @@ from django.contrib.gis.db.models.query import GeoQuerySet
class GeoManager(Manager):
"Overrides Manager to return Geographic QuerySets."
+ # This manager should be used for queries on related fields
+ # so that geometry columns on Oracle and MySQL are selected
+ # properly.
+ use_for_related_fields = True
+
def get_query_set(self):
return GeoQuerySet(model=self.model)
diff --git a/django/contrib/localflavor/at/__init__.py b/django/contrib/localflavor/at/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/django/contrib/localflavor/at/__init__.py
diff --git a/django/contrib/localflavor/at/at_states.py b/django/contrib/localflavor/at/at_states.py
new file mode 100644
index 0000000000..d4b4d8aa53
--- /dev/null
+++ b/django/contrib/localflavor/at/at_states.py
@@ -0,0 +1,14 @@
+# -*- coding: utf-8 -*
+from django.utils.translation import ugettext_lazy as _
+
+STATE_CHOICES = (
+ ('BL', _('Burgenland')),
+ ('KA', _('Carinthia')),
+ ('NO', _('Lower Austria')),
+ ('OO', _('Upper Austria')),
+ ('SA', _('Salzburg')),
+ ('ST', _('Styria')),
+ ('TI', _('Tyrol')),
+ ('VO', _('Vorarlberg')),
+ ('WI', _('Vienna')),
+) \ No newline at end of file
diff --git a/django/contrib/localflavor/at/forms.py b/django/contrib/localflavor/at/forms.py
new file mode 100644
index 0000000000..e428fdaa17
--- /dev/null
+++ b/django/contrib/localflavor/at/forms.py
@@ -0,0 +1,65 @@
+"""
+AT-specific Form helpers
+"""
+
+import re
+
+from django.utils.translation import ugettext_lazy as _
+from django.forms.fields import Field, RegexField, Select
+from django.forms import ValidationError
+
+re_ssn = re.compile(r'^\d{4} \d{6}')
+
+class ATZipCodeField(RegexField):
+ """
+ A form field that validates its input is an Austrian postcode.
+
+ Accepts 4 digits.
+ """
+ default_error_messages = {
+ 'invalid': _('Enter a zip code in the format XXXX.'),
+ }
+ def __init__(self, *args, **kwargs):
+ super(ATZipCodeField, self).__init__(r'^\d{4}$',
+ max_length=None, min_length=None, *args, **kwargs)
+
+class ATStateSelect(Select):
+ """
+ A Select widget that uses a list of AT states as its choices.
+ """
+ def __init__(self, attrs=None):
+ from django.contrib.localflavor.at.at_states import STATE_CHOICES
+ super(ATStateSelect, self).__init__(attrs, choices=STATE_CHOICES)
+
+class ATSocialSecurityNumberField(Field):
+ """
+ Austrian Social Security numbers are composed of a 4 digits and 6 digits
+ field. The latter represents in most cases the person's birthdate while
+ the first 4 digits represent a 3-digits counter and a one-digit checksum.
+
+ The 6-digits field can also differ from the person's birthdate if the
+ 3-digits counter suffered an overflow.
+
+ This code is based on information available on
+ http://de.wikipedia.org/wiki/Sozialversicherungsnummer#.C3.96sterreich
+ """
+
+ default_error_messages = {
+ 'invalid': _(u'Enter a valid Austrian Social Security Number in XXXX XXXXXX format.'),
+ }
+
+ def clean(self, value):
+ if not re_ssn.search(value):
+ raise ValidationError(self.error_messages['invalid'])
+ sqnr, date = value.split(" ")
+ sqnr, check = (sqnr[:3], (sqnr[3]))
+ if int(sqnr) < 100:
+ raise ValidationError(self.error_messages['invalid'])
+ res = int(sqnr[0])*3 + int(sqnr[1])*7 + int(sqnr[2])*9 \
+ + int(date[0])*5 + int(date[1])*8 + int(date[2])*4 \
+ + int(date[3])*2 + int(date[4])*1 + int(date[5])*6
+ res = res % 11
+ if res != int(check):
+ raise ValidationError(self.error_messages['invalid'])
+ return u'%s%s %s'%(sqnr, check, date,)
+
diff --git a/django/contrib/localflavor/ro/__init__.py b/django/contrib/localflavor/ro/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/django/contrib/localflavor/ro/__init__.py
diff --git a/django/contrib/localflavor/ro/forms.py b/django/contrib/localflavor/ro/forms.py
new file mode 100644
index 0000000000..ca51d91839
--- /dev/null
+++ b/django/contrib/localflavor/ro/forms.py
@@ -0,0 +1,200 @@
+# -*- coding: utf-8 -*-
+"""
+Romanian specific form helpers.
+"""
+
+import re
+
+from django.forms import ValidationError, Field, RegexField, Select
+from django.forms.fields import EMPTY_VALUES
+from django.utils.translation import ugettext_lazy as _
+
+class ROCIFField(RegexField):
+ """
+ A Romanian fiscal identity code (CIF) field
+
+ For CIF validation algorithm see http://www.validari.ro/cui.html
+ """
+ default_error_messages = {
+ 'invalid': _("Enter a valid CIF."),
+ }
+
+ def __init__(self, *args, **kwargs):
+ super(ROCIFField, self).__init__(r'^[0-9]{2,10}', max_length=10,
+ min_length=2, *args, **kwargs)
+
+ def clean(self, value):
+ """
+ CIF validation
+ """
+ value = super(ROCIFField, self).clean(value)
+ if value in EMPTY_VALUES:
+ return u''
+ # strip RO part
+ if value[0:2] == 'RO':
+ value = value[2:]
+ key = '753217532'[::-1]
+ value = value[::-1]
+ key_iter = iter(key)
+ checksum = 0
+ for digit in value[1:]:
+ checksum += int(digit) * int(key_iter.next())
+ checksum = checksum * 10 % 11
+ if checksum == 10:
+ checksum = 0
+ if checksum != int(value[0]):
+ raise ValidationError(self.error_messages['invalid'])
+ return value[::-1]
+
+class ROCNPField(RegexField):
+ """
+ A Romanian personal identity code (CNP) field
+
+ For CNP validation algorithm see http://www.validari.ro/cnp.html
+ """
+ default_error_messages = {
+ 'invalid': _("Enter a valid CNP."),
+ }
+
+ def __init__(self, *args, **kwargs):
+ super(ROCNPField, self).__init__(r'^[1-9][0-9]{12}', max_length=13,
+ min_length=13, *args, **kwargs)
+
+ def clean(self, value):
+ """
+ CNP validations
+ """
+ value = super(ROCNPField, self).clean(value)
+ # check birthdate digits
+ import datetime
+ try:
+ datetime.date(int(value[1:3]),int(value[3:5]),int(value[5:7]))
+ except:
+ raise ValidationError(self.error_messages['invalid'])
+ # checksum
+ key = '279146358279'
+ checksum = 0
+ value_iter = iter(value)
+ for digit in key:
+ checksum += int(digit) * int(value_iter.next())
+ checksum %= 11
+ if checksum == 10:
+ checksum = 1
+ if checksum != int(value[12]):
+ raise ValidationError(self.error_messages['invalid'])
+ return value
+
+class ROCountyField(Field):
+ """
+ A form field that validates its input is a Romanian county name or
+ abbreviation. It normalizes the input to the standard vehicle registration
+ abbreviation for the given county
+
+ WARNING: This field will only accept names written with diacritics; consider
+ using ROCountySelect if this behavior is unnaceptable for you
+ Example:
+ ArgeÅŸ => valid
+ Arges => invalid
+ """
+ default_error_messages = {
+ 'invalid': u'Enter a Romanian county code or name.',
+ }
+
+ def clean(self, value):
+ from ro_counties import COUNTIES_CHOICES
+ super(ROCountyField, self).clean(value)
+ if value in EMPTY_VALUES:
+ return u''
+ try:
+ value = value.strip().upper()
+ except AttributeError:
+ pass
+ # search for county code
+ for entry in COUNTIES_CHOICES:
+ if value in entry:
+ return value
+ # search for county name
+ normalized_CC = []
+ for entry in COUNTIES_CHOICES:
+ normalized_CC.append((entry[0],entry[1].upper()))
+ for entry in normalized_CC:
+ if entry[1] == value:
+ return entry[0]
+ raise ValidationError(self.error_messages['invalid'])
+
+class ROCountySelect(Select):
+ """
+ A Select widget that uses a list of Romanian counties (judete) as its
+ choices.
+ """
+ def __init__(self, attrs=None):
+ from ro_counties import COUNTIES_CHOICES
+ super(ROCountySelect, self).__init__(attrs, choices=COUNTIES_CHOICES)
+
+class ROIBANField(RegexField):
+ """
+ Romanian International Bank Account Number (IBAN) field
+
+ For Romanian IBAN validation algorithm see http://validari.ro/iban.html
+ """
+ default_error_messages = {
+ 'invalid': _('Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format'),
+ }
+
+ def __init__(self, *args, **kwargs):
+ super(ROIBANField, self).__init__(r'^[0-9A-Za-z\-\s]{24,40}$',
+ max_length=40, min_length=24, *args, **kwargs)
+
+ def clean(self, value):
+ """
+ Strips - and spaces, performs country code and checksum validation
+ """
+ value = super(ROIBANField, self).clean(value)
+ value = value.replace('-','')
+ value = value.replace(' ','')
+ value = value.upper()
+ if value[0:2] != 'RO':
+ raise ValidationError(self.error_messages['invalid'])
+ numeric_format = ''
+ for char in value[4:] + value[0:4]:
+ if char.isalpha():
+ numeric_format += str(ord(char) - 55)
+ else:
+ numeric_format += char
+ if int(numeric_format) % 97 != 1:
+ raise ValidationError(self.error_messages['invalid'])
+ return value
+
+class ROPhoneNumberField(RegexField):
+ """Romanian phone number field"""
+ default_error_messages = {
+ 'invalid': _('Phone numbers must be in XXXX-XXXXXX format.'),
+ }
+
+ def __init__(self, *args, **kwargs):
+ super(ROPhoneNumberField, self).__init__(r'^[0-9\-\(\)\s]{10,20}$',
+ max_length=20, min_length=10, *args, **kwargs)
+
+ def clean(self, value):
+ """
+ Strips -, (, ) and spaces. Checks the final length.
+ """
+ value = super(ROPhoneNumberField, self).clean(value)
+ value = value.replace('-','')
+ value = value.replace('(','')
+ value = value.replace(')','')
+ value = value.replace(' ','')
+ if len(value) != 10:
+ raise ValidationError(self.error_messages['invalid'])
+ return value
+
+class ROPostalCodeField(RegexField):
+ """Romanian postal code field."""
+ default_error_messages = {
+ 'invalid': _('Enter a valid postal code in the format XXXXXX'),
+ }
+
+ def __init__(self, *args, **kwargs):
+ super(ROPostalCodeField, self).__init__(r'^[0-9][0-8][0-9]{4}$',
+ max_length=6, min_length=6, *args, **kwargs)
+
diff --git a/django/contrib/localflavor/ro/ro_counties.py b/django/contrib/localflavor/ro/ro_counties.py
new file mode 100644
index 0000000000..40423ddc87
--- /dev/null
+++ b/django/contrib/localflavor/ro/ro_counties.py
@@ -0,0 +1,52 @@
+# -*- coding: utf-8 -*-
+"""
+A list of Romanian counties as `choices` in a formfield.
+
+This exists as a standalone file so that it's only imported into memory when
+explicitly needed.
+"""
+
+COUNTIES_CHOICES = (
+ ('AB', u'Alba'),
+ ('AR', u'Arad'),
+ ('AG', u'ArgeÅŸ'),
+ ('BC', u'Bacău'),
+ ('BH', u'Bihor'),
+ ('BN', u'Bistriţa-Năsăud'),
+ ('BT', u'BotoÅŸani'),
+ ('BV', u'BraÅŸov'),
+ ('BR', u'Brăila'),
+ ('B', u'BucureÅŸti'),
+ ('BZ', u'Buzău'),
+ ('CS', u'CaraÅŸ-Severin'),
+ ('CL', u'Călăraşi'),
+ ('CJ', u'Cluj'),
+ ('CT', u'Constanţa'),
+ ('CV', u'Covasna'),
+ ('DB', u'Dâmboviţa'),
+ ('DJ', u'Dolj'),
+ ('GL', u'Galaţi'),
+ ('GR', u'Giurgiu'),
+ ('GJ', u'Gorj'),
+ ('HR', u'Harghita'),
+ ('HD', u'Hunedoara'),
+ ('IL', u'Ialomiţa'),
+ ('IS', u'IaÅŸi'),
+ ('IF', u'Ilfov'),
+ ('MM', u'MaramureÅŸ'),
+ ('MH', u'Mehedinţi'),
+ ('MS', u'MureÅŸ'),
+ ('NT', u'Neamţ'),
+ ('OT', u'Olt'),
+ ('PH', u'Prahova'),
+ ('SM', u'Satu Mare'),
+ ('SJ', u'Sălaj'),
+ ('SB', u'Sibiu'),
+ ('SV', u'Suceava'),
+ ('TR', u'Teleorman'),
+ ('TM', u'TimiÅŸ'),
+ ('TL', u'Tulcea'),
+ ('VS', u'Vaslui'),
+ ('VL', u'Vâlcea'),
+ ('VN', u'Vrancea'),
+)
diff --git a/django/contrib/redirects/admin.py b/django/contrib/redirects/admin.py
new file mode 100644
index 0000000000..a9b2a3228f
--- /dev/null
+++ b/django/contrib/redirects/admin.py
@@ -0,0 +1,11 @@
+
+from django.contrib import admin
+from django.contrib.redirects.models import Redirect
+
+class RedirectAdmin(admin.ModelAdmin):
+ list_display = ('old_path', 'new_path')
+ list_filter = ('site',)
+ search_fields = ('old_path', 'new_path')
+ radio_fields = {'site': admin.VERTICAL}
+
+admin.site.register(Redirect, RedirectAdmin) \ No newline at end of file
diff --git a/django/contrib/redirects/models.py b/django/contrib/redirects/models.py
index 991423268d..4233d55793 100644
--- a/django/contrib/redirects/models.py
+++ b/django/contrib/redirects/models.py
@@ -18,18 +18,3 @@ class Redirect(models.Model):
def __unicode__(self):
return "%s ---> %s" % (self.old_path, self.new_path)
-
-# Register the admin options for these models.
-# TODO: Maybe this should live in a separate module admin.py, but how would we
-# ensure that module was loaded?
-
-from django.contrib import admin
-
-class RedirectAdmin(admin.ModelAdmin):
- list_display = ('old_path', 'new_path')
- list_filter = ('site',)
- search_fields = ('old_path', 'new_path')
- radio_fields = {'site': admin.VERTICAL}
-
-admin.site.register(Redirect, RedirectAdmin)
-
diff --git a/django/contrib/sessions/backends/base.py b/django/contrib/sessions/backends/base.py
index b40fba6e6e..7153b8a267 100644
--- a/django/contrib/sessions/backends/base.py
+++ b/django/contrib/sessions/backends/base.py
@@ -1,5 +1,4 @@
import base64
-import md5
import os
import random
import sys
@@ -12,6 +11,7 @@ except ImportError:
from django.conf import settings
from django.core.exceptions import SuspiciousOperation
+from django.utils.hashcompat import md5_constructor
class SessionBase(object):
@@ -73,13 +73,13 @@ class SessionBase(object):
def encode(self, session_dict):
"Returns the given session dictionary pickled and encoded as a string."
pickled = pickle.dumps(session_dict, pickle.HIGHEST_PROTOCOL)
- pickled_md5 = md5.new(pickled + settings.SECRET_KEY).hexdigest()
+ pickled_md5 = md5_constructor(pickled + settings.SECRET_KEY).hexdigest()
return base64.encodestring(pickled + pickled_md5)
def decode(self, session_data):
encoded_data = base64.decodestring(session_data)
pickled, tamper_check = encoded_data[:-32], encoded_data[-32:]
- if md5.new(pickled + settings.SECRET_KEY).hexdigest() != tamper_check:
+ if md5_constructor(pickled + settings.SECRET_KEY).hexdigest() != tamper_check:
raise SuspiciousOperation("User tampered with session cookie.")
try:
return pickle.loads(pickled)
@@ -117,8 +117,8 @@ class SessionBase(object):
# No getpid() in Jython, for example
pid = 1
while 1:
- session_key = md5.new("%s%s%s%s" % (random.randint(0, sys.maxint - 1),
- pid, time.time(), settings.SECRET_KEY)).hexdigest()
+ session_key = md5_constructor("%s%s%s%s" % (random.randint(0, sys.maxint - 1),
+ pid, time.time(), settings.SECRET_KEY)).hexdigest()
if not self.exists(session_key):
break
return session_key
diff --git a/django/contrib/sessions/backends/cache.py b/django/contrib/sessions/backends/cache.py
index 7e171e8309..5ffb5a136b 100644
--- a/django/contrib/sessions/backends/cache.py
+++ b/django/contrib/sessions/backends/cache.py
@@ -1,8 +1,6 @@
-from django.conf import settings
from django.contrib.sessions.backends.base import SessionBase
from django.core.cache import cache
-
class SessionStore(SessionBase):
"""
A cache-based session store.
diff --git a/django/contrib/sessions/backends/db.py b/django/contrib/sessions/backends/db.py
index 67132c7560..add3d70074 100644
--- a/django/contrib/sessions/backends/db.py
+++ b/django/contrib/sessions/backends/db.py
@@ -1,11 +1,8 @@
import datetime
-
-from django.conf import settings
from django.contrib.sessions.models import Session
from django.contrib.sessions.backends.base import SessionBase
from django.core.exceptions import SuspiciousOperation
-
class SessionStore(SessionBase):
"""
Implements database session store.
diff --git a/django/contrib/sessions/middleware.py b/django/contrib/sessions/middleware.py
index 238d6095e5..ce6e678ebc 100644
--- a/django/contrib/sessions/middleware.py
+++ b/django/contrib/sessions/middleware.py
@@ -4,12 +4,7 @@ from django.conf import settings
from django.utils.cache import patch_vary_headers
from django.utils.http import cookie_date
-TEST_COOKIE_NAME = 'testcookie'
-TEST_COOKIE_VALUE = 'worked'
-
-
class SessionMiddleware(object):
-
def process_request(self, request):
engine = __import__(settings.SESSION_ENGINE, {}, {}, [''])
session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME, None)
diff --git a/django/contrib/sessions/models.py b/django/contrib/sessions/models.py
index 70fce3b226..cf2865fcc8 100644
--- a/django/contrib/sessions/models.py
+++ b/django/contrib/sessions/models.py
@@ -1,10 +1,10 @@
import base64
-import md5
import cPickle as pickle
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.conf import settings
+from django.utils.hashcompat import md5_constructor
class SessionManager(models.Manager):
@@ -13,7 +13,7 @@ class SessionManager(models.Manager):
Returns the given session dictionary pickled and encoded as a string.
"""
pickled = pickle.dumps(session_dict)
- pickled_md5 = md5.new(pickled + settings.SECRET_KEY).hexdigest()
+ pickled_md5 = md5_constructor(pickled + settings.SECRET_KEY).hexdigest()
return base64.encodestring(pickled + pickled_md5)
def save(self, session_key, session_dict, expire_date):
@@ -56,7 +56,7 @@ class Session(models.Model):
def get_decoded(self):
encoded_data = base64.decodestring(self.session_data)
pickled, tamper_check = encoded_data[:-32], encoded_data[-32:]
- if md5.new(pickled + settings.SECRET_KEY).hexdigest() != tamper_check:
+ if md5_constructor(pickled + settings.SECRET_KEY).hexdigest() != tamper_check:
from django.core.exceptions import SuspiciousOperation
raise SuspiciousOperation, "User tampered with session cookie."
try:
diff --git a/django/contrib/sitemaps/__init__.py b/django/contrib/sitemaps/__init__.py
index 30949837e4..13e667e142 100644
--- a/django/contrib/sitemaps/__init__.py
+++ b/django/contrib/sitemaps/__init__.py
@@ -1,4 +1,4 @@
-from django.core import urlresolvers
+from django.core import urlresolvers, paginator
import urllib
PING_URL = "http://www.google.com/webmasters/tools/ping"
@@ -34,6 +34,10 @@ def ping_google(sitemap_url=None, ping_url=PING_URL):
urllib.urlopen("%s?%s" % (ping_url, params))
class Sitemap:
+ # This limit is defined by Google. See the index documentation at
+ # http://sitemaps.org/protocol.php#index.
+ limit = 50000
+
def __get(self, name, obj, default=None):
try:
attr = getattr(self, name)
@@ -49,11 +53,17 @@ class Sitemap:
def location(self, obj):
return obj.get_absolute_url()
- def get_urls(self):
+ def _get_paginator(self):
+ if not hasattr(self, "paginator"):
+ self.paginator = paginator.Paginator(self.items(), self.limit)
+ return self.paginator
+ paginator = property(_get_paginator)
+
+ def get_urls(self, page=1):
from django.contrib.sites.models import Site
current_site = Site.objects.get_current()
urls = []
- for item in self.items():
+ for item in self.paginator.page(page).object_list:
loc = "http://%s%s" % (current_site.domain, self.__get('location', item))
url_info = {
'location': loc,
diff --git a/django/contrib/sitemaps/management/__init__.py b/django/contrib/sitemaps/management/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/django/contrib/sitemaps/management/__init__.py
diff --git a/django/contrib/sitemaps/management/commands/__init__.py b/django/contrib/sitemaps/management/commands/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/django/contrib/sitemaps/management/commands/__init__.py
diff --git a/django/contrib/sitemaps/views.py b/django/contrib/sitemaps/views.py
index 86ef1e3526..7a5fe38a08 100644
--- a/django/contrib/sitemaps/views.py
+++ b/django/contrib/sitemaps/views.py
@@ -3,14 +3,22 @@ from django.template import loader
from django.contrib.sites.models import Site
from django.core import urlresolvers
from django.utils.encoding import smart_str
+from django.core.paginator import EmptyPage, PageNotAnInteger
def index(request, sitemaps):
current_site = Site.objects.get_current()
sites = []
protocol = request.is_secure() and 'https' or 'http'
- for section in sitemaps.keys():
+ for section, site in sitemaps.items():
+ if callable(site):
+ pages = site().paginator.num_pages
+ else:
+ pages = site.paginator.num_pages
sitemap_url = urlresolvers.reverse('django.contrib.sitemaps.views.sitemap', kwargs={'section': section})
sites.append('%s://%s%s' % (protocol, current_site.domain, sitemap_url))
+ if pages > 1:
+ for page in range(2, pages+1):
+ sites.append('%s://%s%s?p=%s' % (protocol, current_site.domain, sitemap_url, page))
xml = loader.render_to_string('sitemap_index.xml', {'sitemaps': sites})
return HttpResponse(xml, mimetype='application/xml')
@@ -22,10 +30,16 @@ def sitemap(request, sitemaps, section=None):
maps.append(sitemaps[section])
else:
maps = sitemaps.values()
+ page = request.GET.get("p", 1)
for site in maps:
- if callable(site):
- urls.extend(site().get_urls())
- else:
- urls.extend(site.get_urls())
+ try:
+ if callable(site):
+ urls.extend(site().get_urls(page))
+ else:
+ urls.extend(site.get_urls(page))
+ except EmptyPage:
+ raise Http404("Page %s empty" % page)
+ except PageNotAnInteger:
+ raise Http404("No page '%s'" % page)
xml = smart_str(loader.render_to_string('sitemap.xml', {'urlset': urls}))
return HttpResponse(xml, mimetype='application/xml')
diff --git a/django/contrib/sites/tests.py b/django/contrib/sites/tests.py
index 5c38ee1b6d..f39f7a2c82 100644
--- a/django/contrib/sites/tests.py
+++ b/django/contrib/sites/tests.py
@@ -1,6 +1,9 @@
"""
->>> # Make sure that get_current() does not return a deleted Site object.
>>> from django.contrib.sites.models import Site
+>>> from django.conf import settings
+>>> Site(id=settings.SITE_ID, domain="example.com", name="example.com").save()
+
+>>> # Make sure that get_current() does not return a deleted Site object.
>>> s = Site.objects.get_current()
>>> isinstance(s, Site)
True
diff --git a/django/contrib/syndication/feeds.py b/django/contrib/syndication/feeds.py
index 85af79cc27..63d2431883 100644
--- a/django/contrib/syndication/feeds.py
+++ b/django/contrib/syndication/feeds.py
@@ -1,5 +1,5 @@
from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist
-from django.template import Context, loader, Template, TemplateDoesNotExist
+from django.template import loader, Template, TemplateDoesNotExist
from django.contrib.sites.models import Site, RequestSite
from django.utils import feedgenerator
from django.utils.encoding import smart_unicode, iri_to_uri
diff --git a/django/core/cache/__init__.py b/django/core/cache/__init__.py
index 495cc92822..c136ce4f4d 100644
--- a/django/core/cache/__init__.py
+++ b/django/core/cache/__init__.py
@@ -19,8 +19,10 @@ from cgi import parse_qsl
from django.conf import settings
from django.core.cache.backends.base import InvalidCacheBackendError
+# Name for use in settings file --> name of module in "backends" directory.
+# Any backend scheme that is not in this dictionary is treated as a Python
+# import path to a custom backend.
BACKENDS = {
- # name for use in settings file --> name of module in "backends" directory
'memcached': 'memcached',
'locmem': 'locmem',
'file': 'filebased',
@@ -28,24 +30,12 @@ BACKENDS = {
'dummy': 'dummy',
}
-DEPRECATED_BACKENDS = {
- # deprecated backend --> replacement module
- 'simple': 'locmem',
-}
-
def get_cache(backend_uri):
if backend_uri.find(':') == -1:
raise InvalidCacheBackendError, "Backend URI must start with scheme://"
scheme, rest = backend_uri.split(':', 1)
if not rest.startswith('//'):
raise InvalidCacheBackendError, "Backend URI must start with scheme://"
- if scheme in DEPRECATED_BACKENDS:
- import warnings
- warnings.warn("'%s' backend is deprecated. Use '%s' instead." %
- (scheme, DEPRECATED_BACKENDS[scheme]), DeprecationWarning)
- scheme = DEPRECATED_BACKENDS[scheme]
- if scheme not in BACKENDS:
- raise InvalidCacheBackendError, "%r is not a valid cache backend" % scheme
host = rest[2:]
qpos = rest.find('?')
@@ -57,7 +47,10 @@ def get_cache(backend_uri):
if host.endswith('/'):
host = host[:-1]
- cache_class = getattr(__import__('django.core.cache.backends.%s' % BACKENDS[scheme], {}, {}, ['']), 'CacheClass')
- return cache_class(host, params)
+ if scheme in BACKENDS:
+ module = __import__('django.core.cache.backends.%s' % BACKENDS[scheme], {}, {}, [''])
+ else:
+ module = __import__(scheme, {}, {}, [''])
+ return getattr(module, 'CacheClass')(host, params)
cache = get_cache(settings.CACHE_BACKEND)
diff --git a/django/core/cache/backends/base.py b/django/core/cache/backends/base.py
index ff4223bf86..58e166d655 100644
--- a/django/core/cache/backends/base.py
+++ b/django/core/cache/backends/base.py
@@ -63,4 +63,11 @@ class BaseCache(object):
"""
return self.get(key) is not None
- __contains__ = has_key
+ def __contains__(self, key):
+ """
+ Returns True if the key is in the cache and has not expired.
+ """
+ # This is a separate method, rather than just a copy of has_key(),
+ # so that it always has the same functionality as has_key(), even
+ # if a subclass overrides it.
+ return self.has_key(key)
diff --git a/django/core/cache/backends/filebased.py b/django/core/cache/backends/filebased.py
index c1277bf20c..0ad586d477 100644
--- a/django/core/cache/backends/filebased.py
+++ b/django/core/cache/backends/filebased.py
@@ -1,29 +1,31 @@
"File-based cache backend"
-import md5
-import os, time
+import os
+import time
try:
import cPickle as pickle
except ImportError:
import pickle
+
from django.core.cache.backends.base import BaseCache
+from django.utils.hashcompat import md5_constructor
class CacheClass(BaseCache):
def __init__(self, dir, params):
BaseCache.__init__(self, params)
-
+
max_entries = params.get('max_entries', 300)
try:
self._max_entries = int(max_entries)
except (ValueError, TypeError):
self._max_entries = 300
-
+
cull_frequency = params.get('cull_frequency', 3)
try:
self._cull_frequency = int(cull_frequency)
except (ValueError, TypeError):
self._cull_frequency = 3
-
+
self._dir = dir
if not os.path.exists(self._dir):
self._createdir()
@@ -31,7 +33,7 @@ class CacheClass(BaseCache):
def add(self, key, value, timeout=None):
if self.has_key(key):
return None
-
+
self.set(key, value, timeout)
def get(self, key, default=None):
@@ -52,12 +54,12 @@ class CacheClass(BaseCache):
def set(self, key, value, timeout=None):
fname = self._key_to_file(key)
dirname = os.path.dirname(fname)
-
+
if timeout is None:
timeout = self.default_timeout
-
+
self._cull()
-
+
try:
if not os.path.exists(dirname):
os.makedirs(dirname)
@@ -103,12 +105,12 @@ class CacheClass(BaseCache):
def _cull(self):
if int(self._num_entries) < self._max_entries:
return
-
+
try:
filelist = os.listdir(self._dir)
except (IOError, OSError):
return
-
+
if self._cull_frequency == 0:
doomed = filelist
else:
@@ -133,11 +135,11 @@ class CacheClass(BaseCache):
Convert the filename into an md5 string. We'll turn the first couple
bits of the path into directory prefixes to be nice to filesystems
that have problems with large numbers of files in a directory.
-
+
Thus, a cache key of "foo" gets turnned into a file named
``{cache-dir}ac/bd/18db4cc2f85cedef654fccc4a4d8``.
"""
- path = md5.new(key.encode('utf-8')).hexdigest()
+ path = md5_constructor(key.encode('utf-8')).hexdigest()
path = os.path.join(path[:2], path[2:4], path[4:])
return os.path.join(self._dir, path)
@@ -147,4 +149,3 @@ class CacheClass(BaseCache):
count += len(files)
return count
_num_entries = property(_get_num_entries)
-
diff --git a/django/core/cache/backends/locmem.py b/django/core/cache/backends/locmem.py
index e8e1e0d450..053e0735f7 100644
--- a/django/core/cache/backends/locmem.py
+++ b/django/core/cache/backends/locmem.py
@@ -107,7 +107,7 @@ class CacheClass(BaseCache):
else:
doomed = [k for (i, k) in enumerate(self._cache) if i % self._cull_frequency == 0]
for k in doomed:
- self.delete(k)
+ self._delete(k)
def _delete(self, key):
try:
diff --git a/django/core/files/temp.py b/django/core/files/temp.py
new file mode 100644
index 0000000000..298fcbf0a5
--- /dev/null
+++ b/django/core/files/temp.py
@@ -0,0 +1,58 @@
+"""
+The temp module provides a NamedTemporaryFile that can be re-opened on any
+platform. Most platforms use the standard Python tempfile.TemporaryFile class,
+but MS Windows users are given a custom class.
+
+This is needed because in Windows NT, the default implementation of
+NamedTemporaryFile uses the O_TEMPORARY flag, and thus cannot be reopened [1].
+
+1: http://mail.python.org/pipermail/python-list/2005-December/359474.html
+"""
+
+import os
+import tempfile
+
+__all__ = ('NamedTemporaryFile', 'gettempdir',)
+
+if os.name == 'nt':
+ class TemporaryFile(object):
+ """
+ Temporary file object constructor that works in Windows and supports
+ reopening of the temporary file in windows.
+ """
+ def __init__(self, mode='w+b', bufsize=-1, suffix='', prefix='',
+ dir=None):
+ fd, name = tempfile.mkstemp(suffix=suffix, prefix=prefix,
+ dir=dir)
+ self.name = name
+ self._file = os.fdopen(fd, mode, bufsize)
+
+ def __del__(self):
+ try:
+ self._file.close()
+ except (OSError, IOError):
+ pass
+ try:
+ os.unlink(self.name)
+ except (OSError):
+ pass
+
+ try:
+ super(TemporaryFile, self).__del__()
+ except AttributeError:
+ pass
+
+
+ def read(self, *args): return self._file.read(*args)
+ def seek(self, offset): return self._file.seek(offset)
+ def write(self, s): return self._file.write(s)
+ def close(self): return self._file.close()
+ def __iter__(self): return iter(self._file)
+ def readlines(self, size=None): return self._file.readlines(size)
+ def xreadlines(self): return self._file.xreadlines()
+
+ NamedTemporaryFile = TemporaryFile
+else:
+ NamedTemporaryFile = tempfile.NamedTemporaryFile
+
+gettempdir = tempfile.gettempdir
diff --git a/django/core/files/uploadedfile.py b/django/core/files/uploadedfile.py
index 7f515f94d4..c498561c18 100644
--- a/django/core/files/uploadedfile.py
+++ b/django/core/files/uploadedfile.py
@@ -3,7 +3,6 @@ Classes representing uploaded files.
"""
import os
-import tempfile
import warnings
try:
from cStringIO import StringIO
@@ -12,6 +11,8 @@ except ImportError:
from django.conf import settings
+from django.core.files import temp as tempfile
+
__all__ = ('UploadedFile', 'TemporaryUploadedFile', 'InMemoryUploadedFile', 'SimpleUploadedFile')
# Because we fooled around with it a bunch, UploadedFile has a bunch
diff --git a/django/core/files/uploadhandler.py b/django/core/files/uploadhandler.py
index 008a05a148..fa4d2df804 100644
--- a/django/core/files/uploadhandler.py
+++ b/django/core/files/uploadhandler.py
@@ -1,8 +1,7 @@
"""
Base file upload handler classes, and the built-in concrete subclasses
"""
-import os
-import tempfile
+
try:
from cStringIO import StringIO
except ImportError:
diff --git a/django/core/handlers/base.py b/django/core/handlers/base.py
index 29835d7ce5..214032e318 100644
--- a/django/core/handlers/base.py
+++ b/django/core/handlers/base.py
@@ -3,6 +3,7 @@ import sys
from django import http
from django.core import signals
from django.dispatch import dispatcher
+from django.utils.encoding import force_unicode
class BaseHandler(object):
# Changes that are always applied to a response (in this order).
@@ -73,7 +74,8 @@ class BaseHandler(object):
resolver = urlresolvers.RegexURLResolver(r'^/', urlconf)
try:
- callback, callback_args, callback_kwargs = resolver.resolve(request.path)
+ callback, callback_args, callback_kwargs = resolver.resolve(
+ request.path_info)
# Apply view middleware
for middleware_method in self._view_middleware:
@@ -107,8 +109,11 @@ class BaseHandler(object):
from django.views import debug
return debug.technical_404_response(request, e)
else:
- callback, param_dict = resolver.resolve404()
- return callback(request, **param_dict)
+ try:
+ callback, param_dict = resolver.resolve404()
+ return callback(request, **param_dict)
+ except:
+ return self.handle_uncaught_exception(request, resolver, sys.exc_info())
except exceptions.PermissionDenied:
return http.HttpResponseForbidden('<h1>Permission denied</h1>')
except SystemExit:
@@ -118,9 +123,6 @@ class BaseHandler(object):
# Get the exception info now, in case another exception is thrown later.
exc_info = sys.exc_info()
receivers = dispatcher.send(signal=signals.got_request_exception, request=request)
-
- if settings.DEBUG_PROPAGATE_EXCEPTIONS:
- raise
return self.handle_uncaught_exception(request, resolver, exc_info)
def handle_uncaught_exception(self, request, resolver, exc_info):
@@ -136,6 +138,9 @@ class BaseHandler(object):
from django.conf import settings
from django.core.mail import mail_admins
+ if settings.DEBUG_PROPAGATE_EXCEPTIONS:
+ raise
+
if settings.DEBUG:
from django.views import debug
return debug.technical_500_response(request, *exc_info)
@@ -167,3 +172,27 @@ class BaseHandler(object):
response = func(request, response)
return response
+def get_script_name(environ):
+ """
+ Returns the equivalent of the HTTP request's SCRIPT_NAME environment
+ variable. If Apache mod_rewrite has been used, returns what would have been
+ the script name prior to any rewriting (so it's the script name as seen
+ from the client's perspective), unless DJANGO_USE_POST_REWRITE is set (to
+ anything).
+ """
+ from django.conf import settings
+ if settings.FORCE_SCRIPT_NAME is not None:
+ return force_unicode(settings.FORCE_SCRIPT_NAME)
+
+ # If Apache's mod_rewrite had a whack at the URL, Apache set either
+ # SCRIPT_URL or REDIRECT_URL to the full resource URL before applying any
+ # rewrites. Unfortunately not every webserver (lighttpd!) passes this
+ # information through all the time, so FORCE_SCRIPT_NAME, above, is still
+ # needed.
+ script_url = environ.get('SCRIPT_URL', u'')
+ if not script_url:
+ script_url = environ.get('REDIRECT_URL', u'')
+ if script_url:
+ return force_unicode(script_url[:-len(environ.get('PATH_INFO', ''))])
+ return force_unicode(environ.get('SCRIPT_NAME', u''))
+
diff --git a/django/core/handlers/modpython.py b/django/core/handlers/modpython.py
index 332df6f54c..58699816fd 100644
--- a/django/core/handlers/modpython.py
+++ b/django/core/handlers/modpython.py
@@ -4,6 +4,7 @@ from pprint import pformat
from django import http
from django.core import signals
from django.core.handlers.base import BaseHandler
+from django.core.urlresolvers import set_script_prefix
from django.dispatch import dispatcher
from django.utils import datastructures
from django.utils.encoding import force_unicode, smart_str
@@ -15,7 +16,26 @@ from django.utils.encoding import force_unicode, smart_str
class ModPythonRequest(http.HttpRequest):
def __init__(self, req):
self._req = req
+ # FIXME: This isn't ideal. The request URI may be encoded (it's
+ # non-normalized) slightly differently to the "real" SCRIPT_NAME
+ # and PATH_INFO values. This causes problems when we compute path_info,
+ # below. For now, don't use script names that will be subject to
+ # encoding/decoding.
self.path = force_unicode(req.uri)
+ root = req.get_options().get('django.root', '')
+ self.django_root = root
+ # req.path_info isn't necessarily computed correctly in all
+ # circumstances (it's out of mod_python's control a bit), so we use
+ # req.uri and some string manipulations to get the right value.
+ if root and req.uri.startswith(root):
+ self.path_info = force_unicode(req.uri[len(root):])
+ else:
+ self.path_info = self.path
+ if not self.path_info:
+ # Django prefers empty paths to be '/', rather than '', to give us
+ # a common start character for URL patterns. So this is a little
+ # naughty, but also pretty harmless.
+ self.path_info = u'/'
def __repr__(self):
# Since this is called as part of error handling, we need to be very
@@ -100,7 +120,7 @@ class ModPythonRequest(http.HttpRequest):
'CONTENT_LENGTH': self._req.clength, # This may be wrong
'CONTENT_TYPE': self._req.content_type, # This may be wrong
'GATEWAY_INTERFACE': 'CGI/1.1',
- 'PATH_INFO': self._req.path_info,
+ 'PATH_INFO': self.path_info,
'PATH_TRANSLATED': None, # Not supported
'QUERY_STRING': self._req.args,
'REMOTE_ADDR': self._req.connection.remote_ip,
@@ -108,7 +128,7 @@ class ModPythonRequest(http.HttpRequest):
'REMOTE_IDENT': self._req.connection.remote_logname,
'REMOTE_USER': self._req.user,
'REQUEST_METHOD': self._req.method,
- 'SCRIPT_NAME': None, # Not supported
+ 'SCRIPT_NAME': self.django_root,
'SERVER_NAME': self._req.server.server_hostname,
'SERVER_PORT': self._req.server.port,
'SERVER_PROTOCOL': self._req.protocol,
@@ -153,6 +173,7 @@ class ModPythonHandler(BaseHandler):
if self._request_middleware is None:
self.load_middleware()
+ set_script_prefix(req.get_options().get('django.root', ''))
dispatcher.send(signal=signals.request_started)
try:
try:
diff --git a/django/core/handlers/wsgi.py b/django/core/handlers/wsgi.py
index 795f139042..a1324936cd 100644
--- a/django/core/handlers/wsgi.py
+++ b/django/core/handlers/wsgi.py
@@ -7,7 +7,8 @@ except ImportError:
from django import http
from django.core import signals
-from django.core.handlers.base import BaseHandler
+from django.core.handlers import base
+from django.core.urlresolvers import set_script_prefix
from django.dispatch import dispatcher
from django.utils import datastructures
from django.utils.encoding import force_unicode
@@ -74,9 +75,20 @@ def safe_copyfileobj(fsrc, fdst, length=16*1024, size=0):
class WSGIRequest(http.HttpRequest):
def __init__(self, environ):
+ script_name = base.get_script_name(environ)
+ path_info = force_unicode(environ.get('PATH_INFO', u'/'))
+ if not path_info:
+ # Sometimes PATH_INFO exists, but is empty (e.g. accessing
+ # the SCRIPT_NAME URL without a trailing slash). We really need to
+ # operate as if they'd requested '/'. Not amazingly nice to force
+ # the path like this, but should be harmless.
+ path_info = u'/'
self.environ = environ
- self.path = force_unicode(environ['PATH_INFO'])
+ self.path_info = path_info
+ self.path = '%s%s' % (script_name, path_info)
self.META = environ
+ self.META['PATH_INFO'] = path_info
+ self.META['SCRIPT_NAME'] = script_name
self.method = environ['REQUEST_METHOD'].upper()
def __repr__(self):
@@ -178,7 +190,7 @@ class WSGIRequest(http.HttpRequest):
REQUEST = property(_get_request)
raw_post_data = property(_get_raw_post_data)
-class WSGIHandler(BaseHandler):
+class WSGIHandler(base.BaseHandler):
initLock = Lock()
request_class = WSGIRequest
@@ -194,6 +206,7 @@ class WSGIHandler(BaseHandler):
self.load_middleware()
self.initLock.release()
+ set_script_prefix(base.get_script_name(environ))
dispatcher.send(signal=signals.request_started)
try:
try:
diff --git a/django/core/mail.py b/django/core/mail.py
index b60757366f..d6c6eea190 100644
--- a/django/core/mail.py
+++ b/django/core/mail.py
@@ -71,10 +71,11 @@ class BadHeaderError(ValueError):
def forbid_multi_line_headers(name, val):
"""Forbids multi-line headers, to prevent header injection."""
+ val = force_unicode(val)
if '\n' in val or '\r' in val:
raise BadHeaderError("Header values can't contain newlines (got %r for header %r)" % (val, name))
try:
- val = force_unicode(val).encode('ascii')
+ val = val.encode('ascii')
except UnicodeEncodeError:
if name.lower() in ('to', 'from', 'cc'):
result = []
@@ -84,7 +85,7 @@ def forbid_multi_line_headers(name, val):
result.append(formataddr((nm, str(addr))))
val = ', '.join(result)
else:
- val = Header(force_unicode(val), settings.DEFAULT_CHARSET)
+ val = Header(val, settings.DEFAULT_CHARSET)
return name, val
class SafeMIMEText(MIMEText):
@@ -174,7 +175,7 @@ class SMTPConnection(object):
def _send(self, email_message):
"""A helper method that does the actual sending."""
- if not email_message.to:
+ if not email_message.recipients():
return False
try:
self.connection.sendmail(email_message.from_email,
diff --git a/django/core/management/commands/compilemessages.py b/django/core/management/commands/compilemessages.py
index 7a189a426a..f0975ca6c1 100644
--- a/django/core/management/commands/compilemessages.py
+++ b/django/core/management/commands/compilemessages.py
@@ -1,8 +1,7 @@
import os
import sys
from optparse import make_option
-from django.core.management.base import BaseCommand
-from django.core.management.color import no_style
+from django.core.management.base import BaseCommand, CommandError
try:
set
diff --git a/django/core/management/commands/test.py b/django/core/management/commands/test.py
index f0e13a2069..ef7b197b00 100644
--- a/django/core/management/commands/test.py
+++ b/django/core/management/commands/test.py
@@ -17,7 +17,6 @@ class Command(BaseCommand):
def handle(self, *test_labels, **options):
from django.conf import settings
- from django.db.models import get_app, get_apps
verbosity = int(options.get('verbosity', 1))
interactive = options.get('interactive', True)
diff --git a/django/core/management/commands/testserver.py b/django/core/management/commands/testserver.py
index 9b169d3d9b..b409bc91d1 100644
--- a/django/core/management/commands/testserver.py
+++ b/django/core/management/commands/testserver.py
@@ -17,7 +17,6 @@ class Command(BaseCommand):
requires_model_validation = False
def handle(self, *fixture_labels, **options):
- from django.conf import settings
from django.core.management import call_command
from django.test.utils import create_test_db
diff --git a/django/core/management/sql.py b/django/core/management/sql.py
index 0b01edcfc9..7c17807130 100644
--- a/django/core/management/sql.py
+++ b/django/core/management/sql.py
@@ -181,7 +181,7 @@ def sql_delete(app, style):
for model in app_models:
opts = model._meta
for f in opts.local_many_to_many:
- if isinstance(f.rel, generic.GenericRel):
+ if not f.creates_table:
continue
if cursor and table_name_converter(f.m2m_db_table()) in table_names:
output.append("%s %s;" % (style.SQL_KEYWORD('DROP TABLE'),
@@ -353,7 +353,7 @@ def many_to_many_sql_for_model(model, style):
qn = connection.ops.quote_name
inline_references = connection.features.inline_fk_references
for f in opts.local_many_to_many:
- if not isinstance(f.rel, generic.GenericRel):
+ if f.creates_table:
tablespace = f.db_tablespace or opts.db_tablespace
if tablespace and connection.features.supports_tablespaces:
tablespace_sql = ' ' + connection.ops.tablespace_sql(tablespace, inline=True)
@@ -435,12 +435,12 @@ def custom_sql_for_model(model, style):
output = []
# Post-creation SQL should come before any initial SQL data is loaded.
- # However, this should not be done for fields that are part of a
- # a parent model (via model inheritance).
+ # However, this should not be done for fields that are part of a a parent
+ # model (via model inheritance).
nm = opts.init_name_map()
- post_sql_fields = [f for f in opts.fields if nm[f.name][1] is None and hasattr(f, '_post_create_sql')]
+ post_sql_fields = [f for f in opts.local_fields if hasattr(f, 'post_create_sql')]
for f in post_sql_fields:
- output.extend(f._post_create_sql(style, model._meta.db_table))
+ output.extend(f.post_create_sql(style, model._meta.db_table))
# Some backends can't execute more than one SQL statement at a time,
# so split into separate statements.
diff --git a/django/core/management/validation.py b/django/core/management/validation.py
index e17409ae5d..e9d7b53027 100644
--- a/django/core/management/validation.py
+++ b/django/core/management/validation.py
@@ -102,6 +102,7 @@ def get_validation_errors(outfile, app=None):
if r.get_accessor_name() == rel_query_name:
e.add(opts, "Reverse query name for field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
+ seen_intermediary_signatures = []
for i, f in enumerate(opts.local_many_to_many):
# Check to see if the related m2m field will clash with any
# existing fields, m2m fields, m2m related objects or related
@@ -112,7 +113,49 @@ def get_validation_errors(outfile, app=None):
# so skip the next section
if isinstance(f.rel.to, (str, unicode)):
continue
-
+ if getattr(f.rel, 'through', None) is not None:
+ if hasattr(f.rel, 'through_model'):
+ from_model, to_model = cls, f.rel.to
+ if from_model == to_model and f.rel.symmetrical:
+ e.add(opts, "Many-to-many fields with intermediate tables cannot be symmetrical.")
+ seen_from, seen_to, seen_self = False, False, 0
+ for inter_field in f.rel.through_model._meta.fields:
+ rel_to = getattr(inter_field.rel, 'to', None)
+ if from_model == to_model: # relation to self
+ if rel_to == from_model:
+ seen_self += 1
+ if seen_self > 2:
+ e.add(opts, "Intermediary model %s has more than two foreign keys to %s, which is ambiguous and is not permitted." % (f.rel.through_model._meta.object_name, from_model._meta.object_name))
+ else:
+ if rel_to == from_model:
+ if seen_from:
+ e.add(opts, "Intermediary model %s has more than one foreign key to %s, which is ambiguous and is not permitted." % (f.rel.through_model._meta.object_name, rel_from._meta.object_name))
+ else:
+ seen_from = True
+ elif rel_to == to_model:
+ if seen_to:
+ e.add(opts, "Intermediary model %s has more than one foreign key to %s, which is ambiguous and is not permitted." % (f.rel.through_model._meta.object_name, rel_to._meta.object_name))
+ else:
+ seen_to = True
+ if f.rel.through_model not in models.get_models():
+ e.add(opts, "'%s' specifies an m2m relation through model %s, which has not been installed." % (f.name, f.rel.through))
+ signature = (f.rel.to, cls, f.rel.through_model)
+ if signature in seen_intermediary_signatures:
+ e.add(opts, "The model %s has two manually-defined m2m relations through the model %s, which is not permitted. Please consider using an extra field on your intermediary model instead." % (cls._meta.object_name, f.rel.through_model._meta.object_name))
+ else:
+ seen_intermediary_signatures.append(signature)
+ seen_related_fk, seen_this_fk = False, False
+ for field in f.rel.through_model._meta.fields:
+ if field.rel:
+ if not seen_related_fk and field.rel.to == f.rel.to:
+ seen_related_fk = True
+ elif field.rel.to == cls:
+ seen_this_fk = True
+ if not seen_related_fk or not seen_this_fk:
+ e.add(opts, "'%s' has a manually-defined m2m relation through model %s, which does not have foreign keys to %s and %s" % (f.name, f.rel.through, f.rel.to._meta.object_name, cls._meta.object_name))
+ else:
+ e.add(opts, "'%s' specifies an m2m relation through model %s, which has not been installed" % (f.name, f.rel.through))
+
rel_opts = f.rel.to._meta
rel_name = RelatedObject(f.rel.to, cls, f).get_accessor_name()
rel_query_name = f.related_query_name()
diff --git a/django/core/paginator.py b/django/core/paginator.py
index 439b0bc717..495cdf2d76 100644
--- a/django/core/paginator.py
+++ b/django/core/paginator.py
@@ -1,3 +1,5 @@
+from math import ceil
+
class InvalidPage(Exception):
pass
@@ -42,10 +44,12 @@ class Paginator(object):
def _get_count(self):
"Returns the total number of objects, across all pages."
if self._count is None:
- from django.db.models.query import QuerySet
- if isinstance(self.object_list, QuerySet):
+ try:
self._count = self.object_list.count()
- else:
+ except (AttributeError, TypeError):
+ # AttributeError if object_list has no count() method.
+ # TypeError if object_list.count() requires arguments
+ # (i.e. is of type list).
self._count = len(self.object_list)
return self._count
count = property(_get_count)
@@ -53,13 +57,11 @@ class Paginator(object):
def _get_num_pages(self):
"Returns the total number of pages."
if self._num_pages is None:
- hits = self.count - 1 - self.orphans
- if hits < 1:
- hits = 0
- if hits == 0 and not self.allow_empty_first_page:
+ if self.count == 0 and not self.allow_empty_first_page:
self._num_pages = 0
else:
- self._num_pages = hits // self.per_page + 1
+ hits = max(1, self.count - self.orphans)
+ self._num_pages = int(ceil(hits / float(self.per_page)))
return self._num_pages
num_pages = property(_get_num_pages)
@@ -102,6 +104,9 @@ class Page(object):
Returns the 1-based index of the first object on this page,
relative to total objects in the paginator.
"""
+ # Special case, return zero if no items.
+ if self.paginator.count == 0:
+ return 0
return (self.paginator.per_page * (self.number - 1)) + 1
def end_index(self):
@@ -109,82 +114,7 @@ class Page(object):
Returns the 1-based index of the last object on this page,
relative to total objects found (hits).
"""
+ # Special case for the last page because there can be orphans.
if self.number == self.paginator.num_pages:
return self.paginator.count
return self.number * self.paginator.per_page
-
-class ObjectPaginator(Paginator):
- """
- Legacy ObjectPaginator class, for backwards compatibility.
-
- Note that each method on this class that takes page_number expects a
- zero-based page number, whereas the new API (Paginator/Page) uses one-based
- page numbers.
- """
- def __init__(self, query_set, num_per_page, orphans=0):
- Paginator.__init__(self, query_set, num_per_page, orphans)
- import warnings
- warnings.warn("The ObjectPaginator is deprecated. Use django.core.paginator.Paginator instead.", DeprecationWarning)
-
- # Keep these attributes around for backwards compatibility.
- self.query_set = query_set
- self.num_per_page = num_per_page
- self._hits = self._pages = None
-
- def validate_page_number(self, page_number):
- try:
- page_number = int(page_number) + 1
- except ValueError:
- raise PageNotAnInteger
- return self.validate_number(page_number)
-
- def get_page(self, page_number):
- try:
- page_number = int(page_number) + 1
- except ValueError:
- raise PageNotAnInteger
- return self.page(page_number).object_list
-
- def has_next_page(self, page_number):
- return page_number < self.pages - 1
-
- def has_previous_page(self, page_number):
- return page_number > 0
-
- def first_on_page(self, page_number):
- """
- Returns the 1-based index of the first object on the given page,
- relative to total objects found (hits).
- """
- page_number = self.validate_page_number(page_number)
- return (self.num_per_page * (page_number - 1)) + 1
-
- def last_on_page(self, page_number):
- """
- Returns the 1-based index of the last object on the given page,
- relative to total objects found (hits).
- """
- page_number = self.validate_page_number(page_number)
- if page_number == self.num_pages:
- return self.count
- return page_number * self.num_per_page
-
- def _get_count(self):
- # The old API allowed for self.object_list to be either a QuerySet or a
- # list. Here, we handle both.
- if self._count is None:
- try:
- self._count = self.object_list.count()
- except (AttributeError, TypeError):
- # AttributeError if object_list has no count() method.
- # TypeError if object_list.count() requires arguments
- # (i.e. is of type list).
- self._count = len(self.object_list)
- return self._count
- count = property(_get_count)
-
- # The old API called it "hits" instead of "count".
- hits = count
-
- # The old API called it "pages" instead of "num_pages".
- pages = Paginator.num_pages
diff --git a/django/core/serializers/base.py b/django/core/serializers/base.py
index f6943e543e..bfd785a6fe 100644
--- a/django/core/serializers/base.py
+++ b/django/core/serializers/base.py
@@ -2,10 +2,8 @@
Module for abstract serializer/unserializer base classes.
"""
-try:
- from cStringIO import StringIO
-except ImportError:
- from StringIO import StringIO
+from StringIO import StringIO
+
from django.db import models
from django.utils.encoding import smart_str, smart_unicode
from django.utils import datetime_safe
diff --git a/django/core/serializers/json.py b/django/core/serializers/json.py
index a84206a0fe..97e5bc9b26 100644
--- a/django/core/serializers/json.py
+++ b/django/core/serializers/json.py
@@ -3,14 +3,13 @@ Serialize data to/from JSON
"""
import datetime
-from django.utils import simplejson
+from StringIO import StringIO
+
from django.core.serializers.python import Serializer as PythonSerializer
from django.core.serializers.python import Deserializer as PythonDeserializer
from django.utils import datetime_safe
-try:
- from cStringIO import StringIO
-except ImportError:
- from StringIO import StringIO
+from django.utils import simplejson
+
try:
import decimal
except ImportError:
diff --git a/django/core/serializers/pyyaml.py b/django/core/serializers/pyyaml.py
index 58cf59bed9..ac77166a2f 100644
--- a/django/core/serializers/pyyaml.py
+++ b/django/core/serializers/pyyaml.py
@@ -4,14 +4,12 @@ YAML serializer.
Requires PyYaml (http://pyyaml.org/), but that's checked for in __init__.
"""
+from StringIO import StringIO
+import yaml
+
from django.db import models
from django.core.serializers.python import Serializer as PythonSerializer
from django.core.serializers.python import Deserializer as PythonDeserializer
-try:
- from cStringIO import StringIO
-except ImportError:
- from StringIO import StringIO
-import yaml
class Serializer(PythonSerializer):
"""
diff --git a/django/core/urlresolvers.py b/django/core/urlresolvers.py
index ff0bcbcfea..4ec725cb38 100644
--- a/django/core/urlresolvers.py
+++ b/django/core/urlresolvers.py
@@ -7,11 +7,13 @@ a string) and returns a tuple in this format:
(view_function, function_args, function_kwargs)
"""
+import re
+
from django.http import Http404
from django.core.exceptions import ImproperlyConfigured, ViewDoesNotExist
from django.utils.encoding import iri_to_uri, force_unicode, smart_str
from django.utils.functional import memoize
-import re
+from django.utils.thread_support import currentThread
try:
reversed
@@ -21,6 +23,11 @@ except NameError:
_resolver_cache = {} # Maps urlconf modules to RegexURLResolver instances.
_callable_cache = {} # Maps view and url pattern names to their view functions.
+# SCRIPT_NAME prefixes for each thread are stored here. If there's no entry for
+# the current thread (which is the only one we ever access), it is assumed to
+# be empty.
+_prefixes = {}
+
class Resolver404(Http404):
pass
@@ -291,13 +298,33 @@ class RegexURLResolver(object):
def resolve(path, urlconf=None):
return get_resolver(urlconf).resolve(path)
-def reverse(viewname, urlconf=None, args=None, kwargs=None):
+def reverse(viewname, urlconf=None, args=None, kwargs=None, prefix=None):
args = args or []
kwargs = kwargs or {}
- return iri_to_uri(u'/' + get_resolver(urlconf).reverse(viewname, *args, **kwargs))
+ if prefix is None:
+ prefix = get_script_prefix()
+ return iri_to_uri(u'%s%s' % (prefix, get_resolver(urlconf).reverse(viewname,
+ *args, **kwargs)))
def clear_url_caches():
global _resolver_cache
global _callable_cache
_resolver_cache.clear()
_callable_cache.clear()
+
+def set_script_prefix(prefix):
+ """
+ Sets the script prefix for the current thread.
+ """
+ if not prefix.endswith('/'):
+ prefix += '/'
+ _prefixes[currentThread()] = prefix
+
+def get_script_prefix():
+ """
+ Returns the currently active script prefix. Useful for client code that
+ wishes to construct their own URLs manually (although accessing the request
+ instance is normally going to be a lot cleaner).
+ """
+ return _prefixes.get(currentThread(), u'/')
+
diff --git a/django/db/backends/__init__.py b/django/db/backends/__init__.py
index 899a779673..d65eacd042 100644
--- a/django/db/backends/__init__.py
+++ b/django/db/backends/__init__.py
@@ -5,6 +5,9 @@ except ImportError:
# Import copy of _thread_local.py from Python 2.4
from django.utils._threading_local import local
+from django.db.backends import util
+from django.utils import datetime_safe
+
class BaseDatabaseWrapper(local):
"""
Represents a database connection.
@@ -36,12 +39,13 @@ class BaseDatabaseWrapper(local):
return cursor
def make_debug_cursor(self, cursor):
- from django.db.backends import util
return util.CursorDebugWrapper(cursor, self)
class BaseDatabaseFeatures(object):
allows_group_by_ordinal = True
inline_fk_references = True
+ # True if django.db.backend.utils.typecast_timestamp is used on values
+ # returned from dates() calls.
needs_datetime_string_cast = True
supports_constraints = True
supports_tablespaces = False
@@ -49,10 +53,7 @@ class BaseDatabaseFeatures(object):
uses_custom_query_class = False
empty_fetchmany_value = []
update_can_self_select = True
- supports_usecs = True
- time_field_needs_date = False
interprets_empty_strings_as_nulls = False
- date_field_supports_time_value = True
can_use_chunked_reads = True
class BaseDatabaseOperations(object):
@@ -263,3 +264,64 @@ class BaseDatabaseOperations(object):
"""Prepares a value for use in a LIKE query."""
from django.utils.encoding import smart_unicode
return smart_unicode(x).replace("\\", "\\\\").replace("%", "\%").replace("_", "\_")
+
+ def value_to_db_date(self, value):
+ """
+ Transform a date value to an object compatible with what is expected
+ by the backend driver for date columns.
+ """
+ if value is None:
+ return None
+ return datetime_safe.new_date(value).strftime('%Y-%m-%d')
+
+ def value_to_db_datetime(self, value):
+ """
+ Transform a datetime value to an object compatible with what is expected
+ by the backend driver for datetime columns.
+ """
+ if value is None:
+ return None
+ return unicode(value)
+
+ def value_to_db_time(self, value):
+ """
+ Transform a datetime value to an object compatible with what is expected
+ by the backend driver for time columns.
+ """
+ if value is None:
+ return None
+ return unicode(value)
+
+ def value_to_db_decimal(self, value, max_digits, decimal_places):
+ """
+ Transform a decimal.Decimal value to an object compatible with what is
+ expected by the backend driver for decimal (numeric) columns.
+ """
+ if value is None:
+ return None
+ return util.format_number(value, max_digits, decimal_places)
+
+ def year_lookup_bounds(self, value):
+ """
+ Returns a two-elements list with the lower and upper bound to be used
+ with a BETWEEN operator to query a field value using a year lookup
+
+ `value` is an int, containing the looked-up year.
+ """
+ first = '%s-01-01 00:00:00'
+ second = '%s-12-31 23:59:59.999999'
+ return [first % value, second % value]
+
+ def year_lookup_bounds_for_date_field(self, value):
+ """
+ Returns a two-elements list with the lower and upper bound to be used
+ with a BETWEEN operator to query a DateField value using a year lookup
+
+ `value` is an int, containing the looked-up year.
+
+ By default, it just calls `self.year_lookup_bounds`. Some backends need
+ this hook because on their DB date fields can't be compared to values
+ which include a time part.
+ """
+ return self.year_lookup_bounds(value)
+
diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py
index 74138a7b11..3b8d897925 100644
--- a/django/db/backends/mysql/base.py
+++ b/django/db/backends/mysql/base.py
@@ -63,7 +63,6 @@ class DatabaseFeatures(BaseDatabaseFeatures):
inline_fk_references = False
empty_fetchmany_value = ()
update_can_self_select = False
- supports_usecs = False
class DatabaseOperations(BaseDatabaseOperations):
def date_extract_sql(self, lookup_type, field_name):
@@ -124,6 +123,24 @@ class DatabaseOperations(BaseDatabaseOperations):
else:
return []
+ def value_to_db_datetime(self, value):
+ # MySQL doesn't support microseconds
+ if value is None:
+ return None
+ return unicode(value.replace(microsecond=0))
+
+ def value_to_db_time(self, value):
+ # MySQL doesn't support microseconds
+ if value is None:
+ return None
+ return unicode(value.replace(microsecond=0))
+
+ def year_lookup_bounds(self, value):
+ # Again, no microseconds
+ first = '%s-01-01 00:00:00'
+ second = '%s-12-31 23:59:59.99'
+ return [first % value, second % value]
+
class DatabaseWrapper(BaseDatabaseWrapper):
features = DatabaseFeatures()
ops = DatabaseOperations()
diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py
index a41084bca3..bdb73b1864 100644
--- a/django/db/backends/oracle/base.py
+++ b/django/db/backends/oracle/base.py
@@ -5,10 +5,11 @@ Requires cx_Oracle: http://www.python.net/crew/atuining/cx_Oracle/
"""
import os
+import datetime
+import time
from django.db.backends import BaseDatabaseWrapper, BaseDatabaseFeatures, BaseDatabaseOperations, util
from django.db.backends.oracle import query
-from django.utils.datastructures import SortedDict
from django.utils.encoding import smart_str, force_unicode
# Oracle takes client-side character set encoding from the environment.
@@ -29,9 +30,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
supports_tablespaces = True
uses_case_insensitive_names = True
uses_custom_query_class = True
- time_field_needs_date = True
interprets_empty_strings_as_nulls = True
- date_field_supports_time_value = False
class DatabaseOperations(BaseDatabaseOperations):
def autoinc_sql(self, table, column):
@@ -181,6 +180,21 @@ class DatabaseOperations(BaseDatabaseOperations):
def tablespace_sql(self, tablespace, inline=False):
return "%sTABLESPACE %s" % ((inline and "USING INDEX " or ""), self.quote_name(tablespace))
+ def value_to_db_time(self, value):
+ if value is None:
+ return None
+ if isinstance(value, basestring):
+ return datetime.datetime(*(time.strptime(value, '%H:%M:%S')[:6]))
+ return datetime.datetime(1900, 1, 1, value.hour, value.minute,
+ value.second, value.microsecond)
+
+ def year_lookup_bounds_for_date_field(self, value):
+ first = '%s-01-01'
+ second = '%s-12-31'
+ return [first % value, second % value]
+
+
+
class DatabaseWrapper(BaseDatabaseWrapper):
features = DatabaseFeatures()
ops = DatabaseOperations()
@@ -245,10 +259,10 @@ class DatabaseWrapper(BaseDatabaseWrapper):
class OracleParam(object):
"""
- Wrapper object for formatting parameters for Oracle. If the string
- representation of the value is large enough (greater than 4000 characters)
+ Wrapper object for formatting parameters for Oracle. If the string
+ representation of the value is large enough (greater than 4000 characters)
the input size needs to be set as NCLOB. Alternatively, if the parameter has
- an `input_size` attribute, then the value of the `input_size` attribute will
+ an `input_size` attribute, then the value of the `input_size` attribute will
be used instead. Otherwise, no input size will be set for the parameter when
executing the query.
"""
@@ -282,7 +296,7 @@ class FormatStylePlaceholderCursor(Database.Cursor):
return result
else:
return tuple([OracleParam(p, self.charset, True) for p in params])
-
+
def _guess_input_sizes(self, params_list):
if isinstance(params_list[0], dict):
sizes = {}
@@ -303,7 +317,7 @@ class FormatStylePlaceholderCursor(Database.Cursor):
return dict([(k, p.smart_str) for k, p in params.iteritems()])
else:
return [p.smart_str for p in params]
-
+
def execute(self, query, params=None):
if params is None:
params = []
diff --git a/django/db/backends/oracle/query.py b/django/db/backends/oracle/query.py
index 7e50c7b5db..49e1c4131c 100644
--- a/django/db/backends/oracle/query.py
+++ b/django/db/backends/oracle/query.py
@@ -87,9 +87,11 @@ def query_class(QueryClass, Database):
If 'with_limits' is False, any limit/offset information is not
included in the query.
"""
+
# The `do_offset` flag indicates whether we need to construct
# the SQL needed to use limit/offset w/Oracle.
- do_offset = with_limits and (self.high_mark or self.low_mark)
+ do_offset = with_limits and (self.high_mark is not None
+ or self.low_mark)
# If no offsets, just return the result of the base class
# `as_sql`.
@@ -117,7 +119,7 @@ def query_class(QueryClass, Database):
# Getting the selection SQL and the params, which has the `rn`
# extra selection SQL.
self.extra_select['rn'] = 'ROW_NUMBER() OVER (ORDER BY %s )' % rn_orderby
- sql, params= super(OracleQuery, self).as_sql(with_limits=False,
+ sql, params = super(OracleQuery, self).as_sql(with_limits=False,
with_col_aliases=True)
# Constructing the result SQL, using the initial select SQL
@@ -126,7 +128,7 @@ def query_class(QueryClass, Database):
# Place WHERE condition on `rn` for the desired range.
result.append('WHERE rn > %d' % self.low_mark)
- if self.high_mark:
+ if self.high_mark is not None:
result.append('AND rn <= %d' % self.high_mark)
# Returning the SQL w/params.
@@ -148,4 +150,3 @@ def query_class(QueryClass, Database):
_classes[QueryClass] = OracleQuery
return OracleQuery
-
diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py
index 48d9ad4c4b..71be86f00b 100644
--- a/django/db/backends/sqlite3/base.py
+++ b/django/db/backends/sqlite3/base.py
@@ -84,6 +84,12 @@ class DatabaseOperations(BaseDatabaseOperations):
# sql_flush() implementations). Just return SQL at this point
return sql
+ def year_lookup_bounds(self, value):
+ first = '%s-01-01'
+ second = '%s-12-31 23:59:59.999999'
+ return [first % value, second % value]
+
+
class DatabaseWrapper(BaseDatabaseWrapper):
features = DatabaseFeatures()
ops = DatabaseOperations()
@@ -159,7 +165,7 @@ def _sqlite_extract(lookup_type, dt):
dt = util.typecast_timestamp(dt)
except (ValueError, TypeError):
return None
- return str(getattr(dt, lookup_type))
+ return getattr(dt, lookup_type)
def _sqlite_date_trunc(lookup_type, dt):
try:
diff --git a/django/db/backends/util.py b/django/db/backends/util.py
index 367072879e..7228b4046b 100644
--- a/django/db/backends/util.py
+++ b/django/db/backends/util.py
@@ -1,7 +1,8 @@
import datetime
-import md5
from time import time
+from django.utils.hashcompat import md5_constructor
+
try:
import decimal
except ImportError:
@@ -114,6 +115,13 @@ def truncate_name(name, length=None):
if length is None or len(name) <= length:
return name
- hash = md5.md5(name).hexdigest()[:4]
+ hash = md5_constructor(name).hexdigest()[:4]
return '%s%s' % (name[:length-4], hash)
+
+def format_number(value, max_digits, decimal_places):
+ """
+ Formats a number into a string with the requisite number of digits and
+ decimal places.
+ """
+ return u"%.*f" % (decimal_places, value)
diff --git a/django/db/models/__init__.py b/django/db/models/__init__.py
index bd6cc3542d..18c47e86f3 100644
--- a/django/db/models/__init__.py
+++ b/django/db/models/__init__.py
@@ -10,8 +10,6 @@ from django.db.models.fields import *
from django.db.models.fields.subclassing import SubfieldBase
from django.db.models.fields.related import ForeignKey, OneToOneField, ManyToManyField, ManyToOneRel, ManyToManyRel, OneToOneRel, TABULAR, STACKED
from django.db.models import signals
-from django.utils.functional import curry
-from django.utils.text import capfirst
# Admin stages.
ADD, CHANGE, BOTH = 1, 2, 3
diff --git a/django/db/models/base.py b/django/db/models/base.py
index 080e0af588..7d7def3bad 100644
--- a/django/db/models/base.py
+++ b/django/db/models/base.py
@@ -12,7 +12,7 @@ import django.db.models.manipulators # Imported to register signal handler.
import django.db.models.manager # Ditto.
from django.core import validators
from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned, FieldError
-from django.db.models.fields import AutoField, ImageField, FieldDoesNotExist
+from django.db.models.fields import AutoField, ImageField
from django.db.models.fields.related import OneToOneRel, ManyToOneRel, OneToOneField
from django.db.models.query import delete_objects, Q, CollectedObjects
from django.db.models.options import Options
@@ -20,7 +20,6 @@ from django.db import connection, transaction
from django.db.models import signals
from django.db.models.loading import register_models, get_model
from django.dispatch import dispatcher
-from django.utils.datastructures import SortedDict
from django.utils.functional import curry
from django.utils.encoding import smart_str, force_unicode, smart_unicode
from django.core.files.move import file_move_safe
@@ -201,6 +200,7 @@ class Model(object):
# keywords, or default.
for field in fields_iter:
+ rel_obj = None
if kwargs:
if isinstance(field.rel, ManyToOneRel):
try:
@@ -217,17 +217,18 @@ class Model(object):
# pass in "None" for related objects if it's allowed.
if rel_obj is None and field.null:
val = None
- else:
- try:
- val = getattr(rel_obj, field.rel.get_related_field().attname)
- except AttributeError:
- raise TypeError("Invalid value: %r should be a %s instance, not a %s" %
- (field.name, field.rel.to, type(rel_obj)))
else:
val = kwargs.pop(field.attname, field.get_default())
else:
val = field.get_default()
- setattr(self, field.attname, val)
+ # If we got passed a related instance, set it using the field.name
+ # instead of field.attname (e.g. "user" instead of "user_id") so
+ # that the object gets properly cached (and type checked) by the
+ # RelatedObjectDescriptor.
+ if rel_obj:
+ setattr(self, field.name, rel_obj)
+ else:
+ setattr(self, field.attname, val)
if kwargs:
for prop in kwargs.keys():
@@ -299,6 +300,12 @@ class Model(object):
# attributes we have been given to the class we have been given.
if not raw:
for parent, field in meta.parents.items():
+ # At this point, parent's primary key field may be unknown
+ # (for example, from administration form which doesn't fill
+ # this field). If so, fill it.
+ if getattr(self, parent._meta.pk.attname) is None and getattr(self, field.attname) is not None:
+ setattr(self, parent._meta.pk.attname, getattr(self, field.attname))
+
self.save_base(raw, parent)
setattr(self, field.attname, self._get_pk_val(parent._meta))
@@ -472,11 +479,12 @@ class Model(object):
return os.path.getsize(self._get_FIELD_filename(field))
def _save_FIELD_file(self, field, filename, raw_field, save=True):
- directory = field.get_directory_name()
- try: # Create the date-based directory if it doesn't exist.
- os.makedirs(os.path.join(settings.MEDIA_ROOT, directory))
- except OSError: # Directory probably already exists.
- pass
+ # Create the upload directory if it doesn't already exist
+ directory = os.path.join(settings.MEDIA_ROOT, field.get_directory_name())
+ if not os.path.exists(directory):
+ os.makedirs(directory)
+ elif not os.path.isdir(directory):
+ raise IOError('%s exists and is not a directory' % directory)
# Check for old-style usage (files-as-dictionaries). Warn here first
# since there are multiple locations where we need to support both new
@@ -494,7 +502,7 @@ class Model(object):
elif isinstance(raw_field, basestring):
import warnings
warnings.warn(
- message = "Representing uploaded files as dictionaries is deprecated. Use django.core.files.uploadedfile.SimpleUploadedFile instead.",
+ message = "Representing uploaded files as strings is deprecated. Use django.core.files.uploadedfile.SimpleUploadedFile instead.",
category = DeprecationWarning,
stacklevel = 2
)
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index 78f75aea35..494c42cc54 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -22,7 +22,6 @@ from django.utils.itercompat import tee
from django.utils.text import capfirst
from django.utils.translation import ugettext_lazy, ugettext as _
from django.utils.encoding import smart_unicode, force_unicode, smart_str
-from django.utils.maxlength import LegacyMaxlength
from django.utils import datetime_safe
class NOT_PROVIDED:
@@ -62,10 +61,6 @@ def manipulator_validator_unique(f, opts, self, field_data, all_data):
# getattr(obj, opts.pk.attname)
class Field(object):
- # Provide backwards compatibility for the maxlength attribute and
- # argument for this class and all subclasses.
- __metaclass__ = LegacyMaxlength
-
# Designates whether empty strings fundamentally are allowed at the
# database level.
empty_strings_allowed = True
@@ -191,7 +186,8 @@ class Field(object):
def set_attributes_from_name(self, name):
self.name = name
self.attname, self.column = self.get_attname_column()
- self.verbose_name = self.verbose_name or (name and name.replace('_', ' '))
+ if self.verbose_name is None and name:
+ self.verbose_name = name.replace('_', ' ')
def contribute_to_class(self, cls, name):
self.set_attributes_from_name(name)
@@ -217,19 +213,30 @@ class Field(object):
"Returns field's value just before saving."
return getattr(model_instance, self.attname)
+ def get_db_prep_value(self, value):
+ """Returns field's value prepared for interacting with the database
+ backend.
+
+ Used by the default implementations of ``get_db_prep_save``and
+ `get_db_prep_lookup```
+ """
+ return value
+
def get_db_prep_save(self, value):
"Returns field's value prepared for saving into a database."
- return value
+ return self.get_db_prep_value(value)
def get_db_prep_lookup(self, lookup_type, value):
"Returns field's value prepared for database lookup."
if hasattr(value, 'as_sql'):
sql, params = value.as_sql()
return QueryWrapper(('(%s)' % sql), params)
- if lookup_type in ('exact', 'regex', 'iregex', 'gt', 'gte', 'lt', 'lte', 'month', 'day', 'search'):
+ if lookup_type in ('regex', 'iregex', 'month', 'day', 'search'):
return [value]
+ elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte'):
+ return [self.get_db_prep_value(value)]
elif lookup_type in ('range', 'in'):
- return value
+ return [self.get_db_prep_value(v) for v in value]
elif lookup_type in ('contains', 'icontains'):
return ["%%%s%%" % connection.ops.prep_for_like_query(value)]
elif lookup_type == 'iexact':
@@ -245,19 +252,12 @@ class Field(object):
value = int(value)
except ValueError:
raise ValueError("The __year lookup type requires an integer argument")
- if settings.DATABASE_ENGINE == 'sqlite3':
- first = '%s-01-01'
- second = '%s-12-31 23:59:59.999999'
- elif not connection.features.date_field_supports_time_value and self.get_internal_type() == 'DateField':
- first = '%s-01-01'
- second = '%s-12-31'
- elif not connection.features.supports_usecs:
- first = '%s-01-01 00:00:00'
- second = '%s-12-31 23:59:59.99'
+
+ if self.get_internal_type() == 'DateField':
+ return connection.ops.year_lookup_bounds_for_date_field(value)
else:
- first = '%s-01-01 00:00:00'
- second = '%s-12-31 23:59:59.999999'
- return [first % value, second % value]
+ return connection.ops.year_lookup_bounds(value)
+
raise TypeError("Field has invalid lookup: %s" % lookup_type)
def has_default(self):
@@ -288,7 +288,7 @@ class Field(object):
if self.choices:
field_objs = [oldforms.SelectField]
- params['choices'] = self.flatchoices
+ params['choices'] = self.get_flatchoices()
else:
field_objs = self.get_manipulator_field_objs()
return (field_objs, params)
@@ -362,7 +362,8 @@ class Field(object):
return val
def get_choices(self, include_blank=True, blank_choice=BLANK_CHOICE_DASH):
- "Returns a list of tuples used as SelectField choices for this field."
+ """Returns choices with a default blank choices included, for use
+ as SelectField choices for this field."""
first_choice = include_blank and blank_choice or []
if self.choices:
return first_choice + list(self.choices)
@@ -376,6 +377,11 @@ class Field(object):
def get_choices_default(self):
return self.get_choices()
+ def get_flatchoices(self, include_blank=True, blank_choice=BLANK_CHOICE_DASH):
+ "Returns flattened choices with a default blank choice included."
+ first_choice = include_blank and blank_choice or []
+ return first_choice + list(self.flatchoices)
+
def _get_val_from_obj(self, obj):
if obj:
return getattr(obj, self.attname)
@@ -408,15 +414,16 @@ class Field(object):
choices = property(_get_choices)
def _get_flatchoices(self):
+ """Flattened version of choices tuple."""
flat = []
- for choice, value in self.get_choices_default():
+ for choice, value in self.choices:
if type(value) in (list, tuple):
flat.extend(value)
else:
flat.append((choice,value))
return flat
flatchoices = property(_get_flatchoices)
-
+
def save_form_data(self, instance, data):
setattr(instance, self.name, data)
@@ -449,6 +456,11 @@ class AutoField(Field):
except (TypeError, ValueError):
raise validators.ValidationError, _("This value must be an integer.")
+ def get_db_prep_value(self, value):
+ if value is None:
+ return None
+ return int(value)
+
def get_manipulator_fields(self, opts, manipulator, change, name_prefix='', rel=False, follow=True):
if not rel:
return [] # Don't add a FormField unless it's in a related context.
@@ -477,6 +489,8 @@ class AutoField(Field):
class BooleanField(Field):
def __init__(self, *args, **kwargs):
kwargs['blank'] = True
+ if 'default' not in kwargs and not kwargs.get('null'):
+ kwargs['default'] = False
Field.__init__(self, *args, **kwargs)
def get_internal_type(self):
@@ -488,6 +502,11 @@ class BooleanField(Field):
if value in ('f', 'False', '0'): return False
raise validators.ValidationError, _("This value must be either True or False.")
+ def get_db_prep_value(self, value):
+ if value is None:
+ return None
+ return bool(value)
+
def get_manipulator_field_objs(self):
return [oldforms.CheckboxField]
@@ -549,15 +568,6 @@ class DateField(Field):
except ValueError:
raise validators.ValidationError, _('Enter a valid date in YYYY-MM-DD format.')
- def get_db_prep_lookup(self, lookup_type, value):
- if lookup_type in ('range', 'in'):
- value = [smart_unicode(v) for v in value]
- elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte') and hasattr(value, 'strftime'):
- value = datetime_safe.new_date(value).strftime('%Y-%m-%d')
- else:
- value = smart_unicode(value)
- return Field.get_db_prep_lookup(self, lookup_type, value)
-
def pre_save(self, model_instance, add):
if self.auto_now or (self.auto_now_add and add):
value = datetime.datetime.now()
@@ -581,16 +591,9 @@ class DateField(Field):
else:
return self.editable or self.auto_now or self.auto_now_add
- def get_db_prep_save(self, value):
- # Casts dates into string format for entry into database.
- if value is not None:
- try:
- value = datetime_safe.new_date(value).strftime('%Y-%m-%d')
- except AttributeError:
- # If value is already a string it won't have a strftime method,
- # so we'll just let it pass through.
- pass
- return Field.get_db_prep_save(self, value)
+ def get_db_prep_value(self, value):
+ # Casts dates into the format expected by the backend
+ return connection.ops.value_to_db_date(self.to_python(value))
def get_manipulator_field_objs(self):
return [oldforms.DateField]
@@ -619,33 +622,37 @@ class DateTimeField(DateField):
return value
if isinstance(value, datetime.date):
return datetime.datetime(value.year, value.month, value.day)
+
+ # Attempt to parse a datetime:
+ value = smart_str(value)
+ # split usecs, because they are not recognized by strptime.
+ if '.' in value:
+ try:
+ value, usecs = value.split('.')
+ usecs = int(usecs)
+ except ValueError:
+ raise validators.ValidationError, _('Enter a valid date/time in YYYY-MM-DD HH:MM[ss[.uuuuuu]] format.')
+ else:
+ usecs = 0
+ kwargs = {'microsecond': usecs}
try: # Seconds are optional, so try converting seconds first.
- return datetime.datetime(*time.strptime(value, '%Y-%m-%d %H:%M:%S')[:6])
+ return datetime.datetime(*time.strptime(value, '%Y-%m-%d %H:%M:%S')[:6],
+ **kwargs)
+
except ValueError:
try: # Try without seconds.
- return datetime.datetime(*time.strptime(value, '%Y-%m-%d %H:%M')[:5])
+ return datetime.datetime(*time.strptime(value, '%Y-%m-%d %H:%M')[:5],
+ **kwargs)
except ValueError: # Try without hour/minutes/seconds.
try:
- return datetime.datetime(*time.strptime(value, '%Y-%m-%d')[:3])
+ return datetime.datetime(*time.strptime(value, '%Y-%m-%d')[:3],
+ **kwargs)
except ValueError:
- raise validators.ValidationError, _('Enter a valid date/time in YYYY-MM-DD HH:MM format.')
+ raise validators.ValidationError, _('Enter a valid date/time in YYYY-MM-DD HH:MM[ss[.uuuuuu]] format.')
- def get_db_prep_save(self, value):
- # Casts dates into string format for entry into database.
- if value is not None:
- # MySQL will throw a warning if microseconds are given, because it
- # doesn't support microseconds.
- if not connection.features.supports_usecs and hasattr(value, 'microsecond'):
- value = value.replace(microsecond=0)
- value = smart_unicode(value)
- return Field.get_db_prep_save(self, value)
-
- def get_db_prep_lookup(self, lookup_type, value):
- if lookup_type in ('range', 'in'):
- value = [smart_unicode(v) for v in value]
- else:
- value = smart_unicode(value)
- return Field.get_db_prep_lookup(self, lookup_type, value)
+ def get_db_prep_value(self, value):
+ # Casts dates into the format expected by the backend
+ return connection.ops.value_to_db_datetime(self.to_python(value))
def get_manipulator_field_objs(self):
return [oldforms.DateField, oldforms.TimeField]
@@ -710,26 +717,18 @@ class DecimalField(Field):
Formats a number into a string with the requisite number of digits and
decimal places.
"""
- num_chars = self.max_digits
- # Allow for a decimal point
- if self.decimal_places > 0:
- num_chars += 1
- # Allow for a minus sign
- if value < 0:
- num_chars += 1
-
- return u"%.*f" % (self.decimal_places, value)
-
- def get_db_prep_save(self, value):
- value = self._format(value)
- return super(DecimalField, self).get_db_prep_save(value)
+ # Method moved to django.db.backends.util.
+ #
+ # It is preserved because it is used by the oracle backend
+ # (django.db.backends.oracle.query), and also for
+ # backwards-compatibility with any external code which may have used
+ # this method.
+ from django.db.backends import util
+ return util.format_number(value, self.max_digits, self.decimal_places)
- def get_db_prep_lookup(self, lookup_type, value):
- if lookup_type in ('range', 'in'):
- value = [self._format(v) for v in value]
- else:
- value = self._format(value)
- return super(DecimalField, self).get_db_prep_lookup(lookup_type, value)
+ def get_db_prep_value(self, value):
+ return connection.ops.value_to_db_decimal(self.to_python(value),
+ self.max_digits, self.decimal_places)
def get_manipulator_field_objs(self):
return [curry(oldforms.DecimalField, max_digits=self.max_digits, decimal_places=self.decimal_places)]
@@ -768,7 +767,7 @@ class FileField(Field):
def get_internal_type(self):
return "FileField"
- def get_db_prep_save(self, value):
+ def get_db_prep_value(self, value):
"Returns field's value prepared for saving into a database."
# Need to convert UploadedFile objects provided via a form to unicode for database insertion
if hasattr(value, 'name'):
@@ -909,6 +908,11 @@ class FilePathField(Field):
class FloatField(Field):
empty_strings_allowed = False
+ def get_db_prep_value(self, value):
+ if value is None:
+ return None
+ return float(value)
+
def get_manipulator_field_objs(self):
return [oldforms.FloatField]
@@ -956,6 +960,11 @@ class ImageField(FileField):
class IntegerField(Field):
empty_strings_allowed = False
+ def get_db_prep_value(self, value):
+ if value is None:
+ return None
+ return int(value)
+
def get_manipulator_field_objs(self):
return [oldforms.IntegerField]
@@ -1003,6 +1012,11 @@ class NullBooleanField(Field):
if value in ('f', 'False', '0'): return False
raise validators.ValidationError, _("This value must be either None, True or False.")
+ def get_db_prep_value(self, value):
+ if value is None:
+ return None
+ return bool(value)
+
def get_manipulator_field_objs(self):
return [oldforms.NullBooleanField]
@@ -1015,7 +1029,7 @@ class NullBooleanField(Field):
defaults.update(kwargs)
return super(NullBooleanField, self).formfield(**defaults)
-class PhoneNumberField(IntegerField):
+class PhoneNumberField(Field):
def get_manipulator_field_objs(self):
return [oldforms.PhoneNumberField]
@@ -1097,20 +1111,34 @@ class TimeField(Field):
def get_internal_type(self):
return "TimeField"
- def get_db_prep_lookup(self, lookup_type, value):
- if connection.features.time_field_needs_date:
- # Oracle requires a date in order to parse.
- def prep(value):
- if isinstance(value, datetime.time):
- value = datetime.datetime.combine(datetime.date(1900, 1, 1), value)
- return smart_unicode(value)
- else:
- prep = smart_unicode
- if lookup_type in ('range', 'in'):
- value = [prep(v) for v in value]
+ def to_python(self, value):
+ if value is None:
+ return None
+ if isinstance(value, datetime.time):
+ return value
+
+ # Attempt to parse a datetime:
+ value = smart_str(value)
+ # split usecs, because they are not recognized by strptime.
+ if '.' in value:
+ try:
+ value, usecs = value.split('.')
+ usecs = int(usecs)
+ except ValueError:
+ raise validators.ValidationError, _('Enter a valid time in HH:MM[:ss[.uuuuuu]] format.')
else:
- value = prep(value)
- return Field.get_db_prep_lookup(self, lookup_type, value)
+ usecs = 0
+ kwargs = {'microsecond': usecs}
+
+ try: # Seconds are optional, so try converting seconds first.
+ return datetime.time(*time.strptime(value, '%H:%M:%S')[3:6],
+ **kwargs)
+ except ValueError:
+ try: # Try without seconds.
+ return datetime.time(*time.strptime(value, '%H:%M')[3:5],
+ **kwargs)
+ except ValueError:
+ raise validators.ValidationError, _('Enter a valid time in HH:MM[:ss[.uuuuuu]] format.')
def pre_save(self, model_instance, add):
if self.auto_now or (self.auto_now_add and add):
@@ -1120,23 +1148,9 @@ class TimeField(Field):
else:
return super(TimeField, self).pre_save(model_instance, add)
- def get_db_prep_save(self, value):
- # Casts dates into string format for entry into database.
- if value is not None:
- # MySQL will throw a warning if microseconds are given, because it
- # doesn't support microseconds.
- if not connection.features.supports_usecs and hasattr(value, 'microsecond'):
- value = value.replace(microsecond=0)
- if connection.features.time_field_needs_date:
- # cx_Oracle expects a datetime.datetime to persist into TIMESTAMP field.
- if isinstance(value, datetime.time):
- value = datetime.datetime(1900, 1, 1, value.hour, value.minute,
- value.second, value.microsecond)
- elif isinstance(value, basestring):
- value = datetime.datetime(*(time.strptime(value, '%H:%M:%S')[:6]))
- else:
- value = smart_unicode(value)
- return Field.get_db_prep_save(self, value)
+ def get_db_prep_value(self, value):
+ # Casts times into the format expected by the backend
+ return connection.ops.value_to_db_time(self.to_python(value))
def get_manipulator_field_objs(self):
return [oldforms.TimeField]
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py
index 735dda4969..ab2b9a6c5e 100644
--- a/django/db/models/fields/related.py
+++ b/django/db/models/fields/related.py
@@ -2,11 +2,10 @@ from django.db import connection, transaction
from django.db.models import signals, get_model
from django.db.models.fields import AutoField, Field, IntegerField, PositiveIntegerField, PositiveSmallIntegerField, FieldDoesNotExist
from django.db.models.related import RelatedObject
+from django.db.models.query import QuerySet
from django.db.models.query_utils import QueryWrapper
-from django.utils.text import capfirst
from django.utils.translation import ugettext_lazy, string_concat, ungettext, ugettext as _
from django.utils.functional import curry
-from django.utils.encoding import smart_unicode
from django.core import validators
from django import oldforms
from django import forms
@@ -24,7 +23,7 @@ RECURSIVE_RELATIONSHIP_CONSTANT = 'self'
pending_lookups = {}
-def add_lazy_relation(cls, field, relation):
+def add_lazy_relation(cls, field, relation, operation):
"""
Adds a lookup on ``cls`` when a related field is defined using a string,
i.e.::
@@ -46,6 +45,8 @@ def add_lazy_relation(cls, field, relation):
If the other model hasn't yet been loaded -- almost a given if you're using
lazy relationships -- then the relation won't be set up until the
class_prepared signal fires at the end of model initialization.
+
+ operation is the work that must be performed once the relation can be resolved.
"""
# Check for recursive relations
if relation == RECURSIVE_RELATIONSHIP_CONSTANT:
@@ -67,11 +68,10 @@ def add_lazy_relation(cls, field, relation):
# is prepared.
model = get_model(app_label, model_name, False)
if model:
- field.rel.to = model
- field.do_related_class(model, cls)
+ operation(field, model, cls)
else:
key = (app_label, model_name)
- value = (cls, field)
+ value = (cls, field, operation)
pending_lookups.setdefault(key, []).append(value)
def do_pending_lookups(sender):
@@ -79,9 +79,8 @@ def do_pending_lookups(sender):
Handle any pending relations to the sending model. Sent from class_prepared.
"""
key = (sender._meta.app_label, sender.__name__)
- for cls, field in pending_lookups.pop(key, []):
- field.rel.to = sender
- field.do_related_class(sender, cls)
+ for cls, field, operation in pending_lookups.pop(key, []):
+ operation(field, sender, cls)
dispatcher.connect(do_pending_lookups, signal=signals.class_prepared)
@@ -109,13 +108,17 @@ class RelatedField(object):
other = self.rel.to
if isinstance(other, basestring):
- add_lazy_relation(cls, self, other)
+ def resolve_related_class(field, model, cls):
+ field.rel.to = model
+ field.do_related_class(model, cls)
+ add_lazy_relation(cls, self, other, resolve_related_class)
else:
self.do_related_class(other, cls)
def set_attributes_from_rel(self):
self.name = self.name or (self.rel.to._meta.object_name.lower() + '_' + self.rel.to._meta.pk.name)
- self.verbose_name = self.verbose_name or self.rel.to._meta.verbose_name
+ if self.verbose_name is None:
+ self.verbose_name = self.rel.to._meta.verbose_name
self.rel.field_name = self.rel.field_name or self.rel.to._meta.pk.name
def do_related_class(self, other, cls):
@@ -236,7 +239,14 @@ class ReverseSingleRelatedObjectDescriptor(object):
params = {'%s__pk' % self.field.rel.field_name: val}
else:
params = {'%s__exact' % self.field.rel.field_name: val}
- rel_obj = self.field.rel.to._default_manager.get(**params)
+
+ # If the related manager indicates that it should be used for
+ # related fields, respect that.
+ rel_mgr = self.field.rel.to._default_manager
+ if getattr(rel_mgr, 'use_for_related_fields', False):
+ rel_obj = rel_mgr.get(**params)
+ else:
+ rel_obj = QuerySet(self.field.rel.to).get(**params)
setattr(instance, cache_name, rel_obj)
return rel_obj
@@ -340,7 +350,7 @@ class ForeignRelatedObjectsDescriptor(object):
manager.clear()
manager.add(*value)
-def create_many_related_manager(superclass):
+def create_many_related_manager(superclass, through=False):
"""Creates a manager that subclasses 'superclass' (which is a Manager)
and adds behavior for many-to-many related objects."""
class ManyRelatedManager(superclass):
@@ -354,6 +364,7 @@ def create_many_related_manager(superclass):
self.join_table = join_table
self.source_col_name = source_col_name
self.target_col_name = target_col_name
+ self.through = through
self._pk_val = self.instance._get_pk_val()
if self._pk_val is None:
raise ValueError("%r instance needs to have a primary key value before a many-to-many relationship can be used." % instance.__class__.__name__)
@@ -361,21 +372,24 @@ def create_many_related_manager(superclass):
def get_query_set(self):
return superclass.get_query_set(self).filter(**(self.core_filters))
- def add(self, *objs):
- self._add_items(self.source_col_name, self.target_col_name, *objs)
+ # If the ManyToMany relation has an intermediary model,
+ # the add and remove methods do not exist.
+ if through is None:
+ def add(self, *objs):
+ self._add_items(self.source_col_name, self.target_col_name, *objs)
- # If this is a symmetrical m2m relation to self, add the mirror entry in the m2m table
- if self.symmetrical:
- self._add_items(self.target_col_name, self.source_col_name, *objs)
- add.alters_data = True
+ # If this is a symmetrical m2m relation to self, add the mirror entry in the m2m table
+ if self.symmetrical:
+ self._add_items(self.target_col_name, self.source_col_name, *objs)
+ add.alters_data = True
- def remove(self, *objs):
- self._remove_items(self.source_col_name, self.target_col_name, *objs)
+ def remove(self, *objs):
+ self._remove_items(self.source_col_name, self.target_col_name, *objs)
- # If this is a symmetrical m2m relation to self, remove the mirror entry in the m2m table
- if self.symmetrical:
- self._remove_items(self.target_col_name, self.source_col_name, *objs)
- remove.alters_data = True
+ # If this is a symmetrical m2m relation to self, remove the mirror entry in the m2m table
+ if self.symmetrical:
+ self._remove_items(self.target_col_name, self.source_col_name, *objs)
+ remove.alters_data = True
def clear(self):
self._clear_items(self.source_col_name)
@@ -386,6 +400,10 @@ def create_many_related_manager(superclass):
clear.alters_data = True
def create(self, **kwargs):
+ # This check needs to be done here, since we can't later remove this
+ # from the method lookup table, as we do with add and remove.
+ if through is not None:
+ raise AttributeError, "Cannot use create() on a ManyToManyField which specifies an intermediary model. Use %s's Manager instead." % through
new_obj = self.model(**kwargs)
new_obj.save()
self.add(new_obj)
@@ -473,7 +491,7 @@ class ManyRelatedObjectsDescriptor(object):
# model's default manager.
rel_model = self.related.model
superclass = rel_model._default_manager.__class__
- RelatedManager = create_many_related_manager(superclass)
+ RelatedManager = create_many_related_manager(superclass, self.related.field.rel.through)
qn = connection.ops.quote_name
manager = RelatedManager(
@@ -492,6 +510,10 @@ class ManyRelatedObjectsDescriptor(object):
if instance is None:
raise AttributeError, "Manager must be accessed via instance"
+ through = getattr(self.related.field.rel, 'through', None)
+ if through is not None:
+ raise AttributeError, "Cannot set values on a ManyToManyField which specifies an intermediary model. Use %s's Manager instead." % through
+
manager = self.__get__(instance)
manager.clear()
manager.add(*value)
@@ -514,7 +536,7 @@ class ReverseManyRelatedObjectsDescriptor(object):
# model's default manager.
rel_model=self.field.rel.to
superclass = rel_model._default_manager.__class__
- RelatedManager = create_many_related_manager(superclass)
+ RelatedManager = create_many_related_manager(superclass, self.field.rel.through)
qn = connection.ops.quote_name
manager = RelatedManager(
@@ -533,6 +555,10 @@ class ReverseManyRelatedObjectsDescriptor(object):
if instance is None:
raise AttributeError, "Manager must be accessed via instance"
+ through = getattr(self.field.rel, 'through', None)
+ if through is not None:
+ raise AttributeError, "Cannot set values on a ManyToManyField which specifies an intermediary model. Use %s's Manager instead." % through
+
manager = self.__get__(instance)
manager.clear()
manager.add(*value)
@@ -584,7 +610,7 @@ class OneToOneRel(ManyToOneRel):
class ManyToManyRel(object):
def __init__(self, to, num_in_admin=0, related_name=None,
- limit_choices_to=None, symmetrical=True):
+ limit_choices_to=None, symmetrical=True, through=None):
self.to = to
self.num_in_admin = num_in_admin
self.related_name = related_name
@@ -594,6 +620,7 @@ class ManyToManyRel(object):
self.edit_inline = False
self.symmetrical = symmetrical
self.multiple = True
+ self.through = through
class ForeignKey(RelatedField, Field):
empty_strings_allowed = False
@@ -604,12 +631,7 @@ class ForeignKey(RelatedField, Field):
assert isinstance(to, basestring), "%s(%r) is invalid. First parameter to ForeignKey must be either a model, a model name, or the string %r" % (self.__class__.__name__, to, RECURSIVE_RELATIONSHIP_CONSTANT)
else:
to_field = to_field or to._meta.pk.name
- kwargs['verbose_name'] = kwargs.get('verbose_name', '')
-
- if 'edit_inline_type' in kwargs:
- import warnings
- warnings.warn("edit_inline_type is deprecated. Use edit_inline instead.", DeprecationWarning)
- kwargs['edit_inline'] = kwargs.pop('edit_inline_type')
+ kwargs['verbose_name'] = kwargs.get('verbose_name', None)
kwargs['rel'] = rel_class(to, to_field,
num_in_admin=kwargs.pop('num_in_admin', 3),
@@ -705,6 +727,7 @@ class OneToOneField(ForeignKey):
"""
def __init__(self, to, to_field=None, **kwargs):
kwargs['unique'] = True
+ kwargs['editable'] = False
if 'num_in_admin' not in kwargs:
kwargs['num_in_admin'] = 0
super(OneToOneField, self).__init__(to, to_field, OneToOneRel, **kwargs)
@@ -722,8 +745,16 @@ class ManyToManyField(RelatedField, Field):
num_in_admin=kwargs.pop('num_in_admin', 0),
related_name=kwargs.pop('related_name', None),
limit_choices_to=kwargs.pop('limit_choices_to', None),
- symmetrical=kwargs.pop('symmetrical', True))
+ symmetrical=kwargs.pop('symmetrical', True),
+ through=kwargs.pop('through', None))
+
self.db_table = kwargs.pop('db_table', None)
+ if kwargs['rel'].through is not None:
+ self.creates_table = False
+ assert self.db_table is None, "Cannot specify a db_table if an intermediary model is used."
+ else:
+ self.creates_table = True
+
Field.__init__(self, **kwargs)
msg = ugettext_lazy('Hold down "Control", or "Command" on a Mac, to select more than one.')
@@ -738,26 +769,62 @@ class ManyToManyField(RelatedField, Field):
def _get_m2m_db_table(self, opts):
"Function that can be curried to provide the m2m table name for this relation"
- if self.db_table:
+ if self.rel.through is not None:
+ return self.rel.through_model._meta.db_table
+ elif self.db_table:
return self.db_table
else:
return '%s_%s' % (opts.db_table, self.name)
def _get_m2m_column_name(self, related):
"Function that can be curried to provide the source column name for the m2m table"
- # If this is an m2m relation to self, avoid the inevitable name clash
- if related.model == related.parent_model:
- return 'from_' + related.model._meta.object_name.lower() + '_id'
- else:
- return related.model._meta.object_name.lower() + '_id'
+ try:
+ return self._m2m_column_name_cache
+ except:
+ if self.rel.through is not None:
+ for f in self.rel.through_model._meta.fields:
+ if hasattr(f,'rel') and f.rel and f.rel.to == related.model:
+ self._m2m_column_name_cache = f.column
+ break
+ # If this is an m2m relation to self, avoid the inevitable name clash
+ elif related.model == related.parent_model:
+ self._m2m_column_name_cache = 'from_' + related.model._meta.object_name.lower() + '_id'
+ else:
+ self._m2m_column_name_cache = related.model._meta.object_name.lower() + '_id'
+
+ # Return the newly cached value
+ return self._m2m_column_name_cache
def _get_m2m_reverse_name(self, related):
"Function that can be curried to provide the related column name for the m2m table"
- # If this is an m2m relation to self, avoid the inevitable name clash
- if related.model == related.parent_model:
- return 'to_' + related.parent_model._meta.object_name.lower() + '_id'
- else:
- return related.parent_model._meta.object_name.lower() + '_id'
+ try:
+ return self._m2m_reverse_name_cache
+ except:
+ if self.rel.through is not None:
+ found = False
+ for f in self.rel.through_model._meta.fields:
+ if hasattr(f,'rel') and f.rel and f.rel.to == related.parent_model:
+ if related.model == related.parent_model:
+ # If this is an m2m-intermediate to self,
+ # the first foreign key you find will be
+ # the source column. Keep searching for
+ # the second foreign key.
+ if found:
+ self._m2m_reverse_name_cache = f.column
+ break
+ else:
+ found = True
+ else:
+ self._m2m_reverse_name_cache = f.column
+ break
+ # If this is an m2m relation to self, avoid the inevitable name clash
+ elif related.model == related.parent_model:
+ self._m2m_reverse_name_cache = 'to_' + related.parent_model._meta.object_name.lower() + '_id'
+ else:
+ self._m2m_reverse_name_cache = related.parent_model._meta.object_name.lower() + '_id'
+
+ # Return the newly cached value
+ return self._m2m_reverse_name_cache
def isValidIDList(self, field_data, all_data):
"Validates that the value is a valid list of foreign keys"
@@ -791,13 +858,23 @@ class ManyToManyField(RelatedField, Field):
return new_data
def contribute_to_class(self, cls, name):
- super(ManyToManyField, self).contribute_to_class(cls, name)
+ super(ManyToManyField, self).contribute_to_class(cls, name)
# Add the descriptor for the m2m relation
setattr(cls, self.name, ReverseManyRelatedObjectsDescriptor(self))
# Set up the accessor for the m2m table name for the relation
self.m2m_db_table = curry(self._get_m2m_db_table, cls._meta)
-
+
+ # Populate some necessary rel arguments so that cross-app relations
+ # work correctly.
+ if isinstance(self.rel.through, basestring):
+ def resolve_through_model(field, model, cls):
+ field.rel.through_model = model
+ add_lazy_relation(cls, self, self.rel.through, resolve_through_model)
+ elif self.rel.through:
+ self.rel.through_model = self.rel.through
+ self.rel.through = self.rel.through._meta.object_name
+
if isinstance(self.rel.to, basestring):
target = self.rel.to
else:
diff --git a/django/db/models/fields/subclassing.py b/django/db/models/fields/subclassing.py
index 36f7e4d934..10add10739 100644
--- a/django/db/models/fields/subclassing.py
+++ b/django/db/models/fields/subclassing.py
@@ -5,9 +5,7 @@ Add SubfieldBase as the __metaclass__ for your Field subclass, implement
to_python() and the other necessary methods and everything will work seamlessly.
"""
-from django.utils.maxlength import LegacyMaxlength
-
-class SubfieldBase(LegacyMaxlength):
+class SubfieldBase(type):
"""
A metaclass for custom Field subclasses. This ensures the model's attribute
has the descriptor protocol attached to it.
@@ -50,4 +48,3 @@ def make_contrib(func=None):
setattr(cls, self.name, Creator(self))
return contribute_to_class
-
diff --git a/django/db/models/query.py b/django/db/models/query.py
index f0a0cf8218..5b24195a7d 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -1,4 +1,3 @@
-import warnings
try:
set
except NameError:
@@ -757,22 +756,6 @@ class EmptyQuerySet(QuerySet):
yield iter([]).next()
-# QOperator, QNot, QAnd and QOr are temporarily retained for backwards
-# compatibility. All the old functionality is now part of the 'Q' class.
-class QOperator(Q):
- def __init__(self, *args, **kwargs):
- warnings.warn('Use Q instead of QOr, QAnd or QOperation.',
- DeprecationWarning, stacklevel=2)
- super(QOperator, self).__init__(*args, **kwargs)
-
-QOr = QAnd = QOperator
-
-
-def QNot(q):
- warnings.warn('Use ~q instead of QNot(q)', DeprecationWarning, stacklevel=2)
- return ~q
-
-
def get_cached_row(klass, row, index_start, max_depth=0, cur_depth=0,
requested=None):
"""
@@ -785,7 +768,11 @@ def get_cached_row(klass, row, index_start, max_depth=0, cur_depth=0,
restricted = requested is not None
index_end = index_start + len(klass._meta.fields)
- obj = klass(*row[index_start:index_end])
+ fields = row[index_start:index_end]
+ if not [x for x in fields if x is not None]:
+ # If we only have a list of Nones, there was not related object.
+ return None, index_end
+ obj = klass(*fields)
for f in klass._meta.fields:
if not select_related_descend(f, restricted, requested):
continue
@@ -831,9 +818,15 @@ def delete_objects(seen_objs):
del_query.delete_batch_related(pk_list)
update_query = sql.UpdateQuery(cls, connection)
- for field in cls._meta.fields:
- if field.rel and field.null and field.rel.to in seen_objs:
- update_query.clear_related(field, pk_list)
+ for field, model in cls._meta.get_fields_with_model():
+ if (field.rel and field.null and field.rel.to in seen_objs and
+ filter(lambda f: f.column == field.column,
+ field.rel.to._meta.fields)):
+ if model:
+ sql.UpdateQuery(model, connection).clear_related(field,
+ pk_list)
+ else:
+ update_query.clear_related(field, pk_list)
# Now delete the actual data.
for cls in ordered_classes:
diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py
index ef69d7657f..18dd8cc3f2 100644
--- a/django/db/models/sql/query.py
+++ b/django/db/models/sql/query.py
@@ -7,7 +7,6 @@ databases). The abstraction barrier only works one way: this module has to know
all about the internals of models in order to get the information it needs.
"""
-import datetime
from copy import deepcopy
from django.utils.tree import Node
@@ -107,6 +106,8 @@ class Query(object):
Pickling support.
"""
obj_dict = self.__dict__.copy()
+ obj_dict['related_select_fields'] = []
+ obj_dict['related_select_cols'] = []
del obj_dict['connection']
return obj_dict
@@ -196,14 +197,18 @@ class Query(object):
Returns an iterator over the results from executing this query.
"""
resolve_columns = hasattr(self, 'resolve_columns')
- if resolve_columns:
- if self.select_fields:
- fields = self.select_fields + self.related_select_fields
- else:
- fields = self.model._meta.fields
+ fields = None
for rows in self.execute_sql(MULTI):
for row in rows:
if resolve_columns:
+ if fields is None:
+ # We only set this up here because
+ # related_select_fields isn't populated until
+ # execute_sql() has been called.
+ if self.select_fields:
+ fields = self.select_fields + self.related_select_fields
+ else:
+ fields = self.model._meta.fields
row = self.resolve_columns(row, fields)
yield row
@@ -1088,20 +1093,23 @@ class Query(object):
join_it = iter(join_list)
table_it = iter(self.tables)
join_it.next(), table_it.next()
+ table_promote = False
for join in join_it:
table = table_it.next()
if join == table and self.alias_refcount[join] > 1:
continue
- self.promote_alias(join)
+ join_promote = self.promote_alias(join)
if table != join:
- self.promote_alias(table)
+ table_promote = self.promote_alias(table)
break
for join in join_it:
- self.promote_alias(join)
+ if self.promote_alias(join, join_promote):
+ join_promote = True
for table in table_it:
# Some of these will have been promoted from the join_list, but
# that's harmless.
- self.promote_alias(table)
+ if self.promote_alias(table, table_promote):
+ table_promote = True
self.where.add((alias, col, field, lookup_type, value), connector)
@@ -1214,7 +1222,6 @@ class Query(object):
raise MultiJoin(pos + 1)
if model:
# The field lives on a base class of the current model.
- alias_list = []
for int_model in opts.get_base_chain(model):
lhs_col = opts.parents[int_model].column
dedupe = lhs_col in opts.duplicate_targets
@@ -1618,8 +1625,9 @@ class Query(object):
if self.ordering_aliases:
result = order_modified_iter(cursor, len(self.ordering_aliases),
self.connection.features.empty_fetchmany_value)
- result = iter((lambda: cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE)),
- self.connection.features.empty_fetchmany_value)
+ else:
+ result = iter((lambda: cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE)),
+ self.connection.features.empty_fetchmany_value)
if not self.connection.features.can_use_chunked_reads:
# If we are using non-chunked reads, we return the same data
# structure as normally, but ensure it is all read into memory
diff --git a/django/db/models/sql/where.py b/django/db/models/sql/where.py
index 18e4bf2f7e..662d99a4a2 100644
--- a/django/db/models/sql/where.py
+++ b/django/db/models/sql/where.py
@@ -35,20 +35,30 @@ class WhereNode(tree.Node):
storing any reference to field objects). Otherwise, the 'data' is
stored unchanged and can be anything with an 'as_sql()' method.
"""
+ # Because of circular imports, we need to import this here.
+ from django.db.models.base import ObjectDoesNotExist
+
if not isinstance(data, (list, tuple)):
super(WhereNode, self).add(data, connector)
return
alias, col, field, lookup_type, value = data
- if field:
- params = field.get_db_prep_lookup(lookup_type, value)
- db_type = field.db_type()
- else:
- # This is possible when we add a comparison to NULL sometimes (we
- # don't really need to waste time looking up the associated field
- # object).
- params = Field().get_db_prep_lookup(lookup_type, value)
- db_type = None
+ try:
+ if field:
+ params = field.get_db_prep_lookup(lookup_type, value)
+ db_type = field.db_type()
+ else:
+ # This is possible when we add a comparison to NULL sometimes
+ # (we don't really need to waste time looking up the associated
+ # field object).
+ params = Field().get_db_prep_lookup(lookup_type, value)
+ db_type = None
+ except ObjectDoesNotExist:
+ # This can happen when trying to insert a reference to a null pk.
+ # We break out of the normal path and indicate there's nothing to
+ # match.
+ super(WhereNode, self).add(NothingNode(), connector)
+ return
if isinstance(value, datetime.datetime):
annotation = datetime.datetime
else:
@@ -190,3 +200,14 @@ class EverythingNode(object):
def relabel_aliases(self, change_map, node=None):
return
+
+class NothingNode(object):
+ """
+ A node that matches nothing.
+ """
+ def as_sql(self, qn=None):
+ raise EmptyResultSet
+
+ def relabel_aliases(self, change_map, node=None):
+ return
+
diff --git a/django/dispatch/dispatcher.py b/django/dispatch/dispatcher.py
index 029c59fd3f..725544446e 100644
--- a/django/dispatch/dispatcher.py
+++ b/django/dispatch/dispatcher.py
@@ -25,7 +25,7 @@ Internal attributes:
deletion, (considerably speeds up the cleanup process
vs. the original code.)
"""
-import types, weakref
+import weakref
from django.dispatch import saferef, robustapply, errors
__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
@@ -129,7 +129,7 @@ def connect(receiver, signal=Any, sender=Any, weak=True):
"""
if signal is None:
raise errors.DispatcherTypeError(
- 'Signal cannot be None (receiver=%r sender=%r)'%( receiver,sender)
+ 'Signal cannot be None (receiver=%r sender=%r)' % (receiver, sender)
)
if weak:
receiver = saferef.safeRef(receiver, onDelete=_removeReceiver)
@@ -159,7 +159,7 @@ def connect(receiver, signal=Any, sender=Any, weak=True):
else:
receivers = signals[signal] = []
try:
- current = sendersBack.get( receiverID )
+ current = sendersBack.get(receiverID)
if current is None:
sendersBack[ receiverID ] = current = []
if senderkey not in current:
@@ -199,7 +199,7 @@ def disconnect(receiver, signal=Any, sender=Any, weak=True):
"""
if signal is None:
raise errors.DispatcherTypeError(
- 'Signal cannot be None (receiver=%r sender=%r)'%( receiver,sender)
+ 'Signal cannot be None (receiver=%r sender=%r)' % (receiver, sender)
)
if weak: receiver = saferef.safeRef(receiver)
senderkey = id(sender)
@@ -226,7 +226,7 @@ def disconnect(receiver, signal=Any, sender=Any, weak=True):
)
_cleanupConnections(senderkey, signal)
-def getReceivers( sender = Any, signal = Any ):
+def getReceivers(sender=Any, signal=Any):
"""Get list of receivers from global tables
This utility function allows you to retrieve the
@@ -240,7 +240,7 @@ def getReceivers( sender = Any, signal = Any ):
rather than, for instance a list to which you
might append new records.
- Normally you would use liveReceivers( getReceivers( ...))
+ Normally you would use liveReceivers(getReceivers(...))
to retrieve the actual receiver objects as an iterable
object.
"""
@@ -258,7 +258,7 @@ def liveReceivers(receivers):
receivers.
"""
for receiver in receivers:
- if isinstance( receiver, WEAKREF_TYPES):
+ if isinstance(receiver, WEAKREF_TYPES):
# Dereference the weak reference.
receiver = receiver()
if receiver is not None:
@@ -268,7 +268,7 @@ def liveReceivers(receivers):
-def getAllReceivers( sender = Any, signal = Any ):
+def getAllReceivers(sender=Any, signal=Any):
"""Get list of all receivers from global tables
This gets all dereferenced receivers which should receive
@@ -363,7 +363,7 @@ def send(signal=Any, sender=Anonymous, *arguments, **named):
return responses
-def sendExact( signal=Any, sender=Anonymous, *arguments, **named ):
+def sendExact(signal=Any, sender=Anonymous, *arguments, **named ):
"""Send signal only to those receivers registered for exact message
sendExact allows for avoiding Any/Anonymous registered
@@ -403,7 +403,7 @@ def _removeReceiver(receiver):
pass
else:
try:
- receivers.remove( receiver )
+ receivers.remove(receiver)
except Exception, err:
pass
_cleanupConnections(senderkey, signal)
@@ -439,11 +439,11 @@ def _removeSender(senderkey):
senders.pop(senderkey, None)
-def _removeBackrefs( senderkey):
+def _removeBackrefs(senderkey):
"""Remove all back-references to this senderkey"""
for receiver_list in connections.pop(senderkey, {}).values():
for receiver in receiver_list:
- _killBackref( receiver, senderkey )
+ _killBackref(receiver, senderkey)
def _removeOldBackRefs(senderkey, signal, receiver, receivers):
@@ -473,18 +473,18 @@ def _removeOldBackRefs(senderkey, signal, receiver, receivers):
found = 1
break
if not found:
- _killBackref( oldReceiver, senderkey )
+ _killBackref(oldReceiver, senderkey)
return True
return False
-def _killBackref( receiver, senderkey ):
+def _killBackref(receiver, senderkey):
"""Do the actual removal of back reference from receiver to senderkey"""
receiverkey = id(receiver)
- receivers_list = sendersBack.get( receiverkey, () )
+ receivers_list = sendersBack.get(receiverkey, ())
while senderkey in receivers_list:
try:
- receivers_list.remove( senderkey )
+ receivers_list.remove(senderkey)
except:
break
if not receivers_list:
diff --git a/django/dispatch/saferef.py b/django/dispatch/saferef.py
index c0d2eeb788..2abe3300da 100644
--- a/django/dispatch/saferef.py
+++ b/django/dispatch/saferef.py
@@ -1,6 +1,5 @@
"""Refactored "safe reference" from dispatcher.py"""
import weakref, traceback
-from django.utils.functional import curry
def safeRef(target, onDelete = None):
"""Return a *safe* weak reference to a callable target
diff --git a/django/forms/fields.py b/django/forms/fields.py
index 9df8955392..47ae5e11b2 100644
--- a/django/forms/fields.py
+++ b/django/forms/fields.py
@@ -7,6 +7,7 @@ import datetime
import os
import re
import time
+import urlparse
try:
from cStringIO import StringIO
except ImportError:
@@ -23,7 +24,7 @@ except NameError:
from sets import Set as set
from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import StrAndUnicode, smart_unicode, smart_str
+from django.utils.encoding import smart_unicode, smart_str
from util import ErrorList, ValidationError
from widgets import TextInput, PasswordInput, HiddenInput, MultipleHiddenInput, FileInput, CheckboxInput, Select, NullBooleanSelect, SelectMultiple, DateTimeInput
@@ -73,7 +74,10 @@ class Field(object):
if label is not None:
label = smart_unicode(label)
self.required, self.label, self.initial = required, label, initial
- self.help_text = smart_unicode(help_text or '')
+ if help_text is None:
+ self.help_text = u''
+ else:
+ self.help_text = smart_unicode(help_text)
widget = widget or self.widget
if isinstance(widget, type):
widget = widget()
@@ -503,6 +507,11 @@ class ImageField(FileField):
# but it must be called immediately after the constructor
trial_image = Image.open(file)
trial_image.verify()
+ except ImportError:
+ # Under PyPy, it is possible to import PIL. However, the underlying
+ # _imaging C module isn't available, so an ImportError will be
+ # raised. Catch and re-raise.
+ raise
except Exception: # Python Imaging Library doesn't recognize it as an image
raise ValidationError(self.error_messages['invalid_image'])
if hasattr(f, 'seek') and callable(f.seek):
@@ -534,6 +543,9 @@ class URLField(RegexField):
# If no URL scheme given, assume http://
if value and '://' not in value:
value = u'http://%s' % value
+ # If no URL path given, assume /
+ if value and not urlparse.urlsplit(value)[2]:
+ value += '/'
value = super(URLField, self).clean(value)
if value == u'':
return value
diff --git a/django/forms/formsets.py b/django/forms/formsets.py
index 1ae27bf58c..2f13bf5fed 100644
--- a/django/forms/formsets.py
+++ b/django/forms/formsets.py
@@ -2,7 +2,7 @@ from forms import Form
from django.utils.encoding import StrAndUnicode
from django.utils.safestring import mark_safe
from fields import IntegerField, BooleanField
-from widgets import Media, HiddenInput, TextInput
+from widgets import Media, HiddenInput
from util import ErrorList, ValidationError
__all__ = ('BaseFormSet', 'all_valid')
@@ -10,7 +10,6 @@ __all__ = ('BaseFormSet', 'all_valid')
# special field names
TOTAL_FORM_COUNT = 'TOTAL_FORMS'
INITIAL_FORM_COUNT = 'INITIAL_FORMS'
-MAX_FORM_COUNT = 'MAX_FORMS'
ORDERING_FIELD_NAME = 'ORDER'
DELETION_FIELD_NAME = 'DELETE'
@@ -23,7 +22,6 @@ class ManagementForm(Form):
def __init__(self, *args, **kwargs):
self.base_fields[TOTAL_FORM_COUNT] = IntegerField(widget=HiddenInput)
self.base_fields[INITIAL_FORM_COUNT] = IntegerField(widget=HiddenInput)
- self.base_fields[MAX_FORM_COUNT] = IntegerField(widget=HiddenInput)
super(ManagementForm, self).__init__(*args, **kwargs)
class BaseFormSet(StrAndUnicode):
@@ -47,23 +45,21 @@ class BaseFormSet(StrAndUnicode):
if self.management_form.is_valid():
self._total_form_count = self.management_form.cleaned_data[TOTAL_FORM_COUNT]
self._initial_form_count = self.management_form.cleaned_data[INITIAL_FORM_COUNT]
- self._max_form_count = self.management_form.cleaned_data[MAX_FORM_COUNT]
else:
raise ValidationError('ManagementForm data is missing or has been tampered with')
else:
if initial:
self._initial_form_count = len(initial)
- if self._initial_form_count > self._max_form_count and self._max_form_count > 0:
- self._initial_form_count = self._max_form_count
+ if self._initial_form_count > self.max_num and self.max_num > 0:
+ self._initial_form_count = self.max_num
self._total_form_count = self._initial_form_count + self.extra
else:
self._initial_form_count = 0
self._total_form_count = self.extra
- if self._total_form_count > self._max_form_count and self._max_form_count > 0:
- self._total_form_count = self._max_form_count
+ if self._total_form_count > self.max_num and self.max_num > 0:
+ self._total_form_count = self.max_num
initial = {TOTAL_FORM_COUNT: self._total_form_count,
- INITIAL_FORM_COUNT: self._initial_form_count,
- MAX_FORM_COUNT: self._max_form_count}
+ INITIAL_FORM_COUNT: self._initial_form_count}
self.management_form = ManagementForm(initial=initial, auto_id=self.auto_id, prefix=self.prefix)
# construct the forms in the formset
@@ -280,7 +276,7 @@ def formset_factory(form, formset=BaseFormSet, extra=1, can_order=False,
"""Return a FormSet for the given form class."""
attrs = {'form': form, 'extra': extra,
'can_order': can_order, 'can_delete': can_delete,
- '_max_form_count': max_num}
+ 'max_num': max_num}
return type(form.__name__ + 'FormSet', (formset,), attrs)
def all_valid(formsets):
diff --git a/django/forms/models.py b/django/forms/models.py
index 43e2978ba8..1f807f2b42 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -8,7 +8,6 @@ from warnings import warn
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import smart_unicode
from django.utils.datastructures import SortedDict
-from django.core.exceptions import ImproperlyConfigured
from util import ValidationError, ErrorList
from forms import BaseForm, get_declared_fields
@@ -260,8 +259,8 @@ class BaseModelForm(BaseForm):
# if initial was provided, it should override the values from instance
if initial is not None:
object_data.update(initial)
- BaseForm.__init__(self, data, files, auto_id, prefix, object_data,
- error_class, label_suffix, empty_permitted)
+ super(BaseModelForm, self).__init__(data, files, auto_id, prefix, object_data,
+ error_class, label_suffix, empty_permitted)
def save(self, commit=True):
"""
@@ -306,8 +305,8 @@ class BaseModelFormSet(BaseFormSet):
queryset=None, **kwargs):
self.queryset = queryset
defaults = {'data': data, 'files': files, 'auto_id': auto_id, 'prefix': prefix}
- if self._max_form_count > 0:
- qs = self.get_queryset()[:self._max_form_count]
+ if self.max_num > 0:
+ qs = self.get_queryset()[:self.max_num]
else:
qs = self.get_queryset()
defaults['initial'] = [model_to_dict(obj) for obj in qs]
@@ -379,8 +378,9 @@ class BaseModelFormSet(BaseFormSet):
def add_fields(self, form, index):
"""Add a hidden field for the object's primary key."""
- self._pk_field_name = self.model._meta.pk.attname
- form.fields[self._pk_field_name] = IntegerField(required=False, widget=HiddenInput)
+ if self.model._meta.has_auto_field:
+ self._pk_field_name = self.model._meta.pk.attname
+ form.fields[self._pk_field_name] = IntegerField(required=False, widget=HiddenInput)
super(BaseModelFormSet, self).add_fields(form, index)
def modelformset_factory(model, form=ModelForm, formfield_callback=lambda f: f.formfield(),
@@ -402,13 +402,14 @@ def modelformset_factory(model, form=ModelForm, formfield_callback=lambda f: f.f
class BaseInlineFormset(BaseModelFormSet):
"""A formset for child objects related to a parent."""
- def __init__(self, data=None, files=None, instance=None, save_as_new=False):
+ def __init__(self, data=None, files=None, instance=None,
+ save_as_new=False, prefix=None):
from django.db.models.fields.related import RelatedObject
self.instance = instance
self.save_as_new = save_as_new
# is there a better way to get the object descriptor?
self.rel_name = RelatedObject(self.fk.rel.to, self.model, self.fk).get_accessor_name()
- super(BaseInlineFormset, self).__init__(data, files, prefix=self.rel_name)
+ super(BaseInlineFormset, self).__init__(data, files, prefix=prefix or self.rel_name)
def _construct_forms(self):
if self.save_as_new:
@@ -441,13 +442,20 @@ def _get_foreign_key(parent_model, model, fk_name=None):
fks_to_parent = [f for f in opts.fields if f.name == fk_name]
if len(fks_to_parent) == 1:
fk = fks_to_parent[0]
- if not isinstance(fk, ForeignKey) or fk.rel.to != parent_model:
+ if not isinstance(fk, ForeignKey) or \
+ (fk.rel.to != parent_model and
+ fk.rel.to not in parent_model._meta.parents.keys()):
raise Exception("fk_name '%s' is not a ForeignKey to %s" % (fk_name, parent_model))
elif len(fks_to_parent) == 0:
raise Exception("%s has no field named '%s'" % (model, fk_name))
else:
# Try to discover what the ForeignKey from model to parent_model is
- fks_to_parent = [f for f in opts.fields if isinstance(f, ForeignKey) and f.rel.to == parent_model]
+ fks_to_parent = [
+ f for f in opts.fields
+ if isinstance(f, ForeignKey)
+ and (f.rel.to == parent_model
+ or f.rel.to in parent_model._meta.parents.keys())
+ ]
if len(fks_to_parent) == 1:
fk = fks_to_parent[0]
elif len(fks_to_parent) == 0:
diff --git a/django/forms/util.py b/django/forms/util.py
index b3edf41adf..3d80ad219f 100644
--- a/django/forms/util.py
+++ b/django/forms/util.py
@@ -1,6 +1,5 @@
from django.utils.html import escape
from django.utils.encoding import smart_unicode, StrAndUnicode, force_unicode
-from django.utils.functional import Promise
from django.utils.safestring import mark_safe
def flatatt(attrs):
diff --git a/django/http/__init__.py b/django/http/__init__.py
index ef15479983..0124022478 100644
--- a/django/http/__init__.py
+++ b/django/http/__init__.py
@@ -31,6 +31,7 @@ class HttpRequest(object):
def __init__(self):
self.GET, self.POST, self.COOKIES, self.META, self.FILES = {}, {}, {}, {}, {}
self.path = ''
+ self.path_info = ''
self.method = None
def __repr__(self):
@@ -38,17 +39,6 @@ class HttpRequest(object):
(pformat(self.GET), pformat(self.POST), pformat(self.COOKIES),
pformat(self.META))
- def __getitem__(self, key):
- for d in (self.POST, self.GET):
- if key in d:
- return d[key]
- raise KeyError, "%s not found in either POST or GET" % key
-
- def has_key(self, key):
- return key in self.GET or key in self.POST
-
- __contains__ = has_key
-
def get_host(self):
"""Returns the HTTP host using the environment or request headers."""
# We try three options, in order of decreasing preference.
@@ -442,3 +432,4 @@ def str_to_unicode(s, encoding):
return unicode(s, encoding, 'replace')
else:
return s
+
diff --git a/django/http/multipartparser.py b/django/http/multipartparser.py
index fa1ae11968..2049289a0b 100644
--- a/django/http/multipartparser.py
+++ b/django/http/multipartparser.py
@@ -4,6 +4,7 @@ Multi-part parsing for file uploads.
Exposes one class, ``MultiPartParser``, which feeds chunks of uploaded data to
file upload handlers for processing.
"""
+
import cgi
from django.conf import settings
from django.core.exceptions import SuspiciousOperation
@@ -12,7 +13,7 @@ from django.utils.encoding import force_unicode
from django.utils.text import unescape_entities
from django.core.files.uploadhandler import StopUpload, SkipFile, StopFutureHandlers
-__all__ = ('MultiPartParser','MultiPartParserError','InputStreamExhausted')
+__all__ = ('MultiPartParser', 'MultiPartParserError', 'InputStreamExhausted')
class MultiPartParserError(Exception):
pass
@@ -162,7 +163,6 @@ class MultiPartParser(object):
force_unicode(data, encoding, errors='replace'))
elif item_type == FILE:
# This is a file, use the handler...
- file_successful = True
file_name = disposition.get('filename')
if not file_name:
continue
@@ -209,7 +209,6 @@ class MultiPartParser(object):
break
except SkipFile, e:
- file_successful = False
# Just use up the rest of this file...
exhaust(field_stream)
else:
@@ -515,21 +514,11 @@ class BoundaryIter(object):
else:
end = index
next = index + len(self._boundary)
- data_len = len(data) - 1
# backup over CRLF
if data[max(0,end-1)] == '\n':
end -= 1
if data[max(0,end-1)] == '\r':
end -= 1
- # skip over --CRLF
- #if data[min(data_len,next)] == '-':
- # next += 1
- #if data[min(data_len,next)] == '-':
- # next += 1
- #if data[min(data_len,next)] == '\r':
- # next += 1
- #if data[min(data_len,next)] == '\n':
- # next += 1
return end, next
def exhaust(stream_or_iterable):
diff --git a/django/middleware/common.py b/django/middleware/common.py
index 5cb7ca1bd3..a564017ed6 100644
--- a/django/middleware/common.py
+++ b/django/middleware/common.py
@@ -1,4 +1,3 @@
-import md5
import re
from django.conf import settings
@@ -6,6 +5,7 @@ from django import http
from django.core.mail import mail_managers
from django.utils.http import urlquote
from django.core import urlresolvers
+from django.utils.hashcompat import md5_constructor
class CommonMiddleware(object):
"""
@@ -21,7 +21,7 @@ class CommonMiddleware(object):
slash, and it is not found in urlpatterns, a new URL is formed by
appending a slash at the end. If this new URL is found in
urlpatterns, then an HTTP-redirect is returned to this new URL;
- otherwise the initial URL is processed as usual.
+ otherwise the initial URL is processed as usual.
- ETags: If the USE_ETAGS setting is set, ETags will be calculated from
the entire page content and Not Modified responses will be returned
@@ -108,7 +108,7 @@ class CommonMiddleware(object):
if response.has_header('ETag'):
etag = response['ETag']
else:
- etag = '"%s"' % md5.new(response.content).hexdigest()
+ etag = '"%s"' % md5_constructor(response.content).hexdigest()
if response.status_code >= 200 and response.status_code < 300 and request.META.get('HTTP_IF_NONE_MATCH') == etag:
cookies = response.cookies
response = http.HttpResponseNotModified()
diff --git a/django/oldforms/__init__.py b/django/oldforms/__init__.py
index 2a300df0bd..b5698ab807 100644
--- a/django/oldforms/__init__.py
+++ b/django/oldforms/__init__.py
@@ -5,7 +5,6 @@ from django.utils.safestring import mark_safe
from django.conf import settings
from django.utils.translation import ugettext, ungettext
from django.utils.encoding import smart_unicode, force_unicode
-from django.utils.maxlength import LegacyMaxlength
FORM_FIELD_ID_PREFIX = 'id_'
@@ -304,9 +303,6 @@ class FormField(object):
Subclasses should also implement a render(data) method, which is responsible
for rending the form field in XHTML.
"""
- # Provide backwards compatibility for the maxlength attribute and
- # argument for this class and all subclasses.
- __metaclass__ = LegacyMaxlength
def __str__(self):
return unicode(self).encode('utf-8')
diff --git a/django/template/context.py b/django/template/context.py
index 6ba53f340b..8f16a95021 100644
--- a/django/template/context.py
+++ b/django/template/context.py
@@ -62,6 +62,8 @@ class Context(object):
def update(self, other_dict):
"Like dict.update(). Pushes an entire dictionary's keys and values onto the context."
+ if not hasattr(other_dict, '__getitem__'):
+ raise TypeError('other_dict must be a mapping (dictionary-like) object.')
self.dicts = [other_dict] + self.dicts
return other_dict
diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py
index 01c43ee86f..489faa243e 100644
--- a/django/template/defaulttags.py
+++ b/django/template/defaulttags.py
@@ -157,8 +157,8 @@ class ForNode(Node):
return nodelist.render(context)
class IfChangedNode(Node):
- def __init__(self, nodelist, *varlist):
- self.nodelist = nodelist
+ def __init__(self, nodelist_true, nodelist_false, *varlist):
+ self.nodelist_true, self.nodelist_false = nodelist_true, nodelist_false
self._last_seen = None
self._varlist = map(Variable, varlist)
self._id = str(id(self))
@@ -173,20 +173,21 @@ class IfChangedNode(Node):
# like an OR evaluation of the multiple variables.
compare_to = [var.resolve(context) for var in self._varlist]
else:
- compare_to = self.nodelist.render(context)
+ compare_to = self.nodelist_true.render(context)
except VariableDoesNotExist:
compare_to = None
- if compare_to != self._last_seen:
+ if compare_to != self._last_seen:
firstloop = (self._last_seen == None)
self._last_seen = compare_to
context.push()
context['ifchanged'] = {'firstloop': firstloop}
- content = self.nodelist.render(context)
+ content = self.nodelist_true.render(context)
context.pop()
return content
- else:
- return ''
+ elif self.nodelist_false:
+ return self.nodelist_false.render(context)
+ return ''
class IfEqualNode(Node):
def __init__(self, var1, var2, nodelist_true, nodelist_false, negate):
@@ -363,12 +364,9 @@ class URLNode(Node):
try:
return reverse(self.view_name, args=args, kwargs=kwargs)
except NoReverseMatch:
- try:
- project_name = settings.SETTINGS_MODULE.split('.')[0]
- return reverse(project_name + '.' + self.view_name,
- args=args, kwargs=kwargs)
- except NoReverseMatch:
- return ''
+ project_name = settings.SETTINGS_MODULE.split('.')[0]
+ return reverse(project_name + '.' + self.view_name,
+ args=args, kwargs=kwargs)
class WidthRatioNode(Node):
def __init__(self, val_expr, max_expr, max_width):
@@ -803,9 +801,14 @@ def ifchanged(parser, token):
{% endfor %}
"""
bits = token.contents.split()
- nodelist = parser.parse(('endifchanged',))
- parser.delete_first_token()
- return IfChangedNode(nodelist, *bits[1:])
+ nodelist_true = parser.parse(('else', 'endifchanged'))
+ token = parser.next_token()
+ if token.contents == 'else':
+ nodelist_false = parser.parse(('endifchanged',))
+ parser.delete_first_token()
+ else:
+ nodelist_false = NodeList()
+ return IfChangedNode(nodelist_true, nodelist_false, *bits[1:])
ifchanged = register.tag(ifchanged)
#@register.tag
diff --git a/django/test/client.py b/django/test/client.py
index 47c12a4ca1..7d621449ea 100644
--- a/django/test/client.py
+++ b/django/test/client.py
@@ -190,7 +190,7 @@ class Client:
'PATH_INFO': '/',
'QUERY_STRING': '',
'REQUEST_METHOD': 'GET',
- 'SCRIPT_NAME': None,
+ 'SCRIPT_NAME': '',
'SERVER_NAME': 'testserver',
'SERVER_PORT': 80,
'SERVER_PROTOCOL': 'HTTP/1.1',
diff --git a/django/test/testcases.py b/django/test/testcases.py
index 3bad3995bb..dcab078553 100644
--- a/django/test/testcases.py
+++ b/django/test/testcases.py
@@ -1,15 +1,17 @@
import re
import unittest
from urlparse import urlsplit, urlunsplit
+from xml.dom.minidom import parseString, Node
-from django.http import QueryDict
-from django.db import transaction
from django.conf import settings
from django.core import mail
from django.core.management import call_command
+from django.core.urlresolvers import clear_url_caches
+from django.db import transaction
+from django.http import QueryDict
from django.test import _doctest as doctest
from django.test.client import Client
-from django.core.urlresolvers import clear_url_caches
+from django.utils import simplejson
normalize_long_ints = lambda s: re.sub(r'(?<![\w])(\d+)L(?![\w])', '\\1', s)
@@ -27,15 +29,133 @@ def to_list(value):
class OutputChecker(doctest.OutputChecker):
def check_output(self, want, got, optionflags):
- ok = doctest.OutputChecker.check_output(self, want, got, optionflags)
-
- # Doctest does an exact string comparison of output, which means long
- # integers aren't equal to normal integers ("22L" vs. "22"). The
- # following code normalizes long integers so that they equal normal
- # integers.
- if not ok:
- return normalize_long_ints(want) == normalize_long_ints(got)
- return ok
+ "The entry method for doctest output checking. Defers to a sequence of child checkers"
+ checks = (self.check_output_default,
+ self.check_output_long,
+ self.check_output_xml,
+ self.check_output_json)
+ for check in checks:
+ if check(want, got, optionflags):
+ return True
+ return False
+
+ def check_output_default(self, want, got, optionflags):
+ "The default comparator provided by doctest - not perfect, but good for most purposes"
+ return doctest.OutputChecker.check_output(self, want, got, optionflags)
+
+ def check_output_long(self, want, got, optionflags):
+ """Doctest does an exact string comparison of output, which means long
+ integers aren't equal to normal integers ("22L" vs. "22"). The
+ following code normalizes long integers so that they equal normal
+ integers.
+ """
+ return normalize_long_ints(want) == normalize_long_ints(got)
+
+ def check_output_xml(self, want, got, optionsflags):
+ """Tries to do a 'xml-comparision' of want and got. Plain string
+ comparision doesn't always work because, for example, attribute
+ ordering should not be important.
+
+ Based on http://codespeak.net/svn/lxml/trunk/src/lxml/doctestcompare.py
+ """
+ _norm_whitespace_re = re.compile(r'[ \t\n][ \t\n]+')
+ def norm_whitespace(v):
+ return _norm_whitespace_re.sub(' ', v)
+
+ def child_text(element):
+ return ''.join([c.data for c in element.childNodes
+ if c.nodeType == Node.TEXT_NODE])
+
+ def children(element):
+ return [c for c in element.childNodes
+ if c.nodeType == Node.ELEMENT_NODE]
+
+ def norm_child_text(element):
+ return norm_whitespace(child_text(element))
+
+ def attrs_dict(element):
+ return dict(element.attributes.items())
+
+ def check_element(want_element, got_element):
+ if want_element.tagName != got_element.tagName:
+ return False
+ if norm_child_text(want_element) != norm_child_text(got_element):
+ return False
+ if attrs_dict(want_element) != attrs_dict(got_element):
+ return False
+ want_children = children(want_element)
+ got_children = children(got_element)
+ if len(want_children) != len(got_children):
+ return False
+ for want, got in zip(want_children, got_children):
+ if not check_element(want, got):
+ return False
+ return True
+
+ want, got = self._strip_quotes(want, got)
+ want = want.replace('\\n','\n')
+ got = got.replace('\\n','\n')
+
+ # If the string is not a complete xml document, we may need to add a
+ # root element. This allow us to compare fragments, like "<foo/><bar/>"
+ if not want.startswith('<?xml'):
+ wrapper = '<root>%s</root>'
+ want = wrapper % want
+ got = wrapper % got
+
+ # Parse the want and got strings, and compare the parsings.
+ try:
+ want_root = parseString(want).firstChild
+ got_root = parseString(got).firstChild
+ except:
+ return False
+ return check_element(want_root, got_root)
+
+ def check_output_json(self, want, got, optionsflags):
+ "Tries to compare want and got as if they were JSON-encoded data"
+ want, got = self._strip_quotes(want, got)
+ try:
+ want_json = simplejson.loads(want)
+ got_json = simplejson.loads(got)
+ except:
+ return False
+ return want_json == got_json
+
+ def _strip_quotes(self, want, got):
+ """
+ Strip quotes of doctests output values:
+
+ >>> o = OutputChecker()
+ >>> o._strip_quotes("'foo'")
+ "foo"
+ >>> o._strip_quotes('"foo"')
+ "foo"
+ >>> o._strip_quotes("u'foo'")
+ "foo"
+ >>> o._strip_quotes('u"foo"')
+ "foo"
+ """
+ def is_quoted_string(s):
+ s = s.strip()
+ return (len(s) >= 2
+ and s[0] == s[-1]
+ and s[0] in ('"', "'"))
+
+ def is_quoted_unicode(s):
+ s = s.strip()
+ return (len(s) >= 3
+ and s[0] == 'u'
+ and s[1] == s[-1]
+ and s[1] in ('"', "'"))
+
+ if is_quoted_string(want) and is_quoted_string(got):
+ want = want.strip()[1:-1]
+ got = got.strip()[1:-1]
+ elif is_quoted_unicode(want) and is_quoted_unicode(got):
+ want = want.strip()[2:-1]
+ got = got.strip()[2:-1]
+ return want, got
+
class DocTestRunner(doctest.DocTestRunner):
def __init__(self, *args, **kwargs):
diff --git a/django/utils/cache.py b/django/utils/cache.py
index 603199cc7e..78063c6b11 100644
--- a/django/utils/cache.py
+++ b/django/utils/cache.py
@@ -17,7 +17,6 @@ An example: i18n middleware would need to distinguish caches by the
"Accept-language" header.
"""
-import md5
import re
import time
try:
@@ -29,6 +28,7 @@ from django.conf import settings
from django.core.cache import cache
from django.utils.encoding import smart_str, iri_to_uri
from django.utils.http import http_date
+from django.utils.hashcompat import md5_constructor
cc_delim_re = re.compile(r'\s*,\s*')
@@ -104,7 +104,7 @@ def patch_response_headers(response, cache_timeout=None):
if cache_timeout < 0:
cache_timeout = 0 # Can't have max-age negative
if not response.has_header('ETag'):
- response['ETag'] = '"%s"' % md5.new(response.content).hexdigest()
+ response['ETag'] = '"%s"' % md5_constructor(response.content).hexdigest()
if not response.has_header('Last-Modified'):
response['Last-Modified'] = http_date()
if not response.has_header('Expires'):
@@ -138,7 +138,7 @@ def patch_vary_headers(response, newheaders):
def _generate_cache_key(request, headerlist, key_prefix):
"""Returns a cache key from the headers given in the header list."""
- ctx = md5.new()
+ ctx = md5_constructor()
for header in headerlist:
value = request.META.get(header, None)
if value is not None:
diff --git a/django/utils/dateformat.py b/django/utils/dateformat.py
index bfca46b3d5..8da9385f6c 100644
--- a/django/utils/dateformat.py
+++ b/django/utils/dateformat.py
@@ -13,7 +13,7 @@ Usage:
from django.utils.dates import MONTHS, MONTHS_3, MONTHS_AP, WEEKDAYS, WEEKDAYS_ABBR
from django.utils.tzinfo import LocalTimezone
-from django.utils.translation import string_concat, ugettext as _
+from django.utils.translation import ugettext as _
from django.utils.encoding import force_unicode
from calendar import isleap, monthrange
import re, time
diff --git a/django/utils/encoding.py b/django/utils/encoding.py
index 33bb37b0ea..c54e67610f 100644
--- a/django/utils/encoding.py
+++ b/django/utils/encoding.py
@@ -1,9 +1,7 @@
import types
import urllib
import datetime
-
from django.utils.functional import Promise
-from django.utils.safestring import SafeData, mark_safe
class DjangoUnicodeDecodeError(UnicodeDecodeError):
def __init__(self, obj, *args):
diff --git a/django/utils/functional.py b/django/utils/functional.py
index 3de693e18c..9a12eda5a1 100644
--- a/django/utils/functional.py
+++ b/django/utils/functional.py
@@ -148,42 +148,54 @@ def lazy(func, *resultclasses):
function is evaluated on every access.
"""
class __proxy__(Promise):
- # This inner class encapsulates the code that should be evaluated
- # lazily. On calling of one of the magic methods it will force
- # the evaluation and store the result. Afterwards, the result
- # is delivered directly. So the result is memoized.
+ """
+ Encapsulate a function call and act as a proxy for methods that are
+ called on the result of that function. The function is not evaluated
+ until one of the methods on the result is called.
+ """
+ __dispatch = None
+
def __init__(self, args, kw):
self.__func = func
self.__args = args
self.__kw = kw
- self.__dispatch = {}
+ if self.__dispatch is None:
+ self.__prepare_class__()
+
+ def __prepare_class__(cls):
+ cls.__dispatch = {}
for resultclass in resultclasses:
- self.__dispatch[resultclass] = {}
+ cls.__dispatch[resultclass] = {}
for (k, v) in resultclass.__dict__.items():
- setattr(self, k, self.__promise__(resultclass, k, v))
- self._delegate_str = str in resultclasses
- self._delegate_unicode = unicode in resultclasses
- assert not (self._delegate_str and self._delegate_unicode), "Cannot call lazy() with both str and unicode return types."
- if self._delegate_unicode:
- # Each call to lazy() makes a new __proxy__ object, so this
- # doesn't interfere with any other lazy() results.
- __proxy__.__unicode__ = __proxy__.__unicode_cast
- elif self._delegate_str:
- __proxy__.__str__ = __proxy__.__str_cast
-
- def __promise__(self, klass, funcname, func):
+ if hasattr(cls, k):
+ continue
+ setattr(cls, k, cls.__promise__(resultclass, k, v))
+ cls._delegate_str = str in resultclasses
+ cls._delegate_unicode = unicode in resultclasses
+ assert not (cls._delegate_str and cls._delegate_unicode), "Cannot call lazy() with both str and unicode return types."
+ if cls._delegate_unicode:
+ cls.__unicode__ = cls.__unicode_cast
+ elif cls._delegate_str:
+ cls.__str__ = cls.__str_cast
+ __prepare_class__ = classmethod(__prepare_class__)
+
+ def __promise__(cls, klass, funcname, func):
# Builds a wrapper around some magic method and registers that magic
# method for the given type and method name.
- def __wrapper__(*args, **kw):
+ def __wrapper__(self, *args, **kw):
# Automatically triggers the evaluation of a lazy value and
# applies the given magic method of the result type.
res = self.__func(*self.__args, **self.__kw)
- return self.__dispatch[type(res)][funcname](res, *args, **kw)
-
- if klass not in self.__dispatch:
- self.__dispatch[klass] = {}
- self.__dispatch[klass][funcname] = func
+ for t in type(res).mro():
+ if t in self.__dispatch:
+ return self.__dispatch[t][funcname](res, *args, **kw)
+ raise TypeError("Lazy object returned unexpected type.")
+
+ if klass not in cls.__dispatch:
+ cls.__dispatch[klass] = {}
+ cls.__dispatch[klass][funcname] = func
return __wrapper__
+ __promise__ = classmethod(__promise__)
def __unicode_cast(self):
return self.__func(*self.__args, **self.__kw)
diff --git a/django/utils/hashcompat.py b/django/utils/hashcompat.py
new file mode 100644
index 0000000000..8880d92646
--- /dev/null
+++ b/django/utils/hashcompat.py
@@ -0,0 +1,16 @@
+"""
+The md5 and sha modules are deprecated since Python 2.5, replaced by the
+hashlib module containing both hash algorithms. Here, we provide a common
+interface to the md5 and sha constructors, preferring the hashlib module when
+available.
+"""
+
+try:
+ import hashlib
+ md5_constructor = hashlib.md5
+ sha_constructor = hashlib.sha1
+except ImportError:
+ import md5
+ md5_constructor = md5.new
+ import sha
+ sha_constructor = sha.new
diff --git a/django/utils/html.py b/django/utils/html.py
index 747af52879..9b3fad8b03 100644
--- a/django/utils/html.py
+++ b/django/utils/html.py
@@ -94,7 +94,9 @@ def urlize(text, trim_url_limit=None, nofollow=False, autoescape=False):
words = word_split_re.split(force_unicode(text))
nofollow_attr = nofollow and ' rel="nofollow"' or ''
for i, word in enumerate(words):
- match = punctuation_re.match(word)
+ match = None
+ if '.' in word or '@' in word or ':' in word:
+ match = punctuation_re.match(word)
if match:
lead, middle, trail = match.groups()
# Make URL we want to point to.
@@ -102,7 +104,7 @@ def urlize(text, trim_url_limit=None, nofollow=False, autoescape=False):
if middle.startswith('http://') or middle.startswith('https://'):
url = urlquote(middle, safe='/&=:;#?+*')
elif middle.startswith('www.') or ('@' not in middle and \
- len(middle) > 0 and middle[0] in string.ascii_letters + string.digits and \
+ middle and middle[0] in string.ascii_letters + string.digits and \
(middle.endswith('.org') or middle.endswith('.net') or middle.endswith('.com'))):
url = urlquote('http://%s' % middle, safe='/&=:;#?+*')
elif '@' in middle and not ':' in middle and simple_email_re.match(middle):
diff --git a/django/utils/http.py b/django/utils/http.py
index 5ec6e92d28..7d2af95c47 100644
--- a/django/utils/http.py
+++ b/django/utils/http.py
@@ -65,3 +65,32 @@ def http_date(epoch_seconds=None):
"""
rfcdate = formatdate(epoch_seconds)
return '%s GMT' % rfcdate[:25]
+
+# Base 36 functions: useful for generating compact URLs
+
+def base36_to_int(s):
+ """
+ Convertd a base 36 string to an integer
+ """
+ return int(s, 36)
+
+def int_to_base36(i):
+ """
+ Converts an integer to a base36 string
+ """
+ digits = "0123456789abcdefghijklmnopqrstuvwxyz"
+ factor = 0
+ # Find starting factor
+ while True:
+ factor += 1
+ if i < 36 ** factor:
+ factor -= 1
+ break
+ base36 = []
+ # Construct base36 representation
+ while factor >= 0:
+ j = 36 ** factor
+ base36.append(digits[i / j])
+ i = i % j
+ factor -= 1
+ return ''.join(base36)
diff --git a/django/utils/maxlength.py b/django/utils/maxlength.py
deleted file mode 100644
index a616541f85..0000000000
--- a/django/utils/maxlength.py
+++ /dev/null
@@ -1,65 +0,0 @@
-"""
-Utilities for providing backwards compatibility for the maxlength argument,
-which has been replaced by max_length. See ticket #2101.
-"""
-
-from warnings import warn
-
-def get_maxlength(self):
- return self.max_length
-
-def set_maxlength(self, value):
- self.max_length = value
-
-def legacy_maxlength(max_length, maxlength):
- """
- Consolidates max_length and maxlength, providing backwards compatibilty
- for the legacy "maxlength" argument.
-
- If one of max_length or maxlength is given, then that value is returned.
- If both are given, a TypeError is raised. If maxlength is used at all, a
- deprecation warning is issued.
- """
- if maxlength is not None:
- warn("maxlength is deprecated. Use max_length instead.", DeprecationWarning, stacklevel=3)
- if max_length is not None:
- raise TypeError("Field cannot take both the max_length argument and the legacy maxlength argument.")
- max_length = maxlength
- return max_length
-
-def remove_maxlength(func):
- """
- A decorator to be used on a class's __init__ that provides backwards
- compatibilty for the legacy "maxlength" keyword argument, i.e.
- name = models.CharField(maxlength=20)
-
- It does this by changing the passed "maxlength" keyword argument
- (if it exists) into a "max_length" keyword argument.
- """
- def inner(self, *args, **kwargs):
- max_length = kwargs.get('max_length', None)
- # pop maxlength because we don't want this going to __init__.
- maxlength = kwargs.pop('maxlength', None)
- max_length = legacy_maxlength(max_length, maxlength)
- # Only set the max_length keyword argument if we got a value back.
- if max_length is not None:
- kwargs['max_length'] = max_length
- func(self, *args, **kwargs)
- return inner
-
-# This metaclass is used in two places, and should be removed when legacy
-# support for maxlength is dropped.
-# * oldforms.FormField
-# * db.models.fields.Field
-
-class LegacyMaxlength(type):
- """
- Metaclass for providing backwards compatibility support for the
- "maxlength" keyword argument.
- """
- def __init__(cls, name, bases, attrs):
- super(LegacyMaxlength, cls).__init__(name, bases, attrs)
- # Decorate the class's __init__ to remove any maxlength keyword.
- cls.__init__ = remove_maxlength(cls.__init__)
- # Support accessing and setting to the legacy maxlength attribute.
- cls.maxlength = property(get_maxlength, set_maxlength)
diff --git a/django/utils/simplejson/LICENSE.txt b/django/utils/simplejson/LICENSE.txt
index 1fa4fd5ba2..ad95f29c17 100644
--- a/django/utils/simplejson/LICENSE.txt
+++ b/django/utils/simplejson/LICENSE.txt
@@ -1,4 +1,3 @@
-simplejson 1.5
Copyright (c) 2006 Bob Ippolito
Permission is hereby granted, free of charge, to any person obtaining a copy of
diff --git a/django/utils/simplejson/__init__.py b/django/utils/simplejson/__init__.py
index 15b7173976..130940f358 100644
--- a/django/utils/simplejson/__init__.py
+++ b/django/utils/simplejson/__init__.py
@@ -65,6 +65,9 @@ Specializing JSON object decoding::
>>> simplejson.loads('{"__complex__": true, "real": 1, "imag": 2}',
... object_hook=as_complex)
(1+2j)
+ >>> import decimal
+ >>> simplejson.loads('1.1', parse_float=decimal.Decimal)
+ Decimal("1.1")
Extending JSONEncoder::
@@ -83,20 +86,48 @@ Extending JSONEncoder::
['[', '2.0', ', ', '1.0', ']']
+Using simplejson from the shell to validate and
+pretty-print::
+
+ $ echo '{"json":"obj"}' | python -msimplejson.tool
+ {
+ "json": "obj"
+ }
+ $ echo '{ 1.2:3.4}' | python -msimplejson.tool
+ Expecting property name: line 1 column 2 (char 2)
+
Note that the JSON produced by this module's default settings
is a subset of YAML, so it may be used as a serializer for that as well.
"""
-__version__ = '1.5'
+__version__ = '1.9.2'
__all__ = [
'dump', 'dumps', 'load', 'loads',
'JSONDecoder', 'JSONEncoder',
]
-from django.utils.simplejson.decoder import JSONDecoder
-from django.utils.simplejson.encoder import JSONEncoder
+if __name__ == '__main__':
+ import warnings
+ warnings.warn('python -msimplejson is deprecated, use python -msiplejson.tool', DeprecationWarning)
+ from django.utils.simplejson.decoder import JSONDecoder
+ from django.utils.simplejson.encoder import JSONEncoder
+else:
+ from decoder import JSONDecoder
+ from encoder import JSONEncoder
+
+_default_encoder = JSONEncoder(
+ skipkeys=False,
+ ensure_ascii=True,
+ check_circular=True,
+ allow_nan=True,
+ indent=None,
+ separators=None,
+ encoding='utf-8',
+ default=None,
+)
def dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True,
- allow_nan=True, cls=None, indent=None, **kw):
+ allow_nan=True, cls=None, indent=None, separators=None,
+ encoding='utf-8', default=None, **kw):
"""
Serialize ``obj`` as a JSON formatted stream to ``fp`` (a
``.write()``-supporting file-like object).
@@ -107,7 +138,7 @@ def dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True,
If ``ensure_ascii`` is ``False``, then the some chunks written to ``fp``
may be ``unicode`` instances, subject to normal Python ``str`` to
- ``unicode`` coercion rules. Unless ``fp.write()`` explicitly
+ ``unicode`` coercion rules. Unless ``fp.write()`` explicitly
understands ``unicode`` (as in ``codecs.getwriter()``) this is likely
to cause an error.
@@ -121,25 +152,44 @@ def dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True,
JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``).
If ``indent`` is a non-negative integer, then JSON array elements and object
- members will be pretty-printed with that indent level. An indent level
- of 0 will only insert newlines. ``None`` is the most compact representation.
+ members will be pretty-printed with that indent level. An indent level
+ of 0 will only insert newlines. ``None`` is the most compact representation.
+
+ If ``separators`` is an ``(item_separator, dict_separator)`` tuple
+ then it will be used instead of the default ``(', ', ': ')`` separators.
+ ``(',', ':')`` is the most compact JSON representation.
+
+ ``encoding`` is the character encoding for str instances, default is UTF-8.
+
+ ``default(obj)`` is a function that should return a serializable version
+ of obj or raise TypeError. The default simply raises TypeError.
To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the
``.default()`` method to serialize additional types), specify it with
the ``cls`` kwarg.
"""
- if cls is None:
- cls = JSONEncoder
- iterable = cls(skipkeys=skipkeys, ensure_ascii=ensure_ascii,
- check_circular=check_circular, allow_nan=allow_nan, indent=indent,
- **kw).iterencode(obj)
+ # cached encoder
+ if (skipkeys is False and ensure_ascii is True and
+ check_circular is True and allow_nan is True and
+ cls is None and indent is None and separators is None and
+ encoding == 'utf-8' and default is None and not kw):
+ iterable = _default_encoder.iterencode(obj)
+ else:
+ if cls is None:
+ cls = JSONEncoder
+ iterable = cls(skipkeys=skipkeys, ensure_ascii=ensure_ascii,
+ check_circular=check_circular, allow_nan=allow_nan, indent=indent,
+ separators=separators, encoding=encoding,
+ default=default, **kw).iterencode(obj)
# could accelerate with writelines in some versions of Python, at
# a debuggability cost
for chunk in iterable:
fp.write(chunk)
+
def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True,
- allow_nan=True, cls=None, indent=None, separators=None, **kw):
+ allow_nan=True, cls=None, indent=None, separators=None,
+ encoding='utf-8', default=None, **kw):
"""
Serialize ``obj`` to a JSON formatted ``str``.
@@ -161,88 +211,159 @@ def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True,
JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``).
If ``indent`` is a non-negative integer, then JSON array elements and
- object members will be pretty-printed with that indent level. An indent
- level of 0 will only insert newlines. ``None`` is the most compact
+ object members will be pretty-printed with that indent level. An indent
+ level of 0 will only insert newlines. ``None`` is the most compact
representation.
If ``separators`` is an ``(item_separator, dict_separator)`` tuple
then it will be used instead of the default ``(', ', ': ')`` separators.
``(',', ':')`` is the most compact JSON representation.
+ ``encoding`` is the character encoding for str instances, default is UTF-8.
+
+ ``default(obj)`` is a function that should return a serializable version
+ of obj or raise TypeError. The default simply raises TypeError.
+
To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the
``.default()`` method to serialize additional types), specify it with
the ``cls`` kwarg.
"""
+ # cached encoder
+ if (skipkeys is False and ensure_ascii is True and
+ check_circular is True and allow_nan is True and
+ cls is None and indent is None and separators is None and
+ encoding == 'utf-8' and default is None and not kw):
+ return _default_encoder.encode(obj)
if cls is None:
cls = JSONEncoder
return cls(
skipkeys=skipkeys, ensure_ascii=ensure_ascii,
check_circular=check_circular, allow_nan=allow_nan, indent=indent,
- separators=separators,
+ separators=separators, encoding=encoding, default=default,
**kw).encode(obj)
-def load(fp, encoding=None, cls=None, object_hook=None, **kw):
+
+_default_decoder = JSONDecoder(encoding=None, object_hook=None)
+
+
+def load(fp, encoding=None, cls=None, object_hook=None, parse_float=None,
+ parse_int=None, parse_constant=None, **kw):
"""
Deserialize ``fp`` (a ``.read()``-supporting file-like object containing
a JSON document) to a Python object.
If the contents of ``fp`` is encoded with an ASCII based encoding other
than utf-8 (e.g. latin-1), then an appropriate ``encoding`` name must
- be specified. Encodings that are not ASCII based (such as UCS-2) are
+ be specified. Encodings that are not ASCII based (such as UCS-2) are
not allowed, and should be wrapped with
``codecs.getreader(fp)(encoding)``, or simply decoded to a ``unicode``
object and passed to ``loads()``
``object_hook`` is an optional function that will be called with the
- result of any object literal decode (a ``dict``). The return value of
- ``object_hook`` will be used instead of the ``dict``. This feature
+ result of any object literal decode (a ``dict``). The return value of
+ ``object_hook`` will be used instead of the ``dict``. This feature
can be used to implement custom decoders (e.g. JSON-RPC class hinting).
To use a custom ``JSONDecoder`` subclass, specify it with the ``cls``
kwarg.
"""
- if cls is None:
- cls = JSONDecoder
- if object_hook is not None:
- kw['object_hook'] = object_hook
- return cls(encoding=encoding, **kw).decode(fp.read())
+ return loads(fp.read(),
+ encoding=encoding, cls=cls, object_hook=object_hook,
+ parse_float=parse_float, parse_int=parse_int,
+ parse_constant=parse_constant, **kw)
+
-def loads(s, encoding=None, cls=None, object_hook=None, **kw):
+def loads(s, encoding=None, cls=None, object_hook=None, parse_float=None,
+ parse_int=None, parse_constant=None, **kw):
"""
Deserialize ``s`` (a ``str`` or ``unicode`` instance containing a JSON
document) to a Python object.
If ``s`` is a ``str`` instance and is encoded with an ASCII based encoding
other than utf-8 (e.g. latin-1) then an appropriate ``encoding`` name
- must be specified. Encodings that are not ASCII based (such as UCS-2)
+ must be specified. Encodings that are not ASCII based (such as UCS-2)
are not allowed and should be decoded to ``unicode`` first.
``object_hook`` is an optional function that will be called with the
- result of any object literal decode (a ``dict``). The return value of
- ``object_hook`` will be used instead of the ``dict``. This feature
+ result of any object literal decode (a ``dict``). The return value of
+ ``object_hook`` will be used instead of the ``dict``. This feature
can be used to implement custom decoders (e.g. JSON-RPC class hinting).
+ ``parse_float``, if specified, will be called with the string
+ of every JSON float to be decoded. By default this is equivalent to
+ float(num_str). This can be used to use another datatype or parser
+ for JSON floats (e.g. decimal.Decimal).
+
+ ``parse_int``, if specified, will be called with the string
+ of every JSON int to be decoded. By default this is equivalent to
+ int(num_str). This can be used to use another datatype or parser
+ for JSON integers (e.g. float).
+
+ ``parse_constant``, if specified, will be called with one of the
+ following strings: -Infinity, Infinity, NaN, null, true, false.
+ This can be used to raise an exception if invalid JSON numbers
+ are encountered.
+
To use a custom ``JSONDecoder`` subclass, specify it with the ``cls``
kwarg.
"""
+ if (cls is None and encoding is None and object_hook is None and
+ parse_int is None and parse_float is None and
+ parse_constant is None and not kw):
+ return _default_decoder.decode(s)
if cls is None:
cls = JSONDecoder
if object_hook is not None:
kw['object_hook'] = object_hook
+ if parse_float is not None:
+ kw['parse_float'] = parse_float
+ if parse_int is not None:
+ kw['parse_int'] = parse_int
+ if parse_constant is not None:
+ kw['parse_constant'] = parse_constant
return cls(encoding=encoding, **kw).decode(s)
+
+#
+# Compatibility cruft from other libraries
+#
+
+
+def decode(s):
+ """
+ demjson, python-cjson API compatibility hook. Use loads(s) instead.
+ """
+ import warnings
+ warnings.warn("simplejson.loads(s) should be used instead of decode(s)",
+ DeprecationWarning)
+ return loads(s)
+
+
+def encode(obj):
+ """
+ demjson, python-cjson compatibility hook. Use dumps(s) instead.
+ """
+ import warnings
+ warnings.warn("simplejson.dumps(s) should be used instead of encode(s)",
+ DeprecationWarning)
+ return dumps(obj)
+
+
def read(s):
"""
- json-py API compatibility hook. Use loads(s) instead.
+ jsonlib, JsonUtils, python-json, json-py API compatibility hook.
+ Use loads(s) instead.
"""
import warnings
warnings.warn("simplejson.loads(s) should be used instead of read(s)",
DeprecationWarning)
return loads(s)
+
def write(obj):
"""
- json-py API compatibility hook. Use dumps(s) instead.
+ jsonlib, JsonUtils, python-json, json-py API compatibility hook.
+ Use dumps(s) instead.
"""
import warnings
warnings.warn("simplejson.dumps(s) should be used instead of write(s)",
@@ -250,3 +371,6 @@ def write(obj):
return dumps(obj)
+if __name__ == '__main__':
+ import simplejson.tool
+ simplejson.tool.main()
diff --git a/django/utils/simplejson/decoder.py b/django/utils/simplejson/decoder.py
index 66f68a200b..cef9fc002b 100644
--- a/django/utils/simplejson/decoder.py
+++ b/django/utils/simplejson/decoder.py
@@ -2,8 +2,13 @@
Implementation of JSONDecoder
"""
import re
+import sys
from django.utils.simplejson.scanner import Scanner, pattern
+try:
+ from django.utils.simplejson._speedups import scanstring as c_scanstring
+except ImportError:
+ pass
FLAGS = re.VERBOSE | re.MULTILINE | re.DOTALL
@@ -18,6 +23,7 @@ def _floatconstants():
NaN, PosInf, NegInf = _floatconstants()
+
def linecol(doc, pos):
lineno = doc.count('\n', 0, pos) + 1
if lineno == 1:
@@ -26,6 +32,7 @@ def linecol(doc, pos):
colno = pos - doc.rindex('\n', 0, pos)
return lineno, colno
+
def errmsg(msg, doc, pos, end=None):
lineno, colno = linecol(doc, pos)
if end is None:
@@ -34,6 +41,7 @@ def errmsg(msg, doc, pos, end=None):
return '%s: line %d column %d - line %d column %d (char %d - %d)' % (
msg, lineno, colno, endlineno, endcolno, pos, end)
+
_CONSTANTS = {
'-Infinity': NegInf,
'Infinity': PosInf,
@@ -44,20 +52,30 @@ _CONSTANTS = {
}
def JSONConstant(match, context, c=_CONSTANTS):
- return c[match.group(0)], None
+ s = match.group(0)
+ fn = getattr(context, 'parse_constant', None)
+ if fn is None:
+ rval = c[s]
+ else:
+ rval = fn(s)
+ return rval, None
pattern('(-?Infinity|NaN|true|false|null)')(JSONConstant)
+
def JSONNumber(match, context):
match = JSONNumber.regex.match(match.string, *match.span())
integer, frac, exp = match.groups()
if frac or exp:
- res = float(integer + (frac or '') + (exp or ''))
+ fn = getattr(context, 'parse_float', None) or float
+ res = fn(integer + (frac or '') + (exp or ''))
else:
- res = int(integer)
+ fn = getattr(context, 'parse_int', None) or int
+ res = fn(integer)
return res, None
pattern(r'(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?')(JSONNumber)
-STRINGCHUNK = re.compile(r'(.*?)(["\\])', FLAGS)
+
+STRINGCHUNK = re.compile(r'(.*?)(["\\\x00-\x1f])', FLAGS)
BACKSLASH = {
'"': u'"', '\\': u'\\', '/': u'/',
'b': u'\b', 'f': u'\f', 'n': u'\n', 'r': u'\r', 't': u'\t',
@@ -65,7 +83,7 @@ BACKSLASH = {
DEFAULT_ENCODING = "utf-8"
-def scanstring(s, end, encoding=None, _b=BACKSLASH, _m=STRINGCHUNK.match):
+def py_scanstring(s, end, encoding=None, strict=True, _b=BACKSLASH, _m=STRINGCHUNK.match):
if encoding is None:
encoding = DEFAULT_ENCODING
chunks = []
@@ -84,6 +102,12 @@ def scanstring(s, end, encoding=None, _b=BACKSLASH, _m=STRINGCHUNK.match):
_append(content)
if terminator == '"':
break
+ elif terminator != '\\':
+ if strict:
+ raise ValueError(errmsg("Invalid control character %r at", s, end))
+ else:
+ _append(terminator)
+ continue
try:
esc = s[end]
except IndexError:
@@ -98,21 +122,43 @@ def scanstring(s, end, encoding=None, _b=BACKSLASH, _m=STRINGCHUNK.match):
end += 1
else:
esc = s[end + 1:end + 5]
+ next_end = end + 5
+ msg = "Invalid \\uXXXX escape"
try:
- m = unichr(int(esc, 16))
- if len(esc) != 4 or not esc.isalnum():
+ if len(esc) != 4:
raise ValueError
+ uni = int(esc, 16)
+ if 0xd800 <= uni <= 0xdbff and sys.maxunicode > 65535:
+ msg = "Invalid \\uXXXX\\uXXXX surrogate pair"
+ if not s[end + 5:end + 7] == '\\u':
+ raise ValueError
+ esc2 = s[end + 7:end + 11]
+ if len(esc2) != 4:
+ raise ValueError
+ uni2 = int(esc2, 16)
+ uni = 0x10000 + (((uni - 0xd800) << 10) | (uni2 - 0xdc00))
+ next_end += 6
+ m = unichr(uni)
except ValueError:
- raise ValueError(errmsg("Invalid \\uXXXX escape", s, end))
- end += 5
+ raise ValueError(errmsg(msg, s, end))
+ end = next_end
_append(m)
return u''.join(chunks), end
+
+# Use speedup
+try:
+ scanstring = c_scanstring
+except NameError:
+ scanstring = py_scanstring
+
def JSONString(match, context):
encoding = getattr(context, 'encoding', None)
- return scanstring(match.string, match.end(), encoding)
+ strict = getattr(context, 'strict', True)
+ return scanstring(match.string, match.end(), encoding, strict)
pattern(r'"')(JSONString)
+
WHITESPACE = re.compile(r'\s*', FLAGS)
def JSONObject(match, context, _w=WHITESPACE.match):
@@ -120,16 +166,17 @@ def JSONObject(match, context, _w=WHITESPACE.match):
s = match.string
end = _w(s, match.end()).end()
nextchar = s[end:end + 1]
- # trivial empty object
+ # Trivial empty object
if nextchar == '}':
return pairs, end + 1
if nextchar != '"':
raise ValueError(errmsg("Expecting property name", s, end))
end += 1
encoding = getattr(context, 'encoding', None)
+ strict = getattr(context, 'strict', True)
iterscan = JSONScanner.iterscan
while True:
- key, end = scanstring(s, end, encoding)
+ key, end = scanstring(s, end, encoding, strict)
end = _w(s, end).end()
if s[end:end + 1] != ':':
raise ValueError(errmsg("Expecting : delimiter", s, end))
@@ -156,12 +203,13 @@ def JSONObject(match, context, _w=WHITESPACE.match):
pairs = object_hook(pairs)
return pairs, end
pattern(r'{')(JSONObject)
-
+
+
def JSONArray(match, context, _w=WHITESPACE.match):
values = []
s = match.string
end = _w(s, match.end()).end()
- # look-ahead for trivial empty array
+ # Look-ahead for trivial empty array
nextchar = s[end:end + 1]
if nextchar == ']':
return values, end + 1
@@ -182,7 +230,8 @@ def JSONArray(match, context, _w=WHITESPACE.match):
end = _w(s, end).end()
return values, end
pattern(r'\[')(JSONArray)
-
+
+
ANYTHING = [
JSONObject,
JSONArray,
@@ -193,11 +242,12 @@ ANYTHING = [
JSONScanner = Scanner(ANYTHING)
+
class JSONDecoder(object):
"""
Simple JSON <http://json.org> decoder
- Performs the following translations in decoding:
+ Performs the following translations in decoding by default:
+---------------+-------------------+
| JSON | Python |
@@ -226,7 +276,8 @@ class JSONDecoder(object):
_scanner = Scanner(ANYTHING)
__all__ = ['__init__', 'decode', 'raw_decode']
- def __init__(self, encoding=None, object_hook=None):
+ def __init__(self, encoding=None, object_hook=None, parse_float=None,
+ parse_int=None, parse_constant=None, strict=True):
"""
``encoding`` determines the encoding used to interpret any ``str``
objects decoded by this instance (utf-8 by default). It has no
@@ -239,9 +290,28 @@ class JSONDecoder(object):
of every JSON object decoded and its return value will be used in
place of the given ``dict``. This can be used to provide custom
deserializations (e.g. to support JSON-RPC class hinting).
+
+ ``parse_float``, if specified, will be called with the string
+ of every JSON float to be decoded. By default this is equivalent to
+ float(num_str). This can be used to use another datatype or parser
+ for JSON floats (e.g. decimal.Decimal).
+
+ ``parse_int``, if specified, will be called with the string
+ of every JSON int to be decoded. By default this is equivalent to
+ int(num_str). This can be used to use another datatype or parser
+ for JSON integers (e.g. float).
+
+ ``parse_constant``, if specified, will be called with one of the
+ following strings: -Infinity, Infinity, NaN, null, true, false.
+ This can be used to raise an exception if invalid JSON numbers
+ are encountered.
"""
self.encoding = encoding
self.object_hook = object_hook
+ self.parse_float = parse_float
+ self.parse_int = parse_int
+ self.parse_constant = parse_constant
+ self.strict = strict
def decode(self, s, _w=WHITESPACE.match):
"""
diff --git a/django/utils/simplejson/encoder.py b/django/utils/simplejson/encoder.py
index c83c6873eb..e6c01f6138 100644
--- a/django/utils/simplejson/encoder.py
+++ b/django/utils/simplejson/encoder.py
@@ -3,11 +3,15 @@ Implementation of JSONEncoder
"""
import re
-ESCAPE = re.compile(r'[\x00-\x19\\"\b\f\n\r\t]')
-ESCAPE_ASCII = re.compile(r'([\\"/]|[^\ -~])')
+try:
+ from django.utils.simplejson._speedups import encode_basestring_ascii as c_encode_basestring_ascii
+except ImportError:
+ pass
+
+ESCAPE = re.compile(r'[\x00-\x1f\\"\b\f\n\r\t]')
+ESCAPE_ASCII = re.compile(r'([\\"]|[^\ -~])')
+HAS_UTF8 = re.compile(r'[\x80-\xff]')
ESCAPE_DCT = {
- # escape all forward slashes to prevent </script> attack
- '/': '\\/',
'\\': '\\\\',
'"': '\\"',
'\b': '\\b',
@@ -19,8 +23,9 @@ ESCAPE_DCT = {
for i in range(0x20):
ESCAPE_DCT.setdefault(chr(i), '\\u%04x' % (i,))
-# assume this produces an infinity on all machines (probably not guaranteed)
+# Assume this produces an infinity on all machines (probably not guaranteed)
INFINITY = float('1e66666')
+FLOAT_REPR = repr
def floatstr(o, allow_nan=True):
# Check for specials. Note that this type of test is processor- and/or
@@ -33,7 +38,7 @@ def floatstr(o, allow_nan=True):
elif o == -INFINITY:
text = '-Infinity'
else:
- return str(o)
+ return FLOAT_REPR(o)
if not allow_nan:
raise ValueError("Out of range float values are not JSON compliant: %r"
@@ -50,15 +55,32 @@ def encode_basestring(s):
return ESCAPE_DCT[match.group(0)]
return '"' + ESCAPE.sub(replace, s) + '"'
-def encode_basestring_ascii(s):
+
+def py_encode_basestring_ascii(s):
+ if isinstance(s, str) and HAS_UTF8.search(s) is not None:
+ s = s.decode('utf-8')
def replace(match):
s = match.group(0)
try:
return ESCAPE_DCT[s]
except KeyError:
- return '\\u%04x' % (ord(s),)
+ n = ord(s)
+ if n < 0x10000:
+ return '\\u%04x' % (n,)
+ else:
+ # surrogate pair
+ n -= 0x10000
+ s1 = 0xd800 | ((n >> 10) & 0x3ff)
+ s2 = 0xdc00 | (n & 0x3ff)
+ return '\\u%04x\\u%04x' % (s1, s2)
return '"' + str(ESCAPE_ASCII.sub(replace, s)) + '"'
-
+
+
+try:
+ encode_basestring_ascii = c_encode_basestring_ascii
+except NameError:
+ encode_basestring_ascii = py_encode_basestring_ascii
+
class JSONEncoder(object):
"""
@@ -94,7 +116,7 @@ class JSONEncoder(object):
key_separator = ': '
def __init__(self, skipkeys=False, ensure_ascii=True,
check_circular=True, allow_nan=True, sort_keys=False,
- indent=None, separators=None):
+ indent=None, separators=None, encoding='utf-8', default=None):
"""
Constructor for JSONEncoder, with sensible defaults.
@@ -126,8 +148,16 @@ class JSONEncoder(object):
None is the most compact representation.
If specified, separators should be a (item_separator, key_separator)
- tuple. The default is (', ', ': '). To get the most compact JSON
+ tuple. The default is (', ', ': '). To get the most compact JSON
representation you should specify (',', ':') to eliminate whitespace.
+
+ If specified, default is a function that gets called for objects
+ that can't otherwise be serialized. It should return a JSON encodable
+ version of the object or raise a ``TypeError``.
+
+ If encoding is not None, then all input strings will be
+ transformed into unicode using that encoding prior to JSON-encoding.
+ The default is UTF-8.
"""
self.skipkeys = skipkeys
@@ -139,6 +169,9 @@ class JSONEncoder(object):
self.current_indent_level = 0
if separators is not None:
self.item_separator, self.key_separator = separators
+ if default is not None:
+ self.default = default
+ self.encoding = encoding
def _newline_indent(self):
return '\n' + (' ' * (self.indent * self.current_indent_level))
@@ -207,8 +240,14 @@ class JSONEncoder(object):
items = [(k, dct[k]) for k in keys]
else:
items = dct.iteritems()
+ _encoding = self.encoding
+ _do_decode = (_encoding is not None
+ and not (_encoding == 'utf-8'))
for key, value in items:
- if isinstance(key, basestring):
+ if isinstance(key, str):
+ if _do_decode:
+ key = key.decode(_encoding)
+ elif isinstance(key, basestring):
pass
# JavaScript is weakly typed for these, so it makes sense to
# also allow them. Many encoders seem to do something like this.
@@ -247,6 +286,10 @@ class JSONEncoder(object):
encoder = encode_basestring_ascii
else:
encoder = encode_basestring
+ _encoding = self.encoding
+ if (_encoding is not None and isinstance(o, str)
+ and not (_encoding == 'utf-8')):
+ o = o.decode(_encoding)
yield encoder(o)
elif o is None:
yield 'null'
@@ -304,11 +347,22 @@ class JSONEncoder(object):
Return a JSON string representation of a Python data structure.
>>> JSONEncoder().encode({"foo": ["bar", "baz"]})
- '{"foo":["bar", "baz"]}'
+ '{"foo": ["bar", "baz"]}'
"""
- # This doesn't pass the iterator directly to ''.join() because it
- # sucks at reporting exceptions. It's going to do this internally
- # anyway because it uses PySequence_Fast or similar.
+ # This is for extremely simple cases and benchmarks.
+ if isinstance(o, basestring):
+ if isinstance(o, str):
+ _encoding = self.encoding
+ if (_encoding is not None
+ and not (_encoding == 'utf-8')):
+ o = o.decode(_encoding)
+ if self.ensure_ascii:
+ return encode_basestring_ascii(o)
+ else:
+ return encode_basestring(o)
+ # This doesn't pass the iterator directly to ''.join() because the
+ # exceptions aren't as detailed. The list call should be roughly
+ # equivalent to the PySequence_Fast that ''.join() would do.
chunks = list(self.iterencode(o))
return ''.join(chunks)
diff --git a/django/utils/simplejson/jsonfilter.py b/django/utils/simplejson/jsonfilter.py
deleted file mode 100644
index d02ae2033a..0000000000
--- a/django/utils/simplejson/jsonfilter.py
+++ /dev/null
@@ -1,40 +0,0 @@
-from django.utils import simplejson
-import cgi
-
-class JSONFilter(object):
- def __init__(self, app, mime_type='text/x-json'):
- self.app = app
- self.mime_type = mime_type
-
- def __call__(self, environ, start_response):
- # Read JSON POST input to jsonfilter.json if matching mime type
- response = {'status': '200 OK', 'headers': []}
- def json_start_response(status, headers):
- response['status'] = status
- response['headers'].extend(headers)
- environ['jsonfilter.mime_type'] = self.mime_type
- if environ.get('REQUEST_METHOD', '') == 'POST':
- if environ.get('CONTENT_TYPE', '') == self.mime_type:
- args = [_ for _ in [environ.get('CONTENT_LENGTH')] if _]
- data = environ['wsgi.input'].read(*map(int, args))
- environ['jsonfilter.json'] = simplejson.loads(data)
- res = simplejson.dumps(self.app(environ, json_start_response))
- jsonp = cgi.parse_qs(environ.get('QUERY_STRING', '')).get('jsonp')
- if jsonp:
- content_type = 'text/javascript'
- res = ''.join(jsonp + ['(', res, ')'])
- elif 'Opera' in environ.get('HTTP_USER_AGENT', ''):
- # Opera has bunk XMLHttpRequest support for most mime types
- content_type = 'text/plain'
- else:
- content_type = self.mime_type
- headers = [
- ('Content-type', content_type),
- ('Content-length', len(res)),
- ]
- headers.extend(response['headers'])
- start_response(response['status'], headers)
- return [res]
-
-def factory(app, global_conf, **kw):
- return JSONFilter(app, **kw)
diff --git a/django/utils/simplejson/scanner.py b/django/utils/simplejson/scanner.py
index 64f4999fb5..2a18390d0d 100644
--- a/django/utils/simplejson/scanner.py
+++ b/django/utils/simplejson/scanner.py
@@ -1,18 +1,21 @@
"""
Iterator based sre token scanner
"""
-import sre_parse, sre_compile, sre_constants
-from sre_constants import BRANCH, SUBPATTERN
-from re import VERBOSE, MULTILINE, DOTALL
import re
+from re import VERBOSE, MULTILINE, DOTALL
+import sre_parse
+import sre_compile
+import sre_constants
+from sre_constants import BRANCH, SUBPATTERN
__all__ = ['Scanner', 'pattern']
FLAGS = (VERBOSE | MULTILINE | DOTALL)
+
class Scanner(object):
def __init__(self, lexicon, flags=FLAGS):
self.actions = [None]
- # combine phrases into a compound pattern
+ # Combine phrases into a compound pattern
s = sre_parse.Pattern()
s.flags = flags
p = []
@@ -26,10 +29,10 @@ class Scanner(object):
p.append(subpattern)
self.actions.append(token)
+ s.groups = len(p) + 1 # NOTE(guido): Added to make SRE validation work
p = sre_parse.SubPattern(s, [(BRANCH, (None, p))])
self.scanner = sre_compile.compile(p)
-
def iterscan(self, string, idx=0, context=None):
"""
Yield match, end_idx for each match
@@ -54,10 +57,11 @@ class Scanner(object):
match = self.scanner.scanner(string, matchend).match
yield rval, matchend
lastend = matchend
-
+
+
def pattern(pattern, flags=FLAGS):
def decorator(fn):
fn.pattern = pattern
fn.regex = re.compile(pattern, flags)
return fn
- return decorator
+ return decorator \ No newline at end of file
diff --git a/django/utils/simplejson/tool.py b/django/utils/simplejson/tool.py
new file mode 100644
index 0000000000..d0eb8ad9ee
--- /dev/null
+++ b/django/utils/simplejson/tool.py
@@ -0,0 +1,44 @@
+r"""
+Using simplejson from the shell to validate and
+pretty-print::
+
+ $ echo '{"json":"obj"}' | python -msimplejson
+ {
+ "json": "obj"
+ }
+ $ echo '{ 1.2:3.4}' | python -msimplejson
+ Expecting property name: line 1 column 2 (char 2)
+
+Note that the JSON produced by this module's default settings
+is a subset of YAML, so it may be used as a serializer for that as well.
+"""
+import django.utils.simplejson
+
+#
+# Pretty printer:
+# curl http://mochikit.com/examples/ajax_tables/domains.json | python -msimplejson.tool
+#
+
+def main():
+ import sys
+ if len(sys.argv) == 1:
+ infile = sys.stdin
+ outfile = sys.stdout
+ elif len(sys.argv) == 2:
+ infile = open(sys.argv[1], 'rb')
+ outfile = sys.stdout
+ elif len(sys.argv) == 3:
+ infile = open(sys.argv[1], 'rb')
+ outfile = open(sys.argv[2], 'wb')
+ else:
+ raise SystemExit("%s [infile [outfile]]" % (sys.argv[0],))
+ try:
+ obj = simplejson.load(infile)
+ except ValueError, e:
+ raise SystemExit(e)
+ simplejson.dump(obj, outfile, sort_keys=True, indent=4)
+ outfile.write('\n')
+
+
+if __name__ == '__main__':
+ main()
diff --git a/django/utils/thread_support.py b/django/utils/thread_support.py
new file mode 100644
index 0000000000..2b97d165ca
--- /dev/null
+++ b/django/utils/thread_support.py
@@ -0,0 +1,12 @@
+"""
+Code used in a couple of places to work with the current thread's environment.
+Current users include i18n and request prefix handling.
+"""
+
+try:
+ import threading
+ currentThread = threading.currentThread
+except ImportError:
+ def currentThread():
+ return "no threading"
+
diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py
index 451420c7d8..93bb3c9bf9 100644
--- a/django/utils/translation/trans_real.py
+++ b/django/utils/translation/trans_real.py
@@ -8,18 +8,7 @@ import gettext as gettext_module
from cStringIO import StringIO
from django.utils.safestring import mark_safe, SafeData
-
-try:
- import threading
- hasThreads = True
-except ImportError:
- hasThreads = False
-
-if hasThreads:
- currentThread = threading.currentThread
-else:
- def currentThread():
- return 'no threading'
+from django.utils.thread_support import currentThread
# Translations are cached in a dictionary for every language+app tuple.
# The active translations are stored by threadid to make them thread local.
diff --git a/django/views/debug.py b/django/views/debug.py
index 380aa8bf06..adc1ae936e 100644
--- a/django/views/debug.py
+++ b/django/views/debug.py
@@ -145,8 +145,6 @@ class ExceptionReporter:
'line': line,
'name': origin.name,
}
- if hasattr(self.exc_value, 'exc_info') and self.exc_value.exc_info:
- exc_type, exc_value, tb = self.exc_value.exc_info
def _get_lines_from_file(self, filename, lineno, context_lines, loader=None, module_name=None):
"""
diff --git a/django/views/generic/create_update.py b/django/views/generic/create_update.py
index 4fe639f321..aaa0bdc4b6 100644
--- a/django/views/generic/create_update.py
+++ b/django/views/generic/create_update.py
@@ -15,11 +15,11 @@ def deprecate_follow(follow):
needed for newforms-based forms.
"""
if follow is not None:
- import warning
+ import warnings
msg = ("Generic views have been changed to use newforms, and the"
- "'follow' argument is no longer used. Please update your code"
- "to not use the 'follow' argument.")
- warning.warn(msg, DeprecationWarning, stacklevel=3)
+ " 'follow' argument is no longer used. Please update your code"
+ " to not use the 'follow' argument.")
+ warnings.warn(msg, DeprecationWarning, stacklevel=3)
def apply_extra_context(extra_context, context):
"""
diff --git a/django/views/generic/simple.py b/django/views/generic/simple.py
index 9d7efdc6c4..0a68b82a10 100644
--- a/django/views/generic/simple.py
+++ b/django/views/generic/simple.py
@@ -1,4 +1,3 @@
-from django.shortcuts import render_to_response
from django.template import loader, RequestContext
from django.http import HttpResponse, HttpResponsePermanentRedirect, HttpResponseGone