summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorHonza Král <honza.kral@gmail.com>2009-07-15 07:19:10 +0000
committerHonza Král <honza.kral@gmail.com>2009-07-15 07:19:10 +0000
commitd0c3e19de5bf9d79f5436f8ddeccf9bea98d9306 (patch)
tree5975afb05ef971945dd9afb9a977d5a59b04eaf4 /django
parentf662801023605ff6fe44416271e39839894e7962 (diff)
[soc2009/model-validation] Merget to trunk at r11229
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/model-validation@11233 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django')
-rw-r--r--django/conf/locale/ca/LC_MESSAGES/django.mobin64639 -> 67049 bytes
-rw-r--r--django/conf/locale/ca/LC_MESSAGES/django.po549
-rw-r--r--django/conf/locale/es/LC_MESSAGES/django.mobin64913 -> 67328 bytes
-rw-r--r--django/conf/locale/es/LC_MESSAGES/django.po556
-rw-r--r--django/contrib/admin/sites.py26
-rw-r--r--django/contrib/gis/db/models/query.py8
-rw-r--r--django/contrib/gis/gdal/prototypes/generation.py9
-rw-r--r--django/contrib/gis/geos/prototypes/topology.py2
-rw-r--r--django/contrib/gis/tests/relatedapp/tests.py22
-rw-r--r--django/db/backends/oracle/base.py13
-rw-r--r--django/db/backends/postgresql/operations.py17
-rw-r--r--django/forms/models.py32
-rw-r--r--django/template/defaulttags.py14
13 files changed, 743 insertions, 505 deletions
diff --git a/django/conf/locale/ca/LC_MESSAGES/django.mo b/django/conf/locale/ca/LC_MESSAGES/django.mo
index 38aecaae32..3039bd8fad 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 9cfafe3e2a..57f8764938 100644
--- a/django/conf/locale/ca/LC_MESSAGES/django.po
+++ b/django/conf/locale/ca/LC_MESSAGES/django.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-24 13:00+0100\n"
+"POT-Creation-Date: 2009-07-07 15:04+0200\n"
"PO-Revision-Date: 2009-03-24 13:28+0100\n"
"Last-Translator: Django Catalan Group <django-cat@googlegroups.com>\n"
"Language-Team: Catalan <ca@li.org>\n"
@@ -218,6 +218,20 @@ msgstr "xinès simplificat"
msgid "Traditional Chinese"
msgstr "xinès tradicional"
+#: contrib/admin/actions.py:60
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "Eliminat/s %(count)d %(items)s satisfactòriament."
+
+#: contrib/admin/actions.py:67 contrib/admin/options.py:1025
+msgid "Are you sure?"
+msgstr "Esteu segurs?"
+
+#: contrib/admin/actions.py:85
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Eliminar els %(verbose_name_plural)s seleccionats"
+
#: contrib/admin/filterspecs.py:44
#, python-format
msgid ""
@@ -252,15 +266,15 @@ msgstr "Aquest mes"
msgid "This year"
msgstr "Aquest any"
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:413
+#: contrib/admin/filterspecs.py:147 forms/widgets.py:434
msgid "Yes"
msgstr "Si"
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:413
+#: contrib/admin/filterspecs.py:147 forms/widgets.py:434
msgid "No"
msgstr "No"
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:413
+#: contrib/admin/filterspecs.py:154 forms/widgets.py:434
msgid "Unknown"
msgstr "Desconegut"
@@ -296,74 +310,61 @@ msgstr "entrada del registre"
msgid "log entries"
msgstr "entrades del registre"
-#: contrib/admin/options.py:131 contrib/admin/options.py:145
+#: contrib/admin/options.py:133 contrib/admin/options.py:147
msgid "None"
msgstr "cap"
-#: contrib/admin/options.py:498
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Eliminat/s %(count)d %(items)s satisfactòriament."
-
-#: contrib/admin/options.py:505 contrib/admin/options.py:1012
-msgid "Are you sure?"
-msgstr "Esteu segurs?"
-
-#: contrib/admin/options.py:523
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Eliminar els %(verbose_name_plural)s seleccionats"
-
-#: contrib/admin/options.py:531
+#: contrib/admin/options.py:519
#, python-format
msgid "Changed %s."
msgstr "Modificat %s."
-#: contrib/admin/options.py:531 contrib/admin/options.py:541
-#: contrib/comments/templates/comments/preview.html:15 forms/models.py:296
+#: contrib/admin/options.py:519 contrib/admin/options.py:529
+#: contrib/comments/templates/comments/preview.html:16 forms/models.py:388
+#: forms/models.py:600
msgid "and"
msgstr "i"
-#: contrib/admin/options.py:536
+#: contrib/admin/options.py:524
#, python-format
msgid "Added %(name)s \"%(object)s\"."
msgstr "Afegit %(name)s \"%(object)s\""
-#: contrib/admin/options.py:540
+#: contrib/admin/options.py:528
#, python-format
msgid "Changed %(list)s for %(name)s \"%(object)s\"."
msgstr "Modificat %(list)s per a %(name)s \"%(object)s\"."
-#: contrib/admin/options.py:545
+#: contrib/admin/options.py:533
#, python-format
msgid "Deleted %(name)s \"%(object)s\"."
msgstr "Eliminat %(name)s \"%(object)s\"."
-#: contrib/admin/options.py:549
+#: contrib/admin/options.py:537
msgid "No fields changed."
msgstr "Cap camp canviat."
-#: contrib/admin/options.py:610 contrib/auth/admin.py:67
+#: contrib/admin/options.py:598 contrib/auth/admin.py:67
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "El/la %(name)s \"%(obj)s\".ha estat afegit/da amb èxit."
-#: contrib/admin/options.py:614 contrib/admin/options.py:647
+#: contrib/admin/options.py:602 contrib/admin/options.py:635
#: contrib/auth/admin.py:75
msgid "You may edit it again below."
msgstr "Podeu editar-lo de nou a baix."
-#: contrib/admin/options.py:624 contrib/admin/options.py:657
+#: contrib/admin/options.py:612 contrib/admin/options.py:645
#, python-format
msgid "You may add another %s below."
msgstr "Podeu afegir un altre %s a baix."
-#: contrib/admin/options.py:645
+#: contrib/admin/options.py:633
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr "S'ha modificat amb èxit el/la %(name)s \"%(obj)s."
-#: contrib/admin/options.py:653
+#: contrib/admin/options.py:641
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
@@ -371,43 +372,43 @@ msgstr ""
"S'ha afegit exitosament el/la %(name)s \"%(obj)s\". Pot editar-lo de nou "
"abaix."
-#: contrib/admin/options.py:774
+#: contrib/admin/options.py:772
#, python-format
msgid "Add %s"
msgstr "Afegir %s"
-#: contrib/admin/options.py:805 contrib/admin/options.py:990
+#: contrib/admin/options.py:803 contrib/admin/options.py:1003
#, python-format
msgid "%(name)s object with primary key %(key)r does not exist."
msgstr "No existèix cap objecte %(name)s amb la clau primària %(key)r."
-#: contrib/admin/options.py:862
+#: contrib/admin/options.py:860
#, python-format
msgid "Change %s"
msgstr "Modificar %s"
-#: contrib/admin/options.py:894
+#: contrib/admin/options.py:904
msgid "Database error"
msgstr "Error de base de dades"
-#: contrib/admin/options.py:930
+#: contrib/admin/options.py:940
#, python-format
msgid "%(count)s %(name)s was changed successfully."
msgid_plural "%(count)s %(name)s were changed successfully."
msgstr[0] "%(count)s %(name)s s'ha modificat amb èxit."
msgstr[1] "%(count)s %(name)s s'han modificat amb èxit."
-#: contrib/admin/options.py:1005
+#: contrib/admin/options.py:1018
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr "El/la %(name)s \"%(obj)s\" ha estat eliminat amb èxit."
-#: contrib/admin/options.py:1041
+#: contrib/admin/options.py:1054
#, python-format
msgid "Change history: %s"
msgstr "Modificar històric: %s"
-#: contrib/admin/sites.py:15 contrib/admin/views/decorators.py:14
+#: contrib/admin/sites.py:20 contrib/admin/views/decorators.py:14
#: contrib/auth/forms.py:80
msgid ""
"Please enter a correct username and password. Note that both fields are case-"
@@ -416,11 +417,11 @@ msgstr ""
"Si us plau, introduïu un nom d'usuari i contrasenya vàlids. Tingueu en "
"compte que tots dos camps son sensibles a majúscules i minúscules."
-#: contrib/admin/sites.py:250 contrib/admin/views/decorators.py:40
+#: contrib/admin/sites.py:278 contrib/admin/views/decorators.py:40
msgid "Please log in again, because your session has expired."
msgstr "Si us plau, identifiqueu-vos de nou doncs la vostra sessió ha expirat."
-#: contrib/admin/sites.py:257 contrib/admin/views/decorators.py:47
+#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:47
msgid ""
"Looks like your browser isn't configured to accept cookies. Please enable "
"cookies, reload this page, and try again."
@@ -429,29 +430,29 @@ msgstr ""
"'cookies' (galetes). Si us plau, habiliteu les 'cookies', recarregueu "
"aquesta pàgina i proveu-ho de nou. "
-#: contrib/admin/sites.py:273 contrib/admin/sites.py:279
+#: contrib/admin/sites.py:301 contrib/admin/sites.py:307
#: contrib/admin/views/decorators.py:66
msgid "Usernames cannot contain the '@' character."
msgstr "Els noms d'usuari no poden contenir el caracter '@'."
-#: contrib/admin/sites.py:276 contrib/admin/views/decorators.py:62
+#: contrib/admin/sites.py:304 contrib/admin/views/decorators.py:62
#, python-format
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
"La vostra adreça de correu no és el vostre nom d'usuari. Provi '%s' en tot "
"cas."
-#: contrib/admin/sites.py:336
+#: contrib/admin/sites.py:360
msgid "Site administration"
msgstr "Lloc administratiu"
-#: contrib/admin/sites.py:349 contrib/admin/templates/admin/login.html:26
+#: contrib/admin/sites.py:373 contrib/admin/templates/admin/login.html:26
#: contrib/admin/templates/registration/password_reset_complete.html:14
#: contrib/admin/views/decorators.py:20
msgid "Log in"
msgstr "Iniciar sessió"
-#: contrib/admin/sites.py:396
+#: contrib/admin/sites.py:417
#, python-format
msgid "%s administration"
msgstr "Administració de %s"
@@ -466,34 +467,27 @@ msgstr "Un o més %(fieldname)s en %(name)s: %(obj)s"
msgid "One or more %(fieldname)s in %(name)s:"
msgstr "Un o més %(fieldname)s en %(name)s:"
-#: contrib/admin/util.py:222
-#, fuzzy
-msgid "verbose_name"
-msgid_plural "verbose_name_plural"
-msgstr[0] "verbose_name"
-msgstr[1] "verbose_name_plural"
-
-#: contrib/admin/widgets.py:70
+#: contrib/admin/widgets.py:71
msgid "Date:"
msgstr "Data:"
-#: contrib/admin/widgets.py:70
+#: contrib/admin/widgets.py:71
msgid "Time:"
msgstr "Hora:"
-#: contrib/admin/widgets.py:94
+#: contrib/admin/widgets.py:95
msgid "Currently:"
msgstr "Actualment:"
-#: contrib/admin/widgets.py:94
+#: contrib/admin/widgets.py:95
msgid "Change:"
msgstr "Modificar:"
-#: contrib/admin/widgets.py:123
+#: contrib/admin/widgets.py:124
msgid "Lookup"
msgstr "Cercar"
-#: contrib/admin/widgets.py:230
+#: contrib/admin/widgets.py:236
msgid "Add Another"
msgstr "Afegir un altre"
@@ -508,9 +502,9 @@ 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/app_index.html:8
-#: contrib/admin/templates/admin/base.html:33
+#: contrib/admin/templates/admin/base.html:31
#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:20
+#: contrib/admin/templates/admin/change_list.html:25
#: contrib/admin/templates/admin/delete_confirmation.html:6
#: contrib/admin/templates/admin/delete_selected_confirmation.html:6
#: contrib/admin/templates/admin/invalid_setup.html:4
@@ -552,7 +546,6 @@ msgid "Run the selected action"
msgstr "Executar la acció seleccionada"
#: contrib/admin/templates/admin/actions.html:4
-#: contrib/admin/templates/admin/search_form.html:8
msgid "Go"
msgstr "Anar"
@@ -562,26 +555,26 @@ msgstr "Anar"
msgid "%(name)s"
msgstr "%(name)s"
-#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin/base.html:26
msgid "Welcome,"
msgstr "Benvingut/da,"
-#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin/base.html:26
#: contrib/admin/templates/registration/password_change_done.html:3
#: contrib/admin/templates/registration/password_change_form.html:3
#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
msgid "Documentation"
msgstr "Documentació"
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
+#: contrib/admin/templates/admin/base.html:26
+#: contrib/admin/templates/admin/auth/user/change_password.html:14
+#: contrib/admin/templates/admin/auth/user/change_password.html:47
#: contrib/admin/templates/registration/password_change_done.html:3
#: contrib/admin/templates/registration/password_change_form.html:3
msgid "Change password"
msgstr "Canviar contrasenya"
-#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin/base.html:26
#: contrib/admin/templates/registration/password_change_done.html:3
#: contrib/admin/templates/registration/password_change_form.html:3
msgid "Log out"
@@ -612,24 +605,24 @@ msgid "View on site"
msgstr "Veure al lloc"
#: contrib/admin/templates/admin/change_form.html:38
-#: contrib/admin/templates/admin/change_list.html:49
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
+#: contrib/admin/templates/admin/change_list.html:54
+#: 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, corregiu l'error mostrat a baix."
msgstr[1] "Si us plau, corregiu els errors mostrats a baix."
-#: contrib/admin/templates/admin/change_list.html:41
+#: contrib/admin/templates/admin/change_list.html:46
#, python-format
msgid "Add %(name)s"
msgstr "Afegir %(name)s"
-#: contrib/admin/templates/admin/change_list.html:60
+#: contrib/admin/templates/admin/change_list.html:65
msgid "Filter"
msgstr "Filtre"
#: contrib/admin/templates/admin/delete_confirmation.html:10
-#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:251
+#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:275
msgid "Delete"
msgstr "Eliminar"
@@ -669,9 +662,9 @@ msgid ""
"your account doesn't have permission to delete the following types of "
"objects:"
msgstr ""
-"Eliminar el/la %(object_name)s provocaria l'eliminació "
-"d'objectes relacionats, però el vostre compte no te permissos per a esborrar "
-"els tipus d'objecte següents:"
+"Eliminar el/la %(object_name)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_selected_confirmation.html:22
#, python-format
@@ -679,8 +672,8 @@ msgid ""
"Are you sure you want to delete the selected %(object_name)s objects? All of "
"the following objects and it's related items will be deleted:"
msgstr ""
-"Esteu segurs de voler esborrar els/les %(object_name)s seleccionats?"
-"Tots aquests objectes i els seus elements relacionats s'esborraran:"
+"Esteu segurs de voler esborrar els/les %(object_name)s seleccionats?Tots "
+"aquests objectes i els seus elements relacionats s'esborraran:"
#: contrib/admin/templates/admin/filter.html:2
#, python-format
@@ -712,6 +705,10 @@ msgstr "Les meves accions"
msgid "None available"
msgstr "Cap disponible"
+#: contrib/admin/templates/admin/index.html:72
+msgid "Unknown content"
+msgstr "Contingut desconegut"
+
#: contrib/admin/templates/admin/invalid_setup.html:7
msgid ""
"Something's wrong with your database installation. Make sure the appropriate "
@@ -760,6 +757,15 @@ msgstr ""
msgid "Show all"
msgstr "Mostrar tots"
+#: contrib/admin/templates/admin/pagination.html:11
+#: contrib/admin/templates/admin/submit_line.html:3
+msgid "Save"
+msgstr "Desar"
+
+#: contrib/admin/templates/admin/search_form.html:8
+msgid "Search"
+msgstr "Cerca"
+
#: contrib/admin/templates/admin/search_form.html:10
#, python-format
msgid "1 result"
@@ -772,10 +778,6 @@ msgstr[1] "%(counter)s resultats"
msgid "%(full_result_count)s total"
msgstr "%(full_result_count)s en total"
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Desar"
-
#: contrib/admin/templates/admin/submit_line.html:5
msgid "Save as new"
msgstr "Desar com a nou"
@@ -802,23 +804,23 @@ msgid "Username"
msgstr "Usuari"
#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
+#: contrib/admin/templates/admin/auth/user/change_password.html:34
#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185
msgid "Password"
msgstr "Contrasenya"
#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/admin/templates/admin/auth/user/change_password.html:40
#: contrib/auth/forms.py:186
msgid "Password (again)"
msgstr "Contrasenya (de nou)"
#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
+#: contrib/admin/templates/admin/auth/user/change_password.html:41
msgid "Enter the same password as above, for verification."
msgstr "Introduïu la mateixa contrasenya de dalt, per fer-ne la verificació."
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
+#: 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 "Introduïu una contrasenya per l'usuari <strong>%(username)s</strong>"
@@ -1035,114 +1037,115 @@ msgstr "El model %(model_name)r no s'ha trobat en l'aplicació %(app_label)r"
msgid "the related `%(app_label)s.%(data_type)s` object"
msgstr "l'objecte relacionat `%(app_label)s.%(data_type)s`"
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
+#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:225
+#: contrib/admindocs/views.py:230 contrib/admindocs/views.py:244
+#: contrib/admindocs/views.py:258 contrib/admindocs/views.py:263
msgid "model:"
msgstr "model:"
-#: contrib/admindocs/views.py:237
+#: contrib/admindocs/views.py:221 contrib/admindocs/views.py:253
#, python-format
msgid "related `%(app_label)s.%(object_name)s` objects"
msgstr "objectes relacionats `%(app_label)s.%(object_name)s`"
-#: contrib/admindocs/views.py:242
+#: contrib/admindocs/views.py:225 contrib/admindocs/views.py:258
#, python-format
msgid "all %s"
msgstr "tots %s"
-#: contrib/admindocs/views.py:247
+#: contrib/admindocs/views.py:230 contrib/admindocs/views.py:263
#, python-format
msgid "number of %s"
msgstr "nombre de %s"
-#: contrib/admindocs/views.py:252
+#: contrib/admindocs/views.py:268
#, python-format
msgid "Fields on %s objects"
msgstr "Camps en objectes %s"
-#: contrib/admindocs/views.py:315 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:328 contrib/admindocs/views.py:334
-#: contrib/admindocs/views.py:335 contrib/admindocs/views.py:337
+#: contrib/admindocs/views.py:331 contrib/admindocs/views.py:342
+#: contrib/admindocs/views.py:344 contrib/admindocs/views.py:350
+#: contrib/admindocs/views.py:351 contrib/admindocs/views.py:353
msgid "Integer"
msgstr "Enter"
-#: contrib/admindocs/views.py:316
+#: contrib/admindocs/views.py:332
msgid "Boolean (Either True or False)"
msgstr "Booleà (Verdader o Fals)"
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:336
+#: contrib/admindocs/views.py:333 contrib/admindocs/views.py:352
#, python-format
msgid "String (up to %(max_length)s)"
msgstr "Cadena (de fins a %(max_length)s)"
-#: contrib/admindocs/views.py:318
+#: contrib/admindocs/views.py:334
msgid "Comma-separated integers"
msgstr "Enters separats per comes"
-#: contrib/admindocs/views.py:319
+#: contrib/admindocs/views.py:335
msgid "Date (without time)"
msgstr "Data (sense hora)"
-#: contrib/admindocs/views.py:320
+#: contrib/admindocs/views.py:336
msgid "Date (with time)"
msgstr "Data (amb hora)"
-#: contrib/admindocs/views.py:321
+#: contrib/admindocs/views.py:337
msgid "Decimal number"
msgstr "Número decimal"
-#: contrib/admindocs/views.py:322
+#: contrib/admindocs/views.py:338
msgid "E-mail address"
msgstr "Adreça de correu electrònic"
-#: contrib/admindocs/views.py:323 contrib/admindocs/views.py:324
-#: contrib/admindocs/views.py:327
+#: contrib/admindocs/views.py:339 contrib/admindocs/views.py:340
+#: contrib/admindocs/views.py:343
msgid "File path"
msgstr "Ruta del fitxer"
-#: contrib/admindocs/views.py:325
+#: contrib/admindocs/views.py:341
msgid "Floating point number"
msgstr "Número amb punt de coma flotant"
-#: contrib/admindocs/views.py:329 contrib/comments/models.py:58
+#: contrib/admindocs/views.py:345 contrib/comments/models.py:60
msgid "IP address"
msgstr "Adreça IP"
-#: contrib/admindocs/views.py:331
+#: contrib/admindocs/views.py:347
msgid "Boolean (Either True, False or None)"
msgstr "Booleà (Verdader, Fals o 'None' (cap))"
-#: contrib/admindocs/views.py:332
+#: contrib/admindocs/views.py:348
msgid "Relation to parent model"
msgstr "Relació amb el model pare"
-#: contrib/admindocs/views.py:333
+#: contrib/admindocs/views.py:349
msgid "Phone number"
msgstr "Número de telèfon"
-#: contrib/admindocs/views.py:338
+#: contrib/admindocs/views.py:354
msgid "Text"
msgstr "Text"
-#: contrib/admindocs/views.py:339
+#: contrib/admindocs/views.py:355
msgid "Time"
msgstr "Hora"
-#: contrib/admindocs/views.py:340 contrib/comments/forms.py:95
+#: contrib/admindocs/views.py:356 contrib/comments/forms.py:95
#: contrib/comments/templates/comments/moderation_queue.html:37
#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7
msgid "URL"
msgstr "URL"
-#: contrib/admindocs/views.py:341
+#: contrib/admindocs/views.py:357
msgid "U.S. state (two uppercase letters)"
msgstr "Estat dels E.U.A. (dues lletres majúscules)"
-#: contrib/admindocs/views.py:342
+#: contrib/admindocs/views.py:358
msgid "XML text"
msgstr "Text XML"
-#: contrib/admindocs/views.py:368
+#: contrib/admindocs/views.py:384
#, python-format
msgid "%s does not appear to be a urlpattern object"
msgstr "%s no sembla ser un objecte 'urlpattern'"
@@ -1247,7 +1250,7 @@ msgid "Change password: %s"
msgstr "Canviar contrasenya: %s"
#: contrib/auth/forms.py:15 contrib/auth/forms.py:48
-#: contrib/auth/models.py:127
+#: contrib/auth/models.py:128
msgid ""
"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
"digits and underscores)."
@@ -1338,31 +1341,31 @@ msgstr "permisos"
msgid "group"
msgstr "grup"
-#: contrib/auth/models.py:91 contrib/auth/models.py:137
+#: contrib/auth/models.py:91 contrib/auth/models.py:138
msgid "groups"
msgstr "grups"
-#: contrib/auth/models.py:127
+#: contrib/auth/models.py:128
msgid "username"
msgstr "nom d'usuari"
-#: contrib/auth/models.py:128
+#: contrib/auth/models.py:129
msgid "first name"
msgstr "nom propi"
-#: contrib/auth/models.py:129
+#: contrib/auth/models.py:130
msgid "last name"
msgstr "cognoms"
-#: contrib/auth/models.py:130
+#: contrib/auth/models.py:131
msgid "e-mail address"
msgstr "adreça de correu electrònic"
-#: contrib/auth/models.py:131
+#: contrib/auth/models.py:132
msgid "password"
msgstr "contrasenya"
-#: contrib/auth/models.py:131
+#: contrib/auth/models.py:132
msgid ""
"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
"password form</a>."
@@ -1370,19 +1373,19 @@ msgstr ""
"Utilitzeu '[algo]$[salt]$[hexdigest]' o el <a href=\"password/\">formulari "
"de canvi de contrasenya</a>."
-#: contrib/auth/models.py:132
+#: contrib/auth/models.py:133
msgid "staff status"
msgstr "membre del personal"
-#: contrib/auth/models.py:132
+#: contrib/auth/models.py:133
msgid "Designates whether the user can log into this admin site."
msgstr "Indica si l'usuari pot entrar en el lloc administratiu."
-#: contrib/auth/models.py:133
+#: contrib/auth/models.py:134
msgid "active"
msgstr "actiu"
-#: contrib/auth/models.py:133
+#: contrib/auth/models.py:134
msgid ""
"Designates whether this user should be treated as active. Unselect this "
"instead of deleting accounts."
@@ -1390,11 +1393,11 @@ msgstr ""
"Designa si aquest usuari ha de ser tractat com a actiu. Deseleccioneu-ho "
"enlloc d'esborrar comptes d'usuari."
-#: contrib/auth/models.py:134
+#: contrib/auth/models.py:135
msgid "superuser status"
msgstr "estat de superusuari"
-#: contrib/auth/models.py:134
+#: contrib/auth/models.py:135
msgid ""
"Designates that this user has all permissions without explicitly assigning "
"them."
@@ -1402,15 +1405,15 @@ msgstr ""
"Designa que aquest usuari té tots els permissos sense assignar-los "
"explícitament."
-#: contrib/auth/models.py:135
+#: contrib/auth/models.py:136
msgid "last login"
msgstr "últim inici de sessió"
-#: contrib/auth/models.py:136
+#: contrib/auth/models.py:137
msgid "date joined"
msgstr "data de creació"
-#: contrib/auth/models.py:138
+#: contrib/auth/models.py:139
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
@@ -1418,23 +1421,24 @@ msgstr ""
"Junt amb els permissos asignats manualment, aquest usuari tindrà, també, els "
"permissos dels grups dels que sigui membre."
-#: contrib/auth/models.py:139
+#: contrib/auth/models.py:140
msgid "user permissions"
msgstr "permissos de l'usuari"
-#: contrib/auth/models.py:143
+#: contrib/auth/models.py:144 contrib/comments/models.py:50
+#: contrib/comments/models.py:168
msgid "user"
msgstr "usuari"
-#: contrib/auth/models.py:144
+#: contrib/auth/models.py:145
msgid "users"
msgstr "usuaris"
-#: contrib/auth/models.py:300
+#: contrib/auth/models.py:301
msgid "message"
msgstr "missatge"
-#: contrib/auth/views.py:50
+#: contrib/auth/views.py:56
msgid "Logged out"
msgstr "Sessió finalitzada"
@@ -1450,6 +1454,16 @@ msgstr "contingut"
msgid "Metadata"
msgstr "metadades"
+#: contrib/comments/feeds.py:13
+#, python-format
+msgid "%(site_name)s comments"
+msgstr "comentaris de %(site_name)s"
+
+#: contrib/comments/feeds.py:23
+#, python-format
+msgid "Latest comments on %(site_name)s"
+msgstr "Últims comentaris a %(site_name)s."
+
#: contrib/comments/forms.py:93
#: contrib/comments/templates/comments/moderation_queue.html:34
msgid "Name"
@@ -1479,46 +1493,51 @@ msgstr ""
"Si entreu cualsevol cosa en aquest camp el vostre comentari es tractarà com "
"a spam"
-#: contrib/comments/models.py:23
+#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74
+msgid "content type"
+msgstr "tipus de contingut"
+
+#: contrib/comments/models.py:24
msgid "object ID"
msgstr "ID de l'objecte"
-#: contrib/comments/models.py:50
+#: contrib/comments/models.py:52
msgid "user's name"
msgstr "nom d'usuari"
-#: contrib/comments/models.py:51
+#: contrib/comments/models.py:53
msgid "user's email address"
msgstr "adreça de correu electrònic del usuari"
-#: contrib/comments/models.py:52
+#: contrib/comments/models.py:54
msgid "user's URL"
msgstr "URL del usuari"
-#: contrib/comments/models.py:54
+#: contrib/comments/models.py:56 contrib/comments/models.py:76
+#: contrib/comments/models.py:169
msgid "comment"
msgstr "comentari"
-#: contrib/comments/models.py:57
+#: contrib/comments/models.py:59
msgid "date/time submitted"
msgstr "data/hora d'enviament"
-#: contrib/comments/models.py:59
+#: contrib/comments/models.py:61
msgid "is public"
msgstr "és públic"
-#: contrib/comments/models.py:60
+#: contrib/comments/models.py:62
msgid ""
"Uncheck this box to make the comment effectively disappear from the site."
msgstr ""
"Desmarqui aquesta casella per fer desaparèixar aquest comentari del lloc web "
"de forma efectiva."
-#: contrib/comments/models.py:62
+#: contrib/comments/models.py:64
msgid "is removed"
msgstr "està eliminat"
-#: contrib/comments/models.py:63
+#: contrib/comments/models.py:65
msgid ""
"Check this box if the comment is inappropriate. A \"This comment has been "
"removed\" message will be displayed instead."
@@ -1526,7 +1545,11 @@ msgstr ""
"Marqueu aquesta caixa si el comentari no és apropiat. En lloc seu es "
"mostrarà \"Aquest comentari ha estat eliminat\" "
-#: contrib/comments/models.py:115
+#: contrib/comments/models.py:77
+msgid "comments"
+msgstr "comentaris"
+
+#: contrib/comments/models.py:119
msgid ""
"This comment was posted by an authenticated user and thus the name is read-"
"only."
@@ -1534,7 +1557,7 @@ msgstr ""
"Aquest comentari va ser publicat per un usuari autentificat, per això el seu "
"nom no es modificable."
-#: contrib/comments/models.py:124
+#: contrib/comments/models.py:128
msgid ""
"This comment was posted by an authenticated user and thus the email is read-"
"only."
@@ -1542,7 +1565,7 @@ msgstr ""
"Aquest comentari va ser publicat per un usuari autentificat, per això la "
"seva adreça de correu electrònic no es pot modificar."
-#: contrib/comments/models.py:149
+#: contrib/comments/models.py:153
#, python-format
msgid ""
"Posted by %(user)s at %(date)s\n"
@@ -1557,9 +1580,26 @@ msgstr ""
"\n"
"http://%(domain)s%(url)s"
+# Context problem... waitting for comments from django-i18n
+#: contrib/comments/models.py:170
+msgid "flag"
+msgstr "marcar"
+
+#: contrib/comments/models.py:171
+msgid "date"
+msgstr "data"
+
+#: contrib/comments/models.py:181
+msgid "comment flag"
+msgstr "marca del comentari"
+
+#: contrib/comments/models.py:182
+msgid "comment flags"
+msgstr "marques de comentari"
+
#: contrib/comments/templates/comments/approve.html:4
msgid "Approve a comment"
-msgstr "aprovar un comentari"
+msgstr "Aprovar un comentari"
#: contrib/comments/templates/comments/approve.html:7
msgid "Really make this comment public?"
@@ -1616,13 +1656,13 @@ msgstr "Marcar"
msgid "Thanks for flagging"
msgstr "Gràcies per marcar"
-#: contrib/comments/templates/comments/form.html:16
-#: contrib/comments/templates/comments/preview.html:31
+#: contrib/comments/templates/comments/form.html:17
+#: contrib/comments/templates/comments/preview.html:32
msgid "Post"
msgstr "Publicar"
-#: contrib/comments/templates/comments/form.html:17
-#: contrib/comments/templates/comments/preview.html:32
+#: contrib/comments/templates/comments/form.html:18
+#: contrib/comments/templates/comments/preview.html:33
msgid "Preview"
msgstr "Vista prèvia"
@@ -1668,33 +1708,29 @@ msgid "Thank you for your comment"
msgstr "Gràcies pel seu comentari"
#: contrib/comments/templates/comments/preview.html:4
-#: contrib/comments/templates/comments/preview.html:12
+#: contrib/comments/templates/comments/preview.html:13
msgid "Preview your comment"
msgstr "Previsualitzar el seu comentari"
-#: contrib/comments/templates/comments/preview.html:10
+#: contrib/comments/templates/comments/preview.html:11
msgid "Please correct the error below"
msgid_plural "Please correct the errors below"
msgstr[0] "Si us plau, corregiu l'error mostrat a baix."
msgstr[1] "Si us plau, corregiu els errors mostrats a baix."
-#: contrib/comments/templates/comments/preview.html:15
+#: contrib/comments/templates/comments/preview.html:16
msgid "Post your comment"
msgstr "Enviar el seu comentari"
-#: contrib/comments/templates/comments/preview.html:15
+#: contrib/comments/templates/comments/preview.html:16
msgid "or make changes"
msgstr "o faci canvis."
-#: contrib/contenttypes/models.py:67
+#: contrib/contenttypes/models.py:70
msgid "python model class name"
msgstr "nom de la classe del model en python"
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "tipus de contingut"
-
-#: contrib/contenttypes/models.py:72
+#: contrib/contenttypes/models.py:75
msgid "content types"
msgstr "tipus de continguts"
@@ -1765,18 +1801,26 @@ msgstr ""
"Ho sentim, pero el seu formulari ha expirat. Per favor, continui omplint el "
"formulari en aquesta pàgina."
-#: contrib/gis/forms/fields.py:14
+#: contrib/gis/forms/fields.py:17
msgid "No geometry value provided."
msgstr "No s'ha indicat cap valor de geometria."
-#: contrib/gis/forms/fields.py:15
+#: contrib/gis/forms/fields.py:18
msgid "Invalid geometry value."
msgstr "Valor de geometria invàlid."
-#: contrib/gis/forms/fields.py:16
+#: contrib/gis/forms/fields.py:19
msgid "Invalid geometry type."
msgstr "Tipus de geometria invàlid."
+#: contrib/gis/forms/fields.py:20
+msgid ""
+"An error occurred when transforming the geometry to the SRID of the geometry "
+"form field."
+msgstr ""
+"Ha ocurregut un error al transformar la geometria al SRID de la geometria "
+"del camp de formulari."
+
#: contrib/humanize/templatetags/humanize.py:19
msgid "th"
msgstr "rt"
@@ -2112,51 +2156,51 @@ msgstr "Regió Bohèmia Central"
#: contrib/localflavor/cz/cz_regions.py:10
msgid "South Bohemian Region"
-msgstr "Regió Bohemia Sur"
+msgstr "Regió Bohèmia Sur"
#: contrib/localflavor/cz/cz_regions.py:11
msgid "Pilsen Region"
-msgstr ""
+msgstr "Regió Pilsen"
#: contrib/localflavor/cz/cz_regions.py:12
msgid "Carlsbad Region"
-msgstr ""
+msgstr "Regió Carlsbad"
#: contrib/localflavor/cz/cz_regions.py:13
msgid "Usti Region"
-msgstr ""
+msgstr "Regió Usti"
#: contrib/localflavor/cz/cz_regions.py:14
msgid "Liberec Region"
-msgstr ""
+msgstr "Regió Liberec"
#: contrib/localflavor/cz/cz_regions.py:15
msgid "Hradec Region"
-msgstr ""
+msgstr "Regió Hradec"
#: contrib/localflavor/cz/cz_regions.py:16
msgid "Pardubice Region"
-msgstr ""
+msgstr "Regió Pardubice"
#: contrib/localflavor/cz/cz_regions.py:17
msgid "Vysocina Region"
-msgstr ""
+msgstr "Regió Vysocina"
#: contrib/localflavor/cz/cz_regions.py:18
msgid "South Moravian Region"
-msgstr ""
+msgstr "Regió Moràvia Sur"
#: contrib/localflavor/cz/cz_regions.py:19
msgid "Olomouc Region"
-msgstr ""
+msgstr "Regió Olomouc"
#: contrib/localflavor/cz/cz_regions.py:20
msgid "Zlin Region"
-msgstr ""
+msgstr "Regió Zlin"
#: contrib/localflavor/cz/cz_regions.py:21
msgid "Moravian-Silesian Region"
-msgstr ""
+msgstr "Regió Moràvia-Silesiana"
#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30
msgid "Enter a postal code in the format XXXXX or XXX XX."
@@ -2164,11 +2208,13 @@ msgstr "Introduïu un codi postal en el format XXXXX or XXX XX."
#: contrib/localflavor/cz/forms.py:47
msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX."
-msgstr "Introduïu un número de naixement en el format XXXXXX/XXXX o XXXXXXXXXX."
+msgstr ""
+"Introduïu un número de naixement en el format XXXXXX/XXXX o XXXXXXXXXX."
#: contrib/localflavor/cz/forms.py:48
msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'"
-msgstr "El paràmetre opcional 'Gènere' és invàlid, els valors vàlids son 'f' i 'm'."
+msgstr ""
+"El paràmetre opcional 'Gènere' és invàlid, els valors vàlids son 'f' i 'm'."
#: contrib/localflavor/cz/forms.py:49
msgid "Enter a valid birth number."
@@ -3004,16 +3050,16 @@ msgstr "Introduïu un número NIP en el format XXX-XXX-XX-XX o XX-XX-XXX-XXX."
msgid "Wrong checksum for the Tax Number (NIP)."
msgstr "Validació invàlida del número tributari (NIP)."
-#: contrib/localflavor/pl/forms.py:111
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
+#: contrib/localflavor/pl/forms.py:109
+msgid "National Business Register Number (REGON) consists of 9 or 14 digits."
msgstr ""
-"El número nacional de registre de negocis (REGON) consisteix en 7 o 9 dígits."
+"El número nacional de registre de negocis (REGON) consisteix en 9 o 14 dígits."
-#: contrib/localflavor/pl/forms.py:112
+#: contrib/localflavor/pl/forms.py:110
msgid "Wrong checksum for the National Business Register Number (REGON)."
msgstr "Validació invàlida del número nacional de registre de negocis."
-#: contrib/localflavor/pl/forms.py:155
+#: contrib/localflavor/pl/forms.py:148
msgid "Enter a postal code in the format XX-XXX."
msgstr "Introduïu un codi postal en el format XX-XXX."
@@ -3851,60 +3897,60 @@ msgstr "nom per mostrar"
msgid "sites"
msgstr "llocs"
-#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:700
+#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710
msgid "This value must be an integer."
msgstr "Aquest valor ha de ser un enter."
-#: db/models/fields/__init__.py:387
+#: db/models/fields/__init__.py:388
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:420
+#: db/models/fields/__init__.py:427
msgid "This field cannot be null."
msgstr "Aquest camp no pot ser nul."
-#: db/models/fields/__init__.py:436
+#: db/models/fields/__init__.py:443
msgid "Enter only digits separated by commas."
msgstr "Introduïu només dígits separats per comes."
-#: db/models/fields/__init__.py:467
+#: db/models/fields/__init__.py:474
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Introduïu una data vàlida en el forma AAAA-MM-DD."
-#: db/models/fields/__init__.py:476
+#: db/models/fields/__init__.py:483
#, python-format
msgid "Invalid date: %s"
msgstr "Data invàlida: %s"
-#: db/models/fields/__init__.py:540 db/models/fields/__init__.py:558
+#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
msgstr ""
"Introduïu un data/hora vàlida en format YYYY-MM-DD HH:MM[:ss[.uuuuuu]]."
-#: db/models/fields/__init__.py:594
+#: db/models/fields/__init__.py:601
msgid "This value must be a decimal number."
msgstr "Aquest valor ha de ser un número decimal."
-#: db/models/fields/__init__.py:676
+#: db/models/fields/__init__.py:686
msgid "This value must be a float."
msgstr "Aquest valor ha de ser un número amb punt de coma flotant."
-#: db/models/fields/__init__.py:736
+#: db/models/fields/__init__.py:746
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/__init__.py:839 db/models/fields/__init__.py:853
+#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863
msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
msgstr "Introduïu una hora vàlida en el format HH:MM[:ss[.uuuuuu]]."
-#: db/models/fields/related.py:779
+#: db/models/fields/related.py:816
msgid ""
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
"Premeu la tecla \"Control\" -o \"Command\" en un Mac- per seleccionar més "
"d'un valor."
-#: db/models/fields/related.py:857
+#: db/models/fields/related.py:894
#, python-format
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
msgid_plural ""
@@ -3971,11 +4017,11 @@ msgstr "Assegureu-vos de que no hi ha més de %s decimals."
msgid "Ensure that there are no more than %s digits before the decimal point."
msgstr "Assegureu-vos de que no hi ha més de %s dígits decimals."
-#: forms/fields.py:288 forms/fields.py:850
+#: forms/fields.py:288 forms/fields.py:863
msgid "Enter a valid date."
msgstr "Introduïu una data vàlida."
-#: forms/fields.py:322 forms/fields.py:851
+#: forms/fields.py:322 forms/fields.py:864
msgid "Enter a valid time."
msgstr "Introduïu una hora vàlida."
@@ -3996,7 +4042,15 @@ msgstr "No s'ha enviat cap fitxer."
msgid "The submitted file is empty."
msgstr "El fitxer enviat està buit."
-#: forms/fields.py:478
+#: forms/fields.py:450
+#, python-format
+msgid ""
+"Ensure this filename has at most %(max)d characters (it has %(length)d)."
+msgstr ""
+"Assegureu-vos de que el valor té com a màxim %(max)d caràcters "
+"(en té %(length)d)."
+
+#: forms/fields.py:483
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
@@ -4004,106 +4058,139 @@ msgstr ""
"Envieu una imatge vàlida. El fitxer que heu enviat no era una imatge o "
"estava corrupte."
-#: forms/fields.py:539
+#: forms/fields.py:544
msgid "Enter a valid URL."
msgstr "Introduïu una URL vàlida."
-#: forms/fields.py:540
+#: forms/fields.py:545
msgid "This URL appears to be a broken link."
msgstr "Aquesta URL sembla ser un enllaç trencat."
-#: forms/fields.py:619 forms/fields.py:697
+#: forms/fields.py:625 forms/fields.py:703
#, python-format
msgid "Select a valid choice. %(value)s is not one of the available choices."
msgstr "Esculliu una opció vàlida. %(value)s no és una de les opcions vàlides."
-#: forms/fields.py:698 forms/fields.py:759 forms/models.py:729
+#: forms/fields.py:704 forms/fields.py:765 forms/models.py:1003
msgid "Enter a list of values."
msgstr "Introduïu una llista de valors."
-#: forms/fields.py:879
+#: forms/fields.py:892
msgid "Enter a valid IPv4 address."
msgstr "Introduïu una adreça IPv4 vàlida."
-#: forms/fields.py:889
+#: forms/fields.py:902
msgid ""
"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
msgstr ""
"Introduïu un 'slug' vàlid, consistent en lletres, números, guions o guions "
"baixos."
-#: forms/formsets.py:247 forms/formsets.py:249
+#: forms/formsets.py:271 forms/formsets.py:273
msgid "Order"
msgstr "Ordre"
-#: forms/models.py:289 forms/models.py:298
+#: forms/models.py:367
+#, python-format
+msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
+msgstr "El camp %(field_name)s ha de ser únic per a %(lookup)s %(date_field)s."
+
+#: forms/models.py:381 forms/models.py:389
#, python-format
msgid "%(model_name)s with this %(field_label)s already exists."
msgstr "Ja existeix %(model_name)s amb aquest %(field_label)s."
-#: forms/models.py:602
+#: forms/models.py:594
+#, python-format
+msgid "Please correct the duplicate data for %(field)s."
+msgstr "Si us plau, corregiu la dada duplicada per a %(field)s."
+
+#: forms/models.py:598
+#, python-format
+msgid "Please correct the duplicate data for %(field)s, which must be unique."
+msgstr "Si us plau, corregiu la dada duplicada per a %(field)s, la qual ha de ser única."
+
+#: forms/models.py:604
+#, python-format
+msgid ""
+"Please correct the duplicate data for %(field_name)s which must be unique "
+"for the %(lookup)s in %(date_field)s."
+msgstr ""
+"Si us plau, corregiu la dada duplicada per a %(field_name)s, "
+"la qual ha de ser única per a la cerca %(lookup)s en %(date_field)s."
+
+#: forms/models.py:612
+msgid "Please correct the duplicate values below."
+msgstr "Si us plau, corregiu els valors duplicats a baix."
+
+#: forms/models.py:867
msgid "The inline foreign key did not match the parent instance primary key."
msgstr ""
"La clau forànea en línea no coincideix amb la clau primària de la instància "
"del pare"
-#: forms/models.py:659
+#: forms/models.py:930
msgid "Select a valid choice. That choice is not one of the available choices."
msgstr ""
"Escolli una opció vàlida; Aquesta opció no és una de les opcions disponibles."
-#: forms/models.py:730
+#: forms/models.py:1004
#, python-format
msgid "Select a valid choice. %s is not one of the available choices."
msgstr "Escolliu una opció vàlida; %s' no és una de les opcions vàlides."
-#: template/defaultfilters.py:751
+#: forms/models.py:1006
+#, python-format
+msgid "\"%s\" is not a valid value for a primary key."
+msgstr "\"%s\" no és un valor vàlid per a una clau primària."
+
+#: template/defaultfilters.py:767
msgid "yes,no,maybe"
msgstr "si,no,potser"
-#: template/defaultfilters.py:782
+#: template/defaultfilters.py:798
#, python-format
msgid "%(size)d byte"
msgid_plural "%(size)d bytes"
msgstr[0] "%(size)d byte"
msgstr[1] "%(size)d bytes"
-#: template/defaultfilters.py:784
+#: template/defaultfilters.py:800
#, python-format
msgid "%.1f KB"
msgstr "%.1f KB"
-#: template/defaultfilters.py:786
+#: template/defaultfilters.py:802
#, python-format
msgid "%.1f MB"
msgstr "%.1f MB"
-#: template/defaultfilters.py:787
+#: template/defaultfilters.py:803
#, python-format
msgid "%.1f GB"
msgstr "%.1f GB"
-#: utils/dateformat.py:41
+#: utils/dateformat.py:42
msgid "p.m."
msgstr "p.m."
-#: utils/dateformat.py:42
+#: utils/dateformat.py:43
msgid "a.m."
msgstr "a.m."
-#: utils/dateformat.py:47
+#: utils/dateformat.py:48
msgid "PM"
msgstr "PM"
-#: utils/dateformat.py:48
+#: utils/dateformat.py:49
msgid "AM"
msgstr "AM"
-#: utils/dateformat.py:97
+#: utils/dateformat.py:98
msgid "midnight"
msgstr "mitja nit"
-#: utils/dateformat.py:99
+#: utils/dateformat.py:100
msgid "noon"
msgstr "mig dia"
@@ -4327,16 +4414,16 @@ msgid_plural "minutes"
msgstr[0] "minut"
msgstr[1] "minuts"
-#: utils/timesince.py:43
+#: utils/timesince.py:45
msgid "minutes"
msgstr "minuts"
-#: utils/timesince.py:48
+#: utils/timesince.py:50
#, python-format
msgid "%(number)d %(type)s"
msgstr "%(number)d %(type)s"
-#: utils/timesince.py:54
+#: utils/timesince.py:56
#, python-format
msgid ", %(number)d %(type)s"
msgstr ", %(number)d %(type)s"
@@ -4371,3 +4458,9 @@ msgstr "El/la %(verbose_name)s s'ha actualtzat amb èxit."
#, python-format
msgid "The %(verbose_name)s was deleted."
msgstr "El %(verbose_name)s s'ha eliminat."
+
+#, fuzzy
+#~ msgid "verbose_name"
+#~ msgid_plural "verbose_name_plural"
+#~ msgstr[0] "verbose_name"
+#~ msgstr[1] "verbose_name_plural"
diff --git a/django/conf/locale/es/LC_MESSAGES/django.mo b/django/conf/locale/es/LC_MESSAGES/django.mo
index 831964a5ae..a8bd5f985d 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 b02ab9b7ff..fb5eec0c43 100644
--- a/django/conf/locale/es/LC_MESSAGES/django.po
+++ b/django/conf/locale/es/LC_MESSAGES/django.po
@@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-24 13:00+0100\n"
-"PO-Revision-Date: 2009-03-24 13:26+0100\n"
+"POT-Creation-Date: 2009-07-07 15:15+0200\n"
+"PO-Revision-Date: 2009-07-07 15:22+0200\n"
"Last-Translator: Django Spanish Team <django-cat@googlegroups.com>Language-"
"Team: Django Spanish Team <django-cat@googlegroups.com>MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -217,6 +217,20 @@ msgstr "chino simplificado"
msgid "Traditional Chinese"
msgstr "chino tradicional"
+#: contrib/admin/actions.py:60
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "Eliminado/s %(count)d %(items)s satisfactoriamente."
+
+#: contrib/admin/actions.py:67 contrib/admin/options.py:1025
+msgid "Are you sure?"
+msgstr "¿Está seguro?"
+
+#: contrib/admin/actions.py:85
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Eliminar %(verbose_name_plural)s seleccionado/s"
+
#: contrib/admin/filterspecs.py:44
#, python-format
msgid ""
@@ -251,15 +265,15 @@ msgstr "Este mes"
msgid "This year"
msgstr "Este año"
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:413
+#: contrib/admin/filterspecs.py:147 forms/widgets.py:434
msgid "Yes"
msgstr "Sí"
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:413
+#: contrib/admin/filterspecs.py:147 forms/widgets.py:434
msgid "No"
msgstr "No"
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:413
+#: contrib/admin/filterspecs.py:154 forms/widgets.py:434
msgid "Unknown"
msgstr "Desconocido"
@@ -295,117 +309,104 @@ msgstr "entrada de registro"
msgid "log entries"
msgstr "entradas de registro"
-#: contrib/admin/options.py:131 contrib/admin/options.py:145
+#: contrib/admin/options.py:133 contrib/admin/options.py:147
msgid "None"
msgstr "Ninguno"
-#: contrib/admin/options.py:498
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Eliminado/s %(count)d %(items)s satisfactoriamente."
-
-#: contrib/admin/options.py:505 contrib/admin/options.py:1012
-msgid "Are you sure?"
-msgstr "¿Está seguro?"
-
-#: contrib/admin/options.py:523
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Eliminar %(verbose_name_plural)s seleccionado/s"
-
-#: contrib/admin/options.py:531
+#: contrib/admin/options.py:519
#, python-format
msgid "Changed %s."
msgstr "Modificado/a %s."
-#: contrib/admin/options.py:531 contrib/admin/options.py:541
-#: contrib/comments/templates/comments/preview.html:15 forms/models.py:296
+#: contrib/admin/options.py:519 contrib/admin/options.py:529
+#: contrib/comments/templates/comments/preview.html:16 forms/models.py:388
+#: forms/models.py:600
msgid "and"
msgstr "y"
-#: contrib/admin/options.py:536
+#: contrib/admin/options.py:524
#, python-format
msgid "Added %(name)s \"%(object)s\"."
msgstr "Añadido/a \"%(object)s\" %(name)s."
-#: contrib/admin/options.py:540
+#: contrib/admin/options.py:528
#, python-format
msgid "Changed %(list)s for %(name)s \"%(object)s\"."
msgstr "Modificados %(list)s para \"%(object)s\" %(name)s."
-#: contrib/admin/options.py:545
+#: contrib/admin/options.py:533
#, python-format
msgid "Deleted %(name)s \"%(object)s\"."
msgstr "Eliminado/a \"%(object)s\" %(name)s."
-#: contrib/admin/options.py:549
+#: contrib/admin/options.py:537
msgid "No fields changed."
msgstr "No ha cambiado ningún campo."
-#: contrib/admin/options.py:610 contrib/auth/admin.py:67
+#: contrib/admin/options.py:598 contrib/auth/admin.py:67
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "Se añadió con éxito el %(name)s \"%(obj)s\"."
-#: contrib/admin/options.py:614 contrib/admin/options.py:647
+#: contrib/admin/options.py:602 contrib/admin/options.py:635
#: contrib/auth/admin.py:75
msgid "You may edit it again below."
msgstr "Puede editarlo de nuevo abajo."
-#: contrib/admin/options.py:624 contrib/admin/options.py:657
+#: contrib/admin/options.py:612 contrib/admin/options.py:645
#, python-format
msgid "You may add another %s below."
msgstr "Puede añadir otro %s abajo."
-#: contrib/admin/options.py:645
+#: contrib/admin/options.py:633
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr "Se modificó con éxito el %(name)s \"%(obj)s\"."
-#: contrib/admin/options.py:653
+#: contrib/admin/options.py:641
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
"Se añadió con éxito el %(name)s \"%(obj)s. Puede editarlo de nuevo abajo."
-#: contrib/admin/options.py:774
+#: contrib/admin/options.py:772
#, python-format
msgid "Add %s"
msgstr "Añadir %s"
-#: contrib/admin/options.py:805 contrib/admin/options.py:990
+#: contrib/admin/options.py:803 contrib/admin/options.py:1003
#, python-format
msgid "%(name)s object with primary key %(key)r does not exist."
msgstr "No existe ningún objeto %(name)s con la clave primaria %(key)r."
-#: contrib/admin/options.py:862
+#: contrib/admin/options.py:860
#, python-format
msgid "Change %s"
msgstr "Modificar %s"
-#: contrib/admin/options.py:894
+#: contrib/admin/options.py:904
msgid "Database error"
msgstr "Error en la base de datos"
-#: contrib/admin/options.py:930
+#: contrib/admin/options.py:940
#, python-format
msgid "%(count)s %(name)s was changed successfully."
msgid_plural "%(count)s %(name)s were changed successfully."
msgstr[0] "%(count)s %(name)s fué modificado con éxito."
msgstr[1] "%(count)s %(name)s fueron modificados con éxito."
-#: contrib/admin/options.py:1005
+#: contrib/admin/options.py:1018
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr "Se eliminó con éxito el %(name)s \"%(obj)s\"."
-#: contrib/admin/options.py:1041
+#: contrib/admin/options.py:1054
#, python-format
msgid "Change history: %s"
msgstr "Histórico de modificaciones: %s"
-#: contrib/admin/sites.py:15 contrib/admin/views/decorators.py:14
+#: contrib/admin/sites.py:20 contrib/admin/views/decorators.py:14
#: contrib/auth/forms.py:80
msgid ""
"Please enter a correct username and password. Note that both fields are case-"
@@ -414,11 +415,11 @@ msgstr ""
"Por favor, introduzca un nombre de usuario y contraseña correctos. Note que "
"ambos campos son sensibles a mayúsculas/minúsculas."
-#: contrib/admin/sites.py:250 contrib/admin/views/decorators.py:40
+#: contrib/admin/sites.py:278 contrib/admin/views/decorators.py:40
msgid "Please log in again, because your session has expired."
msgstr "Por favor, inicie sesión de nuevo, ya que su sesión ha caducado."
-#: contrib/admin/sites.py:257 contrib/admin/views/decorators.py:47
+#: contrib/admin/sites.py:285 contrib/admin/views/decorators.py:47
msgid ""
"Looks like your browser isn't configured to accept cookies. Please enable "
"cookies, reload this page, and try again."
@@ -426,29 +427,29 @@ msgstr ""
"Parece que su navegador no está configurado para aceptar cookies. "
"Actívelas , recargue esta página, e inténtelo de nuevo."
-#: contrib/admin/sites.py:273 contrib/admin/sites.py:279
+#: contrib/admin/sites.py:301 contrib/admin/sites.py:307
#: contrib/admin/views/decorators.py:66
msgid "Usernames cannot contain the '@' character."
msgstr "Los nombres de usuario no pueden contener el carácter '@'."
-#: contrib/admin/sites.py:276 contrib/admin/views/decorators.py:62
+#: contrib/admin/sites.py:304 contrib/admin/views/decorators.py:62
#, python-format
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
"Su dirección de correo no es su nombre de usuario. Pruebe con '%s' en su "
"lugar."
-#: contrib/admin/sites.py:336
+#: contrib/admin/sites.py:360
msgid "Site administration"
msgstr "Sitio administrativo"
-#: contrib/admin/sites.py:349 contrib/admin/templates/admin/login.html:26
+#: contrib/admin/sites.py:373 contrib/admin/templates/admin/login.html:26
#: contrib/admin/templates/registration/password_reset_complete.html:14
#: contrib/admin/views/decorators.py:20
msgid "Log in"
msgstr "Iniciar sesión"
-#: contrib/admin/sites.py:396
+#: contrib/admin/sites.py:417
#, python-format
msgid "%s administration"
msgstr "Administración de %s"
@@ -463,33 +464,27 @@ msgstr "Uno o más %(fieldname)s en %(name)s: %(obj)s"
msgid "One or more %(fieldname)s in %(name)s:"
msgstr "Uno o más %(fieldname)s en %(name)s:"
-#: contrib/admin/util.py:222
-msgid "verbose_name"
-msgid_plural "verbose_name_plural"
-msgstr[0] "verbose_name"
-msgstr[1] "verbose_name_plural"
-
-#: contrib/admin/widgets.py:70
+#: contrib/admin/widgets.py:71
msgid "Date:"
msgstr "Fecha:"
-#: contrib/admin/widgets.py:70
+#: contrib/admin/widgets.py:71
msgid "Time:"
msgstr "Hora:"
-#: contrib/admin/widgets.py:94
+#: contrib/admin/widgets.py:95
msgid "Currently:"
msgstr "Actualmente:"
-#: contrib/admin/widgets.py:94
+#: contrib/admin/widgets.py:95
msgid "Change:"
msgstr "Modificar:"
-#: contrib/admin/widgets.py:123
+#: contrib/admin/widgets.py:124
msgid "Lookup"
msgstr "Buscar"
-#: contrib/admin/widgets.py:230
+#: contrib/admin/widgets.py:236
msgid "Add Another"
msgstr "Añadir otro"
@@ -504,9 +499,9 @@ msgstr "Lo sentimos, pero no se encuentra la página solicitada."
#: contrib/admin/templates/admin/500.html:4
#: contrib/admin/templates/admin/app_index.html:8
-#: contrib/admin/templates/admin/base.html:33
+#: contrib/admin/templates/admin/base.html:31
#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:20
+#: contrib/admin/templates/admin/change_list.html:25
#: contrib/admin/templates/admin/delete_confirmation.html:6
#: contrib/admin/templates/admin/delete_selected_confirmation.html:6
#: contrib/admin/templates/admin/invalid_setup.html:4
@@ -549,7 +544,6 @@ msgid "Run the selected action"
msgstr "Ejecutar la acción seleccionada"
#: contrib/admin/templates/admin/actions.html:4
-#: contrib/admin/templates/admin/search_form.html:8
msgid "Go"
msgstr "Ir"
@@ -559,26 +553,26 @@ msgstr "Ir"
msgid "%(name)s"
msgstr "%(name)s"
-#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin/base.html:26
msgid "Welcome,"
msgstr "Bienvenido/a,"
-#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin/base.html:26
#: contrib/admin/templates/registration/password_change_done.html:3
#: contrib/admin/templates/registration/password_change_form.html:3
#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
msgid "Documentation"
msgstr "Documentación"
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
+#: contrib/admin/templates/admin/base.html:26
+#: contrib/admin/templates/admin/auth/user/change_password.html:14
+#: contrib/admin/templates/admin/auth/user/change_password.html:47
#: contrib/admin/templates/registration/password_change_done.html:3
#: contrib/admin/templates/registration/password_change_form.html:3
msgid "Change password"
msgstr "Cambiar contraseña"
-#: contrib/admin/templates/admin/base.html:28
+#: contrib/admin/templates/admin/base.html:26
#: contrib/admin/templates/registration/password_change_done.html:3
#: contrib/admin/templates/registration/password_change_form.html:3
msgid "Log out"
@@ -609,24 +603,24 @@ msgid "View on site"
msgstr "Ver en el sitio"
#: contrib/admin/templates/admin/change_form.html:38
-#: contrib/admin/templates/admin/change_list.html:49
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
+#: contrib/admin/templates/admin/change_list.html:54
+#: 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] "Por favor, corrija el siguiente error."
msgstr[1] "Por favor, corrija los siguientes errores."
-#: contrib/admin/templates/admin/change_list.html:41
+#: contrib/admin/templates/admin/change_list.html:46
#, python-format
msgid "Add %(name)s"
msgstr "Añadir %(name)s"
-#: contrib/admin/templates/admin/change_list.html:60
+#: contrib/admin/templates/admin/change_list.html:65
msgid "Filter"
msgstr "Filtro"
#: contrib/admin/templates/admin/delete_confirmation.html:10
-#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:251
+#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:275
msgid "Delete"
msgstr "Eliminar"
@@ -666,9 +660,9 @@ msgid ""
"your account doesn't have permission to delete the following types of "
"objects:"
msgstr ""
-"Eliminar el %(object_name)s provocaría la eliminación "
-"de objetos relacionados, pero su cuenta no tiene permiso para borrar los "
-"siguientes tipos de objetos:"
+"Eliminar el %(object_name)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_selected_confirmation.html:22
#, python-format
@@ -676,8 +670,8 @@ msgid ""
"Are you sure you want to delete the selected %(object_name)s objects? All of "
"the following objects and it's related items will be deleted:"
msgstr ""
-"¿Está seguro de que quiere borrar los %(object_name)s? "
-"Los siguientes objetos y sus elementos relacionados serán eliminados:"
+"¿Está seguro de que quiere borrar los %(object_name)s? Los siguientes "
+"objetos y sus elementos relacionados serán eliminados:"
#: contrib/admin/templates/admin/filter.html:2
#, python-format
@@ -709,6 +703,10 @@ msgstr "Mis acciones"
msgid "None available"
msgstr "Ninguno disponible"
+#: contrib/admin/templates/admin/index.html:72
+msgid "Unknown content"
+msgstr "Contenido desconocido"
+
#: contrib/admin/templates/admin/invalid_setup.html:7
msgid ""
"Something's wrong with your database installation. Make sure the appropriate "
@@ -757,6 +755,15 @@ msgstr ""
msgid "Show all"
msgstr "Mostrar todo"
+#: contrib/admin/templates/admin/pagination.html:11
+#: contrib/admin/templates/admin/submit_line.html:3
+msgid "Save"
+msgstr "Grabar"
+
+#: contrib/admin/templates/admin/search_form.html:8
+msgid "Search"
+msgstr "Buscar"
+
#: contrib/admin/templates/admin/search_form.html:10
#, python-format
msgid "1 result"
@@ -769,10 +776,6 @@ msgstr[1] "%(counter)s resultados"
msgid "%(full_result_count)s total"
msgstr "%(full_result_count)s total"
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Grabar"
-
#: contrib/admin/templates/admin/submit_line.html:5
msgid "Save as new"
msgstr "Grabar como nuevo"
@@ -799,23 +802,23 @@ msgid "Username"
msgstr "Nombre de usuario"
#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
+#: contrib/admin/templates/admin/auth/user/change_password.html:34
#: contrib/auth/forms.py:17 contrib/auth/forms.py:60 contrib/auth/forms.py:185
msgid "Password"
msgstr "Contraseña"
#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/admin/templates/admin/auth/user/change_password.html:40
#: contrib/auth/forms.py:186
msgid "Password (again)"
msgstr "Contraseña (de nuevo)"
#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
+#: contrib/admin/templates/admin/auth/user/change_password.html:41
msgid "Enter the same password as above, for verification."
msgstr "Introduzca la misma contraseña que arriba, para verificación."
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
+#: 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 ""
@@ -1037,114 +1040,115 @@ msgstr ""
msgid "the related `%(app_label)s.%(data_type)s` object"
msgstr "el objeto relacionado `%(app_label)s.%(data_type)s`"
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
+#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:225
+#: contrib/admindocs/views.py:230 contrib/admindocs/views.py:244
+#: contrib/admindocs/views.py:258 contrib/admindocs/views.py:263
msgid "model:"
msgstr "modelo:"
-#: contrib/admindocs/views.py:237
+#: contrib/admindocs/views.py:221 contrib/admindocs/views.py:253
#, python-format
msgid "related `%(app_label)s.%(object_name)s` objects"
msgstr "los objetos relacionados `%(app_label)s.%(object_name)s`"
-#: contrib/admindocs/views.py:242
+#: contrib/admindocs/views.py:225 contrib/admindocs/views.py:258
#, python-format
msgid "all %s"
msgstr "todo %s"
-#: contrib/admindocs/views.py:247
+#: contrib/admindocs/views.py:230 contrib/admindocs/views.py:263
#, python-format
msgid "number of %s"
msgstr "número de %s"
-#: contrib/admindocs/views.py:252
+#: contrib/admindocs/views.py:268
#, python-format
msgid "Fields on %s objects"
msgstr "Campos en %s objetos"
-#: contrib/admindocs/views.py:315 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:328 contrib/admindocs/views.py:334
-#: contrib/admindocs/views.py:335 contrib/admindocs/views.py:337
+#: contrib/admindocs/views.py:331 contrib/admindocs/views.py:342
+#: contrib/admindocs/views.py:344 contrib/admindocs/views.py:350
+#: contrib/admindocs/views.py:351 contrib/admindocs/views.py:353
msgid "Integer"
msgstr "Entero"
-#: contrib/admindocs/views.py:316
+#: contrib/admindocs/views.py:332
msgid "Boolean (Either True or False)"
msgstr "Booleano (Verdadero o Falso)"
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:336
+#: contrib/admindocs/views.py:333 contrib/admindocs/views.py:352
#, python-format
msgid "String (up to %(max_length)s)"
msgstr "Cadena (máximo %(max_length)s)"
-#: contrib/admindocs/views.py:318
+#: contrib/admindocs/views.py:334
msgid "Comma-separated integers"
msgstr "Enteros separados por comas"
-#: contrib/admindocs/views.py:319
+#: contrib/admindocs/views.py:335
msgid "Date (without time)"
msgstr "Fecha (sin hora)"
-#: contrib/admindocs/views.py:320
+#: contrib/admindocs/views.py:336
msgid "Date (with time)"
msgstr "Fecha (con hora)"
-#: contrib/admindocs/views.py:321
+#: contrib/admindocs/views.py:337
msgid "Decimal number"
msgstr "Número decimal"
-#: contrib/admindocs/views.py:322
+#: contrib/admindocs/views.py:338
msgid "E-mail address"
msgstr "Dirección de correo electrónico"
-#: contrib/admindocs/views.py:323 contrib/admindocs/views.py:324
-#: contrib/admindocs/views.py:327
+#: contrib/admindocs/views.py:339 contrib/admindocs/views.py:340
+#: contrib/admindocs/views.py:343
msgid "File path"
msgstr "Ruta de fichero"
-#: contrib/admindocs/views.py:325
+#: contrib/admindocs/views.py:341
msgid "Floating point number"
msgstr "Número en coma flotante"
-#: contrib/admindocs/views.py:329 contrib/comments/models.py:58
+#: contrib/admindocs/views.py:345 contrib/comments/models.py:60
msgid "IP address"
msgstr "Dirección IP"
-#: contrib/admindocs/views.py:331
+#: contrib/admindocs/views.py:347
msgid "Boolean (Either True, False or None)"
msgstr "Booleano (Verdadero, Falso o Nulo)"
-#: contrib/admindocs/views.py:332
+#: contrib/admindocs/views.py:348
msgid "Relation to parent model"
msgstr "Relación con el modelo padre"
-#: contrib/admindocs/views.py:333
+#: contrib/admindocs/views.py:349
msgid "Phone number"
msgstr "Número de teléfono"
-#: contrib/admindocs/views.py:338
+#: contrib/admindocs/views.py:354
msgid "Text"
msgstr "Texto"
-#: contrib/admindocs/views.py:339
+#: contrib/admindocs/views.py:355
msgid "Time"
msgstr "Hora"
-#: contrib/admindocs/views.py:340 contrib/comments/forms.py:95
+#: contrib/admindocs/views.py:356 contrib/comments/forms.py:95
#: contrib/comments/templates/comments/moderation_queue.html:37
#: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7
msgid "URL"
msgstr "URL"
-#: contrib/admindocs/views.py:341
+#: contrib/admindocs/views.py:357
msgid "U.S. state (two uppercase letters)"
msgstr "Estado de los EEUU (dos letras mayúsculas)"
-#: contrib/admindocs/views.py:342
+#: contrib/admindocs/views.py:358
msgid "XML text"
msgstr "Texto XML"
-#: contrib/admindocs/views.py:368
+#: contrib/admindocs/views.py:384
#, python-format
msgid "%s does not appear to be a urlpattern object"
msgstr "%s no parece ser un objeto urlpattern"
@@ -1248,7 +1252,7 @@ msgid "Change password: %s"
msgstr "Cambiar contraseña: %s"
#: contrib/auth/forms.py:15 contrib/auth/forms.py:48
-#: contrib/auth/models.py:127
+#: contrib/auth/models.py:128
msgid ""
"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
"digits and underscores)."
@@ -1340,31 +1344,31 @@ msgstr "permisos"
msgid "group"
msgstr "grupo"
-#: contrib/auth/models.py:91 contrib/auth/models.py:137
+#: contrib/auth/models.py:91 contrib/auth/models.py:138
msgid "groups"
msgstr "grupos"
-#: contrib/auth/models.py:127
+#: contrib/auth/models.py:128
msgid "username"
msgstr "nombre de usuario"
-#: contrib/auth/models.py:128
+#: contrib/auth/models.py:129
msgid "first name"
msgstr "nombre propio"
-#: contrib/auth/models.py:129
+#: contrib/auth/models.py:130
msgid "last name"
msgstr "apellidos"
-#: contrib/auth/models.py:130
+#: contrib/auth/models.py:131
msgid "e-mail address"
msgstr "dirección de correo electrónico"
-#: contrib/auth/models.py:131
+#: contrib/auth/models.py:132
msgid "password"
msgstr "contraseña"
-#: contrib/auth/models.py:131
+#: contrib/auth/models.py:132
msgid ""
"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
"password form</a>."
@@ -1372,19 +1376,19 @@ msgstr ""
"Use'[algo]$[sal]$[hash hexadecimal]' o use <a href=\"password/\">el "
"formulario para cambiar la contraseña</a>."
-#: contrib/auth/models.py:132
+#: contrib/auth/models.py:133
msgid "staff status"
msgstr "es staff"
-#: contrib/auth/models.py:132
+#: contrib/auth/models.py:133
msgid "Designates whether the user can log into this admin site."
msgstr "Indica si el usuario puede entrar en este sitio de administración."
-#: contrib/auth/models.py:133
+#: contrib/auth/models.py:134
msgid "active"
msgstr "activo"
-#: contrib/auth/models.py:133
+#: contrib/auth/models.py:134
msgid ""
"Designates whether this user should be treated as active. Unselect this "
"instead of deleting accounts."
@@ -1392,11 +1396,11 @@ msgstr ""
"Indica si el usuario puede ser tratado como activo. Desmarque esta opción en "
"lugar de borrar la cuenta."
-#: contrib/auth/models.py:134
+#: contrib/auth/models.py:135
msgid "superuser status"
msgstr "es superusuario"
-#: contrib/auth/models.py:134
+#: contrib/auth/models.py:135
msgid ""
"Designates that this user has all permissions without explicitly assigning "
"them."
@@ -1404,15 +1408,15 @@ msgstr ""
"Indica que este usuario tiene todos los permisos sin asignárselos "
"explícitamente."
-#: contrib/auth/models.py:135
+#: contrib/auth/models.py:136
msgid "last login"
msgstr "último inicio de sesión"
-#: contrib/auth/models.py:136
+#: contrib/auth/models.py:137
msgid "date joined"
msgstr "fecha de alta"
-#: contrib/auth/models.py:138
+#: contrib/auth/models.py:139
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
@@ -1420,23 +1424,24 @@ 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:139
+#: contrib/auth/models.py:140
msgid "user permissions"
msgstr "permisos de usuario"
-#: contrib/auth/models.py:143
+#: contrib/auth/models.py:144 contrib/comments/models.py:50
+#: contrib/comments/models.py:168
msgid "user"
msgstr "usuario"
-#: contrib/auth/models.py:144
+#: contrib/auth/models.py:145
msgid "users"
msgstr "usuarios"
-#: contrib/auth/models.py:300
+#: contrib/auth/models.py:301
msgid "message"
msgstr "mensaje"
-#: contrib/auth/views.py:50
+#: contrib/auth/views.py:56
msgid "Logged out"
msgstr "Sesión terminada"
@@ -1452,10 +1457,20 @@ msgstr "contenido"
msgid "Metadata"
msgstr "metadatos"
+#: contrib/comments/feeds.py:13
+#, python-format
+msgid "%(site_name)s comments"
+msgstr "comentarios de %(site_name)s"
+
+#: contrib/comments/feeds.py:23
+#, python-format
+msgid "Latest comments on %(site_name)s"
+msgstr "Últimos comentarios en %(site_name)s"
+
#: contrib/comments/forms.py:93
#: contrib/comments/templates/comments/moderation_queue.html:34
msgid "Name"
-msgstr "nombre"
+msgstr "Nombre"
#: contrib/comments/forms.py:94
msgid "Email address"
@@ -1464,7 +1479,7 @@ msgstr "dirección de correo electrónico"
#: contrib/comments/forms.py:96
#: contrib/comments/templates/comments/moderation_queue.html:35
msgid "Comment"
-msgstr "comentario"
+msgstr "Comentario"
#: contrib/comments/forms.py:173
#, python-format
@@ -1478,46 +1493,51 @@ msgid ""
"If you enter anything in this field your comment will be treated as spam"
msgstr "Si introduce algo en este campo su comentario será tratado como spam"
-#: contrib/comments/models.py:23
+#: contrib/comments/models.py:22 contrib/contenttypes/models.py:74
+msgid "content type"
+msgstr "tipo de contenido"
+
+#: contrib/comments/models.py:24
msgid "object ID"
msgstr "ID de objeto"
-#: contrib/comments/models.py:50
+#: contrib/comments/models.py:52
msgid "user's name"
msgstr "nombre del usuario"
-#: contrib/comments/models.py:51
+#: contrib/comments/models.py:53
msgid "user's email address"
msgstr "dirección de correo electrónico del usuario"
-#: contrib/comments/models.py:52
+#: contrib/comments/models.py:54
msgid "user's URL"
msgstr "URL del usuario"
-#: contrib/comments/models.py:54
+#: contrib/comments/models.py:56 contrib/comments/models.py:76
+#: contrib/comments/models.py:169
msgid "comment"
msgstr "comentario"
-#: contrib/comments/models.py:57
+#: contrib/comments/models.py:59
msgid "date/time submitted"
msgstr "fecha/hora de envío"
-#: contrib/comments/models.py:59
+#: contrib/comments/models.py:61
msgid "is public"
msgstr "es público"
-#: contrib/comments/models.py:60
+#: contrib/comments/models.py:62
msgid ""
"Uncheck this box to make the comment effectively disappear from the site."
msgstr ""
"Desmarque esta casilla para hacer desaparecer el comentario del sitio web de "
"forma efectiva."
-#: contrib/comments/models.py:62
+#: contrib/comments/models.py:64
msgid "is removed"
msgstr "está eliminado"
-#: contrib/comments/models.py:63
+#: contrib/comments/models.py:65
msgid ""
"Check this box if the comment is inappropriate. A \"This comment has been "
"removed\" message will be displayed instead."
@@ -1525,7 +1545,11 @@ msgstr ""
"Marque esta opción si el comentario es inapropiado. En su lugar se mostrará "
"el mensaje \"Este comentario ha sido eliminado\"."
-#: contrib/comments/models.py:115
+#: contrib/comments/models.py:77
+msgid "comments"
+msgstr "comentarios"
+
+#: contrib/comments/models.py:119
msgid ""
"This comment was posted by an authenticated user and thus the name is read-"
"only."
@@ -1533,7 +1557,7 @@ msgstr ""
"Este comentario ha sido enviado por un usuario autentificado: de modo que su "
"nombre no es modificable."
-#: contrib/comments/models.py:124
+#: contrib/comments/models.py:128
msgid ""
"This comment was posted by an authenticated user and thus the email is read-"
"only."
@@ -1541,7 +1565,7 @@ msgstr ""
"Este comentario ha sido colocado por un usuario autentificado: de modo que "
"su dirección de correo electrónico no es modificable."
-#: contrib/comments/models.py:149
+#: contrib/comments/models.py:153
#, python-format
msgid ""
"Posted by %(user)s at %(date)s\n"
@@ -1556,6 +1580,22 @@ msgstr ""
"\n"
"http://%(domain)s%(url)s"
+#: contrib/comments/models.py:170
+msgid "flag"
+msgstr "marcar"
+
+#: contrib/comments/models.py:171
+msgid "date"
+msgstr "fecha"
+
+#: contrib/comments/models.py:181
+msgid "comment flag"
+msgstr "marca de comentario"
+
+#: contrib/comments/models.py:182
+msgid "comment flags"
+msgstr "marcas de comentario"
+
#: contrib/comments/templates/comments/approve.html:4
msgid "Approve a comment"
msgstr "Aprovar un comentario"
@@ -1615,13 +1655,13 @@ msgstr "Marcar"
msgid "Thanks for flagging"
msgstr "Graciar por marcar"
-#: contrib/comments/templates/comments/form.html:16
-#: contrib/comments/templates/comments/preview.html:31
+#: contrib/comments/templates/comments/form.html:17
+#: contrib/comments/templates/comments/preview.html:32
msgid "Post"
msgstr "Enviar"
-#: contrib/comments/templates/comments/form.html:17
-#: contrib/comments/templates/comments/preview.html:32
+#: contrib/comments/templates/comments/form.html:18
+#: contrib/comments/templates/comments/preview.html:33
msgid "Preview"
msgstr "Previsualizar"
@@ -1667,33 +1707,29 @@ msgid "Thank you for your comment"
msgstr "Gracias por su comentario"
#: contrib/comments/templates/comments/preview.html:4
-#: contrib/comments/templates/comments/preview.html:12
+#: contrib/comments/templates/comments/preview.html:13
msgid "Preview your comment"
msgstr "Previsualizar su comentario"
-#: contrib/comments/templates/comments/preview.html:10
+#: contrib/comments/templates/comments/preview.html:11
msgid "Please correct the error below"
msgid_plural "Please correct the errors below"
msgstr[0] "Por favor, corrija el siguiente error."
msgstr[1] "Por favor, corrija los siguientes errores."
-#: contrib/comments/templates/comments/preview.html:15
+#: contrib/comments/templates/comments/preview.html:16
msgid "Post your comment"
msgstr "Envie su comentario"
-#: contrib/comments/templates/comments/preview.html:15
+#: contrib/comments/templates/comments/preview.html:16
msgid "or make changes"
msgstr "o haga cambios"
-#: contrib/contenttypes/models.py:67
+#: contrib/contenttypes/models.py:70
msgid "python model class name"
msgstr "nombre de la clase modelo de python"
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "tipo de contenido"
-
-#: contrib/contenttypes/models.py:72
+#: contrib/contenttypes/models.py:75
msgid "content types"
msgstr "tipos de contenido"
@@ -1762,18 +1798,26 @@ msgstr ""
"Lo sentimos, pero su formulario ha expirado. Por favor, continue rellenando "
"el formulario en esta página."
-#: contrib/gis/forms/fields.py:14
+#: contrib/gis/forms/fields.py:17
msgid "No geometry value provided."
msgstr "No se indico ningún valor de geometría."
-#: contrib/gis/forms/fields.py:15
+#: contrib/gis/forms/fields.py:18
msgid "Invalid geometry value."
msgstr "Valor de geometría inválido."
-#: contrib/gis/forms/fields.py:16
+#: contrib/gis/forms/fields.py:19
msgid "Invalid geometry type."
msgstr "Tipo de geometría inválido."
+#: contrib/gis/forms/fields.py:20
+msgid ""
+"An error occurred when transforming the geometry to the SRID of the geometry "
+"form field."
+msgstr ""
+"Ocurrió un error al transformar la geometria al SRID de la geometria "
+"del campo de formulario."
+
#: contrib/humanize/templatetags/humanize.py:19
msgid "th"
msgstr "º"
@@ -1891,11 +1935,11 @@ msgstr "Carinthia"
#: contrib/localflavor/at/at_states.py:7
msgid "Lower Austria"
-msgstr ""
+msgstr "Australia Baja"
#: contrib/localflavor/at/at_states.py:8
msgid "Upper Austria"
-msgstr ""
+msgstr "Australia Alta"
#: contrib/localflavor/at/at_states.py:9
msgid "Salzburg"
@@ -2112,47 +2156,47 @@ msgstr "Región Bohemia Sur"
#: contrib/localflavor/cz/cz_regions.py:11
msgid "Pilsen Region"
-msgstr ""
+msgstr "Región Pilsen"
#: contrib/localflavor/cz/cz_regions.py:12
msgid "Carlsbad Region"
-msgstr ""
+msgstr "Región Carlsbad"
#: contrib/localflavor/cz/cz_regions.py:13
msgid "Usti Region"
-msgstr ""
+msgstr "Región Usti"
#: contrib/localflavor/cz/cz_regions.py:14
msgid "Liberec Region"
-msgstr ""
+msgstr "Región Liberec"
#: contrib/localflavor/cz/cz_regions.py:15
msgid "Hradec Region"
-msgstr ""
+msgstr "Región Hradec"
#: contrib/localflavor/cz/cz_regions.py:16
msgid "Pardubice Region"
-msgstr ""
+msgstr "Región Pardubice"
#: contrib/localflavor/cz/cz_regions.py:17
msgid "Vysocina Region"
-msgstr ""
+msgstr "Región Vysocina"
#: contrib/localflavor/cz/cz_regions.py:18
msgid "South Moravian Region"
-msgstr ""
+msgstr "Región Moravia Sur"
#: contrib/localflavor/cz/cz_regions.py:19
msgid "Olomouc Region"
-msgstr ""
+msgstr "Región Olomouc"
#: contrib/localflavor/cz/cz_regions.py:20
msgid "Zlin Region"
-msgstr ""
+msgstr "Región Zlin"
#: contrib/localflavor/cz/cz_regions.py:21
msgid "Moravian-Silesian Region"
-msgstr ""
+msgstr "Región Moravia-Silesiana"
#: contrib/localflavor/cz/forms.py:27 contrib/localflavor/sk/forms.py:30
msgid "Enter a postal code in the format XXXXX or XXX XX."
@@ -2165,7 +2209,8 @@ msgstr ""
#: contrib/localflavor/cz/forms.py:48
msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'"
-msgstr "El parámetro opcional 'Género' es inválido, los valores válidos son 'f' y 'm'"
+msgstr ""
+"El parámetro opcional 'Género' es inválido, los valores válidos son 'f' y 'm'"
#: contrib/localflavor/cz/forms.py:49
msgid "Enter a valid birth number."
@@ -3004,16 +3049,16 @@ msgstr ""
msgid "Wrong checksum for the Tax Number (NIP)."
msgstr "El Número de Identificación Tributaria (NIP) es incorrecto."
-#: contrib/localflavor/pl/forms.py:111
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
+#: contrib/localflavor/pl/forms.py:109
+msgid "National Business Register Number (REGON) consists of 9 or 14 digits."
msgstr ""
-"El Número Nacional de Registro de Negocios (REGON) consiste en 7 o 9 dígitos."
+"El Número Nacional de Registro de Negocios (REGON) consiste en 9 o 14 dígitos."
-#: contrib/localflavor/pl/forms.py:112
+#: contrib/localflavor/pl/forms.py:110
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:155
+#: contrib/localflavor/pl/forms.py:148
msgid "Enter a postal code in the format XX-XXX."
msgstr "Introduzca un código postal en el formato XX-XXX."
@@ -3850,60 +3895,60 @@ msgstr "nombre para mostrar"
msgid "sites"
msgstr "sitios"
-#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:700
+#: db/models/fields/__init__.py:356 db/models/fields/__init__.py:710
msgid "This value must be an integer."
msgstr "Este valor debe ser un entero."
-#: db/models/fields/__init__.py:387
+#: db/models/fields/__init__.py:388
msgid "This value must be either True or False."
msgstr "Este valor debe ser Verdadero o Falso."
-#: db/models/fields/__init__.py:420
+#: db/models/fields/__init__.py:427
msgid "This field cannot be null."
msgstr "Este campo no puede estar vacío."
-#: db/models/fields/__init__.py:436
+#: db/models/fields/__init__.py:443
msgid "Enter only digits separated by commas."
msgstr "Introduzca sólo dígitos separados por comas."
-#: db/models/fields/__init__.py:467
+#: db/models/fields/__init__.py:474
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Introduzca una fecha válida en formato AAAA-MM-DD."
-#: db/models/fields/__init__.py:476
+#: db/models/fields/__init__.py:483
#, python-format
msgid "Invalid date: %s"
msgstr "Fecha no válida: %s"
-#: db/models/fields/__init__.py:540 db/models/fields/__init__.py:558
+#: db/models/fields/__init__.py:547 db/models/fields/__init__.py:565
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
msgstr ""
"Introduzca una fecha/hora válida en formato AAAA-MM-DD HH:MM[:ss[.uuuuuu]]."
-#: db/models/fields/__init__.py:594
+#: db/models/fields/__init__.py:601
msgid "This value must be a decimal number."
msgstr "Este valor debe ser un entero."
-#: db/models/fields/__init__.py:676
+#: db/models/fields/__init__.py:686
msgid "This value must be a float."
msgstr "Este valor debe ser un número con coma flotante."
-#: db/models/fields/__init__.py:736
+#: db/models/fields/__init__.py:746
msgid "This value must be either None, True or False."
msgstr "Este valor debe ser Verdadero, Falso o Ninguno."
-#: db/models/fields/__init__.py:839 db/models/fields/__init__.py:853
+#: db/models/fields/__init__.py:849 db/models/fields/__init__.py:863
msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
msgstr "Introduzca una hora válida en formato HH:MM[:ss[.uuuuuu]]."
-#: db/models/fields/related.py:779
+#: db/models/fields/related.py:816
msgid ""
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
"Mantenga presionado \"Control\", o \"Command\" en un Mac, para seleccionar "
"más de una opción."
-#: db/models/fields/related.py:857
+#: db/models/fields/related.py:894
#, python-format
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
msgid_plural ""
@@ -3970,11 +4015,11 @@ msgstr "Asegúrese de que no hay más de %s decimales."
msgid "Ensure that there are no more than %s digits before the decimal point."
msgstr "Asegúrese de que no hay más de %s dígitos antes de la coma decimal."
-#: forms/fields.py:288 forms/fields.py:850
+#: forms/fields.py:288 forms/fields.py:863
msgid "Enter a valid date."
msgstr "Introduzca una fecha válida."
-#: forms/fields.py:322 forms/fields.py:851
+#: forms/fields.py:322 forms/fields.py:864
msgid "Enter a valid time."
msgstr "Introduzca una hora válida."
@@ -3996,7 +4041,15 @@ msgstr "No se ha enviado ningún fichero"
msgid "The submitted file is empty."
msgstr "El fichero enviado está vacío."
-#: forms/fields.py:478
+#: forms/fields.py:450
+#, python-format
+msgid ""
+"Ensure this filename has at most %(max)d characters (it has %(length)d)."
+msgstr ""
+"Asegúrese de que su texto tiene no más de %(max)d caracteres (actualmente "
+"tiene %(length)d)."
+
+#: forms/fields.py:483
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
@@ -4004,106 +4057,140 @@ msgstr ""
"Envíe una imagen válida. El fichero que ha enviado no era una imagen o se "
"trataba de una imagen corrupta."
-#: forms/fields.py:539
+#: forms/fields.py:544
msgid "Enter a valid URL."
msgstr "Introduzca una URL válida."
-#: forms/fields.py:540
+#: forms/fields.py:545
msgid "This URL appears to be a broken link."
msgstr "La URL parece ser un enlace roto."
-#: forms/fields.py:619 forms/fields.py:697
+#: forms/fields.py:625 forms/fields.py:703
#, 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."
-#: forms/fields.py:698 forms/fields.py:759 forms/models.py:729
+#: forms/fields.py:704 forms/fields.py:765 forms/models.py:1003
msgid "Enter a list of values."
msgstr "Introduzca una lista de valores."
-#: forms/fields.py:879
+#: forms/fields.py:892
msgid "Enter a valid IPv4 address."
msgstr "Introduzca una dirección IPv4 válida."
-#: forms/fields.py:889
+#: forms/fields.py:902
msgid ""
"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
msgstr ""
"Introduzca un 'slug' válido, consistente en letras, números, guiones bajos o "
"medios."
-#: forms/formsets.py:247 forms/formsets.py:249
+#: forms/formsets.py:271 forms/formsets.py:273
msgid "Order"
msgstr "Orden"
-#: forms/models.py:289 forms/models.py:298
+#: forms/models.py:367
+#, python-format
+msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
+msgstr "El campo %(field_name)s debe ser único para %(lookup)s %(date_field)s"
+
+#: forms/models.py:381 forms/models.py:389
#, python-format
msgid "%(model_name)s with this %(field_label)s already exists."
msgstr "Ya existe %(model_name)s con este %(field_label)s."
-#: forms/models.py:602
+#: forms/models.py:594
+#, python-format
+msgid "Please correct the duplicate data for %(field)s."
+msgstr "Por favor, corrija el dato duplicado para %(field)s."
+
+#: forms/models.py:598
+#, python-format
+msgid "Please correct the duplicate data for %(field)s, which must be unique."
+msgstr ""
+"Por favor corriga el dato duplicado para %(field)s, el cual debe ser único."
+
+#: forms/models.py:604
+#, python-format
+msgid ""
+"Please correct the duplicate data for %(field_name)s which must be unique "
+"for the %(lookup)s in %(date_field)s."
+msgstr ""
+"Por favor corriga los datos duplicados para %(field_name)s el cual debe ser "
+"único para %(lookup)s en %(date_field)s."
+
+#: forms/models.py:612
+msgid "Please correct the duplicate values below."
+msgstr "Por favor, corrija los valores duplicados abajo."
+
+#: forms/models.py:867
msgid "The inline foreign key did not match the parent instance primary key."
msgstr ""
"La clave foránea en linea no coincide con la clave primaria de la instancia "
"padre."
-#: forms/models.py:659
+#: forms/models.py:930
msgid "Select a valid choice. That choice is not one of the available choices."
msgstr "Escoja una opción válida. Esa opción no está entre las disponibles."
-#: forms/models.py:730
+#: forms/models.py:1004
#, 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."
-#: template/defaultfilters.py:751
+#: forms/models.py:1006
+#, python-format
+msgid "\"%s\" is not a valid value for a primary key."
+msgstr "\"%s\" no es un valor válido para una clave primaria."
+
+#: template/defaultfilters.py:767
msgid "yes,no,maybe"
msgstr "sí,no,tal vez"
-#: template/defaultfilters.py:782
+#: template/defaultfilters.py:798
#, python-format
msgid "%(size)d byte"
msgid_plural "%(size)d bytes"
msgstr[0] "%(size)d byte"
msgstr[1] "%(size)d bytes"
-#: template/defaultfilters.py:784
+#: template/defaultfilters.py:800
#, python-format
msgid "%.1f KB"
msgstr "%.1f KB"
-#: template/defaultfilters.py:786
+#: template/defaultfilters.py:802
#, python-format
msgid "%.1f MB"
msgstr "%.1f MB"
-#: template/defaultfilters.py:787
+#: template/defaultfilters.py:803
#, python-format
msgid "%.1f GB"
msgstr "%.1f GB"
-#: utils/dateformat.py:41
+#: utils/dateformat.py:42
msgid "p.m."
msgstr "p.m."
-#: utils/dateformat.py:42
+#: utils/dateformat.py:43
msgid "a.m."
msgstr "a.m."
-#: utils/dateformat.py:47
+#: utils/dateformat.py:48
msgid "PM"
msgstr "PM"
-#: utils/dateformat.py:48
+#: utils/dateformat.py:49
msgid "AM"
msgstr "AM"
-#: utils/dateformat.py:97
+#: utils/dateformat.py:98
msgid "midnight"
msgstr "media noche"
-#: utils/dateformat.py:99
+#: utils/dateformat.py:100
msgid "noon"
msgstr "medio día"
@@ -4327,16 +4414,16 @@ msgid_plural "minutes"
msgstr[0] "minuto"
msgstr[1] "minutos"
-#: utils/timesince.py:43
+#: utils/timesince.py:45
msgid "minutes"
msgstr "minutos"
-#: utils/timesince.py:48
+#: utils/timesince.py:50
#, python-format
msgid "%(number)d %(type)s"
msgstr "%(number)d %(type)s"
-#: utils/timesince.py:54
+#: utils/timesince.py:56
#, python-format
msgid ", %(number)d %(type)s"
msgstr ", %(number)d %(type)s"
@@ -4372,6 +4459,11 @@ msgstr "Se actualizó con éxito el %(verbose_name)s."
msgid "The %(verbose_name)s was deleted."
msgstr "El/La %(verbose_name)s ha sido borrado."
+#~ msgid "verbose_name"
+#~ msgid_plural "verbose_name_plural"
+#~ msgstr[0] "verbose_name"
+#~ msgstr[1] "verbose_name_plural"
+
#~ msgid "DATE_WITH_TIME_FULL"
#~ msgstr "j M Y P"
@@ -4411,9 +4503,6 @@ msgstr "El/La %(verbose_name)s ha sido borrado."
#~ msgid "is valid rating"
#~ msgstr "puntuación válida"
-#~ msgid "comments"
-#~ msgstr "comentarios"
-
#~ msgid "Content object"
#~ msgstr "Objeto contenido"
@@ -4610,9 +4699,6 @@ msgstr "El/La %(verbose_name)s ha sido borrado."
#~ msgid "Please enter both fields or leave them both empty."
#~ msgstr "Por favor, rellene ambos campos o deje ambos vacíos."
-#~ msgid "This field must be given if %(field)s is %(value)s"
-#~ msgstr "Se debe proporcionar este campo si %(field)s es %(value)s"
-
#~ msgid "This field must be given if %(field)s is not %(value)s"
#~ msgstr "Se debe proporcionar este campo si %(field)s no es %(value)s"
diff --git a/django/contrib/admin/sites.py b/django/contrib/admin/sites.py
index 6e9ef1161f..16b254ed20 100644
--- a/django/contrib/admin/sites.py
+++ b/django/contrib/admin/sites.py
@@ -114,20 +114,20 @@ class AdminSite(object):
name = name or action.__name__
self._actions[name] = action
self._global_actions[name] = action
-
+
def disable_action(self, name):
"""
Disable a globally-registered action. Raises KeyError for invalid names.
"""
del self._actions[name]
-
+
def get_action(self, name):
"""
Explicitally get a registered global action wheather it's enabled or
not. Raises KeyError for invalid names.
"""
return self._global_actions[name]
-
+
def actions(self):
"""
Get all the enabled actions as an iterable of (name, func).
@@ -159,9 +159,9 @@ class AdminSite(object):
if 'django.core.context_processors.auth' not in settings.TEMPLATE_CONTEXT_PROCESSORS:
raise ImproperlyConfigured("Put 'django.core.context_processors.auth' in your TEMPLATE_CONTEXT_PROCESSORS setting in order to use the admin application.")
- def admin_view(self, view):
+ def admin_view(self, view, cacheable=False):
"""
- Decorator to create an "admin view attached to this ``AdminSite``. This
+ Decorator to create an admin view attached to this ``AdminSite``. This
wraps the view and provides permission checking by calling
``self.has_permission``.
@@ -177,19 +177,25 @@ class AdminSite(object):
url(r'^my_view/$', self.admin_view(some_view))
)
return urls
+
+ By default, admin_views are marked non-cacheable using the
+ ``never_cache`` decorator. If the view can be safely cached, set
+ cacheable=True.
"""
def inner(request, *args, **kwargs):
if not self.has_permission(request):
return self.login(request)
return view(request, *args, **kwargs)
+ if not cacheable:
+ inner = never_cache(inner)
return update_wrapper(inner, view)
def get_urls(self):
from django.conf.urls.defaults import patterns, url, include
- def wrap(view):
+ def wrap(view, cacheable=False):
def wrapper(*args, **kwargs):
- return self.admin_view(view)(*args, **kwargs)
+ return self.admin_view(view, cacheable)(*args, **kwargs)
return update_wrapper(wrapper, view)
# Admin-site-wide views.
@@ -201,13 +207,13 @@ class AdminSite(object):
wrap(self.logout),
name='%sadmin_logout'),
url(r'^password_change/$',
- wrap(self.password_change),
+ wrap(self.password_change, cacheable=True),
name='%sadmin_password_change' % self.name),
url(r'^password_change/done/$',
- wrap(self.password_change_done),
+ wrap(self.password_change_done, cacheable=True),
name='%sadmin_password_change_done' % self.name),
url(r'^jsi18n/$',
- wrap(self.i18n_javascript),
+ wrap(self.i18n_javascript, cacheable=True),
name='%sadmin_jsi18n' % self.name),
url(r'^r/(?P<content_type_id>\d+)/(?P<object_id>.+)/$',
'django.views.defaults.shortcut'),
diff --git a/django/contrib/gis/db/models/query.py b/django/contrib/gis/db/models/query.py
index 3d31f73c29..d055260a58 100644
--- a/django/contrib/gis/db/models/query.py
+++ b/django/contrib/gis/db/models/query.py
@@ -62,6 +62,14 @@ class GeoQuerySet(QuerySet):
"""
return self._geom_attribute('centroid', **kwargs)
+ def collect(self, **kwargs):
+ """
+ Performs an aggregate collect operation on the given geometry field.
+ This is analagous to a union operation, but much faster because
+ boundaries are not dissolved.
+ """
+ return self._spatial_aggregate(aggregates.Collect, **kwargs)
+
def difference(self, geom, **kwargs):
"""
Returns the spatial difference of the geographic field in a `difference`
diff --git a/django/contrib/gis/gdal/prototypes/generation.py b/django/contrib/gis/gdal/prototypes/generation.py
index bba715d67c..1303532372 100644
--- a/django/contrib/gis/gdal/prototypes/generation.py
+++ b/django/contrib/gis/gdal/prototypes/generation.py
@@ -8,6 +8,9 @@ from django.contrib.gis.gdal.prototypes.errcheck import \
check_arg_errcode, check_errcode, check_geom, check_geom_offset, \
check_pointer, check_srs, check_str_arg, check_string, check_const_string
+class gdal_char_p(c_char_p):
+ pass
+
def double_output(func, argtypes, errcheck=False, strarg=False):
"Generates a ctypes function that returns a double value."
func.argtypes = argtypes
@@ -77,9 +80,9 @@ def string_output(func, argtypes, offset=-1, str_result=False):
"""
func.argtypes = argtypes
if str_result:
- # String is the result, don't explicitly define
- # the argument type so we can get the pointer.
- pass
+ # Use subclass of c_char_p so the error checking routine
+ # can free the memory at the pointer's address.
+ func.restype = gdal_char_p
else:
# Error code is returned
func.restype = c_int
diff --git a/django/contrib/gis/geos/prototypes/topology.py b/django/contrib/gis/geos/prototypes/topology.py
index 633340901b..65c26f9f37 100644
--- a/django/contrib/gis/geos/prototypes/topology.py
+++ b/django/contrib/gis/geos/prototypes/topology.py
@@ -10,6 +10,7 @@ __all__ = ['geos_boundary', 'geos_buffer', 'geos_centroid', 'geos_convexhull',
from ctypes import c_char_p, c_double, c_int
from django.contrib.gis.geos.libgeos import lgeos, GEOM_PTR, GEOS_PREPARE
from django.contrib.gis.geos.prototypes.errcheck import check_geom, check_string
+from django.contrib.gis.geos.prototypes.geom import geos_char_p
def topology(func, *args):
"For GEOS unary topology functions."
@@ -38,6 +39,7 @@ geos_union = topology(lgeos.GEOSUnion, GEOM_PTR)
# GEOSRelate returns a string, not a geometry.
geos_relate = lgeos.GEOSRelate
geos_relate.argtypes = [GEOM_PTR, GEOM_PTR]
+geos_relate.restype = geos_char_p
geos_relate.errcheck = check_string
# Routines only in GEOS 3.1+
diff --git a/django/contrib/gis/tests/relatedapp/tests.py b/django/contrib/gis/tests/relatedapp/tests.py
index 502a3c0be9..dcc5af1ac7 100644
--- a/django/contrib/gis/tests/relatedapp/tests.py
+++ b/django/contrib/gis/tests/relatedapp/tests.py
@@ -1,7 +1,7 @@
import os, unittest
from django.contrib.gis.geos import *
from django.contrib.gis.db.backend import SpatialBackend
-from django.contrib.gis.db.models import Count, Extent, F, Union
+from django.contrib.gis.db.models import Collect, Count, Extent, F, Union
from django.contrib.gis.tests.utils import no_mysql, no_oracle, no_spatialite
from django.conf import settings
from models import City, Location, DirectoryEntry, Parcel, Book, Author
@@ -264,6 +264,26 @@ class RelatedGeoModelTest(unittest.TestCase):
# Should be `None`, and not a 'dummy' model.
self.assertEqual(None, b.author)
+ @no_mysql
+ @no_oracle
+ @no_spatialite
+ def test14_collect(self):
+ "Testing the `collect` GeoQuerySet method and `Collect` aggregate."
+ # Reference query:
+ # SELECT AsText(ST_Collect("relatedapp_location"."point")) FROM "relatedapp_city" LEFT OUTER JOIN
+ # "relatedapp_location" ON ("relatedapp_city"."location_id" = "relatedapp_location"."id")
+ # WHERE "relatedapp_city"."state" = 'TX';
+ ref_geom = fromstr('MULTIPOINT(-97.516111 33.058333,-96.801611 32.782057,-95.363151 29.763374,-96.801611 32.782057)')
+
+ c1 = City.objects.filter(state='TX').collect(field_name='location__point')
+ c2 = City.objects.filter(state='TX').aggregate(Collect('location__point'))['location__point__collect']
+
+ for coll in (c1, c2):
+ # Even though Dallas and Ft. Worth share same point, Collect doesn't
+ # consolidate -- that's why 4 points in MultiPoint.
+ self.assertEqual(4, len(coll))
+ self.assertEqual(ref_geom, coll)
+
# TODO: Related tests for KML, GML, and distance lookups.
def suite():
diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py
index 8f96049cc4..7d85979294 100644
--- a/django/db/backends/oracle/base.py
+++ b/django/db/backends/oracle/base.py
@@ -217,12 +217,13 @@ WHEN (new.%(col_name)s IS NULL)
# continue to loop
break
for f in model._meta.many_to_many:
- table_name = self.quote_name(f.m2m_db_table())
- sequence_name = get_sequence_name(f.m2m_db_table())
- column_name = self.quote_name('id')
- output.append(query % {'sequence': sequence_name,
- 'table': table_name,
- 'column': column_name})
+ if not f.rel.through:
+ table_name = self.quote_name(f.m2m_db_table())
+ sequence_name = get_sequence_name(f.m2m_db_table())
+ column_name = self.quote_name('id')
+ output.append(query % {'sequence': sequence_name,
+ 'table': table_name,
+ 'column': column_name})
return output
def start_transaction_sql(self):
diff --git a/django/db/backends/postgresql/operations.py b/django/db/backends/postgresql/operations.py
index ee74be1624..331156ee11 100644
--- a/django/db/backends/postgresql/operations.py
+++ b/django/db/backends/postgresql/operations.py
@@ -121,14 +121,15 @@ class DatabaseOperations(BaseDatabaseOperations):
style.SQL_TABLE(qn(model._meta.db_table))))
break # Only one AutoField is allowed per model, so don't bother continuing.
for f in model._meta.many_to_many:
- output.append("%s setval('%s', coalesce(max(%s), 1), max(%s) %s null) %s %s;" % \
- (style.SQL_KEYWORD('SELECT'),
- style.SQL_FIELD(qn('%s_id_seq' % f.m2m_db_table())),
- style.SQL_FIELD(qn('id')),
- style.SQL_FIELD(qn('id')),
- style.SQL_KEYWORD('IS NOT'),
- style.SQL_KEYWORD('FROM'),
- style.SQL_TABLE(qn(f.m2m_db_table()))))
+ if not f.rel.through:
+ output.append("%s setval('%s', coalesce(max(%s), 1), max(%s) %s null) %s %s;" % \
+ (style.SQL_KEYWORD('SELECT'),
+ style.SQL_FIELD(qn('%s_id_seq' % f.m2m_db_table())),
+ style.SQL_FIELD(qn('id')),
+ style.SQL_FIELD(qn('id')),
+ style.SQL_KEYWORD('IS NOT'),
+ style.SQL_KEYWORD('FROM'),
+ style.SQL_TABLE(qn(f.m2m_db_table()))))
return output
def savepoint_create_sql(self, sid):
diff --git a/django/forms/models.py b/django/forms/models.py
index b3d7c28155..6ed8176f5f 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -332,8 +332,21 @@ class BaseModelFormSet(BaseFormSet):
return len(self.get_queryset())
return super(BaseModelFormSet, self).initial_form_count()
+ def _existing_object(self, pk):
+ if not hasattr(self, '_object_dict'):
+ self._object_dict = dict([(o.pk, o) for o in self.get_queryset()])
+ return self._object_dict.get(pk)
+
def _construct_form(self, i, **kwargs):
- if i < self.initial_form_count():
+ if self.is_bound and i < self.initial_form_count():
+ pk_key = "%s-%s" % (self.add_prefix(i), self.model._meta.pk.name)
+ pk = self.data[pk_key]
+ pk_field = self.model._meta.pk
+ pk = pk_field.get_db_prep_lookup('exact', pk)
+ if isinstance(pk, list):
+ pk = pk[0]
+ kwargs['instance'] = self._existing_object(pk)
+ if i < self.initial_form_count() and not kwargs.get('instance'):
kwargs['instance'] = self.get_queryset()[i]
return super(BaseModelFormSet, self)._construct_form(i, **kwargs)
@@ -472,10 +485,6 @@ class BaseModelFormSet(BaseFormSet):
if not self.get_queryset():
return []
- # Put the objects from self.get_queryset into a dict so they are easy to lookup by pk
- existing_objects = {}
- for obj in self.get_queryset():
- existing_objects[obj.pk] = obj
saved_instances = []
for form in self.initial_forms:
pk_name = self._pk_field.name
@@ -486,7 +495,7 @@ class BaseModelFormSet(BaseFormSet):
pk_value = form.fields[pk_name].clean(raw_pk_value)
pk_value = getattr(pk_value, 'pk', pk_value)
- obj = existing_objects[pk_value]
+ obj = self._existing_object(pk_value)
if self.can_delete:
raw_delete_value = form._raw_value(DELETION_FIELD_NAME)
should_delete = form.fields[DELETION_FIELD_NAME].clean(raw_delete_value)
@@ -531,10 +540,13 @@ class BaseModelFormSet(BaseFormSet):
return ((not pk.editable) or (pk.auto_created or isinstance(pk, AutoField))
or (pk.rel and pk.rel.parent_link and pk_is_not_editable(pk.rel.to._meta.pk)))
if pk_is_not_editable(pk) or pk.name not in form.fields:
- try:
- pk_value = self.get_queryset()[index].pk
- except IndexError:
- pk_value = None
+ if form.is_bound:
+ pk_value = form.instance.pk
+ else:
+ try:
+ pk_value = self.get_queryset()[index].pk
+ except IndexError:
+ pk_value = None
if isinstance(pk, OneToOneField) or isinstance(pk, ForeignKey):
qs = pk.rel.to._default_manager.get_query_set()
else:
diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py
index a61dd8b36c..7d91cd6415 100644
--- a/django/template/defaulttags.py
+++ b/django/template/defaulttags.py
@@ -564,7 +564,7 @@ do_filter = register.tag("filter", do_filter)
#@register.tag
def firstof(parser, token):
"""
- Outputs the first variable passed that is not False.
+ Outputs the first variable passed that is not False, without escaping.
Outputs nothing if all the passed variables are False.
@@ -575,11 +575,11 @@ def firstof(parser, token):
This is equivalent to::
{% if var1 %}
- {{ var1 }}
+ {{ var1|safe }}
{% else %}{% if var2 %}
- {{ var2 }}
+ {{ var2|safe }}
{% else %}{% if var3 %}
- {{ var3 }}
+ {{ var3|safe }}
{% endif %}{% endif %}{% endif %}
but obviously much cleaner!
@@ -589,6 +589,12 @@ def firstof(parser, token):
{% firstof var1 var2 var3 "fallback value" %}
+ If you want to escape the output, use a filter tag::
+
+ {% filter force_escape %}
+ {% firstof var1 var2 var3 "fallback value" %}
+ {% endfilter %}
+
"""
bits = token.split_contents()[1:]
if len(bits) < 1: