diff options
| author | Honza Král <honza.kral@gmail.com> | 2009-07-15 07:19:10 +0000 |
|---|---|---|
| committer | Honza Král <honza.kral@gmail.com> | 2009-07-15 07:19:10 +0000 |
| commit | d0c3e19de5bf9d79f5436f8ddeccf9bea98d9306 (patch) | |
| tree | 5975afb05ef971945dd9afb9a977d5a59b04eaf4 /django | |
| parent | f662801023605ff6fe44416271e39839894e7962 (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.mo | bin | 64639 -> 67049 bytes | |||
| -rw-r--r-- | django/conf/locale/ca/LC_MESSAGES/django.po | 549 | ||||
| -rw-r--r-- | django/conf/locale/es/LC_MESSAGES/django.mo | bin | 64913 -> 67328 bytes | |||
| -rw-r--r-- | django/conf/locale/es/LC_MESSAGES/django.po | 556 | ||||
| -rw-r--r-- | django/contrib/admin/sites.py | 26 | ||||
| -rw-r--r-- | django/contrib/gis/db/models/query.py | 8 | ||||
| -rw-r--r-- | django/contrib/gis/gdal/prototypes/generation.py | 9 | ||||
| -rw-r--r-- | django/contrib/gis/geos/prototypes/topology.py | 2 | ||||
| -rw-r--r-- | django/contrib/gis/tests/relatedapp/tests.py | 22 | ||||
| -rw-r--r-- | django/db/backends/oracle/base.py | 13 | ||||
| -rw-r--r-- | django/db/backends/postgresql/operations.py | 17 | ||||
| -rw-r--r-- | django/forms/models.py | 32 | ||||
| -rw-r--r-- | django/template/defaulttags.py | 14 |
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 Binary files differindex 38aecaae32..3039bd8fad 100644 --- a/django/conf/locale/ca/LC_MESSAGES/django.mo +++ b/django/conf/locale/ca/LC_MESSAGES/django.mo 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 Binary files differindex 831964a5ae..a8bd5f985d 100644 --- a/django/conf/locale/es/LC_MESSAGES/django.mo +++ b/django/conf/locale/es/LC_MESSAGES/django.mo 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: |
