summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2008-04-01 00:28:15 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2008-04-01 00:28:15 +0000
commit4efe9675c5fd5a030737d957b3588184f06117fe (patch)
treeb3ea195f6a3a281428c9cd5789e386493edc5379
parent70913a2c4358de7341525ab0e913fafd213022c2 (diff)
queryset-refactor: Merged from trunk up to [7388].
git-svn-id: http://code.djangoproject.com/svn/django/branches/queryset-refactor@7396 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/conf/global_settings.py4
-rw-r--r--django/conf/locale/ca/LC_MESSAGES/django.mobin66924 -> 67065 bytes
-rw-r--r--django/conf/locale/ca/LC_MESSAGES/django.po1148
-rw-r--r--django/conf/locale/ca/LC_MESSAGES/djangojs.mobin1681 -> 1684 bytes
-rw-r--r--django/conf/locale/ca/LC_MESSAGES/djangojs.po16
-rw-r--r--django/conf/locale/es/LC_MESSAGES/django.mobin61344 -> 62789 bytes
-rw-r--r--django/conf/locale/es/LC_MESSAGES/django.po1743
-rw-r--r--django/conf/locale/es/LC_MESSAGES/djangojs.mobin1546 -> 1622 bytes
-rw-r--r--django/conf/locale/es/LC_MESSAGES/djangojs.po12
-rw-r--r--django/conf/locale/pl/LC_MESSAGES/django.mobin66225 -> 66091 bytes
-rw-r--r--django/conf/locale/pl/LC_MESSAGES/django.po303
-rw-r--r--django/contrib/admin/templatetags/admin_list.py12
-rw-r--r--django/contrib/admin/views/main.py8
-rw-r--r--django/contrib/flatpages/models.py5
-rw-r--r--django/core/mail.py84
-rw-r--r--django/core/paginator.py2
-rw-r--r--django/db/backends/ado_mssql/__init__.py0
-rw-r--r--django/db/backends/ado_mssql/base.py112
-rw-r--r--django/db/backends/ado_mssql/client.py2
-rw-r--r--django/db/backends/ado_mssql/creation.py25
-rw-r--r--django/db/backends/ado_mssql/introspection.py13
-rw-r--r--django/db/backends/mysql/base.py3
-rw-r--r--django/db/models/fields/related.py2
-rw-r--r--django/views/generic/list_detail.py4
-rw-r--r--django/views/i18n.py13
-rw-r--r--docs/Makefile68
-rw-r--r--docs/authentication.txt19
-rw-r--r--docs/conf.py132
-rw-r--r--docs/db-api.txt3
-rw-r--r--docs/i18n.txt55
-rw-r--r--docs/index.txt128
-rw-r--r--docs/install.txt8
-rw-r--r--docs/modelforms.txt2
-rw-r--r--docs/newforms.txt19
-rw-r--r--docs/request_response.txt27
-rw-r--r--docs/settings.txt2
-rw-r--r--docs/syndication_feeds.txt2
-rw-r--r--docs/testing.txt2
-rw-r--r--docs/tutorial04.txt15
-rw-r--r--docs/url_dispatch.txt2
-rw-r--r--tests/modeltests/or_lookups/models.py2
-rw-r--r--tests/regressiontests/forms/fields.py20
-rw-r--r--tests/regressiontests/model_regress/models.py17
43 files changed, 2557 insertions, 1477 deletions
diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py
index 3917d40943..84b3f5796e 100644
--- a/django/conf/global_settings.py
+++ b/django/conf/global_settings.py
@@ -114,7 +114,7 @@ SERVER_EMAIL = 'root@localhost'
SEND_BROKEN_LINK_EMAILS = False
# Database connection info.
-DATABASE_ENGINE = '' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.
+DATABASE_ENGINE = '' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = '' # Or path to database file if using sqlite3.
DATABASE_USER = '' # Not used with sqlite3.
DATABASE_PASSWORD = '' # Not used with sqlite3.
@@ -287,7 +287,7 @@ SESSION_COOKIE_PATH = '/' # The path of the sessio
SESSION_SAVE_EVERY_REQUEST = False # Whether to save the session data on every request.
SESSION_EXPIRE_AT_BROWSER_CLOSE = False # Whether sessions expire when a user closes his browser.
SESSION_ENGINE = 'django.contrib.sessions.backends.db' # The module to store session data
-SESSION_FILE_PATH = None # Directory to store session files if using the file session module. If set to None the backend will use a sensible default.
+SESSION_FILE_PATH = None # Directory to store session files if using the file session module. If None, the backend will use a sensible default.
#########
# CACHE #
diff --git a/django/conf/locale/ca/LC_MESSAGES/django.mo b/django/conf/locale/ca/LC_MESSAGES/django.mo
index 436f3609ce..7be507d151 100644
--- a/django/conf/locale/ca/LC_MESSAGES/django.mo
+++ b/django/conf/locale/ca/LC_MESSAGES/django.mo
Binary files differ
diff --git a/django/conf/locale/ca/LC_MESSAGES/django.po b/django/conf/locale/ca/LC_MESSAGES/django.po
index d9d3194a83..1c1bdcac4e 100644
--- a/django/conf/locale/ca/LC_MESSAGES/django.po
+++ b/django/conf/locale/ca/LC_MESSAGES/django.po
@@ -5,10 +5,10 @@ msgid ""
msgstr ""
"Project-Id-Version: Django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-12-29 21:28+0100\n"
-"PO-Revision-Date: 2008-01-22 19:49+0100\n"
-"Last-Translator: Marc Garcia <marc.garcia@accopensys.com>\n"
-"Language-Team: <es@li.org>\n"
+"POT-Creation-Date: 2007-02-15 01:00+0200\n"
+"PO-Revision-Date: 2008-03-29 01:37+0100\n"
+"Last-Translator: Django Catalan Group <django-cat@googlegroups.com>\n"
+"Language-Team: Catalan <ca@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -24,7 +24,7 @@ msgstr "Bengalí"
#: conf/global_settings.py:41
msgid "Bulgarian"
-msgstr "Bulgar"
+msgstr "Búlgar"
#: conf/global_settings.py:42
msgid "Catalan"
@@ -63,134 +63,143 @@ msgid "Argentinean Spanish"
msgstr "Castellà Argentí"
#: conf/global_settings.py:51
+#, fuzzy
+msgid "Basque"
+msgstr "Euskadi"
+
+#: conf/global_settings.py:52
msgid "Persian"
msgstr "Persa"
-#: conf/global_settings.py:52
+#: conf/global_settings.py:53
msgid "Finnish"
msgstr "Finlandès"
-#: conf/global_settings.py:53
+#: conf/global_settings.py:54
msgid "French"
msgstr "Francès"
-#: conf/global_settings.py:54
-msgid "Gaeilge"
-msgstr "Gaeilge"
-
#: conf/global_settings.py:55
-msgid "Galician"
-msgstr "Galleg"
+msgid "Irish"
+msgstr "Irlandès"
#: conf/global_settings.py:56
+msgid "Galician"
+msgstr "Gallec"
+
+#: conf/global_settings.py:57
msgid "Hungarian"
msgstr "Húngar"
-#: conf/global_settings.py:57
+#: conf/global_settings.py:58
msgid "Hebrew"
msgstr "Hebreu"
-#: conf/global_settings.py:58
+#: conf/global_settings.py:59
msgid "Croatian"
msgstr "Croat"
-#: conf/global_settings.py:59
+#: conf/global_settings.py:60
msgid "Icelandic"
msgstr "Islandès"
-#: conf/global_settings.py:60
+#: conf/global_settings.py:61
msgid "Italian"
msgstr "Italià"
-#: conf/global_settings.py:61
+#: conf/global_settings.py:62
msgid "Japanese"
msgstr "Japonès"
-#: conf/global_settings.py:62
+#: conf/global_settings.py:63
+msgid "Georgian"
+msgstr "Georgià"
+
+#: conf/global_settings.py:64
msgid "Korean"
msgstr "Coreà"
-#: conf/global_settings.py:63
+#: conf/global_settings.py:65
msgid "Khmer"
msgstr "Khmer"
-#: conf/global_settings.py:64
+#: conf/global_settings.py:66
msgid "Kannada"
msgstr "Canès"
-#: conf/global_settings.py:65
+#: conf/global_settings.py:67
msgid "Latvian"
msgstr "Letó"
-#: conf/global_settings.py:66
+#: conf/global_settings.py:68
msgid "Macedonian"
msgstr "Macedoni"
-#: conf/global_settings.py:67
+#: conf/global_settings.py:69
msgid "Dutch"
msgstr "Holandès"
-#: conf/global_settings.py:68
+#: conf/global_settings.py:70
msgid "Norwegian"
msgstr "Norueg"
-#: conf/global_settings.py:69
+#: conf/global_settings.py:71
msgid "Polish"
msgstr "Polac"
-#: conf/global_settings.py:70
+#: conf/global_settings.py:72
msgid "Portugese"
msgstr "Portuguès"
-#: conf/global_settings.py:71
+#: conf/global_settings.py:73
msgid "Brazilian"
msgstr "Brasileny"
-#: conf/global_settings.py:72
+#: conf/global_settings.py:74
msgid "Romanian"
msgstr "Rumanès"
-#: conf/global_settings.py:73
+#: conf/global_settings.py:75
msgid "Russian"
msgstr "Rús"
-#: conf/global_settings.py:74
+#: conf/global_settings.py:76
msgid "Slovak"
msgstr "Eslovac"
-#: conf/global_settings.py:75
+#: conf/global_settings.py:77
msgid "Slovenian"
msgstr "Esloveni"
-#: conf/global_settings.py:76
+#: conf/global_settings.py:78
msgid "Serbian"
msgstr "Serbi"
-#: conf/global_settings.py:77
+#: conf/global_settings.py:79
msgid "Swedish"
msgstr "Suec"
-#: conf/global_settings.py:78
+#: conf/global_settings.py:80
msgid "Tamil"
msgstr "Tàmil"
-#: conf/global_settings.py:79
+#: conf/global_settings.py:81
msgid "Telugu"
msgstr "Telugu"
-#: conf/global_settings.py:80
+#: conf/global_settings.py:82
msgid "Turkish"
msgstr "Turc"
-#: conf/global_settings.py:81
+#: conf/global_settings.py:83
msgid "Ukrainian"
msgstr "Ucranià"
-#: conf/global_settings.py:82
+#: conf/global_settings.py:84
msgid "Simplified Chinese"
msgstr "Xinés simplificat"
-#: conf/global_settings.py:83
+#: conf/global_settings.py:85
msgid "Traditional Chinese"
msgstr "Xinés tradicional"
@@ -203,10 +212,8 @@ msgstr ""
"<h3>Per %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 "Tots"
@@ -230,20 +237,17 @@ msgstr "Aquest mes"
msgid "This year"
msgstr "Aquest any"
-#: contrib/admin/filterspecs.py:147
-#: newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
#: oldforms/__init__.py:592
msgid "Yes"
msgstr "Si"
-#: contrib/admin/filterspecs.py:147
-#: newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
#: oldforms/__init__.py:592
msgid "No"
msgstr "No"
-#: contrib/admin/filterspecs.py:154
-#: newforms/widgets.py:231
+#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231
#: oldforms/__init__.py:592
msgid "Unknown"
msgstr "Desconegut"
@@ -283,7 +287,7 @@ msgstr "No s'ha pogut trobar la pàgina"
#: contrib/admin/templates/admin/404.html:10
msgid "We're sorry, but the requested page could not be found."
-msgstr "Ho sentim, però no s'ha pogut trobar la pàgina solicitada"
+msgstr "Ho sentim, però no s'ha pogut trobar la pàgina sol·licitada"
#: contrib/admin/templates/admin/500.html:4
#: contrib/admin/templates/admin/base.html:37
@@ -315,8 +319,12 @@ msgid "Server Error <em>(500)</em>"
msgstr "Error del 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 "Hi ha hagut un error. S'ha informat als administradors del lloc per correu electrònic y hauria d'arreglar-se en breu. Gràcies per la seva paciència."
+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 ocorregut un error. S'ha informat als administradors del lloc per correu "
+"electrònic y hauria d'arreglar-se en breu. Gràcies per la vostra paciència."
#: contrib/admin/templates/admin/base.html:26
msgid "Welcome,"
@@ -344,7 +352,7 @@ msgstr "Lloc administratiu de Django"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
-msgstr "Adminisitració de Django"
+msgstr "Administració de Django"
#: contrib/admin/templates/admin/change_form.html:14
#: contrib/admin/templates/admin/index.html:28
@@ -364,8 +372,8 @@ msgstr "Veure en el lloc"
#: 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] "Si us plau, corregeixi l'error mostrat abaix."
-msgstr[1] "Si us plau, corregeixi els errors mostrats abaix."
+msgstr[0] "Si us plau, corregiu l'error mostrat a baix."
+msgstr[1] "Si us plau, corregiu els errors mostrats a baix."
#: contrib/admin/templates/admin/change_form.html:49
msgid "Ordering"
@@ -387,13 +395,23 @@ msgstr "Eliminar"
#: contrib/admin/templates/admin/delete_confirmation.html:13
#, 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/la %(object_name)s '%(escaped_object)s' provocaria l'eliminació d'objectes relacionats, però el seu compte no te permisos per a esborrar els tipus d'objecte següents:"
+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/la %(object_name)s '%(escaped_object)s' provocaria l'eliminació "
+"d'objectes relacionats, però el vostre compte no te permissos per a esborrar els "
+"tipus d'objecte següents:"
#: contrib/admin/templates/admin/delete_confirmation.html:20
#, 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à segur de voler esborrar els/les %(object_name)s \"%(escaped_object)s\"? S'esborraran els següents elements relacionats:"
+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à segur de voler esborrar els/les %(object_name)s \"%(escaped_object)s\"? "
+"S'esborraran els següents elements relacionats:"
#: contrib/admin/templates/admin/delete_confirmation.html:25
msgid "Yes, I'm sure"
@@ -411,7 +429,7 @@ msgstr "Filtre"
#: contrib/admin/templates/admin/index.html:17
#, python-format
msgid "Models available in the %(name)s application."
-msgstr "Models disponibles en la aplicació %(name)s."
+msgstr "Models disponibles en l'aplicació %(name)s."
#: contrib/admin/templates/admin/index.html:18
#, python-format
@@ -424,7 +442,7 @@ msgstr "Modificar"
#: contrib/admin/templates/admin/index.html:44
msgid "You don't have permission to edit anything."
-msgstr "No té permís per editar res."
+msgstr "No teniu permís per editar res."
#: contrib/admin/templates/admin/index.html:52
msgid "Recent Actions"
@@ -439,8 +457,14 @@ msgid "None available"
msgstr "Cap 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 "Alguna cosa està malament en la instal·lació de la teva base de dades. Assegurat de que s'han creat les taules, i de que la base de dades és llegible per l'usuari apropiat."
+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 ""
+"Alguna cosa està malament en la instal·lació de la vostra base de dades. "
+"Assegureu-vos de que s'han creat les taules, i de que la base de dades és "
+"llegible per l'usuari apropiat."
#: contrib/admin/templates/admin/login.html:17
#: contrib/comments/templates/comments/form.html:6
@@ -454,7 +478,7 @@ msgid "Password:"
msgstr "Contrasenya:"
#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:25
+#: contrib/admin/views/decorators.py:31
msgid "Log in"
msgstr "Iniciar sessió"
@@ -475,8 +499,12 @@ msgid "DATE_WITH_TIME_FULL"
msgstr "F j, Y, H:i "
#: 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 "Aquest objecte no te historial de canvis. Probablement no va ser afegit utilitzant aquest lloc administratiu."
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
+msgstr ""
+"Aquest objecte no té historial de canvis. Probablement no va ser afegit "
+"utilitzant aquest lloc administratiu."
#: contrib/admin/templates/admin/pagination.html:10
msgid "Show all"
@@ -515,8 +543,12 @@ msgid "Save"
msgstr "Desar"
#: 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 "Primer, entri un usuari i una contrasenya. Després podrà editar més opcions del usuari."
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+"Primer, entri un usuari i una contrasenya. Després podrà editar més opcions "
+"de l'usuari."
#: contrib/admin/templates/admin/auth/user/add_form.html:12
msgid "Username"
@@ -535,12 +567,12 @@ msgstr "Contrasenya (de nou)"
#: 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 "Introdueixi la mateixa contrasenya que a sobre, per a verificació."
+msgstr "Introduïu la mateixa contrasenya de dalt, per fer-ne la verificació."
#: 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 "Introdueixi una contrasenya per l'usuari <strong>%(username)s</strong>"
+msgstr "Introduïu una contrasenya per l'usuari <strong>%(username)s</strong>"
#: contrib/admin/templates/admin_doc/bookmarklets.html:3
msgid "Bookmarklets"
@@ -561,28 +593,38 @@ msgid ""
"your computer is \"internal\").</p>\n"
msgstr ""
"\n"
-"<p class=\"help\">Per a instalar 'bookmarklets', arrosegui l'enllaç a la seva barra de\n"
-"marcadors, o faci click amb el botò dret en l'enllaç i afegeixi'l als marcadors.\n"
+"<p class=\"help\">Per a instal·lar 'bookmarklets', arrosegui l'enllaç a la "
+"seva barra de\n"
+"marcadors, o faci click amb el botò dret en l'enllaç i afegeixi'l als "
+"marcadors.\n"
"Ara pot escollir el 'bookmarklet' des de qualsevol pàgina del lloc.\n"
"Observi que alguns d'aquests 'bookmarklets' precisen que estigui veient\n"
"el lloc des de un ordinador senyalat com a \"intern\" (parli\n"
-"amb el seu administrador de sistemes si no està segur de la condició del seu).</p>\n"
+"amb el seu administrador de sistemes si no està segur de la condició del "
+"seu).</p>\n"
#: contrib/admin/templates/admin_doc/bookmarklets.html:18
msgid "Documentation for this page"
msgstr "Documentació d'aquesta 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 "El porta des de qualsevol pàgina de la documentació a la vista que la genera."
+msgid ""
+"Jumps you from any page to the documentation for the view that generates "
+"that page."
+msgstr ""
+"El porta des de qualsevol pàgina de la documentació a la vista que la genera."
#: contrib/admin/templates/admin_doc/bookmarklets.html:21
msgid "Show object ID"
msgstr "Mostra el ID de l'objecte"
#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Shows the content-type and unique ID for pages that represent a single object."
-msgstr "Mostra el 'content-type' (tipus de contingut) i el ID inequívoc de les pàgines que representen un únic objecte."
+msgid ""
+"Shows the content-type and unique ID for pages that represent a single "
+"object."
+msgstr ""
+"Mostra el 'content-type' (tipus de contingut) i el ID inequívoc de les "
+"pàgines que representen un únic objecte."
#: contrib/admin/templates/admin_doc/bookmarklets.html:24
msgid "Edit this object (current window)"
@@ -590,7 +632,9 @@ msgstr "Editar aquest objecte (finestra actual)"
#: contrib/admin/templates/admin_doc/bookmarklets.html:25
msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "El porta a la pàgina d'administració de pàgines que representen un únic objecte."
+msgstr ""
+"El porta a la pàgina d'administració de pàgines que representen un únic "
+"objecte."
#: contrib/admin/templates/admin_doc/bookmarklets.html:27
msgid "Edit this object (new window)"
@@ -602,7 +646,7 @@ msgstr "Com abans, però obre la pàgina d'administració en una nova finestra."
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Gràcies per emprar algun temps de cualitat amb el lloc web avui."
+msgstr "Gràcies per destinar el vostre temps en el web durant el dia d'avui."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
@@ -618,15 +662,20 @@ msgstr "Canvi de clau"
#: contrib/admin/templates/registration/password_change_done.html:5
#: contrib/admin/templates/registration/password_change_done.html:9
msgid "Password change successful"
-msgstr "Canvi de clau exitò"
+msgstr "Canvi de clau exitòs"
#: contrib/admin/templates/registration/password_change_done.html:11
msgid "Your password was changed."
msgstr "La seva clau ha estat canviada."
#: 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 "Si us plau, introdueixi la seva contrasenya antiga, per seguretat, i tot seguit introdueixi la seva nova contrasenya dues vegades per verificar que l'ha escrit correctament."
+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 ""
+"Si us plau, introdueixi la seva contrasenya antiga, per seguretat, i tot "
+"seguit introdueixi la seva contrasenya nova dues vegades per verificar que "
+"l'ha escrit correctament."
#: contrib/admin/templates/registration/password_change_form.html:16
msgid "Old password:"
@@ -654,15 +703,21 @@ msgstr "Restablir contrasenya"
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
-msgstr "Contrasenya restaber-ta amb èxit"
+msgstr "Restabliment de contrasenya exitòs"
#: 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 "Li hem enviat una contrasenya nova a l'adreça de correu electrònic que ens ha indicat. L'hauria de rebre en breu."
+msgid ""
+"We've e-mailed a new password to the e-mail address you submitted. You "
+"should be receiving it shortly."
+msgstr ""
+"Li hem enviat una contrasenya nova a l'adreça de correu electrònic que ens "
+"ha indicat. L'hauria de rebre en breu."
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Està rebent aquest missatge degut a que va solicitar un restabliment de contrasenya."
+msgstr ""
+"Està rebent aquest missatge degut a que va solicitar un restabliment de "
+"contrasenya."
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
@@ -692,8 +747,12 @@ msgid "The %(site_name)s team"
msgstr "L'equip 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 oblidat la seva contrasenya? Introdueixi la seva adreça de correu electrònic i crearem una nova que li enviarem per correu."
+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 oblidat la seva contrasenya? Introdueixi la seva adreça de correu "
+"electrònic i en crearem una de nova que li enviarem per correu."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
@@ -723,14 +782,12 @@ msgstr "Modificar:"
msgid "All dates"
msgstr "Totes les dates"
-#: contrib/admin/views/auth.py:20
-#: contrib/admin/views/main.py:267
+#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "El/la %(name)s \"%(obj)s\".ha estat agregat/da amb èxit."
-#: contrib/admin/views/auth.py:25
-#: contrib/admin/views/main.py:271
+#: 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 "Pot editar-lo de nou abaix."
@@ -741,49 +798,59 @@ msgstr "Afegir usuari"
#: contrib/admin/views/auth.py:58
msgid "Password changed successfully."
-msgstr "Canvi de clau exitós"
+msgstr "Clau cambiada exitosament"
#: contrib/admin/views/auth.py:65
#, python-format
msgid "Change password: %s"
msgstr "Canviar clau: %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 "Si us plau, introdueixi un nom d'usuari i contrasenya vàlids. Tingui en compte que tots dos camps son sensibles a majúscules i minúscules."
+#: 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 ""
+"Si us plau, introdueixi un nom d'usuari i contrasenya vàlids. Tingui en "
+"compte que tots dos camps son sensibles a majúscules i minúscules."
-#: 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 "Si us plau, identifiquis de nou doncs la seva sessió ha expirat. No es preocupi, el seu enviament està emmagatzemat."
+#: 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 ""
+"Si us plau, identifiquis de nou doncs la seva sessió ha expirat. No es "
+"preocupi, el seu enviament està emmagatzemat."
-#: 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 "Sembla ser que el seu navegador no està configurat per acceptar 'cookies' (galetes). Si us plau, habiliti les 'cookies', recarregui aquesta pàgina i provi-ho de nou. "
+#: 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 ""
+"Sembla ser que el seu navegador no està configurat per acceptar "
+"'cookies' (galetes). Si us plau, habiliti les 'cookies', recarregui aquesta "
+"pàgina i provi-ho de nou. "
-#: contrib/admin/views/decorators.py:84
+#: contrib/admin/views/decorators.py:90
msgid "Usernames cannot contain the '@' character."
msgstr "Els noms d'usuari no poden contenir el caracter '@'."
-#: contrib/admin/views/decorators.py:86
+#: contrib/admin/views/decorators.py:92
#, python-format
msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "La seva adreça de correu no és el seu nom d'usuari. Provi '%s' en tot cas."
+msgstr ""
+"La seva adreça de correu no és el seu nom d'usuari. Provi '%s' en tot cas."
-#: contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
+#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
#: contrib/admin/views/doc.py:52
msgid "tag:"
msgstr "etiqueta:"
-#: contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
+#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81
#: contrib/admin/views/doc.py:83
msgid "filter:"
msgstr "filtre:"
-#: contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
+#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139
#: contrib/admin/views/doc.py:141
msgid "view:"
msgstr "vista:"
@@ -791,7 +858,7 @@ msgstr "vista:"
#: contrib/admin/views/doc.py:166
#, python-format
msgid "App %r not found"
-msgstr "La aplicació %r no s'ha pogut trobar"
+msgstr "No s'ha pogut trobar l'aplicació %r"
#: contrib/admin/views/doc.py:173
#, python-format
@@ -801,12 +868,10 @@ msgstr "El model %(name)r no s'ha trobat en la aplicació %(label)r"
#: contrib/admin/views/doc.py:185
#, python-format
msgid "the related `%(label)s.%(type)s` object"
-msgstr "el objecte relacionat `%(label)s.%(type)s`"
+msgstr "l'objecte relacionat `%(label)s.%(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/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 "model:"
@@ -830,12 +895,9 @@ msgstr "nombre de %s"
msgid "Fields on %s objects"
msgstr "Camps en objectes %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/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 "Enter"
@@ -843,8 +905,7 @@ msgstr "Enter"
msgid "Boolean (Either True or False)"
msgstr "Booleà (Verdader o Fals)"
-#: contrib/admin/views/doc.py:295
-#: contrib/admin/views/doc.py:314
+#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314
#, python-format
msgid "String (up to %(max_length)s)"
msgstr "Cadena (de fins a %(max_length)s)"
@@ -869,8 +930,7 @@ msgstr "Número decimal"
msgid "E-mail address"
msgstr "Adreça de correu electrònic"
-#: contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:302
+#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
#: contrib/admin/views/doc.py:305
msgid "File path"
msgstr "Ruta del fitxer"
@@ -879,8 +939,7 @@ msgstr "Ruta del fitxer"
msgid "Floating point number"
msgstr "Número amb punt de coma flotant"
-#: contrib/admin/views/doc.py:307
-#: contrib/comments/models.py:85
+#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89
msgid "IP address"
msgstr "Adreça IP"
@@ -904,8 +963,7 @@ msgstr "Texte"
msgid "Time"
msgstr "Hora"
-#: contrib/admin/views/doc.py:318
-#: contrib/flatpages/models.py:7
+#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:7
msgid "URL"
msgstr "URL"
@@ -915,7 +973,7 @@ msgstr "Estat dels E.U.A. (dos lletres majúscules)"
#: contrib/admin/views/doc.py:320
msgid "XML text"
-msgstr "Texte XML"
+msgstr "Text XML"
#: contrib/admin/views/doc.py:346
#, python-format
@@ -926,8 +984,7 @@ msgstr "%s no sembla ser un objecte 'urlpattern'"
msgid "Site administration"
msgstr "Lloc administratiu"
-#: contrib/admin/views/main.py:280
-#: contrib/admin/views/main.py:365
+#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365
#, python-format
msgid "You may add another %s below."
msgstr "Pot afegir un altre %s a baix."
@@ -942,10 +999,8 @@ msgstr "Afegir %s"
msgid "Added %s."
msgstr "Agregat %s."
-#: contrib/admin/views/main.py:344
-#: contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348
-#: core/validators.py:283
+#: 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"
@@ -967,12 +1022,14 @@ msgstr "Cap camp canviat."
#: contrib/admin/views/main.py:354
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "S'ha modificat amb èxist el/la %(name)s \"%(obj)s."
+msgstr "S'ha modificat exitosament el/la %(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 "S'ha agregat amb èxit el/la %(name)s \"%(obj)s\". Pot editar-lo de nou abaix."
+msgid ""
+"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr ""
+"S'ha agregat exitosament el/la %(name)s \"%(obj)s\". Pot editar-lo de nou abaix."
#: contrib/admin/views/main.py:400
#, python-format
@@ -996,7 +1053,7 @@ msgstr "El/la %(name)s \"%(obj)s\".ha estat eliminat amb èxit."
#: contrib/admin/views/main.py:527
msgid "Are you sure?"
-msgstr "Està segur?"
+msgstr "Esteu segurs?"
#: contrib/admin/views/main.py:549
#, python-format
@@ -1017,8 +1074,7 @@ msgstr "Seleccioni %s per modificar"
msgid "Database error"
msgstr "Error de/en la base de dades"
-#: contrib/auth/forms.py:17
-#: contrib/auth/forms.py:138
+#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
msgid "The two password fields didn't match."
msgstr "Els dos camps de contrasenya no coincideixen."
@@ -1027,16 +1083,24 @@ msgid "A user with that username already exists."
msgstr "Ja existeix un usuari amb aquest nom."
#: contrib/auth/forms.py:53
-msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
-msgstr "El seu navegador no sembla tenir les 'cookies' (galetes) activades. Aquestes són necessàries per iniciar la sessió."
+msgid ""
+"Your Web browser doesn't appear to have cookies enabled. Cookies are "
+"required for logging in."
+msgstr ""
+"El seu navegador no sembla tenir les 'cookies' (galetes) activades. Aquestes "
+"són necessàries per iniciar la sessió."
#: contrib/auth/forms.py:62
msgid "This account is inactive."
msgstr "Aquest compte està inactiu"
#: contrib/auth/forms.py:84
-msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?"
-msgstr "Aquesta adreça de correu no té associada cap compte d'usuari. Està segur de que s'ha registrat?"
+msgid ""
+"That e-mail address doesn't have an associated user account. Are you sure "
+"you've registered?"
+msgstr ""
+"Aquesta adreça de correu no té associada cap compte d'usuari. Està segur de "
+"que s'ha registrat?"
#: contrib/auth/forms.py:107
#, python-format
@@ -1049,10 +1113,10 @@ msgstr "Els dos camps de nova contrasenya no coincideixen."
#: contrib/auth/forms.py:124
msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "La seva antiga contrasenya no és correcte. Si el plau, introdueixi-la de nou."
+msgstr ""
+"La seva antiga contrasenya no és correcte. Si el plau, introdueixi-la de nou."
-#: contrib/auth/models.py:73
-#: contrib/auth/models.py:93
+#: contrib/auth/models.py:73 contrib/auth/models.py:93
msgid "name"
msgstr "nom"
@@ -1064,8 +1128,7 @@ msgstr "nom en clau"
msgid "permission"
msgstr "permís"
-#: contrib/auth/models.py:79
-#: contrib/auth/models.py:94
+#: contrib/auth/models.py:79 contrib/auth/models.py:94
msgid "permissions"
msgstr "permissos"
@@ -1073,8 +1136,7 @@ msgstr "permissos"
msgid "group"
msgstr "grup"
-#: contrib/auth/models.py:98
-#: contrib/auth/models.py:141
+#: contrib/auth/models.py:98 contrib/auth/models.py:141
msgid "groups"
msgstr "grups"
@@ -1083,8 +1145,12 @@ msgid "username"
msgstr "nom d'usuari"
#: contrib/auth/models.py:131
-msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
-msgstr "Requerit. 30 o menys caracters. Només caracters alfanumèrics (lletres, dígits i guions baixos)."
+msgid ""
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
+msgstr ""
+"Obligatori. 30 o menys caracters. Només caracters alfanumèrics (lletres, "
+"dígits i guions baixos)."
#: contrib/auth/models.py:132
msgid "first name"
@@ -1103,8 +1169,12 @@ msgid "password"
msgstr "contrasenya"
#: contrib/auth/models.py:135
-msgid "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."
-msgstr "Utilitzi '[algo]$[salt]$[hexdigest]' o el <a href=\"password/\">formulari de canvi de contrasenya</a>."
+msgid ""
+"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
+"password form</a>."
+msgstr ""
+"Utilitzi '[algo]$[salt]$[hexdigest]' o el <a href=\"password/\">formulari de "
+"canvi de contrasenya</a>."
#: contrib/auth/models.py:136
msgid "staff status"
@@ -1119,16 +1189,24 @@ msgid "active"
msgstr "actiu"
#: contrib/auth/models.py:137
-msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts."
-msgstr "Designa si aquest usuari pot iniciar sessió a la interfície administrativa Djano. Deselecciona-ho enlloc de esborrar comptes d'usuari."
+msgid ""
+"Designates whether this user can log into the Django admin. Unselect this "
+"instead of deleting accounts."
+msgstr ""
+"Designa si aquest usuari pot iniciar sessió a la interfície administrativa "
+"Djano. Deseleccioni-ho enlloc d'esborrar comptes d'usuari."
#: contrib/auth/models.py:138
msgid "superuser status"
msgstr "estat de superusuari"
#: contrib/auth/models.py:138
-msgid "Designates that this user has all permissions without explicitly assigning them."
-msgstr "Designa que aquest usuari té tots els permisos sense assignar-los explícitament."
+msgid ""
+"Designates that this user has all permissions without explicitly assigning "
+"them."
+msgstr ""
+"Designa que aquest usuari té tots els permissos sense assignar-los "
+"explícitament."
#: contrib/auth/models.py:139
msgid "last login"
@@ -1139,8 +1217,12 @@ msgid "date joined"
msgstr "data de creació"
#: 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 "Junt amb els permissos asignats manualment, aquest usuari tindrà, també, els permissos dels grups dels que sigui membre."
+msgid ""
+"In addition to the permissions manually assigned, this user will also get "
+"all permissions granted to each group he/she is in."
+msgstr ""
+"Junt amb els permissos asignats manualment, aquest usuari tindrà, també, els "
+"permissos dels grups dels que sigui membre."
#: contrib/auth/models.py:143
msgid "user permissions"
@@ -1156,7 +1238,7 @@ msgstr "usuaris"
#: contrib/auth/models.py:154
msgid "Personal info"
-msgstr "Informaciò personal"
+msgstr "Informació personal"
#: contrib/auth/models.py:155
msgid "Permissions"
@@ -1178,85 +1260,84 @@ msgstr "missatge"
msgid "Logged out"
msgstr "Sessió finalitzada"
-#: contrib/comments/models.py:67
-#: contrib/comments/models.py:169
+#: contrib/comments/models.py:71 contrib/comments/models.py:176
msgid "object ID"
msgstr "ID de l'objecte"
-#: contrib/comments/models.py:68
+#: contrib/comments/models.py:72
msgid "headline"
msgstr "encapçalament"
-#: 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 "comentari"
-#: contrib/comments/models.py:70
+#: contrib/comments/models.py:74
msgid "rating #1"
msgstr "qualificació #1"
-#: contrib/comments/models.py:71
+#: contrib/comments/models.py:75
msgid "rating #2"
msgstr "qualificació #2"
-#: contrib/comments/models.py:72
+#: contrib/comments/models.py:76
msgid "rating #3"
msgstr "qualificació #3"
-#: contrib/comments/models.py:73
+#: contrib/comments/models.py:77
msgid "rating #4"
msgstr "qualificació #4"
-#: contrib/comments/models.py:74
+#: contrib/comments/models.py:78
msgid "rating #5"
msgstr "qualificació #5"
-#: contrib/comments/models.py:75
+#: contrib/comments/models.py:79
msgid "rating #6"
msgstr "qualificació #6"
-#: contrib/comments/models.py:76
+#: contrib/comments/models.py:80
msgid "rating #7"
msgstr "qualificació #7"
-#: contrib/comments/models.py:77
+#: contrib/comments/models.py:81
msgid "rating #8"
msgstr "qualificació #8"
-#: contrib/comments/models.py:82
+#: contrib/comments/models.py:86
msgid "is valid rating"
msgstr "és qualificació vàlida"
-#: 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 "data/hora d'enviament"
-#: contrib/comments/models.py:84
-#: contrib/comments/models.py:173
+#: contrib/comments/models.py:88 contrib/comments/models.py:180
msgid "is public"
msgstr "és públic"
-#: contrib/comments/models.py:86
+#: contrib/comments/models.py:90
msgid "is removed"
msgstr "està eliminat"
-#: 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 "Marqui aquesta caixa si el comentari no és apropiat. En lloc seu es mostrarà \"Aquest comentari ha estat eliminat\" "
+#: 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 ""
+"Marqui aquesta caixa si el comentari no és apropiat. En lloc seu es mostrarà "
+"\"Aquest comentari ha estat eliminat\" "
-#: contrib/comments/models.py:91
+#: contrib/comments/models.py:96
msgid "comments"
msgstr "comentaris"
-#: contrib/comments/models.py:134
-#: contrib/comments/models.py:213
+#: contrib/comments/models.py:140 contrib/comments/models.py:222
msgid "Content object"
msgstr "Objecte Contingut"
-#: contrib/comments/models.py:162
+#: contrib/comments/models.py:168
#, python-format
msgid ""
"Posted by %(user)s at %(date)s\n"
@@ -1271,48 +1352,48 @@ msgstr ""
"\n"
"http://%(domain)s%(url)s"
-#: contrib/comments/models.py:171
+#: contrib/comments/models.py:178
msgid "person's name"
msgstr "nom de la persona"
-#: contrib/comments/models.py:174
+#: contrib/comments/models.py:181
msgid "ip address"
msgstr "adreça ip"
-#: contrib/comments/models.py:176
+#: contrib/comments/models.py:183
msgid "approved by staff"
msgstr "aprovat per el \"staff\""
-#: contrib/comments/models.py:179
+#: contrib/comments/models.py:187
msgid "free comment"
msgstr "comentari lliure"
-#: contrib/comments/models.py:180
+#: contrib/comments/models.py:188
msgid "free comments"
msgstr "comentaris lliures"
-#: contrib/comments/models.py:239
+#: contrib/comments/models.py:250
msgid "score"
msgstr "puntuació"
-#: contrib/comments/models.py:240
+#: contrib/comments/models.py:251
msgid "score date"
msgstr "data de la puntuació"
-#: contrib/comments/models.py:243
+#: contrib/comments/models.py:255
msgid "karma score"
msgstr "puntuació de karma"
-#: contrib/comments/models.py:244
+#: contrib/comments/models.py:256
msgid "karma scores"
msgstr "punts de karma"
-#: contrib/comments/models.py:248
+#: contrib/comments/models.py:260
#, python-format
msgid "%(score)d rating by %(user)s"
msgstr "%(score)d punt/s per %(user)s"
-#: contrib/comments/models.py:264
+#: contrib/comments/models.py:277
#, python-format
msgid ""
"This comment was flagged by %(user)s:\n"
@@ -1323,36 +1404,36 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/models.py:271
+#: contrib/comments/models.py:285
msgid "flag date"
msgstr "data de la marca"
-#: contrib/comments/models.py:274
+#: contrib/comments/models.py:289
msgid "user flag"
msgstr "marca d'usuari"
-#: contrib/comments/models.py:275
+#: contrib/comments/models.py:290
msgid "user flags"
msgstr "marques d'usuari"
-#: contrib/comments/models.py:279
+#: contrib/comments/models.py:294
#, python-format
msgid "Flag by %r"
msgstr "Marca de %r"
-#: contrib/comments/models.py:284
+#: contrib/comments/models.py:300
msgid "deletion date"
msgstr "data d'eliminació"
-#: contrib/comments/models.py:286
+#: contrib/comments/models.py:303
msgid "moderator deletion"
msgstr "eliminació del moderador"
-#: contrib/comments/models.py:287
+#: contrib/comments/models.py:304
msgid "moderator deletions"
msgstr "eliminacions del moderador"
-#: contrib/comments/models.py:291
+#: contrib/comments/models.py:308
#, python-format
msgid "Moderator deletion by %r"
msgstr "eliminació del moderador per %r"
@@ -1368,7 +1449,7 @@ msgstr "Qualificacions"
#: contrib/comments/templates/comments/form.html:12
#: contrib/comments/templates/comments/form.html:23
msgid "Required"
-msgstr "Requerit"
+msgstr "Obligatori"
#: contrib/comments/templates/comments/form.html:12
#: contrib/comments/templates/comments/form.html:23
@@ -1394,25 +1475,30 @@ msgid "Your name:"
msgstr "El seu nom:"
#: contrib/comments/views/comments.py:28
-msgid "This rating is required because you've entered at least one other rating."
+msgid ""
+"This rating is required because you've entered at least one other rating."
msgstr "Es precisa aquesta puntuació perquè has introduït almenys un altre."
#: contrib/comments/views/comments.py:112
#, python-format
msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
+"This comment was posted by a user who has posted fewer than %(count)s "
+"comment:\n"
"\n"
"%(text)s"
msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s comments:\n"
+"This comment was posted by a user who has posted fewer than %(count)s "
+"comments:\n"
"\n"
"%(text)s"
msgstr[0] ""
-"Aquest comentari ha estat publicat per un usuari que ha publicat menys de %(count)s comentari:\n"
+"Aquest comentari va ser enviat per un usuari que ha enviat menys de %"
+"(count)s comentari:\n"
"\n"
"%(text)s"
msgstr[1] ""
-"Aquest comentari ha estat publicat per un usuari que ha publicat menys de %(count)s comentaris:\n"
+"Aquest comentari va ser enviat per un usuari que ha enviat menys de %"
+"(count)s comentaris:\n"
"\n"
"%(text)s"
@@ -1430,27 +1516,33 @@ msgstr ""
#: contrib/comments/views/comments.py:190
#: contrib/comments/views/comments.py:283
msgid "Only POSTs are allowed"
-msgstr "Només s'admed POST"
+msgstr "Només s'admet POST"
#: contrib/comments/views/comments.py:194
#: contrib/comments/views/comments.py:287
msgid "One or more of the required fields wasn't submitted"
-msgstr "Un o més dels caps requerits no ha estat sotmès"
+msgstr "Un o més dels caps obligatoris no ha estat sotmès"
#: contrib/comments/views/comments.py:198
#: contrib/comments/views/comments.py:289
msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Algú està jugant amb el formulari de comentaris (violació de seguretat)"
+msgstr ""
+"Algú està jugant amb el formulari de comentaris (violació de seguretat)"
#: 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 formulari de comentaris tenia un paràmetre 'target' invàlid -- el ID del objecte era invàlid"
+msgid ""
+"The comment form had an invalid 'target' parameter -- the object ID was "
+"invalid"
+msgstr ""
+"El formulari de comentaris tenia un paràmetre 'target' invàlid -- el ID del "
+"objecte era invàlid"
#: contrib/comments/views/comments.py:259
#: contrib/comments/views/comments.py:324
msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "El formulari del comentari no ha proveït ni 'previsualitzar' ni 'enviar'"
+msgstr ""
+"El formulari del comentari no ha proveït ni 'previsualitzar' ni 'enviar'"
#: contrib/comments/views/karma.py:21
msgid "Anonymous users cannot vote"
@@ -1464,25 +1556,28 @@ msgstr "ID del comentari invàlid"
msgid "No voting for yourself"
msgstr "No pots votar-te a tu mateix"
-#: contrib/contenttypes/models.py:37
+#: contrib/contenttypes/models.py:67
msgid "python model class name"
msgstr "nom de la classe del model en python"
-#: contrib/contenttypes/models.py:40
+#: contrib/contenttypes/models.py:71
msgid "content type"
msgstr "tipus de contingut"
-#: contrib/contenttypes/models.py:41
+#: contrib/contenttypes/models.py:72
msgid "content types"
msgstr "tipus de continguts"
#: contrib/flatpages/models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Exemple: '/about/contact/'. Asseguri's de posar les barres al principi i al final."
+msgid ""
+"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgstr ""
+"Exemple: '/about/contact/'. Asseguri's de posar les barres al principi i al "
+"final."
#: contrib/flatpages/models.py:9
msgid "title"
-msgstr "tìtol"
+msgstr "títol"
#: contrib/flatpages/models.py:10
msgid "content"
@@ -1497,12 +1592,16 @@ msgid "template name"
msgstr "nom de la plantilla"
#: contrib/flatpages/models.py:13
-msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."
-msgstr "Exemple: 'flatpages/contact_page.html'. Si no el proporciona, el sistema utilitzarà 'flatpages/defaula.htmlt'."
+msgid ""
+"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
+"will use 'flatpages/default.html'."
+msgstr ""
+"Exemple: 'flatpages/contact_page.html'. Si no es proporciona, el sistema "
+"utilitzarà 'flatpages/default.htmlt'."
#: contrib/flatpages/models.py:14
msgid "registration required"
-msgstr "s'ha de estar registrat"
+msgstr "cal estar registrat"
#: contrib/flatpages/models.py:14
msgid "If this is checked, only logged-in users will be able to view the page."
@@ -1516,112 +1615,111 @@ msgstr "pàgina estàtica"
msgid "flat pages"
msgstr "pàgines estàtiques"
-#: contrib/humanize/templatetags/humanize.py:20
+#: contrib/humanize/templatetags/humanize.py:19
msgid "th"
msgstr "rt"
-#: contrib/humanize/templatetags/humanize.py:20
+#: contrib/humanize/templatetags/humanize.py:19
msgid "st"
msgstr "r"
-#: contrib/humanize/templatetags/humanize.py:20
+#: contrib/humanize/templatetags/humanize.py:19
msgid "nd"
msgstr "n"
-#: contrib/humanize/templatetags/humanize.py:20
+#: contrib/humanize/templatetags/humanize.py:19
msgid "rd"
msgstr "r"
-#: 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 milió"
msgstr[1] "%(value).1f milions"
-#: 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 bilió"
msgstr[1] "%(value).1f bilions"
-#: 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 trilió"
msgstr[1] "%(value).1f trilions"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "one"
msgstr "un"
-#: 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 "cuatre"
+msgstr "quatre"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "five"
msgstr "cinc"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "six"
msgstr "sis"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "seven"
msgstr "set"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "eight"
msgstr "vuit"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "nine"
msgstr "nou"
-#: contrib/humanize/templatetags/humanize.py:94
+#: contrib/humanize/templatetags/humanize.py:93
msgid "today"
msgstr "avui"
-#: contrib/humanize/templatetags/humanize.py:96
+#: contrib/humanize/templatetags/humanize.py:95
msgid "tomorrow"
msgstr "demà"
-#: contrib/humanize/templatetags/humanize.py:98
+#: contrib/humanize/templatetags/humanize.py:97
msgid "yesterday"
msgstr "ahir"
-#: contrib/localflavor/ar/forms.py:28
+#: contrib/localflavor/ar/forms.py:27
msgid "Enter a postal code in the format NNNN or ANNNNAAA."
msgstr "Introdueixi un codi postal en el format NNNN o ANNNNAAA."
-#: contrib/localflavor/ar/forms.py:50
-#: 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 "Aquest camps requereix només números."
+msgstr "Aquest camp precisa només números."
-#: contrib/localflavor/ar/forms.py:51
+#: contrib/localflavor/ar/forms.py:50
msgid "This field requires 7 or 8 digits."
-msgstr "Aquest camp requereix 7 o 8 dígits."
+msgstr "Aquest camp precisa 7 o 8 dígits."
-#: 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 "Introdueixi un número CUIT vàlid en el format XX-XXXXXXXX-X o XXXXXXXXXXXX."
+msgstr ""
+"Introdueixi un número CUIT vàlid en el format XX-XXXXXXXX-X o XXXXXXXXXXXX."
-#: contrib/localflavor/ar/forms.py:81
+#: contrib/localflavor/ar/forms.py:80
msgid "Invalid CUIT."
msgstr "Invàlid CUIT."
@@ -1635,11 +1733,15 @@ msgstr "Introdueixi un codi zip en el format XXXXX-XXX."
#: contrib/localflavor/br/forms.py:30
msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "El número de telèfon ha de ser en el format XX-XXXX-XXXX."
+msgstr "El número de telèfon ha de estar en el format XX-XXXX-XXXX."
#: contrib/localflavor/br/forms.py:58
-msgid "Select a valid brazilian state. That state is not one of the available states."
-msgstr "Seleccioni un estat brasiler vàlid. Aquest estat no és un dels estats disponibles."
+msgid ""
+"Select a valid brazilian state. That state is not one of the available "
+"states."
+msgstr ""
+"Seleccioni un estat brasiler vàlid. Aquest estat no és un dels estats "
+"disponibles."
#: contrib/localflavor/br/forms.py:94
msgid "Invalid CPF number."
@@ -1647,7 +1749,7 @@ msgstr "Número CPF invàlid."
#: contrib/localflavor/br/forms.py:95
msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Aquest camp requereix com a màxim 11 dígits o 14 caracters."
+msgstr "Aquest camp precisa com a màxim 11 dígits o 14 caracters."
#: contrib/localflavor/br/forms.py:134
msgid "Invalid CNPJ number."
@@ -1655,15 +1757,17 @@ msgstr "Número CNPJ invàlid."
#: contrib/localflavor/br/forms.py:136
msgid "This field requires at least 14 digits"
-msgstr "Aquest camp requereix almenys 14 dígits."
+msgstr "Aquest camp precisa almenys 14 dígits."
#: contrib/localflavor/ca/forms.py:17
msgid "Enter a postal code in the format XXX XXX."
msgstr "Introdueixi un codi postal en el format XXX XXX."
#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXXX format."
-msgstr "Introdueixi un número vàlid de la Seguretat Social de Canadà en el format XXX-XXX-XXXX."
+msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
+msgstr ""
+"Introdueixi un número vàlid de la Assegurança Social de Canadà en el format "
+"XXX-XXX-XXX."
#: contrib/localflavor/ch/ch_states.py:5
msgid "Aargau"
@@ -1671,31 +1775,31 @@ msgstr "Argau"
#: contrib/localflavor/ch/ch_states.py:6
msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
+msgstr "Appenzell Inner-Rhoden"
#: contrib/localflavor/ch/ch_states.py:7
msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
+msgstr "Appenzell Ausser-Rhoden"
#: contrib/localflavor/ch/ch_states.py:8
msgid "Basel-Stadt"
-msgstr "Basel-Stadt"
+msgstr "Basel-Ciutat"
#: contrib/localflavor/ch/ch_states.py:9
msgid "Basel-Land"
-msgstr "Basel-Land"
+msgstr "Basel-Camp"
#: contrib/localflavor/ch/ch_states.py:10
msgid "Berne"
-msgstr "Berne"
+msgstr "Berna"
#: contrib/localflavor/ch/ch_states.py:11
msgid "Fribourg"
-msgstr "Fribourg"
+msgstr "Friburg"
#: contrib/localflavor/ch/ch_states.py:12
msgid "Geneva"
-msgstr "Geneva"
+msgstr "Ginebra"
#: contrib/localflavor/ch/ch_states.py:13
msgid "Glarus"
@@ -1711,7 +1815,7 @@ msgstr "Jura"
#: contrib/localflavor/ch/ch_states.py:16
msgid "Lucerne"
-msgstr "Lucerne"
+msgstr "Lucerna"
#: contrib/localflavor/ch/ch_states.py:17
msgid "Neuchatel"
@@ -1767,16 +1871,19 @@ msgstr "Zug"
#: contrib/localflavor/ch/ch_states.py:30
msgid "Zurich"
-msgstr "Zurich"
+msgstr "Zuric"
-#: 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 "Introdueixi un codi zip en el format XXXX."
#: contrib/localflavor/ch/forms.py:64
-msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format."
-msgstr "Introdueixi un número de identificació o de passaport Suïssos en els formats 1234567890 o X1234567<0."
+msgid ""
+"Enter a valid Swiss identity or passport card number in X1234567<0 or "
+"1234567890 format."
+msgstr ""
+"Introdueixi un número d'identificació o de passaport Suïssos en els formats "
+"1234567890 o X1234567<0."
#: contrib/localflavor/cl/forms.py:29
msgid "Enter a valid Chilean RUT."
@@ -1792,15 +1899,15 @@ msgstr "El RUT Xilè no és vàlid."
#: contrib/localflavor/de/de_states.py:5
msgid "Baden-Wuerttemberg"
-msgstr "Baden-Wuerttemberg"
+msgstr "Baden-Württemberg"
#: contrib/localflavor/de/de_states.py:6
msgid "Bavaria"
-msgstr "Bavaria"
+msgstr "Baviera"
#: contrib/localflavor/de/de_states.py:7
msgid "Berlin"
-msgstr "Berlin"
+msgstr "Berlín"
#: contrib/localflavor/de/de_states.py:8
msgid "Brandenburg"
@@ -1820,19 +1927,19 @@ msgstr "Hessen"
#: contrib/localflavor/de/de_states.py:12
msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklenburg-Western Pomerania"
+msgstr "Mecklenburg-Pomerània Occidental"
#: contrib/localflavor/de/de_states.py:13
msgid "Lower Saxony"
-msgstr "Lower Saxony"
+msgstr "Baixa Saxònia"
#: contrib/localflavor/de/de_states.py:14
msgid "North Rhine-Westphalia"
-msgstr "North Rhine-Westphalia"
+msgstr "Renània del Nord-Westfàlia"
#: contrib/localflavor/de/de_states.py:15
msgid "Rhineland-Palatinate"
-msgstr "Rhineland-Palatinate"
+msgstr "Renània-Palatinat"
#: contrib/localflavor/de/de_states.py:16
msgid "Saarland"
@@ -1840,29 +1947,32 @@ msgstr "Saarland"
#: contrib/localflavor/de/de_states.py:17
msgid "Saxony"
-msgstr "Saxony"
+msgstr "Saxònia"
#: contrib/localflavor/de/de_states.py:18
msgid "Saxony-Anhalt"
-msgstr "Saxony-Anhalt"
+msgstr "Saxònia-Anhalt"
#: contrib/localflavor/de/de_states.py:19
msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
+msgstr "Slesvig-Holstein"
#: contrib/localflavor/de/de_states.py:20
msgid "Thuringia"
-msgstr "Thuringia"
+msgstr "Turíngia"
-#: 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 "Introdueixi un codi zip en el format XXXXX."
#: contrib/localflavor/de/forms.py:41
-msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format."
-msgstr "Introdueixi un número de tarjeta d'identificació alemany vàlid en el format XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
+msgid ""
+"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
+"format."
+msgstr ""
+"Introdueixi un número de tarjeta d'identificació alemany vàlid en el format "
+"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
#: contrib/localflavor/es/es_provinces.py:5
msgid "Arava"
@@ -2136,8 +2246,12 @@ msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
msgstr "Introdueixi un codi postal en rang i format 01XXX - 52XXX."
#: contrib/localflavor/es/forms.py:39
-msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX."
-msgstr "Introdueixi un número de telèfon vàlid en un dels formats 6XXXXXXXX, 8XXXXXXXX o 9XXXXXXXX."
+msgid ""
+"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
+"9XXXXXXXX."
+msgstr ""
+"Introdueixi un número de telèfon vàlid en un dels formats 6XXXXXXXX, "
+"8XXXXXXXX o 9XXXXXXXX."
#: contrib/localflavor/es/forms.py:66
msgid "Please enter a valid NIF, NIE, or CIF."
@@ -2160,8 +2274,11 @@ msgid "Invalid checksum for CIF."
msgstr "Validació invàlida del CIF."
#: contrib/localflavor/es/forms.py:142
-msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr "Introdueixi un número de compte bancari vàlid en el format XXXX-XXXX-XX-XXXXXXXXXX."
+msgid ""
+"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
+msgstr ""
+"Introdueixi un número de compte bancari vàlid en el format XXXX-XXXX-XX-"
+"XXXXXXXXXX."
#: contrib/localflavor/es/forms.py:143
msgid "Invalid checksum for bank account number."
@@ -2176,8 +2293,10 @@ msgid "Enter a zip code in the format XXXXXXX."
msgstr "Introdueixi un codi zip en el format XXXXXXX."
#: contrib/localflavor/is_/forms.py:17
-msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Introdueixi un número de identificació d'Islàndia. El format és XXXXXX-XXXX."
+msgid ""
+"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
+msgstr ""
+"Introdueixi un número de identificació d'Islàndia. El format és XXXXXX-XXXX."
#: contrib/localflavor/is_/forms.py:18
msgid "The Icelandic identification number is not valid."
@@ -2195,7 +2314,7 @@ msgstr "Introdueixi un número valid de la Seguretat Social."
msgid "Enter a valid VAT number."
msgstr "Introdueixi un número de IVA (VAT) vàlid."
-#: 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 "Introdueixi un codi postal en el format XXXXXXX o XX-XXXX."
@@ -2393,11 +2512,11 @@ msgstr "Aguascalientes"
#: contrib/localflavor/mx/mx_states.py:13
msgid "Baja California"
-msgstr "Baja California"
+msgstr "Baixa California"
#: contrib/localflavor/mx/mx_states.py:14
msgid "Baja California Sur"
-msgstr "Baja California Sur"
+msgstr "Baixa California Sud"
#: contrib/localflavor/mx/mx_states.py:15
msgid "Campeche"
@@ -2421,7 +2540,7 @@ msgstr "Colima"
#: contrib/localflavor/mx/mx_states.py:20
msgid "Distrito Federal"
-msgstr "Distrito Federal"
+msgstr "Districte Federal"
#: contrib/localflavor/mx/mx_states.py:21
msgid "Durango"
@@ -2445,7 +2564,7 @@ msgstr "Jalisco"
#: contrib/localflavor/mx/mx_states.py:26
msgid "Estado de México"
-msgstr "Estado de México"
+msgstr "Estat de Mèxic"
#: contrib/localflavor/mx/mx_states.py:27
msgid "Michoacán"
@@ -2517,15 +2636,15 @@ msgstr "Zacatecas"
#: contrib/localflavor/nl/forms.py:21
msgid "Enter a valid postal code"
-msgstr "Introdueixi un codi postal vàlid."
+msgstr "Introduïu un codi postal vàlid."
#: contrib/localflavor/nl/forms.py:52
msgid "Enter a valid phone number"
-msgstr "Introdueixi un número de telèfon vàlid."
+msgstr "Introduïu un número de telèfon vàlid."
#: contrib/localflavor/nl/forms.py:78
msgid "Enter a valid SoFi number"
-msgstr "Introdueixi un número SoFi vàlid."
+msgstr "Introduïu un número SoFi vàlid."
#: contrib/localflavor/nl/nl_provinces.py:4
msgid "Drente"
@@ -2577,15 +2696,15 @@ msgstr "Zuid-Holland"
#: contrib/localflavor/no/forms.py:33
msgid "Enter a valid Norwegian social security number."
-msgstr "Introdueixi un número de la seguretat social Noruega vàlid."
+msgstr "Introduïu un número de la seguretat social Noruega vàlid."
#: contrib/localflavor/pe/forms.py:24
msgid "This field requires 8 digits."
-msgstr "Aquest camp requereix 8 dígits."
+msgstr "Aquest camp precisa 8 dígits."
#: contrib/localflavor/pe/forms.py:52
msgid "This field requires 11 digits."
-msgstr "Aquest camp requereix 11 dígits."
+msgstr "Aquest camp precisa 11 dígits."
#: contrib/localflavor/pl/forms.py:39
msgid "National Identification Number consists of 11 digits."
@@ -2596,7 +2715,8 @@ msgid "Wrong checksum for the National Identification Number."
msgstr "Validació invàlida del número d'identificació nacional."
#: 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 "Introdueixi un número NIP en el format XXX-XXX-XX-XX o XX-XX-XXX-XXX."
#: contrib/localflavor/pl/forms.py:73
@@ -2605,7 +2725,8 @@ msgstr "Validació invàlida del número tributari (NIP)."
#: contrib/localflavor/pl/forms.py:112
msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr "El número nacional de registre de negocis (REGON) consisteix en 7 o 9 dígits."
+msgstr ""
+"El número nacional de registre de negocis (REGON) consisteix en 7 o 9 dígits."
#: contrib/localflavor/pl/forms.py:113
msgid "Wrong checksum for the National Business Register Number (REGON)."
@@ -2613,7 +2734,7 @@ msgstr "Validació invàlida del número nacional de registre de negocis."
#: contrib/localflavor/pl/forms.py:156
msgid "Enter a postal code in the format XX-XXX."
-msgstr "Introdueixi un codi postal en el format XX-XXX."
+msgstr "Introduïu un codi postal en el format XX-XXX."
#: contrib/localflavor/pl/pl_voivodeships.py:8
msgid "Lower Silesia"
@@ -2681,7 +2802,7 @@ msgstr "West Pomerania"
#: contrib/localflavor/sk/forms.py:30
msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Introdueixi un codi postal en el format XXXXX or XXX XX."
+msgstr "Introduïu un codi postal en el format XXXXX or XXX XX."
#: contrib/localflavor/sk/sk_districts.py:8
msgid "Banska Bystrica"
@@ -3033,7 +3154,7 @@ msgstr "Regió de Zilina"
#: contrib/localflavor/uk/forms.py:21
msgid "Enter a valid postcode."
-msgstr "Introdueixi un codi postal vàlid."
+msgstr "Introdueix un codi postal vàlid."
#: contrib/localflavor/uk/uk_regions.py:11
msgid "Bedfordshire"
@@ -3204,10 +3325,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 "Comptat de Fermanagh"
+
#: contrib/localflavor/uk/uk_regions.py:59
msgid "County Londonderry"
msgstr "County Londonderry"
@@ -3242,11 +3366,11 @@ msgstr "Powys"
#: contrib/localflavor/uk/uk_regions.py:70
msgid "South Glamorgan"
-msgstr "South Glamorgan"
+msgstr "Glamorgan Sud"
#: contrib/localflavor/uk/uk_regions.py:71
msgid "West Glamorgan"
-msgstr "West Glamorgan"
+msgstr "Glamorgan Oest"
#: contrib/localflavor/uk/uk_regions.py:75
msgid "Borders"
@@ -3254,7 +3378,7 @@ msgstr "Borders"
#: contrib/localflavor/uk/uk_regions.py:76
msgid "Central Scotland"
-msgstr "Central Scotland"
+msgstr "Escòcia central"
#: contrib/localflavor/uk/uk_regions.py:77
msgid "Dumfries and Galloway"
@@ -3298,19 +3422,19 @@ msgstr "Western Isles"
#: contrib/localflavor/uk/uk_regions.py:90
msgid "England"
-msgstr "England"
+msgstr "Anglaterra"
#: contrib/localflavor/uk/uk_regions.py:91
msgid "Northern Ireland"
-msgstr "Northern Ireland"
+msgstr "Irlanda del Nord"
#: contrib/localflavor/uk/uk_regions.py:92
msgid "Scotland"
-msgstr "Scotland"
+msgstr "Escòcia"
#: contrib/localflavor/uk/uk_regions.py:93
msgid "Wales"
-msgstr "Wales"
+msgstr "Gal·les"
#: contrib/localflavor/us/forms.py:16
msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
@@ -3318,7 +3442,9 @@ msgstr "Introdueixi un codi zip en el format XXXXX o XXXXX-XXXX."
#: contrib/localflavor/us/forms.py:54
msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Introdueixi un número vàlid de la Seguretat Social dels E.U.A. en el format XXX-XX-XXXX."
+msgstr ""
+"Introdueixi un número vàlid de la Seguretat Social dels E.U.A. en el format "
+"XXX-XX-XXXX."
#: contrib/localflavor/za/forms.py:20
msgid "Enter a valid South African ID number"
@@ -3330,11 +3456,11 @@ msgstr "Introdueixi un codi postal Sud Africà vàlid."
#: contrib/localflavor/za/za_provinces.py:4
msgid "Eastern Cape"
-msgstr "Eastern Cape"
+msgstr "Cap Oriental"
#: contrib/localflavor/za/za_provinces.py:5
msgid "Free State"
-msgstr "Free State"
+msgstr "Estat lliure"
#: contrib/localflavor/za/za_provinces.py:6
msgid "Gauteng"
@@ -3354,31 +3480,39 @@ msgstr "Mpumalanga"
#: contrib/localflavor/za/za_provinces.py:10
msgid "Northern Cape"
-msgstr "Northern Cape"
+msgstr "Cap Nord"
#: contrib/localflavor/za/za_provinces.py:11
msgid "North West"
-msgstr "North West"
+msgstr "Cap Oest"
#: contrib/localflavor/za/za_provinces.py:12
msgid "Western Cape"
-msgstr "Western Cape"
+msgstr "Cap Occidental"
#: contrib/redirects/models.py:7
msgid "redirect from"
msgstr "redreçar des de"
#: contrib/redirects/models.py:8
-msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
-msgstr "Aquesta ruta hauria de ser el camí absolut, excloent-ne el nom del domini. Exemple '/events/search/'."
+msgid ""
+"This should be an absolute path, excluding the domain name. Example: '/"
+"events/search/'."
+msgstr ""
+"Aquesta ruta hauria de ser el camí absolut, excloent-ne el nom del domini. "
+"Exemple '/events/search/'."
#: contrib/redirects/models.py:9
msgid "redirect to"
msgstr "redreçar a"
#: contrib/redirects/models.py:10
-msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
-msgstr "Això pot ser bé una ruta absoluta (com abans) o una URL completa que comenci per http:// ."
+msgid ""
+"This can be either an absolute path (as above) or a full URL starting with "
+"'http://'."
+msgstr ""
+"Això pot ser bé una ruta absoluta (com adalt) o una URL completa que comenci "
+"per http:// ."
#: contrib/redirects/models.py:13
msgid "redirect"
@@ -3388,23 +3522,23 @@ msgstr "redreçament"
msgid "redirects"
msgstr "redreçaments"
-#: contrib/sessions/models.py:46
+#: contrib/sessions/models.py:41
msgid "session key"
msgstr "clau de la sessió"
-#: contrib/sessions/models.py:47
+#: contrib/sessions/models.py:42
msgid "session data"
msgstr "dades de la sessió"
-#: contrib/sessions/models.py:48
+#: contrib/sessions/models.py:43
msgid "expire date"
msgstr "data de caducitat"
-#: contrib/sessions/models.py:53
+#: contrib/sessions/models.py:48
msgid "session"
msgstr "sessió"
-#: contrib/sessions/models.py:54
+#: contrib/sessions/models.py:49
msgid "sessions"
msgstr "sessions"
@@ -3426,15 +3560,20 @@ msgstr "llocs"
#: core/validators.py:72
msgid "This value must contain only letters, numbers and underscores."
-msgstr "Aquest valor ha de contenir només números, guions, i guions baixos."
+msgstr "Aquest valor ha de contenir només lletres, números i guions baixos."
#: core/validators.py:76
-msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
-msgstr "Aquest valor ha de contenir només lletres, números, guions, guions baixos, i barres (/)."
+msgid ""
+"This value must contain only letters, numbers, underscores, dashes or "
+"slashes."
+msgstr ""
+"Aquest valor ha de contenir només lletres, números, guions baixos, guions i "
+"barres (/)."
#: core/validators.py:80
msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Aquest valor ha de contenir només lletres, números, guions o guions baixos"
+msgstr ""
+"Aquest valor ha de contenir només lletres, números, guions o guions baixos"
#: core/validators.py:84
msgid "Uppercase letters are not allowed here."
@@ -3454,7 +3593,7 @@ msgstr "Introdueixi adreces de correu electrònic vàlides separades per comes."
#: core/validators.py:111
msgid "Please enter a valid IP address."
-msgstr "Per favor introdueixi una adreça IP vàlida."
+msgstr "Si el plau, introdueixi una adreça IP vàlida."
#: core/validators.py:115
msgid "Empty values are not allowed here."
@@ -3468,14 +3607,13 @@ msgstr "No s'admeten caracters no numèrics."
msgid "This value can't be comprised solely of digits."
msgstr "Aquest valor no pot contenir només dígits."
-#: core/validators.py:128
-#: newforms/fields.py:151
+#: core/validators.py:128 newforms/fields.py:152
msgid "Enter a whole number."
msgstr "Introdueixi un número sencer."
#: core/validators.py:132
msgid "Only alphabetical characters are allowed here."
-msgstr "Només s'admeted caracters alfabètics aquí."
+msgstr "Només s'admeten caracters alfabètics aquí."
#: core/validators.py:147
msgid "Year must be 1900 or later."
@@ -3486,8 +3624,7 @@ msgstr "L'any ha de ser posterior al 1900"
msgid "Invalid date: %s"
msgstr "Data invàlida: %s"
-#: core/validators.py:156
-#: db/models/fields/__init__.py:509
+#: core/validators.py:156 db/models/fields/__init__.py:527
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Introdueixi una data vàlida en el forma AAAA-MM-DD."
@@ -3495,27 +3632,27 @@ msgstr "Introdueixi una data vàlida en el forma AAAA-MM-DD."
msgid "Enter a valid time in HH:MM format."
msgstr "Introdueixi una hora vàlida en el format HH:MM."
-#: core/validators.py:165
-#: db/models/fields/__init__.py:583
+#: core/validators.py:165 db/models/fields/__init__.py:604
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Introdueixi un data/hora vàlida en format YYYY-MM-DD HH:MM."
-#: core/validators.py:170
-#: newforms/fields.py:402
+#: core/validators.py:170 newforms/fields.py:403
msgid "Enter a valid e-mail address."
msgstr "Introdueixi una adreça de correu vàlida."
-#: core/validators.py:182
-#: core/validators.py:474
-#: newforms/fields.py:432
+#: core/validators.py:182 core/validators.py:474 newforms/fields.py:433
#: oldforms/__init__.py:687
msgid "No file was submitted. Check the encoding type on the form."
-msgstr "No s'ha enviat cap fitxer. Comprovi el tipus de codificació del formulari."
+msgstr ""
+"No s'ha enviat cap fitxer. Comprovi el tipus de codificació del formulari."
-#: core/validators.py:193
-#: newforms/fields.py:456
-msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
-msgstr "Envii una imatge vàilda. El fitxer que ha enviat no era una imatge o estaba corrupte."
+#: 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 ""
+"Envii una imatge vàlida. El fitxer que ha enviat no era una imatge o estaba "
+"corrupte."
#: core/validators.py:200
#, python-format
@@ -3525,7 +3662,9 @@ msgstr "La URL %s no apunta una imatge vàlida."
#: core/validators.py:204
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "El números de telèfon han de guardar-se en el format XXX-XXX-XXXX. \"%s\" no és vàlid."
+msgstr ""
+"Els números de telèfon han de guardar-se en el format XXX-XXX-XXXX. \"%s\" no "
+"és vàlid."
#: core/validators.py:212
#, python-format
@@ -3534,7 +3673,7 @@ msgstr "La URL %s no apunta a un video QuickTime vàlid."
#: core/validators.py:216
msgid "A valid URL is required."
-msgstr "Es precisa d'una URL vàlida."
+msgstr "Es precisa una URL vàlida."
#: core/validators.py:230
#, python-format
@@ -3542,7 +3681,7 @@ msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
-"Es precisa HTML vàlid. Els errors específics sòn:\n"
+"Es precisa HTML vàlid. Els errors específics són:\n"
"%s"
#: core/validators.py:237
@@ -3555,22 +3694,21 @@ msgstr "XML incorrectament formatejat: %s"
msgid "Invalid URL: %s"
msgstr "URL invalida: %s"
-#: core/validators.py:259
-#: core/validators.py:261
+#: core/validators.py:259 core/validators.py:261
#, python-format
msgid "The URL %s is a broken link."
msgstr "La URL %sés un enllaç trencat."
#: core/validators.py:267
msgid "Enter a valid U.S. state abbreviation."
-msgstr "Introdueixi una abreviatura vàlida d'estat d'els E.U.A.."
+msgstr "Introdueixi una abreviatura vàlida d'estat dels E.U.A.."
#: core/validators.py:281
#, 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] "Vigili la seva boca! Aquí no admetem la paraula: %s."
-msgstr[1] "Vigili la seva boca! Aquí no admetem les paraules: %s."
+msgstr[0] "Vigili amb el llenguatge! Aquí no s'admet la paraula: %s."
+msgstr[1] "Vigili amb el llenguatge! Aquí no s'admeten les paraules: %s."
#: core/validators.py:288
#, python-format
@@ -3581,20 +3719,19 @@ msgstr "Aquest camp ha de concordar amb el camp '%s'."
msgid "Please enter something for at least one field."
msgstr "Si us plau, introdueixi alguna cosa alemnys en un camp."
-#: core/validators.py:316
-#: core/validators.py:327
+#: core/validators.py:316 core/validators.py:327
msgid "Please enter both fields or leave them both empty."
msgstr "Si us plau, ompli els dos camps o deixi'ls tots dos en blanc."
#: core/validators.py:335
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
-msgstr "S'ha de proporcionar aquest camps si %(field)s és %(value)s"
+msgstr "S'ha de proporcionar aquest camp si %(field)s és %(value)s"
#: core/validators.py:348
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "S'ha de proporcionar aquest camps si %(field)s no és %(value)s"
+msgstr "S'ha de proporcionar aquest camp si %(field)s no és %(value)s"
#: core/validators.py:367
msgid "Duplicate values are not allowed."
@@ -3603,7 +3740,7 @@ msgstr "No s'admeten valors duplicats."
#: core/validators.py:382
#, python-format
msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Aquest valor ha de estar comprés entre %(lower)s i %(upper)s."
+msgstr "Aquest valor ha d'estar comprès entre %(lower)s i %(upper)s."
#: core/validators.py:384
#, python-format
@@ -3627,23 +3764,37 @@ msgstr "Si us plau, introdueixi un número decimal vàlid."
#: core/validators.py:444
#, 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] "Si us plau, introdueixi un número decimal vàlid de com a màxim %s digit."
-msgstr[1] "Si us plau, introdueixi un número decimal vàlid de com a màxim %s digits."
+msgid_plural ""
+"Please enter a valid decimal number with at most %s total digits."
+msgstr[0] ""
+"Si us plau, introdueixi un número decimal vàlid de com a màxim %s digit."
+msgstr[1] ""
+"Si us plau, introdueixi un número decimal vàlid de com a màxim %s digits."
#: core/validators.py:447
#, 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] "Si us plau, introdueixi un número decimal vàlid que la seva part sencera sigui de com a màxim %s digit."
-msgstr[1] "Si us plau, introdueixi un número decimal vàlid que la seva part sencera sigui de com a màxim %s digits."
+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] ""
+"Si us plau, introdueixi un número decimal vàlid que la seva part sencera "
+"sigui de com a màxim %s digit."
+msgstr[1] ""
+"Si us plau, introdueixi un número decimal vàlid que la seva part sencera "
+"sigui de com a màxim %s digits."
#: core/validators.py:450
#, 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] "Si us plau, introdueixi un número decimal vàlid de com a màxim %s posició decimal."
-msgstr[1] "Si us plau, introdueixi un número decimal vàlid de com a màxim %s posicions decimals."
+msgid_plural ""
+"Please enter a valid decimal number with at most %s decimal places."
+msgstr[0] ""
+"Si us plau, introdueixi un número decimal vàlid de com a màxim %s posició "
+"decimal."
+msgstr[1] ""
+"Si us plau, introdueixi un número decimal vàlid de com a màxim %s posicions "
+"decimals."
#: core/validators.py:458
msgid "Please enter a valid floating point number."
@@ -3674,38 +3825,65 @@ msgstr "No s'ha pogut obtenir res de %s."
#: core/validators.py:539
#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "La URL %(url)s ha va tornar la capcelera Content-Type '%(contenttype)s', que no és vàlida."
+msgid ""
+"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
+msgstr ""
+"La URL %(url)s ha va tornar la capcelera Content-Type '%(contenttype)s', que "
+"no és vàlida."
#: core/validators.py:572
#, python-format
-msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
-msgstr "Si us plau, tanqui l'etiqueta %(tag)s des de la línia %(line)s. (La línia comença amb \"%(start)s\".)"
+msgid ""
+"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
+"\"%(start)s\".)"
+msgstr ""
+"Si us plau, tanqui l'etiqueta %(tag)s des de la línia %(line)s. (La línia "
+"comença amb \"%(start)s\".)"
#: core/validators.py:576
#, python-format
-msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
-msgstr "Part del text que comença en la línia %(line)s no està permès en aquest context. (La línia comença per \"%(start)s\".)"
+msgid ""
+"Some text starting on line %(line)s is not allowed in that context. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"Part del text que comença en la línia %(line)s no està permès en aquest "
+"context. (La línia comença per \"%(start)s\".)"
#: core/validators.py:581
#, 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ínia %(line)s no és un atribut vàlid. (La línia comença per \"%(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ínia %(line)s no és un atribut vàlid. (La línia "
+"comença per \"%(start)s\".)"
#: core/validators.py:586
#, 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ínia %(line)s no és una etiqueta vàlida. (La línia comença per \"%(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ínia %(line)s no és una etiqueta vàlida. (La línia "
+"comença per \"%(start)s\".)"
#: 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 "Una etiqueta de la línia %(line)s li falta un o més atributs requerits.(La línia comença per \"%(start)s\".)"
+msgid ""
+"A tag on line %(line)s is missing one or more required attributes. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"Una etiqueta de la línia %(line)s li falta un o més atributs requerits.(La "
+"línia comença per \"%(start)s\".)"
#: 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 "L'atribut \"%(attr)s\" de la línia %(line)s té un valor que no és vàlid. (La línia comença per \"%(start)s\".)"
+msgid ""
+"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
+"starts with \"%(start)s\".)"
+msgstr ""
+"L'atribut \"%(attr)s\" de la línia %(line)s té un valor que no és vàlid. (La "
+"línia comença per \"%(start)s\".)"
#: db/models/manipulators.py:308
#, python-format
@@ -3715,161 +3893,158 @@ msgstr "Ja existeix un %(object)s del tipus %(type)s amb aquest %(field)s."
#: db/models/fields/__init__.py:52
#, python-format
msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "Ja existeix %(optname)s amb auqest %(fieldname)s."
+msgstr "Ja existeix %(optname)s amb aquest %(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:161 db/models/fields/__init__.py:327
+#: db/models/fields/__init__.py:759 db/models/fields/__init__.py:770
+#: newforms/fields.py:46 oldforms/__init__.py:374
msgid "This field is required."
msgstr "Aquest camp és obligatori."
-#: db/models/fields/__init__.py:418
+#: db/models/fields/__init__.py:427
msgid "This value must be an integer."
-msgstr "Aquest valor ha de ser un enter."
+msgstr "Aquest valor ha de ser un enter."
-#: db/models/fields/__init__.py:454
+#: db/models/fields/__init__.py:466
msgid "This value must be either True or False."
msgstr "Aquest valor ha de ser True (Veritat) o False (Fals)"
-#: db/models/fields/__init__.py:475
+#: db/models/fields/__init__.py:490
msgid "This field cannot be null."
msgstr "Aquest camp no pot ser null (estar buit)."
-#: db/models/fields/__init__.py:644
+#: db/models/fields/__init__.py:668
msgid "This value must be a decimal number."
msgstr "Aquest valor ha de ser un número decimal."
-#: db/models/fields/__init__.py:755
+#: db/models/fields/__init__.py:779
msgid "Enter a valid filename."
msgstr "Introdueixi un nom de fitxer vàlid."
-#: db/models/fields/__init__.py:904
+#: db/models/fields/__init__.py:960
msgid "This value must be either None, True or False."
msgstr "Aquest valor ha de ser None (Cap), True (Veritat) o False (Fals)"
-#: db/models/fields/related.py:55
+#: db/models/fields/related.py:93
#, python-format
msgid "Please enter a valid %s."
msgstr "Si us plau, introdueixi un %s vàlid."
-#: db/models/fields/related.py:658
+#: db/models/fields/related.py:701
msgid "Separate multiple IDs with commas."
msgstr "Separi múltiples IDs amb comes."
-#: db/models/fields/related.py:660
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+#: db/models/fields/related.py:703
+msgid ""
+"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr "Premi \"Control\" o \"Command\" en un Mac per escollir més d'un."
-#: db/models/fields/related.py:707
+#: db/models/fields/related.py:750
#, 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] "Si us plau, introdueixi els IDs de %(self)s vàlids. El valor %(value)r és invàlid."
-msgstr[1] "Si us plau, introdueixi IDs de %(self)s vàlids. Els valors %(value)r són invàlids."
+msgid_plural ""
+"Please enter valid %(self)s IDs. The values %(value)r are invalid."
+msgstr[0] ""
+"Si us plau, introdueixi els IDs de %(self)s vàlids. El valor %(value)r és "
+"invàlid."
+msgstr[1] ""
+"Si us plau, introdueixi IDs de %(self)s vàlids. Els valors %(value)r són "
+"invàlids."
-#: newforms/fields.py:46
+#: newforms/fields.py:47
msgid "Enter a valid value."
msgstr "Introdueixi un valor vàlid."
-#: newforms/fields.py:123
+#: newforms/fields.py:124
#, python-format
msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Asseguris de que el valor té com a màxim %(max)d caràcters (en té %(length)d)."
+msgstr ""
+"Asseguris de que el valor té com a màxim %(max)d caràcters (en té %(length)"
+"d)."
-#: newforms/fields.py:124
+#: newforms/fields.py:125
#, python-format
msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Asseguris de que el valor té com a mínim %(min)d caràcters (en té %(length)d)."
+msgstr ""
+"Asseguris de que el valor té com a mínim %(min)d caràcters (en té %(length)"
+"d)."
-#: newforms/fields.py:152
-#: newforms/fields.py:181
-#: newforms/fields.py:210
+#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211
#, python-format
msgid "Ensure this value is less than or equal to %s."
msgstr "Aquest valor ha de ser menor o igual a %s."
-#: newforms/fields.py:153
-#: newforms/fields.py:182
-#: newforms/fields.py:211
+#: newforms/fields.py:154 newforms/fields.py:183 newforms/fields.py:212
#, python-format
msgid "Ensure this value is greater than or equal to %s."
msgstr "Asseguris de que aquest valor sigui superior o igual a %s."
-#: newforms/fields.py:180
-#: newforms/fields.py:209
+#: newforms/fields.py:181 newforms/fields.py:210
msgid "Enter a number."
msgstr "Introdueixi un número."
-#: newforms/fields.py:212
+#: newforms/fields.py:213
#, python-format
msgid "Ensure that there are no more than %s digits in total."
msgstr "Asseguris de que no hi ha més de %s dígits en total."
-#: newforms/fields.py:213
+#: newforms/fields.py:214
#, python-format
msgid "Ensure that there are no more than %s decimal places."
msgstr "Asseguris de que no hi ha més de %s decimals."
-#: newforms/fields.py:214
+#: newforms/fields.py:215
#, python-format
msgid "Ensure that there are no more than %s digits before the decimal point."
msgstr "Asseguris de que no hia ha més de %s dígits decimals."
-#: newforms/fields.py:262
-#: newforms/fields.py:719
+#: newforms/fields.py:263 newforms/fields.py:751
msgid "Enter a valid date."
msgstr "Introdueixi una data vàlida."
-#: newforms/fields.py:295
-#: newforms/fields.py:720
+#: newforms/fields.py:296 newforms/fields.py:752
msgid "Enter a valid time."
msgstr "Introdueixi una hora vàlida."
-#: newforms/fields.py:334
+#: newforms/fields.py:335
msgid "Enter a valid date/time."
msgstr "Introdueixi una data/hora vàlides."
-#: newforms/fields.py:433
+#: newforms/fields.py:434
msgid "No file was submitted."
msgstr "No s'ha enviat cap fitxer."
-#: newforms/fields.py:434
-#: oldforms/__init__.py:689
+#: newforms/fields.py:435 oldforms/__init__.py:689
msgid "The submitted file is empty."
msgstr "El fitxer enviat està buit."
-#: newforms/fields.py:492
+#: newforms/fields.py:497
msgid "Enter a valid URL."
msgstr "Introdueixi una URL vàlida."
-#: newforms/fields.py:493
+#: newforms/fields.py:498
msgid "This URL appears to be a broken link."
msgstr "Aquesta URL sembla ser un enllaç trencat."
-#: newforms/fields.py:555
-#: newforms/models.py:317
+#: newforms/fields.py:560 newforms/models.py:299
msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Esculli una opció vàlida; Aquesta opció no és una de les opcions disponibles."
+msgstr ""
+"Esculli una opció vàlida; Aquesta opció no és una de les opcions disponibles."
-#: newforms/fields.py:594
+#: newforms/fields.py:599
#, python-format
msgid "Select a valid choice. %(value)s is not one of the available choices."
msgstr "Esculli una opció vàlida. %(value)s no és una de les opcions vàlides."
-#: newforms/fields.py:595
-#: newforms/fields.py:657
-#: newforms/models.py:377
+#: newforms/fields.py:600 newforms/fields.py:662 newforms/models.py:371
msgid "Enter a list of values."
msgstr "Introdueixi una llista de valors."
-#: newforms/fields.py:748
+#: newforms/fields.py:780
msgid "Enter a valid IPv4 address."
msgstr "Introdueixi una adreça IPv4 vàlida."
-#: newforms/models.py:378
+#: newforms/models.py:372
#, python-format
msgid "Select a valid choice. %s is not one of the available choices."
msgstr "Esculli una opció vàlida; %s' no és una de les opcions vàlides."
@@ -3885,9 +4060,7 @@ msgstr[1] "Asseguris de que el seu texte té menys de %s caracters."
msgid "Line breaks are not allowed here."
msgstr "No es permeten salts de línia."
-#: 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 "Esculli una opció vàlida; %(data)s' no està dintre de %(choices)s."
@@ -3904,28 +4077,28 @@ msgstr "Introdueixi un número positiu."
msgid "Enter a whole number between 0 and 32,767."
msgstr "Introdueixi un número entre 0 i 32,767."
-#: template/defaultfilters.py:683
+#: template/defaultfilters.py:698
msgid "yes,no,maybe"
msgstr "si,no,potser"
-#: template/defaultfilters.py:714
+#: 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:716
+#: template/defaultfilters.py:731
#, python-format
msgid "%.1f KB"
msgstr "%.1f KB"
-#: template/defaultfilters.py:718
+#: template/defaultfilters.py:733
#, python-format
msgid "%.1f MB"
msgstr "%.1f MB"
-#: template/defaultfilters.py:719
+#: template/defaultfilters.py:734
#, python-format
msgid "%.1f GB"
msgstr "%.1f GB"
@@ -3988,11 +4161,11 @@ msgstr "Dl"
#: utils/dates.py:10
msgid "Tue"
-msgstr "Dt"
+msgstr "Dm"
#: utils/dates.py:10
msgid "Wed"
-msgstr "Dc"
+msgstr "Dmx"
#: utils/dates.py:10
msgid "Thu"
@@ -4004,7 +4177,7 @@ msgstr "Dv"
#: utils/dates.py:11
msgid "Sat"
-msgstr "Db"
+msgstr "Ds"
#: utils/dates.py:11
msgid "Sun"
@@ -4018,28 +4191,23 @@ msgstr "Gener"
msgid "February"
msgstr "Febrer"
-#: utils/dates.py:18
-#: utils/dates.py:31
+#: utils/dates.py:18 utils/dates.py:31
msgid "March"
msgstr "Març"
-#: 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 "Maig"
-#: utils/dates.py:18
-#: utils/dates.py:31
+#: utils/dates.py:18 utils/dates.py:31
msgid "June"
msgstr "Juny"
-#: utils/dates.py:19
-#: utils/dates.py:31
+#: utils/dates.py:19 utils/dates.py:31
msgid "July"
msgstr "Juliol"
@@ -4193,23 +4361,23 @@ 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:403
msgid "DATE_FORMAT"
msgstr "F j, Y"
-#: utils/translation/trans_real.py:400
+#: utils/translation/trans_real.py:404
msgid "DATETIME_FORMAT"
msgstr "F j, Y, H:i"
-#: utils/translation/trans_real.py:401
+#: utils/translation/trans_real.py:405
msgid "TIME_FORMAT"
msgstr "H:i"
-#: utils/translation/trans_real.py:417
+#: utils/translation/trans_real.py:421
msgid "YEAR_MONTH_FORMAT"
msgstr "j de/d' F del Y"
-#: utils/translation/trans_real.py:418
+#: utils/translation/trans_real.py:422
msgid "MONTH_DAY_FORMAT"
msgstr "j de/d' F del Y"
@@ -4228,9 +4396,11 @@ msgstr "El/La %(verbose_name)s s'ha actualtzat amb èxit."
msgid "The %(verbose_name)s was deleted."
msgstr "El %(verbose_name)s s'ha eliminat."
+#~ msgid "Gaeilge"
+#~ msgstr "Gaeilge"
+
#~ msgid ""
#~ "Enter a postcode. A space is required between the two postcode parts."
#~ msgstr ""
#~ "Introdueixi un codi postal. És necessari un espai entre les dues parts "
#~ "del codi postal."
-
diff --git a/django/conf/locale/ca/LC_MESSAGES/djangojs.mo b/django/conf/locale/ca/LC_MESSAGES/djangojs.mo
index 6f3c9f2a5a..0df69aeb94 100644
--- a/django/conf/locale/ca/LC_MESSAGES/djangojs.mo
+++ b/django/conf/locale/ca/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/django/conf/locale/ca/LC_MESSAGES/djangojs.po b/django/conf/locale/ca/LC_MESSAGES/djangojs.po
index 95164f3aeb..67c50c6532 100644
--- a/django/conf/locale/ca/LC_MESSAGES/djangojs.po
+++ b/django/conf/locale/ca/LC_MESSAGES/djangojs.po
@@ -1,21 +1,17 @@
-# translation of djangojs.po to español
-# translation of djangojs.po to
-# Catalan translation for the django-admin JS files.
+# translation of djangojs.po to catalan
# This file is distributed under the same license as the Django package.
-#
-# Antoni Aloy <antoni.aloy@trespams.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: Django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-05-20 18:25+0200\n"
-"PO-Revision-Date: 2008-01-22 19:39+0100\n"
-"Last-Translator: Marc Garcia <marc.garcia@accopensys.com>\n"
-"Language-Team: español <ca@li.org>\n"
+"POT-Creation-Date: 2007-02-15 01:00+0200\n"
+"PO-Revision-Date: 2008-03-25 18:54+0100\n"
+"Last-Translator: Django Catalan Group <django-cat@googlegroups.com>\n"
+"Language-Team: Catalan <ca@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
+"X-Generator: VIM 7.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: contrib/admin/media/js/SelectFilter2.js:33
diff --git a/django/conf/locale/es/LC_MESSAGES/django.mo b/django/conf/locale/es/LC_MESSAGES/django.mo
index bb4c6ff9c8..485a77160a 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 04c7c76e3b..b1fab30ded 100644
--- a/django/conf/locale/es/LC_MESSAGES/django.po
+++ b/django/conf/locale/es/LC_MESSAGES/django.po
@@ -1,15 +1,14 @@
-# translation of django.po to Castellano
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER.
-#
+# Spanish translation for the django project
+# Copyright (C) 2008, The Django Project
+# 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: 2007-10-20 14:55+0200\n"
-"PO-Revision-Date: 2007-10-20 15:38+0100\n"
-"Last-Translator: Marc Garcia <marc.garcia@accopensys.com>\n"
-"Language-Team: Castellano <Django-I18N@googlegroups.com>\n"
+"POT-Creation-Date: 2005-10-04 00:00+0200\n"
+"PO-Revision-Date: 2008-03-30 01:04+0100\n"
+"Last-Translator: Django Spanish Group <django-i18n@googlegroups.com>\n"
+"Language-Team: Spanish <django-i18n@googlegroups.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -64,138 +63,146 @@ msgid "Argentinean Spanish"
msgstr "Español Argentino"
#: conf/global_settings.py:51
+msgid "Basque"
+msgstr "Vasco"
+
+#: conf/global_settings.py:52
msgid "Persian"
msgstr "Persa"
-#: conf/global_settings.py:52
+#: conf/global_settings.py:53
msgid "Finnish"
msgstr "Finés"
-#: conf/global_settings.py:53
+#: conf/global_settings.py:54
msgid "French"
msgstr "Francés"
-#: conf/global_settings.py:54
-msgid "Gaeilge"
-msgstr "Gaeilge"
-
#: conf/global_settings.py:55
+msgid "Irish"
+msgstr "Irlandés"
+
+#: conf/global_settings.py:56
msgid "Galician"
msgstr "Gallego"
-#: conf/global_settings.py:56
+#: conf/global_settings.py:57
msgid "Hungarian"
msgstr "Húngaro"
-#: conf/global_settings.py:57
+#: conf/global_settings.py:58
msgid "Hebrew"
msgstr "Hebreo"
-#: conf/global_settings.py:58
+#: conf/global_settings.py:59
msgid "Croatian"
msgstr "Croata"
-#: conf/global_settings.py:59
+#: conf/global_settings.py:60
msgid "Icelandic"
msgstr "Islandés"
-#: conf/global_settings.py:60
+#: conf/global_settings.py:61
msgid "Italian"
msgstr "Italiano"
-#: conf/global_settings.py:61
+#: conf/global_settings.py:62
msgid "Japanese"
msgstr "Japonés"
-#: conf/global_settings.py:62
+#: conf/global_settings.py:63
+msgid "Georgian"
+msgstr "Georgiano"
+
+#: conf/global_settings.py:64
msgid "Korean"
msgstr "Koreano"
-#: conf/global_settings.py:63
+#: conf/global_settings.py:65
msgid "Khmer"
msgstr "Khmer"
-#: conf/global_settings.py:64
+#: conf/global_settings.py:66
msgid "Kannada"
msgstr "Kannada"
-#: conf/global_settings.py:65
+#: conf/global_settings.py:67
msgid "Latvian"
msgstr "Latvio"
-#: conf/global_settings.py:66
+#: conf/global_settings.py:68
msgid "Macedonian"
msgstr "Macedonio"
-#: conf/global_settings.py:67
+#: conf/global_settings.py:69
msgid "Dutch"
msgstr "Alemán"
-#: conf/global_settings.py:68
+#: conf/global_settings.py:70
msgid "Norwegian"
msgstr "Noruego"
-#: conf/global_settings.py:69
+#: conf/global_settings.py:71
msgid "Polish"
msgstr "Polaco"
-#: conf/global_settings.py:70
+#: conf/global_settings.py:72
msgid "Portugese"
msgstr "Portugés"
-#: conf/global_settings.py:71
+#: conf/global_settings.py:73
msgid "Brazilian"
msgstr "Brasileño"
-#: conf/global_settings.py:72
+#: conf/global_settings.py:74
msgid "Romanian"
msgstr "Rumano"
-#: conf/global_settings.py:73
+#: conf/global_settings.py:75
msgid "Russian"
msgstr "Ruso"
-#: conf/global_settings.py:74
+#: conf/global_settings.py:76
msgid "Slovak"
msgstr "Eslovaco"
-#: conf/global_settings.py:75
+#: conf/global_settings.py:77
msgid "Slovenian"
msgstr "Esloveno"
-#: conf/global_settings.py:76
+#: conf/global_settings.py:78
msgid "Serbian"
msgstr "Serbio"
-#: conf/global_settings.py:77
+#: conf/global_settings.py:79
msgid "Swedish"
msgstr "Sueco"
-#: conf/global_settings.py:78
+#: conf/global_settings.py:80
msgid "Tamil"
msgstr "Tamil"
-#: conf/global_settings.py:79
+#: conf/global_settings.py:81
msgid "Telugu"
msgstr "Telugu"
-#: conf/global_settings.py:80
+#: conf/global_settings.py:82
msgid "Turkish"
msgstr "Turco"
-#: conf/global_settings.py:81
+#: conf/global_settings.py:83
msgid "Ukrainian"
msgstr "Ucraniano"
-#: conf/global_settings.py:82
+#: conf/global_settings.py:84
msgid "Simplified Chinese"
msgstr "Chino simplificado"
-#: conf/global_settings.py:83
+#: conf/global_settings.py:85
msgid "Traditional Chinese"
msgstr "Chino tradicional"
-#: contrib/admin/filterspecs.py:42
+#: contrib/admin/filterspecs.py:44
#, python-format
msgid ""
"<h3>By %s:</h3>\n"
@@ -204,76 +211,71 @@ msgstr ""
"<h3>Por %s:</h3>\n"
"<ul>\n"
-#: contrib/admin/filterspecs.py:72
-#: contrib/admin/filterspecs.py:90
-#: contrib/admin/filterspecs.py:145
-#: contrib/admin/filterspecs.py:171
+#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
+#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
msgid "All"
msgstr "Todo"
-#: contrib/admin/filterspecs.py:111
+#: contrib/admin/filterspecs.py:113
msgid "Any date"
msgstr "Cualquier fecha"
-#: contrib/admin/filterspecs.py:112
+#: contrib/admin/filterspecs.py:114
msgid "Today"
msgstr "Hoy"
-#: contrib/admin/filterspecs.py:115
+#: contrib/admin/filterspecs.py:117
msgid "Past 7 days"
msgstr "Últimos 7 días"
-#: contrib/admin/filterspecs.py:117
+#: contrib/admin/filterspecs.py:119
msgid "This month"
msgstr "Este mes"
-#: contrib/admin/filterspecs.py:119
+#: contrib/admin/filterspecs.py:121
msgid "This year"
msgstr "Este año"
-#: contrib/admin/filterspecs.py:145
-#: newforms/widgets.py:205
-#: oldforms/__init__.py:591
+#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
+#: oldforms/__init__.py:592
msgid "Yes"
msgstr "Sí"
-#: contrib/admin/filterspecs.py:145
-#: newforms/widgets.py:205
-#: oldforms/__init__.py:591
+#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
+#: oldforms/__init__.py:592
msgid "No"
msgstr "No"
-#: contrib/admin/filterspecs.py:152
-#: newforms/widgets.py:205
-#: oldforms/__init__.py:591
+#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231
+#: oldforms/__init__.py:592
msgid "Unknown"
msgstr "Desconocido"
-#: contrib/admin/models.py:17
+#: contrib/admin/models.py:18
msgid "action time"
msgstr "hora de acción"
-#: contrib/admin/models.py:20
+#: contrib/admin/models.py:21
msgid "object id"
msgstr "id de objeto"
-#: contrib/admin/models.py:21
+#: contrib/admin/models.py:22
msgid "object repr"
msgstr "repr de objeto"
-#: contrib/admin/models.py:22
+#: contrib/admin/models.py:23
msgid "action flag"
msgstr "marca de acción"
-#: contrib/admin/models.py:23
+#: contrib/admin/models.py:24
msgid "change message"
msgstr "mensaje de cambio"
-#: contrib/admin/models.py:26
+#: contrib/admin/models.py:27
msgid "log entry"
msgstr "entrada de registro"
-#: contrib/admin/models.py:27
+#: contrib/admin/models.py:28
msgid "log entries"
msgstr "entradas de registro"
@@ -316,8 +318,13 @@ 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
msgid "Welcome,"
@@ -388,13 +395,23 @@ msgstr "Eliminar"
#: contrib/admin/templates/admin/delete_confirmation.html:13
#, 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
#, 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
msgid "Yes, I'm sure"
@@ -440,8 +457,14 @@ 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úrate que las tablas necesarias han sido creadas, y que la base de datos puede ser leída por el usuario apropiado."
+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úrate 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/comments/templates/comments/form.html:6
@@ -455,7 +478,7 @@ msgid "Password:"
msgstr "Clave:"
#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:24
+#: contrib/admin/views/decorators.py:31
msgid "Log in"
msgstr "Identificarse"
@@ -476,8 +499,12 @@ 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."
+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"
@@ -516,8 +543,12 @@ 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
msgid "Username"
@@ -541,7 +572,9 @@ msgstr "Introduzca la misma contraseña que arriba, para verificación"
#: 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 "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"
@@ -563,27 +596,36 @@ 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 en el sitio.\n"
"Observer que algunos de estos bookmarklets precisan que esté viendo\n"
"el sitio desde un computador señalado como \"interno\" (hable\n"
-"con su administrador de sistemas si no está seguro de si el suyo lo es).</p>\n"
+"con su administrador de sistemas si no está seguro de si el suyo lo es).</"
+"p>\n"
#: contrib/admin/templates/admin_doc/bookmarklets.html:18
msgid "Documentation for this page"
msgstr "Documentación de 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 "Le 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 ""
+"Le 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 unívoco de las páginas que representan un único objeto."
+msgid ""
+"Shows the content-type and unique ID for pages that represent a single "
+"object."
+msgstr ""
+"Muestra el tipo de contenido e ID unívoco de las páginas que representan un "
+"único objeto."
#: contrib/admin/templates/admin_doc/bookmarklets.html:24
msgid "Edit this object (current window)"
@@ -591,7 +633,9 @@ 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 "Le lleva a la página de administración de páginas que representan un único objeto."
+msgstr ""
+"Le 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)"
@@ -599,7 +643,8 @@ 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."
@@ -626,8 +671,12 @@ msgid "Your password was changed."
msgstr "Su clave 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 clave antigua, por seguridad, y después introduzca la nueva clave dos veces para verificar que la ha escrito correctamente."
+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 clave antigua, por seguridad, y después introduzca "
+"la nueva clave dos veces para verificar que la ha escrito correctamente."
#: contrib/admin/templates/registration/password_change_form.html:16
msgid "Old password:"
@@ -658,8 +707,12 @@ msgid "Password reset successful"
msgstr "Recuperación de clave exitosa"
#: 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 clave 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 clave 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"
@@ -693,8 +746,12 @@ 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 clave? 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 clave? 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:"
@@ -720,19 +777,17 @@ msgstr "Actualmente:"
msgid "Change:"
msgstr "Modificar:"
-#: contrib/admin/templatetags/admin_list.py:254
+#: 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:264
+#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267
#, 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:268
-#: contrib/admin/views/main.py:354
+#: 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."
@@ -749,277 +804,276 @@ msgstr "La clave se ha cambiado exitosamente."
msgid "Change password: %s"
msgstr "Cambiar clave: %s"
-#: contrib/admin/views/decorators.py:10
-#: contrib/auth/forms.py:60
-msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
-msgstr "Por favor, introduzca un correcto nombre de usuario y contraseña. Note que ambos campos son sensibles a mayúsculas/minúsculas."
-
-#: 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 "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: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 correcto nombre de usuario y contraseña. Note que "
+"ambos campos son sensibles a mayúsculas/minúsculas."
#: contrib/admin/views/decorators.py:69
-msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
-msgstr "Parece que su navegador no está configurado para aceptar cookies. Actívelas por favor, recargue esta página, e inténtelo de nuevo."
+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: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 "
+"por favor, recargue esta página, e inténtelo de nuevo."
-#: contrib/admin/views/decorators.py:83
+#: contrib/admin/views/decorators.py:90
msgid "Usernames cannot contain the '@' character."
msgstr "Los nombres de usuario no pueden contener el carácter '@'."
-#: contrib/admin/views/decorators.py:85
+#: contrib/admin/views/decorators.py:92
#, 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."
+msgstr ""
+"Su dirección de correo no es su nombre de usuario. Pruebe con '%s' en su "
+"lugar."
-#: contrib/admin/views/doc.py:47
-#: contrib/admin/views/doc.py:49
-#: contrib/admin/views/doc.py:51
+#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
+#: contrib/admin/views/doc.py:52
msgid "tag:"
msgstr "etiqueta:"
-#: contrib/admin/views/doc.py:78
-#: contrib/admin/views/doc.py:80
-#: contrib/admin/views/doc.py:82
+#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81
+#: contrib/admin/views/doc.py:83
msgid "filter:"
msgstr "filtro:"
-#: contrib/admin/views/doc.py:136
-#: contrib/admin/views/doc.py:138
-#: contrib/admin/views/doc.py:140
+#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139
+#: contrib/admin/views/doc.py:141
msgid "view:"
msgstr "vista:"
-#: contrib/admin/views/doc.py:165
+#: contrib/admin/views/doc.py:166
#, python-format
msgid "App %r not found"
msgstr "Aplicación %r no encontrada"
-#: contrib/admin/views/doc.py:172
+#: contrib/admin/views/doc.py:173
#, 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"
-#: contrib/admin/views/doc.py:184
+#: contrib/admin/views/doc.py:185
#, python-format
msgid "the related `%(label)s.%(type)s` object"
msgstr "el objeto relacionado`%(label)s.%(type)s` "
-#: contrib/admin/views/doc.py:184
-#: contrib/admin/views/doc.py:206
-#: contrib/admin/views/doc.py:220
-#: contrib/admin/views/doc.py:225
+#: 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 "modelo:"
-#: contrib/admin/views/doc.py:215
+#: contrib/admin/views/doc.py:216
#, python-format
msgid "related `%(label)s.%(name)s` objects"
msgstr "los objetos relacionados `%(label)s.%(name)s`"
-#: contrib/admin/views/doc.py:220
+#: contrib/admin/views/doc.py:221
#, python-format
msgid "all %s"
msgstr "todo %s"
-#: contrib/admin/views/doc.py:225
+#: contrib/admin/views/doc.py:226
#, python-format
msgid "number of %s"
msgstr "número de %s"
-#: contrib/admin/views/doc.py:230
+#: contrib/admin/views/doc.py:231
#, python-format
msgid "Fields on %s objects"
msgstr "Campos en %s objetos"
-#: 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
+#: 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 "Entero"
-#: contrib/admin/views/doc.py:293
+#: contrib/admin/views/doc.py:294
msgid "Boolean (Either True or False)"
msgstr "Booleano (Verdadero o Falso)"
-#: contrib/admin/views/doc.py:294
-#: contrib/admin/views/doc.py:313
+#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314
#, python-format
msgid "String (up to %(max_length)s)"
msgstr "Cadena (máximo %(max_length)s)"
-#: contrib/admin/views/doc.py:295
+#: contrib/admin/views/doc.py:296
msgid "Comma-separated integers"
msgstr "Enteros separados por comas"
-#: contrib/admin/views/doc.py:296
+#: contrib/admin/views/doc.py:297
msgid "Date (without time)"
msgstr "Fecha (sin hora)"
-#: contrib/admin/views/doc.py:297
+#: contrib/admin/views/doc.py:298
msgid "Date (with time)"
msgstr "Fecha (con hora)"
-#: contrib/admin/views/doc.py:298
+#: contrib/admin/views/doc.py:299
msgid "Decimal number"
msgstr "Número decimal"
-#: contrib/admin/views/doc.py:299
+#: contrib/admin/views/doc.py:300
msgid "E-mail address"
msgstr "Dirección de correo electrónico"
-#: contrib/admin/views/doc.py:300
-#: contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:304
+#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
+#: contrib/admin/views/doc.py:305
msgid "File path"
msgstr "Ruta de fichero"
-#: contrib/admin/views/doc.py:302
+#: contrib/admin/views/doc.py:303
msgid "Floating point number"
msgstr "Número decimal"
-#: contrib/admin/views/doc.py:306
-#: contrib/comments/models.py:85
+#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89
msgid "IP address"
msgstr "Dirección IP"
-#: contrib/admin/views/doc.py:308
+#: contrib/admin/views/doc.py:309
msgid "Boolean (Either True, False or None)"
msgstr "Booleano (Verdadero, Falso o Nulo)"
-#: contrib/admin/views/doc.py:309
+#: contrib/admin/views/doc.py:310
msgid "Relation to parent model"
msgstr "Relación con el modelo padre"
-#: contrib/admin/views/doc.py:310
+#: contrib/admin/views/doc.py:311
msgid "Phone number"
msgstr "Número de teléfono"
-#: contrib/admin/views/doc.py:315
+#: contrib/admin/views/doc.py:316
msgid "Text"
msgstr "Texto"
-#: contrib/admin/views/doc.py:316
+#: contrib/admin/views/doc.py:317
msgid "Time"
msgstr "Hora"
-#: contrib/admin/views/doc.py:317
-#: contrib/flatpages/models.py:7
+#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:7
msgid "URL"
msgstr "URL"
-#: contrib/admin/views/doc.py:318
+#: contrib/admin/views/doc.py:319
msgid "U.S. state (two uppercase letters)"
msgstr "Estado de los EEUU (dos letras mayúsculas)"
-#: contrib/admin/views/doc.py:319
+#: contrib/admin/views/doc.py:320
msgid "XML text"
msgstr "Texto XML"
-#: contrib/admin/views/doc.py:345
+#: contrib/admin/views/doc.py:346
#, 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:230
+#: contrib/admin/views/main.py:233
msgid "Site administration"
msgstr "Sitio administrativo"
-#: contrib/admin/views/main.py:278
-#: contrib/admin/views/main.py:363
+#: 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:296
+#: contrib/admin/views/main.py:298
#, python-format
msgid "Add %s"
msgstr "Agregar %s"
-#: contrib/admin/views/main.py:342
+#: contrib/admin/views/main.py:344
#, python-format
msgid "Added %s."
msgstr "Agregado %s."
-#: contrib/admin/views/main.py:342
-#: contrib/admin/views/main.py:344
-#: contrib/admin/views/main.py:346
-#: core/validators.py:283
+#: 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:344
+#: contrib/admin/views/main.py:346
#, python-format
msgid "Changed %s."
msgstr "Modificado %s."
-#: contrib/admin/views/main.py:346
+#: contrib/admin/views/main.py:348
#, python-format
msgid "Deleted %s."
msgstr "Borrado %s."
-#: contrib/admin/views/main.py:349
+#: contrib/admin/views/main.py:351
msgid "No fields changed."
msgstr "No ha cambiado ningún campo."
-#: contrib/admin/views/main.py:352
+#: 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:360
+#: 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 agregó con éxito el %(name)s \"%(obj)s. Puede editarlo de nuevo abajo."
+msgid ""
+"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr ""
+"Se agregó con éxito el %(name)s \"%(obj)s. Puede editarlo de nuevo abajo."
-#: contrib/admin/views/main.py:398
+#: contrib/admin/views/main.py:400
#, python-format
msgid "Change %s"
msgstr "Modificar %s"
-#: contrib/admin/views/main.py:483
+#: 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:488
+#: 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:520
+#: 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/admin/views/main.py:523
+#: contrib/admin/views/main.py:527
msgid "Are you sure?"
msgstr "¿Está seguro?"
-#: contrib/admin/views/main.py:545
+#: contrib/admin/views/main.py:549
#, python-format
msgid "Change history: %s"
msgstr "Modificar histórico: %s"
-#: contrib/admin/views/main.py:579
+#: contrib/admin/views/main.py:583
#, python-format
msgid "Select %s"
msgstr "Escoja %s"
-#: contrib/admin/views/main.py:579
+#: contrib/admin/views/main.py:583
#, python-format
msgid "Select %s to change"
msgstr "Escoja %s para modificar"
-#: contrib/admin/views/main.py:780
+#: contrib/admin/views/main.py:784
msgid "Database error"
msgstr "Error en la base de datos"
-#: contrib/auth/forms.py:17
-#: contrib/auth/forms.py:138
+#: 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."
@@ -1028,27 +1082,42 @@ 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 "Tu navegador de internet parece no tener las cookies habilitadas. Las cookies se necesitan para poder ingresar."
+msgid ""
+"Your Web browser doesn't appear to have cookies enabled. Cookies are "
+"required for logging in."
+msgstr ""
+"Tu navegador de internet parece no tener las cookies habilitadas. Las "
+"cookies se necesitan para poder ingresar."
#: contrib/auth/forms.py:62
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?"
+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:107
+#, python-format
+msgid "Password reset on %s"
+msgstr "Clave restablecida en %s"
#: contrib/auth/forms.py:117
msgid "The two 'new password' fields didn't match."
-msgstr "Las contraseñas introducidas en los campos 'nueva contraseña' no coinciden."
+msgstr ""
+"Las contraseñas introducidas en los campos 'nueva contraseña' no coinciden."
#: contrib/auth/forms.py:124
msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Tu contraseña antigua es incorrecta. Por favor, vuelve a introducirla correctamente."
+msgstr ""
+"Tu contraseña antigua es incorrecta. Por favor, vuelve 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"
@@ -1060,8 +1129,7 @@ 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"
@@ -1069,8 +1137,7 @@ 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:141
msgid "groups"
msgstr "grupos"
@@ -1079,8 +1146,12 @@ 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. 30 caracteres o menos. Sólo caracteres alfanuméricos (letras, dígitos y guiones bajos)."
+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:132
msgid "first name"
@@ -1099,8 +1170,12 @@ msgid "password"
msgstr "clave"
#: contrib/auth/models.py:135
-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>."
+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:136
msgid "staff status"
@@ -1115,16 +1190,24 @@ msgid "active"
msgstr "activo"
#: contrib/auth/models.py:137
-msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts."
-msgstr "Indica si el usuario puede entrar en este sitio de administración. Desmarque esto en lugar de borrar la cuenta."
+msgid ""
+"Designates whether this user can log into the Django admin. Unselect this "
+"instead of deleting accounts."
+msgstr ""
+"Indica si el usuario puede entrar en este sitio de administración. Desmarque "
+"esto en lugar de borrar la cuenta."
#: contrib/auth/models.py:138
msgid "superuser status"
msgstr "es superusuario"
#: contrib/auth/models.py:138
-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."
+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:139
msgid "last login"
@@ -1135,8 +1218,12 @@ msgid "date joined"
msgstr "fecha de creación"
#: 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 "Además de los permisos asignados manualmente, este usuario también tendrá todos los permisos de los grupos en los que esté."
+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:143
msgid "user permissions"
@@ -1174,85 +1261,84 @@ msgstr "mensaje"
msgid "Logged out"
msgstr "Sesión terminada"
-#: contrib/comments/models.py:67
-#: contrib/comments/models.py:169
+#: contrib/comments/models.py:71 contrib/comments/models.py:176
msgid "object ID"
msgstr "ID de objeto"
-#: contrib/comments/models.py:68
+#: contrib/comments/models.py:72
msgid "headline"
msgstr "encabezado"
-#: 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 "comentario"
-#: contrib/comments/models.py:70
+#: contrib/comments/models.py:74
msgid "rating #1"
msgstr "calificación 1"
-#: contrib/comments/models.py:71
+#: contrib/comments/models.py:75
msgid "rating #2"
msgstr "calificación 2"
-#: contrib/comments/models.py:72
+#: contrib/comments/models.py:76
msgid "rating #3"
msgstr "calificación 3"
-#: contrib/comments/models.py:73
+#: contrib/comments/models.py:77
msgid "rating #4"
msgstr "calificación 4"
-#: contrib/comments/models.py:74
+#: contrib/comments/models.py:78
msgid "rating #5"
msgstr "calificación 5"
-#: contrib/comments/models.py:75
+#: contrib/comments/models.py:79
msgid "rating #6"
msgstr "calificación 6"
-#: contrib/comments/models.py:76
+#: contrib/comments/models.py:80
msgid "rating #7"
msgstr "calificación 7"
-#: contrib/comments/models.py:77
+#: contrib/comments/models.py:81
msgid "rating #8"
msgstr "calificación 8"
-#: contrib/comments/models.py:82
+#: contrib/comments/models.py:86
msgid "is valid rating"
msgstr "es calificación válida"
-#: 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 "fecha/hora de envío"
-#: contrib/comments/models.py:84
-#: contrib/comments/models.py:173
+#: contrib/comments/models.py:88 contrib/comments/models.py:180
msgid "is public"
msgstr "es público"
-#: contrib/comments/models.py:86
+#: contrib/comments/models.py:90
msgid "is removed"
msgstr "está eliminado"
-#: 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 "Marque esta caja si el comentario es inapropiado. En su lugar se mostrará \"Este comentario ha sido 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 caja si el comentario es inapropiado. En su lugar se mostrará "
+"\"Este comentario ha sido eliminado\"."
-#: contrib/comments/models.py:91
+#: contrib/comments/models.py:96
msgid "comments"
msgstr "comentarios"
-#: contrib/comments/models.py:134
-#: contrib/comments/models.py:213
+#: contrib/comments/models.py:140 contrib/comments/models.py:222
msgid "Content object"
msgstr "Objeto contenido"
-#: contrib/comments/models.py:162
+#: contrib/comments/models.py:168
#, python-format
msgid ""
"Posted by %(user)s at %(date)s\n"
@@ -1267,48 +1353,48 @@ msgstr ""
"\n"
"http://%(domain)s%(url)s"
-#: contrib/comments/models.py:171
+#: contrib/comments/models.py:178
msgid "person's name"
msgstr "nombre de la persona"
-#: contrib/comments/models.py:174
+#: contrib/comments/models.py:181
msgid "ip address"
msgstr "dirección ip"
-#: contrib/comments/models.py:176
+#: contrib/comments/models.py:183
msgid "approved by staff"
msgstr "aprobado por el staff"
-#: contrib/comments/models.py:179
+#: contrib/comments/models.py:187
msgid "free comment"
msgstr "comentario libre"
-#: contrib/comments/models.py:180
+#: contrib/comments/models.py:188
msgid "free comments"
msgstr "comentarios libres"
-#: contrib/comments/models.py:239
+#: contrib/comments/models.py:250
msgid "score"
msgstr "puntuación"
-#: contrib/comments/models.py:240
+#: contrib/comments/models.py:251
msgid "score date"
msgstr "fecha de la puntuación"
-#: contrib/comments/models.py:243
+#: contrib/comments/models.py:255
msgid "karma score"
msgstr "punto karma"
-#: contrib/comments/models.py:244
+#: contrib/comments/models.py:256
msgid "karma scores"
msgstr "puntos karma"
-#: contrib/comments/models.py:248
+#: contrib/comments/models.py:260
#, python-format
msgid "%(score)d rating by %(user)s"
msgstr "puntuado %(score)d por %(user)s"
-#: contrib/comments/models.py:264
+#: contrib/comments/models.py:277
#, python-format
msgid ""
"This comment was flagged by %(user)s:\n"
@@ -1319,36 +1405,36 @@ msgstr ""
"\n"
"%(text)s"
-#: contrib/comments/models.py:271
+#: contrib/comments/models.py:285
msgid "flag date"
msgstr "fecha de la marca"
-#: contrib/comments/models.py:274
+#: contrib/comments/models.py:289
msgid "user flag"
msgstr "marca de usuario"
-#: contrib/comments/models.py:275
+#: contrib/comments/models.py:290
msgid "user flags"
msgstr "marcas de usuario"
-#: contrib/comments/models.py:279
+#: contrib/comments/models.py:294
#, python-format
msgid "Flag by %r"
msgstr "Marca de %r"
-#: contrib/comments/models.py:284
+#: contrib/comments/models.py:300
msgid "deletion date"
msgstr "fecha de eliminación"
-#: contrib/comments/models.py:286
+#: contrib/comments/models.py:303
msgid "moderator deletion"
msgstr "eliminación de moderador"
-#: contrib/comments/models.py:287
+#: contrib/comments/models.py:304
msgid "moderator deletions"
msgstr "eliminaciones de moderador"
-#: contrib/comments/models.py:291
+#: contrib/comments/models.py:308
#, python-format
msgid "Moderator deletion by %r"
msgstr "Eliminación del moderador %r"
@@ -1390,25 +1476,30 @@ msgid "Your name:"
msgstr "Tu nombre:"
#: contrib/comments/views/comments.py:28
-msgid "This rating is required because you've entered at least one other rating."
+msgid ""
+"This rating is required because you've entered at least one other rating."
msgstr "Se precisa esta puntuación porque ha introducido al menos otra más."
#: contrib/comments/views/comments.py:112
#, python-format
msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
+"This comment was posted by a user who has posted fewer than %(count)s "
+"comment:\n"
"\n"
"%(text)s"
msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s comments:\n"
+"This comment was posted by a user who has posted fewer than %(count)s "
+"comments:\n"
"\n"
"%(text)s"
msgstr[0] ""
-"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"
@@ -1436,12 +1527,18 @@ 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
msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Alguien está jugando con el formulario de comentarios (violación de seguridad)"
+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
-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)"
+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
@@ -1460,21 +1557,24 @@ msgstr "ID de comentario no válido"
msgid "No voting for yourself"
msgstr "No puedes votarte tú mismo"
-#: contrib/contenttypes/models.py:37
+#: contrib/contenttypes/models.py:67
msgid "python model class name"
msgstr "nombre de módulo python"
-#: 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
-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:9
msgid "title"
@@ -1493,8 +1593,12 @@ msgid "template name"
msgstr "nombre de plantilla"
#: contrib/flatpages/models.py:13
-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:14
msgid "registration required"
@@ -1512,154 +1616,162 @@ msgstr "página estática"
msgid "flat pages"
msgstr "páginas estáticas"
-#: contrib/humanize/templatetags/humanize.py:20
+#: contrib/flatpages/models.py:24
+msgid "Advanced options"
+msgstr "Opciones avanzadas"
+
+#: 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:50
+#: 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 millión"
-#: contrib/humanize/templatetags/humanize.py:53
+#: contrib/humanize/templatetags/humanize.py:54
#, python-format
msgid "%(value).1f billion"
msgid_plural "%(value).1f billion"
msgstr[0] "%(value).1f billión"
msgstr[1] "%(value).1f billión"
-#: contrib/humanize/templatetags/humanize.py:56
+#: contrib/humanize/templatetags/humanize.py:57
#, python-format
msgid "%(value).1f trillion"
msgid_plural "%(value).1f trillion"
msgstr[0] "%(value).1f trillión"
msgstr[1] "%(value).1f trillión"
-#: contrib/humanize/templatetags/humanize.py:71
+#: contrib/humanize/templatetags/humanize.py:73
msgid "one"
msgstr "uno"
-#: contrib/humanize/templatetags/humanize.py:71
+#: contrib/humanize/templatetags/humanize.py:73
msgid "two"
msgstr "dos"
-#: contrib/humanize/templatetags/humanize.py:71
+#: contrib/humanize/templatetags/humanize.py:73
msgid "three"
msgstr "tres"
-#: contrib/humanize/templatetags/humanize.py:71
+#: contrib/humanize/templatetags/humanize.py:73
msgid "four"
msgstr "cuatro"
-#: contrib/humanize/templatetags/humanize.py:71
+#: contrib/humanize/templatetags/humanize.py:73
msgid "five"
msgstr "cinco"
-#: contrib/humanize/templatetags/humanize.py:71
+#: contrib/humanize/templatetags/humanize.py:73
msgid "six"
msgstr "seis"
-#: contrib/humanize/templatetags/humanize.py:71
+#: contrib/humanize/templatetags/humanize.py:73
msgid "seven"
msgstr "siete"
-#: contrib/humanize/templatetags/humanize.py:71
+#: contrib/humanize/templatetags/humanize.py:73
msgid "eight"
msgstr "ocho"
-#: contrib/humanize/templatetags/humanize.py:71
+#: contrib/humanize/templatetags/humanize.py:73
msgid "nine"
msgstr "nueve"
-#: contrib/humanize/templatetags/humanize.py:90
+#: contrib/humanize/templatetags/humanize.py:93
msgid "today"
msgstr "hoy"
-#: contrib/humanize/templatetags/humanize.py:92
+#: contrib/humanize/templatetags/humanize.py:95
msgid "tomorrow"
msgstr "mañana"
-#: contrib/humanize/templatetags/humanize.py:94
+#: contrib/humanize/templatetags/humanize.py:97
msgid "yesterday"
msgstr "ayer"
-#: contrib/localflavor/ar/forms.py:30
-#: contrib/localflavor/ar/forms.py:38
+#: contrib/localflavor/ar/forms.py:27
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:61
-#: contrib/localflavor/br/forms.py:103
-#: contrib/localflavor/pe/forms.py:34
-#: contrib/localflavor/pe/forms.py:57
+#: 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."
-#: contrib/localflavor/ar/forms.py:64
+#: contrib/localflavor/ar/forms.py:50
msgid "This field requires 7 or 8 digits."
msgstr "Este campo necesita 7 o 8 dígitos."
-#: contrib/localflavor/ar/forms.py:75
+#: 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 el formato XX-XXXXXXXX-X or XXXXXXXXXXXX."
-#: contrib/localflavor/ar/forms.py:88
+#: contrib/localflavor/ar/forms.py:80
msgid "Invalid CUIT."
msgstr "CUIT inválido."
-#: contrib/localflavor/au/forms.py:18
+#: contrib/localflavor/au/forms.py:16
msgid "Enter a 4 digit post code."
msgstr "Introduzca un código postal de 4 dígitos."
-#: contrib/localflavor/br/forms.py:23
+#: contrib/localflavor/br/forms.py:21
msgid "Enter a zip code in the format XXXXX-XXX."
msgstr "Introduzca un código postal en el formato XXXX-XXXX."
-#: contrib/localflavor/br/forms.py:35
+#: contrib/localflavor/br/forms.py:30
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:68
-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:105
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Este campo necesita al menos 11 o 14 caracteres"
+#: 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."
-#: contrib/localflavor/br/forms.py:115
+#: contrib/localflavor/br/forms.py:94
msgid "Invalid CPF number."
msgstr "Número CPF inválido."
-#: contrib/localflavor/br/forms.py:137
-msgid "This field requires at least 14 digits"
-msgstr "Este campo necesita 14 dígitos como máximo"
+#: contrib/localflavor/br/forms.py:95
+msgid "This field requires at most 11 digits or 14 characters."
+msgstr "Este campo necesita al menos 11 o 14 caracteres"
-#: contrib/localflavor/br/forms.py:147
+#: contrib/localflavor/br/forms.py:134
msgid "Invalid CNPJ number."
msgstr "Número CNPJ inválido"
-#: contrib/localflavor/ca/forms.py:19
+#: contrib/localflavor/br/forms.py:136
+msgid "This field requires at least 14 digits"
+msgstr "Este campo necesita 14 dígitos como máximo"
+
+#: contrib/localflavor/ca/forms.py:17
msgid "Enter a postal code in the format XXX XXX."
msgstr "Introduzca un código postal en el formato XXX XXX."
-#: contrib/localflavor/ca/forms.py:81
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXXX format."
-msgstr "Introduzca un Número Seguro Social de Canada válido en el formato XXX-XXX-XXXX."
+#: 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 Canada válido en el formato XXX-XXX-"
+"XXX."
#: contrib/localflavor/ch/ch_states.py:5
msgid "Aargau"
@@ -1765,96 +1877,106 @@ msgstr "Zug"
msgid "Zurich"
msgstr "Zurich"
-#: contrib/localflavor/ch/forms.py:18
-#: contrib/localflavor/no/forms.py:14
+#: 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:90
-msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format."
-msgstr "Introduzca una identificación suiza válida o un número de pasaporte en el formato X1234567<0 or 1234567890."
+#: contrib/localflavor/ch/forms.py:64
+msgid ""
+"Enter a valid Swiss identity or passport card number in X1234567<0 or "
+"1234567890 format."
+msgstr ""
+"Introduzca una identificación suiza válida o un número de pasaporte en el "
+"formato X1234567<0 or 1234567890."
+
+#: contrib/localflavor/cl/forms.py:29
+msgid "Enter a valid Chilean RUT."
+msgstr "Introduzca un RUT chileno válido"
-#: contrib/localflavor/cl/forms.py:32
-msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
+#: contrib/localflavor/cl/forms.py:30
+msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
msgstr "Introduzca un RUT chileno válido. El formato es XX.XXX.XXX-X."
-#: contrib/localflavor/cl/forms.py:37
-msgid "Enter valid a Chilean RUT"
-msgstr "Introduzca un RUT chileno válido"
+#: contrib/localflavor/cl/forms.py:31
+msgid "The Chilean RUT is not valid."
+msgstr "El RUT chileno no es válido."
#: contrib/localflavor/de/de_states.py:5
msgid "Baden-Wuerttemberg"
-msgstr "Baden-Wuerttemberg"
+msgstr ""
#: contrib/localflavor/de/de_states.py:6
msgid "Bavaria"
-msgstr "Bavaria"
+msgstr ""
#: contrib/localflavor/de/de_states.py:7
msgid "Berlin"
-msgstr "Berlín"
+msgstr ""
#: contrib/localflavor/de/de_states.py:8
msgid "Brandenburg"
-msgstr "Brandenburg"
+msgstr ""
#: contrib/localflavor/de/de_states.py:9
msgid "Bremen"
-msgstr "Bremen"
+msgstr ""
#: contrib/localflavor/de/de_states.py:10
msgid "Hamburg"
-msgstr "Hamburg"
+msgstr ""
#: contrib/localflavor/de/de_states.py:11
msgid "Hessen"
-msgstr "Hessen"
+msgstr ""
#: contrib/localflavor/de/de_states.py:12
msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklenburg-Western Pomerania"
+msgstr ""
#: contrib/localflavor/de/de_states.py:13
msgid "Lower Saxony"
-msgstr "Lower Saxony"
+msgstr ""
#: contrib/localflavor/de/de_states.py:14
msgid "North Rhine-Westphalia"
-msgstr "North Rhine-Westphalia"
+msgstr ""
#: contrib/localflavor/de/de_states.py:15
msgid "Rhineland-Palatinate"
-msgstr "Rhineland-Palatinate"
+msgstr ""
#: contrib/localflavor/de/de_states.py:16
msgid "Saarland"
-msgstr "Saarland"
+msgstr ""
#: contrib/localflavor/de/de_states.py:17
msgid "Saxony"
-msgstr "Saxony"
+msgstr ""
#: contrib/localflavor/de/de_states.py:18
msgid "Saxony-Anhalt"
-msgstr "Saxony-Anhalt"
+msgstr ""
#: contrib/localflavor/de/de_states.py:19
msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
+msgstr ""
#: contrib/localflavor/de/de_states.py:20
msgid "Thuringia"
-msgstr "Thuringia"
+msgstr ""
-#: contrib/localflavor/de/forms.py:16
-#: contrib/localflavor/fi/forms.py:14
-#: contrib/localflavor/fr/forms.py:17
+#: 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:60
-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/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."
#: contrib/localflavor/es/es_provinces.py:5
msgid "Arava"
@@ -2123,63 +2245,73 @@ msgstr "Comunidad Foral de Navarra"
msgid "Valencian Community"
msgstr "Comunidad Valenciana"
-#: contrib/localflavor/es/forms.py:22
+#: contrib/localflavor/es/forms.py:19
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 or 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 "
+"or 9XXXXXXXX."
-#: contrib/localflavor/es/forms.py:73
-#: contrib/localflavor/es/forms.py:108
-#: db/models/fields/related.py:55
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Por favor, introduzca un %s válido."
+#: contrib/localflavor/es/forms.py:66
+msgid "Please enter a valid NIF, NIE, or CIF."
+msgstr "Por favor introduzca un NIF, NIE o CIF válido."
-#: contrib/localflavor/es/forms.py:91
+#: contrib/localflavor/es/forms.py:67
+msgid "Please enter a valid NIF or NIE."
+msgstr "Por favor, introduzca un NIF o NIE válido."
+
+#: contrib/localflavor/es/forms.py:68
msgid "Invalid checksum for NIF."
msgstr "El NIF es incorrecto."
-#: contrib/localflavor/es/forms.py:97
+#: contrib/localflavor/es/forms.py:69
msgid "Invalid checksum for NIE."
msgstr "El NIE es incorrecto."
-#: contrib/localflavor/es/forms.py:106
+#: contrib/localflavor/es/forms.py:70
msgid "Invalid checksum for CIF."
msgstr "El CIF es incorrecto."
-#: contrib/localflavor/es/forms.py:136
-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: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."
-#: contrib/localflavor/es/forms.py:150
+#: contrib/localflavor/es/forms.py:143
msgid "Invalid checksum for bank account number."
msgstr "El número de cuenta bancaria es incorrecto."
-#: contrib/localflavor/fi/forms.py:40
-#: contrib/localflavor/fi/forms.py:45
+#: contrib/localflavor/fi/forms.py:28
msgid "Enter a valid Finnish social security number."
msgstr "Introduzca un número de seguro social finlandés válido."
-#: contrib/localflavor/in_/forms.py:16
+#: contrib/localflavor/in_/forms.py:14
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:31
+#: contrib/localflavor/is_/forms.py:18
msgid "The Icelandic identification number is not valid."
msgstr "El número de identificación de Islandia no es válido."
-#: contrib/localflavor/it/forms.py:16
+#: contrib/localflavor/it/forms.py:14
msgid "Enter a valid zip code."
msgstr "Introduzca un código postal válido."
-#: contrib/localflavor/it/forms.py:41
+#: contrib/localflavor/it/forms.py:43
msgid "Enter a valid Social Security number."
msgstr "Introduzca un número de Seguro Social válido."
@@ -2187,7 +2319,7 @@ msgstr "Introduzca un número de Seguro Social válido."
msgid "Enter a valid VAT number."
msgstr "Introduzca un número VAT válido."
-#: contrib/localflavor/jp/forms.py:21
+#: 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 el formato XXXXX o XXXX-XXXX."
@@ -2379,15 +2511,143 @@ msgstr "Kagoshima"
msgid "Okinawa"
msgstr "Okinawa"
-#: contrib/localflavor/nl/forms.py:25
+#: contrib/localflavor/mx/mx_states.py:12
+msgid "Aguascalientes"
+msgstr "Aguascalientes"
+
+#: contrib/localflavor/mx/mx_states.py:13
+msgid "Baja California"
+msgstr "Baja California"
+
+#: contrib/localflavor/mx/mx_states.py:14
+msgid "Baja California Sur"
+msgstr "Baja California Sur"
+
+#: contrib/localflavor/mx/mx_states.py:15
+msgid "Campeche"
+msgstr "Campeche"
+
+#: contrib/localflavor/mx/mx_states.py:16
+msgid "Chihuahua"
+msgstr "Chihuahua"
+
+#: contrib/localflavor/mx/mx_states.py:17
+msgid "Chiapas"
+msgstr "Chiapas"
+
+#: contrib/localflavor/mx/mx_states.py:18
+msgid "Coahuila"
+msgstr "Coahuila"
+
+#: contrib/localflavor/mx/mx_states.py:19
+msgid "Colima"
+msgstr "Colima"
+
+#: contrib/localflavor/mx/mx_states.py:20
+msgid "Distrito Federal"
+msgstr "Distrito Federal"
+
+#: contrib/localflavor/mx/mx_states.py:21
+msgid "Durango"
+msgstr "Durango"
+
+#: contrib/localflavor/mx/mx_states.py:22
+msgid "Guerrero"
+msgstr "Guerrero"
+
+#: contrib/localflavor/mx/mx_states.py:23
+msgid "Guanajuato"
+msgstr "Guanajuato"
+
+#: contrib/localflavor/mx/mx_states.py:24
+msgid "Hidalgo"
+msgstr "Hidalgo"
+
+#: contrib/localflavor/mx/mx_states.py:25
+msgid "Jalisco"
+msgstr "Jalisco"
+
+#: contrib/localflavor/mx/mx_states.py:26
+msgid "Estado de México"
+msgstr "Estado de México"
+
+#: contrib/localflavor/mx/mx_states.py:27
+msgid "Michoacán"
+msgstr "Michoacán"
+
+#: contrib/localflavor/mx/mx_states.py:28
+msgid "Morelos"
+msgstr "Morelos"
+
+#: contrib/localflavor/mx/mx_states.py:29
+msgid "Nayarit"
+msgstr "Nayarit"
+
+#: contrib/localflavor/mx/mx_states.py:30
+msgid "Nuevo León"
+msgstr "Nuevo León"
+
+#: contrib/localflavor/mx/mx_states.py:31
+msgid "Oaxaca"
+msgstr "Oaxaca"
+
+#: contrib/localflavor/mx/mx_states.py:32
+msgid "Puebla"
+msgstr "Puebla"
+
+#: contrib/localflavor/mx/mx_states.py:33
+msgid "Querétaro"
+msgstr "Querétaro"
+
+#: contrib/localflavor/mx/mx_states.py:34
+msgid "Quintana Roo"
+msgstr "Quintana Roo"
+
+#: contrib/localflavor/mx/mx_states.py:35
+msgid "Sinaloa"
+msgstr "Sinaloa"
+
+#: contrib/localflavor/mx/mx_states.py:36
+msgid "San Luis Potosí"
+msgstr "San Luis Potosí"
+
+#: contrib/localflavor/mx/mx_states.py:37
+msgid "Sonora"
+msgstr "Sonora"
+
+#: contrib/localflavor/mx/mx_states.py:38
+msgid "Tabasco"
+msgstr "Tabasco"
+
+#: contrib/localflavor/mx/mx_states.py:39
+msgid "Tamaulipas"
+msgstr "Tamaulipas"
+
+#: contrib/localflavor/mx/mx_states.py:40
+msgid "Tlaxcala"
+msgstr "Tlaxcala"
+
+#: contrib/localflavor/mx/mx_states.py:41
+msgid "Veracruz"
+msgstr "Veracruz"
+
+#: contrib/localflavor/mx/mx_states.py:42
+msgid "Yucatán"
+msgstr "Yucatán"
+
+#: contrib/localflavor/mx/mx_states.py:43
+msgid "Zacatecas"
+msgstr "Zacatecas"
+
+#: contrib/localflavor/nl/forms.py:21
msgid "Enter a valid postal code"
msgstr "Introduzca un código postal válido"
-#: contrib/localflavor/nl/forms.py:53
+#: contrib/localflavor/nl/forms.py:52
msgid "Enter a valid phone number"
msgstr "Introduzca un número de teléfono válido"
-#: contrib/localflavor/nl/forms.py:76
+#: contrib/localflavor/nl/forms.py:78
msgid "Enter a valid SoFi number"
msgstr "Introduzca un número SoFi válido"
@@ -2439,43 +2699,47 @@ msgstr "Zeeland"
msgid "Zuid-Holland"
msgstr "Zuid-Holland"
-#: contrib/localflavor/no/forms.py:35
+#: contrib/localflavor/no/forms.py:33
msgid "Enter a valid Norwegian social security number."
msgstr "Introduzca un número de seguro social de Noruega válido."
-#: contrib/localflavor/pe/forms.py:36
+#: contrib/localflavor/pe/forms.py:24
msgid "This field requires 8 digits."
msgstr "Este campo necesita 8 dígitos."
-#: contrib/localflavor/pe/forms.py:59
+#: contrib/localflavor/pe/forms.py:52
msgid "This field requires 11 digits."
msgstr "Este campo necesita 11 dígitos."
-#: contrib/localflavor/pl/forms.py:41
+#: contrib/localflavor/pl/forms.py:39
msgid "National Identification Number consists of 11 digits."
msgstr "Número de Identificación Nacional consiste en 11 dígitos"
-#: contrib/localflavor/pl/forms.py:47
+#: contrib/localflavor/pl/forms.py:40
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 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 ""
+"Introduzca un número de impuesto (NIP) en el formato XXX-XXX-XX-XX or XX-XX-"
+"XXX-XXX."
-#: contrib/localflavor/pl/forms.py:78
+#: contrib/localflavor/pl/forms.py:73
msgid "Wrong checksum for the Tax Number (NIP)."
msgstr "El Número de Identificación Tributaria (NIP) es incorrecto."
-#: contrib/localflavor/pl/forms.py:107
+#: 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 11 dígitos"
+msgstr ""
+"El Número Nacional de Registro de Negocios (REGON) consiste en 11 dígitos"
#: contrib/localflavor/pl/forms.py:113
msgid "Wrong checksum for the National Business Register Number (REGON)."
msgstr "El Número Nacional de Registro de Negocios (REGON) es incorrecto."
-#: contrib/localflavor/pl/forms.py:148
+#: contrib/localflavor/pl/forms.py:156
msgid "Enter a postal code in the format XX-XXX."
msgstr "Introduzca un código postal en el formato XX-XXX."
@@ -2543,7 +2807,7 @@ msgstr "Greater Poland"
msgid "West Pomerania"
msgstr "West Pomerania"
-#: contrib/localflavor/sk/forms.py:32
+#: 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."
@@ -2895,33 +3159,366 @@ msgstr "Región de Trnava"
msgid "Zilina region"
msgstr "Región de Zilina"
-#: contrib/localflavor/uk/forms.py:18
-msgid "Enter a postcode. A space is required between the two postcode parts."
-msgstr "Introduzca un código postal. Se necesita un espacio entre las dos partes del código."
+#: contrib/localflavor/uk/forms.py:21
+msgid "Enter a valid postcode."
+msgstr "Introduzca un código postal válido"
+
+#: 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
+msgid "Surrey"
+msgstr ""
+
+#: 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
+msgid "Borders"
+msgstr ""
+
+#: 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
+msgid "Grampian"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:80
+msgid "Highland"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:81
+msgid "Lothian"
+msgstr ""
+
+#: 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 "Inglaterra"
-#: contrib/localflavor/us/forms.py:18
+#: contrib/localflavor/uk/uk_regions.py:91
+msgid "Northern Ireland"
+msgstr ""
+
+#: contrib/localflavor/uk/uk_regions.py:92
+msgid "Scotland"
+msgstr "Escocia"
+
+#: contrib/localflavor/uk/uk_regions.py:93
+msgid "Wales"
+msgstr "Gales"
+
+#: contrib/localflavor/us/forms.py:16
msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
msgstr "Introduzca un código postal en el formato XXXXX o XXXX-XXXX."
-#: contrib/localflavor/us/forms.py:51
+#: 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"
+msgstr "Introduzca un ID Sur Africano válido"
+
+#: contrib/localflavor/za/forms.py:54
+msgid "Enter a valid South African postal code"
+msgstr "Introduzca un código postal Sur Africano válido"
+
+#: 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 "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. Ejeplo: '/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. Ejeplo: '/"
+"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"
@@ -2931,23 +3528,23 @@ msgstr "redirección"
msgid "redirects"
msgstr "redirecciones"
-#: contrib/sessions/models.py:80
+#: contrib/sessions/models.py:41
msgid "session key"
msgstr "clave de sesión"
-#: contrib/sessions/models.py:81
+#: contrib/sessions/models.py:42
msgid "session data"
msgstr "datos de sesión"
-#: contrib/sessions/models.py:82
+#: contrib/sessions/models.py:43
msgid "expire date"
msgstr "fecha de caducidad"
-#: contrib/sessions/models.py:87
+#: contrib/sessions/models.py:48
msgid "session"
msgstr "sesión"
-#: contrib/sessions/models.py:88
+#: contrib/sessions/models.py:49
msgid "sessions"
msgstr "sesiones"
@@ -2972,8 +3569,11 @@ 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 letras, números, guiones bajos o barras solamente."
+msgid ""
+"This value must contain only letters, numbers, underscores, dashes or "
+"slashes."
+msgstr ""
+"Este valor debe contener letras, números, guiones bajos o barras solamente."
#: core/validators.py:80
msgid "This value must contain only letters, numbers, underscores or hyphens."
@@ -3011,8 +3611,7 @@ 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:149
+#: core/validators.py:128 newforms/fields.py:152
msgid "Enter a whole number."
msgstr "Introduzca un número entero."
@@ -3029,8 +3628,7 @@ msgstr "El año debe ser 1900 o posterior."
msgid "Invalid date: %s"
msgstr "Fecha no válida: %s"
-#: core/validators.py:156
-#: db/models/fields/__init__.py:505
+#: core/validators.py:156 db/models/fields/__init__.py:527
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Introduzca una fecha válida en formato AAAA-MM-DD."
@@ -3038,27 +3636,28 @@ msgstr "Introduzca una fecha válida en formato AAAA-MM-DD."
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:579
+#: core/validators.py:165 db/models/fields/__init__.py:604
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:343
+#: core/validators.py:170 newforms/fields.py:403
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:377
-#: oldforms/__init__.py:686
+#: core/validators.py:182 core/validators.py:474 newforms/fields.py:433
+#: oldforms/__init__.py:687
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:405
-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: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:200
#, python-format
@@ -3068,7 +3667,9 @@ msgstr "La URL %s no apunta a una imagen válida."
#: core/validators.py:204
#, 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
#, python-format
@@ -3098,8 +3699,7 @@ msgstr "XML mal formado: %s"
msgid "Invalid URL: %s"
msgstr "URL no válida: %s"
-#: core/validators.py:259
-#: core/validators.py:261
+#: core/validators.py:259 core/validators.py:261
#, python-format
msgid "The URL %s is a broken link."
msgstr "La URL %s es un enlace roto."
@@ -3124,8 +3724,7 @@ msgstr "Este campo debe concordar con el campo '%s'."
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:316 core/validators.py:327
msgid "Please enter both fields or leave them both empty."
msgstr "Por favor, rellene ambos campos o deje ambos vacíos."
@@ -3170,23 +3769,39 @@ msgstr "Por favor, introduzca un número decimal válido."
#: core/validators.py:444
#, 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
#, 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
#, 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
msgid "Please enter a valid floating point number."
@@ -3217,38 +3832,65 @@ msgstr "No pude obtener nada de %s."
#: core/validators.py:539
#, 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
#, 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
#, 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
#, 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
#, 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
#, 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
#, 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
#, python-format
@@ -3260,211 +3902,211 @@ msgstr "%(object)s de este %(type)s ya existen en este %(field)s."
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "Ya existe %(optname)s con este %(fieldname)s."
-#: db/models/fields/__init__.py:159
-#: db/models/fields/__init__.py:316
-#: db/models/fields/__init__.py:731
-#: db/models/fields/__init__.py:742
-#: newforms/fields.py:93
-#: newforms/fields.py:513
-#: newforms/fields.py:589
-#: newforms/fields.py:600
-#: newforms/models.py:193
-#: oldforms/__init__.py:373
+#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:327
+#: db/models/fields/__init__.py:759 db/models/fields/__init__.py:770
+#: newforms/fields.py:46 oldforms/__init__.py:374
msgid "This field is required."
msgstr "Este campo es obligatorio."
-#: db/models/fields/__init__.py:414
+#: db/models/fields/__init__.py:427
msgid "This value must be an integer."
msgstr "Este valor debe ser un entero."
-#: db/models/fields/__init__.py:450
+#: db/models/fields/__init__.py:466
msgid "This value must be either True or False."
msgstr "Este valor debe ser Verdadero o Falso."
-#: db/models/fields/__init__.py:471
+#: db/models/fields/__init__.py:490
msgid "This field cannot be null."
msgstr "Este campo no puede estar vacío."
-#: db/models/fields/__init__.py:640
+#: db/models/fields/__init__.py:668
msgid "This value must be a decimal number."
msgstr "Este valor debe ser un entero."
-#: db/models/fields/__init__.py:751
+#: db/models/fields/__init__.py:779
msgid "Enter a valid filename."
msgstr "Introduzca un nombre de fichero válido"
-#: db/models/fields/__init__.py:900
+#: db/models/fields/__init__.py:960
msgid "This value must be either None, True or False."
msgstr "Este valor debe ser Verdadero o Falso."
-#: db/models/fields/related.py:658
+#: 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:701
msgid "Separate multiple IDs with commas."
msgstr "Separe múltiples IDs con comas."
-#: db/models/fields/related.py:660
-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 uno."
+#: db/models/fields/related.py:703
+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 uno."
-#: db/models/fields/related.py:707
+#: db/models/fields/related.py:750
#, 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:123
+#: newforms/fields.py:47
+msgid "Enter a valid value."
+msgstr "Introduzca un valor correcto."
+
+#: newforms/fields.py:124
#, 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
#, 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:151
-#: newforms/fields.py:174
-#: newforms/fields.py:204
+#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211
#, 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:153
-#: newforms/fields.py:176
-#: newforms/fields.py:206
+#: newforms/fields.py:154 newforms/fields.py:183 newforms/fields.py:212
#, 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:172
-#: newforms/fields.py:199
+#: newforms/fields.py:181 newforms/fields.py:210
msgid "Enter a number."
msgstr "Introduzca un número."
-#: newforms/fields.py:208
+#: newforms/fields.py:213
#, 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:210
+#: newforms/fields.py:214
#, 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:212
+#: newforms/fields.py:215
#, 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 del punto decimal."
-#: newforms/fields.py:245
-#: newforms/fields.py:633
+#: newforms/fields.py:263 newforms/fields.py:751
msgid "Enter a valid date."
msgstr "Introduzca una fecha válida."
-#: newforms/fields.py:272
-#: newforms/fields.py:635
+#: newforms/fields.py:296 newforms/fields.py:752
msgid "Enter a valid time."
msgstr "Introduzca una hora válida."
-#: newforms/fields.py:308
+#: newforms/fields.py:335
msgid "Enter a valid date/time."
msgstr "Introduzca una fecha/hora válida."
-#: newforms/fields.py:321
-msgid "Enter a valid value."
-msgstr "Introduzca un valor correcto."
-
-#: newforms/fields.py:379
+#: newforms/fields.py:434
msgid "No file was submitted."
msgstr "No se ha enviado ningún fichero"
-#: newforms/fields.py:381
-#: oldforms/__init__.py:688
+#: newforms/fields.py:435 oldforms/__init__.py:689
msgid "The submitted file is empty."
msgstr "El fichero enviado está vacío."
-#: newforms/fields.py:419
-#: newforms/fields.py:444
+#: newforms/fields.py:497
msgid "Enter a valid URL."
msgstr "Introduzca una URL válida."
-#: newforms/fields.py:446
+#: newforms/fields.py:498
msgid "This URL appears to be a broken link."
msgstr "La URL parece ser un enlace roto."
-#: newforms/fields.py:501
-#: newforms/models.py:180
+#: 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 aceptadas."
-#: newforms/fields.py:517
-#: newforms/fields.py:593
-#: newforms/models.py:197
+#: newforms/fields.py:599
+#, 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."
+
+#: newforms/fields.py:600 newforms/fields.py:662 newforms/models.py:371
msgid "Enter a list of values."
msgstr "Introduzca una lista de valores."
-#: newforms/fields.py:523
-#: newforms/models.py:203
+#: newforms/fields.py:780
+msgid "Enter a valid IPv4 address."
+msgstr "Introduzca una dirección IPv4 válida."
+
+#: newforms/models.py:372
#, 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."
-#: newforms/fields.py:644
-msgid "Enter a valid IPv4 address."
-msgstr "Introduzca una dirección IPv4 válida."
-
-#: oldforms/__init__.py:408
+#: 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."
msgstr[0] "Asegúrese de que su texto tiene menos de %s carácter."
msgstr[1] "Asegúrese de que su texto tiene menos de %s caracteres."
-#: oldforms/__init__.py:413
+#: oldforms/__init__.py:414
msgid "Line breaks are not allowed here."
msgstr "No se permiten saltos de línea."
-#: oldforms/__init__.py:511
-#: oldforms/__init__.py:585
-#: oldforms/__init__.py:624
+#: 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:744
+#: oldforms/__init__.py:745
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:754
+#: oldforms/__init__.py:755
msgid "Enter a positive number."
msgstr "Introduzca un número positivo."
-#: oldforms/__init__.py:764
+#: oldforms/__init__.py:765
msgid "Enter a whole number between 0 and 32,767."
msgstr "Introduzca un número entero entre 0 y 32,767."
-#: template/defaultfilters.py:541
+#: template/defaultfilters.py:698
msgid "yes,no,maybe"
msgstr "sí,no,tal vez"
-#: template/defaultfilters.py:570
+#: 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:572
+#: template/defaultfilters.py:731
#, python-format
msgid "%.1f KB"
msgstr "%.1f KB"
-#: template/defaultfilters.py:574
+#: template/defaultfilters.py:733
#, python-format
msgid "%.1f MB"
msgstr "%.1f MB"
-#: template/defaultfilters.py:575
+#: template/defaultfilters.py:734
#, python-format
msgid "%.1f GB"
msgstr "%.1f GB"
@@ -3557,28 +4199,23 @@ 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"
@@ -3732,23 +4369,23 @@ msgstr "%(number)d %(type)s"
msgid ", %(number)d %(type)s"
msgstr ", %(number)d %(type)s"
-#: utils/translation/trans_real.py:391
+#: utils/translation/trans_real.py:403
msgid "DATE_FORMAT"
msgstr "j N Y"
-#: utils/translation/trans_real.py:392
+#: utils/translation/trans_real.py:404
msgid "DATETIME_FORMAT"
msgstr "j N Y P"
-#: utils/translation/trans_real.py:393
+#: utils/translation/trans_real.py:405
msgid "TIME_FORMAT"
msgstr "P"
-#: utils/translation/trans_real.py:409
+#: utils/translation/trans_real.py:421
msgid "YEAR_MONTH_FORMAT"
msgstr "F Y"
-#: utils/translation/trans_real.py:410
+#: utils/translation/trans_real.py:422
msgid "MONTH_DAY_FORMAT"
msgstr "j \\de F"
@@ -3767,3 +4404,11 @@ msgstr "Se actualizó con éxito el %(verbose_name)s."
msgid "The %(verbose_name)s was deleted."
msgstr "El %(verbose_name)s ha sido eliminado."
+#~ msgid "Gaeilge"
+#~ msgstr "Gaeilge"
+
+#~ msgid ""
+#~ "Enter a postcode. A space is required between the two postcode parts."
+#~ msgstr ""
+#~ "Introduzca un código postal. Se necesita un espacio entre las dos partes "
+#~ "del código."
diff --git a/django/conf/locale/es/LC_MESSAGES/djangojs.mo b/django/conf/locale/es/LC_MESSAGES/djangojs.mo
index fa886fba26..b42ebb3c78 100644
--- a/django/conf/locale/es/LC_MESSAGES/djangojs.mo
+++ b/django/conf/locale/es/LC_MESSAGES/djangojs.mo
Binary files differ
diff --git a/django/conf/locale/es/LC_MESSAGES/djangojs.po b/django/conf/locale/es/LC_MESSAGES/djangojs.po
index f85ea6dcb6..4ad90fadd3 100644
--- a/django/conf/locale/es/LC_MESSAGES/djangojs.po
+++ b/django/conf/locale/es/LC_MESSAGES/djangojs.po
@@ -1,14 +1,14 @@
# Spanish translation for the django-admin JS files.
-# Copyright (C)
-# This file is distributed under the same license as the PACKAGE package.
-#
+# Copyright (C) 2008, The Django Project
+# 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: 2007-07-14 13:47-0500\n"
-"PO-Revision-Date: 2007-07-14 13:41-0500\n"
-"Last-Translator: Jorge Gajon <gajon@gajon.org>\n"
+"POT-Creation-Date: 2005-10-04 00:00+0200\n"
+"PO-Revision-Date: 2008-03-30 00:54+0100\n"
+"Last-Translator: Django Spanish Group <django-i18n@googlegroups.com>\n"
+"Language-Team: Spanish <django-i18n@googlegroups.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
diff --git a/django/conf/locale/pl/LC_MESSAGES/django.mo b/django/conf/locale/pl/LC_MESSAGES/django.mo
index 6677af0674..f47adbd813 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 c33afac470..d18ab7c5fa 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-02-25 12:45+0100\n"
+"POT-Creation-Date: 2008-03-29 20:56+0100\n"
"PO-Revision-Date: 2008-02-25 15:53+0100\n"
"Last-Translator: Łukasz Czyżykowki <lukasz.czyzykowski@gmail.com>\n"
"Language-Team: Polish <pl@li.org>\n"
@@ -65,134 +65,142 @@ msgid "Argentinean Spanish"
msgstr "Hiszpański argentyński"
#: conf/global_settings.py:51
+msgid "Basque"
+msgstr "Baskijski"
+
+#: conf/global_settings.py:52
msgid "Persian"
msgstr "Perski"
-#: conf/global_settings.py:52
+#: conf/global_settings.py:53
msgid "Finnish"
msgstr "Fiński"
-#: conf/global_settings.py:53
+#: conf/global_settings.py:54
msgid "French"
msgstr "Francuski"
-#: conf/global_settings.py:54
-msgid "Gaeilge"
-msgstr "Gaelicki"
-
#: conf/global_settings.py:55
+msgid "Irish"
+msgstr "Irlandzki"
+
+#: conf/global_settings.py:56
msgid "Galician"
msgstr "Galicyjski"
-#: conf/global_settings.py:56
+#: conf/global_settings.py:57
msgid "Hungarian"
msgstr "Węgierski"
-#: conf/global_settings.py:57
+#: conf/global_settings.py:58
msgid "Hebrew"
msgstr "Hebrajski"
-#: conf/global_settings.py:58
+#: conf/global_settings.py:59
msgid "Croatian"
msgstr "Horwacki"
-#: conf/global_settings.py:59
+#: conf/global_settings.py:60
msgid "Icelandic"
msgstr "Islandzki"
-#: conf/global_settings.py:60
+#: conf/global_settings.py:61
msgid "Italian"
msgstr "Włoski"
-#: conf/global_settings.py:61
+#: conf/global_settings.py:62
msgid "Japanese"
msgstr "Japoński"
-#: conf/global_settings.py:62
+#: conf/global_settings.py:63
+msgid "Georgian"
+msgstr "Gruziński"
+
+#: conf/global_settings.py:64
msgid "Korean"
msgstr "Koreański"
-#: conf/global_settings.py:63
+#: conf/global_settings.py:65
msgid "Khmer"
msgstr "Khmerski"
-#: conf/global_settings.py:64
+#: conf/global_settings.py:66
msgid "Kannada"
msgstr "Kannada"
-#: conf/global_settings.py:65
+#: conf/global_settings.py:67
msgid "Latvian"
msgstr "Łotewski"
-#: conf/global_settings.py:66
+#: conf/global_settings.py:68
msgid "Macedonian"
msgstr "Macedoński"
-#: conf/global_settings.py:67
+#: conf/global_settings.py:69
msgid "Dutch"
msgstr "Holenderski"
-#: conf/global_settings.py:68
+#: conf/global_settings.py:70
msgid "Norwegian"
msgstr "Norweski"
-#: conf/global_settings.py:69
+#: conf/global_settings.py:71
msgid "Polish"
msgstr "Polski"
-#: conf/global_settings.py:70
+#: conf/global_settings.py:72
msgid "Portugese"
msgstr "Portugalski"
-#: conf/global_settings.py:71
+#: conf/global_settings.py:73
msgid "Brazilian"
msgstr "Brazylijski"
-#: conf/global_settings.py:72
+#: conf/global_settings.py:74
msgid "Romanian"
msgstr "Rumuński"
-#: conf/global_settings.py:73
+#: conf/global_settings.py:75
msgid "Russian"
msgstr "Rosyjski"
-#: conf/global_settings.py:74
+#: conf/global_settings.py:76
msgid "Slovak"
msgstr "Słowacki"
-#: conf/global_settings.py:75
+#: conf/global_settings.py:77
msgid "Slovenian"
msgstr "Słoweński"
-#: conf/global_settings.py:76
+#: conf/global_settings.py:78
msgid "Serbian"
msgstr "Serbski"
-#: conf/global_settings.py:77
+#: conf/global_settings.py:79
msgid "Swedish"
msgstr "Szwedzki"
-#: conf/global_settings.py:78
+#: conf/global_settings.py:80
msgid "Tamil"
msgstr "Tamilski"
-#: conf/global_settings.py:79
+#: conf/global_settings.py:81
msgid "Telugu"
msgstr "Telugu"
-#: conf/global_settings.py:80
+#: conf/global_settings.py:82
msgid "Turkish"
msgstr "Turecki"
-#: conf/global_settings.py:81
+#: conf/global_settings.py:83
msgid "Ukrainian"
msgstr "Ukraiński"
-#: conf/global_settings.py:82
+#: conf/global_settings.py:84
msgid "Simplified Chinese"
msgstr "Uproszczony chiński"
-#: conf/global_settings.py:83
+#: conf/global_settings.py:85
msgid "Traditional Chinese"
msgstr "Chiński tradycyjny"
@@ -472,7 +480,7 @@ msgid "Password:"
msgstr "Hasło:"
#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:25
+#: contrib/admin/views/decorators.py:31
msgid "Log in"
msgstr "Zaloguj się"
@@ -791,7 +799,7 @@ msgstr "Hasło zostało zmienione pomyślnie."
msgid "Change password: %s"
msgstr "Zmień hasło: %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."
@@ -799,7 +807,7 @@ msgstr ""
"Proszę wpisać poprawną nazwę użytkownika i hasło. Uwaga: wielkość liter ma "
"znaczenie."
-#: 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."
@@ -807,7 +815,7 @@ msgstr ""
"Zaloguj się ponownie. Twoja sesja wygasła lecz twoje zgłoszenie zostało "
"zapisane."
-#: 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."
@@ -815,11 +823,11 @@ msgstr ""
"Twoja przeglądarka nie chce akceptować ciasteczek. Zmień jej ustawienia i "
"spróbuj ponownie."
-#: contrib/admin/views/decorators.py:84
+#: contrib/admin/views/decorators.py:90
msgid "Usernames cannot contain the '@' character."
msgstr "Nazwy użytkowników nie mogą zawierać znaków '@'."
-#: contrib/admin/views/decorators.py:86
+#: contrib/admin/views/decorators.py:92
#, 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'."
@@ -947,7 +955,7 @@ msgstr "Tekst"
msgid "Time"
msgstr "Czas"
-#: 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 "URL"
@@ -1542,42 +1550,42 @@ msgstr "Błędny ID komentarza"
msgid "No voting for yourself"
msgstr "Nie można głosować na siebie"
-#: contrib/contenttypes/models.py:37
+#: contrib/contenttypes/models.py:67
msgid "python model class name"
msgstr "nazwa pythonowa modelu klasy"
-#: contrib/contenttypes/models.py:40
+#: contrib/contenttypes/models.py:71
msgid "content type"
msgstr "typ zawartości"
-#: contrib/contenttypes/models.py:41
+#: contrib/contenttypes/models.py:72
msgid "content types"
msgstr "typy zawartości"
-#: contrib/flatpages/models.py:8
+#: contrib/flatpages/models.py:9
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
"Przykład: '/about/contact/'. Upewnij się że wpisałeś otwierający i "
"zamykający ukośnik."
-#: contrib/flatpages/models.py:9
+#: contrib/flatpages/models.py:10
msgid "title"
msgstr "tytuł"
-#: contrib/flatpages/models.py:10
+#: contrib/flatpages/models.py:11
msgid "content"
msgstr "zawartość"
-#: contrib/flatpages/models.py:11
+#: contrib/flatpages/models.py:12
msgid "enable comments"
msgstr "włącz komentarze"
-#: contrib/flatpages/models.py:12
+#: contrib/flatpages/models.py:13
msgid "template name"
msgstr "nazwa szablonu"
-#: 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'."
@@ -1585,40 +1593,44 @@ msgstr ""
"Przykład: 'flatpages/contact_page.html'. Jeżeli nie zostanie podane, system "
"użyje 'flatpages/default.html'."
-#: contrib/flatpages/models.py:14
+#: contrib/flatpages/models.py:15
msgid "registration required"
msgstr "wymagana rejestracja"
-#: 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 ""
"Jeżeli zaznaczone - tylko zalogowani użytkownicy będą mogli zobaczyć stronę."
-#: contrib/flatpages/models.py:18
+#: contrib/flatpages/models.py:20
msgid "flat page"
msgstr "strona statyczna"
-#: contrib/flatpages/models.py:19
+#: contrib/flatpages/models.py:21
msgid "flat pages"
msgstr "strony statyczne"
-#: contrib/humanize/templatetags/humanize.py:20
+#: contrib/flatpages/models.py:27
+msgid "Advanced options"
+msgstr "Opcje zaawansowane"
+
+#: contrib/humanize/templatetags/humanize.py:19
msgid "th"
msgstr "-y"
-#: contrib/humanize/templatetags/humanize.py:20
+#: contrib/humanize/templatetags/humanize.py:19
msgid "st"
msgstr "-szy"
-#: contrib/humanize/templatetags/humanize.py:20
+#: contrib/humanize/templatetags/humanize.py:19
msgid "nd"
msgstr "-gi"
-#: contrib/humanize/templatetags/humanize.py:20
+#: contrib/humanize/templatetags/humanize.py:19
msgid "rd"
msgstr "-ci"
-#: contrib/humanize/templatetags/humanize.py:52
+#: contrib/humanize/templatetags/humanize.py:51
#, python-format
msgid "%(value).1f million"
msgid_plural "%(value).1f million"
@@ -1626,7 +1638,7 @@ msgstr[0] "%(value).1f milion"
msgstr[1] "%(value).1f miliony"
msgstr[2] "%(value).1f milionów"
-#: contrib/humanize/templatetags/humanize.py:55
+#: contrib/humanize/templatetags/humanize.py:54
#, python-format
msgid "%(value).1f billion"
msgid_plural "%(value).1f billion"
@@ -1634,7 +1646,7 @@ msgstr[0] "%(value).1f miliard"
msgstr[1] "%(value).1f miliardy"
msgstr[2] "%(value).1f miliardów"
-#: contrib/humanize/templatetags/humanize.py:58
+#: contrib/humanize/templatetags/humanize.py:57
#, python-format
msgid "%(value).1f trillion"
msgid_plural "%(value).1f trillion"
@@ -1642,73 +1654,73 @@ msgstr[0] "%(value).1f bilion"
msgstr[1] "%(value).1f biliony"
msgstr[2] "%(value).1f bilionów"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "one"
msgstr "jeden"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "two"
msgstr "dwa"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "three"
msgstr "trzy"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "four"
msgstr "cztery"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "five"
msgstr "pięć"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "six"
msgstr "sześć"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "seven"
msgstr "siedem"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "eight"
msgstr "osiem"
-#: contrib/humanize/templatetags/humanize.py:74
+#: contrib/humanize/templatetags/humanize.py:73
msgid "nine"
msgstr "dziewięć"
-#: contrib/humanize/templatetags/humanize.py:94
+#: contrib/humanize/templatetags/humanize.py:93
msgid "today"
msgstr "dzisiaj"
-#: contrib/humanize/templatetags/humanize.py:96
+#: contrib/humanize/templatetags/humanize.py:95
msgid "tomorrow"
msgstr "jutro"
-#: contrib/humanize/templatetags/humanize.py:98
+#: contrib/humanize/templatetags/humanize.py:97
msgid "yesterday"
msgstr "wczoraj"
-#: contrib/localflavor/ar/forms.py:28
+#: contrib/localflavor/ar/forms.py:27
msgid "Enter a postal code in the format NNNN or ANNNNAAA."
msgstr "Wpisz kod pocztowy w formacie NNNN lub 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 "To pole może zawierać jedynie liczby."
-#: contrib/localflavor/ar/forms.py:51
+#: contrib/localflavor/ar/forms.py:50
msgid "This field requires 7 or 8 digits."
msgstr "To pole musi zawierać 7 lub 8 cyfr."
-#: 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 "Podaj poprawny numer CUIT w formacie XX-XXXXXXXX-X lub XXXXXXXXXXXX."
-#: contrib/localflavor/ar/forms.py:81
+#: contrib/localflavor/ar/forms.py:80
msgid "Invalid CUIT."
msgstr "Niepoprawny CUIT"
@@ -2300,7 +2312,7 @@ msgstr "Wpisz poprawny numer ubezpieczenia socjalnego."
msgid "Enter a valid VAT number."
msgstr "Wpisz poprawny numer VAT."
-#: 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 "Wpisz kod pocztowy w formacie XXXXXXX lub XXX-XXXX."
@@ -2549,11 +2561,13 @@ msgid "Jalisco"
msgstr "Jalisco"
#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
+#, fuzzy
+msgid "Estado de México"
msgstr "Meksyk (stan)"
#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
+#, fuzzy
+msgid "Michoacán"
msgstr "Michocan"
#: contrib/localflavor/mx/mx_states.py:28
@@ -2565,7 +2579,8 @@ msgid "Nayarit"
msgstr "Nayarit"
#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
+#, fuzzy
+msgid "Nuevo León"
msgstr "Nuevo Leon"
#: contrib/localflavor/mx/mx_states.py:31
@@ -2577,7 +2592,8 @@ msgid "Puebla"
msgstr "Puebla"
#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
+#, fuzzy
+msgid "Querétaro"
msgstr "Queretaro"
#: contrib/localflavor/mx/mx_states.py:34
@@ -2589,7 +2605,8 @@ msgid "Sinaloa"
msgstr "Sinaloa"
#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
+#, fuzzy
+msgid "San Luis Potosí"
msgstr "San Luis Potasi"
#: contrib/localflavor/mx/mx_states.py:37
@@ -2613,7 +2630,8 @@ msgid "Veracruz"
msgstr "Veracruz"
#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
+#, fuzzy
+msgid "Yucatán"
msgstr "Jukatan"
#: contrib/localflavor/mx/mx_states.py:43
@@ -3501,23 +3519,23 @@ msgstr "przekieruj"
msgid "redirects"
msgstr "przekierowania"
-#: contrib/sessions/models.py:46
+#: contrib/sessions/models.py:41
msgid "session key"
msgstr "klucz sesji"
-#: contrib/sessions/models.py:47
+#: contrib/sessions/models.py:42
msgid "session data"
msgstr "data sesji"
-#: contrib/sessions/models.py:48
+#: contrib/sessions/models.py:43
msgid "expire date"
msgstr "data wygaśnięcia sesji"
-#: contrib/sessions/models.py:53
+#: contrib/sessions/models.py:48
msgid "session"
msgstr "sesja"
-#: contrib/sessions/models.py:54
+#: contrib/sessions/models.py:49
msgid "sessions"
msgstr "sesje"
@@ -3585,7 +3603,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:151
+#: core/validators.py:128 newforms/fields.py:152
msgid "Enter a whole number."
msgstr "Wpisz liczbę całkowitą."
@@ -3602,7 +3620,7 @@ msgstr "Rok nie może być wcześniejszy niż 1900."
msgid "Invalid date: %s"
msgstr "Niepoprawna data: %s"
-#: core/validators.py:156 db/models/fields/__init__.py:509
+#: core/validators.py:156 db/models/fields/__init__.py:527
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Proszę wpisać poprawną datę w formacie RRRR-MM-DD."
@@ -3610,20 +3628,20 @@ msgstr "Proszę wpisać poprawną datę w formacie RRRR-MM-DD."
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:583
+#: core/validators.py:165 db/models/fields/__init__.py:604
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:402
+#: core/validators.py:170 newforms/fields.py:403
msgid "Enter a valid e-mail address."
msgstr "Wprowadź poprawny adres e-mail."
-#: core/validators.py:182 core/validators.py:474 newforms/fields.py:432
+#: core/validators.py:182 core/validators.py:474 newforms/fields.py:433
#: oldforms/__init__.py:687
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:458
+#: 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."
@@ -3879,54 +3897,54 @@ msgstr "%(object)s z %(type)s już istnieje dla %(field)s."
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "Już istnieje %(optname)s z %(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:161 db/models/fields/__init__.py:327
+#: db/models/fields/__init__.py:759 db/models/fields/__init__.py:770
+#: newforms/fields.py:46 oldforms/__init__.py:374
msgid "This field is required."
msgstr "To pole jest wymagane."
-#: db/models/fields/__init__.py:418
+#: db/models/fields/__init__.py:427
msgid "This value must be an integer."
msgstr "Ta wartość musi być liczbą całkowitą."
-#: db/models/fields/__init__.py:454
+#: db/models/fields/__init__.py:466
msgid "This value must be either True or False."
msgstr "Ta wartość musi być logiczna (True, False - prawda lub fałsz)."
-#: db/models/fields/__init__.py:475
+#: db/models/fields/__init__.py:490
msgid "This field cannot be null."
msgstr "To pole nie może być puste."
-#: db/models/fields/__init__.py:644
+#: db/models/fields/__init__.py:668
msgid "This value must be a decimal number."
msgstr "Ta wartość musi być liczbą dziesiętną."
-#: db/models/fields/__init__.py:755
+#: db/models/fields/__init__.py:779
msgid "Enter a valid filename."
msgstr "Wpisz poprawną nazwę pliku."
-#: db/models/fields/__init__.py:908
+#: db/models/fields/__init__.py:960
msgid "This value must be either None, True or False."
msgstr ""
"Ta wartość musi być jedną z None (żadne), True (prawda) lub False (fałsz)."
-#: db/models/fields/related.py:55
+#: db/models/fields/related.py:93
#, python-format
msgid "Please enter a valid %s."
msgstr "Proszę wpisać poprawne %s."
-#: db/models/fields/related.py:658
+#: db/models/fields/related.py:701
msgid "Separate multiple IDs with commas."
msgstr "Oddziel identyfikatory przecinkami."
-#: db/models/fields/related.py:660
+#: db/models/fields/related.py:703
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:707
+#: db/models/fields/related.py:750
#, python-format
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
msgid_plural ""
@@ -3941,100 +3959,100 @@ msgstr[2] ""
"Proszę podać poprawne identyfikatory %(self)s. Wartości %(value)r są "
"niepoprawne."
-#: newforms/fields.py:46
+#: newforms/fields.py:47
msgid "Enter a valid value."
msgstr "Wpisz poprawną wartość."
-#: newforms/fields.py:123
+#: newforms/fields.py:124
#, 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:124
+#: newforms/fields.py:125
#, 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:152 newforms/fields.py:181 newforms/fields.py:210
+#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211
#, 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:153 newforms/fields.py:182 newforms/fields.py:211
+#: newforms/fields.py:154 newforms/fields.py:183 newforms/fields.py:212
#, 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:180 newforms/fields.py:209
+#: newforms/fields.py:181 newforms/fields.py:210
msgid "Enter a number."
msgstr "Wpisz liczbę."
-#: newforms/fields.py:212
+#: newforms/fields.py:213
#, 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:213
+#: newforms/fields.py:214
#, 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:214
+#: newforms/fields.py:215
#, 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:262 newforms/fields.py:723
+#: newforms/fields.py:263 newforms/fields.py:751
msgid "Enter a valid date."
msgstr "Wpisz poprawną datę."
-#: newforms/fields.py:295 newforms/fields.py:724
+#: newforms/fields.py:296 newforms/fields.py:752
msgid "Enter a valid time."
msgstr "Wpisz poprawną godzinę."
-#: newforms/fields.py:334
+#: newforms/fields.py:335
msgid "Enter a valid date/time."
msgstr "Wpisz poprawną datę/godzinę."
-#: newforms/fields.py:433
+#: newforms/fields.py:434
msgid "No file was submitted."
msgstr "Żaden plik nie został przesłany."
-#: newforms/fields.py:434 oldforms/__init__.py:689
+#: newforms/fields.py:435 oldforms/__init__.py:689
msgid "The submitted file is empty."
msgstr "Wysłany plik jest pusty."
-#: newforms/fields.py:496
+#: newforms/fields.py:497
msgid "Enter a valid URL."
msgstr "Wpisz poprawny URL."
-#: newforms/fields.py:497
+#: newforms/fields.py:498
msgid "This URL appears to be a broken link."
msgstr "Ten odnośnik jest nieprawidłowy."
-#: newforms/fields.py:559 newforms/models.py:317
+#: newforms/fields.py:560 newforms/models.py:299
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
+#: newforms/fields.py:599
#, 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:377
+#: newforms/fields.py:600 newforms/fields.py:662 newforms/models.py:371
msgid "Enter a list of values."
msgstr "Podaj listę wartości."
-#: newforms/fields.py:752
+#: newforms/fields.py:780
msgid "Enter a valid IPv4 address."
msgstr "Wprowadź poprawny adres IPv4."
-#: newforms/models.py:378
+#: newforms/models.py:372
#, 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."
@@ -4068,11 +4086,11 @@ msgstr "Proszę wpisać liczbę dodatnią."
msgid "Enter a whole number between 0 and 32,767."
msgstr "Proszę wpisać liczbę całkowitą z zakresu od 0 do 32 767"
-#: template/defaultfilters.py:691
+#: template/defaultfilters.py:698
msgid "yes,no,maybe"
msgstr "tak,nie,może"
-#: template/defaultfilters.py:722
+#: template/defaultfilters.py:729
#, python-format
msgid "%(size)d byte"
msgid_plural "%(size)d bytes"
@@ -4080,17 +4098,17 @@ msgstr[0] "%(size)d bajt"
msgstr[1] "%(size)d bajty"
msgstr[2] "%(size)d bajtów"
-#: 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"
@@ -4359,23 +4377,23 @@ msgstr "%(number)d %(type)s"
msgid ", %(number)d %(type)s"
msgstr ", %(number)d %(type)s"
-#: utils/translation/trans_real.py:404
+#: utils/translation/trans_real.py:403
msgid "DATE_FORMAT"
msgstr "Y-m-d"
-#: utils/translation/trans_real.py:405
+#: utils/translation/trans_real.py:404
msgid "DATETIME_FORMAT"
msgstr "Y-m-d H:i:s"
-#: utils/translation/trans_real.py:406
+#: utils/translation/trans_real.py:405
msgid "TIME_FORMAT"
msgstr "H:i:s"
-#: utils/translation/trans_real.py:422
+#: utils/translation/trans_real.py:421
msgid "YEAR_MONTH_FORMAT"
msgstr "Y-m"
-#: utils/translation/trans_real.py:423
+#: utils/translation/trans_real.py:422
msgid "MONTH_DAY_FORMAT"
msgstr "m-d"
@@ -4394,6 +4412,9 @@ msgstr "%(verbose_name)s zostało pomyślnie zmienione."
msgid "The %(verbose_name)s was deleted."
msgstr "%(verbose_name)s zostało usunięte."
+#~ msgid "Gaeilge"
+#~ msgstr "Gaelicki"
+
#~ msgid ""
#~ "Enter a postcode. A space is required between the two postcode parts."
#~ msgstr ""
diff --git a/django/contrib/admin/templatetags/admin_list.py b/django/contrib/admin/templatetags/admin_list.py
index e45b6ed0bb..6db59ea338 100644
--- a/django/contrib/admin/templatetags/admin_list.py
+++ b/django/contrib/admin/templatetags/admin_list.py
@@ -22,7 +22,7 @@ def paginator_number(cl,i):
elif i == cl.page_num:
return mark_safe(u'<span class="this-page">%d</span> ' % (i+1))
else:
- return mark_safe(u'<a href="%s"%s>%d</a> ' % (cl.get_query_string({PAGE_VAR: i}), (i == cl.paginator.pages-1 and ' class="end"' or ''), i+1))
+ return mark_safe(u'<a href="%s"%s>%d</a> ' % (cl.get_query_string({PAGE_VAR: i}), (i == cl.paginator.num_pages-1 and ' class="end"' or ''), i+1))
paginator_number = register.simple_tag(paginator_number)
def pagination(cl):
@@ -37,8 +37,8 @@ def pagination(cl):
# If there are 10 or fewer pages, display links to every page.
# Otherwise, do some fancy
- if paginator.pages <= 10:
- page_range = range(paginator.pages)
+ if paginator.num_pages <= 10:
+ page_range = range(paginator.num_pages)
else:
# Insert "smart" pagination links, so that there are always ON_ENDS
# links at either end of the list of pages, and there are always
@@ -50,12 +50,12 @@ def pagination(cl):
page_range.extend(range(page_num - ON_EACH_SIDE, page_num + 1))
else:
page_range.extend(range(0, page_num + 1))
- if page_num < (paginator.pages - ON_EACH_SIDE - ON_ENDS - 1):
+ if page_num < (paginator.num_pages - ON_EACH_SIDE - ON_ENDS - 1):
page_range.extend(range(page_num + 1, page_num + ON_EACH_SIDE + 1))
page_range.append(DOT)
- page_range.extend(range(paginator.pages - ON_ENDS, paginator.pages))
+ page_range.extend(range(paginator.num_pages - ON_ENDS, paginator.num_pages))
else:
- page_range.extend(range(page_num + 1, paginator.pages))
+ page_range.extend(range(page_num + 1, paginator.num_pages))
need_show_all_link = cl.can_show_all and not cl.show_all and cl.multi_page
return {
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index 1e66b56e0f..084a2f67cb 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -5,7 +5,7 @@ from django.contrib.admin.views.decorators import staff_member_required
from django.views.decorators.cache import never_cache
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist, PermissionDenied
-from django.core.paginator import ObjectPaginator, InvalidPage
+from django.core.paginator import QuerySetPaginator, InvalidPage
from django.shortcuts import get_object_or_404, render_to_response
from django.db import models
from django.db.models.query import QuerySet
@@ -611,11 +611,11 @@ class ChangeList(object):
return mark_safe('?' + '&amp;'.join([u'%s=%s' % (k, v) for k, v in p.items()]).replace(' ', '%20'))
def get_results(self, request):
- paginator = ObjectPaginator(self.query_set, self.lookup_opts.admin.list_per_page)
+ paginator = QuerySetPaginator(self.query_set, self.lookup_opts.admin.list_per_page)
# Get the number of objects, with admin filters applied.
try:
- result_count = paginator.hits
+ result_count = paginator.count
# Naked except! Because we don't have any other way of validating
# "params". They might be invalid if the keyword arguments are
# incorrect, or if the values are not in the correct type (which would
@@ -640,7 +640,7 @@ class ChangeList(object):
result_list = list(self.query_set)
else:
try:
- result_list = paginator.get_page(self.page_num)
+ result_list = paginator.page(self.page_num+1).object_list
except InvalidPage:
result_list = ()
diff --git a/django/contrib/flatpages/models.py b/django/contrib/flatpages/models.py
index 36327c80c3..190ffbd8b3 100644
--- a/django/contrib/flatpages/models.py
+++ b/django/contrib/flatpages/models.py
@@ -3,6 +3,7 @@ from django.db import models
from django.contrib.sites.models import Site
from django.utils.translation import ugettext_lazy as _
+
class FlatPage(models.Model):
url = models.CharField(_('URL'), max_length=100, validator_list=[validators.isAlphaNumericURL], db_index=True,
help_text=_("Example: '/about/contact/'. Make sure to have leading and trailing slashes."))
@@ -13,15 +14,17 @@ class FlatPage(models.Model):
help_text=_("Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."))
registration_required = models.BooleanField(_('registration required'), help_text=_("If this is checked, only logged-in users will be able to view the page."))
sites = models.ManyToManyField(Site)
+
class Meta:
db_table = 'django_flatpage'
verbose_name = _('flat page')
verbose_name_plural = _('flat pages')
ordering = ('url',)
+
class Admin:
fields = (
(None, {'fields': ('url', 'title', 'content', 'sites')}),
- ('Advanced options', {'classes': 'collapse', 'fields': ('enable_comments', 'registration_required', 'template_name')}),
+ (_('Advanced options'), {'classes': 'collapse', 'fields': ('enable_comments', 'registration_required', 'template_name')}),
)
list_filter = ('sites',)
search_fields = ('url', 'title')
diff --git a/django/core/mail.py b/django/core/mail.py
index 72343cb4df..bf48dcb882 100644
--- a/django/core/mail.py
+++ b/django/core/mail.py
@@ -2,20 +2,21 @@
Tools for sending email.
"""
-from django.conf import settings
-from django.utils.encoding import smart_str, force_unicode
-from email import Charset, Encoders
-from email.MIMEText import MIMEText
-from email.MIMEMultipart import MIMEMultipart
-from email.MIMEBase import MIMEBase
-from email.Header import Header
-from email.Utils import formatdate, parseaddr, formataddr
import mimetypes
import os
import smtplib
import socket
import time
import random
+from email import Charset, Encoders
+from email.MIMEText import MIMEText
+from email.MIMEMultipart import MIMEMultipart
+from email.MIMEBase import MIMEBase
+from email.Header import Header
+from email.Utils import formatdate, parseaddr, formataddr
+
+from django.conf import settings
+from django.utils.encoding import smart_str, force_unicode
# Don't BASE64-encode UTF-8 messages so that we avoid unwanted attention from
# some spam filters.
@@ -38,8 +39,9 @@ class CachedDnsName(object):
DNS_NAME = CachedDnsName()
-# Copied from Python standard library and modified to used the cached hostname
-# for performance.
+# Copied from Python standard library, with the following modifications:
+# * Used cached hostname for performance.
+# * Added try/except to support lack of getpid() in Jython (#5496).
def make_msgid(idstring=None):
"""Returns a string suitable for RFC 2822 compliant Message-ID, e.g:
@@ -53,7 +55,7 @@ def make_msgid(idstring=None):
try:
pid = os.getpid()
except AttributeError:
- # Not getpid() in Jython, for example.
+ # No getpid() in Jython, for example.
pid = 1
randint = random.randrange(100000)
if idstring is None:
@@ -68,7 +70,7 @@ class BadHeaderError(ValueError):
pass
def forbid_multi_line_headers(name, val):
- "Forbids multi-line headers, to prevent header injection."
+ """Forbids multi-line headers, to prevent header injection."""
if '\n' in val or '\r' in val:
raise BadHeaderError("Header values can't contain newlines (got %r for header %r)" % (val, name))
try:
@@ -101,7 +103,7 @@ class SMTPConnection(object):
"""
def __init__(self, host=None, port=None, username=None, password=None,
- use_tls=None, fail_silently=False):
+ use_tls=None, fail_silently=False):
self.host = host or settings.EMAIL_HOST
self.port = port or settings.EMAIL_PORT
self.username = username or settings.EMAIL_HOST_USER
@@ -112,14 +114,17 @@ class SMTPConnection(object):
def open(self):
"""
- Ensure we have a connection to the email server. Returns whether or not
- a new connection was required.
+ Ensures we have a connection to the email server. Returns whether or
+ not a new connection was required (True or False).
"""
if self.connection:
# Nothing to do if the connection is already open.
return False
try:
- self.connection = smtplib.SMTP(self.host, self.port)
+ # If local_hostname is not specified, socket.getfqdn() gets used.
+ # For performance, we use the cached FQDN for local_hostname.
+ self.connection = smtplib.SMTP(self.host, self.port,
+ local_hostname=DNS_NAME.get_fqdn())
if self.use_tls:
self.connection.ehlo()
self.connection.starttls()
@@ -132,7 +137,7 @@ class SMTPConnection(object):
raise
def close(self):
- """Close the connection to the email server."""
+ """Closes the connection to the email server."""
try:
try:
self.connection.quit()
@@ -149,7 +154,7 @@ class SMTPConnection(object):
def send_messages(self, email_messages):
"""
- Send one or more EmailMessage objects and return the number of email
+ Sends one or more EmailMessage objects and returns the number of email
messages sent.
"""
if not email_messages:
@@ -192,7 +197,7 @@ class EmailMessage(object):
def __init__(self, subject='', body='', from_email=None, to=None, bcc=None,
connection=None, attachments=None, headers=None):
"""
- Initialise a single email message (which can be sent to multiple
+ Initialize a single email message (which can be sent to multiple
recipients).
All strings used to create the message can be unicode strings (or UTF-8
@@ -221,7 +226,8 @@ class EmailMessage(object):
def message(self):
encoding = self.encoding or settings.DEFAULT_CHARSET
- msg = SafeMIMEText(smart_str(self.body, settings.DEFAULT_CHARSET), self.content_subtype, encoding)
+ msg = SafeMIMEText(smart_str(self.body, settings.DEFAULT_CHARSET),
+ self.content_subtype, encoding)
if self.attachments:
body_msg = msg
msg = SafeMIMEMultipart(_subtype=self.multipart_subtype)
@@ -237,8 +243,6 @@ class EmailMessage(object):
msg['To'] = ', '.join(self.to)
msg['Date'] = formatdate()
msg['Message-ID'] = make_msgid()
- if self.bcc:
- msg['Bcc'] = ', '.join(self.bcc)
for name, value in self.extra_headers.items():
msg[name] = value
return msg
@@ -251,7 +255,7 @@ class EmailMessage(object):
return self.to + self.bcc
def send(self, fail_silently=False):
- """Send the email message."""
+ """Sends the email message."""
return self.get_connection(fail_silently).send_messages([self])
def attach(self, filename=None, content=None, mimetype=None):
@@ -278,7 +282,7 @@ class EmailMessage(object):
def _create_attachment(self, filename, content, mimetype=None):
"""
- Convert the filename, content, mimetype triple into a MIME attachment
+ Converts the filename, content, mimetype triple into a MIME attachment
object.
"""
if mimetype is None:
@@ -295,7 +299,8 @@ class EmailMessage(object):
attachment.set_payload(content)
Encoders.encode_base64(attachment)
if filename:
- attachment.add_header('Content-Disposition', 'attachment', filename=filename)
+ attachment.add_header('Content-Disposition', 'attachment',
+ filename=filename)
return attachment
class EmailMultiAlternatives(EmailMessage):
@@ -310,7 +315,8 @@ class EmailMultiAlternatives(EmailMessage):
"""Attach an alternative content representation."""
self.attach(content=content, mimetype=mimetype)
-def send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None):
+def send_mail(subject, message, from_email, recipient_list,
+ fail_silently=False, auth_user=None, auth_password=None):
"""
Easy wrapper for sending a single message to a recipient list. All members
of the recipient list will see the other recipients in the 'To' field.
@@ -322,10 +328,12 @@ def send_mail(subject, message, from_email, recipient_list, fail_silently=False,
functionality should use the EmailMessage class directly.
"""
connection = SMTPConnection(username=auth_user, password=auth_password,
- fail_silently=fail_silently)
- return EmailMessage(subject, message, from_email, recipient_list, connection=connection).send()
+ fail_silently=fail_silently)
+ return EmailMessage(subject, message, from_email, recipient_list,
+ connection=connection).send()
-def send_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password=None):
+def send_mass_mail(datatuple, fail_silently=False, auth_user=None,
+ auth_password=None):
"""
Given a datatuple of (subject, message, from_email, recipient_list), sends
each message to each recipient list. Returns the number of e-mails sent.
@@ -339,19 +347,19 @@ def send_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password
functionality should use the EmailMessage class directly.
"""
connection = SMTPConnection(username=auth_user, password=auth_password,
- fail_silently=fail_silently)
- messages = [EmailMessage(subject, message, sender, recipient) for subject, message, sender, recipient in datatuple]
+ fail_silently=fail_silently)
+ messages = [EmailMessage(subject, message, sender, recipient)
+ for subject, message, sender, recipient in datatuple]
return connection.send_messages(messages)
def mail_admins(subject, message, fail_silently=False):
- "Sends a message to the admins, as defined by the ADMINS setting."
+ """Sends a message to the admins, as defined by the ADMINS setting."""
EmailMessage(settings.EMAIL_SUBJECT_PREFIX + subject, message,
- settings.SERVER_EMAIL, [a[1] for a in
- settings.ADMINS]).send(fail_silently=fail_silently)
+ settings.SERVER_EMAIL, [a[1] for a in settings.ADMINS]
+ ).send(fail_silently=fail_silently)
def mail_managers(subject, message, fail_silently=False):
- "Sends a message to the managers, as defined by the MANAGERS setting."
+ """Sends a message to the managers, as defined by the MANAGERS setting."""
EmailMessage(settings.EMAIL_SUBJECT_PREFIX + subject, message,
- settings.SERVER_EMAIL, [a[1] for a in
- settings.MANAGERS]).send(fail_silently=fail_silently)
-
+ settings.SERVER_EMAIL, [a[1] for a in settings.MANAGERS]
+ ).send(fail_silently=fail_silently)
diff --git a/django/core/paginator.py b/django/core/paginator.py
index dabd20dfc0..04cc4bf481 100644
--- a/django/core/paginator.py
+++ b/django/core/paginator.py
@@ -173,7 +173,7 @@ class ObjectPaginator(Paginator):
if self._count is None:
try:
self._count = self.object_list.count()
- except AttributeError:
+ except TypeError:
self._count = len(self.object_list)
return self._count
count = property(_get_count)
diff --git a/django/db/backends/ado_mssql/__init__.py b/django/db/backends/ado_mssql/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
--- a/django/db/backends/ado_mssql/__init__.py
+++ /dev/null
diff --git a/django/db/backends/ado_mssql/base.py b/django/db/backends/ado_mssql/base.py
deleted file mode 100644
index 07ce02d591..0000000000
--- a/django/db/backends/ado_mssql/base.py
+++ /dev/null
@@ -1,112 +0,0 @@
-"""
-ADO MSSQL database backend for Django.
-
-Requires adodbapi 2.0.1: http://adodbapi.sourceforge.net/
-"""
-
-from django.db.backends import BaseDatabaseWrapper, BaseDatabaseFeatures, BaseDatabaseOperations, util
-try:
- import adodbapi as Database
-except ImportError, e:
- from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured("Error loading adodbapi module: %s" % e)
-import datetime
-try:
- import mx
-except ImportError:
- mx = None
-
-DatabaseError = Database.DatabaseError
-IntegrityError = Database.IntegrityError
-
-# We need to use a special Cursor class because adodbapi expects question-mark
-# param style, but Django expects "%s". This cursor converts question marks to
-# format-string style.
-class Cursor(Database.Cursor):
- def executeHelper(self, operation, isStoredProcedureCall, parameters=None):
- if parameters is not None and "%s" in operation:
- operation = operation.replace("%s", "?")
- Database.Cursor.executeHelper(self, operation, isStoredProcedureCall, parameters)
-
-class Connection(Database.Connection):
- def cursor(self):
- return Cursor(self)
-Database.Connection = Connection
-
-origCVtoP = Database.convertVariantToPython
-def variantToPython(variant, adType):
- if type(variant) == bool and adType == 11:
- return variant # bool not 1/0
- res = origCVtoP(variant, adType)
- if mx is not None and type(res) == mx.DateTime.mxDateTime.DateTimeType:
- # Convert ms.DateTime objects to Python datetime.datetime objects.
- tv = list(res.tuple()[:7])
- tv[-2] = int(tv[-2])
- return datetime.datetime(*tuple(tv))
- if type(res) == float and str(res)[-2:] == ".0":
- return int(res) # If float but int, then int.
- return res
-Database.convertVariantToPython = variantToPython
-
-class DatabaseFeatures(BaseDatabaseFeatures):
- supports_tablespaces = True
-
-class DatabaseOperations(BaseDatabaseOperations):
- def date_extract_sql(self, lookup_type, field_name):
- return "DATEPART(%s, %s)" % (lookup_type, field_name)
-
- def date_trunc_sql(self, lookup_type, field_name):
- if lookup_type == 'year':
- return "Convert(datetime, Convert(varchar, DATEPART(year, %s)) + '/01/01')" % field_name
- if lookup_type == 'month':
- return "Convert(datetime, Convert(varchar, DATEPART(year, %s)) + '/' + Convert(varchar, DATEPART(month, %s)) + '/01')" % (field_name, field_name)
- if lookup_type == 'day':
- return "Convert(datetime, Convert(varchar(12), %s))" % field_name
-
- def deferrable_sql(self):
- return " DEFERRABLE INITIALLY DEFERRED"
-
- def last_insert_id(self, cursor, table_name, pk_name):
- cursor.execute("SELECT %s FROM %s WHERE %s = @@IDENTITY" % (pk_name, table_name, pk_name))
- return cursor.fetchone()[0]
-
- def quote_name(self, name):
- if name.startswith('[') and name.endswith(']'):
- return name # Quoting once is enough.
- return '[%s]' % name
-
- def random_function_sql(self):
- return 'RAND()'
-
- def tablespace_sql(self, tablespace, inline=False):
- return "ON %s" % self.quote_name(tablespace)
-
-class DatabaseWrapper(BaseDatabaseWrapper):
- features = DatabaseFeatures()
- ops = DatabaseOperations()
- operators = {
- 'exact': '= %s',
- 'iexact': 'LIKE %s',
- 'contains': 'LIKE %s',
- 'icontains': 'LIKE %s',
- 'gt': '> %s',
- 'gte': '>= %s',
- 'lt': '< %s',
- 'lte': '<= %s',
- 'startswith': 'LIKE %s',
- 'endswith': 'LIKE %s',
- 'istartswith': 'LIKE %s',
- 'iendswith': 'LIKE %s',
- }
-
- def _cursor(self, settings):
- if self.connection is None:
- if settings.DATABASE_NAME == '' or settings.DATABASE_USER == '':
- from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured("You need to specify both DATABASE_NAME and DATABASE_USER in your Django settings file.")
- if not settings.DATABASE_HOST:
- settings.DATABASE_HOST = "127.0.0.1"
- # TODO: Handle DATABASE_PORT.
- conn_string = "PROVIDER=SQLOLEDB;DATA SOURCE=%s;UID=%s;PWD=%s;DATABASE=%s" % (settings.DATABASE_HOST, settings.DATABASE_USER, settings.DATABASE_PASSWORD, settings.DATABASE_NAME)
- self.connection = Database.connect(conn_string)
- return self.connection.cursor()
diff --git a/django/db/backends/ado_mssql/client.py b/django/db/backends/ado_mssql/client.py
deleted file mode 100644
index 5c197cafa4..0000000000
--- a/django/db/backends/ado_mssql/client.py
+++ /dev/null
@@ -1,2 +0,0 @@
-def runshell():
- raise NotImplementedError
diff --git a/django/db/backends/ado_mssql/creation.py b/django/db/backends/ado_mssql/creation.py
deleted file mode 100644
index d4ba8f2897..0000000000
--- a/django/db/backends/ado_mssql/creation.py
+++ /dev/null
@@ -1,25 +0,0 @@
-DATA_TYPES = {
- 'AutoField': 'int IDENTITY (1, 1)',
- 'BooleanField': 'bit',
- 'CharField': 'varchar(%(max_length)s)',
- 'CommaSeparatedIntegerField': 'varchar(%(max_length)s)',
- 'DateField': 'smalldatetime',
- 'DateTimeField': 'smalldatetime',
- 'DecimalField': 'numeric(%(max_digits)s, %(decimal_places)s)',
- 'FileField': 'varchar(%(max_length)s)',
- 'FilePathField': 'varchar(%(max_length)s)',
- 'FloatField': 'double precision',
- 'ImageField': 'varchar(%(max_length)s)',
- 'IntegerField': 'int',
- 'IPAddressField': 'char(15)',
- 'NullBooleanField': 'bit',
- 'OneToOneField': 'int',
- 'PhoneNumberField': 'varchar(20)',
- 'PositiveIntegerField': 'int CONSTRAINT [CK_int_pos_%(column)s] CHECK ([%(column)s] > 0)',
- 'PositiveSmallIntegerField': 'smallint CONSTRAINT [CK_smallint_pos_%(column)s] CHECK ([%(column)s] > 0)',
- 'SlugField': 'varchar(%(max_length)s)',
- 'SmallIntegerField': 'smallint',
- 'TextField': 'text',
- 'TimeField': 'time',
- 'USStateField': 'varchar(2)',
-}
diff --git a/django/db/backends/ado_mssql/introspection.py b/django/db/backends/ado_mssql/introspection.py
deleted file mode 100644
index b125cc995f..0000000000
--- a/django/db/backends/ado_mssql/introspection.py
+++ /dev/null
@@ -1,13 +0,0 @@
-def get_table_list(cursor):
- raise NotImplementedError
-
-def get_table_description(cursor, table_name):
- raise NotImplementedError
-
-def get_relations(cursor, table_name):
- raise NotImplementedError
-
-def get_indexes(cursor, table_name):
- raise NotImplementedError
-
-DATA_TYPES_REVERSE = {}
diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py
index cfc07d6008..17aa6f13bf 100644
--- a/django/db/backends/mysql/base.py
+++ b/django/db/backends/mysql/base.py
@@ -17,7 +17,8 @@ except ImportError, e:
version = Database.version_info
if (version < (1,2,1) or (version[:3] == (1, 2, 1) and
(len(version) < 5 or version[3] != 'final' or version[4] < 2))):
- raise ImportError("MySQLdb-1.2.1p2 or newer is required; you have %s" % Database.__version__)
+ from django.core.exceptions import ImproperlyConfigured
+ raise ImproperlyConfigured("MySQLdb-1.2.1p2 or newer is required; you have %s" % Database.__version__)
from MySQLdb.converters import conversions
from MySQLdb.constants import FIELD_TYPE
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py
index f2254d7373..6629289b05 100644
--- a/django/db/models/fields/related.py
+++ b/django/db/models/fields/related.py
@@ -581,7 +581,7 @@ class ForeignKey(RelatedField, Field):
if 'edit_inline_type' in kwargs:
import warnings
- warnings.warn("edit_inline_type is deprecated. Use edit_inline instead.")
+ warnings.warn("edit_inline_type is deprecated. Use edit_inline instead.", DeprecationWarning)
kwargs['edit_inline'] = kwargs.pop('edit_inline_type')
kwargs['rel'] = rel_class(to, to_field,
diff --git a/django/views/generic/list_detail.py b/django/views/generic/list_detail.py
index cb9b014eb5..ea77d46300 100644
--- a/django/views/generic/list_detail.py
+++ b/django/views/generic/list_detail.py
@@ -74,8 +74,8 @@ def object_list(request, queryset, paginate_by=None, page=None,
'page': page_obj.number,
'next': page_obj.next_page_number(),
'previous': page_obj.previous_page_number(),
- 'last_on_page': page_obj.start_index(),
- 'first_on_page': page_obj.end_index(),
+ 'first_on_page': page_obj.start_index(),
+ 'last_on_page': page_obj.end_index(),
'pages': paginator.num_pages,
'hits': paginator.count,
'page_range': paginator.page_range,
diff --git a/django/views/i18n.py b/django/views/i18n.py
index e420e3d7f7..e141c1d967 100644
--- a/django/views/i18n.py
+++ b/django/views/i18n.py
@@ -82,6 +82,17 @@ function interpolate(fmt, obj, named) {
}
"""
+PluralIdx = r"""
+function pluralidx(n) {
+ var v=%s;
+ if (typeof(v) == 'boolean') {
+ return v ? 1 : 0;
+ } else {
+ return v;
+ }
+}
+"""
+
def null_javascript_catalog(request, domain=None, packages=None):
"""
Returns "identity" versions of the JavaScript i18n functions -- i.e.,
@@ -154,7 +165,7 @@ def javascript_catalog(request, domain='djangojs', packages=None):
# this should actually be a compiled function of a typical plural-form:
# 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;
plural = [el.strip() for el in plural.split(';') if el.strip().startswith('plural=')][0].split('=',1)[1]
- src.append('function pluralidx(n) {\n return %s;\n}\n' % plural)
+ src.append(PluralIdx % plural)
else:
src.append(SimplePlural)
csrc = []
diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644
index 0000000000..f79d4299d5
--- /dev/null
+++ b/docs/Makefile
@@ -0,0 +1,68 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS =
+SPHINXBUILD = sphinx-build
+PAPER =
+
+# Internal variables.
+PAPEROPT_a4 = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html web htmlhelp latex changes linkcheck
+
+help:
+ @echo "Please use \`make <target>' where <target> is one of"
+ @echo " html to make standalone HTML files"
+ @echo " web to make files usable by Sphinx.web"
+ @echo " htmlhelp to make HTML files and a HTML help project"
+ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+ @echo " changes to make an overview over all changed/added/deprecated items"
+ @echo " linkcheck to check all external links for integrity"
+
+clean:
+ -rm -rf _build/*
+
+html:
+ mkdir -p _build/html _build/doctrees
+ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html
+ @echo
+ @echo "Build finished. The HTML pages are in _build/html."
+
+web:
+ mkdir -p _build/web _build/doctrees
+ $(SPHINXBUILD) -b web $(ALLSPHINXOPTS) _build/web
+ @echo
+ @echo "Build finished; now you can run"
+ @echo " python -m sphinx.web _build/web"
+ @echo "to start the server."
+
+htmlhelp:
+ mkdir -p _build/htmlhelp _build/doctrees
+ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp
+ @echo
+ @echo "Build finished; now you can run HTML Help Workshop with the" \
+ ".hhp project file in _build/htmlhelp."
+
+latex:
+ mkdir -p _build/latex _build/doctrees
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex
+ @echo
+ @echo "Build finished; the LaTeX files are in _build/latex."
+ @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
+ "run these through (pdf)latex."
+
+changes:
+ mkdir -p _build/changes _build/doctrees
+ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes
+ @echo
+ @echo "The overview file is in _build/changes."
+
+linkcheck:
+ mkdir -p _build/linkcheck _build/doctrees
+ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck
+ @echo
+ @echo "Link check complete; look for any errors in the above output " \
+ "or in _build/linkcheck/output.txt."
diff --git a/docs/authentication.txt b/docs/authentication.txt
index 9167458db2..79eaf673e7 100644
--- a/docs/authentication.txt
+++ b/docs/authentication.txt
@@ -819,16 +819,17 @@ Django developers are currently discussing.
Default permissions
-------------------
-Three basic permissions -- add, change and delete -- are automatically created
-for each Django model that has a ``class Admin`` set. Behind the scenes, these
-permissions are added to the ``auth_permission`` database table when you run
-``manage.py syncdb``.
+When ``django.contrib.auth`` is listed in your ``INSTALLED_APPS``
+setting, it will ensure that three default permissions -- add, change
+and delete -- are created for each Django model defined in one of your
+installed applications.
-Note that if your model doesn't have ``class Admin`` set when you run
-``syncdb``, the permissions won't be created. If you initialize your database
-and add ``class Admin`` to models after the fact, you'll need to run
-``manage.py syncdb`` again. It will create any missing permissions for
-all of your installed apps.
+These permissions will be created when you run ``manage.py syncdb``;
+the first time you run ``syncdb`` after adding ``django.contrib.auth``
+to ``INSTALLED_APPS``, the default permissions will be created for all
+previously-installed models, as well as for any new models being
+installed at that time. Afterward, it will create default permissions
+for new models each time you run ``manage.py syncdb``.
Custom permissions
------------------
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644
index 0000000000..0ced57d57b
--- /dev/null
+++ b/docs/conf.py
@@ -0,0 +1,132 @@
+# -*- coding: utf-8 -*-
+#
+# Django documentation build configuration file, created by
+# sphinx-quickstart on Thu Mar 27 09:06:53 2008.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# The contents of this file are pickled, so don't put values in the namespace
+# that aren't pickleable (module imports are okay, they're removed automatically).
+#
+# All configuration values have a default value; values that are commented out
+# serve to show the default value.
+
+import sys
+
+# If your extensions are in another directory, add it here.
+#sys.path.append('some/directory')
+
+# General configuration
+# ---------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+#extensions = []
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = []
+
+# The suffix of source filenames.
+source_suffix = '.txt'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General substitutions.
+project = 'Django'
+copyright = '2008, Django Software Foundation'
+
+# The default replacements for |version| and |release|, also used in various
+# other places throughout the built documents.
+#
+# The short X.Y version.
+version = 'SVN'
+# The full version, including alpha/beta/rc tags.
+release = version
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+add_module_names = False
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+
+# Options for HTML output
+# -----------------------
+
+# The style sheet to use for HTML and HTML Help pages. A file of that name
+# must exist either in Sphinx' static/ path, or in one of the custom paths
+# given in html_static_path.
+html_style = 'default.css'
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = []
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+html_use_smartypants = True
+
+# Content template for the index page.
+#html_index = ''
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_use_modindex = True
+
+# If true, the reST sources are included in the HTML build as _sources/<name>.
+html_copy_source = True
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'Djangodoc'
+
+
+# Options for LaTeX output
+# ------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, document class [howto/manual]).
+#latex_documents = []
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_use_modindex = True
diff --git a/docs/db-api.txt b/docs/db-api.txt
index dcd648be1c..23fa205b39 100644
--- a/docs/db-api.txt
+++ b/docs/db-api.txt
@@ -1476,9 +1476,6 @@ SQL equivalents::
Using raw strings (e.g., ``r'foo'`` instead of ``'foo'``) for passing in the
regular expression syntax is recommended.
-Regular expression matching is not supported on the ``ado_mssql`` backend.
-It will raise a ``NotImplementedError`` at runtime.
-
iregex
~~~~~~
diff --git a/docs/i18n.txt b/docs/i18n.txt
index 8da19cd242..d6c86e1c9d 100644
--- a/docs/i18n.txt
+++ b/docs/i18n.txt
@@ -338,7 +338,7 @@ Django offers many utility functions (particularly in ``django.utils``) that
take a string as their first argument and do something to that string. These
functions are used by template filters as well as directly in other code.
-If you write your own similar functions and deal with translations, you'll
+If you write your own similar functions and deal with translations, you'll
face the problem of what to do when the first argument is a lazy translation
object. You don't want to convert it to a string immediately, because you might
be using this function outside of a view (and hence the current thread's locale
@@ -789,7 +789,7 @@ JavaScript that uses strings from different applications.
You can make the view dynamic by putting the packages into the URL pattern::
urlpatterns = patterns('',
- (r'^jsi18n/(?P<packages>\S+?)/$, 'django.views.i18n.javascript_catalog'),
+ (r'^jsi18n/(?P<packages>\S+?)/$', 'django.views.i18n.javascript_catalog'),
)
With this, you specify the packages as a list of package names delimited by '+'
@@ -811,24 +811,47 @@ interface to access it::
document.write(gettext('this is to be translated'));
-There even is a ``ungettext`` interface and a string interpolation function::
+There is also an ``ngettext`` interface::
- d = {
- count: 10
- };
- s = interpolate(ungettext('this is %(count)s object', 'this are %(count)s objects', d.count), d);
+ var object_cnt = 1 // or 0, or 2, or 3, ...
+ s = ngettext('literal for the singular case',
+ 'literal for the plural case', object_cnt);
-The ``interpolate`` function supports both positional interpolation and named
-interpolation. So the above could have been written as::
+and even a string interpolation function::
- s = interpolate(ungettext('this is %s object', 'this are %s objects', 11), [11]);
+ function interpolate(fmt, obj, named);
-The interpolation syntax is borrowed from Python. You shouldn't go over the top
-with string interpolation, though: this is still JavaScript, so the code will
-have to do repeated regular-expression substitutions. This isn't as fast as
-string interpolation in Python, so keep it to those cases where you really
-need it (for example, in conjunction with ``ungettext`` to produce proper
-pluralizations).
+The interpolation syntax is borrowed from Python, so the ``interpolate``
+function supports both positional and named interpolation:
+
+ * Positional interpolation: ``obj`` contains a JavaScript Array object
+ whose elements values are then sequentially interpolated in their
+ corresponding ``fmt`` placeholders in the same order they appear.
+ For example::
+
+ fmts = ngettext('There is %s object. Remaining: %s',
+ 'There are %s objects. Remaining: %s', 11);
+ s = interpolate(fmts, [11, 20]);
+ // s is 'There are 11 objects. Remaining: 20'
+
+ * Named interpolation: This mode is selected by passing the optional
+ boolean ``named`` parameter as true. ``obj`` contains a JavaScript
+ object or associative array. For example::
+
+ d = {
+ count: 10
+ total: 50
+ };
+
+ fmts = ngettext('Total: %(total)s, there is %(count)s object',
+ 'there are %(count)s of a total of %(total)s objects', d.count);
+ s = interpolate(fmts, d, true);
+
+You shouldn't go over the top with string interpolation, though: this is still
+JavaScript, so the code has to make repeated regular-expression substitutions.
+This isn't as fast as string interpolation in Python, so keep it to those
+cases where you really need it (for example, in conjunction with ``ngettext``
+to produce proper pluralizations).
Creating JavaScript translation catalogs
----------------------------------------
diff --git a/docs/index.txt b/docs/index.txt
new file mode 100644
index 0000000000..385ada455c
--- /dev/null
+++ b/docs/index.txt
@@ -0,0 +1,128 @@
+====================
+Django Documentation
+====================
+
+The essential documentation
+===========================
+
+If you're new to Django, make sure to read the following documentation in
+order.. The rest (in the "reference" section below) can be ready in any order as
+you need various functionality.
+
+.. toctree::
+ :maxdepth: 1
+
+ overview
+ install
+ tutorial01
+ tutorial02
+ tutorial03
+ tutorial04
+ faq
+ documentation
+
+Reference
+=========
+
+.. toctree::
+ :maxdepth: 1
+
+ django-admin
+ model-api
+ db-api
+ transactions
+ templates
+ templates_python
+ newforms
+ modelforms
+ testing
+ sessions
+ cache
+ settings
+ url_dispatch
+ request_response
+ generic_views
+ authentication
+ shortcuts
+ unicode
+ pagination
+ serialization
+ i18n
+ middleware
+ custom_model_fields
+ databases
+
+``django.contrib`` add-ons
+--------------------------
+
+.. toctree::
+ :maxdepth: 1
+
+ add_ons
+ contenttypes
+ csrf
+ databrowse
+ flatpages
+ form_preview
+ form_wizard
+ localflavor
+ redirects
+ sites
+ sitemaps
+ syndication_feeds
+ webdesign
+
+Deployment
+----------
+
+.. toctree::
+ :maxdepth: 1
+
+ modpython
+ fastcgi
+
+Solving specific problems
+-------------------------
+
+.. toctree::
+ :maxdepth: 1
+
+ apache_auth
+ static_files
+ email
+ legacy_databases
+ outputting_pdf
+ outputting_csv
+
+Et cetera
+---------
+
+.. toctree::
+ :maxdepth: 1
+
+ design_philosophies
+ contributing
+ admin_css
+ api_stability
+
+Release notes
+-------------
+
+.. toctree::
+ :maxdepth: 1
+
+ release_notes_0.96
+ release_notes_0.95
+
+Also see the list of `backwards-incompatible changes`__ for changes made between
+releases.
+
+__ http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
diff --git a/docs/install.txt b/docs/install.txt
index 341c4280e8..bfe85fff8a 100644
--- a/docs/install.txt
+++ b/docs/install.txt
@@ -172,11 +172,11 @@ Installing the development version
If you decide to use the latest development version of Django,
you'll want to pay close attention to `the development timeline`_,
and you'll want to keep an eye on `the list of
- backwards-incompatible changes`_; this will help you stay on top
+ backwards-incompatible changes`_. This will help you stay on top
of any new features you might want to use, as well as any changes
- you'll need to make to your code when updating your copy of Django
- (for stable releases, any necessary changes are documented in the
- release notes).
+ you'll need to make to your code when updating your copy of Django.
+ (For stable releases, any necessary changes are documented in the
+ release notes.)
.. _the development timeline: http://code.djangoproject.com/timeline
.. _the list of backwards-incompatible changes: http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges
diff --git a/docs/modelforms.txt b/docs/modelforms.txt
index 05f9b1b3d4..554aeb7ea0 100644
--- a/docs/modelforms.txt
+++ b/docs/modelforms.txt
@@ -236,7 +236,7 @@ works exactly the same way as any other ``newforms`` form. For
example, the ``is_valid()`` method is used to check for validity, the
``is_multipart()`` method is used to determine whether a form requires
multipart file upload (and hence whether ``request.FILES`` must be
-passed to the form), etc.; see `the standard newforms documentation`_
+passed to the form), etc. See `the standard newforms documentation`_
for more information.
.. _the standard newforms documentation: ../newforms/
diff --git a/docs/newforms.txt b/docs/newforms.txt
index 533ff75185..d07f7f9dc3 100644
--- a/docs/newforms.txt
+++ b/docs/newforms.txt
@@ -1549,12 +1549,14 @@ additional required argument:
``ModelChoiceField``
~~~~~~~~~~~~~~~~~~~~
-Allows the selection of a single model object, suitable for representing a
-foreign key. The method receives an object as an argument and must return a
-string to represent it.
+Allows the selection of a single model object, suitable for
+representing a foreign key.
-The labels for the choice field call the ``__unicode__`` method of the model to
-generate string representations. To provide custom labels, subclass ``ModelChoiceField`` and override ``label_for_model``::
+The ``__unicode__`` method of the model will be called to generate
+string representations of the objects for use in the field's choices;
+to provide customized representations, subclass ``ModelChoiceField``
+and override ``label_for_model``. This method will receive model
+object, and should return a string suitable for representing it::
class MyModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
@@ -1563,9 +1565,10 @@ generate string representations. To provide custom labels, subclass ``ModelChoic
``ModelMultipleChoiceField``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Allows the selection of one or more model objects, suitable for representing a
-many-to-many relation. As with ``ModelChoiceField``, you can use
-``label_from_instance`` to customize the object labels.
+Allows the selection of one or more model objects, suitable for
+representing a many-to-many relation. As with ``ModelChoiceField``,
+you can use ``label_from_instance`` to customize the object
+representations.
Creating custom fields
----------------------
diff --git a/docs/request_response.txt b/docs/request_response.txt
index 0e0f046a2d..a4f03b9185 100644
--- a/docs/request_response.txt
+++ b/docs/request_response.txt
@@ -143,14 +143,13 @@ All attributes except ``session`` should be considered read-only.
``urlconf``
Not defined by Django itself, but will be read if other code
- (e.g., a custom middleware class) sets it; when present, this will
- be used as the root URLConf for the current request, overriding
+ (e.g., a custom middleware class) sets it. When present, this will
+ be used as the root URLconf for the current request, overriding
the ``ROOT_URLCONF`` setting. See `How Django processes a
request`_ for details.
.. _How Django processes a request: ../url_dispatch/#how-django-processes-a-request
-
Methods
-------
@@ -202,19 +201,19 @@ Methods
``is_ajax()``
**New in Django development version**
- Returns ``True`` if the request was made via an XMLHttpRequest by checking
- the ``HTTP_X_REQUESTED_WITH`` header for the string *'XMLHttpRequest'*. The
- following major Javascript libraries all send this header:
+ Returns ``True`` if the request was made via an ``XMLHttpRequest``, by checking
+ the ``HTTP_X_REQUESTED_WITH`` header for the string ``'XMLHttpRequest'``. The
+ following major JavaScript libraries all send this header:
- * jQuery
- * Dojo
- * MochiKit
- * MooTools
- * Prototype
- * YUI
+ * jQuery
+ * Dojo
+ * MochiKit
+ * MooTools
+ * Prototype
+ * YUI
- If you write your own XMLHttpRequest call (on the browser side), you will
- have to set this header manually to use this method.
+ If you write your own XMLHttpRequest call (on the browser side), you'll
+ have to set this header manually if you want ``is_ajax()`` to work.
QueryDict objects
-----------------
diff --git a/docs/settings.txt b/docs/settings.txt
index fb2e04f1ea..5aee19102b 100644
--- a/docs/settings.txt
+++ b/docs/settings.txt
@@ -279,7 +279,7 @@ Default: ``''`` (Empty string)
The database backend to use. The build-in database backends are
``'postgresql_psycopg2'``, ``'postgresql'``, ``'mysql'``, ``'mysql_old'``,
-``'sqlite3'``, ``'oracle'``, or ``'ado_mssql'``.
+``'sqlite3'`` and ``'oracle'``.
In the Django development version, you can use a database backend that doesn't
ship with Django by setting ``DATABASE_ENGINE`` to a fully-qualified path (i.e.
diff --git a/docs/syndication_feeds.txt b/docs/syndication_feeds.txt
index f86acfe54d..6a603c4e54 100644
--- a/docs/syndication_feeds.txt
+++ b/docs/syndication_feeds.txt
@@ -250,7 +250,7 @@ request to the URL ``/rss/beats/0613/``:
will be an empty list. In our example, ``len(bits) != 1`` and an
``ObjectDoesNotExist`` exception will be raised, so ``/rss/beats/`` will
generate a 404 page. But you can handle this case however you like. For
- example you could generate a combined feed for all beats.
+ example, you could generate a combined feed for all beats.
* To generate the feed's ``<title>``, ``<link>`` and ``<description>``,
Django uses the ``title()``, ``link()`` and ``description()`` methods. In
diff --git a/docs/testing.txt b/docs/testing.txt
index 54b8ba9ae6..0ff3cce3d9 100644
--- a/docs/testing.txt
+++ b/docs/testing.txt
@@ -80,7 +80,7 @@ read Python's official documentation for the details.
.. admonition:: What's a **docstring**?
A good explanation of docstrings (and some guidelines for using them
- effectively) can be found in :PEP:`257`:
+ effectively) can be found in :pep:`257`:
A docstring is a string literal that occurs as the first statement in
a module, function, class, or method definition. Such a docstring
diff --git a/docs/tutorial04.txt b/docs/tutorial04.txt
index 473fba1ef8..8f23fdd9e6 100644
--- a/docs/tutorial04.txt
+++ b/docs/tutorial04.txt
@@ -37,9 +37,9 @@ A quick rundown:
form will alter data server-side. Whenever you create a form that alters
data server-side, use ``method="post"``. This tip isn't specific to
Django; it's just good Web development practice.
-
+
* ``forloop.counter`` indicates how many times the ``for`` tag has
- gone through its loop; for more information, see `the
+ gone through its loop. For more information, see `the
documentation for the "for" tag`_.
.. _the documentation for the "for" tag: ../templates/#for
@@ -247,8 +247,8 @@ template. Note that we use ``dict()`` to return an altered dictionary in place.
which is "lazy" and doesn't hit your database until it absolutely has to. By
the time the database query happens, the ``object_detail`` generic view will
have narrowed its scope down to a single object, so the eventual query will
- only select one row from the database.
-
+ only select one row from the database.
+
If you'd like to know more about how that works, The Django database API
documentation `explains the lazy nature of QuerySet objects`_.
@@ -266,9 +266,8 @@ from ``polls/views.py``. We don't need them anymore -- they have been replaced
by generic views.
The ``vote()`` view is still required. However, it must be modified to match
-the new templates and context variables. Change the template call from
-``polls/detail.html`` to ``polls/poll_detail.html``, and pass ``object`` in the
-context instead of ``poll``.
+the new context variables. In the ``render_to_repsonse()`` call, rename the
+``poll`` context variable to ``object``.
The last thing to do is fix the URL handling to account for the use of generic
views. In the vote view above, we used the ``reverse()`` function to avoid
@@ -276,7 +275,7 @@ hard-coding our URLs. Now that we've switched to a generic view, we'll need to
change the ``reverse()`` call to point back to our new generic view. We can't
simply use the view function anymore -- generic views can be (and are) used
multiple times -- but we can use the name we've given::
-
+
return HttpResponseRedirect(reverse('poll_results', args=(p.id,)))
Run the server, and use your new polling app based on generic views.
diff --git a/docs/url_dispatch.txt b/docs/url_dispatch.txt
index 053ee954a3..28f15289a9 100644
--- a/docs/url_dispatch.txt
+++ b/docs/url_dispatch.txt
@@ -32,7 +32,7 @@ How Django processes a request
When a user requests a page from your Django-powered site, this is the
algorithm the system follows to determine which Python code to execute:
- 1. Django determines the root URLConf module to use; ordinarily
+ 1. Django determines the root URLconf module to use. Ordinarily,
this is the value of the ``ROOT_URLCONF`` setting in your
`settings file`_, but if the incoming ``HttpRequest`` object
has an attribute called ``urlconf``, its value will be used in
diff --git a/tests/modeltests/or_lookups/models.py b/tests/modeltests/or_lookups/models.py
index 38339c0685..c779e19e37 100644
--- a/tests/modeltests/or_lookups/models.py
+++ b/tests/modeltests/or_lookups/models.py
@@ -103,7 +103,7 @@ __test__ = {'API_TESTS':"""
>>> Article.objects.filter(Q(pk=1) & (~Q(pk=2) | Q(pk=3)))
[<Article: Hello>]
-# Try some arg queries with operations other than get_list
+# Try some arg queries with operations other than filter.
>>> Article.objects.get(Q(headline__startswith='Hello'), Q(headline__contains='bye'))
<Article: Hello and goodbye>
diff --git a/tests/regressiontests/forms/fields.py b/tests/regressiontests/forms/fields.py
index 9421d8c005..f3b6a96a1e 100644
--- a/tests/regressiontests/forms/fields.py
+++ b/tests/regressiontests/forms/fields.py
@@ -1135,29 +1135,39 @@ u''
# FilePathField ###############################################################
+>>> def fix_os_paths(x):
+... if isinstance(x, basestring):
+... return x.replace('\\', '/')
+... elif isinstance(x, tuple):
+... return tuple(fix_os_paths(list(x)))
+... elif isinstance(x, list):
+... return [fix_os_paths(y) for y in x]
+... else:
+... return x
+...
>>> import os
>>> from django import newforms as forms
>>> path = forms.__file__
>>> path = os.path.dirname(path) + '/'
->>> path
+>>> fix_os_paths(path)
'.../django/newforms/'
>>> f = forms.FilePathField(path=path)
>>> f.choices.sort()
->>> f.choices
+>>> fix_os_paths(f.choices)
[('.../django/newforms/__init__.py', '__init__.py'), ('.../django/newforms/__init__.pyc', '__init__.pyc'), ('.../django/newforms/fields.py', 'fields.py'), ('.../django/newforms/fields.pyc', 'fields.pyc'), ('.../django/newforms/forms.py', 'forms.py'), ('.../django/newforms/forms.pyc', 'forms.pyc'), ('.../django/newforms/models.py', 'models.py'), ('.../django/newforms/models.pyc', 'models.pyc'), ('.../django/newforms/util.py', 'util.py'), ('.../django/newforms/util.pyc', 'util.pyc'), ('.../django/newforms/widgets.py', 'widgets.py'), ('.../django/newforms/widgets.pyc', 'widgets.pyc')]
>>> f.clean('fields.py')
Traceback (most recent call last):
...
ValidationError: [u'Select a valid choice. That choice is not one of the available choices.']
->>> f.clean(path + 'fields.py')
+>>> fix_os_paths(f.clean(path + 'fields.py'))
u'.../django/newforms/fields.py'
>>> f = forms.FilePathField(path=path, match='^.*?\.py$')
>>> f.choices.sort()
->>> f.choices
+>>> fix_os_paths(f.choices)
[('.../django/newforms/__init__.py', '__init__.py'), ('.../django/newforms/fields.py', 'fields.py'), ('.../django/newforms/forms.py', 'forms.py'), ('.../django/newforms/models.py', 'models.py'), ('.../django/newforms/util.py', 'util.py'), ('.../django/newforms/widgets.py', 'widgets.py')]
>>> f = forms.FilePathField(path=path, recursive=True, match='^.*?\.py$')
>>> f.choices.sort()
->>> f.choices
+>>> fix_os_paths(f.choices)
[('.../django/newforms/__init__.py', '__init__.py'), ('.../django/newforms/extras/__init__.py', 'extras/__init__.py'), ('.../django/newforms/extras/widgets.py', 'extras/widgets.py'), ('.../django/newforms/fields.py', 'fields.py'), ('.../django/newforms/forms.py', 'forms.py'), ('.../django/newforms/models.py', 'models.py'), ('.../django/newforms/util.py', 'util.py'), ('.../django/newforms/widgets.py', 'widgets.py')]
# SplitDateTimeField ##########################################################
diff --git a/tests/regressiontests/model_regress/models.py b/tests/regressiontests/model_regress/models.py
index 02e73a5aa9..2252531564 100644
--- a/tests/regressiontests/model_regress/models.py
+++ b/tests/regressiontests/model_regress/models.py
@@ -26,6 +26,9 @@ class Movie(models.Model):
movie_id = models.AutoField(primary_key=True)
name = models.CharField(max_length=60)
+class Party(models.Model):
+ when = models.DateField()
+
__test__ = {'API_TESTS': """
(NOTE: Part of the regression test here is merely parsing the model
declaration. The verbose_name, in particular, did not always work.)
@@ -51,5 +54,19 @@ u''
>>> len(a4.article_text)
5000
+# #659 regression test
+>>> import datetime
+>>> p = Party.objects.create(when = datetime.datetime(1999, 12, 31))
+>>> p = Party.objects.create(when = datetime.datetime(1998, 12, 31))
+>>> p = Party.objects.create(when = datetime.datetime(1999, 1, 1))
+>>> [p.when for p in Party.objects.filter(when__month = 2)]
+[]
+>>> [p.when for p in Party.objects.filter(when__month = 1)]
+[datetime.date(1999, 1, 1)]
+>>> [p.when for p in Party.objects.filter(when__month = 12)]
+[datetime.date(1999, 12, 31), datetime.date(1998, 12, 31)]
+>>> [p.when for p in Party.objects.filter(when__year = 1998)]
+[datetime.date(1998, 12, 31)]
+
"""
}