To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").
\n" +msgstr "" +"\n" +"Para instalar bookmarklets, arrastre el enlace a su barra\n" +"de favoritos, o pulse con el botón derecho el enlace y añádalo a sus " +"favoritos.\n" +"Ahora puede escoger el bookmarklet desde cualquier página en el sitio.\n" +"Observer que algunos de estos bookmarklets precisan que esté viendo\n" +"el sitio desde un computador señalado como \"interno\" (hable\n" +"con su administrador de sistemas si no está seguro de si el suyo lo es)." +"p>\n" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "Documentation for this page" +msgstr "Documentación de esta página" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:20 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" +"Le lleva desde cualquier página a la documentación de la vista que la genera." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "Show object ID" +msgstr "Mostrar ID de objeto" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" +"Muestra el tipo de contenido e ID unívoco de las páginas que representan un " +"único objeto." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Edit this object (current window)" +msgstr "Editar este objeto (ventana actual)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:26 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "" +"Le lleva a la página de administración de páginas que representan un único " +"objeto." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "Edit this object (new window)" +msgstr "Editar este objeto (nueva ventana)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:29 +msgid "As above, but opens the admin page in a new window." +msgstr "" +"Como antes, pero abre la página de administración en una nueva ventana." + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Fecha:" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Hora:" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Actualmente:" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Modificar:" + +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +#: contrib/admin/templates/registration/password_reset_done.html:4 +msgid "Password reset" +msgstr "Recuperar clave" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "" +"¿Ha olvidado su clave? Introduzca su dirección de correo electrónico, y " +"crearemos una nueva que le enviaremos por correo." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "Dirección de correo electrónico:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Recuperar mi clave" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "Está recibiendo este mensaje debido a que solicitó recuperar la clave" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "de su cuenta de usuario en %(site_name)s." + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "Su nueva clave es: %(new_password)s" + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "Puede cambiarla accediendo a esta página:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "Su nombre de usuario, en caso de haberlo olvidado:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "¡Gracias por usar nuestro sitio!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "El equipo de %(site_name)s" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Gracias por el tiempo que ha dedicado al sitio web hoy." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Identificarse de nuevo" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Recuperación de clave exitosa" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed a new password to the e-mail address you submitted. You " +"should be receiving it shortly." +msgstr "" +"Le hemos enviado una clave nueva a la dirección que ha suministrado. Debería " +"recibirla en breve." + +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:4 +msgid "Password change" +msgstr "Cambio de clave" + +#: contrib/admin/templates/registration/password_change_form.html:12 +msgid "" +"Please enter your old password, for security's sake, and then enter your new " +"password twice so we can verify you typed it in correctly." +msgstr "" +"Por favor, introduzca su clave antigua, por seguridad, y después introduzca " +"la nueva clave dos veces para verificar que la ha escrito correctamente." + +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "Clave antigua:" + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "Clave nueva:" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "Confirme clave:" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "Cambiar mi clave" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "Cambio de clave exitoso" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "Su clave ha sido cambiada." + +#: contrib/sites/models.py:15 +msgid "domain name" +msgstr "nombre de dominio" + +#: contrib/sites/models.py:16 +msgid "display name" +msgstr "nombre para mostrar" + +#: contrib/sites/models.py:20 +msgid "site" +msgstr "sitio" + +#: contrib/sites/models.py:21 +msgid "sites" +msgstr "sitios" #: contrib/humanize/templatetags/humanize.py:17 msgid "th" msgstr "th" #: contrib/humanize/templatetags/humanize.py:17 -#, fuzzy msgid "st" msgstr "st" #: contrib/humanize/templatetags/humanize.py:17 -#, fuzzy msgid "nd" msgstr "nd" @@ -746,22 +1709,22 @@ msgstr "rd" #, python-format msgid "%(value).1f million" msgid_plural "%(value).1f million" -msgstr[0] "%(value).1f milln" -msgstr[1] "%(value).1f millin" +msgstr[0] "%(value).1f millón" +msgstr[1] "%(value).1f millión" #: contrib/humanize/templatetags/humanize.py:50 #, python-format msgid "%(value).1f billion" msgid_plural "%(value).1f billion" -msgstr[0] "%(value).1f billin" -msgstr[1] "%(value).1f billin" +msgstr[0] "%(value).1f billión" +msgstr[1] "%(value).1f billión" #: contrib/humanize/templatetags/humanize.py:53 #, python-format msgid "%(value).1f trillion" msgid_plural "%(value).1f trillion" -msgstr[0] "%(value).1f trillin" -msgstr[1] "%(value).1f trillin" +msgstr[0] "%(value).1f trillión" +msgstr[1] "%(value).1f trillión" #: contrib/humanize/templatetags/humanize.py:68 msgid "one" @@ -799,6 +1762,53 @@ msgstr "ocho" msgid "nine" msgstr "nueve" +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Ejemplo: '/about/contact/'. Asegúrese de que pone barras al principio y al " +"final." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "título" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "contenido" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "admitir comentarios" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "nombre de plantilla" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Ejemplo: 'flatpages/contact_page.html'. Si no es proporcionado, el sistema " +"usará 'flatpages/default.html'." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "debe estar registrado" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "Si está marcado, sólo los usuarios registrados podrán ver la página." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "página estática" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "páginas estáticas" + #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "redirigir desde" @@ -808,7 +1818,7 @@ msgid "" "This should be an absolute path, excluding the domain name. Example: '/" "events/search/'." msgstr "" -"Esta ruta debera ser absoluta, excluyendo el nombre de dominio. Ejeplo: '/" +"Esta ruta debería ser absoluta, excluyendo el nombre de dominio. Ejeplo: '/" "events/search/'." #: contrib/redirects/models.py:9 @@ -825,7 +1835,7 @@ msgstr "" #: contrib/redirects/models.py:13 msgid "redirect" -msgstr "redireccin" +msgstr "redirección" #: contrib/redirects/models.py:14 msgid "redirects" @@ -846,62 +1856,58 @@ msgstr "comentario" #: contrib/comments/models.py:70 msgid "rating #1" -msgstr "calificacin 1" +msgstr "calificación 1" #: contrib/comments/models.py:71 msgid "rating #2" -msgstr "calificacin 2" +msgstr "calificación 2" #: contrib/comments/models.py:72 msgid "rating #3" -msgstr "calificacin 3" +msgstr "calificación 3" #: contrib/comments/models.py:73 msgid "rating #4" -msgstr "calificacin 4" +msgstr "calificación 4" #: contrib/comments/models.py:74 msgid "rating #5" -msgstr "calificacin 5" +msgstr "calificación 5" #: contrib/comments/models.py:75 msgid "rating #6" -msgstr "calificacin 6" +msgstr "calificación 6" #: contrib/comments/models.py:76 msgid "rating #7" -msgstr "calificacin 7" +msgstr "calificación 7" #: contrib/comments/models.py:77 msgid "rating #8" -msgstr "calificacin 8" +msgstr "calificación 8" #: contrib/comments/models.py:82 msgid "is valid rating" -msgstr "es calificacin vlida" +msgstr "es calificación válida" #: contrib/comments/models.py:83 contrib/comments/models.py:169 msgid "date/time submitted" -msgstr "fecha/hora de envo" +msgstr "fecha/hora de envío" #: contrib/comments/models.py:84 contrib/comments/models.py:170 msgid "is public" -msgstr "es pblico" - -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:305 -msgid "IP address" -msgstr "Direccin IP" +msgstr "es público" #: contrib/comments/models.py:86 msgid "is removed" -msgstr "est eliminado" +msgstr "está eliminado" #: contrib/comments/models.py:86 msgid "" "Check this box if the comment is inappropriate. A \"This comment has been " "removed\" message will be displayed instead." msgstr "" -"Marque esta caja si el comentario es inapropiado. En su lugar se mostrar " +"Marque esta caja si el comentario es inapropiado. En su lugar se mostrará " "\"Este comentario ha sido eliminado\"." #: contrib/comments/models.py:91 @@ -933,7 +1939,7 @@ msgstr "nombre de la persona" #: contrib/comments/models.py:171 msgid "ip address" -msgstr "direccin ip" +msgstr "dirección ip" #: contrib/comments/models.py:173 msgid "approved by staff" @@ -949,11 +1955,11 @@ msgstr "comentarios libres" #: contrib/comments/models.py:233 msgid "score" -msgstr "puntuacin" +msgstr "puntuación" #: contrib/comments/models.py:234 msgid "score date" -msgstr "fecha de la puntuacin" +msgstr "fecha de la puntuación" #: contrib/comments/models.py:237 msgid "karma score" @@ -998,11 +2004,11 @@ msgstr "Marca de %r" #: contrib/comments/models.py:278 msgid "deletion date" -msgstr "fecha de eliminacin" +msgstr "fecha de eliminación" #: contrib/comments/models.py:280 msgid "moderator deletion" -msgstr "eliminacin de moderador" +msgstr "eliminación de moderador" #: contrib/comments/models.py:281 msgid "moderator deletions" @@ -1011,26 +2017,26 @@ msgstr "eliminaciones de moderador" #: contrib/comments/models.py:285 #, python-format msgid "Moderator deletion by %r" -msgstr "Eliminacin del moderador %r" +msgstr "Eliminación del moderador %r" -#: contrib/comments/views/karma.py:19 +#: contrib/comments/views/karma.py:20 msgid "Anonymous users cannot vote" -msgstr "Los usuarios annimos no pueden votar" +msgstr "Los usuarios anónimos no pueden votar" -#: contrib/comments/views/karma.py:23 +#: contrib/comments/views/karma.py:24 msgid "Invalid comment ID" -msgstr "ID de comentario no vlido" +msgstr "ID de comentario no válido" -#: contrib/comments/views/karma.py:25 +#: contrib/comments/views/karma.py:26 msgid "No voting for yourself" -msgstr "No puedes votarte t mismo" +msgstr "No puedes votarte tú mismo" -#: contrib/comments/views/comments.py:27 +#: contrib/comments/views/comments.py:28 msgid "" "This rating is required because you've entered at least one other rating." -msgstr "Se precisa esta puntuacin porque ha introducido al menos otra ms." +msgstr "Se precisa esta puntuación porque ha introducido al menos otra más." -#: contrib/comments/views/comments.py:111 +#: contrib/comments/views/comments.py:112 #, python-format msgid "" "This comment was posted by a user who has posted fewer than %(count)s " @@ -1043,17 +2049,17 @@ msgid_plural "" "\n" "%(text)s" msgstr[0] "" -"Este comentario lo envi un usuario que ha enviado menos de %(count)s " +"Este comentario lo envió un usuario que ha enviado menos de %(count)s " "comentario:\n" "\n" "%(text)s" msgstr[1] "" -"Este comentario lo envi un usuario que ha enviado menos de %(count)s " +"Este comentario lo envió un usuario que ha enviado menos de %(count)s " "comentarios:\n" "\n" "%(text)s" -#: contrib/comments/views/comments.py:116 +#: contrib/comments/views/comments.py:117 #, python-format msgid "" "This comment was posted by a sketchy user:\n" @@ -1064,73 +2070,40 @@ msgstr "" "\n" "%(text)s" -#: contrib/comments/views/comments.py:188 -#: contrib/comments/views/comments.py:280 +#: contrib/comments/views/comments.py:189 +#: contrib/comments/views/comments.py:281 msgid "Only POSTs are allowed" -msgstr "Slo se admite POST" +msgstr "Sólo se admite POST" -#: contrib/comments/views/comments.py:192 -#: contrib/comments/views/comments.py:284 +#: contrib/comments/views/comments.py:193 +#: contrib/comments/views/comments.py:285 msgid "One or more of the required fields wasn't submitted" -msgstr "No se proporcion uno o ms de los siguientes campos requeridos" +msgstr "No se proporcionó uno o más de los siguientes campos requeridos" -#: contrib/comments/views/comments.py:196 -#: contrib/comments/views/comments.py:286 +#: contrib/comments/views/comments.py:197 +#: contrib/comments/views/comments.py:287 msgid "Somebody tampered with the comment form (security violation)" msgstr "" -"Alguien est jugando con el formulario de comentarios (violacin de " +"Alguien está jugando con el formulario de comentarios (violación de " "seguridad)" -#: contrib/comments/views/comments.py:206 -#: contrib/comments/views/comments.py:292 +#: contrib/comments/views/comments.py:207 +#: contrib/comments/views/comments.py:293 msgid "" "The comment form had an invalid 'target' parameter -- the object ID was " "invalid" msgstr "" -"El formulario de comentarios tiene un parmetro 'target' no vlido (el ID de " -"objeto era invlido)" +"El formulario de comentarios tiene un parámetro 'target' no válido (el ID de " +"objeto era inválido)" -#: contrib/comments/views/comments.py:257 -#: contrib/comments/views/comments.py:321 +#: contrib/comments/views/comments.py:258 +#: contrib/comments/views/comments.py:322 msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "El formulario de comentario no proporcion 'previsualizar' ni 'enviar'" - -#: contrib/comments/templates/comments/form.html:6 -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:17 -msgid "Username:" -msgstr "Usuario:" - -#: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/model_index.html:5 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -msgid "Log out" -msgstr "Terminar sesin" - -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "Clave:" +msgstr "El formulario de comentario no proporcionó 'previsualizar' ni 'enviar'" #: contrib/comments/templates/comments/form.html:8 msgid "Forgotten your password?" -msgstr "Has olvidado tu contrasea?" +msgstr "¿Has olvidado tu contraseña?" #: contrib/comments/templates/comments/form.html:12 msgid "Ratings" @@ -1148,7 +2121,7 @@ msgstr "Opcional" #: contrib/comments/templates/comments/form.html:23 msgid "Post a photo" -msgstr "Postea una fotografa" +msgstr "Postea una fotografía" #: contrib/comments/templates/comments/form.html:28 #: contrib/comments/templates/comments/freeform.html:5 @@ -1164,1094 +2137,21 @@ msgstr "Previsualizar comentario" msgid "Your name:" msgstr "Tu nombre:" -#: contrib/sites/models.py:10 -msgid "domain name" -msgstr "nombre de dominio" - -#: contrib/sites/models.py:11 -msgid "display name" -msgstr "nombre para mostrar" - -#: contrib/sites/models.py:15 -msgid "site" -msgstr "sitio" - -#: contrib/sites/models.py:16 -msgid "sites" -msgstr "sitios" - -#: contrib/admin/filterspecs.py:40 -#, python-format -msgid "" -"
To install bookmarklets, drag the link to your bookmarks\n" -"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" -"select the bookmarklet from any page in the site. Note that some of these\n" -"bookmarklets require you to be viewing the site from a computer designated\n" -"as \"internal\" (talk to your system administrator if you aren't sure if\n" -"your computer is \"internal\").
\n" -msgstr "" -"\n" -"Para instalar bookmarklets, arrastre el enlace a su barra\n"
-"de favoritos, o pulse con el botn derecho el enlace y adalo a sus "
-"favoritos.\n"
-"Ahora puede escoger el bookmarklet desde cualquier pgina en el sitio.\n"
-"Observer que algunos de estos bookmarklets precisan que est viendo\n"
-"el sitio desde un computador sealado como \"interno\" (hable\n"
-"con su administrador de sistemas si no est seguro de si el suyo lo es)."
-"p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Documentacin de esta pgina"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Le lleva desde cualquier pgina a la documentacin de la vista que la genera."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Mostrar ID de objeto"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Muestra el tipo de contenido e ID unvoco de las pginas que representan un "
-"nico objeto."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Editar este objeto (ventana actual)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Le lleva a la pgina de administracin de pginas que representan un nico "
-"objeto."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Editar este objeto (nueva ventana)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Como antes, pero abre la pgina de administracin en una nueva ventana."
-
-#: contrib/contenttypes/models.py:36
-msgid "python model class name"
-msgstr "nombre de mdulo python"
-
-#: contrib/contenttypes/models.py:39
-msgid "content type"
-msgstr "tipo de contenido"
-
-#: contrib/contenttypes/models.py:40
-msgid "content types"
-msgstr "tipos de contenido"
-
-#: contrib/auth/views.py:40
-msgid "Logged out"
-msgstr "Sesin terminada"
-
-#: contrib/auth/models.py:49 contrib/auth/models.py:69
-msgid "name"
-msgstr "nombre"
-
-#: contrib/auth/models.py:51
-msgid "codename"
-msgstr "nombre en cdigo"
-
-#: contrib/auth/models.py:54
-msgid "permission"
-msgstr "permiso"
-
-#: contrib/auth/models.py:55 contrib/auth/models.py:70
-msgid "permissions"
-msgstr "permisos"
-
-#: contrib/auth/models.py:73
-msgid "group"
-msgstr "grupo"
-
-#: contrib/auth/models.py:74 contrib/auth/models.py:114
-msgid "groups"
-msgstr "grupos"
-
-#: contrib/auth/models.py:104
-msgid "username"
-msgstr "nombre de usuario"
-
-#: contrib/auth/models.py:104
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Requerido. 30 caracteres o menos. Slo caracteres alfanumricos (letras, "
-"dgitos y guiones bajos)."
-
-#: contrib/auth/models.py:105
-msgid "first name"
-msgstr "nombre"
-
-#: contrib/auth/models.py:106
-msgid "last name"
-msgstr "apellidos"
-
-#: contrib/auth/models.py:107
-msgid "e-mail address"
-msgstr "direccin de correo"
-
-#: contrib/auth/models.py:108
-msgid "password"
-msgstr "clave"
-
-#: contrib/auth/models.py:108
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the change "
-"password form."
-msgstr ""
-"Use'[algo]$[sal]$[hash hexadecimal]' o use el "
-"formulario para cambiar la contrasea."
-
-#: contrib/auth/models.py:109
-msgid "staff status"
-msgstr "es staff"
-
-#: contrib/auth/models.py:109
-msgid "Designates whether the user can log into this admin site."
-msgstr "Indica si el usuario puede entrar en este sitio de administracin."
-
-#: contrib/auth/models.py:110
-msgid "active"
-msgstr "activo"
-
-#: contrib/auth/models.py:110
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Indica si el usuario puede entrar en este sitio de administracin. Desmarque "
-"esto en lugar de borrar la cuenta."
-
-#: contrib/auth/models.py:111
-msgid "superuser status"
-msgstr "es superusuario"
-
-#: contrib/auth/models.py:111
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Indica que este usuario tiene todos los permisos sin asignrselos "
-"explcitamente."
-
-#: contrib/auth/models.py:112
-msgid "last login"
-msgstr "ltimo registro"
-
-#: contrib/auth/models.py:113
-msgid "date joined"
-msgstr "fecha de creacin"
-
-#: contrib/auth/models.py:115
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Adems de los permisos asignados manualmente, este usuario tambin tendr "
-"todos los permisos de los grupos en los que est."
-
-#: contrib/auth/models.py:116
-msgid "user permissions"
-msgstr "permisos"
-
-#: contrib/auth/models.py:120
-msgid "user"
-msgstr "usuario"
-
-#: contrib/auth/models.py:121
-msgid "users"
-msgstr "usuarios"
-
-#: contrib/auth/models.py:127
-msgid "Personal info"
-msgstr "Informacin personal"
-
-#: contrib/auth/models.py:128
-msgid "Permissions"
-msgstr "Permisos"
-
-#: contrib/auth/models.py:129
-msgid "Important dates"
-msgstr "Fechas importantes"
-
-#: contrib/auth/models.py:130
-msgid "Groups"
-msgstr "Grupos"
-
-#: contrib/auth/models.py:272
-msgid "message"
-msgstr "mensaje"
-
-#: contrib/auth/models.py:285
-msgid "AnonymousUser"
-msgstr "UsuarioAnonimo"
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Las dos contraseas no coinciden."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Ya existe un usuario con este nombre."
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Tu navegador de internet parece no tener las cookies habilitadas. Las "
-"cookies se necesitan para poder ingresar."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Esta cuenta est inactiva."
-
-#: contrib/auth/forms.py:84
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Esta direccin de correo electrnico no tiene una cuenta de usuario "
-"asociada. Est seguro de que se ha registrado?"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr ""
-"Las contraseas introducidas en los campos 'nueva contrasea' no coinciden."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"Tu contrasea antigua es incorrecta. Por favor, vuelve a introducirla "
-"correctamente."
-
-#: contrib/localflavor/uk/forms.py:18
-msgid "Enter a postcode. A space is required between the two postcode parts."
-msgstr ""
-"Introduzca un cdigo postal. Se necesita un espacio entre las dos partes del "
-"cdigo."
+#: contrib/localflavor/au/forms.py:18
+msgid "Enter a 4 digit post code."
+msgstr "Introduzca un código postal de 4 dígitos."
#: contrib/localflavor/br/forms.py:18
msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Introduzca un cdigo postal en el formato XXXX-XXXX."
+msgstr "Introduzca un código postal en el formato XXXX-XXXX."
#: contrib/localflavor/br/forms.py:30
msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Los nmeros de telfono deben tener el formato XXX-XXX-XXXX."
+msgstr "Los números de teléfono deben tener el formato XXX-XXX-XXXX."
#: contrib/localflavor/br/forms.py:72
-#, fuzzy
msgid "This field requires only numbers."
-msgstr "Este campo slo acepta nmeros."
+msgstr "Este campo sólo acepta números."
#: contrib/localflavor/br/forms.py:74
msgid "This field requires at most 11 digits or 14 characters."
@@ -2259,34 +2159,150 @@ msgstr "Este campo necesita al menos 11 o 14 caracteres"
#: contrib/localflavor/br/forms.py:84
msgid "Invalid CPF number."
-msgstr "Nmero CPF invlido."
+msgstr "Número CPF inválido."
#: contrib/localflavor/br/forms.py:106
msgid "This field requires at least 14 digits"
-msgstr "Este campo necesita 14 dgitos como mximo"
+msgstr "Este campo necesita 14 dígitos como máximo"
#: contrib/localflavor/br/forms.py:116
-#, fuzzy
msgid "Invalid CNPJ number."
-msgstr "Nmero CNPJ invlido"
+msgstr "Número CNPJ inválido"
-#: contrib/localflavor/au/forms.py:18
-msgid "Enter a 4 digit post code."
-msgstr "Introduzca un cdigo postal de 4 dgitos."
+#: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:14
+msgid "Enter a zip code in the format XXXX."
+msgstr "Introduzca un código postal en el formato XXXX."
-#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/de/forms.py:16
-#: contrib/localflavor/fi/forms.py:14
-#, fuzzy
+#: contrib/localflavor/ch/forms.py:90
+msgid ""
+"Enter a valid Swiss identity or passport card number in X1234567<0 or "
+"1234567890 format."
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:5
+msgid "Aargau"
+msgstr "Aargau"
+
+#: contrib/localflavor/ch/ch_states.py:6
+msgid "Appenzell Innerrhoden"
+msgstr "Appenzell Innerrhoden"
+
+#: contrib/localflavor/ch/ch_states.py:7
+msgid "Appenzell Ausserrhoden"
+msgstr "Appenzell Ausserrhoden"
+
+#: contrib/localflavor/ch/ch_states.py:8
+msgid "Basel-Stadt"
+msgstr "Basel-Stadt"
+
+#: contrib/localflavor/ch/ch_states.py:9
+msgid "Basel-Land"
+msgstr "Basel-Land"
+
+#: contrib/localflavor/ch/ch_states.py:10
+msgid "Berne"
+msgstr "Berne"
+
+#: contrib/localflavor/ch/ch_states.py:11
+msgid "Fribourg"
+msgstr "Fribourg"
+
+#: contrib/localflavor/ch/ch_states.py:12
+msgid "Geneva"
+msgstr "Geneva"
+
+#: contrib/localflavor/ch/ch_states.py:13
+msgid "Glarus"
+msgstr "Glarus"
+
+#: contrib/localflavor/ch/ch_states.py:14
+msgid "Graubuenden"
+msgstr "Graubuenden"
+
+#: contrib/localflavor/ch/ch_states.py:15
+msgid "Jura"
+msgstr "Jura"
+
+#: contrib/localflavor/ch/ch_states.py:16
+msgid "Lucerne"
+msgstr "Lucerne"
+
+#: contrib/localflavor/ch/ch_states.py:17
+msgid "Neuchatel"
+msgstr "Neuchatel"
+
+#: contrib/localflavor/ch/ch_states.py:18
+msgid "Nidwalden"
+msgstr "Nidwalden"
+
+#: contrib/localflavor/ch/ch_states.py:19
+msgid "Obwalden"
+msgstr "Obwalden"
+
+#: contrib/localflavor/ch/ch_states.py:20
+msgid "Schaffhausen"
+msgstr "Schaffhausen"
+
+#: contrib/localflavor/ch/ch_states.py:21
+msgid "Schwyz"
+msgstr "Schwyz"
+
+#: contrib/localflavor/ch/ch_states.py:22
+msgid "Solothurn"
+msgstr "Solothurn"
+
+#: contrib/localflavor/ch/ch_states.py:23
+msgid "St. Gallen"
+msgstr "St. Gallen"
+
+#: contrib/localflavor/ch/ch_states.py:24
+msgid "Thurgau"
+msgstr "Thurgau"
+
+#: contrib/localflavor/ch/ch_states.py:25
+msgid "Ticino"
+msgstr "Ticino"
+
+#: contrib/localflavor/ch/ch_states.py:26
+msgid "Uri"
+msgstr "Uri"
+
+#: contrib/localflavor/ch/ch_states.py:27
+msgid "Valais"
+msgstr "Valais"
+
+#: contrib/localflavor/ch/ch_states.py:28
+msgid "Vaud"
+msgstr "Vaud"
+
+#: contrib/localflavor/ch/ch_states.py:29
+msgid "Zug"
+msgstr "Zug"
+
+#: contrib/localflavor/ch/ch_states.py:30
+msgid "Zurich"
+msgstr "Zurich"
+
+#: contrib/localflavor/cl/forms.py:32
+msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
+msgstr "Introduzca un RUT chileno válido. El formato es XX.XXX.XXXX-X."
+
+#: contrib/localflavor/cl/forms.py:37
+msgid "Enter valid a Chilean RUT"
+msgstr "Introduzca un RUT chileno válido"
+
+#: contrib/localflavor/de/forms.py:16 contrib/localflavor/fi/forms.py:14
+#: contrib/localflavor/fr/forms.py:17
msgid "Enter a zip code in the format XXXXX."
-msgstr "Introduzca un cdigo postal en el formato XXXXX."
+msgstr "Introduzca un código postal en el formato XXXXX."
-#: contrib/localflavor/us/forms.py:18
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Introduzca un cdigo postal en el formato XXXXX o XXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:51
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Introduzca un Nmero Seguro Social de EEUU vlido en el formato XXX-XX-XXXX"
+#: contrib/localflavor/de/forms.py:60
+msgid ""
+"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
+"format."
+msgstr ""
+"Introduzca un número de tarjeta de identidad de Alemania válida en el "
+"formato XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
#: contrib/localflavor/de/de_states.py:5
msgid "Baden-Wuerttemberg"
@@ -2297,9 +2313,8 @@ msgid "Bavaria"
msgstr "Bavaria"
#: contrib/localflavor/de/de_states.py:7
-#, fuzzy
msgid "Berlin"
-msgstr "Berlin"
+msgstr "Berlín"
#: contrib/localflavor/de/de_states.py:8
msgid "Brandenburg"
@@ -2353,11 +2368,25 @@ msgstr "Schleswig-Holstein"
msgid "Thuringia"
msgstr "Thuringia"
-#: contrib/localflavor/de/forms.py:60
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr "Introduzca un nmero de tarjeta de identidad de Alemania vlida en el formato XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
+#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45
+msgid "Enter a valid Finnish social security number."
+msgstr "Introduzca un número de seguro social finlandés válido."
+
+#: contrib/localflavor/it/forms.py:16
+msgid "Enter a valid zip code."
+msgstr "Introduzca un código postal válido."
+
+#: contrib/localflavor/it/forms.py:41
+msgid "Enter a valid Social Security number."
+msgstr "Introduzca un número de Seguro Social válido."
+
+#: contrib/localflavor/it/forms.py:68
+msgid "Enter a valid VAT number."
+msgstr "Introduzca un número VAT válido."
+
+#: contrib/localflavor/jp/forms.py:21
+msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
+msgstr "Introduzca un código postal en el formato XXXXX o XXXX-XXXX."
#: contrib/localflavor/jp/jp_prefectures.py:4
msgid "Hokkaido"
@@ -2547,174 +2576,43 @@ msgstr "Kagoshima"
msgid "Okinawa"
msgstr "Okinawa"
-#: contrib/localflavor/jp/forms.py:21
-#, fuzzy
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Introduzca un cdigo postal en el formato XXXXX o XXXX-XXXX."
-
-#: contrib/localflavor/it/forms.py:16
-#, fuzzy
-msgid "Enter a valid zip code."
-msgstr "Introduzca una fecha vlida."
-
-#: contrib/localflavor/it/forms.py:41
-msgid "Enter a valid Social Security number."
-msgstr "Introduzca un nmero de Seguro Social vlido."
-
-#: contrib/localflavor/it/forms.py:68
-#, fuzzy
-msgid "Enter a valid VAT number."
-msgstr "Introduzca un nmero VAT vlido."
-
-#: contrib/localflavor/no/forms.py:15 contrib/localflavor/ch/forms.py:18
-#, fuzzy
-msgid "Enter a zip code in the format XXXX."
-msgstr "Introduzca cdigo ZIP en el formato XXXX."
-
-#: contrib/localflavor/no/forms.py:36
+#: contrib/localflavor/no/forms.py:35
msgid "Enter a valid Norwegian social security number."
-msgstr "Introduzca un nmero de seguro social de Noruega vlido."
+msgstr "Introduzca un número de seguro social de Noruega válido."
-#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45
-msgid "Enter a valid Finnish social security number."
-msgstr "Introduzca un nmero de seguro social finlands vlido."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Aargau"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Basel-Stadt"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Basel-Land"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Berne"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Fribourg"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Geneva"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Graubuenden"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerne"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Solothurn"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "St. Gallen"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thurgau"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zurich"
-
-#: contrib/localflavor/ch/forms.py:90
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
+#: contrib/localflavor/uk/forms.py:18
+msgid "Enter a postcode. A space is required between the two postcode parts."
msgstr ""
+"Introduzca un código postal. Se necesita un espacio entre las dos partes del "
+"código."
-#: contrib/localflavor/is_/forms.py:16
-#, fuzzy
+#: contrib/localflavor/us/forms.py:18
+msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
+msgstr "Introduzca un código postal en el formato XXXXX o XXXX-XXXX."
+
+#: contrib/localflavor/us/forms.py:51
+msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
+msgstr ""
+"Introduzca un Número Seguro Social de EEUU válido en el formato XXX-XX-XXXX"
+
+#: contrib/localflavor/is_/forms.py:17
msgid ""
"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Introduzca un cdigo postal en el formato XXXXX o XXXX-XXXX."
-
-#: contrib/localflavor/is_/forms.py:30
-msgid "The Icelandic identification number is not valid."
msgstr ""
+"Introduzca un número de identificación de Islandia válido. El formato es "
+"XXXXXX-XXXX."
-#: contrib/localflavor/cl/forms.py:21
-msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Introduzca un RUT chileno vlido. El formato es XX.XXX.XXXX-X."
-
-#: contrib/localflavor/cl/forms.py:26
-#, fuzzy
-msgid "Enter valid a Chilean RUT"
-msgstr "Introduzca un nombre RUT chileno vlido"
+#: contrib/localflavor/is_/forms.py:31
+msgid "The Icelandic identification number is not valid."
+msgstr "El número de identificación de Islandia no es válido."
#: contrib/sessions/models.py:68
msgid "session key"
-msgstr "clave de sesin"
+msgstr "clave de sesión"
#: contrib/sessions/models.py:69
msgid "session data"
-msgstr "datos de sesin"
+msgstr "datos de sesión"
#: contrib/sessions/models.py:70
msgid "expire date"
@@ -2722,58 +2620,70 @@ msgstr "fecha de caducidad"
#: contrib/sessions/models.py:74
msgid "session"
-msgstr "sesin"
+msgstr "sesión"
#: contrib/sessions/models.py:75
msgid "sessions"
msgstr "sesiones"
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Ejemplo: '/about/contact/'. Asegrese de que pone barras al principio y al "
-"final."
+#: contrib/contenttypes/models.py:37
+msgid "python model class name"
+msgstr "nombre de módulo python"
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "ttulo"
+#: contrib/contenttypes/models.py:40
+msgid "content type"
+msgstr "tipo de contenido"
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "contenido"
+#: contrib/contenttypes/models.py:41
+msgid "content types"
+msgstr "tipos de contenido"
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "admitir comentarios"
+#: oldforms/__init__.py:404
+#, python-format
+msgid "Ensure your text is less than %s character."
+msgid_plural "Ensure your text is less than %s characters."
+msgstr[0] "Asegúrese de que su texto tiene menos de %s carácter."
+msgstr[1] "Asegúrese de que su texto tiene menos de %s caracteres."
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "nombre de plantilla"
+#: oldforms/__init__.py:409
+msgid "Line breaks are not allowed here."
+msgstr "No se permiten saltos de línea."
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Ejemplo: 'flatpages/contact_page.html'. Si no es proporcionado, el sistema "
-"usar 'flatpages/default.html'."
+#: oldforms/__init__.py:507 oldforms/__init__.py:581 oldforms/__init__.py:620
+#, python-format
+msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
+msgstr "Escoja una opción válida; '%(data)s' no está en %(choices)s."
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "debe estar registrado"
+#: oldforms/__init__.py:684
+msgid "The submitted file is empty."
+msgstr "El fichero enviado está vacío."
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Si est marcado, slo los usuarios registrados podrn ver la pgina."
+#: oldforms/__init__.py:740
+msgid "Enter a whole number between -32,768 and 32,767."
+msgstr "Introduzca un número entero entre -32,768 y 32,767."
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "pgina esttica"
+#: oldforms/__init__.py:750
+msgid "Enter a positive number."
+msgstr "Introduzca un número positivo."
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "pginas estticas"
+#: oldforms/__init__.py:760
+msgid "Enter a whole number between 0 and 32,767."
+msgstr "Introduzca un número entero entre 0 y 32,767."
+
+#: views/generic/create_update.py:43
+#, python-format
+msgid "The %(verbose_name)s was created successfully."
+msgstr "El %(verbose_name)s se ha creado correctamente."
+
+#: views/generic/create_update.py:117
+#, python-format
+msgid "The %(verbose_name)s was updated successfully."
+msgstr "Se actualizó con éxito el %(verbose_name)s."
+
+#: views/generic/create_update.py:184
+#, python-format
+msgid "The %(verbose_name)s was deleted."
+msgstr "El %(verbose_name)s ha sido eliminado."
#: utils/dates.py:6
msgid "Monday"
@@ -2785,7 +2695,7 @@ msgstr "Martes"
#: utils/dates.py:6
msgid "Wednesday"
-msgstr "Mircoles"
+msgstr "Miércoles"
#: utils/dates.py:6
msgid "Thursday"
@@ -2797,141 +2707,169 @@ msgstr "Viernes"
#: utils/dates.py:7
msgid "Saturday"
-msgstr "Sbado"
+msgstr "Sábado"
#: utils/dates.py:7
msgid "Sunday"
msgstr "Domingo"
-#: utils/dates.py:14
+#: utils/dates.py:10
+msgid "Mon"
+msgstr "Lun"
+
+#: utils/dates.py:10
+msgid "Tue"
+msgstr "Mar"
+
+#: utils/dates.py:10
+msgid "Wed"
+msgstr "Mie"
+
+#: utils/dates.py:10
+msgid "Thu"
+msgstr "Jue"
+
+#: utils/dates.py:10
+msgid "Fri"
+msgstr "Vie"
+
+#: utils/dates.py:11
+msgid "Sat"
+msgstr "Sab"
+
+#: utils/dates.py:11
+msgid "Sun"
+msgstr "Dom"
+
+#: utils/dates.py:18
msgid "January"
msgstr "Enero"
-#: utils/dates.py:14
+#: utils/dates.py:18
msgid "February"
msgstr "Febrero"
-#: utils/dates.py:14 utils/dates.py:27
+#: utils/dates.py:18 utils/dates.py:31
msgid "March"
msgstr "Marzo"
-#: utils/dates.py:14 utils/dates.py:27
+#: utils/dates.py:18 utils/dates.py:31
msgid "April"
msgstr "Abril"
-#: utils/dates.py:14 utils/dates.py:27
+#: utils/dates.py:18 utils/dates.py:31
msgid "May"
msgstr "Mayo"
-#: utils/dates.py:14 utils/dates.py:27
+#: utils/dates.py:18 utils/dates.py:31
msgid "June"
msgstr "Junio"
-#: utils/dates.py:15 utils/dates.py:27
+#: utils/dates.py:19 utils/dates.py:31
msgid "July"
msgstr "Julio"
-#: utils/dates.py:15
+#: utils/dates.py:19
msgid "August"
msgstr "Agosto"
-#: utils/dates.py:15
+#: utils/dates.py:19
msgid "September"
msgstr "Septiembre"
-#: utils/dates.py:15
+#: utils/dates.py:19
msgid "October"
msgstr "Octubre"
-#: utils/dates.py:15
+#: utils/dates.py:19
msgid "November"
msgstr "Noviembre"
-#: utils/dates.py:16
+#: utils/dates.py:20
msgid "December"
msgstr "Diciembre"
-#: utils/dates.py:19
+#: utils/dates.py:23
msgid "jan"
msgstr "ene"
-#: utils/dates.py:19
+#: utils/dates.py:23
msgid "feb"
msgstr "feb"
-#: utils/dates.py:19
+#: utils/dates.py:23
msgid "mar"
msgstr "mar"
-#: utils/dates.py:19
+#: utils/dates.py:23
msgid "apr"
msgstr "abr"
-#: utils/dates.py:19
+#: utils/dates.py:23
msgid "may"
msgstr "may"
-#: utils/dates.py:19
+#: utils/dates.py:23
msgid "jun"
msgstr "jun"
-#: utils/dates.py:20
+#: utils/dates.py:24
msgid "jul"
msgstr "jul"
-#: utils/dates.py:20
+#: utils/dates.py:24
msgid "aug"
msgstr "ago"
-#: utils/dates.py:20
+#: utils/dates.py:24
msgid "sep"
msgstr "sep"
-#: utils/dates.py:20
+#: utils/dates.py:24
msgid "oct"
msgstr "oct"
-#: utils/dates.py:20
+#: utils/dates.py:24
msgid "nov"
msgstr "nov"
-#: utils/dates.py:20
+#: utils/dates.py:24
msgid "dec"
msgstr "dic"
-#: utils/dates.py:27
+#: utils/dates.py:31
msgid "Jan."
msgstr "Ene."
-#: utils/dates.py:27
+#: utils/dates.py:31
msgid "Feb."
msgstr "Feb."
-#: utils/dates.py:28
+#: utils/dates.py:32
msgid "Aug."
msgstr "Ago."
-#: utils/dates.py:28
+#: utils/dates.py:32
msgid "Sept."
msgstr "Sept."
-#: utils/dates.py:28
+#: utils/dates.py:32
msgid "Oct."
msgstr "Oct."
-#: utils/dates.py:28
+#: utils/dates.py:32
msgid "Nov."
msgstr "Nov."
-#: utils/dates.py:28
+#: utils/dates.py:32
msgid "Dec."
msgstr "Dic."
#: utils/timesince.py:12
msgid "year"
msgid_plural "years"
-msgstr[0] "ao"
-msgstr[1] "aos"
+msgstr[0] "año"
+msgstr[1] "años"
#: utils/timesince.py:13
msgid "month"
@@ -2948,8 +2886,8 @@ msgstr[1] "semanas"
#: utils/timesince.py:15
msgid "day"
msgid_plural "days"
-msgstr[0] "da"
-msgstr[1] "das"
+msgstr[0] "día"
+msgstr[1] "días"
#: utils/timesince.py:16
msgid "hour"
@@ -2963,87 +2901,162 @@ msgid_plural "minutes"
msgstr[0] "minuto"
msgstr[1] "minutos"
-#: utils/timesince.py:40
-#, python-format
-msgid "%d milliseconds"
-msgstr ""
-
-#: utils/timesince.py:41
+#: utils/timesince.py:39
#, python-format
msgid "%(number)d %(type)s"
msgstr "%(number)d %(type)s"
-#: utils/timesince.py:47
+#: utils/timesince.py:45
#, python-format
msgid ", %(number)d %(type)s"
msgstr ", %(number)d %(type)s"
-#: utils/dateformat.py:40
+#: utils/dateformat.py:41
msgid "p.m."
msgstr "p.m"
-#: utils/dateformat.py:41
+#: utils/dateformat.py:42
msgid "a.m."
msgstr "a.m"
-#: utils/dateformat.py:46
+#: utils/dateformat.py:47
msgid "PM"
msgstr "PM"
-#: utils/dateformat.py:47
+#: utils/dateformat.py:48
msgid "AM"
msgstr "AM"
-#: utils/dateformat.py:95
+#: utils/dateformat.py:97
msgid "midnight"
msgstr "media noche"
-#: utils/dateformat.py:97
+#: utils/dateformat.py:99
msgid "noon"
-msgstr "medio da"
+msgstr "medio día"
-#: utils/translation/trans_real.py:358
+#: utils/translation/trans_real.py:391
msgid "DATE_FORMAT"
msgstr "j N Y"
-#: utils/translation/trans_real.py:359
+#: utils/translation/trans_real.py:392
msgid "DATETIME_FORMAT"
msgstr "j N Y P"
-#: utils/translation/trans_real.py:360
+#: utils/translation/trans_real.py:393
msgid "TIME_FORMAT"
msgstr "P"
-#: utils/translation/trans_real.py:376
+#: utils/translation/trans_real.py:409
msgid "YEAR_MONTH_FORMAT"
msgstr "F Y"
-#: utils/translation/trans_real.py:377
+#: utils/translation/trans_real.py:410
msgid "MONTH_DAY_FORMAT"
msgstr "j \\de F"
-#: template/defaultfilters.py:491
+#: template/defaultfilters.py:485
msgid "yes,no,maybe"
-msgstr "s,no,tal vez"
+msgstr "sí,no,tal vez"
-#: template/defaultfilters.py:520
+#: template/defaultfilters.py:514
#, python-format
msgid "%(size)d byte"
msgid_plural "%(size)d bytes"
msgstr[0] "%(size)d byte"
msgstr[1] "%(size)d bytes"
-#: template/defaultfilters.py:522
+#: template/defaultfilters.py:516
#, python-format
msgid "%.1f KB"
msgstr "%.1f KB"
-#: template/defaultfilters.py:524
+#: template/defaultfilters.py:518
#, python-format
msgid "%.1f MB"
msgstr "%.1f MB"
-#: template/defaultfilters.py:525
+#: template/defaultfilters.py:519
#, python-format
msgid "%.1f GB"
msgstr "%.1f GB"
+
+#: newforms/fields.py:116
+#, python-format
+msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
+msgstr ""
+"Asegúrese de que su texto tiene a lo más %(max)d caracteres (actualmente "
+"tiene %(length)d)."
+
+#: newforms/fields.py:118
+#, python-format
+msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
+msgstr ""
+"Asegúrese de que su texto tiene al menos %(min)d caracteres (actualmente "
+"tiene %(length)d)."
+
+#: newforms/fields.py:143 newforms/fields.py:166 newforms/fields.py:196
+#, python-format
+msgid "Ensure this value is less than or equal to %s."
+msgstr "Asegúrese de que este valor es menor o igual a %s."
+
+#: newforms/fields.py:145 newforms/fields.py:168 newforms/fields.py:198
+#, python-format
+msgid "Ensure this value is greater than or equal to %s."
+msgstr "Asegúrese de que este valor es mayor o igual a %s."
+
+#: newforms/fields.py:164 newforms/fields.py:191
+msgid "Enter a number."
+msgstr "Introduzca un número."
+
+#: newforms/fields.py:200
+#, python-format
+msgid "Ensure that there are no more than %s digits in total."
+msgstr "Asegúrese de que no hay más de %s dígitos en total."
+
+#: newforms/fields.py:202
+#, python-format
+msgid "Ensure that there are no more than %s decimal places."
+msgstr "Asegúrese de que no hay más de %s decimales."
+
+#: newforms/fields.py:204
+#, python-format
+msgid "Ensure that there are no more than %s digits before the decimal point."
+msgstr "Asegúrese de que no hay más de %s dígitos antes del punto decimal."
+
+#: newforms/fields.py:237 newforms/fields.py:560
+msgid "Enter a valid date."
+msgstr "Introduzca una fecha válida."
+
+#: newforms/fields.py:264 newforms/fields.py:562
+msgid "Enter a valid time."
+msgstr "Introduzca una hora válida."
+
+#: newforms/fields.py:300
+msgid "Enter a valid date/time."
+msgstr "Introduzca una fecha/hora válida."
+
+#: newforms/fields.py:313
+msgid "Enter a valid value."
+msgstr "Introduzca un valor correcto."
+
+#: newforms/fields.py:353 newforms/fields.py:375
+msgid "Enter a valid URL."
+msgstr "Introduzca una URL válida."
+
+#: newforms/fields.py:377
+msgid "This URL appears to be a broken link."
+msgstr "La URL parece ser un enlace roto."
+
+#: newforms/fields.py:428 newforms/models.py:174
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr "Escoja una opción válida. Esa opción no está entre las aceptadas."
+
+#: newforms/fields.py:444 newforms/fields.py:520 newforms/models.py:191
+msgid "Enter a list of values."
+msgstr "Introduzca una lista de valores."
+
+#: newforms/fields.py:450 newforms/models.py:197
+#, 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."
diff --git a/django/conf/locale/es/LC_MESSAGES/djangojs.mo b/django/conf/locale/es/LC_MESSAGES/djangojs.mo
index 701443cace..6d098c5041 100644
Binary files a/django/conf/locale/es/LC_MESSAGES/djangojs.mo and b/django/conf/locale/es/LC_MESSAGES/djangojs.mo differ
diff --git a/django/conf/locale/es/LC_MESSAGES/djangojs.po b/django/conf/locale/es/LC_MESSAGES/djangojs.po
index 99856cec36..d193cf660e 100644
--- a/django/conf/locale/es/LC_MESSAGES/djangojs.po
+++ b/django/conf/locale/es/LC_MESSAGES/djangojs.po
@@ -1,26 +1,41 @@
# Spanish translation for the django-admin JS files.
# Copyright (C)
# This file is distributed under the same license as the PACKAGE package.
-# Jorge Gajon To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\"). Para instalar bookmarklets, arrastre el enlace a su barra\n"
-"de favoritos, o pulse con el botn derecho el enlace y adalo a sus "
-"favoritos.\n"
-"Ahora puede seleccionar el bookmarklet desde cualquier pgina en el sitio.\n"
-"Tenga en cuenta que algunos de estos bookmarklets precisan que est viendo\n"
-"el sitio desde un equipo sealado como \"interno\" (hable\n"
-"con su administrador de sistemas si no est seguro de si el suyo lo es)."
-"p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Documentacin de esta pgina"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Le lleva desde cualquier pgina a la documentacin de la vista que la genera."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Mostrar ID de objeto"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Muestra el tipo de contenido e ID unvoco de las pginas que representan un "
-"nico objeto."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Editar este objeto (ventana actual)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Le lleva a la pgina de administracin de pginas que representan un nico "
-"objeto."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Editar este objeto (nueva ventana)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Como antes, pero abre la pgina de administracin en una nueva ventana."
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "nombre de dominio"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "nombre para visualizar"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "sitio"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "sitios"
-
-#: contrib/sessions/models.py:68
-msgid "session key"
-msgstr "clave de sesin"
-
-#: contrib/sessions/models.py:69
-msgid "session data"
-msgstr "datos de sesin"
-
-#: contrib/sessions/models.py:70
-msgid "expire date"
-msgstr "fecha de caducidad"
-
-#: contrib/sessions/models.py:74
-msgid "session"
-msgstr "sesin"
-
-#: contrib/sessions/models.py:75
-msgid "sessions"
-msgstr "sesiones"
-
-#: contrib/contenttypes/models.py:36
-msgid "python model class name"
-msgstr "nombre de la clase python del modelo"
-
-#: contrib/contenttypes/models.py:39
-msgid "content type"
-msgstr "tipo de contenido"
-
-#: contrib/contenttypes/models.py:40
-msgid "content types"
-msgstr "tipos de contenido"
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Ejemplo: '/about/contact/'. Asegrese de que pone barras al principio y al "
-"final."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "ttulo"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "contenido"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "activar comentarios"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "nombre de plantilla"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Ejemplo: 'flatpages/contact_page.html'. Si no lo proporciona, el sistema "
-"usar 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "debe estar registrado"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Si est marcado, slo los usuarios registrados podrn ver la pgina."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "pgina esttica"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "pginas estticas"
-
-#: contrib/localflavor/no/forms.py:15 contrib/localflavor/ch/forms.py:18
-msgid "Enter a zip code in the format XXXX."
-msgstr "Introduzca un zip code en formato XXX."
-
-#: contrib/localflavor/no/forms.py:36
-msgid "Enter a valid Norwegian social security number."
-msgstr "Introduzca un nmero de seguridad social Noruego vlido."
-
-#: contrib/localflavor/us/forms.py:18
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Introduzca un zip code en el formato XXXXX o XXXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:51
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Introduzca un Nmero de Seguridad Social en formato XXX-XX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr ""
-
-#: contrib/localflavor/jp/forms.py:21
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Introduzca un cdigo postal en formato XXXXXX o XXX-XXXX."
-
-#: contrib/localflavor/ch/forms.py:90
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"Introduzca un nmero vlido de tarjeta de identidad o pasaporte Suizos en "
-"formato X1234567<0 o 1234567890."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/fi/forms.py:14 contrib/localflavor/de/forms.py:16
-#: contrib/localflavor/fr/forms.py:17
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Introduzca un zip code en formato XXXXX."
-
-#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45
-msgid "Enter a valid Finnish social security number."
-msgstr "Introduzca un nmero de seguridad social finlands vlido."
-
-#: contrib/localflavor/au/forms.py:18
-msgid "Enter a 4 digit post code."
-msgstr "Introduzca un post code de 4 dgitos."
-
-#: contrib/localflavor/is_/forms.py:16
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-"Introduzca un nmero de identificacin islands vlido. El formato es XXXXXX-"
-"XXXX."
-
-#: contrib/localflavor/is_/forms.py:30
-msgid "The Icelandic identification number is not valid."
-msgstr "El nmero de identificacin islands no es vlido."
-
-#: contrib/localflavor/uk/forms.py:18
-msgid "Enter a postcode. A space is required between the two postcode parts."
-msgstr ""
-"Introduzca un postcode. Se requiere un espacio entre las dos secciones del "
-"mismo."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:60
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-"Introduzca un nmero de tarjeta de identidad alemn vlido en formato "
-"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
-
-#: contrib/localflavor/br/forms.py:18
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Introduzca un zip code en formato XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Los nmeros telefnicos deben respetar el formato XX-XXXX-XXXX."
-
-#: contrib/localflavor/br/forms.py:72
-msgid "This field requires only numbers."
-msgstr "Este campo permite slo valores numricos."
-
-#: contrib/localflavor/br/forms.py:74
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Este campo requiere como mximo 11 dgitos o 14 caracteres."
-
-#: contrib/localflavor/br/forms.py:84
-msgid "Invalid CPF number."
-msgstr "Nmero CPF invlido."
-
-#: contrib/localflavor/br/forms.py:106
-msgid "This field requires at least 14 digits"
-msgstr "Este campo requiere al menos 14 dgitos."
-
-#: contrib/localflavor/br/forms.py:116
-msgid "Invalid CNPJ number."
-msgstr "Nmero CNPJ invlido."
-
-#: contrib/localflavor/cl/forms.py:21
-msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Introduzca un RUT chileno vlido. EL formato es XX.XXX.XXX-X."
-
-#: contrib/localflavor/cl/forms.py:26
-msgid "Enter valid a Chilean RUT"
-msgstr "Introduzca un RUT chileno vlido."
-
-#: contrib/localflavor/it/forms.py:16
-msgid "Enter a valid zip code."
-msgstr "Introduzca un zip code vlido."
-
-#: contrib/localflavor/it/forms.py:41
-msgid "Enter a valid Social Security number."
-msgstr "Introduzca un nmero de Seguridad Social vlido."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Introduzca un nmero VAT vlido."
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
-msgstr "ID de objeto"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "encabezado"
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "comentario"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "calificacin 1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "calificacin 2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "calificacin 3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "calificacin 4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "calificacin 5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "calificacin 6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "calificacin 7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "calificacin 8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "es calificacin vlida"
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "fecha/hora de envo"
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
-msgstr "es pblico"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "est eliminado"
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Marque esta caja si el comentario es inapropiado. En su lugar se mostrar "
-"\"Este comentario ha sido eliminado\"."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "comentarios"
-
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
-msgstr "Objeto contenido"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Enviado por %(user)s el %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "nombre de la persona"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "direccin ip"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "aprobado por el staff"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "comentario libre"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "comentarios libres"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "puntuacin"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "fecha de la puntuacin"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "punto karma"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "puntos karma"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "puntuado %(score)d por %(user)s"
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Este comentario fue marcado por %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "fecha de la marca"
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "marca de usuario"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "marcas de usuario"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "Marca de %r"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "fecha de eliminacin"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "Eliminacin por moderador"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "eliminaciones por moderador"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Eliminacin del moderador %r"
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "Los usuarios annimos no pueden votar"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "ID de comentario no vlido"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "Ud. no puede votarse a s mismo"
-
-#: contrib/comments/views/comments.py:27
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "Se precisa esta puntuacin porque ha introducido al menos otra ms."
-
-#: contrib/comments/views/comments.py:111
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Este comentario lo envi un usuario que ha enviado menos de %(count)s "
-"comentario:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Este comentario lo envi un usuario que ha enviado menos de %(count)s "
-"comentarios:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Este comentario ha sido enviado por un usuario 'semi-annimo':\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "Slo se admiten POSTs"
-
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "No se proporcion uno o ms de los siguientes campos requeridos"
-
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr ""
-"Alguien est jugando con el formulario de comentarios (violacin de "
-"seguridad)"
-
-#: contrib/comments/views/comments.py:206
-#: contrib/comments/views/comments.py:292
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"El formulario de comentarios tiene un parmetro 'target' no vlido (el ID de "
-"objeto era invlido)"
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "El formulario de comentario no proporcion 'previsualizar' ni 'enviar'"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Olvid su contrasea?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Calificaciones"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Requerido"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Opcional"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Enviar una foto"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Comentario:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Previsualizar comentario"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Su nombre:"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "th"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "st"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "nd"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "rd"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:47
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milln"
-msgstr[1] "%(value).1f millones"
-
-#: contrib/humanize/templatetags/humanize.py:50
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f millardo"
-msgstr[1] "%(value).1f millardos"
-
-#: contrib/humanize/templatetags/humanize.py:53
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f billn"
-msgstr[1] "%(value).1f billones"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "one"
-msgstr "uno"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "two"
-msgstr "dos"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "three"
-msgstr "tres"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "four"
-msgstr "cuatro"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "five"
-msgstr "cinco"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "six"
-msgstr "seis"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "seven"
-msgstr "siete"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "eight"
-msgstr "ocho"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "nine"
-msgstr "nueve"
-
-#: db/models/manipulators.py:307
+#: db/models/manipulators.py:309
#, python-format
msgid "%(object)s with this %(type)s already exists for the given %(field)s."
msgstr "Ya existe un(a) %(object)s con este/a %(type)s para %(field)s."
-#: db/models/fields/__init__.py:42
+#: db/models/manipulators.py:310 contrib/admin/views/main.py:342
+#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346
+msgid "and"
+msgstr "y"
+
+#: db/models/fields/__init__.py:47
#, python-format
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "Ya existe %(optname)s con este %(fieldname)s."
-#: db/models/fields/__init__.py:369
-msgid "This value must be an integer."
-msgstr "Este valor debe ser un nmero entero."
+#: db/models/fields/__init__.py:127 db/models/fields/__init__.py:284
+#: db/models/fields/__init__.py:681 db/models/fields/__init__.py:692
+#: oldforms/__init__.py:369 newforms/fields.py:92 newforms/fields.py:440
+#: newforms/fields.py:516 newforms/fields.py:527 newforms/models.py:187
+msgid "This field is required."
+msgstr "Este campo es obligatorio."
-#: db/models/fields/__init__.py:404
+#: db/models/fields/__init__.py:379
+msgid "This value must be an integer."
+msgstr "Este valor debe ser un número entero."
+
+#: db/models/fields/__init__.py:414
msgid "This value must be either True or False."
msgstr "Este valor debe ser True o False."
-#: db/models/fields/__init__.py:425
+#: db/models/fields/__init__.py:435
msgid "This field cannot be null."
msgstr "Este campo no puede ser nulo."
-#: db/models/fields/__init__.py:459 core/validators.py:148
+#: db/models/fields/__init__.py:469 core/validators.py:155
msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Introduzca una fecha vlida en formato AAAA-MM-DD."
+msgstr "Introduzca una fecha válida en formato AAAA-MM-DD."
-#: db/models/fields/__init__.py:528 core/validators.py:157
+#: db/models/fields/__init__.py:538 core/validators.py:164
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Introduzca una fecha/hora vlida en formato AAAA-MM-DD HH:MM."
+msgstr "Introduzca una fecha/hora válida en formato AAAA-MM-DD HH:MM."
-#: db/models/fields/__init__.py:632
+#: db/models/fields/__init__.py:598
+msgid "This value must be a decimal number."
+msgstr "Este valor debe ser un número decimal."
+
+#: db/models/fields/__init__.py:701
msgid "Enter a valid filename."
-msgstr "Introduzca un nombre de archivo vlido."
+msgstr "Introduzca un nombre de archivo válido."
-#: db/models/fields/__init__.py:753
+#: db/models/fields/__init__.py:826
msgid "This value must be either None, True or False."
msgstr "Este valor debe ser None, True o False."
-#: db/models/fields/related.py:53
+#: db/models/fields/related.py:55
#, python-format
msgid "Please enter a valid %s."
-msgstr "Por favor, introduzca un %s vlido."
+msgstr "Por favor, introduzca un %s válido."
-#: db/models/fields/related.py:642
+#: db/models/fields/related.py:641
msgid "Separate multiple IDs with commas."
-msgstr " Separe mltiples identificadores con comas."
+msgstr " Separe múltiples identificadores con comas."
-#: db/models/fields/related.py:644
+#: db/models/fields/related.py:643
msgid ""
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
"Mantenga presionada \"Control\" (\"Command\" en una Mac) para seleccionar "
-"ms de uno."
+"más de uno."
-#: db/models/fields/related.py:691
+#: db/models/fields/related.py:690
#, python-format
msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
msgid_plural ""
"Please enter valid %(self)s IDs. The values %(value)r are invalid."
msgstr[0] ""
-"Por favor, introduzca IDs de %(self)s vlidos. El valor %(value)r no es "
-"vlido."
+"Por favor, introduzca IDs de %(self)s válidos. El valor %(value)r no es "
+"válido."
msgstr[1] ""
-"Por favor, introduzca IDs de %(self)s vlidos. Los valores %(value)r no son "
-"vlidos."
+"Por favor, introduzca IDs de %(self)s válidos. Los valores %(value)r no son "
+"válidos."
-#: oldforms/__init__.py:392
+#: oldforms/__init__.py:404
#, python-format
msgid "Ensure your text is less than %s character."
msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Asegrese de que su texto tiene menos de %s caracter."
-msgstr[1] "Asegrese de que su texto tiene menos de %s caracteres."
+msgstr[0] "Asegúrese de que su texto tiene menos de %s caracter."
+msgstr[1] "Asegúrese de que su texto tiene menos de %s caracteres."
-#: oldforms/__init__.py:397
+#: oldforms/__init__.py:409
msgid "Line breaks are not allowed here."
-msgstr "No se permiten saltos de lnea."
+msgstr "No se permiten saltos de línea."
-#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610
+#: oldforms/__init__.py:507 oldforms/__init__.py:581 oldforms/__init__.py:620
#, python-format
msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Seleccione una opcin vlida; '%(data)s' no est en %(choices)s."
+msgstr "Seleccione una opción válida; '%(data)s' no está en %(choices)s."
-#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445
+#: oldforms/__init__.py:587 contrib/admin/filterspecs.py:152
+#: newforms/widgets.py:181
+msgid "Unknown"
+msgstr "Desconocido"
+
+#: oldforms/__init__.py:587 contrib/admin/filterspecs.py:145
+#: newforms/widgets.py:181
+msgid "Yes"
+msgstr "Sí"
+
+#: oldforms/__init__.py:587 contrib/admin/filterspecs.py:145
+#: newforms/widgets.py:181
+msgid "No"
+msgstr "No"
+
+#: oldforms/__init__.py:682 core/validators.py:181 core/validators.py:461
msgid "No file was submitted. Check the encoding type on the form."
msgstr ""
-"No se envi un archivo. Verifique el tipo de codificacin en el formulario."
+"No se envió un archivo. Verifique el tipo de codificación en el formulario."
-#: oldforms/__init__.py:674
+#: oldforms/__init__.py:684
msgid "The submitted file is empty."
-msgstr "El archivo enviado est vaco."
-
-#: oldforms/__init__.py:730
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Introduzca un nmero entero entre -32.768 y 32.767."
+msgstr "El archivo enviado está vacío."
#: oldforms/__init__.py:740
-msgid "Enter a positive number."
-msgstr "Introduzca un nmero positivo."
+msgid "Enter a whole number between -32,768 and 32,767."
+msgstr "Introduzca un número entero entre -32.768 y 32.767."
#: oldforms/__init__.py:750
+msgid "Enter a positive number."
+msgstr "Introduzca un número positivo."
+
+#: oldforms/__init__.py:760
msgid "Enter a whole number between 0 and 32,767."
-msgstr "Introduzca un nmero entero entre 0 y 32.767."
+msgstr "Introduzca un número entero entre 0 y 32.767."
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "Se cre con xito %(verbose_name)s."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "Se actualiz con xito %(verbose_name)s."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "Se elimin %(verbose_name)s."
+#: conf/global_settings.py:38
+msgid "Arabic"
+msgstr "Árabe"
#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "rabe"
+msgid "Bengali"
+msgstr "Bengalí"
#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "Bengal"
+msgid "Bulgarian"
+msgstr "Búlgaro"
#: conf/global_settings.py:41
-msgid "Bulgarian"
-msgstr "Blgaro"
+msgid "Catalan"
+msgstr "Catalán"
#: conf/global_settings.py:42
-msgid "Catalan"
-msgstr "Cataln"
-
-#: conf/global_settings.py:43
msgid "Czech"
msgstr "Checo"
-#: conf/global_settings.py:44
+#: conf/global_settings.py:43
msgid "Welsh"
-msgstr "Gals"
+msgstr "Galés"
+
+#: conf/global_settings.py:44
+msgid "Danish"
+msgstr "Danés"
#: conf/global_settings.py:45
-msgid "Danish"
-msgstr "Dans"
+msgid "German"
+msgstr "Alemán"
#: conf/global_settings.py:46
-msgid "German"
-msgstr "Alemn"
-
-#: conf/global_settings.py:47
msgid "Greek"
msgstr "Griego"
-#: conf/global_settings.py:48
+#: conf/global_settings.py:47
msgid "English"
-msgstr "Ingls"
+msgstr "Inglés"
+
+#: conf/global_settings.py:48
+msgid "Spanish"
+msgstr "Español"
#: conf/global_settings.py:49
-msgid "Spanish"
-msgstr "Espaol"
+msgid "Argentinean Spanish"
+msgstr "Español Argentino"
#: conf/global_settings.py:50
-msgid "Argentinean Spanish"
-msgstr "Espaol Argentino"
+msgid "Persian"
+msgstr "Persa"
#: conf/global_settings.py:51
msgid "Finnish"
-msgstr "Finlands"
+msgstr "Finlandés"
#: conf/global_settings.py:52
msgid "French"
-msgstr "Francs"
+msgstr "Francés"
#: conf/global_settings.py:53
msgid "Galician"
@@ -2579,7 +230,7 @@ msgstr "Gallego"
#: conf/global_settings.py:54
msgid "Hungarian"
-msgstr "Hngaro"
+msgstr "Húngaro"
#: conf/global_settings.py:55
msgid "Hebrew"
@@ -2587,7 +238,7 @@ msgstr "Hebreo"
#: conf/global_settings.py:56
msgid "Icelandic"
-msgstr "Islands"
+msgstr "Islandés"
#: conf/global_settings.py:57
msgid "Italian"
@@ -2595,7 +246,7 @@ msgstr "Italiano"
#: conf/global_settings.py:58
msgid "Japanese"
-msgstr "Japons"
+msgstr "Japonés"
#: conf/global_settings.py:59
msgid "Korean"
@@ -2603,11 +254,11 @@ msgstr "Koreano"
#: conf/global_settings.py:60
msgid "Kannada"
-msgstr "Canars"
+msgstr "Canarés"
#: conf/global_settings.py:61
msgid "Latvian"
-msgstr "Letn"
+msgstr "Letón"
#: conf/global_settings.py:62
msgid "Macedonian"
@@ -2615,7 +266,7 @@ msgstr "Macedonio"
#: conf/global_settings.py:63
msgid "Dutch"
-msgstr "Holands"
+msgstr "Holandés"
#: conf/global_settings.py:64
msgid "Norwegian"
@@ -2627,11 +278,11 @@ msgstr "Polaco"
#: conf/global_settings.py:66
msgid "Portugese"
-msgstr "Portugus"
+msgstr "Portugués"
#: conf/global_settings.py:67
msgid "Brazilian"
-msgstr "Brasileo"
+msgstr "Brasileño"
#: conf/global_settings.py:68
msgid "Romanian"
@@ -2681,342 +332,2750 @@ msgstr "Chino simplificado"
msgid "Traditional Chinese"
msgstr "Chino tradicional"
-#: template/defaultfilters.py:491
-msgid "yes,no,maybe"
-msgstr "si,no,talvez"
+#: utils/dates.py:6
+msgid "Monday"
+msgstr "Lunes"
-#: template/defaultfilters.py:520
+#: utils/dates.py:6
+msgid "Tuesday"
+msgstr "Martes"
+
+#: utils/dates.py:6
+msgid "Wednesday"
+msgstr "Miércoles"
+
+#: utils/dates.py:6
+msgid "Thursday"
+msgstr "Jueves"
+
+#: utils/dates.py:6
+msgid "Friday"
+msgstr "Viernes"
+
+#: utils/dates.py:7
+msgid "Saturday"
+msgstr "Sábado"
+
+#: utils/dates.py:7
+msgid "Sunday"
+msgstr "Domingo"
+
+#: utils/dates.py:10
+msgid "Mon"
+msgstr "Lun"
+
+#: utils/dates.py:10
+msgid "Tue"
+msgstr "Mar"
+
+#: utils/dates.py:10
+msgid "Wed"
+msgstr "Mie"
+
+#: utils/dates.py:10
+msgid "Thu"
+msgstr "Jue"
+
+#: utils/dates.py:10
+msgid "Fri"
+msgstr "Vie"
+
+#: utils/dates.py:11
+msgid "Sat"
+msgstr "Sab"
+
+#: utils/dates.py:11
+msgid "Sun"
+msgstr "Dom"
+
+#: utils/dates.py:18
+msgid "January"
+msgstr "Enero"
+
+#: utils/dates.py:18
+msgid "February"
+msgstr "Febrero"
+
+#: utils/dates.py:18 utils/dates.py:31
+msgid "March"
+msgstr "Marzo"
+
+#: utils/dates.py:18 utils/dates.py:31
+msgid "April"
+msgstr "Abril"
+
+#: utils/dates.py:18 utils/dates.py:31
+msgid "May"
+msgstr "Mayo"
+
+#: utils/dates.py:18 utils/dates.py:31
+msgid "June"
+msgstr "Junio"
+
+#: utils/dates.py:19 utils/dates.py:31
+msgid "July"
+msgstr "Julio"
+
+#: utils/dates.py:19
+msgid "August"
+msgstr "Agosto"
+
+#: utils/dates.py:19
+msgid "September"
+msgstr "Setiembre"
+
+#: utils/dates.py:19
+msgid "October"
+msgstr "Octubre"
+
+#: utils/dates.py:19
+msgid "November"
+msgstr "Noviembre"
+
+#: utils/dates.py:20
+msgid "December"
+msgstr "Diciembre"
+
+#: utils/dates.py:23
+msgid "jan"
+msgstr "ene"
+
+#: utils/dates.py:23
+msgid "feb"
+msgstr "feb"
+
+#: utils/dates.py:23
+msgid "mar"
+msgstr "mar"
+
+#: utils/dates.py:23
+msgid "apr"
+msgstr "abr"
+
+#: utils/dates.py:23
+msgid "may"
+msgstr "may"
+
+#: utils/dates.py:23
+msgid "jun"
+msgstr "jun"
+
+#: utils/dates.py:24
+msgid "jul"
+msgstr "jul"
+
+#: utils/dates.py:24
+msgid "aug"
+msgstr "ago"
+
+#: utils/dates.py:24
+msgid "sep"
+msgstr "set"
+
+#: utils/dates.py:24
+msgid "oct"
+msgstr "oct"
+
+#: utils/dates.py:24
+msgid "nov"
+msgstr "nov"
+
+#: utils/dates.py:24
+msgid "dec"
+msgstr "dic"
+
+#: utils/dates.py:31
+msgid "Jan."
+msgstr "Enero"
+
+#: utils/dates.py:31
+msgid "Feb."
+msgstr "Feb."
+
+#: utils/dates.py:32
+msgid "Aug."
+msgstr "Ago."
+
+#: utils/dates.py:32
+msgid "Sept."
+msgstr "Set."
+
+#: utils/dates.py:32
+msgid "Oct."
+msgstr "Oct."
+
+#: utils/dates.py:32
+msgid "Nov."
+msgstr "Nov."
+
+#: utils/dates.py:32
+msgid "Dec."
+msgstr "Dic."
+
+#: utils/timesince.py:12
+msgid "year"
+msgid_plural "years"
+msgstr[0] "año"
+msgstr[1] "años"
+
+#: utils/timesince.py:13
+msgid "month"
+msgid_plural "months"
+msgstr[0] "mes"
+msgstr[1] "meses"
+
+#: utils/timesince.py:14
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "semana"
+msgstr[1] "semanas"
+
+#: utils/timesince.py:15
+msgid "day"
+msgid_plural "days"
+msgstr[0] "día"
+msgstr[1] "días"
+
+#: utils/timesince.py:16
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "hora"
+msgstr[1] "horas"
+
+#: utils/timesince.py:17
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minuto"
+msgstr[1] "minutos"
+
+#: utils/timesince.py:39
#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
+msgid "%(number)d %(type)s"
+msgstr "%(number)d %(type)s"
+
+#: utils/timesince.py:45
+#, python-format
+msgid ", %(number)d %(type)s"
+msgstr ", %(number)d %(type)s"
+
+#: utils/dateformat.py:41
+msgid "p.m."
+msgstr "p.m."
+
+#: utils/dateformat.py:42
+msgid "a.m."
+msgstr "a.m."
+
+#: utils/dateformat.py:47
+msgid "PM"
+msgstr "PM"
+
+#: utils/dateformat.py:48
+msgid "AM"
+msgstr "AM"
+
+#: utils/dateformat.py:97
+msgid "midnight"
+msgstr "medianoche"
+
+#: utils/dateformat.py:99
+msgid "noon"
+msgstr "mediodía"
+
+#: utils/translation/trans_real.py:391
+msgid "DATE_FORMAT"
+msgstr "j N Y"
+
+#: utils/translation/trans_real.py:392
+msgid "DATETIME_FORMAT"
+msgstr "j N Y P"
+
+#: utils/translation/trans_real.py:393
+msgid "TIME_FORMAT"
+msgstr "P"
+
+#: utils/translation/trans_real.py:409
+msgid "YEAR_MONTH_FORMAT"
+msgstr "F Y"
+
+#: utils/translation/trans_real.py:410
+msgid "MONTH_DAY_FORMAT"
+msgstr "j \\de F"
+
+#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
+msgid "The two password fields didn't match."
+msgstr "Los dos campos de contraseñas no coinciden entre si."
+
+#: contrib/auth/forms.py:25
+msgid "A user with that username already exists."
+msgstr "Ya existe un usuario con ese nombre."
+
+#: contrib/auth/forms.py:53
+msgid ""
+"Your Web browser doesn't appear to have cookies enabled. Cookies are "
+"required for logging in."
+msgstr ""
+"Su navegador Web aparenta no tener cookies activas. Las cookies son un "
+"requerimiento para poder ingresar."
+
+#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10
+msgid ""
+"Please enter a correct username and password. Note that both fields are case-"
+"sensitive."
+msgstr ""
+"Por favor introduzca un nombre de usuario y una contraseña correctos. Note "
+"que ambos campos son sensibles a mayúsculas/minúsculas."
+
+#: contrib/auth/forms.py:62
+msgid "This account is inactive."
+msgstr "Esta cuenta está inactiva"
+
+#: contrib/auth/forms.py:84
+msgid ""
+"That e-mail address doesn't have an associated user account. Are you sure "
+"you've registered?"
+msgstr ""
+"Esa dirección de e-mail no está asociada a ninguna cuenta de usuario. ¿Está "
+"seguro de que ya se ha registrado?"
+
+#: contrib/auth/forms.py:117
+msgid "The two 'new password' fields didn't match."
+msgstr "Los dos campos 'nueva contraseña' no coinciden entre si."
+
+#: contrib/auth/forms.py:124
+msgid "Your old password was entered incorrectly. Please enter it again."
+msgstr ""
+"La antigua contraseña ingresada es incorrecta. Por favor ingrésela "
+"nuevamente."
+
+#: contrib/auth/models.py:51 contrib/auth/models.py:71
+msgid "name"
+msgstr "nombre"
+
+#: contrib/auth/models.py:53
+msgid "codename"
+msgstr "nombre en código"
+
+#: contrib/auth/models.py:56
+msgid "permission"
+msgstr "permiso"
+
+#: contrib/auth/models.py:57 contrib/auth/models.py:72
+msgid "permissions"
+msgstr "permisos"
+
+#: contrib/auth/models.py:75
+msgid "group"
+msgstr "grupo"
+
+#: contrib/auth/models.py:76 contrib/auth/models.py:116
+msgid "groups"
+msgstr "grupos"
+
+#: contrib/auth/models.py:106
+msgid "username"
+msgstr "nombre de usuario"
+
+#: contrib/auth/models.py:106
+msgid ""
+"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
+"digits and underscores)."
+msgstr ""
+"Requerido. Longitud máxima 30 caracteres alfanuméricos (letras, dígitos y "
+"guiones bajos)."
+
+#: contrib/auth/models.py:107
+msgid "first name"
+msgstr "nombre"
+
+#: contrib/auth/models.py:108
+msgid "last name"
+msgstr "apellido"
+
+#: contrib/auth/models.py:109
+msgid "e-mail address"
+msgstr "dirección de correo"
+
+#: contrib/auth/models.py:110
+msgid "password"
+msgstr "contraseña"
+
+#: contrib/auth/models.py:110
+msgid ""
+"Use '[algo]$[salt]$[hexdigest]' or use the change "
+"password form."
+msgstr ""
+"Use '[algo]$[salt]$[hexdigest]' o use el formulario de "
+"cambio de contraseña."
+
+#: contrib/auth/models.py:111
+msgid "staff status"
+msgstr "es staff"
+
+#: contrib/auth/models.py:111
+msgid "Designates whether the user can log into this admin site."
+msgstr "Indica si el usuario puede ingresar a este sitio de administración."
+
+#: contrib/auth/models.py:112
+msgid "active"
+msgstr "activo"
+
+#: contrib/auth/models.py:112
+msgid ""
+"Designates whether this user can log into the Django admin. Unselect this "
+"instead of deleting accounts."
+msgstr ""
+"Indica si el usuario puede ingresar al sitio de administración Django. "
+"Desactive este campo en lugar de eliminar usuarios."
+
+#: contrib/auth/models.py:113
+msgid "superuser status"
+msgstr "es superusuario"
+
+#: contrib/auth/models.py:113
+msgid ""
+"Designates that this user has all permissions without explicitly assigning "
+"them."
+msgstr ""
+"Indica que este usuario posee todos los permisos, sin que sea neceario "
+"asignarle los mismos en forma explícita."
+
+#: contrib/auth/models.py:114
+msgid "last login"
+msgstr "último ingreso"
+
+#: contrib/auth/models.py:115
+msgid "date joined"
+msgstr "fecha de creación"
+
+#: contrib/auth/models.py:117
+msgid ""
+"In addition to the permissions manually assigned, this user will also get "
+"all permissions granted to each group he/she is in."
+msgstr ""
+"Además de los permisos asignados manualmente, este usuario también poseerá "
+"todos los permisos de los grupos a los que pertenezca."
+
+#: contrib/auth/models.py:118
+msgid "user permissions"
+msgstr "permisos de usuario"
+
+#: contrib/auth/models.py:122
+msgid "user"
+msgstr "usuario"
+
+#: contrib/auth/models.py:123
+msgid "users"
+msgstr "usuarios"
+
+#: contrib/auth/models.py:129
+msgid "Personal info"
+msgstr "Información personal"
+
+#: contrib/auth/models.py:130
+msgid "Permissions"
+msgstr "Permisos"
+
+#: contrib/auth/models.py:131
+msgid "Important dates"
+msgstr "Fechas importantes"
+
+#: contrib/auth/models.py:132
+msgid "Groups"
+msgstr "Grupos"
+
+#: contrib/auth/models.py:274
+msgid "message"
+msgstr "mensaje"
+
+#: contrib/auth/views.py:41
+msgid "Logged out"
+msgstr "Sesión cerrada"
+
+#: contrib/comments/models.py:67 contrib/comments/models.py:166
+msgid "object ID"
+msgstr "ID de objeto"
+
+#: contrib/comments/models.py:68
+msgid "headline"
+msgstr "encabezado"
+
+#: contrib/comments/models.py:69 contrib/comments/models.py:90
+#: contrib/comments/models.py:167
+msgid "comment"
+msgstr "comentario"
+
+#: contrib/comments/models.py:70
+msgid "rating #1"
+msgstr "calificación 1"
+
+#: contrib/comments/models.py:71
+msgid "rating #2"
+msgstr "calificación 2"
+
+#: contrib/comments/models.py:72
+msgid "rating #3"
+msgstr "calificación 3"
+
+#: contrib/comments/models.py:73
+msgid "rating #4"
+msgstr "calificación 4"
+
+#: contrib/comments/models.py:74
+msgid "rating #5"
+msgstr "calificación 5"
+
+#: contrib/comments/models.py:75
+msgid "rating #6"
+msgstr "calificación 6"
+
+#: contrib/comments/models.py:76
+msgid "rating #7"
+msgstr "calificación 7"
+
+#: contrib/comments/models.py:77
+msgid "rating #8"
+msgstr "calificación 8"
+
+#: contrib/comments/models.py:82
+msgid "is valid rating"
+msgstr "es calificación válida"
+
+#: contrib/comments/models.py:83 contrib/comments/models.py:169
+msgid "date/time submitted"
+msgstr "fecha/hora de envío"
+
+#: contrib/comments/models.py:84 contrib/comments/models.py:170
+msgid "is public"
+msgstr "es público"
+
+#: contrib/comments/models.py:85 contrib/admin/views/doc.py:306
+msgid "IP address"
+msgstr "Dirección IP"
+
+#: contrib/comments/models.py:86
+msgid "is removed"
+msgstr "se ha eliminado"
+
+#: contrib/comments/models.py:86
+msgid ""
+"Check this box if the comment is inappropriate. A \"This comment has been "
+"removed\" message will be displayed instead."
+msgstr ""
+"Marque esta caja si el comentario es inapropiado. En su lugar se mostrará un "
+"mensaje \"Este comentario ha sido eliminado\"."
+
+#: contrib/comments/models.py:91
+msgid "comments"
+msgstr "comentarios"
+
+#: contrib/comments/models.py:131 contrib/comments/models.py:207
+msgid "Content object"
+msgstr "Objeto contenido"
+
+#: contrib/comments/models.py:159
+#, python-format
+msgid ""
+"Posted by %(user)s at %(date)s\n"
+"\n"
+"%(comment)s\n"
+"\n"
+"http://%(domain)s%(url)s"
+msgstr ""
+"Enviado por %(user)s el %(date)s\n"
+"\n"
+"%(comment)s\n"
+"\n"
+"http://%(domain)s%(url)s"
+
+#: contrib/comments/models.py:168
+msgid "person's name"
+msgstr "nombre de la persona"
+
+#: contrib/comments/models.py:171
+msgid "ip address"
+msgstr "dirección ip"
+
+#: contrib/comments/models.py:173
+msgid "approved by staff"
+msgstr "aprobado por el staff"
+
+#: contrib/comments/models.py:176
+msgid "free comment"
+msgstr "comentario libre"
+
+#: contrib/comments/models.py:177
+msgid "free comments"
+msgstr "comentarios libres"
+
+#: contrib/comments/models.py:233
+msgid "score"
+msgstr "puntuación"
+
+#: contrib/comments/models.py:234
+msgid "score date"
+msgstr "fecha de la puntuación"
+
+#: contrib/comments/models.py:237
+msgid "karma score"
+msgstr "punto karma"
+
+#: contrib/comments/models.py:238
+msgid "karma scores"
+msgstr "puntos karma"
+
+#: contrib/comments/models.py:242
+#, python-format
+msgid "%(score)d rating by %(user)s"
+msgstr "puntuado %(score)d por %(user)s"
+
+#: contrib/comments/models.py:258
+#, python-format
+msgid ""
+"This comment was flagged by %(user)s:\n"
+"\n"
+"%(text)s"
+msgstr ""
+"Este comentario fue marcado por %(user)s:\n"
+"\n"
+"%(text)s"
+
+#: contrib/comments/models.py:265
+msgid "flag date"
+msgstr "fecha de la marca"
+
+#: contrib/comments/models.py:268
+msgid "user flag"
+msgstr "marca de usuario"
+
+#: contrib/comments/models.py:269
+msgid "user flags"
+msgstr "marcas de usuario"
+
+#: contrib/comments/models.py:273
+#, python-format
+msgid "Flag by %r"
+msgstr "Marca de %r"
+
+#: contrib/comments/models.py:278
+msgid "deletion date"
+msgstr "fecha de eliminación"
+
+#: contrib/comments/models.py:280
+msgid "moderator deletion"
+msgstr "Eliminación por moderador"
+
+#: contrib/comments/models.py:281
+msgid "moderator deletions"
+msgstr "eliminaciones por moderador"
+
+#: contrib/comments/models.py:285
+#, python-format
+msgid "Moderator deletion by %r"
+msgstr "Eliminación del moderador %r"
+
+#: contrib/comments/views/karma.py:20
+msgid "Anonymous users cannot vote"
+msgstr "Los usuarios anónimos no pueden votar"
+
+#: contrib/comments/views/karma.py:24
+msgid "Invalid comment ID"
+msgstr "ID de comentario no válido"
+
+#: contrib/comments/views/karma.py:26
+msgid "No voting for yourself"
+msgstr "Ud. no puede votarse a sí mismo"
+
+#: contrib/comments/views/comments.py:28
+msgid ""
+"This rating is required because you've entered at least one other rating."
+msgstr "Se precisa esta puntuación porque ha introducido al menos otra más."
+
+#: contrib/comments/views/comments.py:112
+#, python-format
+msgid ""
+"This comment was posted by a user who has posted fewer than %(count)s "
+"comment:\n"
+"\n"
+"%(text)s"
+msgid_plural ""
+"This comment was posted by a user who has posted fewer than %(count)s "
+"comments:\n"
+"\n"
+"%(text)s"
msgstr[0] ""
+"Este comentario lo envió un usuario que ha enviado menos de %(count)s "
+"comentario:\n"
+"\n"
+"%(text)s"
msgstr[1] ""
+"Este comentario lo envió un usuario que ha enviado menos de %(count)s "
+"comentarios:\n"
+"\n"
+"%(text)s"
-#: template/defaultfilters.py:522
+#: contrib/comments/views/comments.py:117
#, python-format
-msgid "%.1f KB"
+msgid ""
+"This comment was posted by a sketchy user:\n"
+"\n"
+"%(text)s"
msgstr ""
+"Este comentario ha sido enviado por un usuario 'semi-anónimo':\n"
+"\n"
+"%(text)s"
-#: template/defaultfilters.py:524
+#: contrib/comments/views/comments.py:189
+#: contrib/comments/views/comments.py:281
+msgid "Only POSTs are allowed"
+msgstr "Sólo se admiten POSTs"
+
+#: contrib/comments/views/comments.py:193
+#: contrib/comments/views/comments.py:285
+msgid "One or more of the required fields wasn't submitted"
+msgstr "No se proporcionó uno o más de los siguientes campos requeridos"
+
+#: contrib/comments/views/comments.py:197
+#: contrib/comments/views/comments.py:287
+msgid "Somebody tampered with the comment form (security violation)"
+msgstr ""
+"Alguien está jugando con el formulario de comentarios (violación de "
+"seguridad)"
+
+#: contrib/comments/views/comments.py:207
+#: contrib/comments/views/comments.py:293
+msgid ""
+"The comment form had an invalid 'target' parameter -- the object ID was "
+"invalid"
+msgstr ""
+"El formulario de comentarios tiene un parámetro 'target' no válido (el ID de "
+"objeto era inválido)"
+
+#: contrib/comments/views/comments.py:258
+#: contrib/comments/views/comments.py:322
+msgid "The comment form didn't provide either 'preview' or 'post'"
+msgstr "El formulario de comentario no proporcionó 'previsualizar' ni 'enviar'"
+
+#: contrib/comments/templates/comments/freeform.html:4
+msgid "Your name:"
+msgstr "Su nombre:"
+
+#: contrib/comments/templates/comments/freeform.html:5
+#: contrib/comments/templates/comments/form.html:28
+msgid "Comment:"
+msgstr "Comentario:"
+
+#: contrib/comments/templates/comments/freeform.html:10
+#: contrib/comments/templates/comments/form.html:35
+msgid "Preview comment"
+msgstr "Previsualizar comentario"
+
+#: contrib/comments/templates/comments/form.html:6
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:17
+msgid "Username:"
+msgstr "Usuario:"
+
+#: contrib/comments/templates/comments/form.html:6
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/auth/user/change_password.html:9
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+#: contrib/admin/templates/admin_doc/missing_docutils.html:4
+#: contrib/admin/templates/admin_doc/model_index.html:5
+#: contrib/admin/templates/admin_doc/view_index.html:5
+#: contrib/admin/templates/admin_doc/template_tag_index.html:5
+#: contrib/admin/templates/admin_doc/index.html:4
+#: contrib/admin/templates/admin_doc/model_detail.html:3
+#: contrib/admin/templates/admin_doc/view_detail.html:4
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
+#: contrib/admin/templates/admin_doc/template_detail.html:4
+msgid "Log out"
+msgstr "Cerrar sesión"
+
+#: contrib/comments/templates/comments/form.html:8
+#: contrib/admin/templates/admin/login.html:20
+msgid "Password:"
+msgstr "Contraseña:"
+
+#: contrib/comments/templates/comments/form.html:8
+msgid "Forgotten your password?"
+msgstr "Olvidó su contraseña?"
+
+#: contrib/comments/templates/comments/form.html:12
+msgid "Ratings"
+msgstr "Calificaciones"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Required"
+msgstr "Requerido"
+
+#: contrib/comments/templates/comments/form.html:12
+#: contrib/comments/templates/comments/form.html:23
+msgid "Optional"
+msgstr "Opcional"
+
+#: contrib/comments/templates/comments/form.html:23
+msgid "Post a photo"
+msgstr "Enviar una foto"
+
+#: contrib/sites/models.py:15
+msgid "domain name"
+msgstr "nombre de dominio"
+
+#: contrib/sites/models.py:16
+msgid "display name"
+msgstr "nombre para visualizar"
+
+#: contrib/sites/models.py:20
+msgid "site"
+msgstr "sitio"
+
+#: contrib/sites/models.py:21
+msgid "sites"
+msgstr "sitios"
+
+#: contrib/admin/filterspecs.py:42
#, python-format
-msgid "%.1f MB"
+msgid ""
+" To install bookmarklets, drag the link to your bookmarks\n"
+"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
+"select the bookmarklet from any page in the site. Note that some of these\n"
+"bookmarklets require you to be viewing the site from a computer designated\n"
+"as \"internal\" (talk to your system administrator if you aren't sure if\n"
+"your computer is \"internal\"). Para instalar bookmarklets, arrastre el enlace a su barra\n"
+"de favoritos, o pulse con el botón derecho el enlace y añádalo a sus "
+"favoritos.\n"
+"Ahora puede seleccionar el bookmarklet desde cualquier página en el sitio.\n"
+"Tenga en cuenta que algunos de estos bookmarklets precisan que esté viendo\n"
+"el sitio desde un equipo señalado como \"interno\" (hable\n"
+"con su administrador de sistemas si no está seguro de si el suyo lo es)."
+"p>\n"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:19
+msgid "Documentation for this page"
+msgstr "Documentación de esta página"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:20
+msgid ""
+"Jumps you from any page to the documentation for the view that generates "
+"that page."
+msgstr ""
+"Le lleva desde cualquier página a la documentación de la vista que la genera."
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:22
+msgid "Show object ID"
+msgstr "Mostrar ID de objeto"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:23
+msgid ""
+"Shows the content-type and unique ID for pages that represent a single "
+"object."
+msgstr ""
+"Muestra el tipo de contenido e ID unívoco de las páginas que representan un "
+"único objeto."
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:25
+msgid "Edit this object (current window)"
+msgstr "Editar este objeto (ventana actual)"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:26
+msgid "Jumps to the admin page for pages that represent a single object."
+msgstr ""
+"Le lleva a la página de administración de páginas que representan un único "
+"objeto."
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:28
+msgid "Edit this object (new window)"
+msgstr "Editar este objeto (nueva ventana)"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:29
+msgid "As above, but opens the admin page in a new window."
+msgstr ""
+"Como antes, pero abre la página de administración en una nueva ventana."
+
+#: contrib/admin/templatetags/admin_list.py:254
+msgid "All dates"
+msgstr "Todas las fechas"
+
+#: contrib/localflavor/is_/forms.py:17
+msgid ""
+"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
+msgstr ""
+"Introduzca un número de identificación islandés válido. El formato es XXXXXX-"
+"XXXX."
+
+#: contrib/localflavor/is_/forms.py:31
+msgid "The Icelandic identification number is not valid."
+msgstr "El número de identificación islandés no es válido."
+
+#: contrib/localflavor/fi/forms.py:14 contrib/localflavor/de/forms.py:16
+#: contrib/localflavor/fr/forms.py:17
+msgid "Enter a zip code in the format XXXXX."
+msgstr "Introduzca un zip code en formato XXXXX."
+
+#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45
+msgid "Enter a valid Finnish social security number."
+msgstr "Introduzca un número de seguridad social finlandés válido."
+
+#: contrib/localflavor/br/forms.py:18
+msgid "Enter a zip code in the format XXXXX-XXX."
+msgstr "Introduzca un zip code en formato XXXXX-XXX."
+
+#: contrib/localflavor/br/forms.py:30
+msgid "Phone numbers must be in XX-XXXX-XXXX format."
+msgstr "Los números telefónicos deben respetar el formato XX-XXXX-XXXX."
+
+#: contrib/localflavor/br/forms.py:72
+msgid "This field requires only numbers."
+msgstr "Este campo permite sólo valores numéricos."
+
+#: contrib/localflavor/br/forms.py:74
+msgid "This field requires at most 11 digits or 14 characters."
+msgstr "Este campo requiere como máximo 11 dígitos o 14 caracteres."
+
+#: contrib/localflavor/br/forms.py:84
+msgid "Invalid CPF number."
+msgstr "Número CPF inválido."
+
+#: contrib/localflavor/br/forms.py:106
+msgid "This field requires at least 14 digits"
+msgstr "Este campo requiere al menos 14 dígitos."
+
+#: contrib/localflavor/br/forms.py:116
+msgid "Invalid CNPJ number."
+msgstr "Número CNPJ inválido."
+
+#: contrib/localflavor/it/forms.py:16
+msgid "Enter a valid zip code."
+msgstr "Introduzca un zip code válido."
+
+#: contrib/localflavor/it/forms.py:41
+msgid "Enter a valid Social Security number."
+msgstr "Introduzca un número de Seguridad Social válido."
+
+#: contrib/localflavor/it/forms.py:68
+msgid "Enter a valid VAT number."
+msgstr "Introduzca un número VAT válido."
+
+#: contrib/localflavor/de/de_states.py:5
+msgid "Baden-Wuerttemberg"
+msgstr "Baden-Wuerttemberg"
+
+#: contrib/localflavor/de/de_states.py:6
+msgid "Bavaria"
+msgstr "Bavaria"
+
+#: contrib/localflavor/de/de_states.py:7
+msgid "Berlin"
+msgstr "Berlin"
+
+#: contrib/localflavor/de/de_states.py:8
+msgid "Brandenburg"
+msgstr "Brandenburg"
+
+#: contrib/localflavor/de/de_states.py:9
+msgid "Bremen"
+msgstr "Bremen"
+
+#: contrib/localflavor/de/de_states.py:10
+msgid "Hamburg"
+msgstr "Hamburg"
+
+#: contrib/localflavor/de/de_states.py:11
+msgid "Hessen"
+msgstr "Hessen"
+
+#: contrib/localflavor/de/de_states.py:12
+msgid "Mecklenburg-Western Pomerania"
+msgstr "Mecklenburg-Western Pomerania"
+
+#: contrib/localflavor/de/de_states.py:13
+msgid "Lower Saxony"
+msgstr "Lower Saxony"
+
+#: contrib/localflavor/de/de_states.py:14
+msgid "North Rhine-Westphalia"
+msgstr "North Rhine-Westphalia"
+
+#: contrib/localflavor/de/de_states.py:15
+msgid "Rhineland-Palatinate"
+msgstr "Rhineland-Palatinate"
+
+#: contrib/localflavor/de/de_states.py:16
+msgid "Saarland"
+msgstr "Saarland"
+
+#: contrib/localflavor/de/de_states.py:17
+msgid "Saxony"
+msgstr "Saxony"
+
+#: contrib/localflavor/de/de_states.py:18
+msgid "Saxony-Anhalt"
+msgstr "Saxony-Anhalt"
+
+#: contrib/localflavor/de/de_states.py:19
+msgid "Schleswig-Holstein"
+msgstr "Schleswig-Holstein"
+
+#: contrib/localflavor/de/de_states.py:20
+msgid "Thuringia"
+msgstr "Thuringia"
+
+#: contrib/localflavor/de/forms.py:60
+msgid ""
+"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
+"format."
+msgstr ""
+"Introduzca un número de tarjeta de identidad alemán válido en formato "
+"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
+
+#: contrib/localflavor/uk/forms.py:18
+msgid "Enter a postcode. A space is required between the two postcode parts."
+msgstr ""
+"Introduzca un postcode. Se requiere un espacio entre las dos secciones del "
+"mismo."
+
+#: contrib/localflavor/cl/forms.py:32
+msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
+msgstr "Introduzca un RUT chileno válido. EL formato es XX.XXX.XXX-X."
+
+#: contrib/localflavor/cl/forms.py:37
+msgid "Enter valid a Chilean RUT"
+msgstr "Introduzca un RUT chileno válido."
+
+#: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:14
+msgid "Enter a zip code in the format XXXX."
+msgstr "Introduzca un zip code en formato XXX."
+
+#: contrib/localflavor/ch/forms.py:90
+msgid ""
+"Enter a valid Swiss identity or passport card number in X1234567<0 or "
+"1234567890 format."
+msgstr ""
+"Introduzca un número válido de tarjeta de identidad o pasaporte Suizos en "
+"formato X1234567<0 o 1234567890."
+
+#: contrib/localflavor/ch/ch_states.py:5
+msgid "Aargau"
+msgstr "Aargau"
+
+#: contrib/localflavor/ch/ch_states.py:6
+msgid "Appenzell Innerrhoden"
+msgstr "Appenzell Innerrhoden"
+
+#: contrib/localflavor/ch/ch_states.py:7
+msgid "Appenzell Ausserrhoden"
+msgstr "Appenzell Ausserrhoden"
+
+#: contrib/localflavor/ch/ch_states.py:8
+msgid "Basel-Stadt"
+msgstr "Basel-Stadt"
+
+#: contrib/localflavor/ch/ch_states.py:9
+msgid "Basel-Land"
+msgstr "Basel-Land"
+
+#: contrib/localflavor/ch/ch_states.py:10
+msgid "Berne"
+msgstr "Berne"
+
+#: contrib/localflavor/ch/ch_states.py:11
+msgid "Fribourg"
+msgstr "Fribourg"
+
+#: contrib/localflavor/ch/ch_states.py:12
+msgid "Geneva"
+msgstr "Geneva"
+
+#: contrib/localflavor/ch/ch_states.py:13
+msgid "Glarus"
+msgstr "Glarus"
+
+#: contrib/localflavor/ch/ch_states.py:14
+msgid "Graubuenden"
+msgstr "Graubuenden"
+
+#: contrib/localflavor/ch/ch_states.py:15
+msgid "Jura"
+msgstr "Jura"
+
+#: contrib/localflavor/ch/ch_states.py:16
+msgid "Lucerne"
+msgstr "Lucerne"
+
+#: contrib/localflavor/ch/ch_states.py:17
+msgid "Neuchatel"
+msgstr "Neuchatel"
+
+#: contrib/localflavor/ch/ch_states.py:18
+msgid "Nidwalden"
+msgstr "Nidwalden"
+
+#: contrib/localflavor/ch/ch_states.py:19
+msgid "Obwalden"
+msgstr "Obwalden"
+
+#: contrib/localflavor/ch/ch_states.py:20
+msgid "Schaffhausen"
+msgstr "Schaffhausen"
+
+#: contrib/localflavor/ch/ch_states.py:21
+msgid "Schwyz"
+msgstr "Schwyz"
+
+#: contrib/localflavor/ch/ch_states.py:22
+msgid "Solothurn"
+msgstr "Solothurn"
+
+#: contrib/localflavor/ch/ch_states.py:23
+msgid "St. Gallen"
+msgstr "St. Gallen"
+
+#: contrib/localflavor/ch/ch_states.py:24
+msgid "Thurgau"
+msgstr "Thurgau"
+
+#: contrib/localflavor/ch/ch_states.py:25
+msgid "Ticino"
+msgstr "Ticino"
+
+#: contrib/localflavor/ch/ch_states.py:26
+msgid "Uri"
+msgstr "Uri"
+
+#: contrib/localflavor/ch/ch_states.py:27
+msgid "Valais"
+msgstr "Valais"
+
+#: contrib/localflavor/ch/ch_states.py:28
+msgid "Vaud"
+msgstr "Vaud"
+
+#: contrib/localflavor/ch/ch_states.py:29
+msgid "Zug"
+msgstr "Zug"
+
+#: contrib/localflavor/ch/ch_states.py:30
+msgid "Zurich"
+msgstr "Zurich"
+
+#: contrib/localflavor/us/forms.py:18
+msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
+msgstr "Introduzca un zip code en el formato XXXXX o XXXXX-XXXX."
+
+#: contrib/localflavor/us/forms.py:51
+msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
+msgstr "Introduzca un Número de Seguridad Social en formato XXX-XX-XXXX."
+
+#: contrib/localflavor/au/forms.py:18
+msgid "Enter a 4 digit post code."
+msgstr "Introduzca un post code de 4 dígitos."
+
+#: contrib/localflavor/jp/jp_prefectures.py:4
+msgid "Hokkaido"
+msgstr "Hokkaido"
+
+#: contrib/localflavor/jp/jp_prefectures.py:5
+msgid "Aomori"
+msgstr "Aomori"
+
+#: contrib/localflavor/jp/jp_prefectures.py:6
+msgid "Iwate"
+msgstr "Iwate"
+
+#: contrib/localflavor/jp/jp_prefectures.py:7
+msgid "Miyagi"
+msgstr "Miyagi"
+
+#: contrib/localflavor/jp/jp_prefectures.py:8
+msgid "Akita"
+msgstr "Akita"
+
+#: contrib/localflavor/jp/jp_prefectures.py:9
+msgid "Yamagata"
+msgstr "Yamagata"
+
+#: contrib/localflavor/jp/jp_prefectures.py:10
+msgid "Fukushima"
+msgstr "Fukushima"
+
+#: contrib/localflavor/jp/jp_prefectures.py:11
+msgid "Ibaraki"
+msgstr "Ibaraki"
+
+#: contrib/localflavor/jp/jp_prefectures.py:12
+msgid "Tochigi"
+msgstr "Tochigi"
+
+#: contrib/localflavor/jp/jp_prefectures.py:13
+msgid "Gunma"
+msgstr "Gunma"
+
+#: contrib/localflavor/jp/jp_prefectures.py:14
+msgid "Saitama"
+msgstr "Saitama"
+
+#: contrib/localflavor/jp/jp_prefectures.py:15
+msgid "Chiba"
+msgstr "Chiba"
+
+#: contrib/localflavor/jp/jp_prefectures.py:16
+msgid "Tokyo"
+msgstr "Tokyo"
+
+#: contrib/localflavor/jp/jp_prefectures.py:17
+msgid "Kanagawa"
+msgstr "Kanagawa"
+
+#: contrib/localflavor/jp/jp_prefectures.py:18
+msgid "Yamanashi"
+msgstr "Yamanashi"
+
+#: contrib/localflavor/jp/jp_prefectures.py:19
+msgid "Nagano"
+msgstr "Nagano"
+
+#: contrib/localflavor/jp/jp_prefectures.py:20
+msgid "Niigata"
+msgstr "Niigata"
+
+#: contrib/localflavor/jp/jp_prefectures.py:21
+msgid "Toyama"
+msgstr "Toyama"
+
+#: contrib/localflavor/jp/jp_prefectures.py:22
+msgid "Ishikawa"
+msgstr "Ishikawa"
+
+#: contrib/localflavor/jp/jp_prefectures.py:23
+msgid "Fukui"
+msgstr "Fukui"
+
+#: contrib/localflavor/jp/jp_prefectures.py:24
+msgid "Gifu"
+msgstr "Gifu"
+
+#: contrib/localflavor/jp/jp_prefectures.py:25
+msgid "Shizuoka"
+msgstr "Shizuoka"
+
+#: contrib/localflavor/jp/jp_prefectures.py:26
+msgid "Aichi"
+msgstr "Aichi"
+
+#: contrib/localflavor/jp/jp_prefectures.py:27
+msgid "Mie"
+msgstr "Mie"
+
+#: contrib/localflavor/jp/jp_prefectures.py:28
+msgid "Shiga"
+msgstr "Shiga"
+
+#: contrib/localflavor/jp/jp_prefectures.py:29
+msgid "Kyoto"
+msgstr "Kyoto"
+
+#: contrib/localflavor/jp/jp_prefectures.py:30
+msgid "Osaka"
+msgstr "Osaka"
+
+#: contrib/localflavor/jp/jp_prefectures.py:31
+msgid "Hyogo"
+msgstr "Hyogo"
+
+#: contrib/localflavor/jp/jp_prefectures.py:32
+msgid "Nara"
+msgstr "Nara"
+
+#: contrib/localflavor/jp/jp_prefectures.py:33
+msgid "Wakayama"
+msgstr "Wakayama"
+
+#: contrib/localflavor/jp/jp_prefectures.py:34
+msgid "Tottori"
+msgstr "Tottori"
+
+#: contrib/localflavor/jp/jp_prefectures.py:35
+msgid "Shimane"
+msgstr "Shimane"
+
+#: contrib/localflavor/jp/jp_prefectures.py:36
+msgid "Okayama"
+msgstr "Okayama"
+
+#: contrib/localflavor/jp/jp_prefectures.py:37
+msgid "Hiroshima"
+msgstr "Hiroshima"
+
+#: contrib/localflavor/jp/jp_prefectures.py:38
+msgid "Yamaguchi"
+msgstr "Yamaguchi"
+
+#: contrib/localflavor/jp/jp_prefectures.py:39
+msgid "Tokushima"
+msgstr "Tokushima"
+
+#: contrib/localflavor/jp/jp_prefectures.py:40
+msgid "Kagawa"
+msgstr "Kagawa"
+
+#: contrib/localflavor/jp/jp_prefectures.py:41
+msgid "Ehime"
+msgstr "Ehime"
+
+#: contrib/localflavor/jp/jp_prefectures.py:42
+msgid "Kochi"
+msgstr "Kochi"
+
+#: contrib/localflavor/jp/jp_prefectures.py:43
+msgid "Fukuoka"
+msgstr "Fukuoka"
+
+#: contrib/localflavor/jp/jp_prefectures.py:44
+msgid "Saga"
+msgstr "Saga"
+
+#: contrib/localflavor/jp/jp_prefectures.py:45
+msgid "Nagasaki"
+msgstr "Nagasaki"
+
+#: contrib/localflavor/jp/jp_prefectures.py:46
+msgid "Kumamoto"
+msgstr "Kumamoto"
+
+#: contrib/localflavor/jp/jp_prefectures.py:47
+msgid "Oita"
+msgstr "Oita"
+
+#: contrib/localflavor/jp/jp_prefectures.py:48
+msgid "Miyazaki"
+msgstr "Miyazaki"
+
+#: contrib/localflavor/jp/jp_prefectures.py:49
+msgid "Kagoshima"
+msgstr "Kagoshima"
+
+#: contrib/localflavor/jp/jp_prefectures.py:50
+msgid "Okinawa"
+msgstr "Okinawa"
+
+#: contrib/localflavor/jp/forms.py:21
+msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
+msgstr "Introduzca un código postal en formato XXXXXX o XXX-XXXX."
+
+#: contrib/localflavor/no/forms.py:35
+msgid "Enter a valid Norwegian social security number."
+msgstr "Introduzca un número de seguridad social Noruego válido."
+
+#: contrib/contenttypes/models.py:37
+msgid "python model class name"
+msgstr "nombre de la clase python del modelo"
+
+#: contrib/contenttypes/models.py:40
+msgid "content type"
+msgstr "tipo de contenido"
+
+#: contrib/contenttypes/models.py:41
+msgid "content types"
+msgstr "tipos de contenido"
+
+#: contrib/flatpages/models.py:8
+msgid ""
+"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
+msgstr ""
+"Ejemplo: '/about/contact/'. Asegúrese de usar barras '/' al principio y al "
+"final."
+
+#: contrib/flatpages/models.py:9
+msgid "title"
+msgstr "título"
+
+#: contrib/flatpages/models.py:10
+msgid "content"
+msgstr "contenido"
+
+#: contrib/flatpages/models.py:11
+msgid "enable comments"
+msgstr "activar comentarios"
+
+#: contrib/flatpages/models.py:12
+msgid "template name"
+msgstr "nombre de plantilla"
+
+#: contrib/flatpages/models.py:13
+msgid ""
+"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
+"will use 'flatpages/default.html'."
+msgstr ""
+"Ejemplo: 'flatpages/contact_page.html'. Si no lo proporciona, el sistema "
+"usará 'flatpages/default.html'."
+
+#: contrib/flatpages/models.py:14
+msgid "registration required"
+msgstr "debe estar registrado"
+
+#: contrib/flatpages/models.py:14
+msgid "If this is checked, only logged-in users will be able to view the page."
+msgstr "Si está marcado, sólo los usuarios registrados podrán ver la página."
+
+#: contrib/flatpages/models.py:18
+msgid "flat page"
+msgstr "página estática"
+
+#: contrib/flatpages/models.py:19
+msgid "flat pages"
+msgstr "páginas estáticas"
+
+#: contrib/sessions/models.py:68
+msgid "session key"
+msgstr "clave de sesión"
+
+#: contrib/sessions/models.py:69
+msgid "session data"
+msgstr "datos de sesión"
+
+#: contrib/sessions/models.py:70
+msgid "expire date"
+msgstr "fecha de caducidad"
+
+#: contrib/sessions/models.py:74
+msgid "session"
+msgstr "sesión"
+
+#: contrib/sessions/models.py:75
+msgid "sessions"
+msgstr "sesiones"
+
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "th"
+msgstr "th"
+
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "st"
+msgstr "st"
+
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "nd"
+msgstr "nd"
+
+#: contrib/humanize/templatetags/humanize.py:17
+msgid "rd"
+msgstr "rd"
+
+#: contrib/humanize/templatetags/humanize.py:47
+#, python-format
+msgid "%(value).1f million"
+msgid_plural "%(value).1f million"
+msgstr[0] "%(value).1f millón"
+msgstr[1] "%(value).1f millones"
+
+#: contrib/humanize/templatetags/humanize.py:50
+#, python-format
+msgid "%(value).1f billion"
+msgid_plural "%(value).1f billion"
+msgstr[0] "%(value).1f millardo"
+msgstr[1] "%(value).1f millardos"
+
+#: contrib/humanize/templatetags/humanize.py:53
+#, python-format
+msgid "%(value).1f trillion"
+msgid_plural "%(value).1f trillion"
+msgstr[0] "%(value).1f billón"
+msgstr[1] "%(value).1f billones"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "one"
+msgstr "uno"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "two"
+msgstr "dos"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "three"
+msgstr "tres"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "four"
+msgstr "cuatro"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "five"
+msgstr "cinco"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "six"
+msgstr "seis"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "seven"
+msgstr "siete"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "eight"
+msgstr "ocho"
+
+#: contrib/humanize/templatetags/humanize.py:68
+msgid "nine"
+msgstr "nueve"
+
+#: contrib/redirects/models.py:7
+msgid "redirect from"
+msgstr "redirigir desde"
+
+#: contrib/redirects/models.py:8
+msgid ""
+"This should be an absolute path, excluding the domain name. Example: '/"
+"events/search/'."
+msgstr ""
+"Esta ruta debería ser absoluta, excluyendo el nombre de dominio. Ejemplo: '/"
+"events/search/'."
+
+#: contrib/redirects/models.py:9
+msgid "redirect to"
+msgstr "redirigir a"
+
+#: contrib/redirects/models.py:10
+msgid ""
+"This can be either an absolute path (as above) or a full URL starting with "
+"'http://'."
+msgstr ""
+"Esto puede ser bien una ruta absoluta (como arriba) o una URL completa que "
+"empiece con 'http://'."
+
+#: contrib/redirects/models.py:13
+msgid "redirect"
+msgstr "redirección"
+
+#: contrib/redirects/models.py:14
+msgid "redirects"
+msgstr "redirecciones"
+
+#: core/validators.py:71
msgid "This value must contain only letters, numbers and underscores."
-msgstr "Este valor debe contener slo letras, nmeros y guiones bajos."
+msgstr "Este valor debe contener sólo letras, números y guiones bajos."
-#: core/validators.py:68
+#: core/validators.py:75
msgid ""
"This value must contain only letters, numbers, underscores, dashes or "
"slashes."
msgstr ""
-"Este valor debe contener slo letras, nmeros, guiones bajos, guiones o "
+"Este valor debe contener sólo letras, números, guiones bajos, guiones o "
"barras (/)"
-#: core/validators.py:72
+#: core/validators.py:79
msgid "This value must contain only letters, numbers, underscores or hyphens."
msgstr ""
-"Este valor debe contener slo letras, nmeros, guiones bajos o guiones."
+"Este valor debe contener sólo letras, números, guiones bajos o guiones."
-#: core/validators.py:76
+#: core/validators.py:83
msgid "Uppercase letters are not allowed here."
-msgstr "No se admiten letras maysculas."
-
-#: core/validators.py:80
-msgid "Lowercase letters are not allowed here."
-msgstr "No se admiten letras minsculas."
+msgstr "No se admiten letras mayúsculas."
#: core/validators.py:87
+msgid "Lowercase letters are not allowed here."
+msgstr "No se admiten letras minúsculas."
+
+#: core/validators.py:94
msgid "Enter only digits separated by commas."
-msgstr "Introduzca slo dgitos separados por comas."
+msgstr "Introduzca sólo dígitos separados por comas."
-#: core/validators.py:99
+#: core/validators.py:106
msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Introduzca direcciones de correo vlidas separadas por comas."
+msgstr "Introduzca direcciones de correo válidas separadas por comas."
-#: core/validators.py:103
+#: core/validators.py:110
msgid "Please enter a valid IP address."
-msgstr "Por favor introduzca una direccin IP vlida."
+msgstr "Por favor introduzca una dirección IP válida."
-#: core/validators.py:107
+#: core/validators.py:114
msgid "Empty values are not allowed here."
-msgstr "No se admiten valores vacos."
+msgstr "No se admiten valores vacíos."
-#: core/validators.py:111
+#: core/validators.py:118
msgid "Non-numeric characters aren't allowed here."
-msgstr "No se admiten caracteres no numricos."
+msgstr "No se admiten caracteres no numéricos."
-#: core/validators.py:115
+#: core/validators.py:122
msgid "This value can't be comprised solely of digits."
-msgstr "Este valor no puede estar formado slo por dgitos."
+msgstr "Este valor no puede estar formado sólo por dígitos."
-#: core/validators.py:124
+#: core/validators.py:127 newforms/fields.py:141
+msgid "Enter a whole number."
+msgstr "Introduzca un número entero."
+
+#: core/validators.py:131
msgid "Only alphabetical characters are allowed here."
-msgstr "Slo se admiten caracteres alfabticos."
+msgstr "Sólo se admiten caracteres alfabéticos."
-#: core/validators.py:139
+#: core/validators.py:146
msgid "Year must be 1900 or later."
-msgstr "El ao debe ser 1900 o posterior."
+msgstr "El año debe ser 1900 o posterior."
-#: core/validators.py:143
+#: core/validators.py:150
#, python-format
msgid "Invalid date: %s"
-msgstr "Fecha no vlida: %s"
+msgstr "Fecha no válida: %s"
-#: core/validators.py:153
+#: core/validators.py:160
msgid "Enter a valid time in HH:MM format."
-msgstr "Introduzca una hora vlida en formato HH:MM."
+msgstr "Introduzca una hora válida en formato HH:MM."
-#: core/validators.py:178
+#: core/validators.py:169 newforms/fields.py:335
+msgid "Enter a valid e-mail address."
+msgstr "Introduzca una dirección de correo electrónico válida"
+
+#: core/validators.py:185
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
-"Enve una imagen vlida. El archivo que ha enviado no era una imagen o se "
+"Envíe una imagen válida. El archivo que ha enviado no era una imagen o se "
"trataba de una imagen corrupta."
-#: core/validators.py:185
+#: core/validators.py:192
#, python-format
msgid "The URL %s does not point to a valid image."
-msgstr "La URL %s no apunta a una imagen vlida."
+msgstr "La URL %s no apunta a una imagen válida."
-#: core/validators.py:189
+#: core/validators.py:196
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
-"Los nmeros telefnicos deben respetar el formato XXX-XXX-XXXX. \"%s\" no es "
-"vlido."
+"Los números telefónicos deben respetar el formato XXX-XXX-XXXX. \"%s\" no es "
+"válido."
-#: core/validators.py:197
+#: core/validators.py:204
#, python-format
msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "La URL %s no apunta a un vdeo QuickTime vlido."
+msgstr "La URL %s no apunta a un vídeo QuickTime válido."
-#: core/validators.py:201
+#: core/validators.py:208
msgid "A valid URL is required."
-msgstr "Se precisa una URL vlida."
+msgstr "Se precisa una URL válida."
-#: core/validators.py:215
+#: core/validators.py:222
#, python-format
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
msgstr ""
-"Se precisa HTML vlido. Los errores especficos son:\n"
+"Se precisa HTML válido. Los errores específicos son:\n"
"%s"
-#: core/validators.py:222
+#: core/validators.py:229
#, python-format
msgid "Badly formed XML: %s"
msgstr "XML mal formado: %s"
-#: core/validators.py:239
+#: core/validators.py:246
#, python-format
msgid "Invalid URL: %s"
-msgstr "URL no vlida: %s"
+msgstr "URL no válida: %s"
-#: core/validators.py:244 core/validators.py:246
+#: core/validators.py:251 core/validators.py:253
#, python-format
msgid "The URL %s is a broken link."
msgstr "La URL %s es un enlace roto."
-#: core/validators.py:252
+#: core/validators.py:259
msgid "Enter a valid U.S. state abbreviation."
-msgstr "Introduzca una abreviatura vlida de estado de los EE.UU."
+msgstr "Introduzca una abreviatura válida de estado de los EE.UU."
-#: core/validators.py:266
+#: core/validators.py:273
#, python-format
msgid "Watch your mouth! The word %s is not allowed here."
msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Vigila tu boca! Aqu no admitimos la palabra %s."
-msgstr[1] "Vigila tu boca! Aqu no admitimos las palabras %s."
+msgstr[0] "¡Vigila tu boca! Aquí no admitimos la palabra %s."
+msgstr[1] "¡Vigila tu boca! Aquí no admitimos las palabras %s."
-#: core/validators.py:273
+#: core/validators.py:280
#, python-format
msgid "This field must match the '%s' field."
msgstr "Este campo debe concordar con el campo '%s'."
-#: core/validators.py:292
+#: core/validators.py:299
msgid "Please enter something for at least one field."
msgstr "Por favor, introduzca algo en al menos un campo."
-#: core/validators.py:301 core/validators.py:312
+#: core/validators.py:308 core/validators.py:319
msgid "Please enter both fields or leave them both empty."
-msgstr "Por favor, rellene ambos campos o deje ambos vacos."
+msgstr "Por favor, rellene ambos campos o deje ambos vacíos."
-#: core/validators.py:320
+#: core/validators.py:327
#, python-format
msgid "This field must be given if %(field)s is %(value)s"
msgstr "Se debe proporcionar este campo si %(field)s es %(value)s"
-#: core/validators.py:333
+#: core/validators.py:340
#, python-format
msgid "This field must be given if %(field)s is not %(value)s"
msgstr "Se debe proporcionar este campo si %(field)s no es %(value)s"
-#: core/validators.py:352
+#: core/validators.py:359
msgid "Duplicate values are not allowed."
msgstr "No se admiten valores duplicados."
-#: core/validators.py:367
+#: core/validators.py:374
#, python-format
msgid "This value must be between %(lower)s and %(upper)s."
msgstr "Este valor debe estar entre %(lower)s y %(upper)s."
-#: core/validators.py:369
+#: core/validators.py:376
#, python-format
msgid "This value must be at least %s."
msgstr "Este valor debe ser al menos %s."
-#: core/validators.py:371
+#: core/validators.py:378
#, python-format
msgid "This value must be no more than %s."
msgstr "Este valor debe ser no mayor que %s."
-#: core/validators.py:407
+#: core/validators.py:414
#, python-format
msgid "This value must be a power of %s."
msgstr "Este valor debe ser una potencia de %s."
-#: core/validators.py:418
+#: core/validators.py:424
msgid "Please enter a valid decimal number."
-msgstr "Por favor, introduzca un nmero decimal vlido."
+msgstr "Por favor, introduzca un número decimal válido."
-#: core/validators.py:422
+#: core/validators.py:431
#, python-format
msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
"Please enter a valid decimal number with at most %s total digits."
msgstr[0] ""
-"Por favor, introduzca un nmero decimal vlido con un mximo de un dgito en "
+"Por favor, introduzca un número decimal válido con un máximo de un dígito en "
"total."
msgstr[1] ""
-"Por favor, introduzca un nmero decimal vlido con un maximo de %s dgitos "
+"Por favor, introduzca un número decimal válido con un maximo de %s dígitos "
"en total."
-#: core/validators.py:425
+#: core/validators.py:434
#, python-format
msgid ""
"Please enter a valid decimal number with a whole part of at most %s digit."
msgid_plural ""
"Please enter a valid decimal number with a whole part of at most %s digits."
msgstr[0] ""
-"Por favor, introduzca un nmero decimal vlido con un dgito entero como "
-"mximo."
+"Por favor, introduzca un número decimal válido con un dígito entero como "
+"máximo."
msgstr[1] ""
-"Por favor, introduzca un nmero decimal vlido con un mximo de %s dgitos "
+"Por favor, introduzca un número decimal válido con un máximo de %s dígitos "
"enteros."
-#: core/validators.py:428
+#: core/validators.py:437
#, python-format
msgid "Please enter a valid decimal number with at most %s decimal place."
msgid_plural ""
"Please enter a valid decimal number with at most %s decimal places."
msgstr[0] ""
-"Por favor, introduzca un nmero decimal vlido con un mximo de una posicin "
+"Por favor, introduzca un número decimal válido con un máximo de una posición "
"decimal."
msgstr[1] ""
-"Por favor, introduzca un nmero decimal vlido con un mximo de %s "
+"Por favor, introduzca un número decimal válido con un máximo de %s "
"posiciones decimales."
-#: core/validators.py:438
+#: core/validators.py:445
+msgid "Please enter a valid floating point number."
+msgstr "Por favor introduzca un número de punto flotante válido."
+
+#: core/validators.py:454
#, python-format
msgid "Make sure your uploaded file is at least %s bytes big."
msgstr ""
-"Asegrese de que el archivo que enva es de un tamao mnimo de %s bytes."
+"Asegúrese de que el archivo que envía es de un tamaño mínimo de %s bytes."
-#: core/validators.py:439
+#: core/validators.py:455
#, python-format
msgid "Make sure your uploaded file is at most %s bytes big."
msgstr ""
-"Asegrese de que el archivo que enva es de un tamao mximo de %s bytes."
+"Asegúrese de que el archivo que envía es de un tamaño máximo de %s bytes."
-#: core/validators.py:456
+#: core/validators.py:472
msgid "The format for this field is wrong."
msgstr "El formato de este campo es incorrecto."
-#: core/validators.py:471
+#: core/validators.py:487
msgid "This field is invalid."
-msgstr "Este campo no es vlido."
+msgstr "Este campo no es válido."
-#: core/validators.py:507
+#: core/validators.py:523
#, python-format
msgid "Could not retrieve anything from %s."
msgstr "No se pudo obtener nada de %s."
-#: core/validators.py:510
+#: core/validators.py:526
#, python-format
msgid ""
"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
msgstr ""
-"La URL %(url)s devolvi la cabecera Content-Type '%(contenttype)s', que no "
-"es vlida."
+"La URL %(url)s devolvió la cabecera Content-Type '%(contenttype)s', que no "
+"es válida."
-#: core/validators.py:543
+#: core/validators.py:559
#, python-format
msgid ""
"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
"\"%(start)s\".)"
msgstr ""
-"Por favor, cierre la etiqueta %(tag)s de la lnea %(line)s. (La lnea "
+"Por favor, cierre la etiqueta %(tag)s de la línea %(line)s. (La línea "
"empieza con \"%(start)s\".)"
-#: core/validators.py:547
+#: core/validators.py:563
#, python-format
msgid ""
"Some text starting on line %(line)s is not allowed in that context. (Line "
"starts with \"%(start)s\".)"
msgstr ""
-"Parte del texto que comienza en la lnea %(line)s no est permitido en ese "
-"contexto. (La lnea empieza con \"%(start)s\".)"
+"Parte del texto que comienza en la línea %(line)s no está permitido en ese "
+"contexto. (La línea empieza con \"%(start)s\".)"
-#: core/validators.py:552
+#: core/validators.py:568
#, python-format
msgid ""
"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
"(start)s\".)"
msgstr ""
-"El \"%(attr)s\" de la lnea %(line)s no es un atributo vlido. (La lnea "
+"El \"%(attr)s\" de la línea %(line)s no es un atributo válido. (La línea "
"empieza con \"%(start)s\".)"
-#: core/validators.py:557
+#: core/validators.py:573
#, python-format
msgid ""
"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
"(start)s\".)"
msgstr ""
-"La \"<%(tag)s>\" de la lnea %(line)s no es una etiqueta vlida. (La lnea "
+"La \"<%(tag)s>\" de la línea %(line)s no es una etiqueta válida. (La línea "
"empieza con \"%(start)s\".)"
-#: core/validators.py:561
+#: core/validators.py:577
#, python-format
msgid ""
"A tag on line %(line)s is missing one or more required attributes. (Line "
"starts with \"%(start)s\".)"
msgstr ""
-"A una etiqueta de la lnea %(line)s le faltan uno o ms atributos "
-"requeridos. (La lnea empieza con \"%(start)s\".)"
+"A una etiqueta de la línea %(line)s le faltan uno o más atributos "
+"requeridos. (La línea empieza con \"%(start)s\".)"
-#: core/validators.py:566
+#: core/validators.py:582
#, python-format
msgid ""
"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
"starts with \"%(start)s\".)"
msgstr ""
-"El atributo \"%(attr)s\" de la lnea %(line)s tiene un valor que no es "
-"vlido. (La lnea empieza con \"%(start)s\".)"
+"El atributo \"%(attr)s\" de la línea %(line)s tiene un valor que no es "
+"válido. (La línea empieza con \"%(start)s\".)"
+
+#: newforms/fields.py:116
+#, python-format
+msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
+msgstr "Asegúrese de que este valor tenga como máximo %(max)d caracteres (tiene %(length)d)."
+
+#: newforms/fields.py:118
+#, python-format
+msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
+msgstr "Asegúrese de que este valor tenga al menos %(min)d caracteres (tiene %(length)d)."
+
+#: newforms/fields.py:143 newforms/fields.py:166 newforms/fields.py:196
+#, python-format
+msgid "Ensure this value is less than or equal to %s."
+msgstr "Asegúrese de que este valor sea menor o igual a %s."
+
+#: newforms/fields.py:145 newforms/fields.py:168 newforms/fields.py:198
+#, python-format
+msgid "Ensure this value is greater than or equal to %s."
+msgstr "Asegúrese de que este valor sea mayor o igual a %s."
+
+#: newforms/fields.py:164 newforms/fields.py:191
+msgid "Enter a number."
+msgstr "Introduzca un número."
+
+#: newforms/fields.py:200
+#, python-format
+msgid "Ensure that there are no more than %s digits in total."
+msgstr "Asegúrese de que no existan en total mas de %s dígitos."
+
+#: newforms/fields.py:202
+#, python-format
+msgid "Ensure that there are no more than %s decimal places."
+msgstr "Asegúrese de que no existan mas de %s lugares decimales."
+
+#: newforms/fields.py:204
+#, python-format
+msgid "Ensure that there are no more than %s digits before the decimal point."
+msgstr "Asegúrese de que no existan mas de %s dígitos antes del punto decimal."
+
+#: newforms/fields.py:237 newforms/fields.py:560
+msgid "Enter a valid date."
+msgstr "Introduzca una fecha válida."
+
+#: newforms/fields.py:264 newforms/fields.py:562
+msgid "Enter a valid time."
+msgstr "Introduzca una hora válida."
+
+#: newforms/fields.py:300
+msgid "Enter a valid date/time."
+msgstr "Introduzca una fecha/hora válida."
+
+#: newforms/fields.py:313
+msgid "Enter a valid value."
+msgstr "Introduzca un valor válido."
+
+#: newforms/fields.py:353 newforms/fields.py:375
+msgid "Enter a valid URL."
+msgstr "Introduzca una URL válida."
+
+#: newforms/fields.py:377
+msgid "This URL appears to be a broken link."
+msgstr "La URL parece ser un enlace roto."
+
+#: newforms/fields.py:428 newforms/models.py:174
+msgid "Select a valid choice. That choice is not one of the available choices."
+msgstr ""
+"Seleccione una opción válida. Esa opción no es una de las opciones "
+"disponibles."
+
+#: newforms/fields.py:444 newforms/fields.py:520 newforms/models.py:191
+msgid "Enter a list of values."
+msgstr "Introduzca una lista de valores."
+
+#: newforms/fields.py:450 newforms/models.py:197
+#, python-format
+msgid "Select a valid choice. %s is not one of the available choices."
+msgstr ""
+"Seleccione una opción válida. %s no es una de las opciones disponibles."
+
+#: template/defaultfilters.py:485
+msgid "yes,no,maybe"
+msgstr "si,no,talvez"
+
+#: template/defaultfilters.py:514
+#, python-format
+msgid "%(size)d byte"
+msgid_plural "%(size)d bytes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: template/defaultfilters.py:516
+#, python-format
+msgid "%.1f KB"
+msgstr "%.1f KB"
+
+#: template/defaultfilters.py:518
+#, python-format
+msgid "%.1f MB"
+msgstr "%.1f MB"
+
+#: template/defaultfilters.py:519
+#, python-format
+msgid "%.1f GB"
+msgstr "%.1f GB"
+
+#~ msgid "%d milliseconds"
+#~ msgstr "%d milisegundos"
+
+#~ msgid "AnonymousUser"
+#~ msgstr "UsuarioAnonimo"
#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
#~ msgstr "Use '[algoritmo]$[salt]$[hexdigest]'"
#~ msgid "Have you forgotten your password?"
-#~ msgstr "Ha olvidado su contrasea?"
+#~ msgstr "¿Ha olvidado su contraseña?"
#~ msgid "%(content_type_name)s"
#~ msgstr "tipos de contenido"
@@ -3033,7 +3092,7 @@ msgstr ""
#~ msgstr "Comentarios"
#~ msgid "String (up to 50)"
-#~ msgstr "Cadena (mximo 50)"
+#~ msgstr "Cadena (máximo 50)"
#~ msgid "label"
#~ msgstr "etiqueta"
diff --git a/django/conf/locale/es_AR/LC_MESSAGES/djangojs.mo b/django/conf/locale/es_AR/LC_MESSAGES/djangojs.mo
index d8e3cc6fd6..b055405fbf 100644
Binary files a/django/conf/locale/es_AR/LC_MESSAGES/djangojs.mo and b/django/conf/locale/es_AR/LC_MESSAGES/djangojs.mo differ
diff --git a/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po b/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po
index 91ecb09eed..4c81e7e3f1 100644
--- a/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po
+++ b/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po
@@ -1,17 +1,17 @@
-# Argentinean spanish translation for the django-admin JS files, based on
-# Spanish translation work by Jorge Gajon.
-# This file is distributed under the same license as the Django package.
-# Copyright (C) Ramiro Morales Pour installer des bookmarklets, faîtes glisser le lien "
-"vers\n"
+" Pour installer des signets, faîtes glisser le lien vers\n"
"votre barre de marques-pages, ou cliquez droit dessus et ajoutez-y le.\n"
-"Maintenant vous pouvez le sélectionner depuis n'importe quelle page\n"
+"Maintenant, vous pouvez le sélectionner depuis n'importe quelle page\n"
"du site. Notez que certains d'entre eux nécessitent que vous visionniez\n"
"le site depuis un ordinateur dit \"interne\" (veuillez contacter votre\n"
"administrateur système si vous n'êtes pas sûr que votre ordinateur le soit)."
@@ -1803,14 +1839,14 @@ msgstr ""
#: contrib/admin/templates/admin_doc/bookmarklets.html:22
msgid "Show object ID"
-msgstr "Afficher l'ID de l'objet"
+msgstr "Afficher l'identifiant de l'objet"
#: contrib/admin/templates/admin_doc/bookmarklets.html:23
msgid ""
"Shows the content-type and unique ID for pages that represent a single "
"object."
msgstr ""
-"Montre le content-type et l'ID unique pour les pages qui représente un objet "
+"Montre le content-type et l'identifiant unique pour les pages qui représentent un objet "
"unique."
#: contrib/admin/templates/admin_doc/bookmarklets.html:25
@@ -1831,75 +1867,75 @@ msgstr ""
"Comme ci-dessus, mais ouvre la page d'administration dans une nouvelle "
"fenêtre."
-#: contrib/contenttypes/models.py:36
+#: contrib/contenttypes/models.py:37
msgid "python model class name"
msgstr "nom du module python"
-#: contrib/contenttypes/models.py:39
+#: contrib/contenttypes/models.py:40
msgid "content type"
msgstr "type de contenu"
-#: contrib/contenttypes/models.py:40
+#: contrib/contenttypes/models.py:41
msgid "content types"
msgstr "types de contenu"
-#: contrib/auth/views.py:39
+#: contrib/auth/views.py:41
msgid "Logged out"
msgstr "Déconnecté"
-#: contrib/auth/models.py:38 contrib/auth/models.py:58
+#: contrib/auth/models.py:51 contrib/auth/models.py:71
msgid "name"
msgstr "nom"
-#: contrib/auth/models.py:40
+#: contrib/auth/models.py:53
msgid "codename"
msgstr "nom de code"
-#: contrib/auth/models.py:43
+#: contrib/auth/models.py:56
msgid "permission"
msgstr "permission"
-#: contrib/auth/models.py:44 contrib/auth/models.py:59
+#: contrib/auth/models.py:57 contrib/auth/models.py:72
msgid "permissions"
msgstr "permissions"
-#: contrib/auth/models.py:62
+#: contrib/auth/models.py:75
msgid "group"
msgstr "groupe"
-#: contrib/auth/models.py:63 contrib/auth/models.py:100
+#: contrib/auth/models.py:76 contrib/auth/models.py:113
msgid "groups"
msgstr "groupes"
-#: contrib/auth/models.py:90
+#: contrib/auth/models.py:103
msgid "username"
msgstr "nom d'utilisateur"
-#: contrib/auth/models.py:90
+#: contrib/auth/models.py:103
msgid ""
"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
"digits and underscores)."
msgstr ""
"Requis. 30 caractères maximum, alphanumériques uniquement (lettres, "
-"chiffres, et tirets bas '_')."
+"chiffres, et tirets bas _)."
-#: contrib/auth/models.py:91
+#: contrib/auth/models.py:104
msgid "first name"
msgstr "prénom"
-#: contrib/auth/models.py:92
+#: contrib/auth/models.py:105
msgid "last name"
msgstr "nom"
-#: contrib/auth/models.py:93
+#: contrib/auth/models.py:106
msgid "e-mail address"
msgstr "courriel"
-#: contrib/auth/models.py:94
+#: contrib/auth/models.py:107
msgid "password"
msgstr "mot de passe"
-#: contrib/auth/models.py:94
+#: contrib/auth/models.py:107
msgid ""
"Use '[algo]$[salt]$[hexdigest]' or use the change "
"password form."
@@ -1907,31 +1943,31 @@ msgstr ""
"Utilisez [algo]$[salt]$[hexdigest]' ou le formulaire "
"de changement de mot de passe."
-#: contrib/auth/models.py:95
+#: contrib/auth/models.py:108
msgid "staff status"
msgstr "statut équipe"
-#: contrib/auth/models.py:95
+#: contrib/auth/models.py:108
msgid "Designates whether the user can log into this admin site."
msgstr "Précise si l'utilisateur peut se connecter à ce site d'administration."
-#: contrib/auth/models.py:96
+#: contrib/auth/models.py:109
msgid "active"
msgstr "actif"
-#: contrib/auth/models.py:96
+#: contrib/auth/models.py:109
msgid ""
"Designates whether this user can log into the Django admin. Unselect this "
"instead of deleting accounts."
msgstr ""
"Précise si l'utilisateur peut se connecter à l'administration. "
-"Déselectionnezceci plutôt que supprimer le compte."
+"Déselectionnez ceci plutôt que supprimer le compte."
-#: contrib/auth/models.py:97
+#: contrib/auth/models.py:110
msgid "superuser status"
msgstr "statut super-utilisateur"
-#: contrib/auth/models.py:97
+#: contrib/auth/models.py:110
msgid ""
"Designates that this user has all permissions without explicitly assigning "
"them."
@@ -1939,15 +1975,15 @@ msgstr ""
"Précise que l'utilisateur possède toutes les permissions sans les assigner "
"explicitement."
-#: contrib/auth/models.py:98
+#: contrib/auth/models.py:111
msgid "last login"
msgstr "dernière connexion"
-#: contrib/auth/models.py:99
+#: contrib/auth/models.py:112
msgid "date joined"
msgstr "date d'inscription"
-#: contrib/auth/models.py:101
+#: contrib/auth/models.py:114
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
@@ -1956,39 +1992,35 @@ msgstr ""
"recevra aussi toutes les permissions de tous les groupes auquels il "
"appartient. "
-#: contrib/auth/models.py:102
+#: contrib/auth/models.py:115
msgid "user permissions"
msgstr "permissions de l'utilisateur"
-#: contrib/auth/models.py:106
+#: contrib/auth/models.py:119
msgid "user"
msgstr "utilisateur"
-#: contrib/auth/models.py:107
+#: contrib/auth/models.py:120
msgid "users"
msgstr "utilisateurs"
-#: contrib/auth/models.py:248
+#: contrib/auth/models.py:259
msgid "message"
msgstr "message"
-#: contrib/auth/models.py:261
-msgid "AnonymousUser"
-msgstr "Anonyme"
-
-#: contrib/auth/models.py:320
+#: contrib/auth/models.py:334
msgid "Personal info"
msgstr "Information personnelle"
-#: contrib/auth/models.py:321
+#: contrib/auth/models.py:335
msgid "Permissions"
msgstr "Permissions"
-#: contrib/auth/models.py:322
+#: contrib/auth/models.py:336
msgid "Important dates"
msgstr "Dates importantes"
-#: contrib/auth/models.py:323
+#: contrib/auth/models.py:337
msgid "Groups"
msgstr "Groupes"
@@ -2012,7 +2044,7 @@ msgstr ""
msgid "This account is inactive."
msgstr "Ce compte est inactif."
-#: contrib/auth/forms.py:85
+#: contrib/auth/forms.py:84
msgid ""
"That e-mail address doesn't have an associated user account. Are you sure "
"you've registered?"
@@ -2022,140 +2054,140 @@ msgstr ""
#: contrib/auth/forms.py:117
msgid "The two 'new password' fields didn't match."
-msgstr "Les deux nouveaux mots de passe ne correspondent pas."
+msgstr "Les deux champs \"nouveau mot de passe\" ne correspondent pas."
#: contrib/auth/forms.py:124
msgid "Your old password was entered incorrectly. Please enter it again."
msgstr "Votre ancien mot de passe est incorrect. Veuillez le rectifier."
-#: contrib/admindocs/views.py:46 contrib/admindocs/views.py:48
-#: contrib/admindocs/views.py:50
+#: contrib/admindocs/views.py:47 contrib/admindocs/views.py:49
+#: contrib/admindocs/views.py:51
msgid "tag:"
-msgstr "mot-clé :"
+msgstr "mot-clé :"
-#: contrib/admindocs/views.py:77 contrib/admindocs/views.py:79
-#: contrib/admindocs/views.py:81
+#: contrib/admindocs/views.py:78 contrib/admindocs/views.py:80
+#: contrib/admindocs/views.py:82
msgid "filter:"
-msgstr "filtre :"
+msgstr "filtre :"
-#: contrib/admindocs/views.py:135 contrib/admindocs/views.py:137
-#: contrib/admindocs/views.py:139
+#: contrib/admindocs/views.py:136 contrib/admindocs/views.py:138
+#: contrib/admindocs/views.py:140
msgid "view:"
-msgstr "vue :"
+msgstr "vue :"
-#: contrib/admindocs/views.py:164
+#: contrib/admindocs/views.py:165
#, python-format
msgid "App %r not found"
msgstr "L'application %r n'a pas été trouvée."
-#: contrib/admindocs/views.py:171
+#: contrib/admindocs/views.py:172
#, python-format
msgid "Model %(name)r not found in app %(app)r"
msgstr "Le modèle %(name)r n'a pas été trouvé dans l'application %(app)r"
-#: contrib/admindocs/views.py:183
+#: contrib/admindocs/views.py:184
#, python-format
msgid "the related `%(app)s.%(type)s` object"
-msgstr "l'objet `%(app)s.%(type)s en relation "
+msgstr "l'objet `%(app)s.%(type)s` en relation "
-#: contrib/admindocs/views.py:183 contrib/admindocs/views.py:205
-#: contrib/admindocs/views.py:219 contrib/admindocs/views.py:224
+#: contrib/admindocs/views.py:184 contrib/admindocs/views.py:206
+#: contrib/admindocs/views.py:220 contrib/admindocs/views.py:225
msgid "model:"
-msgstr "modèle :"
+msgstr "modèle :"
-#: contrib/admindocs/views.py:214
+#: contrib/admindocs/views.py:215
#, python-format
msgid "related `%(app)s.%(name)s` objects"
-msgstr "les objets `%(app)s.%(name)s en relation"
+msgstr "les objets `%(app)s.%(name)s` en relation"
-#: contrib/admindocs/views.py:219
+#: contrib/admindocs/views.py:220
#, python-format
msgid "all %s"
msgstr "tous les %s"
-#: contrib/admindocs/views.py:224
+#: contrib/admindocs/views.py:225
#, python-format
msgid "number of %s"
msgstr "nombre de %s"
-#: contrib/admindocs/views.py:229
+#: contrib/admindocs/views.py:230
#, python-format
msgid "Fields on %s objects"
msgstr "Champs sur les objets %s"
-#: contrib/admindocs/views.py:291 contrib/admindocs/views.py:301
-#: contrib/admindocs/views.py:303 contrib/admindocs/views.py:309
-#: contrib/admindocs/views.py:310 contrib/admindocs/views.py:312
+#: contrib/admindocs/views.py:292 contrib/admindocs/views.py:302
+#: contrib/admindocs/views.py:304 contrib/admindocs/views.py:310
+#: contrib/admindocs/views.py:311 contrib/admindocs/views.py:313
msgid "Integer"
msgstr "Entier"
-#: contrib/admindocs/views.py:292
+#: contrib/admindocs/views.py:293
msgid "Boolean (Either True or False)"
msgstr "Booléen (Vrai ou Faux)"
-#: contrib/admindocs/views.py:293 contrib/admindocs/views.py:311
+#: contrib/admindocs/views.py:294 contrib/admindocs/views.py:312
#, python-format
msgid "String (up to %(maxlength)s)"
msgstr "Chaîne de caractère (jusqu'à %(maxlength)s)"
-#: contrib/admindocs/views.py:294
+#: contrib/admindocs/views.py:295
msgid "Comma-separated integers"
msgstr "Des entiers séparés par une virgule"
-#: contrib/admindocs/views.py:295
+#: contrib/admindocs/views.py:296
msgid "Date (without time)"
msgstr "Date (sans l'heure)"
-#: contrib/admindocs/views.py:296
+#: contrib/admindocs/views.py:297
msgid "Date (with time)"
msgstr "Date (avec l'heure)"
-#: contrib/admindocs/views.py:297
+#: contrib/admindocs/views.py:298
msgid "E-mail address"
-msgstr "Courriel :"
+msgstr "Courriel"
-#: contrib/admindocs/views.py:298 contrib/admindocs/views.py:299
-#: contrib/admindocs/views.py:302
+#: contrib/admindocs/views.py:299 contrib/admindocs/views.py:300
+#: contrib/admindocs/views.py:303
msgid "File path"
msgstr "Chemin vers le fichier"
-#: contrib/admindocs/views.py:300
+#: contrib/admindocs/views.py:301
msgid "Decimal number"
msgstr "Nombre décimal"
-#: contrib/admindocs/views.py:306
+#: contrib/admindocs/views.py:307
msgid "Boolean (Either True, False or None)"
msgstr "Booléen (Vrai, Faux ou None)"
-#: contrib/admindocs/views.py:307
+#: contrib/admindocs/views.py:308
msgid "Relation to parent model"
msgstr "Relation au modèle parent"
-#: contrib/admindocs/views.py:308
+#: contrib/admindocs/views.py:309
msgid "Phone number"
msgstr "Numéro de téléphone"
-#: contrib/admindocs/views.py:313
+#: contrib/admindocs/views.py:314
msgid "Text"
msgstr "Texte"
-#: contrib/admindocs/views.py:314
+#: contrib/admindocs/views.py:315
msgid "Time"
msgstr "Heure"
-#: contrib/admindocs/views.py:315 contrib/flatpages/models.py:7
+#: contrib/admindocs/views.py:316 contrib/flatpages/models.py:7
msgid "URL"
msgstr "URL"
-#: contrib/admindocs/views.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr "État U.S. (deux lettres majuscules)"
-
#: contrib/admindocs/views.py:317
+msgid "U.S. state (two uppercase letters)"
+msgstr "État Américain (deux lettres majuscules)"
+
+#: contrib/admindocs/views.py:318
msgid "XML text"
msgstr "Texte XML"
-#: contrib/admindocs/views.py:343
+#: contrib/admindocs/views.py:344
#, python-format
msgid "%s does not appear to be a urlpattern object"
msgstr "%s ne semble pas être un objet urlpattern"
@@ -2170,7 +2202,7 @@ msgid "Enter a 4 digit post code."
msgstr "Entrez un code postal Australien (4 chiffres)."
#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/de/forms.py:16
-#: contrib/localflavor/it/forms.py:14 contrib/localflavor/fi/forms.py:14
+#: contrib/localflavor/fi/forms.py:14
msgid "Enter a zip code in the format XXXXX."
msgstr "Entrez un code postal (format XXXXX)."
@@ -2374,6 +2406,26 @@ msgstr "Entrez un code postal Brésilien (format XXXXX-XXX)."
msgid "Phone numbers must be in XX-XXXX-XXXX format."
msgstr "Les numéros de téléphone doivent être au format XX-XXXX-XXXX."
+#: contrib/localflavor/br/forms.py:72
+msgid "This field requires only numbers."
+msgstr "Ce champ ne doit contenir que des nombres."
+
+#: contrib/localflavor/br/forms.py:74
+msgid "This field requires at most 11 digits or 14 characters."
+msgstr "Ce champ requiert au plus 11 chiffres ou 14 caractères."
+
+#: contrib/localflavor/br/forms.py:84
+msgid "Invalid CPF number."
+msgstr "Numéro CPF invalide."
+
+#: contrib/localflavor/br/forms.py:106
+msgid "This field requires at least 14 digits"
+msgstr "Ce champ requiert au minimum 14 chiffres."
+
+#: contrib/localflavor/br/forms.py:116
+msgid "Invalid CNPJ number."
+msgstr "Numéro CNPJ invalide."
+
#: contrib/localflavor/de/de_states.py:5
msgid "Baden-Wuerttemberg"
msgstr "Bade-Wurtemberg"
@@ -2446,7 +2498,19 @@ msgstr ""
"Entrez un numéro de carte d'identité Allemand (format XXXXXXXXXXX-XXXXXXX-"
"XXXXXXX-X)."
-#: contrib/localflavor/no/forms.py:15
+#: contrib/localflavor/it/forms.py:16
+msgid "Enter a valid zip code."
+msgstr "Entrez un code postal valide."
+
+#: contrib/localflavor/it/forms.py:41
+msgid "Enter a valid Social Security number."
+msgstr "Entrez un numéro valide de Sécurité Sociale."
+
+#: contrib/localflavor/it/forms.py:68
+msgid "Enter a valid VAT number."
+msgstr "Entrez une TVA valide."
+
+#: contrib/localflavor/no/forms.py:15 contrib/localflavor/ch/forms.py:18
msgid "Enter a zip code in the format XXXX."
msgstr "Entrez un code postal Norvégien (format XXXX)."
@@ -2454,7 +2518,7 @@ msgstr "Entrez un code postal Norvégien (format XXXX)."
msgid "Enter a valid Norwegian social security number."
msgstr "Entrez un numéro de sécurité sociale Norvégien."
-#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:46
+#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45
msgid "Enter a valid Finnish social security number."
msgstr "Entrez un numéro de sécurité sociale Finlandais."
@@ -2466,13 +2530,142 @@ msgstr "Entrez un code postal Américain (format XXXXX ou XXXXX-XXXX)."
msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
msgstr "Entrez un numéro de sécurité sociale Américain (format XXX-XX-XXXX)."
+#: contrib/localflavor/ch/ch_states.py:5
+msgid "Aargau"
+msgstr "Argovie"
+
+#: contrib/localflavor/ch/ch_states.py:6
+msgid "Appenzell Innerrhoden"
+msgstr "Appenzell Rhodes-Intérieures"
+
+#: contrib/localflavor/ch/ch_states.py:7
+msgid "Appenzell Ausserrhoden"
+msgstr "Appenzell Rhodes-Extérieures"
+
+#: contrib/localflavor/ch/ch_states.py:8
+msgid "Basel-Stadt"
+msgstr "Bâle-Ville"
+
+#: contrib/localflavor/ch/ch_states.py:9
+msgid "Basel-Land"
+msgstr "Bâle-Campagne"
+
+#: contrib/localflavor/ch/ch_states.py:10
+msgid "Berne"
+msgstr "Berne"
+
+#: contrib/localflavor/ch/ch_states.py:11
+msgid "Fribourg"
+msgstr "Fribourg"
+
+#: contrib/localflavor/ch/ch_states.py:12
+msgid "Geneva"
+msgstr "Genève"
+
+#: contrib/localflavor/ch/ch_states.py:13
+msgid "Glarus"
+msgstr "Glaris"
+
+#: contrib/localflavor/ch/ch_states.py:14
+msgid "Graubuenden"
+msgstr "Grisons"
+
+#: contrib/localflavor/ch/ch_states.py:15
+msgid "Jura"
+msgstr "Jura"
+
+#: contrib/localflavor/ch/ch_states.py:16
+msgid "Lucerne"
+msgstr "Lucerne"
+
+#: contrib/localflavor/ch/ch_states.py:17
+msgid "Neuchatel"
+msgstr "Neuchâtel"
+
+#: contrib/localflavor/ch/ch_states.py:18
+msgid "Nidwalden"
+msgstr "Nidwald"
+
+#: contrib/localflavor/ch/ch_states.py:19
+msgid "Obwalden"
+msgstr "Obwald"
+
+#: contrib/localflavor/ch/ch_states.py:20
+msgid "Schaffhausen"
+msgstr "Schaffhouse"
+
+#: contrib/localflavor/ch/ch_states.py:21
+msgid "Schwyz"
+msgstr "Suisse"
+
+#: contrib/localflavor/ch/ch_states.py:22
+msgid "Solothurn"
+msgstr "Soleure"
+
+#: contrib/localflavor/ch/ch_states.py:23
+msgid "St. Gallen"
+msgstr "Saint Gall"
+
+#: contrib/localflavor/ch/ch_states.py:24
+msgid "Thurgau"
+msgstr "Thuringe"
+
+#: contrib/localflavor/ch/ch_states.py:25
+msgid "Ticino"
+msgstr "Tessin"
+
+#: contrib/localflavor/ch/ch_states.py:26
+msgid "Uri"
+msgstr "Uri"
+
+#: contrib/localflavor/ch/ch_states.py:27
+msgid "Valais"
+msgstr "Valais"
+
+#: contrib/localflavor/ch/ch_states.py:28
+msgid "Vaud"
+msgstr "Vaud"
+
+#: contrib/localflavor/ch/ch_states.py:29
+msgid "Zug"
+msgstr "Zoug"
+
+#: contrib/localflavor/ch/ch_states.py:30
+msgid "Zurich"
+msgstr "Zurich"
+
+#: contrib/localflavor/ch/forms.py:90
+msgid ""
+"Enter a valid Swiss identity or passport card number in X1234567<0 or "
+"1234567890 format."
+msgstr ""
+"Entrez un numéro de passeport ou de carte d'identité valide au format "
+"X1234567<0 ou 1234567890."
+
+#: contrib/localflavor/is_/forms.py:17
+msgid ""
+"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
+msgstr "Entrez un code postal islandais valide (format XXXXXX-XXXX)."
+
+#: contrib/localflavor/is_/forms.py:31
+msgid "The Icelandic identification number is not valid."
+msgstr "Le numéro d'identification Islandais est invalide."
+
+#: contrib/localflavor/cl/forms.py:22
+msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
+msgstr "Entrez un RUT Chilien valide (format XX.XXX.XXX-X)."
+
+#: contrib/localflavor/cl/forms.py:27
+msgid "Enter valid a Chilean RUT"
+msgstr "Entrez un RUT Chilien valide."
+
#: contrib/sessions/models.py:68
msgid "session key"
msgstr "clé de session"
#: contrib/sessions/models.py:69
msgid "session data"
-msgstr "donnée de session"
+msgstr "données de session"
#: contrib/sessions/models.py:70
msgid "expire date"
@@ -2490,7 +2683,7 @@ msgstr "sessions"
msgid ""
"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
msgstr ""
-"Par exemple : '/about/contact/'. Vérifiez la présence du caractère "
+"Par exemple : '/a_propos/contact/'. Vérifiez la présence du caractère "
"'/' en début et en fin de chaine."
#: contrib/flatpages/models.py:9
@@ -2529,11 +2722,11 @@ msgstr ""
#: contrib/flatpages/models.py:19
msgid "flat page"
-msgstr "page à plat"
+msgstr "page statique"
#: contrib/flatpages/models.py:20
msgid "flat pages"
-msgstr "pages à plat"
+msgstr "pages statiques"
#: utils/dates.py:6
msgid "Monday"
@@ -2563,127 +2756,155 @@ msgstr "Samedi"
msgid "Sunday"
msgstr "Dimanche"
-#: utils/dates.py:14
+#: utils/dates.py:10
+msgid "Mon"
+msgstr "Lun"
+
+#: utils/dates.py:10
+msgid "Tue"
+msgstr "Mar"
+
+#: utils/dates.py:10
+msgid "Wed"
+msgstr "Mer"
+
+#: utils/dates.py:10
+msgid "Thu"
+msgstr "Jeu"
+
+#: utils/dates.py:10
+msgid "Fri"
+msgstr "Ven"
+
+#: utils/dates.py:11
+msgid "Sat"
+msgstr "Sam"
+
+#: utils/dates.py:11
+msgid "Sun"
+msgstr "Dim"
+
+#: utils/dates.py:18
msgid "January"
msgstr "Janvier"
-#: utils/dates.py:14
+#: utils/dates.py:18
msgid "February"
msgstr "Février"
-#: utils/dates.py:14 utils/dates.py:27
+#: utils/dates.py:18 utils/dates.py:31
msgid "March"
msgstr "Mars"
-#: utils/dates.py:14 utils/dates.py:27
+#: utils/dates.py:18 utils/dates.py:31
msgid "April"
msgstr "Avril"
-#: utils/dates.py:14 utils/dates.py:27
+#: utils/dates.py:18 utils/dates.py:31
msgid "May"
msgstr "Mai"
-#: utils/dates.py:14 utils/dates.py:27
+#: utils/dates.py:18 utils/dates.py:31
msgid "June"
msgstr "Juin"
-#: utils/dates.py:15 utils/dates.py:27
+#: utils/dates.py:19 utils/dates.py:31
msgid "July"
msgstr "Juillet"
-#: utils/dates.py:15
+#: utils/dates.py:19
msgid "August"
msgstr "Août"
-#: utils/dates.py:15
+#: utils/dates.py:19
msgid "September"
msgstr "Septembre"
-#: utils/dates.py:15
+#: utils/dates.py:19
msgid "October"
msgstr "Octobre"
-#: utils/dates.py:15
+#: utils/dates.py:19
msgid "November"
msgstr "Novembre"
-#: utils/dates.py:16
+#: utils/dates.py:20
msgid "December"
msgstr "Décembre"
-#: utils/dates.py:19
+#: utils/dates.py:23
msgid "jan"
msgstr "jan"
-#: utils/dates.py:19
+#: utils/dates.py:23
msgid "feb"
msgstr "fév"
-#: utils/dates.py:19
+#: utils/dates.py:23
msgid "mar"
msgstr "mar"
-#: utils/dates.py:19
+#: utils/dates.py:23
msgid "apr"
msgstr "avr"
-#: utils/dates.py:19
+#: utils/dates.py:23
msgid "may"
msgstr "mai"
-#: utils/dates.py:19
+#: utils/dates.py:23
msgid "jun"
msgstr "jui"
-#: utils/dates.py:20
+#: utils/dates.py:24
msgid "jul"
msgstr "jul"
-#: utils/dates.py:20
+#: utils/dates.py:24
msgid "aug"
msgstr "aout"
-#: utils/dates.py:20
+#: utils/dates.py:24
msgid "sep"
msgstr "sep"
-#: utils/dates.py:20
+#: utils/dates.py:24
msgid "oct"
msgstr "oct"
-#: utils/dates.py:20
+#: utils/dates.py:24
msgid "nov"
msgstr "nov"
-#: utils/dates.py:20
+#: utils/dates.py:24
msgid "dec"
msgstr "déc"
-#: utils/dates.py:27
+#: utils/dates.py:31
msgid "Jan."
msgstr "Jan."
-#: utils/dates.py:27
+#: utils/dates.py:31
msgid "Feb."
msgstr "Fév."
-#: utils/dates.py:28
+#: utils/dates.py:32
msgid "Aug."
msgstr "Aôut"
-#: utils/dates.py:28
+#: utils/dates.py:32
msgid "Sept."
msgstr "Sept."
-#: utils/dates.py:28
+#: utils/dates.py:32
msgid "Oct."
msgstr "Oct."
-#: utils/dates.py:28
+#: utils/dates.py:32
msgid "Nov."
msgstr "Nov."
-#: utils/dates.py:28
+#: utils/dates.py:32
msgid "Dec."
msgstr "Déc."
@@ -2723,78 +2944,96 @@ msgid_plural "minutes"
msgstr[0] "minute"
msgstr[1] "minutes"
-#: utils/dateformat.py:40
+#: utils/timesince.py:40
+#, python-format
+msgid "%d milliseconds"
+msgstr "%d millisecondes"
+
+#: utils/timesince.py:41
+#, python-format
+msgid "%(number)d %(type)s"
+msgstr "%(number)d %(type)s"
+
+#: utils/timesince.py:47
+#, python-format
+msgid ", %(number)d %(type)s"
+msgstr ", %(number)d %(type)s"
+
+#: utils/dateformat.py:41
msgid "p.m."
msgstr "après-midi"
-#: utils/dateformat.py:41
+#: utils/dateformat.py:42
msgid "a.m."
msgstr "matin"
-#: utils/dateformat.py:46
+#: utils/dateformat.py:47
msgid "PM"
msgstr "Matin"
-#: utils/dateformat.py:47
+#: utils/dateformat.py:48
msgid "AM"
msgstr "Après-midi"
-#: utils/dateformat.py:95
+#: utils/dateformat.py:97
msgid "midnight"
msgstr "minuit"
-#: utils/dateformat.py:97
+#: utils/dateformat.py:99
msgid "noon"
msgstr "midi"
-#: utils/translation/trans_real.py:358
+#: utils/translation/trans_real.py:391
msgid "DATE_FORMAT"
msgstr "j F Y"
-#: utils/translation/trans_real.py:359
+#: utils/translation/trans_real.py:392
msgid "DATETIME_FORMAT"
msgstr "j F Y, G:i"
-#: utils/translation/trans_real.py:360
+#: utils/translation/trans_real.py:393
msgid "TIME_FORMAT"
msgstr "G:i:s"
-#: utils/translation/trans_real.py:376
+#: utils/translation/trans_real.py:409
msgid "YEAR_MONTH_FORMAT"
msgstr "F Y"
-#: utils/translation/trans_real.py:377
+#: utils/translation/trans_real.py:410
msgid "MONTH_DAY_FORMAT"
msgstr "j F"
-#: template/defaultfilters.py:491
+#: template/defaultfilters.py:485
msgid "yes,no,maybe"
-msgstr "oui,non,peut-être"
+msgstr "oui, non, peut-être"
-#: template/defaultfilters.py:520
+#: template/defaultfilters.py:514
#, python-format
msgid "%(size)d byte"
msgid_plural "%(size)d bytes"
msgstr[0] "%(size)d octet"
msgstr[1] "%(size)d octets"
-#: template/defaultfilters.py:522
+#: template/defaultfilters.py:516
#, python-format
msgid "%.1f KB"
msgstr "%.1f Ko"
-#: template/defaultfilters.py:524
+#: template/defaultfilters.py:518
#, python-format
msgid "%.1f MB"
msgstr "%.1f Mo"
-#: template/defaultfilters.py:525
+#: template/defaultfilters.py:519
#, python-format
msgid "%.1f GB"
msgstr "%.1f Go"
-#~ msgid "One or more %(fieldname)s in %(name)s :"
-#~ msgstr "Un ou plusieurs %(fieldname)s dans %(name)s :"
+#~ msgid "AnonymousUser"
+#~ msgstr "Anonyme"
+
+#~ msgid "One or more %(fieldname)s in %(name)s :"
+#~ msgstr "Un ou plusieurs %(fieldname)s dans %(name)s :"
#~ msgid "Separate multiple IDs with commas."
#~ msgstr "Séparez les ID par des virgules."
@@ -2812,7 +3051,7 @@ msgstr "%.1f Go"
#~ msgstr "Tri"
#~ msgid "Order:"
-#~ msgstr "Ordre :"
+#~ msgstr "Ordre :"
#~ msgid "%dth"
#~ msgstr "%de"
diff --git a/django/conf/locale/fr/LC_MESSAGES/djangojs.mo b/django/conf/locale/fr/LC_MESSAGES/djangojs.mo
index 12a53b39e2..34f4c78529 100644
Binary files a/django/conf/locale/fr/LC_MESSAGES/djangojs.mo and b/django/conf/locale/fr/LC_MESSAGES/djangojs.mo differ
diff --git a/django/conf/locale/fr/LC_MESSAGES/djangojs.po b/django/conf/locale/fr/LC_MESSAGES/djangojs.po
index 8cf467187e..1841be20c8 100644
--- a/django/conf/locale/fr/LC_MESSAGES/djangojs.po
+++ b/django/conf/locale/fr/LC_MESSAGES/djangojs.po
@@ -1,7 +1,7 @@
# French translation for js.
-# Copyright (C) 2005 Mikal Barbero
+# Copyright (C) 2005 Mikaël Barbero
# This file is distributed under the same license as the PACKAGE package.
-# Mikal Barbero För att installera smarta bokmärken, dra länken till din\n"
"verktygsrad med bokmärken, eller högerklicka på länken och lägg till den\n"
"till dina bokmärken. Nu kan du välja det smarta bokmärket från alla sidor\n"
-"på siten. Observera att några av dessa smarta bokmärken kräver att du "
+"på webbplatsen. Observera att några av dessa smarta bokmärken kräver att du "
"besöker\n"
"sidan från en dator som är \"intern\" (tala med din systemadministratör\n"
"om du inte är säker på om din dator är \"intern\"). To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\"). 为安装书签,拖动链接到你的工具条,\n"
-"或右击鼠标,然后增加到你的书签上。现在你可以从这个站\n"
-"点的任何页面选择书签。注意一些这样的书签要求你从一个\n"
-"被指定为\"内部\"的计算机上来进行查看(如果你不确定是\n"
-"否你的计算机是否是\"内部\"的,同你的系统管理员沟通一\n"
-"下。 To install bookmarklets, drag the link to your bookmarks\n"
+"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
+"select the bookmarklet from any page in the site. Note that some of these\n"
+"bookmarklets require you to be viewing the site from a computer designated\n"
+"as \"internal\" (talk to your system administrator if you aren't sure if\n"
+"your computer is \"internal\"). 为安装书签,拖动链接到你的工具条,\n"
+"或右击鼠标,然后增加到你的书签上。现在你可以从这个站\n"
+"点的任何页面选择书签。注意一些这样的书签要求你从一个\n"
+"被指定为\"内部\"的计算机上来进行查看(如果你不确定是\n"
+"否你的计算机是否是\"内部\"的,同你的系统管理员沟通一\n"
+"下。
{% for object in model.sample_objects %}
- {{ object }},
+ {{ object|escape }},
{% endfor %}
More →
(?: |\s| and and %s %s' % d, ' This is an important message.'
+ html_content = ' This is an important message. para1 para2 para3 para1 para2 para1 para2 para4 para1\tmore para2 hello world hello world \t By %s:
\n"
-"\n"
-msgstr ""
-"
Por %s:
\n"
-"\n"
-
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
-msgid "All"
-msgstr "Todos/as"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "Cualquier fecha"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "Hoy"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "ltimos 7 das"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "Este mes"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "Este ao"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "hora de accin"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "id de objeto"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "repr de objeto"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "marca de accin"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "mensaje de cambio"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "entrada de registro"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "entradas de registro"
-
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "Identificarse"
-
-#: contrib/admin/views/decorators.py:62
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Por favor, identifquese de nuevo porque su sesin ha caducado. No se "
-"preocupe: se ha guardado su envo."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Parece que su navegador no est configurado para aceptar cookies. Actvelas "
-"por favor, recargue esta pgina, e intntelo de nuevo."
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "Los nombres de usuario no pueden contener el carcter '@'."
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"Su direccin de correo no es su nombre de usuario. Intente nuevamente usando "
-"'%s'."
-
-#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Se agreg con xito %(name)s \"%(obj)s\"."
-
-#: contrib/admin/views/auth.py:24 contrib/admin/views/main.py:261
-#: contrib/admin/views/main.py:347
-msgid "You may edit it again below."
-msgstr "Puede modificarlo nuevamente abajo."
-
-#: contrib/admin/views/auth.py:30
-msgid "Add user"
-msgstr "Agregar usuario"
-
-#: contrib/admin/views/auth.py:57
-msgid "Password changed successfully."
-msgstr "Cambio de contrasea exitoso"
-
-#: contrib/admin/views/auth.py:64
-#, python-format
-msgid "Change password: %s"
-msgstr "Cambiar contrasea: %s"
-
-#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr "etiqueta:"
-
-#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "filtrar:"
-
-#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "ver:"
-
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
-msgstr "Aplicacin %r no encontrada"
-
-#: contrib/admin/views/doc.py:171
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Modelo %(name)r no encontrado en aplicacin %(label)r"
-
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "el objeto relacionado `%(label)s%(type)s`"
-
-#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
-msgid "model:"
-msgstr "modelo:"
-
-#: contrib/admin/views/doc.py:214
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "objetos relacionados `%(label)s.%(name)s`"
-
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
-msgstr "todos %s"
-
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr "nmero de %s"
-
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Campos en %s objetos"
-
-#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
-#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
-msgid "Integer"
-msgstr "Entero"
-
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "Booleano (Verdadero o Falso)"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "Cadena (mximo %(maxlength)s)"
-
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr "Enteros separados por comas"
-
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
-msgstr "Fecha (sin hora)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "Fecha (con hora)"
-
-#: contrib/admin/views/doc.py:297
-msgid "E-mail address"
-msgstr "Direccin de correo electrnico"
-
-#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
-#: contrib/admin/views/doc.py:302
-msgid "File path"
-msgstr "Ruta de archivo"
-
-#: contrib/admin/views/doc.py:300
-msgid "Decimal number"
-msgstr "Nmero decimal"
-
-#: contrib/admin/views/doc.py:304 contrib/comments/models.py:85
-msgid "IP address"
-msgstr "Direccin IP"
-
-#: contrib/admin/views/doc.py:306
-msgid "Boolean (Either True, False or None)"
-msgstr "Booleano (Verdadero, Falso o Nulo)"
-
-#: contrib/admin/views/doc.py:307
-msgid "Relation to parent model"
-msgstr "Relacin con el modelo padre"
-
-#: contrib/admin/views/doc.py:308
-msgid "Phone number"
-msgstr "Nmero de telfono"
-
-#: contrib/admin/views/doc.py:313
-msgid "Text"
-msgstr "Texto"
-
-#: contrib/admin/views/doc.py:314
-msgid "Time"
-msgstr "Hora"
-
-#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr "Estado de los EE.UU. (dos letras maysculas)"
-
-#: contrib/admin/views/doc.py:317
-msgid "XML text"
-msgstr "Texto XML"
-
-#: contrib/admin/views/doc.py:343
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s no parece ser un objeto urlpattern"
-
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
-msgstr "Sitio administrativo"
-
-#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
-#, python-format
-msgid "You may add another %s below."
-msgstr "Puede agregar otro %s abajo."
-
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "Agregar %s"
-
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "Agregado %s."
-
-#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337
-#: contrib/admin/views/main.py:339 db/models/manipulators.py:308
-msgid "and"
-msgstr "y"
-
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr "Modifica %s."
-
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "Elimina %s."
-
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "No ha modificado ningn campo."
-
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Se modific con xito %(name)s \"%(obj)s\"."
-
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Se agreg con xito %(name)s \"%(obj)s\". Puede modificarlo nuevamente abajo."
-
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
-
-#: contrib/admin/views/main.py:476
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Uno o ms %(fieldname)s en %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:481
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Uno o ms %(fieldname)s en %(name)s:"
-
-#: contrib/admin/views/main.py:514
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Se elimin con xito %(name)s \"%(obj)s\"."
-
-#: contrib/admin/views/main.py:517
-msgid "Are you sure?"
-msgstr "Est seguro?"
-
-#: contrib/admin/views/main.py:539
-#, python-format
-msgid "Change history: %s"
-msgstr "Historia de modificaciones: %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s"
-msgstr "Seleccione %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s to change"
-msgstr "Seleccione %s a modificar"
-
-#: contrib/admin/views/main.py:768
-msgid "Database error"
-msgstr "Error de base de datos"
-
-#: contrib/admin/templatetags/admin_list.py:247
-msgid "All dates"
-msgstr "Todas las fechas"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Fecha:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Hora:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Actualmente"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Modificar:"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modelos disponibles en la aplicacin %(name)s."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "Agregar"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Modificar"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "No tiene permiso para editar nada."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Acciones recientes"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Mis acciones"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Ninguna disponible"
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filtrar"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Buscar"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "un resultado"
-msgstr[1] "%(counter)s resultados"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "total: %(full_result_count)s"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Por %(filter_title)s "
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Mostrar todos/as"
-
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Documentacin"
-
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin/auth/user/change_password.html:15
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-msgid "Change password"
-msgstr "Cambiar contrasea"
-
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Cerrar sesin"
-
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:12
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Inicio"
-
-#: contrib/admin/templates/admin/change_form.html:21
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Historia"
-
-#: contrib/admin/templates/admin/change_form.html:22
-msgid "View on site"
-msgstr "Ver en el sitio"
-
-#: contrib/admin/templates/admin/change_form.html:32
-#: contrib/admin/templates/admin/auth/user/change_password.html:24
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Por favor, corrija el siguiente error."
-msgstr[1] "Por favor, corrija los siguientes errores."
-
-#: contrib/admin/templates/admin/change_form.html:50
-msgid "Ordering"
-msgstr "Ordenacin"
-
-#: contrib/admin/templates/admin/change_form.html:53
-msgid "Order:"
-msgstr "Orden:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Pgina no encontrada"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Lo sentimos, pero no se encuentra la pgina solicitada."
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Sitio de administracin de Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administracin de Django"
-
-#: contrib/admin/templates/admin/change_list.html:12
-#, python-format
-msgid "Add %(name)s"
-msgstr "Agregar %(name)s"
-
-#: contrib/admin/templates/admin/login.html:17
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Usuario:"
-
-#: contrib/admin/templates/admin/login.html:20
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Contrasea:"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Bienvenido,"
-
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-msgid "Delete"
-msgstr "Eliminar"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Grabar como nuevo"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Grabar y aadir otro"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Grabar y continuar editando"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Grabar"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Fecha/hora"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "Usuario"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "Accin"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "j M Y P"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Este objeto no tiene historia de modificaciones. Probablemente no fu "
-"aadido usando este sitio de administracin."
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Error del servidor"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Error del servidor (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error (500)"
-msgstr "Error de servidor (500)"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Ha ocurrido un error. Se ha informado a los administradores del sitio "
-"mediante correo electrnico y debera ser solucionado en breve. Gracias por "
-"su paciencia."
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Eliminar el %(object_name)s '%(escaped_object)s' provocara la eliminacin "
-"de objetos relacionados, pero su cuenta no tiene permiso para eliminar los "
-"siguientes tipos de objetos:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Est seguro de que quiere eliminar los %(object_name)s \"%(escaped_object)s"
-"\"? Se eliminarn los siguientes objetos relacionados:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "S, estoy seguro"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Hay algn problema con su instalacin de base de datos. Asegrese de que las "
-"tablas de la misma hayan sido creadas, y asegrese de que el usuario "
-"apropiado tenga permisos de lectura en la base de datos."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:28
-#, python-format
-msgid "Enter a new password for the user %(username)s."
-msgstr ""
-"Introduzca una nueva contrasea para el usuario %(username)s"
-"strong>."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:34
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-msgid "Password"
-msgstr "Contrasea:"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-msgid "Password (again)"
-msgstr "Contrasea (de nuevo)"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-msgid "Enter the same password as above, for verification."
-msgstr "Para verificacin, introduzca la misma contrasea que ingres arriba."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Primero, introduzca un nombre de usuario y una contrasea. Luego podr "
-"configurar opciones adicionales."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Nombre de usuario:"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Cambio de contrasea"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Cambio de contrasea exitoso"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Su contrasea ha sido cambiada."
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "Recuperar contrasea"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"Ha olvidado su contrasea? Introduzca su direccin de correo electrnico, y "
-"crearemos una nueva que le enviaremos por correo."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Direccin de correo electrnico:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Recuperar mi contrasea"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Recuperacin de contrasea exitosa"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"Le hemos enviado una nueva contrasea a la direccin que ha suministrado. "
-"Debera recibirla en breve."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Por favor, por razones de seguridad, introduzca su contrasea antigua, y "
-"luego introduzca la nueva contrasea dos veces para verificar que la ha "
-"escrito correctamente."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Contrasea antigua:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Contrasea nueva:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Confirme contrasea:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Cambiar mi contrasea"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr ""
-"Est recibiendo este mensaje debido a que solicit recuperar la contrasea"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "de su cuenta de usuario en %(site_name)s."
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Su nueva contrasea es: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Puede cambiarla accediendo a esta pgina:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Su nombre de usuario, en caso de haberlo olvidado:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Gracias por usar nuestro sitio!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "El equipo de %(site_name)s"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Gracias por el tiempo que ha dedicado al sitio web hoy."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Identificarse de nuevo"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "Bookmarklets de documentacin"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"
By %s:
\n"
+"\n"
msgstr ""
+"
Por %s:
\n"
+"\n"
-#: template/defaultfilters.py:525
+#: contrib/admin/filterspecs.py:72 contrib/admin/filterspecs.py:90
+#: contrib/admin/filterspecs.py:145 contrib/admin/filterspecs.py:171
+msgid "All"
+msgstr "Todos/as"
+
+#: contrib/admin/filterspecs.py:111
+msgid "Any date"
+msgstr "Cualquier fecha"
+
+#: contrib/admin/filterspecs.py:112
+msgid "Today"
+msgstr "Hoy"
+
+#: contrib/admin/filterspecs.py:115
+msgid "Past 7 days"
+msgstr "Últimos 7 días"
+
+#: contrib/admin/filterspecs.py:117
+msgid "This month"
+msgstr "Este mes"
+
+#: contrib/admin/filterspecs.py:119
+msgid "This year"
+msgstr "Este año"
+
+#: contrib/admin/models.py:17
+msgid "action time"
+msgstr "hora de acción"
+
+#: contrib/admin/models.py:20
+msgid "object id"
+msgstr "id de objeto"
+
+#: contrib/admin/models.py:21
+msgid "object repr"
+msgstr "repr de objeto"
+
+#: contrib/admin/models.py:22
+msgid "action flag"
+msgstr "marca de acción"
+
+#: contrib/admin/models.py:23
+msgid "change message"
+msgstr "mensaje de cambio"
+
+#: contrib/admin/models.py:26
+msgid "log entry"
+msgstr "entrada de registro"
+
+#: contrib/admin/models.py:27
+msgid "log entries"
+msgstr "entradas de registro"
+
+#: contrib/admin/views/doc.py:47 contrib/admin/views/doc.py:49
+#: contrib/admin/views/doc.py:51
+msgid "tag:"
+msgstr "etiqueta:"
+
+#: contrib/admin/views/doc.py:78 contrib/admin/views/doc.py:80
+#: contrib/admin/views/doc.py:82
+msgid "filter:"
+msgstr "filtrar:"
+
+#: contrib/admin/views/doc.py:136 contrib/admin/views/doc.py:138
+#: contrib/admin/views/doc.py:140
+msgid "view:"
+msgstr "ver:"
+
+#: contrib/admin/views/doc.py:165
#, python-format
-msgid "%.1f GB"
-msgstr ""
+msgid "App %r not found"
+msgstr "Aplicación %r no encontrada"
-#: core/validators.py:64
+#: contrib/admin/views/doc.py:172
+#, python-format
+msgid "Model %(name)r not found in app %(label)r"
+msgstr "Modelo %(name)r no encontrado en aplicación %(label)r"
+
+#: contrib/admin/views/doc.py:184
+#, python-format
+msgid "the related `%(label)s.%(type)s` object"
+msgstr "el objeto `%(label)s.%(type)s` relacionado"
+
+#: contrib/admin/views/doc.py:184 contrib/admin/views/doc.py:206
+#: contrib/admin/views/doc.py:220 contrib/admin/views/doc.py:225
+msgid "model:"
+msgstr "modelo:"
+
+#: contrib/admin/views/doc.py:215
+#, python-format
+msgid "related `%(label)s.%(name)s` objects"
+msgstr "objetos `%(label)s.%(name)s` relacionados"
+
+#: contrib/admin/views/doc.py:220
+#, python-format
+msgid "all %s"
+msgstr "todos los %s"
+
+#: contrib/admin/views/doc.py:225
+#, python-format
+msgid "number of %s"
+msgstr "número de %s"
+
+#: contrib/admin/views/doc.py:230
+#, python-format
+msgid "Fields on %s objects"
+msgstr "Campos en objetos %s"
+
+#: contrib/admin/views/doc.py:292 contrib/admin/views/doc.py:303
+#: contrib/admin/views/doc.py:305 contrib/admin/views/doc.py:311
+#: contrib/admin/views/doc.py:312 contrib/admin/views/doc.py:314
+msgid "Integer"
+msgstr "Entero"
+
+#: contrib/admin/views/doc.py:293
+msgid "Boolean (Either True or False)"
+msgstr "Booleano (Verdadero o Falso)"
+
+#: contrib/admin/views/doc.py:294 contrib/admin/views/doc.py:313
+#, python-format
+msgid "String (up to %(maxlength)s)"
+msgstr "Cadena (máximo %(maxlength)s)"
+
+#: contrib/admin/views/doc.py:295
+msgid "Comma-separated integers"
+msgstr "Enteros separados por comas"
+
+#: contrib/admin/views/doc.py:296
+msgid "Date (without time)"
+msgstr "Fecha (sin hora)"
+
+#: contrib/admin/views/doc.py:297
+msgid "Date (with time)"
+msgstr "Fecha (con hora)"
+
+#: contrib/admin/views/doc.py:298
+msgid "Decimal number"
+msgstr "Número decimal"
+
+#: contrib/admin/views/doc.py:299
+msgid "E-mail address"
+msgstr "Dirección de correo electrónico"
+
+#: contrib/admin/views/doc.py:300 contrib/admin/views/doc.py:301
+#: contrib/admin/views/doc.py:304
+msgid "File path"
+msgstr "Ruta de archivo"
+
+#: contrib/admin/views/doc.py:302
+msgid "Floating point number"
+msgstr "Número de punto flotante"
+
+#: contrib/admin/views/doc.py:308
+msgid "Boolean (Either True, False or None)"
+msgstr "Booleano (Verdadero, Falso o Nulo)"
+
+#: contrib/admin/views/doc.py:309
+msgid "Relation to parent model"
+msgstr "Relación con el modelo padre"
+
+#: contrib/admin/views/doc.py:310
+msgid "Phone number"
+msgstr "Número de teléfono"
+
+#: contrib/admin/views/doc.py:315
+msgid "Text"
+msgstr "Texto"
+
+#: contrib/admin/views/doc.py:316
+msgid "Time"
+msgstr "Hora"
+
+#: contrib/admin/views/doc.py:317 contrib/flatpages/models.py:7
+msgid "URL"
+msgstr "URL"
+
+#: contrib/admin/views/doc.py:318
+msgid "U.S. state (two uppercase letters)"
+msgstr "Estado de los EE.UU. (dos letras mayúsculas)"
+
+#: contrib/admin/views/doc.py:319
+msgid "XML text"
+msgstr "Texto XML"
+
+#: contrib/admin/views/doc.py:345
+#, python-format
+msgid "%s does not appear to be a urlpattern object"
+msgstr "%s no parece ser un objeto urlpattern"
+
+#: contrib/admin/views/decorators.py:24
+#: contrib/admin/templates/admin/login.html:25
+msgid "Log in"
+msgstr "Identificarse"
+
+#: contrib/admin/views/decorators.py:62
+msgid ""
+"Please log in again, because your session has expired. Don't worry: Your "
+"submission has been saved."
+msgstr ""
+"Por favor, identifíquese de nuevo porque su sesión ha caducado. No se "
+"preocupe: se ha guardado su envío."
+
+#: contrib/admin/views/decorators.py:69
+msgid ""
+"Looks like your browser isn't configured to accept cookies. Please enable "
+"cookies, reload this page, and try again."
+msgstr ""
+"Parece que su navegador no está configurado para aceptar cookies. Actívelas "
+"por favor, recargue esta página, e inténtelo de nuevo."
+
+#: contrib/admin/views/decorators.py:83
+msgid "Usernames cannot contain the '@' character."
+msgstr "Los nombres de usuario no pueden contener el carácter '@'."
+
+#: contrib/admin/views/decorators.py:85
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr ""
+"Su dirección de correo no es su nombre de usuario. Intente nuevamente usando "
+"'%s'."
+
+#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:264
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "Se agregó con éxito %(name)s \"%(obj)s\"."
+
+#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:268
+#: contrib/admin/views/main.py:354
+msgid "You may edit it again below."
+msgstr "Puede modificarlo nuevamente abajo."
+
+#: contrib/admin/views/auth.py:31
+msgid "Add user"
+msgstr "Agregar usuario"
+
+#: contrib/admin/views/auth.py:58
+msgid "Password changed successfully."
+msgstr "Cambio de contraseña exitoso"
+
+#: contrib/admin/views/auth.py:65
+#, python-format
+msgid "Change password: %s"
+msgstr "Cambiar contraseña: %s"
+
+#: contrib/admin/views/main.py:230
+msgid "Site administration"
+msgstr "Administración de sitio"
+
+#: contrib/admin/views/main.py:278 contrib/admin/views/main.py:363
+#, python-format
+msgid "You may add another %s below."
+msgstr "Puede agregar otro %s abajo."
+
+#: contrib/admin/views/main.py:296
+#, python-format
+msgid "Add %s"
+msgstr "Agregar %s"
+
+#: contrib/admin/views/main.py:342
+#, python-format
+msgid "Added %s."
+msgstr "Agregado %s."
+
+#: contrib/admin/views/main.py:344
+#, python-format
+msgid "Changed %s."
+msgstr "Modifica %s."
+
+#: contrib/admin/views/main.py:346
+#, python-format
+msgid "Deleted %s."
+msgstr "Elimina %s."
+
+#: contrib/admin/views/main.py:349
+msgid "No fields changed."
+msgstr "No ha modificado ningún campo."
+
+#: contrib/admin/views/main.py:352
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr "Se modificó con éxito %(name)s \"%(obj)s\"."
+
+#: contrib/admin/views/main.py:360
+#, python-format
+msgid ""
+"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr ""
+"Se agregó con éxito %(name)s \"%(obj)s\". Puede modificarlo nuevamente abajo."
+
+#: contrib/admin/views/main.py:398
+#, python-format
+msgid "Change %s"
+msgstr "Modificar %s"
+
+#: contrib/admin/views/main.py:483
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr "Uno o más %(fieldname)s en %(name)s: %(obj)s"
+
+#: contrib/admin/views/main.py:488
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "Uno o más %(fieldname)s en %(name)s:"
+
+#: contrib/admin/views/main.py:520
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "Se eliminó con éxito %(name)s \"%(obj)s\"."
+
+#: contrib/admin/views/main.py:523
+msgid "Are you sure?"
+msgstr "¿Está seguro?"
+
+#: contrib/admin/views/main.py:545
+#, python-format
+msgid "Change history: %s"
+msgstr "Historia de modificaciones: %s"
+
+#: contrib/admin/views/main.py:579
+#, python-format
+msgid "Select %s"
+msgstr "Seleccione %s"
+
+#: contrib/admin/views/main.py:579
+#, python-format
+msgid "Select %s to change"
+msgstr "Seleccione %s a modificar"
+
+#: contrib/admin/views/main.py:780
+msgid "Database error"
+msgstr "Error de base de datos"
+
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/auth/user/change_password.html:9
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Documentation"
+msgstr "Documentación"
+
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/auth/user/change_password.html:9
+#: contrib/admin/templates/admin/auth/user/change_password.html:15
+#: contrib/admin/templates/admin/auth/user/change_password.html:46
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/registration/password_change_done.html:3
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+#: contrib/admin/templates/admin_doc/missing_docutils.html:4
+#: contrib/admin/templates/admin_doc/model_index.html:5
+#: contrib/admin/templates/admin_doc/view_index.html:5
+#: contrib/admin/templates/admin_doc/template_tag_index.html:5
+#: contrib/admin/templates/admin_doc/index.html:4
+#: contrib/admin/templates/admin_doc/model_detail.html:3
+#: contrib/admin/templates/admin_doc/view_detail.html:4
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
+#: contrib/admin/templates/admin_doc/template_detail.html:4
+msgid "Change password"
+msgstr "Cambiar contraseña"
+
+#: contrib/admin/templates/admin/change_list.html:6
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/500.html:4
+#: contrib/admin/templates/admin/change_form.html:13
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/delete_confirmation.html:6
+#: contrib/admin/templates/admin/invalid_setup.html:4
+#: contrib/admin/templates/admin/auth/user/change_password.html:12
+#: contrib/admin/templates/registration/logged_out.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_reset_done.html:4
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_reset_form.html:4
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Home"
+msgstr "Inicio"
+
+#: contrib/admin/templates/admin/change_list.html:12
+#, python-format
+msgid "Add %(name)s"
+msgstr "Agregar %(name)s"
+
+#: contrib/admin/templates/admin/404.html:4
+#: contrib/admin/templates/admin/404.html:8
+msgid "Page not found"
+msgstr "Página no encontrada"
+
+#: contrib/admin/templates/admin/404.html:10
+msgid "We're sorry, but the requested page could not be found."
+msgstr "Lo sentimos, pero no se encuentra la página solicitada."
+
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/change_form.html:21
+msgid "History"
+msgstr "Historia"
+
+#: contrib/admin/templates/admin/object_history.html:18
+msgid "Date/time"
+msgstr "Fecha/hora"
+
+#: contrib/admin/templates/admin/object_history.html:19
+msgid "User"
+msgstr "Usuario"
+
+#: contrib/admin/templates/admin/object_history.html:20
+msgid "Action"
+msgstr "Acción"
+
+#: contrib/admin/templates/admin/object_history.html:26
+msgid "DATE_WITH_TIME_FULL"
+msgstr "j M Y P"
+
+#: contrib/admin/templates/admin/object_history.html:36
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
+msgstr ""
+"Este objeto no tiene historia de modificaciones. Probablemente no fué "
+"añadido usando este sitio de administración."
+
+#: contrib/admin/templates/admin/500.html:4
+msgid "Server error"
+msgstr "Error del servidor"
+
+#: contrib/admin/templates/admin/500.html:6
+msgid "Server error (500)"
+msgstr "Error del servidor (500)"
+
+#: contrib/admin/templates/admin/500.html:9
+msgid "Server Error (500)"
+msgstr "Error de servidor (500)"
+
+#: contrib/admin/templates/admin/500.html:10
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Ha ocurrido un error. Se ha informado a los administradores del sitio "
+"mediante correo electrónico y debería ser solucionado en breve. Gracias por "
+"su paciencia."
+
+#: contrib/admin/templates/admin/base_site.html:4
+msgid "Django site admin"
+msgstr "Sitio de administración de Django"
+
+#: contrib/admin/templates/admin/base_site.html:7
+msgid "Django administration"
+msgstr "Administración de Django"
+
+#: contrib/admin/templates/admin/filter.html:2
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " Por %(filter_title)s "
+
+#: contrib/admin/templates/admin/index.html:17
+#, python-format
+msgid "Models available in the %(name)s application."
+msgstr "Modelos disponibles en la aplicación %(name)s."
+
+#: contrib/admin/templates/admin/index.html:18
+#, python-format
+msgid "%(name)s"
+msgstr "%(name)s"
+
+#: contrib/admin/templates/admin/index.html:28
+#: contrib/admin/templates/admin/change_form.html:15
+msgid "Add"
+msgstr "Agregar"
+
+#: contrib/admin/templates/admin/index.html:34
+msgid "Change"
+msgstr "Modificar"
+
+#: contrib/admin/templates/admin/index.html:44
+msgid "You don't have permission to edit anything."
+msgstr "No tiene permiso para editar nada."
+
+#: contrib/admin/templates/admin/index.html:52
+msgid "Recent Actions"
+msgstr "Acciones recientes"
+
+#: contrib/admin/templates/admin/index.html:53
+msgid "My Actions"
+msgstr "Mis acciones"
+
+#: contrib/admin/templates/admin/index.html:57
+msgid "None available"
+msgstr "Ninguna disponible"
+
+#: contrib/admin/templates/admin/change_form.html:22
+msgid "View on site"
+msgstr "Ver en el sitio"
+
+#: contrib/admin/templates/admin/change_form.html:32
+#: contrib/admin/templates/admin/auth/user/change_password.html:24
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "Por favor, corrija el siguiente error."
+msgstr[1] "Por favor, corrija los siguientes errores."
+
+#: contrib/admin/templates/admin/change_form.html:50
+msgid "Ordering"
+msgstr "Ordenación"
+
+#: contrib/admin/templates/admin/change_form.html:53
+msgid "Order:"
+msgstr "Orden:"
+
+#: contrib/admin/templates/admin/pagination.html:10
+msgid "Show all"
+msgstr "Mostrar todos/as"
+
+#: contrib/admin/templates/admin/base.html:25
+msgid "Welcome,"
+msgstr "Bienvenido,"
+
+#: contrib/admin/templates/admin/submit_line.html:3
+#: contrib/admin/templates/admin/delete_confirmation.html:9
+msgid "Delete"
+msgstr "Eliminar"
+
+#: contrib/admin/templates/admin/submit_line.html:4
+msgid "Save as new"
+msgstr "Grabar como nuevo"
+
+#: contrib/admin/templates/admin/submit_line.html:5
+msgid "Save and add another"
+msgstr "Grabar y añadir otro"
+
+#: contrib/admin/templates/admin/submit_line.html:6
+msgid "Save and continue editing"
+msgstr "Grabar y continuar editando"
+
+#: contrib/admin/templates/admin/submit_line.html:7
+msgid "Save"
+msgstr "Grabar"
+
+#: contrib/admin/templates/admin/search_form.html:8
+msgid "Go"
+msgstr "Buscar"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "1 result"
+msgid_plural "%(counter)s results"
+msgstr[0] "un resultado"
+msgstr[1] "%(counter)s resultados"
+
+#: contrib/admin/templates/admin/search_form.html:10
+#, python-format
+msgid "%(full_result_count)s total"
+msgstr "total: %(full_result_count)s"
+
+#: contrib/admin/templates/admin/filters.html:4
+msgid "Filter"
+msgstr "Filtrar"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:14
+#, python-format
+msgid ""
+"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación "
+"de objetos relacionados, pero su cuenta no tiene permiso para eliminar los "
+"siguientes tipos de objetos:"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:21
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"¿Está seguro de que quiere eliminar los %(object_name)s \"%(escaped_object)s"
+"\"? Se eliminarán los siguientes objetos relacionados:"
+
+#: contrib/admin/templates/admin/delete_confirmation.html:26
+msgid "Yes, I'm sure"
+msgstr "Sí, estoy seguro"
+
+#: contrib/admin/templates/admin/invalid_setup.html:8
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Hay algún problema con su instalación de base de datos. Asegúrese de que las "
+"tablas de la misma hayan sido creadas, y asegúrese de que el usuario "
+"apropiado tenga permisos de lectura en la base de datos."
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:28
+#, python-format
+msgid "Enter a new password for the user %(username)s."
+msgstr ""
+"Introduzca una nueva contraseña para el usuario %(username)s"
+"strong>."
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:34
+#: contrib/admin/templates/admin/auth/user/add_form.html:18
+msgid "Password"
+msgstr "Contraseña:"
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:39
+#: contrib/admin/templates/admin/auth/user/add_form.html:23
+msgid "Password (again)"
+msgstr "Contraseña (de nuevo)"
+
+#: contrib/admin/templates/admin/auth/user/change_password.html:40
+#: contrib/admin/templates/admin/auth/user/add_form.html:24
+msgid "Enter the same password as above, for verification."
+msgstr "Para verificación, introduzca la misma contraseña que ingresó arriba."
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:6
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+"Primero, introduzca un nombre de usuario y una contraseña. Luego podrá "
+"configurar opciones adicionales."
+
+#: contrib/admin/templates/admin/auth/user/add_form.html:12
+msgid "Username"
+msgstr "Nombre de usuario:"
+
+#: contrib/admin/templates/widget/file.html:2
+msgid "Currently:"
+msgstr "Actualmente"
+
+#: contrib/admin/templates/widget/file.html:3
+msgid "Change:"
+msgstr "Modificar:"
+
+#: contrib/admin/templates/widget/date_time.html:3
+msgid "Date:"
+msgstr "Fecha:"
+
+#: contrib/admin/templates/widget/date_time.html:4
+msgid "Time:"
+msgstr "Hora:"
+
+#: contrib/admin/templates/registration/logged_out.html:8
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "Gracias por el tiempo que ha dedicado al sitio web hoy."
+
+#: contrib/admin/templates/registration/logged_out.html:10
+msgid "Log in again"
+msgstr "Identificarse de nuevo"
+
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_change_form.html:6
+#: contrib/admin/templates/registration/password_change_form.html:10
+#: contrib/admin/templates/registration/password_change_done.html:4
+msgid "Password change"
+msgstr "Cambio de contraseña"
+
+#: contrib/admin/templates/registration/password_change_form.html:12
+msgid ""
+"Please enter your old password, for security's sake, and then enter your new "
+"password twice so we can verify you typed it in correctly."
+msgstr ""
+"Por favor, por razones de seguridad, introduzca su contraseña antigua, y "
+"luego introduzca la nueva contraseña dos veces para verificar que la ha "
+"escrito correctamente."
+
+#: contrib/admin/templates/registration/password_change_form.html:17
+msgid "Old password:"
+msgstr "Contraseña antigua:"
+
+#: contrib/admin/templates/registration/password_change_form.html:19
+msgid "New password:"
+msgstr "Contraseña nueva:"
+
+#: contrib/admin/templates/registration/password_change_form.html:21
+msgid "Confirm password:"
+msgstr "Confirme contraseña:"
+
+#: contrib/admin/templates/registration/password_change_form.html:23
+msgid "Change my password"
+msgstr "Cambiar mi contraseña"
+
+#: contrib/admin/templates/registration/password_reset_done.html:4
+#: contrib/admin/templates/registration/password_reset_form.html:4
+#: contrib/admin/templates/registration/password_reset_form.html:6
+#: contrib/admin/templates/registration/password_reset_form.html:10
+msgid "Password reset"
+msgstr "Recuperar contraseña"
+
+#: contrib/admin/templates/registration/password_reset_done.html:6
+#: contrib/admin/templates/registration/password_reset_done.html:10
+msgid "Password reset successful"
+msgstr "Recuperación de contraseña exitosa"
+
+#: contrib/admin/templates/registration/password_reset_done.html:12
+msgid ""
+"We've e-mailed a new password to the e-mail address you submitted. You "
+"should be receiving it shortly."
+msgstr ""
+"Le hemos enviado una nueva contraseña a la dirección que ha suministrado. "
+"Debería recibirla en breve."
+
+#: contrib/admin/templates/registration/password_reset_email.html:2
+msgid "You're receiving this e-mail because you requested a password reset"
+msgstr ""
+"Está recibiendo este mensaje debido a que solicitó recuperar la contraseña"
+
+#: contrib/admin/templates/registration/password_reset_email.html:3
+#, python-format
+msgid "for your user account at %(site_name)s"
+msgstr "de su cuenta de usuario en %(site_name)s."
+
+#: contrib/admin/templates/registration/password_reset_email.html:5
+#, python-format
+msgid "Your new password is: %(new_password)s"
+msgstr "Su nueva contraseña es: %(new_password)s"
+
+#: contrib/admin/templates/registration/password_reset_email.html:7
+msgid "Feel free to change this password by going to this page:"
+msgstr "Puede cambiarla accediendo a esta página:"
+
+#: contrib/admin/templates/registration/password_reset_email.html:11
+msgid "Your username, in case you've forgotten:"
+msgstr "Su nombre de usuario, en caso de haberlo olvidado:"
+
+#: contrib/admin/templates/registration/password_reset_email.html:13
+msgid "Thanks for using our site!"
+msgstr "¡Gracias por usar nuestro sitio!"
+
+#: contrib/admin/templates/registration/password_reset_email.html:15
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "El equipo de %(site_name)s"
+
+#: contrib/admin/templates/registration/password_change_done.html:6
+#: contrib/admin/templates/registration/password_change_done.html:10
+msgid "Password change successful"
+msgstr "Cambio de contraseña exitoso"
+
+#: contrib/admin/templates/registration/password_change_done.html:12
+msgid "Your password was changed."
+msgstr "Su contraseña ha sido cambiada."
+
+#: contrib/admin/templates/registration/password_reset_form.html:12
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll reset "
+"your password and e-mail the new one to you."
+msgstr ""
+"¿Ha olvidado su contraseña? Introduzca su dirección de correo electrónico, y "
+"crearemos una nueva que le enviaremos por correo."
+
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "E-mail address:"
+msgstr "Dirección de correo electrónico:"
+
+#: contrib/admin/templates/registration/password_reset_form.html:16
+msgid "Reset my password"
+msgstr "Recuperar mi contraseña"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Bookmarklets"
+msgstr "Bookmarklets"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:5
+msgid "Documentation bookmarklets"
+msgstr "Bookmarklets de documentación"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:9
+msgid ""
+"\n"
+"
By %s:
\n"
"\n"
msgstr ""
-"
Par %s :
\n"
+"Par %s :
\n"
"\n"
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
+#: contrib/admin/filterspecs.py:72 contrib/admin/filterspecs.py:90
+#: contrib/admin/filterspecs.py:145 contrib/admin/filterspecs.py:171
msgid "All"
msgstr "Tout"
-#: contrib/admin/filterspecs.py:109
+#: contrib/admin/filterspecs.py:111
msgid "Any date"
msgstr "Toutes les dates"
-#: contrib/admin/filterspecs.py:110
+#: contrib/admin/filterspecs.py:112
msgid "Today"
msgstr "Aujourd'hui"
-#: contrib/admin/filterspecs.py:113
+#: contrib/admin/filterspecs.py:115
msgid "Past 7 days"
msgstr "Les 7 derniers jours"
-#: contrib/admin/filterspecs.py:115
+#: contrib/admin/filterspecs.py:117
msgid "This month"
msgstr "Ce mois-ci"
-#: contrib/admin/filterspecs.py:117
+#: contrib/admin/filterspecs.py:119
msgid "This year"
msgstr "Cette année"
-#: contrib/admin/options.py:307 contrib/admin/views/auth.py:19
+#: contrib/admin/options.py:323 contrib/admin/views/auth.py:20
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "L'objet %(name)s \"%(obj)s\" a été ajouté avec succès."
-#: contrib/admin/options.py:311 contrib/admin/options.py:363
-#: contrib/admin/views/auth.py:24
+#: contrib/admin/options.py:327 contrib/admin/options.py:385
+#: contrib/admin/views/auth.py:25
msgid "You may edit it again below."
msgstr "Vous pouvez continuez de l'éditez ci-dessous."
-#: contrib/admin/options.py:321 contrib/admin/options.py:372
+#: contrib/admin/options.py:337 contrib/admin/options.py:394
#, python-format
msgid "You may add another %s below."
msgstr "Vous pouvez ajouter un autre %s ci-dessous."
-#: contrib/admin/options.py:358
+#: contrib/admin/options.py:380
msgid "No fields changed."
msgstr "Aucun champ modifié."
-#: contrib/admin/options.py:361
+#: contrib/admin/options.py:383
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr "L'objet %(name)s \"%(obj)s\" a été modifié avec succès."
-#: contrib/admin/options.py:369
+#: contrib/admin/options.py:391
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
@@ -1197,69 +1234,69 @@ msgstr ""
"L'objet %(name)s \"%(obj)s\" a été ajouté avec succès.Vous pouvez continuez "
"de l'éditez ci-dessous."
-#: contrib/admin/options.py:408
+#: contrib/admin/options.py:437
#, python-format
msgid "Add %s"
msgstr "Ajouter %s"
-#: contrib/admin/options.py:468
+#: contrib/admin/options.py:504
#, python-format
msgid "Change %s"
msgstr "Changement %s"
-#: contrib/admin/options.py:494
+#: contrib/admin/options.py:531
msgid "Database error"
msgstr "Erreur de base de données"
-#: contrib/admin/options.py:539
+#: contrib/admin/options.py:576
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr "L'objet %(name)s \"%(obj)s\" a été supprimé avec succès."
-#: contrib/admin/options.py:542
+#: contrib/admin/options.py:579
msgid "Are you sure?"
msgstr "Êtes-vous sûr ?"
-#: contrib/admin/options.py:564
+#: contrib/admin/options.py:601
#, python-format
msgid "Change history: %s"
-msgstr "Historique des changements : %s"
+msgstr "Historique des changements : %s"
-#: contrib/admin/models.py:16
+#: contrib/admin/models.py:17
msgid "action time"
msgstr "heure de l'action"
-#: contrib/admin/models.py:19
+#: contrib/admin/models.py:20
msgid "object id"
msgstr "id de l'objet"
-#: contrib/admin/models.py:20
+#: contrib/admin/models.py:21
msgid "object repr"
msgstr "représentation de l'objet"
-#: contrib/admin/models.py:21
+#: contrib/admin/models.py:22
msgid "action flag"
msgstr "indicateur de l'action"
-#: contrib/admin/models.py:22
+#: contrib/admin/models.py:23
msgid "change message"
msgstr "message de modification"
-#: contrib/admin/models.py:25
+#: contrib/admin/models.py:26
msgid "log entry"
msgstr "entrée d'historique"
-#: contrib/admin/models.py:26
+#: contrib/admin/models.py:27
msgid "log entries"
msgstr "entrées d'historique"
-#: contrib/admin/widgets.py:43
+#: contrib/admin/widgets.py:44
msgid "Date:"
-msgstr "Date :"
+msgstr "Date :"
-#: contrib/admin/widgets.py:43
+#: contrib/admin/widgets.py:44
msgid "Time:"
-msgstr "Heure :"
+msgstr "Heure :"
#: contrib/admin/sites.py:13 contrib/admin/views/decorators.py:10
#: contrib/auth/forms.py:60
@@ -1267,7 +1304,7 @@ msgid ""
"Please enter a correct username and password. Note that both fields are case-"
"sensitive."
msgstr ""
-"Saisissez s'il vous plaît un nom d'utilisateur et un mot de passe valide. "
+"Veuillez saisir un nom d'utilisateur et un mot de passe valide. "
"Remarquez que chacun de ces champs est sensible à la casse (différenciation "
"des majuscules/minuscules)."
@@ -1281,16 +1318,16 @@ msgid ""
"Please log in again, because your session has expired. Don't worry: Your "
"submission has been saved."
msgstr ""
-"Votre session a expiré, connectez-vous de nouveau s'il vous plaît. Ne vous "
-"inquiétez pas, votre travail précédement éffectué a été sauvé."
+"Veuillez vous reconnecter, car votre session a expiré. Ne vous "
+"inquiétez pas, votre soumission a été enregistrée."
#: contrib/admin/sites.py:193 contrib/admin/views/decorators.py:69
msgid ""
"Looks like your browser isn't configured to accept cookies. Please enable "
"cookies, reload this page, and try again."
msgstr ""
-"Il semblerait que votre navigateur n'accepte pas les cookies. Activez-les, "
-"rechargez cette page et rééssayez s'il vous plaît."
+"Il semblerait que votre navigateur n'accepte pas les cookies. Veuillez"
+"les activer, recharger cette page, puis rééssayer."
#: contrib/admin/sites.py:207 contrib/admin/views/decorators.py:83
msgid "Usernames cannot contain the '@' character."
@@ -1302,54 +1339,54 @@ msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
"Votre courriel n'est pas votre nom d'utilisateur. Essayez '%s' à la place."
-#: contrib/admin/sites.py:263 contrib/admin/views/main.py:136
+#: contrib/admin/sites.py:276 contrib/admin/views/main.py:143
msgid "Site administration"
msgstr "Gestion du site"
-#: contrib/admin/templatetags/admin_list.py:247
+#: contrib/admin/templatetags/admin_list.py:252
msgid "All dates"
msgstr "Toutes les dates"
-#: contrib/admin/views/auth.py:30
+#: contrib/admin/views/auth.py:31
msgid "Add user"
msgstr "Ajouter l'utilisateur"
-#: contrib/admin/views/auth.py:55
+#: contrib/admin/views/auth.py:56
msgid "Password changed successfully."
msgstr "Mot de passe modifié avec succés"
-#: contrib/admin/views/auth.py:62
+#: contrib/admin/views/auth.py:63
#, python-format
msgid "Change password: %s"
-msgstr "Modifier le mot de passe : %s"
+msgstr "Modifier le mot de passe : %s"
-#: contrib/admin/views/main.py:215
+#: contrib/admin/views/main.py:222
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Un ou plusieurs %(fieldname)s dans %(name)s : %(obj)s"
+msgstr "Un ou plusieurs %(fieldname)s dans %(name)s : %(obj)s"
-#: contrib/admin/views/main.py:220
+#: contrib/admin/views/main.py:227
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Un ou plusieurs %(fieldname)s dans %(name)s : "
+msgstr "Un ou plusieurs %(fieldname)s dans %(name)s :"
-#: contrib/admin/views/main.py:262
+#: contrib/admin/views/main.py:269
#, python-format
msgid "Select %s"
msgstr "Sélectionnez %s"
-#: contrib/admin/views/main.py:262
+#: contrib/admin/views/main.py:269
#, python-format
msgid "Select %s to change"
msgstr "Sélectionnez %s pour changer"
#: contrib/admin/templates/widget/file.html:2
msgid "Currently:"
-msgstr "Actuellement :"
+msgstr "Actuellement :"
#: contrib/admin/templates/widget/file.html:3
msgid "Change:"
-msgstr "Modification :"
+msgstr "Modification :"
#: contrib/admin/templates/admin/object_history.html:4
#: contrib/admin/templates/admin/change_list.html:8
@@ -1465,7 +1502,7 @@ msgid ""
msgstr ""
"Une erreur est survenue. Elle a été transmise par courriel aux "
"administrateurs du site et sera corrigée dans les meilleurs délais. Merci "
-"pour votre patience."
+"de votre patience."
#: contrib/admin/templates/admin/invalid_setup.html:7
msgid ""
@@ -1473,8 +1510,8 @@ msgid ""
"database tables have been created, and make sure the database is readable by "
"the appropriate user."
msgstr ""
-"Quelque chose ne va pas avec votre base de données. Vérifiez que lesbonnes "
-"bases ont été créées, et qu'elle est lisible par le bon utilisateur."
+"Quelque chose ne va pas avec votre base de données. Vérifiez que les bonnes "
+"tables ont été créées, et que la base est lisible par le bon utilisateur."
#: contrib/admin/templates/admin/search_form.html:8
msgid "Go"
@@ -1577,7 +1614,7 @@ msgid ""
msgstr ""
"Supprimer l'objet %(object_name)s '%(escaped_object)s' provoquerait la "
"suppression des objets qui lui sont liés mais votre compte ne possède pas la "
-"permission de supprimer les types d'objets suivants :"
+"permission de supprimer les types d'objets suivants :"
#: contrib/admin/templates/admin/delete_confirmation.html:24
#, python-format
@@ -1587,7 +1624,7 @@ msgid ""
msgstr ""
"Êtes vous certain de vouloir supprimer l'objet %(object_name)s \"%"
"(escaped_object)s\" ? Les éléments suivant sont liés à celui-ci et seront "
-"aussi supprimés :"
+"aussi supprimés :"
#: contrib/admin/templates/admin/delete_confirmation.html:29
msgid "Yes, I'm sure"
@@ -1636,7 +1673,7 @@ msgid ""
"First, enter a username and password. Then, you'll be able to edit more user "
"options."
msgstr ""
-"Entrez tout d'abord un nom d'utilisateur et un mot de passe.Vous pourrez "
+"Entrez tout d'abord un nom d'utilisateur et un mot de passe. Vous pourrez "
"ensuite modifier plus d'options."
#: contrib/admin/templates/admin/auth/user/add_form.html:12
@@ -1677,7 +1714,7 @@ msgstr ""
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
-msgstr "Courriel :"
+msgstr "Courriel :"
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "Reset my password"
@@ -1715,15 +1752,15 @@ msgstr ""
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
-msgstr "Ancien mot de passe :"
+msgstr "Ancien mot de passe :"
#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
-msgstr "Nouveau mot de passe :"
+msgstr "Nouveau mot de passe :"
#: contrib/admin/templates/registration/password_change_form.html:21
msgid "Confirm password:"
-msgstr "Confirmation du nouveau mot de passe"
+msgstr "Confirmation du mot de passe"
#: contrib/admin/templates/registration/password_change_form.html:23
msgid "Change my password"
@@ -1742,15 +1779,15 @@ msgstr "pour votre compte au site %(site_name)s"
#: contrib/admin/templates/registration/password_reset_email.html:5
#, python-format
msgid "Your new password is: %(new_password)s"
-msgstr "Votre nouveau mot de passe est : %(new_password)s"
+msgstr "Votre nouveau mot de passe est : %(new_password)s"
#: contrib/admin/templates/registration/password_reset_email.html:7
msgid "Feel free to change this password by going to this page:"
-msgstr "Vous pouvez modifier ce mot de passe à l'adresse suivante :"
+msgstr "Vous pouvez modifier ce mot de passe à l'adresse suivante :"
#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:"
-msgstr "Votre nom d'utilisateur, en cas d'oubli :"
+msgstr "Votre nom d'utilisateur, en cas d'oubli :"
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
@@ -1780,10 +1817,9 @@ msgid ""
"your computer is \"internal\").
By %s:
\n"
@@ -1181,173 +1181,63 @@ msgstr ""
"Av %s:
\n"
"\n"
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
+#: contrib/admin/filterspecs.py:72 contrib/admin/filterspecs.py:90
+#: contrib/admin/filterspecs.py:145 contrib/admin/filterspecs.py:171
msgid "All"
msgstr "Alla"
-#: contrib/admin/filterspecs.py:109
+#: contrib/admin/filterspecs.py:111
msgid "Any date"
msgstr "Alla datum"
-#: contrib/admin/filterspecs.py:110
+#: contrib/admin/filterspecs.py:112
msgid "Today"
msgstr "Idag"
-#: contrib/admin/filterspecs.py:113
+#: contrib/admin/filterspecs.py:115
msgid "Past 7 days"
msgstr "Senaste 7 dagarna"
-#: contrib/admin/filterspecs.py:115
+#: contrib/admin/filterspecs.py:117
msgid "This month"
msgstr "Den här månaden"
-#: contrib/admin/filterspecs.py:117
+#: contrib/admin/filterspecs.py:119
msgid "This year"
msgstr "Det här året"
-#: contrib/admin/models.py:16
+#: contrib/admin/models.py:17
msgid "action time"
msgstr "händelsetid"
-#: contrib/admin/models.py:19
+#: contrib/admin/models.py:20
msgid "object id"
msgstr "objektets id"
-#: contrib/admin/models.py:20
+#: contrib/admin/models.py:21
msgid "object repr"
msgstr "objektets beskrivning"
-#: contrib/admin/models.py:21
+#: contrib/admin/models.py:22
msgid "action flag"
msgstr "händelseflagga"
-#: contrib/admin/models.py:22
+#: contrib/admin/models.py:23
msgid "change message"
msgstr "ändra meddelande"
-#: contrib/admin/models.py:25
+#: contrib/admin/models.py:26
msgid "log entry"
msgstr "loggpost"
-#: contrib/admin/models.py:26
+#: contrib/admin/models.py:27
msgid "log entries"
msgstr "loggposter"
-#: contrib/admin/templatetags/admin_list.py:249
+#: contrib/admin/templatetags/admin_list.py:254
msgid "All dates"
msgstr "Alla datum"
-#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" lades till."
-
-#: contrib/admin/views/auth.py:24 contrib/admin/views/main.py:261
-#: contrib/admin/views/main.py:347
-msgid "You may edit it again below."
-msgstr "Du kan ändra det igen nedanför."
-
-#: contrib/admin/views/auth.py:30
-msgid "Add user"
-msgstr "Lägg till användare"
-
-#: contrib/admin/views/auth.py:57
-msgid "Password changed successfully."
-msgstr "Lösenordet ändrades framgångsrikt."
-
-#: contrib/admin/views/auth.py:64
-#, python-format
-msgid "Change password: %s"
-msgstr "Ändra lösenord: %s"
-
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
-msgstr "Site-administration"
-
-#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
-#, python-format
-msgid "You may add another %s below."
-msgstr "Du kan lägga till en till %s nedanför."
-
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "Lägg till %s"
-
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "Lade till %s."
-
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr "Ändrade %s."
-
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "Tog bort %s."
-
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "Inga fält ändrade."
-
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" ändrades."
-
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" lades till. Du kan ändra det igen nedanför."
-
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
-msgstr "Ändra %s"
-
-#: contrib/admin/views/main.py:476
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Ett eller flera %(fieldname)s i %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:481
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Ett eller flera %(fieldname)s i %(name)s:"
-
-#: contrib/admin/views/main.py:514
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)set \"%(obj)s\" togs bort."
-
-#: contrib/admin/views/main.py:517
-msgid "Are you sure?"
-msgstr "Är du säker?"
-
-#: contrib/admin/views/main.py:539
-#, python-format
-msgid "Change history: %s"
-msgstr "Ändra historik: %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s"
-msgstr "Välj %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s to change"
-msgstr "Välj %s att ändra"
-
-#: contrib/admin/views/main.py:768
-msgid "Database error"
-msgstr "Databasfel"
-
#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60
msgid ""
"Please enter a correct username and password. Note that both fields are case-"
@@ -1366,165 +1256,275 @@ msgid ""
"Please log in again, because your session has expired. Don't worry: Your "
"submission has been saved."
msgstr ""
-"Var god logga in igen, eftersom din session har tagit slut. "
-"Oroa dig inte: Ditt bidrag har sparats."
+"Var god logga in igen, eftersom din session har tagit slut. Oroa dig inte: "
+"Ditt bidrag har sparats."
#: contrib/admin/views/decorators.py:69
msgid ""
"Looks like your browser isn't configured to accept cookies. Please enable "
"cookies, reload this page, and try again."
msgstr ""
-"Det ser ut som om din webläsare inte är konfigurerad att acceptera cookies. "
+"Det verkar som att din webläsare inte är konfigurerad att acceptera cookies. "
"Aktivera cookies, ladda om den här sidan, och försök igen."
#: contrib/admin/views/decorators.py:83
msgid "Usernames cannot contain the '@' character."
-msgstr "Användarnamn kan inte innehålla '@' tecknet."
+msgstr "Användarnamn får inte innehålla '@'-tecknet."
#: contrib/admin/views/decorators.py:85
#, python-format
msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Din e-mailadress är inte ditt användarnamn. Försök med '%s' istället."
+msgstr "Din e-postadress är inte ditt användarnamn. Försök med '%s' istället."
-#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
+#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:264
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "%(name)s \"%(obj)s\" lades till."
+
+#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:268
+#: contrib/admin/views/main.py:354
+msgid "You may edit it again below."
+msgstr "Du kan ändra det igen nedanför."
+
+#: contrib/admin/views/auth.py:31
+msgid "Add user"
+msgstr "Lägg till användare"
+
+#: contrib/admin/views/auth.py:58
+msgid "Password changed successfully."
+msgstr "Lösenordet ändrades."
+
+#: contrib/admin/views/auth.py:65
+#, python-format
+msgid "Change password: %s"
+msgstr "Ändra lösenord: %s"
+
+#: contrib/admin/views/main.py:230
+msgid "Site administration"
+msgstr "Webbplatsadministration"
+
+#: contrib/admin/views/main.py:278 contrib/admin/views/main.py:363
+#, python-format
+msgid "You may add another %s below."
+msgstr "Du kan lägga till en till %s nedanför."
+
+#: contrib/admin/views/main.py:296
+#, python-format
+msgid "Add %s"
+msgstr "Lägg till %s"
+
+#: contrib/admin/views/main.py:342
+#, python-format
+msgid "Added %s."
+msgstr "Lade till %s."
+
+#: contrib/admin/views/main.py:344
+#, python-format
+msgid "Changed %s."
+msgstr "Ändrade %s."
+
+#: contrib/admin/views/main.py:346
+#, python-format
+msgid "Deleted %s."
+msgstr "Tog bort %s."
+
+#: contrib/admin/views/main.py:349
+msgid "No fields changed."
+msgstr "Inga fält ändrade."
+
+#: contrib/admin/views/main.py:352
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr "%(name)s \"%(obj)s\" ändrades."
+
+#: contrib/admin/views/main.py:360
+#, python-format
+msgid ""
+"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
+msgstr "%(name)s \"%(obj)s\" lades till. Du kan ändra det igen nedanför."
+
+#: contrib/admin/views/main.py:398
+#, python-format
+msgid "Change %s"
+msgstr "Ändra %s"
+
+#: contrib/admin/views/main.py:483
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
+msgstr "Ett eller flera %(fieldname)s i %(name)s: %(obj)s"
+
+#: contrib/admin/views/main.py:488
+#, python-format
+msgid "One or more %(fieldname)s in %(name)s:"
+msgstr "Ett eller flera %(fieldname)s i %(name)s:"
+
+#: contrib/admin/views/main.py:520
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "%(name)set \"%(obj)s\" togs bort."
+
+#: contrib/admin/views/main.py:523
+msgid "Are you sure?"
+msgstr "Är du säker?"
+
+#: contrib/admin/views/main.py:545
+#, python-format
+msgid "Change history: %s"
+msgstr "Ändringshistorik: %s"
+
+#: contrib/admin/views/main.py:579
+#, python-format
+msgid "Select %s"
+msgstr "Välj %s"
+
+#: contrib/admin/views/main.py:579
+#, python-format
+msgid "Select %s to change"
+msgstr "Välj %s att ändra"
+
+#: contrib/admin/views/main.py:780
+msgid "Database error"
+msgstr "Databasfel"
+
+#: contrib/admin/views/doc.py:47 contrib/admin/views/doc.py:49
+#: contrib/admin/views/doc.py:51
msgid "tag:"
msgstr "tagg:"
-#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
+#: contrib/admin/views/doc.py:78 contrib/admin/views/doc.py:80
+#: contrib/admin/views/doc.py:82
msgid "filter:"
msgstr "filter:"
-#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
+#: contrib/admin/views/doc.py:136 contrib/admin/views/doc.py:138
+#: contrib/admin/views/doc.py:140
msgid "view:"
msgstr "vy:"
-#: contrib/admin/views/doc.py:164
+#: contrib/admin/views/doc.py:165
#, python-format
msgid "App %r not found"
msgstr "Applikation %r hittades inte"
-#: contrib/admin/views/doc.py:171
-#, fuzzy, python-format
+#: contrib/admin/views/doc.py:172
+#, python-format
msgid "Model %(name)r not found in app %(label)r"
-msgstr "Modellen %(model_name)r hittades inte i applikation %(app_label)r"
+msgstr "Modellen %(name)r hittades inte i applikation %(label)r"
-#: contrib/admin/views/doc.py:183
-#, fuzzy, python-format
+#: contrib/admin/views/doc.py:184
+#, python-format
msgid "the related `%(label)s.%(type)s` object"
-msgstr "det relaterade `%(app_label)s.%(data_type)s` objektet"
+msgstr "det relaterade `%(label)s.%(type)s`-objektet"
-#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
+#: contrib/admin/views/doc.py:184 contrib/admin/views/doc.py:206
+#: contrib/admin/views/doc.py:220 contrib/admin/views/doc.py:225
msgid "model:"
msgstr "modell:"
-#: contrib/admin/views/doc.py:214
-#, fuzzy, python-format
+#: contrib/admin/views/doc.py:215
+#, python-format
msgid "related `%(label)s.%(name)s` objects"
-msgstr "relaterade `%(app_label)s.%(object_name)s` objekt"
+msgstr "relaterade `%(label)s.%(name)s`-objekt"
-#: contrib/admin/views/doc.py:219
+#: contrib/admin/views/doc.py:220
#, python-format
msgid "all %s"
msgstr "alla %s"
-#: contrib/admin/views/doc.py:224
+#: contrib/admin/views/doc.py:225
#, python-format
msgid "number of %s"
msgstr "antal %s"
-#: contrib/admin/views/doc.py:229
+#: contrib/admin/views/doc.py:230
#, python-format
msgid "Fields on %s objects"
msgstr "Fält på %s objekt"
-#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:304 contrib/admin/views/doc.py:310
-#: contrib/admin/views/doc.py:311 contrib/admin/views/doc.py:313
+#: contrib/admin/views/doc.py:292 contrib/admin/views/doc.py:303
+#: contrib/admin/views/doc.py:305 contrib/admin/views/doc.py:311
+#: contrib/admin/views/doc.py:312 contrib/admin/views/doc.py:314
msgid "Integer"
msgstr "Heltal"
-#: contrib/admin/views/doc.py:292
+#: contrib/admin/views/doc.py:293
msgid "Boolean (Either True or False)"
msgstr "Boolesk (antingen True eller False)"
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:312
+#: contrib/admin/views/doc.py:294 contrib/admin/views/doc.py:313
#, python-format
msgid "String (up to %(maxlength)s)"
msgstr "Sträng (upp till %(maxlength)s)"
-#: contrib/admin/views/doc.py:294
+#: contrib/admin/views/doc.py:295
msgid "Comma-separated integers"
msgstr "Komma-separerade heltal"
-#: contrib/admin/views/doc.py:295
+#: contrib/admin/views/doc.py:296
msgid "Date (without time)"
msgstr "Datum (utan tid)"
-#: contrib/admin/views/doc.py:296
+#: contrib/admin/views/doc.py:297
msgid "Date (with time)"
msgstr "Datum (med tid)"
-#: contrib/admin/views/doc.py:297
+#: contrib/admin/views/doc.py:298
msgid "Decimal number"
msgstr "Decimaltal"
-#: contrib/admin/views/doc.py:298
+#: contrib/admin/views/doc.py:299
msgid "E-mail address"
msgstr "E-postadress:"
-#: contrib/admin/views/doc.py:299 contrib/admin/views/doc.py:300
-#: contrib/admin/views/doc.py:303
+#: contrib/admin/views/doc.py:300 contrib/admin/views/doc.py:301
+#: contrib/admin/views/doc.py:304
msgid "File path"
msgstr "Filsökväg"
-#: contrib/admin/views/doc.py:301
+#: contrib/admin/views/doc.py:302
msgid "Floating point number"
msgstr "Flyttal"
-#: contrib/admin/views/doc.py:307
+#: contrib/admin/views/doc.py:308
msgid "Boolean (Either True, False or None)"
msgstr "Boolesk (antingen True, False eller None)"
-#: contrib/admin/views/doc.py:308
+#: contrib/admin/views/doc.py:309
msgid "Relation to parent model"
msgstr "Relation till förälder-modell"
-#: contrib/admin/views/doc.py:309
+#: contrib/admin/views/doc.py:310
msgid "Phone number"
msgstr "Telefonnummer"
-#: contrib/admin/views/doc.py:314
+#: contrib/admin/views/doc.py:315
msgid "Text"
msgstr "Text"
-#: contrib/admin/views/doc.py:315
+#: contrib/admin/views/doc.py:316
msgid "Time"
msgstr "Tid"
-#: contrib/admin/views/doc.py:316 contrib/flatpages/models.py:7
+#: contrib/admin/views/doc.py:317 contrib/flatpages/models.py:7
msgid "URL"
msgstr "URL"
-#: contrib/admin/views/doc.py:317
-msgid "U.S. state (two uppercase letters)"
-msgstr "Stat i USA (två versaler)"
-
#: contrib/admin/views/doc.py:318
+msgid "U.S. state (two uppercase letters)"
+msgstr "Delstat i USA (två versaler)"
+
+#: contrib/admin/views/doc.py:319
msgid "XML text"
msgstr "XML-text"
-#: contrib/admin/views/doc.py:344
+#: contrib/admin/views/doc.py:345
#, python-format
msgid "%s does not appear to be a urlpattern object"
msgstr "%s verkar inte vara ett urlpattern-objekt"
#: contrib/admin/templates/widget/file.html:2
msgid "Currently:"
-msgstr "Nuvarande:"
+msgstr "Aktuell:"
#: contrib/admin/templates/widget/file.html:3
msgid "Change:"
@@ -1538,11 +1538,11 @@ msgstr "Datum:"
msgid "Time:"
msgstr "Tid:"
-#: contrib/admin/templates/admin/change_list.html:5
#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_list.html:5
#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/auth/user/change_password.html:9
#: contrib/admin/templates/registration/password_change_done.html:3
#: contrib/admin/templates/registration/password_change_form.html:3
@@ -1550,36 +1550,36 @@ msgstr "Tid:"
msgid "Documentation"
msgstr "Dokumentation"
-#: contrib/admin/templates/admin/change_list.html:5
#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/change_list.html:5
#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/delete_confirmation.html:3
#: contrib/admin/templates/admin/auth/user/change_password.html:9
#: contrib/admin/templates/admin/auth/user/change_password.html:15
#: contrib/admin/templates/admin/auth/user/change_password.html:46
#: contrib/admin/templates/registration/password_change_done.html:3
#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/view_detail.html:4
#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
+#: contrib/admin/templates/admin_doc/view_detail.html:4
#: contrib/admin/templates/admin_doc/template_tag_index.html:5
+#: contrib/admin/templates/admin_doc/template_detail.html:4
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
#: contrib/admin/templates/admin_doc/missing_docutils.html:4
#: contrib/admin/templates/admin_doc/view_index.html:5
#: contrib/admin/templates/admin_doc/model_detail.html:3
#: contrib/admin/templates/admin_doc/index.html:4
#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
msgid "Change password"
msgstr "Ändra lösenord"
-#: contrib/admin/templates/admin/change_list.html:6
#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/change_list.html:6
#: contrib/admin/templates/admin/500.html:4
#: contrib/admin/templates/admin/invalid_setup.html:4
#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/delete_confirmation.html:6
#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/delete_confirmation.html:6
#: contrib/admin/templates/admin/auth/user/change_password.html:12
#: contrib/admin/templates/registration/password_change_done.html:4
#: contrib/admin/templates/registration/password_reset_form.html:4
@@ -1590,16 +1590,6 @@ msgstr "Ändra lösenord"
msgid "Home"
msgstr "Hem"
-#: contrib/admin/templates/admin/change_list.html:12
-#, python-format
-msgid "Add %(name)s"
-msgstr "Lägg till %(name)s"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Av %(filter_title)s "
-
#: contrib/admin/templates/admin/object_history.html:5
#: contrib/admin/templates/admin/change_form.html:21
msgid "History"
@@ -1627,7 +1617,46 @@ msgid ""
"admin site."
msgstr ""
"Det här objektet har ingen ändringshistorik. Det lades antagligen inte till "
-"via denna administrationssite."
+"via denna administrationssida."
+
+#: contrib/admin/templates/admin/change_list.html:12
+#, python-format
+msgid "Add %(name)s"
+msgstr "Lägg till %(name)s"
+
+#: contrib/admin/templates/admin/filter.html:2
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " Av %(filter_title)s "
+
+#: contrib/admin/templates/admin/500.html:4
+msgid "Server error"
+msgstr "Serverfel"
+
+#: contrib/admin/templates/admin/500.html:6
+msgid "Server error (500)"
+msgstr "Serverfel (500)"
+
+#: contrib/admin/templates/admin/500.html:9
+msgid "Server Error (500)"
+msgstr "Serverfel (500)"
+
+#: contrib/admin/templates/admin/500.html:10
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Ett fel har uppstått. Administratören har meddelats via e-post och felet bör "
+"åtgärdas snart. Tack för ditt tålamod."
+
+#: contrib/admin/templates/admin/invalid_setup.html:8
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Någonting är fel med din databasinstallation. Se till att de rätta "
+"databastabellerna har skapats och att databasen är läsbar av rätt användare."
#: contrib/admin/templates/admin/search_form.html:8
msgid "Go"
@@ -1651,45 +1680,29 @@ msgstr "Visa alla"
#: contrib/admin/templates/admin/base_site.html:4
msgid "Django site admin"
-msgstr "Django site-administration"
+msgstr "Django webbplatsadministration"
#: contrib/admin/templates/admin/base_site.html:7
msgid "Django administration"
-msgstr "Django administration"
+msgstr "Django-administration"
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Serverfel"
+#: contrib/admin/templates/admin/filters.html:4
+msgid "Filter"
+msgstr "Filter"
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Serverfel (500)"
+#: contrib/admin/templates/admin/404.html:4
+#: contrib/admin/templates/admin/404.html:8
+msgid "Page not found"
+msgstr "Sidan kunde inte hittas"
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error (500)"
-msgstr "Serverfel (500)"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Ett fel har uppstått. Administratören har meddelats via e-mail och felet bör "
-"åtgärdas snart. Tack för ditt tålamod."
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Någonting är fel med din databasinstallation. Se till att de rätta "
-"tabellerna har skapats och att databasen är läsbar av rätt användare."
+#: contrib/admin/templates/admin/404.html:10
+msgid "We're sorry, but the requested page could not be found."
+msgstr "Vi är ledsna, men den efterfrågade sidan kunde inte hittas."
#: contrib/admin/templates/admin/index.html:17
#, python-format
msgid "Models available in the %(name)s application."
-msgstr "Modeller tillgängliga i %(name)s applikationen."
+msgstr "Modeller tillgängliga i applikationen %(name)s."
#: contrib/admin/templates/admin/index.html:18
#, python-format
@@ -1698,9 +1711,8 @@ msgstr "%(name)s"
#: contrib/admin/templates/admin/index.html:28
#: contrib/admin/templates/admin/change_form.html:15
-#, fuzzy
msgid "Add"
-msgstr "Lägg till"
+msgstr "Lägg till"
#: contrib/admin/templates/admin/index.html:34
msgid "Change"
@@ -1712,32 +1724,19 @@ msgstr "Du har inte rättigheter att ändra något."
#: contrib/admin/templates/admin/index.html:52
msgid "Recent Actions"
-msgstr "Senaste Händelserna"
+msgstr "Senaste händelser"
#: contrib/admin/templates/admin/index.html:53
msgid "My Actions"
-msgstr "Mina Händelser"
+msgstr "Mina händelser"
#: contrib/admin/templates/admin/index.html:57
msgid "None available"
msgstr "Inga tillgängliga"
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Sidan kunde inte hittas"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Vi är ledsna, men den efterfrågade sidan kunde inte hittas."
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filter"
-
#: contrib/admin/templates/admin/change_form.html:22
msgid "View on site"
-msgstr "Visa på site"
+msgstr "Visa på webbplats"
#: contrib/admin/templates/admin/change_form.html:32
#: contrib/admin/templates/admin/auth/user/change_password.html:24
@@ -1754,6 +1753,10 @@ msgstr "Sortering"
msgid "Order:"
msgstr "Sortera:"
+#: contrib/admin/templates/admin/base.html:25
+msgid "Welcome,"
+msgstr "Välkommen,"
+
#: contrib/admin/templates/admin/delete_confirmation.html:9
#: contrib/admin/templates/admin/submit_line.html:3
msgid "Delete"
@@ -1767,7 +1770,7 @@ msgid ""
"following types of objects:"
msgstr ""
"Att ta bort %(object_name)s '%(escaped_object)s' skulle innebära att "
-"besläktade objekt togs bort, men ditt konto har inte rättigheter att ta bort "
+"relaterade objekt togs bort, men ditt konto har inte rättigheter att ta bort "
"följande objekttyper:"
#: contrib/admin/templates/admin/delete_confirmation.html:21
@@ -1777,16 +1780,12 @@ msgid ""
"All of the following related items will be deleted:"
msgstr ""
"Är du säker på att du vill ta bort %(object_name)s \"%(escaped_object)s\"? "
-"Alla dessa sammanlänkade objekt kommer att tas bort:"
+"Alla dessa relaterade objekt kommer att tas bort:"
#: contrib/admin/templates/admin/delete_confirmation.html:26
msgid "Yes, I'm sure"
msgstr "Ja, jag är säker"
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Välkommen,"
-
#: contrib/admin/templates/admin/submit_line.html:4
msgid "Save as new"
msgstr "Spara som ny"
@@ -1821,14 +1820,14 @@ msgstr "Lösenord (igen)"
#: contrib/admin/templates/admin/auth/user/change_password.html:40
#: contrib/admin/templates/admin/auth/user/add_form.html:24
msgid "Enter the same password as above, for verification."
-msgstr "Fyll i samma lösenord som ovan för verifiering."
+msgstr "Fyll i samma lösenord som ovan, för verifiering."
#: contrib/admin/templates/admin/auth/user/add_form.html:6
msgid ""
"First, enter a username and password. Then, you'll be able to edit more user "
"options."
msgstr ""
-"Ange först ett användarnamn och ett lösenord. Sedan kommer du att kunna "
+"Ange först ett användarnamn och ett lösenord. Du kommer sedan att kunna "
"ändra fler användaralternativ."
#: contrib/admin/templates/admin/auth/user/add_form.html:12
@@ -1863,8 +1862,8 @@ msgid ""
"Forgotten your password? Enter your e-mail address below, and we'll reset "
"your password and e-mail the new one to you."
msgstr ""
-"Har du glömt ditt lösenord? Fyll i din e-mailadress nedan, så nollställer vi "
-"ditt lösenord och mailar det nya till dig."
+"Har du glömt ditt lösenord? Fyll i din e-postadress nedan, så nollställer vi "
+"ditt lösenord och skickar det nya till dig via e-post."
#: contrib/admin/templates/registration/password_reset_form.html:16
msgid "E-mail address:"
@@ -1876,7 +1875,7 @@ msgstr "Nollställ mitt lösenord"
#: contrib/admin/templates/registration/logged_out.html:8
msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Tack för att du spenderade kvalitetstid med web-siten idag."
+msgstr "Tack för att du spenderade lite kvalitetstid med webbplatsen idag."
#: contrib/admin/templates/registration/logged_out.html:10
msgid "Log in again"
@@ -1885,15 +1884,15 @@ msgstr "Logga in igen"
#: contrib/admin/templates/registration/password_reset_done.html:6
#: contrib/admin/templates/registration/password_reset_done.html:10
msgid "Password reset successful"
-msgstr "Lösenordsnollställning lyckades."
+msgstr "Lösenordsnollställning lyckades"
#: contrib/admin/templates/registration/password_reset_done.html:12
msgid ""
"We've e-mailed a new password to the e-mail address you submitted. You "
"should be receiving it shortly."
msgstr ""
-"Vi har skickat ett nytt lösenord till e-mailadressen du fyllde i. Det bör "
-"anlända snarast."
+"Vi har skickat ett nytt lösenord till e-postadressen du fyllde i. Det bör "
+"anlända inom kort."
#: contrib/admin/templates/registration/password_change_form.html:12
msgid ""
@@ -1905,7 +1904,7 @@ msgstr ""
#: contrib/admin/templates/registration/password_change_form.html:17
msgid "Old password:"
-msgstr "Gamla lösenordet:"
+msgstr "Gammalt lösenord:"
#: contrib/admin/templates/registration/password_change_form.html:19
msgid "New password:"
@@ -1921,7 +1920,8 @@ msgstr "Ändra mitt lösenord"
#: contrib/admin/templates/registration/password_reset_email.html:2
msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Du får det här mailet eftersom du bad om att få lösenordet nollställt"
+msgstr ""
+"Du får det här e-postbrevet eftersom du bad om att få lösenordet nollställt"
#: contrib/admin/templates/registration/password_reset_email.html:3
#, python-format
@@ -1936,8 +1936,7 @@ msgstr "Ditt nya lösenord är: %(new_password)s"
#: contrib/admin/templates/registration/password_reset_email.html:7
msgid "Feel free to change this password by going to this page:"
msgstr ""
-"Känn dig välkommen att ändra det här lösenordet genom att gå till den här "
-"sidan:"
+"Du är välkommen att ändra det här lösenordet genom att gå till den här sidan:"
#: contrib/admin/templates/registration/password_reset_email.html:11
msgid "Your username, in case you've forgotten:"
@@ -1945,7 +1944,7 @@ msgstr "Ditt användarnamn, om du har glömt:"
#: contrib/admin/templates/registration/password_reset_email.html:13
msgid "Thanks for using our site!"
-msgstr "Tack för att du använder vår site!"
+msgstr "Tack för att du använder vår webbplats!"
#: contrib/admin/templates/registration/password_reset_email.html:15
#, python-format
@@ -1974,7 +1973,7 @@ msgstr ""
"
By %s:
\n"
-"\n"
-msgstr ""
-"
由 %s:
\n"
-"\n"
-
-#: contrib/admin/filterspecs.py:70
-#: contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
-msgid "All"
-msgstr "全部"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "任意日期"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "今天"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "前7天"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "本月"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "今年"
-
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr "是"
-
-#: contrib/admin/filterspecs.py:143
-msgid "No"
-msgstr "否"
-
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr "未知"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "动作时间"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "对象id"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "对象表示"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "动作标志"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "修改消息"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "日志记录"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "日志记录"
-
-#: contrib/admin/templatetags/admin_list.py:228
-msgid "All dates"
-msgstr "全有日期"
-
-#: contrib/admin/views/decorators.py:9
-#: contrib/auth/forms.py:36
-#: contrib/auth/forms.py:41
-msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
-msgstr "请输入正确的用户名和口令。请注意两个域都是大小写敏感的。"
-
-#: contrib/admin/views/decorators.py:23
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "登录"
-
-#: contrib/admin/views/decorators.py:61
-msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
-msgstr "请重新登录,因为你的会话已经过期。不用担心:你的提交已经被保存。"
-
-#: contrib/admin/views/decorators.py:68
-msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
-msgstr "看上去你的浏览器没有配置成接受 cookie 。请允许 cookie,重新装入本页面,再试一次。"
-
-#: contrib/admin/views/decorators.py:82
-msgid "Usernames cannot contain the '@' character."
-msgstr "用户名不能包含 '@' 字符。"
-
-#: contrib/admin/views/decorators.py:84
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "你的邮箱地址不是你的用户名。换 '%s' 试试。"
-
-#: contrib/admin/views/main.py:226
-msgid "Site administration"
-msgstr "站点管理员"
-
-#: contrib/admin/views/main.py:260
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" 添加成功。"
-
-#: contrib/admin/views/main.py:264
-#: contrib/admin/views/main.py:348
-msgid "You may edit it again below."
-msgstr "你可以在下面再次编辑它。"
-
-#: contrib/admin/views/main.py:272
-#: contrib/admin/views/main.py:357
-#, python-format
-msgid "You may add another %s below."
-msgstr "你可以在下面增加另一个 %s 。"
-
-#: contrib/admin/views/main.py:290
-#, python-format
-msgid "Add %s"
-msgstr "增加 %s"
-
-#: contrib/admin/views/main.py:336
-#, python-format
-msgid "Added %s."
-msgstr "%s 已增加。"
-
-#: contrib/admin/views/main.py:336
-#: contrib/admin/views/main.py:338
-#: contrib/admin/views/main.py:340
+#: db/models/manipulators.py:308
+#: contrib/admin/views/main.py:335
+#: contrib/admin/views/main.py:337
+#: contrib/admin/views/main.py:339
msgid "and"
msgstr "和"
-#: contrib/admin/views/main.py:338
+#: db/models/fields/related.py:53
#, python-format
-msgid "Changed %s."
-msgstr "已修改 %s 。"
+msgid "Please enter a valid %s."
+msgstr "请输入一个有效的 %s 。"
-#: contrib/admin/views/main.py:340
+#: db/models/fields/related.py:642
+msgid "Separate multiple IDs with commas."
+msgstr "用逗号分隔多个ID。"
+
+#: db/models/fields/related.py:644
+msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
+msgstr "按下 \"Control\",或者在Mac上按 \"Command\" 来选择多个值。"
+
+#: db/models/fields/related.py:691
#, python-format
-msgid "Deleted %s."
-msgstr "%s 已删除。"
+msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
+msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
+msgstr[0] "请输入有效的 %(self)s ID。值 %(value)r 无效。"
-#: contrib/admin/views/main.py:343
-msgid "No fields changed."
-msgstr "没有字段被修改。"
-
-#: contrib/admin/views/main.py:346
+#: db/models/fields/__init__.py:42
#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" 修改成功。"
-
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" 添加成功。你可以在下面再次编辑它。"
-
-#: contrib/admin/views/main.py:392
-#, python-format
-msgid "Change %s"
-msgstr "修改 %s"
-
-#: contrib/admin/views/main.py:470
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "一个或多个 %(fieldname)s 在 %(name)s 中: %(obj)s"
-
-#: contrib/admin/views/main.py:475
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "一个或多个 %(fieldname)s 在 %(name)s 中:"
-
-#: contrib/admin/views/main.py:508
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" 删除成功。"
-
-#: contrib/admin/views/main.py:511
-msgid "Are you sure?"
-msgstr "你确信吗?"
-
-#: contrib/admin/views/main.py:533
-#, python-format
-msgid "Change history: %s"
-msgstr "修改历史: %s"
-
-#: contrib/admin/views/main.py:565
-#, python-format
-msgid "Select %s"
-msgstr "选择 %s"
-
-#: contrib/admin/views/main.py:565
-#, python-format
-msgid "Select %s to change"
-msgstr "选择 %s 来修改"
-
-#: contrib/admin/views/doc.py:277
-#: contrib/admin/views/doc.py:286
-#: contrib/admin/views/doc.py:288
-#: contrib/admin/views/doc.py:294
-#: contrib/admin/views/doc.py:295
-#: contrib/admin/views/doc.py:297
-msgid "Integer"
-msgstr "整数"
-
-#: contrib/admin/views/doc.py:278
-msgid "Boolean (Either True or False)"
-msgstr "布尔(True或False)"
-
-#: contrib/admin/views/doc.py:279
-#: contrib/admin/views/doc.py:296
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "字符串(最长 %(maxlength)s)"
-
-#: contrib/admin/views/doc.py:280
-msgid "Comma-separated integers"
-msgstr "逗号分隔的整数"
-
-#: contrib/admin/views/doc.py:281
-msgid "Date (without time)"
-msgstr "日期(无时间)"
-
-#: contrib/admin/views/doc.py:282
-msgid "Date (with time)"
-msgstr "日期(带时间)"
-
-#: contrib/admin/views/doc.py:283
-msgid "E-mail address"
-msgstr "邮箱地址"
-
-#: contrib/admin/views/doc.py:284
-#: contrib/admin/views/doc.py:287
-msgid "File path"
-msgstr "文件路径"
-
-#: contrib/admin/views/doc.py:285
-msgid "Decimal number"
-msgstr "小数"
-
-#: contrib/admin/views/doc.py:291
-msgid "Boolean (Either True, False or None)"
-msgstr "布尔(True, False或None)"
-
-#: contrib/admin/views/doc.py:292
-msgid "Relation to parent model"
-msgstr "与父模型的关系"
-
-#: contrib/admin/views/doc.py:293
-msgid "Phone number"
-msgstr "电话号码"
-
-#: contrib/admin/views/doc.py:298
-msgid "Text"
-msgstr "文本"
-
-#: contrib/admin/views/doc.py:299
-msgid "Time"
-msgstr "时间"
-
-#: contrib/admin/views/doc.py:300
-#: contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:301
-msgid "U.S. state (two uppercase letters)"
-msgstr "美国州名(两个大写字母)"
-
-#: contrib/admin/views/doc.py:302
-msgid "XML text"
-msgstr "XML文本"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "文档"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Change password"
-msgstr "修改口令"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "首页"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:20
-msgid "History"
-msgstr "历史"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "日期/时间"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "用户"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "动作"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "此对象没有修改历史。可能不能通过这个管理站点来增加。"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django管理站点"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django管理员"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "服务器错误"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "服务器错误(500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error (500)"
-msgstr "服务器错误 (500)"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "存在一个错误。它已经通过电子邮件被报告给站点管理员了,并且应该很快被改正。谢谢你的关心。"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "页面没有找到"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "很报歉,请求页面无法找到。"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "在 %(name)s 应用中模块有效。"
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "增加"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "修改"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "你无权修改任何东西。"
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "最近动作"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "我的动作"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "无可用的"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "增加 %(name)s"
-
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you forgotten your password?"
-msgstr "忘记你的密码?"
-
-#: contrib/admin/templates/admin/base.html:23
-msgid "Welcome,"
-msgstr "欢迎,"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "删除"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid "Deleting the %(object_name)s '%(object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "删除 %(object_name)s '%(object)s' 会导致删除相关的对象,但你的帐号无权删除下列类型的对象:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid "Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of the following related items will be deleted:"
-msgstr "你确信相要删除 %(object_name)s \"%(object)s\"?所有相关的项目都将被删除:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "是的,我确定"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(title)s "
-msgstr " 由 %(title)s"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "去"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "在站点上查看"
-
-#: contrib/admin/templates/admin/change_form.html:30
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "请改正下面的错误。"
-
-#: contrib/admin/templates/admin/change_form.html:48
-msgid "Ordering"
-msgstr "排序中"
-
-#: contrib/admin/templates/admin/change_form.html:51
-msgid "Order:"
-msgstr "排序:"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "保存为新的"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "保存并增加另一个"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "保存并继续编辑"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "保存"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "口令修改"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "口令修改成功"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "你的口令已经被修改。"
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "口令重设"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you."
-msgstr "忘记你的口令?在下面输入你的邮箱地址,我们将重设你的口令并且将新的口令通过邮件发送给你。"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "邮箱地址:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "重设我的口令"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "感谢今天在本网站花费了您的一些宝贵时间。"
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "重新登录"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "口令重设成功"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "我们已经按你所提交的邮箱地址发送了一个新的口令给你。你应该很会收到这封邮件。"
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly."
-msgstr "请输入你的旧口令,为了安全起见,接着要输入你的新口令两遍,这样我们可以校验你输入的是否正确。"
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "旧口令:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "新口令:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "确认口令:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "修改我的口令"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "你所收到的这封邮件是由于你请求了口令重设"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "在 %(site_name)s 你的用户帐号"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "你的新口令是: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "到这个页面可以自由地修改口令:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "你的用户名,一旦你忘记了:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "感谢使用我们的站点!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s 小组"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "书签"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "文档书签"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"
By %s:
\n"
+"\n"
+msgstr ""
+"
由 %s:
\n"
+"\n"
+
+#: contrib/admin/filterspecs.py:70
+#: contrib/admin/filterspecs.py:88
+#: contrib/admin/filterspecs.py:143
+#: contrib/admin/filterspecs.py:169
+msgid "All"
+msgstr "全部"
+
+#: contrib/admin/filterspecs.py:109
+msgid "Any date"
+msgstr "任意日期"
+
+#: contrib/admin/filterspecs.py:110
+msgid "Today"
+msgstr "今天"
+
+#: contrib/admin/filterspecs.py:113
+msgid "Past 7 days"
+msgstr "前7天"
+
+#: contrib/admin/filterspecs.py:115
+msgid "This month"
+msgstr "本月"
+
+#: contrib/admin/filterspecs.py:117
+msgid "This year"
+msgstr "今年"
+
+#: contrib/admin/models.py:16
+msgid "action time"
+msgstr "动作时间"
+
+#: contrib/admin/models.py:19
+msgid "object id"
+msgstr "对象id"
+
+#: contrib/admin/models.py:20
+msgid "object repr"
+msgstr "对象表示"
+
+#: contrib/admin/models.py:21
+msgid "action flag"
+msgstr "动作标志"
+
+#: contrib/admin/models.py:22
+msgid "change message"
+msgstr "修改消息"
+
+#: contrib/admin/models.py:25
+msgid "log entry"
+msgstr "日志记录"
+
+#: contrib/admin/models.py:26
+msgid "log entries"
+msgstr "日志记录"
+
+#: contrib/admin/templatetags/admin_list.py:247
+msgid "All dates"
+msgstr "全有日期"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+#: contrib/admin/templates/admin/500.html:4
+#: contrib/admin/templates/admin/invalid_setup.html:4
+#: contrib/admin/templates/admin/object_history.html:5
+#: contrib/admin/templates/admin/delete_confirmation.html:6
+#: contrib/admin/templates/admin/change_list.html:6
+#: contrib/admin/templates/admin/change_form.html:13
+#: contrib/admin/templates/admin/base.html:30
+#: contrib/admin/templates/admin/auth/user/change_password.html:12
+#: contrib/admin/templates/registration/logged_out.html:4
+#: contrib/admin/templates/registration/password_reset_done.html:4
+#: contrib/admin/templates/registration/password_change_form.html:4
+#: contrib/admin/templates/registration/password_change_done.html:4
+#: contrib/admin/templates/registration/password_reset_form.html:4
+msgid "Home"
+msgstr "首页"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/auth/user/change_password.html:9
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/registration/password_change_done.html:3
+msgid "Documentation"
+msgstr "文档"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:3
+msgid "Bookmarklets"
+msgstr "书签"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:4
+#: contrib/admin/templates/admin_doc/missing_docutils.html:4
+#: contrib/admin/templates/admin_doc/view_detail.html:4
+#: contrib/admin/templates/admin_doc/template_filter_index.html:5
+#: contrib/admin/templates/admin_doc/view_index.html:5
+#: contrib/admin/templates/admin_doc/template_tag_index.html:5
+#: contrib/admin/templates/admin_doc/model_detail.html:3
+#: contrib/admin/templates/admin_doc/model_index.html:5
+#: contrib/admin/templates/admin_doc/index.html:4
+#: contrib/admin/templates/admin_doc/template_detail.html:4
+#: contrib/admin/templates/admin/object_history.html:3
+#: contrib/admin/templates/admin/delete_confirmation.html:3
+#: contrib/admin/templates/admin/change_list.html:5
+#: contrib/admin/templates/admin/change_form.html:10
+#: contrib/admin/templates/admin/base.html:25
+#: contrib/admin/templates/admin/auth/user/change_password.html:9
+#: contrib/admin/templates/admin/auth/user/change_password.html:15
+#: contrib/admin/templates/admin/auth/user/change_password.html:46
+#: contrib/admin/templates/registration/password_change_form.html:3
+#: contrib/admin/templates/registration/password_change_done.html:3
+msgid "Change password"
+msgstr "修改口令"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:5
+msgid "Documentation bookmarklets"
+msgstr "文档书签"
+
+#: contrib/admin/templates/admin_doc/bookmarklets.html:9
+msgid ""
+"\n"
+"
%s ' % (row_class, result_repr))
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index dfae38a59f..8937a1c95b 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -362,7 +362,7 @@ class ChangeList(object):
try:
attr = getattr(self.model, field_name)
order_field = attr.admin_order_field
- except IndexError:
+ except AttributeError:
pass
else:
if not isinstance(f.rel, models.ManyToOneRel) or not f.null:
diff --git a/django/contrib/auth/__init__.py b/django/contrib/auth/__init__.py
index 14ae020674..9813d9a2a2 100644
--- a/django/contrib/auth/__init__.py
+++ b/django/contrib/auth/__init__.py
@@ -12,6 +12,8 @@ def load_backend(path):
mod = __import__(module, {}, {}, [attr])
except ImportError, e:
raise ImproperlyConfigured, 'Error importing authentication backend %s: "%s"' % (module, e)
+ except ValueError, e:
+ raise ImproperlyConfigured, 'Error importing authentication backends. Is AUTHENTICATION_BACKENDS a correctly defined list or tuple?'
try:
cls = getattr(mod, attr)
except AttributeError:
diff --git a/django/contrib/auth/forms.py b/django/contrib/auth/forms.py
index 2a68e94766..16ee0289a2 100644
--- a/django/contrib/auth/forms.py
+++ b/django/contrib/auth/forms.py
@@ -10,10 +10,10 @@ class UserCreationForm(oldforms.Manipulator):
"A form that creates a user, with no privileges, from the given username and password."
def __init__(self):
self.fields = (
- oldforms.TextField(field_name='username', length=30, maxlength=30, is_required=True,
+ oldforms.TextField(field_name='username', length=30, max_length=30, is_required=True,
validator_list=[validators.isAlphaNumeric, self.isValidUsername]),
- oldforms.PasswordField(field_name='password1', length=30, maxlength=60, is_required=True),
- oldforms.PasswordField(field_name='password2', length=30, maxlength=60, is_required=True,
+ oldforms.PasswordField(field_name='password1', length=30, max_length=60, is_required=True),
+ oldforms.PasswordField(field_name='password2', length=30, max_length=60, is_required=True,
validator_list=[validators.AlwaysMatchesOtherField('password1', _("The two password fields didn't match."))]),
)
@@ -42,9 +42,9 @@ class AuthenticationForm(oldforms.Manipulator):
"""
self.request = request
self.fields = [
- oldforms.TextField(field_name="username", length=15, maxlength=30, is_required=True,
+ oldforms.TextField(field_name="username", length=15, max_length=30, is_required=True,
validator_list=[self.isValidUser, self.hasCookiesEnabled]),
- oldforms.PasswordField(field_name="password", length=15, maxlength=30, is_required=True),
+ oldforms.PasswordField(field_name="password", length=15, max_length=30, is_required=True),
]
self.user_cache = None
@@ -111,11 +111,11 @@ class PasswordChangeForm(oldforms.Manipulator):
def __init__(self, user):
self.user = user
self.fields = (
- oldforms.PasswordField(field_name="old_password", length=30, maxlength=30, is_required=True,
+ oldforms.PasswordField(field_name="old_password", length=30, max_length=30, is_required=True,
validator_list=[self.isValidOldPassword]),
- oldforms.PasswordField(field_name="new_password1", length=30, maxlength=30, is_required=True,
+ oldforms.PasswordField(field_name="new_password1", length=30, max_length=30, is_required=True,
validator_list=[validators.AlwaysMatchesOtherField('new_password2', _("The two 'new password' fields didn't match."))]),
- oldforms.PasswordField(field_name="new_password2", length=30, maxlength=30, is_required=True),
+ oldforms.PasswordField(field_name="new_password2", length=30, max_length=30, is_required=True),
)
def isValidOldPassword(self, new_data, all_data):
@@ -133,8 +133,8 @@ class AdminPasswordChangeForm(oldforms.Manipulator):
def __init__(self, user):
self.user = user
self.fields = (
- oldforms.PasswordField(field_name='password1', length=30, maxlength=60, is_required=True),
- oldforms.PasswordField(field_name='password2', length=30, maxlength=60, is_required=True,
+ oldforms.PasswordField(field_name='password1', length=30, max_length=60, is_required=True),
+ oldforms.PasswordField(field_name='password2', length=30, max_length=60, is_required=True,
validator_list=[validators.AlwaysMatchesOtherField('password1', _("The two password fields didn't match."))]),
)
diff --git a/django/contrib/auth/models.py b/django/contrib/auth/models.py
index 50f1ef11c4..183d48642e 100644
--- a/django/contrib/auth/models.py
+++ b/django/contrib/auth/models.py
@@ -7,6 +7,8 @@ from django.utils.translation import ugettext_lazy as _
import datetime
import urllib
+UNUSABLE_PASSWORD = '!' # This will never be a valid hash
+
try:
set
except NameError:
@@ -48,9 +50,9 @@ class Permission(models.Model):
Three basic permissions -- add, change and delete -- are automatically created for each Django model.
"""
- name = models.CharField(_('name'), maxlength=50)
+ name = models.CharField(_('name'), max_length=50)
content_type = models.ForeignKey(ContentType)
- codename = models.CharField(_('codename'), maxlength=100)
+ codename = models.CharField(_('codename'), max_length=100)
class Meta:
verbose_name = _('permission')
@@ -68,7 +70,7 @@ class Group(models.Model):
Beyond permissions, groups are a convenient way to categorize users to apply some label, or extended functionality, to them. For example, you could create a group 'Special users', and you could write code that would do special things to those users -- such as giving them access to a members-only portion of your site, or sending them members-only e-mail messages.
"""
- name = models.CharField(_('name'), maxlength=80, unique=True)
+ name = models.CharField(_('name'), max_length=80, unique=True)
permissions = models.ManyToManyField(Permission, verbose_name=_('permissions'), blank=True)
class Meta:
@@ -80,11 +82,14 @@ class Group(models.Model):
return self.name
class UserManager(models.Manager):
- def create_user(self, username, email, password):
+ def create_user(self, username, email, password=None):
"Creates and saves a User with the given username, e-mail and password."
now = datetime.datetime.now()
user = self.model(None, username, '', '', email.strip().lower(), 'placeholder', False, True, False, now, now)
- user.set_password(password)
+ if password:
+ user.set_password(password)
+ else:
+ user.set_unusable_password()
user.save()
return user
@@ -100,11 +105,11 @@ class User(models.Model):
Username and password are required. Other fields are optional.
"""
- username = models.CharField(_('username'), maxlength=30, unique=True, validator_list=[validators.isAlphaNumeric], help_text=_("Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."))
- first_name = models.CharField(_('first name'), maxlength=30, blank=True)
- last_name = models.CharField(_('last name'), maxlength=30, blank=True)
+ username = models.CharField(_('username'), max_length=30, unique=True, validator_list=[validators.isAlphaNumeric], help_text=_("Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."))
+ first_name = models.CharField(_('first name'), max_length=30, blank=True)
+ last_name = models.CharField(_('last name'), max_length=30, blank=True)
email = models.EmailField(_('e-mail address'), blank=True)
- password = models.CharField(_('password'), maxlength=128, help_text=_("Use '[algo]$[salt]$[hexdigest]' or use the change password form."))
+ password = models.CharField(_('password'), max_length=128, help_text=_("Use '[algo]$[salt]$[hexdigest]' or use the change password form."))
is_staff = models.BooleanField(_('staff status'), default=False, help_text=_("Designates whether the user can log into this admin site."))
is_active = models.BooleanField(_('active'), default=True, help_text=_("Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts."))
is_superuser = models.BooleanField(_('superuser status'), default=False, help_text=_("Designates that this user has all permissions without explicitly assigning them."))
@@ -164,6 +169,13 @@ class User(models.Model):
return is_correct
return check_password(raw_password, self.password)
+ def set_unusable_password(self):
+ # Sets a value that will never be a valid hash
+ self.password = UNUSABLE_PASSWORD
+
+ def has_usable_password(self):
+ return self.password != UNUSABLE_PASSWORD
+
def get_group_permissions(self):
"Returns a list of permission strings that this user has through his/her groups."
if not hasattr(self, '_group_perm_cache'):
@@ -253,7 +265,8 @@ class User(models.Model):
return self._profile_cache
class Message(models.Model):
- """The message system is a lightweight way to queue messages for given users. A message is associated with a User instance (so it is only applicable for registered users). There's no concept of expiration or timestamps. Messages are created by the Django admin after successful actions. For example, "The poll Foo was created successfully." is a message.
+ """
+ The message system is a lightweight way to queue messages for given users. A message is associated with a User instance (so it is only applicable for registered users). There's no concept of expiration or timestamps. Messages are created by the Django admin after successful actions. For example, "The poll Foo was created successfully." is a message.
"""
user = models.ForeignKey(User)
message = models.TextField(_('message'))
diff --git a/django/contrib/auth/tests.py b/django/contrib/auth/tests.py
new file mode 100644
index 0000000000..ed768aa429
--- /dev/null
+++ b/django/contrib/auth/tests.py
@@ -0,0 +1,19 @@
+"""
+>>> from models import User
+>>> u = User.objects.create_user('testuser', 'test@example.com', 'testpw')
+>>> u.has_usable_password()
+True
+>>> u.check_password('bad')
+False
+>>> u.check_password('testpw')
+True
+>>> u.set_unusable_password()
+>>> u.save()
+>>> u.check_password('testpw')
+False
+>>> u.has_usable_password()
+False
+>>> u2 = User.objects.create_user('testuser2', 'test2@example.com')
+>>> u2.has_usable_password()
+False
+"""
\ No newline at end of file
diff --git a/django/contrib/comments/models.py b/django/contrib/comments/models.py
index c0de6e4992..76a2457fd1 100644
--- a/django/contrib/comments/models.py
+++ b/django/contrib/comments/models.py
@@ -65,8 +65,8 @@ class Comment(models.Model):
user = models.ForeignKey(User)
content_type = models.ForeignKey(ContentType)
object_id = models.IntegerField(_('object ID'))
- headline = models.CharField(_('headline'), maxlength=255, blank=True)
- comment = models.TextField(_('comment'), maxlength=3000)
+ headline = models.CharField(_('headline'), max_length=255, blank=True)
+ comment = models.TextField(_('comment'), max_length=3000)
rating1 = models.PositiveSmallIntegerField(_('rating #1'), blank=True, null=True)
rating2 = models.PositiveSmallIntegerField(_('rating #2'), blank=True, null=True)
rating3 = models.PositiveSmallIntegerField(_('rating #3'), blank=True, null=True)
@@ -154,8 +154,8 @@ class FreeComment(models.Model):
# A FreeComment is a comment by a non-registered user.
content_type = models.ForeignKey(ContentType)
object_id = models.IntegerField(_('object ID'))
- comment = models.TextField(_('comment'), maxlength=3000)
- person_name = models.CharField(_("person's name"), maxlength=50)
+ comment = models.TextField(_('comment'), max_length=3000)
+ person_name = models.CharField(_("person's name"), max_length=50)
submit_date = models.DateTimeField(_('date/time submitted'), auto_now_add=True)
is_public = models.BooleanField(_('is public'))
ip_address = models.IPAddressField(_('ip address'))
diff --git a/django/contrib/comments/templatetags/comments.py b/django/contrib/comments/templatetags/comments.py
index 5c02c16f95..756ab9c93b 100644
--- a/django/contrib/comments/templatetags/comments.py
+++ b/django/contrib/comments/templatetags/comments.py
@@ -5,6 +5,7 @@ from django import template
from django.template import loader
from django.core.exceptions import ObjectDoesNotExist
from django.contrib.contenttypes.models import ContentType
+from django.utils.encoding import smart_str
import re
register = template.Library()
@@ -174,6 +175,7 @@ class DoCommentForm:
if tokens[4] != 'with':
raise template.TemplateSyntaxError, "Fourth argument in %r tag must be 'with'" % tokens[0]
for option, args in zip(tokens[5::2], tokens[6::2]):
+ option = smart_str(option)
if option in ('photos_optional', 'photos_required') and not self.free:
# VALIDATION ##############################################
option_list = args.split(',')
diff --git a/django/contrib/comments/views/comments.py b/django/contrib/comments/views/comments.py
index 435bfa6f73..f166fa118f 100644
--- a/django/contrib/comments/views/comments.py
+++ b/django/contrib/comments/views/comments.py
@@ -29,7 +29,7 @@ class PublicCommentManipulator(AuthenticationForm):
else:
return []
self.fields.extend([
- oldforms.LargeTextField(field_name="comment", maxlength=3000, is_required=True,
+ oldforms.LargeTextField(field_name="comment", max_length=3000, is_required=True,
validator_list=[self.hasNoProfanities]),
oldforms.RadioSelectField(field_name="rating1", choices=choices,
is_required=ratings_required and num_rating_choices > 0,
@@ -122,9 +122,9 @@ class PublicFreeCommentManipulator(oldforms.Manipulator):
"Manipulator that handles public free (unregistered) comments"
def __init__(self):
self.fields = (
- oldforms.TextField(field_name="person_name", maxlength=50, is_required=True,
+ oldforms.TextField(field_name="person_name", max_length=50, is_required=True,
validator_list=[self.hasNoProfanities]),
- oldforms.LargeTextField(field_name="comment", maxlength=3000, is_required=True,
+ oldforms.LargeTextField(field_name="comment", max_length=3000, is_required=True,
validator_list=[self.hasNoProfanities]),
)
diff --git a/django/contrib/contenttypes/models.py b/django/contrib/contenttypes/models.py
index a825b4f3dd..cda47a18aa 100644
--- a/django/contrib/contenttypes/models.py
+++ b/django/contrib/contenttypes/models.py
@@ -32,9 +32,9 @@ class ContentTypeManager(models.Manager):
CONTENT_TYPE_CACHE = {}
class ContentType(models.Model):
- name = models.CharField(maxlength=100)
- app_label = models.CharField(maxlength=100)
- model = models.CharField(_('python model class name'), maxlength=100)
+ name = models.CharField(max_length=100)
+ app_label = models.CharField(max_length=100)
+ model = models.CharField(_('python model class name'), max_length=100)
objects = ContentTypeManager()
class Meta:
verbose_name = _('content type')
diff --git a/django/contrib/databrowse/plugins/fieldchoices.py b/django/contrib/databrowse/plugins/fieldchoices.py
index fc93ecaa63..a5dd07c639 100644
--- a/django/contrib/databrowse/plugins/fieldchoices.py
+++ b/django/contrib/databrowse/plugins/fieldchoices.py
@@ -37,9 +37,10 @@ class FieldChoicePlugin(DatabrowsePlugin):
def urls(self, plugin_name, easy_instance_field):
if easy_instance_field.field in self.field_dict(easy_instance_field.model.model).values():
+ field_value = smart_str(easy_instance_field.raw_value)
return [u'%s%s/%s/%s/' % (easy_instance_field.model.url(),
plugin_name, easy_instance_field.field.name,
- urllib.quote(smart_str(easy_instance_field.raw_value)))]
+ urllib.quote(field_value, safe=''))]
def model_view(self, request, model_databrowse, url):
self.model, self.site = model_databrowse.model, model_databrowse.site
diff --git a/django/contrib/databrowse/templates/databrowse/calendar_day.html b/django/contrib/databrowse/templates/databrowse/calendar_day.html
index d45fb3e768..4e8a8dabbd 100644
--- a/django/contrib/databrowse/templates/databrowse/calendar_day.html
+++ b/django/contrib/databrowse/templates/databrowse/calendar_day.html
@@ -10,7 +10,7 @@
{% for object in object_list %}
-
diff --git a/django/contrib/databrowse/templates/databrowse/calendar_month.html b/django/contrib/databrowse/templates/databrowse/calendar_month.html
index 51a25967f8..9ff0cae08f 100644
--- a/django/contrib/databrowse/templates/databrowse/calendar_month.html
+++ b/django/contrib/databrowse/templates/databrowse/calendar_month.html
@@ -10,7 +10,7 @@
{% for object in object_list %}
-
diff --git a/django/contrib/databrowse/templates/databrowse/choice_detail.html b/django/contrib/databrowse/templates/databrowse/choice_detail.html
index 977a4a482f..35a67f4528 100644
--- a/django/contrib/databrowse/templates/databrowse/choice_detail.html
+++ b/django/contrib/databrowse/templates/databrowse/choice_detail.html
@@ -10,7 +10,7 @@
{% for object in object_list %}
-
diff --git a/django/contrib/databrowse/templates/databrowse/choice_list.html b/django/contrib/databrowse/templates/databrowse/choice_list.html
index b15531a0fd..3122330635 100644
--- a/django/contrib/databrowse/templates/databrowse/choice_list.html
+++ b/django/contrib/databrowse/templates/databrowse/choice_list.html
@@ -10,7 +10,7 @@
{% for choice in field.choices %}
-
diff --git a/django/contrib/databrowse/templates/databrowse/homepage.html b/django/contrib/databrowse/templates/databrowse/homepage.html
index ebf3ceca80..e4f3d60b16 100644
--- a/django/contrib/databrowse/templates/databrowse/homepage.html
+++ b/django/contrib/databrowse/templates/databrowse/homepage.html
@@ -11,7 +11,7 @@
{{ model.verbose_name_plural|capfirst }}
{% for object in model.objects %}
-
diff --git a/django/contrib/databrowse/templates/databrowse/object_detail.html b/django/contrib/databrowse/templates/databrowse/object_detail.html
index 2195ad3080..af5b937985 100644
--- a/django/contrib/databrowse/templates/databrowse/object_detail.html
+++ b/django/contrib/databrowse/templates/databrowse/object_detail.html
@@ -4,9 +4,9 @@
{% block content %}
-
+
-{{ object.model.verbose_name|capfirst }}: {{ object }}
+{{ object.model.verbose_name|capfirst }}: {{ object|escape }}
{% for field in object.fields %}
@@ -14,8 +14,8 @@
{{ field.field.verbose_name|capfirst }}
{% if field.urls %}
-{% for urlvalue in field.urls %}
-{% if urlvalue.1 %}{% endif %}{{ urlvalue.0 }}{% if urlvalue.1 %}{% endif %}{% if not forloop.last %}, {% endif %}
+{% for value, url in field.urls %}
+{% if url %}{% endif %}{{ value|escape }}{% if url %}{% endif %}{% if not forloop.last %}, {% endif %}
{% endfor %}
{% else %}None{% endif %}
@@ -29,7 +29,7 @@
{% if related_object.object_list %}
{% for object in related_object.object_list %}
-
{% else %}
diff --git a/django/contrib/flatpages/models.py b/django/contrib/flatpages/models.py
index 4a06b8c685..be75a22818 100644
--- a/django/contrib/flatpages/models.py
+++ b/django/contrib/flatpages/models.py
@@ -4,12 +4,12 @@ from django.contrib.sites.models import Site
from django.utils.translation import ugettext_lazy as _
class FlatPage(models.Model):
- url = models.CharField(_('URL'), maxlength=100, validator_list=[validators.isAlphaNumericURL], db_index=True,
+ url = models.CharField(_('URL'), max_length=100, validator_list=[validators.isAlphaNumericURL], db_index=True,
help_text=_("Example: '/about/contact/'. Make sure to have leading and trailing slashes."))
- title = models.CharField(_('title'), maxlength=200)
+ title = models.CharField(_('title'), max_length=200)
content = models.TextField(_('content'))
enable_comments = models.BooleanField(_('enable comments'))
- template_name = models.CharField(_('template name'), maxlength=70, blank=True,
+ template_name = models.CharField(_('template name'), max_length=70, blank=True,
help_text=_("Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."))
registration_required = models.BooleanField(_('registration required'), help_text=_("If this is checked, only logged-in users will be able to view the page."))
sites = models.ManyToManyField(Site)
diff --git a/django/contrib/localflavor/cl/cl_regions.py b/django/contrib/localflavor/cl/cl_regions.py
new file mode 100644
index 0000000000..47db6d3912
--- /dev/null
+++ b/django/contrib/localflavor/cl/cl_regions.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+"""
+A list of Chilean regions as `choices` in a formfield.
+
+This exists in this standalone file so that it's only imported into memory
+when explicitly needed.
+"""
+
+REGION_CHOICES = (
+ ('RM', u'Región Metropolitana de Santiago'),
+ ('I', u'Región de Tarapacá'),
+ ('II', u'Región de Antofagasta'),
+ ('III', u'Región de Atacama'),
+ ('IV', u'Región de Coquimbo'),
+ ('V', u'Región de Valparaíso'),
+ ('VI', u'Región del Libertador Bernardo O\'Higgins'),
+ ('VII', u'Región del Maule'),
+ ('VIII',u'Región del Bío Bío'),
+ ('IX', u'Región de la Araucanía'),
+ ('X', u'Región de los Lagos'),
+ ('XI', u'Región de Aysén del General Carlos Ibáñez del Campo'),
+ ('XII', u'Región de Magallanes y la Antártica Chilena'),
+ ('XIV', u'Región de Los Ríos'),
+ ('XV', u'Región de Arica-Parinacota'),
+)
diff --git a/django/contrib/localflavor/cl/forms.py b/django/contrib/localflavor/cl/forms.py
index a737bcb5a7..d2d37a3712 100644
--- a/django/contrib/localflavor/cl/forms.py
+++ b/django/contrib/localflavor/cl/forms.py
@@ -3,10 +3,20 @@ Chile specific form helpers.
"""
from django.newforms import ValidationError
-from django.newforms.fields import RegexField, EMPTY_VALUES
+from django.newforms.fields import RegexField, Select, EMPTY_VALUES
from django.utils.translation import ugettext
from django.utils.encoding import smart_unicode
+
+class CLRegionSelect(Select):
+ """
+ A Select widget that uses a list of Chilean Regions (Regiones)
+ as its choices.
+ """
+ def __init__(self, attrs=None):
+ from cl_regions import REGION_CHOICES
+ super(CLRegionSelect, self).__init__(attrs, choices=REGION_CHOICES)
+
class CLRutField(RegexField):
"""
Chilean "Rol Unico Tributario" (RUT) field. This is the Chilean national
diff --git a/django/contrib/localflavor/no/forms.py b/django/contrib/localflavor/no/forms.py
index a0d599324f..2de3df14d8 100644
--- a/django/contrib/localflavor/no/forms.py
+++ b/django/contrib/localflavor/no/forms.py
@@ -1,4 +1,3 @@
-# -*- coding: iso-8859-1 -*-
"""
Norwegian-specific Form helpers
"""
@@ -66,7 +65,7 @@ class NOSocialSecurityNumber(Field):
weight_2 = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2, 1]
def multiply_reduce(aval, bval):
- return sum((a * b) for (a, b) in zip(aval, bval))
+ return sum([(a * b) for (a, b) in zip(aval, bval)])
if multiply_reduce(digits, weight_1) % 11 != 0:
raise ValidationError(msg)
diff --git a/django/contrib/localflavor/sk/__init__.py b/django/contrib/localflavor/sk/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/django/contrib/localflavor/sk/forms.py b/django/contrib/localflavor/sk/forms.py
new file mode 100644
index 0000000000..0aa000a0a5
--- /dev/null
+++ b/django/contrib/localflavor/sk/forms.py
@@ -0,0 +1,41 @@
+"""
+Slovak-specific form helpers
+"""
+
+from django.newforms.fields import Select, RegexField
+from django.utils.translation import ugettext
+
+class SKRegionSelect(Select):
+ """
+ A select widget widget with list of Slovak regions as choices.
+ """
+ def __init__(self, attrs=None):
+ from sk_regions import REGION_CHOICES
+ super(SKRegionSelect, self).__init__(attrs, choices=REGION_CHOICES)
+
+class SKDistrictSelect(Select):
+ """
+ A select widget with list of Slovak districts as choices.
+ """
+ def __init__(self, attrs=None):
+ from sk_districts import DISTRICT_CHOICES
+ super(SKDistrictSelect, self).__init__(attrs, choices=DISTRICT_CHOICES)
+
+class SKPostalCodeField(RegexField):
+ """
+ A form field that validates its input as Slovak postal code.
+ Valid form is XXXXX or XXX XX, where X represents integer.
+ """
+ def __init__(self, *args, **kwargs):
+ super(SKPostalCodeField, self).__init__(r'^\d{5}$|^\d{3} \d{2}$',
+ max_length=None, min_length=None,
+ error_message=ugettext(u'Enter a postal code in the format XXXXX or XXX XX.'),
+ *args, **kwargs)
+
+ def clean(self, value):
+ """
+ Validates the input and returns a string that contains only numbers.
+ Returns an empty string for empty values.
+ """
+ v = super(SKPostalCodeField, self).clean(value)
+ return v.replace(' ', '')
diff --git a/django/contrib/localflavor/sk/sk_districts.py b/django/contrib/localflavor/sk/sk_districts.py
new file mode 100644
index 0000000000..95e87967b9
--- /dev/null
+++ b/django/contrib/localflavor/sk/sk_districts.py
@@ -0,0 +1,87 @@
+"""
+Slovak districts according to http://sk.wikipedia.org/wiki/Administrat%C3%ADvne_%C4%8Dlenenie_Slovenska
+"""
+
+from django.utils.translation import ugettext_lazy as _
+
+DISTRICT_CHOICES = (
+ ('BB', _('Banska Bystrica')),
+ ('BS', _('Banska Stiavnica')),
+ ('BJ', _('Bardejov')),
+ ('BN', _('Banovce nad Bebravou')),
+ ('BR', _('Brezno')),
+ ('BA1', _('Bratislava I')),
+ ('BA2', _('Bratislava II')),
+ ('BA3', _('Bratislava III')),
+ ('BA4', _('Bratislava IV')),
+ ('BA5', _('Bratislava V')),
+ ('BY', _('Bytca')),
+ ('CA', _('Cadca')),
+ ('DT', _('Detva')),
+ ('DK', _('Dolny Kubin')),
+ ('DS', _('Dunajska Streda')),
+ ('GA', _('Galanta')),
+ ('GL', _('Gelnica')),
+ ('HC', _('Hlohovec')),
+ ('HE', _('Humenne')),
+ ('IL', _('Ilava')),
+ ('KK', _('Kezmarok')),
+ ('KN', _('Komarno')),
+ ('KE1', _('Kosice I')),
+ ('KE2', _('Kosice II')),
+ ('KE3', _('Kosice III')),
+ ('KE4', _('Kosice IV')),
+ ('KEO', _('Kosice - okolie')),
+ ('KA', _('Krupina')),
+ ('KM', _('Kysucke Nove Mesto')),
+ ('LV', _('Levice')),
+ ('LE', _('Levoca')),
+ ('LM', _('Liptovsky Mikulas')),
+ ('LC', _('Lucenec')),
+ ('MA', _('Malacky')),
+ ('MT', _('Martin')),
+ ('ML', _('Medzilaborce')),
+ ('MI', _('Michalovce')),
+ ('MY', _('Myjava')),
+ ('NO', _('Namestovo')),
+ ('NR', _('Nitra')),
+ ('NM', _('Nove Mesto nad Vahom')),
+ ('NZ', _('Nove Zamky')),
+ ('PE', _('Partizanske')),
+ ('PK', _('Pezinok')),
+ ('PN', _('Piestany')),
+ ('PT', _('Poltar')),
+ ('PP', _('Poprad')),
+ ('PB', _('Povazska Bystrica')),
+ ('PO', _('Presov')),
+ ('PD', _('Prievidza')),
+ ('PU', _('Puchov')),
+ ('RA', _('Revuca')),
+ ('RS', _('Rimavska Sobota')),
+ ('RV', _('Roznava')),
+ ('RK', _('Ruzomberok')),
+ ('SB', _('Sabinov')),
+ ('SC', _('Senec')),
+ ('SE', _('Senica')),
+ ('SI', _('Skalica')),
+ ('SV', _('Snina')),
+ ('SO', _('Sobrance')),
+ ('SN', _('Spisska Nova Ves')),
+ ('SL', _('Stara Lubovna')),
+ ('SP', _('Stropkov')),
+ ('SK', _('Svidnik')),
+ ('SA', _('Sala')),
+ ('TO', _('Topolcany')),
+ ('TV', _('Trebisov')),
+ ('TN', _('Trencin')),
+ ('TT', _('Trnava')),
+ ('TR', _('Turcianske Teplice')),
+ ('TS', _('Tvrdosin')),
+ ('VK', _('Velky Krtis')),
+ ('VT', _('Vranov nad Toplou')),
+ ('ZM', _('Zlate Moravce')),
+ ('ZV', _('Zvolen')),
+ ('ZC', _('Zarnovica')),
+ ('ZH', _('Ziar nad Hronom')),
+ ('ZA', _('Zilina')),
+)
diff --git a/django/contrib/localflavor/sk/sk_regions.py b/django/contrib/localflavor/sk/sk_regions.py
new file mode 100644
index 0000000000..66de814e01
--- /dev/null
+++ b/django/contrib/localflavor/sk/sk_regions.py
@@ -0,0 +1,16 @@
+"""
+Slovak regions according to http://sk.wikipedia.org/wiki/Administrat%C3%ADvne_%C4%8Dlenenie_Slovenska
+"""
+
+from django.utils.translation import ugettext_lazy as _
+
+REGION_CHOICES = (
+ ('BB', _('Banska Bystrica region')),
+ ('BA', _('Bratislava region')),
+ ('KE', _('Kosice region')),
+ ('NR', _('Nitra region')),
+ ('PO', _('Presov region')),
+ ('TN', _('Trencin region')),
+ ('TT', _('Trnava region')),
+ ('ZA', _('Zilina region')),
+)
diff --git a/django/contrib/redirects/models.py b/django/contrib/redirects/models.py
index 529912e545..68f4afeb49 100644
--- a/django/contrib/redirects/models.py
+++ b/django/contrib/redirects/models.py
@@ -4,9 +4,9 @@ from django.utils.translation import ugettext_lazy as _
class Redirect(models.Model):
site = models.ForeignKey(Site, radio_admin=models.VERTICAL)
- old_path = models.CharField(_('redirect from'), maxlength=200, db_index=True,
+ old_path = models.CharField(_('redirect from'), max_length=200, db_index=True,
help_text=_("This should be an absolute path, excluding the domain name. Example: '/events/search/'."))
- new_path = models.CharField(_('redirect to'), maxlength=200, blank=True,
+ new_path = models.CharField(_('redirect to'), max_length=200, blank=True,
help_text=_("This can be either an absolute path (as above) or a full URL starting with 'http://'."))
class Meta:
diff --git a/django/contrib/sessions/middleware.py b/django/contrib/sessions/middleware.py
index 82b217f829..2531c8e244 100644
--- a/django/contrib/sessions/middleware.py
+++ b/django/contrib/sessions/middleware.py
@@ -2,7 +2,9 @@ from django.conf import settings
from django.contrib.sessions.models import Session
from django.core.exceptions import SuspiciousOperation
from django.utils.cache import patch_vary_headers
+from email.Utils import formatdate
import datetime
+import time
TEST_COOKIE_NAME = 'testcookie'
TEST_COOKIE_VALUE = 'worked'
@@ -37,7 +39,7 @@ class SessionWrapper(object):
return self._session.get(key, default)
def pop(self, key, *args):
- self.modified = self.modified or key in self._session
+ self.modified = self.modified or key in self._session
return self._session.pop(key, *args)
def set_test_cookie(self):
@@ -98,7 +100,11 @@ class SessionMiddleware(object):
expires = None
else:
max_age = settings.SESSION_COOKIE_AGE
- expires = datetime.datetime.strftime(datetime.datetime.utcnow() + datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE), "%a, %d-%b-%Y %H:%M:%S GMT")
+ rfcdate = formatdate(time.time() + settings.SESSION_COOKIE_AGE)
+ # Fixed length date must have '-' separation in the format
+ # DD-MMM-YYYY for compliance with Netscape cookie standard
+ expires = (rfcdate[:7] + "-" + rfcdate[8:11]
+ + "-" + rfcdate[12:26] + "GMT")
new_session = Session.objects.save(session_key, request.session._session,
datetime.datetime.now() + datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE))
response.set_cookie(settings.SESSION_COOKIE_NAME, session_key,
diff --git a/django/contrib/sessions/models.py b/django/contrib/sessions/models.py
index d2df17284c..29adc6e30c 100644
--- a/django/contrib/sessions/models.py
+++ b/django/contrib/sessions/models.py
@@ -65,7 +65,7 @@ class Session(models.Model):
the sessions documentation that is shipped with Django (also available
on the Django website).
"""
- session_key = models.CharField(_('session key'), maxlength=40, primary_key=True)
+ session_key = models.CharField(_('session key'), max_length=40, primary_key=True)
session_data = models.TextField(_('session data'))
expire_date = models.DateTimeField(_('expire date'))
objects = SessionManager()
diff --git a/django/contrib/sites/models.py b/django/contrib/sites/models.py
index 8b99d23bad..75fba4e6dd 100644
--- a/django/contrib/sites/models.py
+++ b/django/contrib/sites/models.py
@@ -4,11 +4,16 @@ from django.utils.translation import ugettext_lazy as _
class SiteManager(models.Manager):
def get_current(self):
from django.conf import settings
- return self.get(pk=settings.SITE_ID)
+ try:
+ sid = settings.SITE_ID
+ except AttributeError:
+ from django.core.exceptions import ImproperlyConfigured
+ raise ImproperlyConfigured("You're using the Django \"sites framework\" without having set the SITE_ID setting. Create a site in your database and set the SITE_ID setting to fix this error.")
+ return self.get(pk=sid)
class Site(models.Model):
- domain = models.CharField(_('domain name'), maxlength=100)
- name = models.CharField(_('display name'), maxlength=50)
+ domain = models.CharField(_('domain name'), max_length=100)
+ name = models.CharField(_('display name'), max_length=50)
objects = SiteManager()
class Meta:
@@ -31,3 +36,20 @@ class SiteAdmin(admin.ModelAdmin):
search_fields = ('domain', 'name')
admin.site.register(Site, SiteAdmin)
+
+class RequestSite(object):
+ """
+ A class that shares the primary interface of Site (i.e., it has
+ ``domain`` and ``name`` attributes) but gets its data from a Django
+ HttpRequest object rather than from a database.
+
+ The save() and delete() methods raise NotImplementedError.
+ """
+ def __init__(self, request):
+ self.domain = self.name = request.META['SERVER_NAME']
+
+ def save(self):
+ raise NotImplementedError('RequestSite cannot be saved.')
+
+ def delete(self):
+ raise NotImplementedError('RequestSite cannot be deleted.')
diff --git a/django/contrib/syndication/feeds.py b/django/contrib/syndication/feeds.py
index 428767ae48..eb5a9f0607 100644
--- a/django/contrib/syndication/feeds.py
+++ b/django/contrib/syndication/feeds.py
@@ -1,15 +1,15 @@
from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist
from django.template import Context, loader, Template, TemplateDoesNotExist
-from django.contrib.sites.models import Site
+from django.contrib.sites.models import Site, RequestSite
from django.utils import feedgenerator
-from django.utils.encoding import smart_unicode
+from django.utils.encoding import smart_unicode, iri_to_uri
from django.conf import settings
def add_domain(domain, url):
if not url.startswith('http://'):
# 'url' must already be ASCII and URL-quoted, so no need for encoding
# conversions here.
- url = u'http://%s%s' % (domain, url)
+ url = iri_to_uri(u'http://%s%s' % (domain, url))
return url
class FeedDoesNotExist(ObjectDoesNotExist):
@@ -22,9 +22,10 @@ class Feed(object):
title_template = None
description_template = None
- def __init__(self, slug, feed_url):
+ def __init__(self, slug, request):
self.slug = slug
- self.feed_url = feed_url
+ self.request = request
+ self.feed_url = request.path
self.title_template_name = self.title_template or ('feeds/%s_title.html' % slug)
self.description_template_name = self.description_template or ('feeds/%s_description.html' % slug)
@@ -67,7 +68,11 @@ class Feed(object):
else:
obj = None
- current_site = Site.objects.get_current()
+ if Site._meta.installed:
+ current_site = Site.objects.get_current()
+ else:
+ current_site = RequestSite(self.request)
+
link = self.__get_dynamic_attr('link', obj)
link = add_domain(current_site.domain, link)
@@ -83,6 +88,7 @@ class Feed(object):
author_email = self.__get_dynamic_attr('author_email', obj),
categories = self.__get_dynamic_attr('categories', obj),
feed_copyright = self.__get_dynamic_attr('feed_copyright', obj),
+ feed_guid = self.__get_dynamic_attr('feed_guid', obj),
)
try:
@@ -114,7 +120,7 @@ class Feed(object):
title = title_tmp.render(Context({'obj': item, 'site': current_site})),
link = link,
description = description_tmp.render(Context({'obj': item, 'site': current_site})),
- unique_id = link,
+ unique_id = self.__get_dynamic_attr('item_guid', item, link),
enclosure = enc,
pubdate = self.__get_dynamic_attr('item_pubdate', item),
author_name = author_name,
diff --git a/django/contrib/syndication/views.py b/django/contrib/syndication/views.py
index 621665d4d4..423d333991 100644
--- a/django/contrib/syndication/views.py
+++ b/django/contrib/syndication/views.py
@@ -16,7 +16,7 @@ def feed(request, url, feed_dict=None):
raise Http404, "Slug %r isn't registered." % slug
try:
- feedgen = f(slug, request.path).get_feed(param)
+ feedgen = f(slug, request).get_feed(param)
except feeds.FeedDoesNotExist:
raise Http404, "Invalid feed parameters. Slug %r is valid, but other parameters, or lack thereof, are not." % slug
diff --git a/django/core/cache/backends/filebased.py b/django/core/cache/backends/filebased.py
index faaf8910ce..d5415c8ace 100644
--- a/django/core/cache/backends/filebased.py
+++ b/django/core/cache/backends/filebased.py
@@ -1,7 +1,8 @@
"File-based cache backend"
from django.core.cache.backends.simple import CacheClass as SimpleCacheClass
-import os, time, urllib
+from django.utils.http import urlquote_plus
+import os, time
try:
import cPickle as pickle
except ImportError:
@@ -77,4 +78,4 @@ class CacheClass(SimpleCacheClass):
raise EnvironmentError, "Cache directory '%s' does not exist and could not be created'" % self._dir
def _key_to_file(self, key):
- return os.path.join(self._dir, urllib.quote_plus(key))
+ return os.path.join(self._dir, urlquote_plus(key))
diff --git a/django/core/cache/backends/locmem.py b/django/core/cache/backends/locmem.py
index 0e21b80ed8..4c48c571b7 100644
--- a/django/core/cache/backends/locmem.py
+++ b/django/core/cache/backends/locmem.py
@@ -1,8 +1,13 @@
"Thread-safe in-memory cache backend."
+import time
+try:
+ import cPickle as pickle
+except ImportError:
+ import pickle
+
from django.core.cache.backends.simple import CacheClass as SimpleCacheClass
from django.utils.synch import RWLock
-import copy, time
class CacheClass(SimpleCacheClass):
def __init__(self, host, params):
@@ -20,7 +25,10 @@ class CacheClass(SimpleCacheClass):
elif exp < now:
should_delete = True
else:
- return copy.deepcopy(self._cache[key])
+ try:
+ return pickle.loads(self._cache[key])
+ except pickle.PickleError:
+ return default
finally:
self._lock.reader_leaves()
if should_delete:
@@ -35,7 +43,10 @@ class CacheClass(SimpleCacheClass):
def set(self, key, value, timeout=None):
self._lock.writer_enters()
try:
- SimpleCacheClass.set(self, key, value, timeout)
+ try:
+ super(CacheClass, self).set(key, pickle.dumps(value), timeout)
+ except pickle.PickleError:
+ pass
finally:
self._lock.writer_leaves()
diff --git a/django/core/cache/backends/memcached.py b/django/core/cache/backends/memcached.py
index 1ab019221a..52610daef1 100644
--- a/django/core/cache/backends/memcached.py
+++ b/django/core/cache/backends/memcached.py
@@ -1,6 +1,7 @@
"Memcached cache backend"
from django.core.cache.backends.base import BaseCache, InvalidCacheBackendError
+from django.utils.encoding import smart_unicode, smart_str
try:
import cmemcache as memcache
@@ -16,17 +17,22 @@ class CacheClass(BaseCache):
self._cache = memcache.Client(server.split(';'))
def get(self, key, default=None):
- val = self._cache.get(key)
+ val = self._cache.get(smart_str(key))
if val is None:
return default
else:
- return val
+ if isinstance(val, basestring):
+ return smart_unicode(val)
+ else:
+ return val
def set(self, key, value, timeout=0):
- self._cache.set(key, value, timeout or self.default_timeout)
+ if isinstance(value, unicode):
+ value = value.encode('utf-8')
+ self._cache.set(smart_str(key), value, timeout or self.default_timeout)
def delete(self, key):
- self._cache.delete(key)
+ self._cache.delete(smart_str(key))
def get_many(self, keys):
- return self._cache.get_multi(keys)
+ return self._cache.get_multi(map(smart_str,keys))
diff --git a/django/core/handlers/modpython.py b/django/core/handlers/modpython.py
index e26f234fe5..7c4bbb3082 100644
--- a/django/core/handlers/modpython.py
+++ b/django/core/handlers/modpython.py
@@ -2,6 +2,7 @@ from django.core.handlers.base import BaseHandler
from django.core import signals
from django.dispatch import dispatcher
from django.utils import datastructures
+from django.utils.encoding import force_unicode
from django import http
from pprint import pformat
import os
@@ -13,7 +14,7 @@ import os
class ModPythonRequest(http.HttpRequest):
def __init__(self, req):
self._req = req
- self.path = req.uri
+ self.path = force_unicode(req.uri)
def __repr__(self):
# Since this is called as part of error handling, we need to be very
diff --git a/django/core/handlers/wsgi.py b/django/core/handlers/wsgi.py
index 49938e25dc..2db83fccfc 100644
--- a/django/core/handlers/wsgi.py
+++ b/django/core/handlers/wsgi.py
@@ -2,6 +2,7 @@ from django.core.handlers.base import BaseHandler
from django.core import signals
from django.dispatch import dispatcher
from django.utils import datastructures
+from django.utils.encoding import force_unicode
from django import http
from pprint import pformat
from shutil import copyfileobj
@@ -73,7 +74,7 @@ def safe_copyfileobj(fsrc, fdst, length=16*1024, size=0):
class WSGIRequest(http.HttpRequest):
def __init__(self, environ):
self.environ = environ
- self.path = environ['PATH_INFO']
+ self.path = force_unicode(environ['PATH_INFO'])
self.META = environ
self.method = environ['REQUEST_METHOD'].upper()
diff --git a/django/core/management.py b/django/core/management.py
index 1f54ba6ebf..be1134506c 100644
--- a/django/core/management.py
+++ b/django/core/management.py
@@ -95,19 +95,12 @@ def _get_sequence_list():
return sequence_list
-# If the foreign key points to an AutoField, a PositiveIntegerField or a
-# PositiveSmallIntegerField, the foreign key should be an IntegerField, not the
-# referred field type. Otherwise, the foreign key should be the same type of
-# field as the field to which it points.
-get_rel_data_type = lambda f: (f.get_internal_type() in ('AutoField', 'PositiveIntegerField', 'PositiveSmallIntegerField')) and 'IntegerField' or f.get_internal_type()
-
def get_sql_create(app):
"Returns a list of the CREATE TABLE SQL statements for the given app."
- from django.db import get_creation_module, models
+ from django.db import models
+ from django.conf import settings
- data_types = get_creation_module().DATA_TYPES
-
- if not data_types:
+ if settings.DATABASE_ENGINE == 'dummy':
# This must be the "dummy" database backend, which means the user
# hasn't set DATABASE_ENGINE.
sys.stderr.write(style.ERROR("Error: Django doesn't know which syntax to use for your SQL statements,\n" +
@@ -159,52 +152,46 @@ def _get_sql_model_create(model, known_models=set()):
Returns list_of_sql, pending_references_dict
"""
- from django.db import backend, get_creation_module, models
- data_types = get_creation_module().DATA_TYPES
+ from django.db import backend, models
opts = model._meta
final_output = []
table_output = []
pending_references = {}
for f in opts.fields:
- if isinstance(f, (models.ForeignKey, models.OneToOneField)):
- rel_field = f.rel.get_related_field()
- while isinstance(rel_field, (models.ForeignKey, models.OneToOneField)):
- rel_field = rel_field.rel.get_related_field()
- data_type = get_rel_data_type(rel_field)
- else:
- rel_field = f
- data_type = f.get_internal_type()
- col_type = data_types[data_type]
+ col_type = f.db_type()
tablespace = f.db_tablespace or opts.db_tablespace
- if col_type is not None:
- # Make the definition (e.g. 'foo VARCHAR(30)') for this field.
- field_output = [style.SQL_FIELD(backend.quote_name(f.column)),
- style.SQL_COLTYPE(col_type % rel_field.__dict__)]
- field_output.append(style.SQL_KEYWORD('%sNULL' % (not f.null and 'NOT ' or '')))
- if f.unique and (not f.primary_key or backend.allows_unique_and_pk):
- field_output.append(style.SQL_KEYWORD('UNIQUE'))
- if f.primary_key:
- field_output.append(style.SQL_KEYWORD('PRIMARY KEY'))
- if tablespace and backend.supports_tablespaces and (f.unique or f.primary_key) and backend.autoindexes_primary_keys:
- # We must specify the index tablespace inline, because we
- # won't be generating a CREATE INDEX statement for this field.
- field_output.append(backend.get_tablespace_sql(tablespace, inline=True))
- if f.rel:
- if f.rel.to in known_models:
- field_output.append(style.SQL_KEYWORD('REFERENCES') + ' ' + \
- style.SQL_TABLE(backend.quote_name(f.rel.to._meta.db_table)) + ' (' + \
- style.SQL_FIELD(backend.quote_name(f.rel.to._meta.get_field(f.rel.field_name).column)) + ')' +
- backend.get_deferrable_sql()
- )
- else:
- # We haven't yet created the table to which this field
- # is related, so save it for later.
- pr = pending_references.setdefault(f.rel.to, []).append((model, f))
- table_output.append(' '.join(field_output))
+ if col_type is None:
+ # Skip ManyToManyFields, because they're not represented as
+ # database columns in this table.
+ continue
+ # Make the definition (e.g. 'foo VARCHAR(30)') for this field.
+ field_output = [style.SQL_FIELD(backend.quote_name(f.column)),
+ style.SQL_COLTYPE(col_type)]
+ field_output.append(style.SQL_KEYWORD('%sNULL' % (not f.null and 'NOT ' or '')))
+ if f.unique and (not f.primary_key or backend.allows_unique_and_pk):
+ field_output.append(style.SQL_KEYWORD('UNIQUE'))
+ if f.primary_key:
+ field_output.append(style.SQL_KEYWORD('PRIMARY KEY'))
+ if tablespace and backend.supports_tablespaces and (f.unique or f.primary_key) and backend.autoindexes_primary_keys:
+ # We must specify the index tablespace inline, because we
+ # won't be generating a CREATE INDEX statement for this field.
+ field_output.append(backend.get_tablespace_sql(tablespace, inline=True))
+ if f.rel:
+ if f.rel.to in known_models:
+ field_output.append(style.SQL_KEYWORD('REFERENCES') + ' ' + \
+ style.SQL_TABLE(backend.quote_name(f.rel.to._meta.db_table)) + ' (' + \
+ style.SQL_FIELD(backend.quote_name(f.rel.to._meta.get_field(f.rel.field_name).column)) + ')' +
+ backend.get_deferrable_sql()
+ )
+ else:
+ # We haven't yet created the table to which this field
+ # is related, so save it for later.
+ pr = pending_references.setdefault(f.rel.to, []).append((model, f))
+ table_output.append(' '.join(field_output))
if opts.order_with_respect_to:
table_output.append(style.SQL_FIELD(backend.quote_name('_order')) + ' ' + \
- style.SQL_COLTYPE(data_types['IntegerField']) + ' ' + \
+ style.SQL_COLTYPE(models.IntegerField().db_type()) + ' ' + \
style.SQL_KEYWORD('NULL'))
for field_constraints in opts.unique_together:
table_output.append(style.SQL_KEYWORD('UNIQUE') + ' (%s)' % \
@@ -232,9 +219,8 @@ def _get_sql_for_pending_references(model, pending_references):
"""
Get any ALTER TABLE statements to add constraints after the fact.
"""
- from django.db import backend, get_creation_module
+ from django.db import backend
from django.db.backends.util import truncate_name
- data_types = get_creation_module().DATA_TYPES
final_output = []
if backend.supports_constraints:
@@ -257,11 +243,9 @@ def _get_sql_for_pending_references(model, pending_references):
return final_output
def _get_many_to_many_sql_for_model(model):
- from django.db import backend, get_creation_module
+ from django.db import backend, models
from django.contrib.contenttypes import generic
- data_types = get_creation_module().DATA_TYPES
-
opts = model._meta
final_output = []
for f in opts.many_to_many:
@@ -275,19 +259,19 @@ def _get_many_to_many_sql_for_model(model):
style.SQL_TABLE(backend.quote_name(f.m2m_db_table())) + ' (']
table_output.append(' %s %s %s%s,' % \
(style.SQL_FIELD(backend.quote_name('id')),
- style.SQL_COLTYPE(data_types['AutoField']),
+ style.SQL_COLTYPE(models.AutoField(primary_key=True).db_type()),
style.SQL_KEYWORD('NOT NULL PRIMARY KEY'),
tablespace_sql))
table_output.append(' %s %s %s %s (%s)%s,' % \
(style.SQL_FIELD(backend.quote_name(f.m2m_column_name())),
- style.SQL_COLTYPE(data_types[get_rel_data_type(opts.pk)] % opts.pk.__dict__),
+ style.SQL_COLTYPE(models.ForeignKey(model).db_type()),
style.SQL_KEYWORD('NOT NULL REFERENCES'),
style.SQL_TABLE(backend.quote_name(opts.db_table)),
style.SQL_FIELD(backend.quote_name(opts.pk.column)),
backend.get_deferrable_sql()))
table_output.append(' %s %s %s %s (%s)%s,' % \
(style.SQL_FIELD(backend.quote_name(f.m2m_reverse_name())),
- style.SQL_COLTYPE(data_types[get_rel_data_type(f.rel.to._meta.pk)] % f.rel.to._meta.pk.__dict__),
+ style.SQL_COLTYPE(models.ForeignKey(f.rel.to).db_type()),
style.SQL_KEYWORD('NOT NULL REFERENCES'),
style.SQL_TABLE(backend.quote_name(f.rel.to._meta.db_table)),
style.SQL_FIELD(backend.quote_name(f.rel.to._meta.pk.column)),
@@ -517,7 +501,7 @@ def _emit_post_sync_signal(created_models, verbosity, interactive):
def syncdb(verbosity=1, interactive=True):
"Creates the database tables for all apps in INSTALLED_APPS whose tables haven't already been created."
- from django.db import backend, connection, transaction, models, get_creation_module
+ from django.db import backend, connection, transaction, models
from django.conf import settings
disable_termcolors()
@@ -533,8 +517,6 @@ def syncdb(verbosity=1, interactive=True):
except ImportError:
pass
- data_types = get_creation_module().DATA_TYPES
-
cursor = connection.cursor()
# Get a list of all existing database tables,
@@ -928,9 +910,9 @@ def inspectdb():
field_type, new_params = field_type
extra_params.update(new_params)
- # Add maxlength for all CharFields.
+ # Add max_length for all CharFields.
if field_type == 'CharField' and row[3]:
- extra_params['maxlength'] = row[3]
+ extra_params['max_length'] = row[3]
if field_type == 'DecimalField':
extra_params['max_digits'] = row[4]
@@ -1005,8 +987,8 @@ def get_validation_errors(outfile, app=None):
for f in opts.fields:
if f.name == 'id' and not f.primary_key and opts.pk.name == 'id':
e.add(opts, '"%s": You can\'t use "id" as a field name, because each model automatically gets an "id" field if none of the fields have primary_key=True. You need to either remove/rename your "id" field or add primary_key=True to a field.' % f.name)
- if isinstance(f, models.CharField) and f.maxlength in (None, 0):
- e.add(opts, '"%s": CharFields require a "maxlength" attribute.' % f.name)
+ if isinstance(f, models.CharField) and f.max_length in (None, 0):
+ e.add(opts, '"%s": CharFields require a "max_length" attribute.' % f.name)
if isinstance(f, models.DecimalField):
if f.decimal_places is None:
e.add(opts, '"%s": DecimalFields require a "decimal_places" attribute.' % f.name)
@@ -1029,11 +1011,11 @@ def get_validation_errors(outfile, app=None):
if f.db_index not in (None, True, False):
e.add(opts, '"%s": "db_index" should be either None, True or False.' % f.name)
- # Check that maxlength <= 255 if using older MySQL versions.
+ # Check that max_length <= 255 if using older MySQL versions.
if settings.DATABASE_ENGINE == 'mysql':
db_version = connection.get_server_version()
- if db_version < (5, 0, 3) and isinstance(f, (models.CharField, models.CommaSeparatedIntegerField, models.SlugField)) and f.maxlength > 255:
- e.add(opts, '"%s": %s cannot have a "maxlength" greater than 255 when you are using a version of MySQL prior to 5.0.3 (you are using %s).' % (f.name, f.__class__.__name__, '.'.join([str(n) for n in db_version[:3]])))
+ if db_version < (5, 0, 3) and isinstance(f, (models.CharField, models.CommaSeparatedIntegerField, models.SlugField)) and f.max_length > 255:
+ e.add(opts, '"%s": %s cannot have a "max_length" greater than 255 when you are using a version of MySQL prior to 5.0.3 (you are using %s).' % (f.name, f.__class__.__name__, '.'.join([str(n) for n in db_version[:3]])))
# Check to see if the related field will clash with any
# existing fields, m2m fields, m2m related objects or related objects
@@ -1257,7 +1239,8 @@ def runserver(addr, port, use_reloader=True, admin_media_dir=''):
except (AttributeError, KeyError):
error_text = str(e)
sys.stderr.write(style.ERROR("Error: %s" % error_text) + '\n')
- sys.exit(1)
+ # Need to use an OS exit because sys.exit doesn't work in a thread
+ os._exit(1)
except KeyboardInterrupt:
sys.exit(0)
if use_reloader:
@@ -1269,18 +1252,17 @@ runserver.args = '[--noreload] [--adminmedia=ADMIN_MEDIA_PATH] [optional port nu
def createcachetable(tablename):
"Creates the table needed to use the SQL cache backend"
- from django.db import backend, connection, transaction, get_creation_module, models
- data_types = get_creation_module().DATA_TYPES
+ from django.db import backend, connection, transaction, models
fields = (
# "key" is a reserved word in MySQL, so use "cache_key" instead.
- models.CharField(name='cache_key', maxlength=255, unique=True, primary_key=True),
+ models.CharField(name='cache_key', max_length=255, unique=True, primary_key=True),
models.TextField(name='value'),
models.DateTimeField(name='expires', db_index=True),
)
table_output = []
index_output = []
for f in fields:
- field_output = [backend.quote_name(f.name), data_types[f.get_internal_type()] % f.__dict__]
+ field_output = [backend.quote_name(f.name), f.db_type()]
field_output.append("%sNULL" % (not f.null and "NOT " or ""))
if f.unique:
field_output.append("UNIQUE")
@@ -1321,6 +1303,10 @@ def run_shell(use_plain=False):
shell.mainloop()
except ImportError:
import code
+ # Set up a dictionary to serve as the environment for the shell, so
+ # that tab completion works on objects that are imported at runtime.
+ # See ticket 5082.
+ imported_objects = {}
try: # Try activating rlcompleter, because it's handy.
import readline
except ImportError:
@@ -1329,8 +1315,9 @@ def run_shell(use_plain=False):
# We don't have to wrap the following import in a 'try', because
# we already know 'readline' was imported successfully.
import rlcompleter
+ readline.set_completer(rlcompleter.Completer(imported_objects).complete)
readline.parse_and_bind("tab:complete")
- code.interact()
+ code.interact(local=imported_objects)
run_shell.args = '[--plain]'
def dbshell():
@@ -1352,16 +1339,11 @@ def runfcgi(args):
runfastcgi(args)
runfcgi.args = '[various KEY=val options, use `runfcgi help` for help]'
-def test(app_labels, verbosity=1):
+def test(test_labels, verbosity=1, interactive=True):
"Runs the test suite for the specified applications"
from django.conf import settings
from django.db.models import get_app, get_apps
-
- if len(app_labels) == 0:
- app_list = get_apps()
- else:
- app_list = [get_app(app_label) for app_label in app_labels]
-
+
test_path = settings.TEST_RUNNER.split('.')
# Allow for Python 2.5 relative paths
if len(test_path) > 1:
@@ -1371,12 +1353,12 @@ def test(app_labels, verbosity=1):
test_module = __import__(test_module_name, {}, {}, test_path[-1])
test_runner = getattr(test_module, test_path[-1])
- failures = test_runner(app_list, verbosity)
+ failures = test_runner(test_labels, verbosity=verbosity, interactive=interactive)
if failures:
sys.exit(failures)
test.help_doc = 'Runs the test suite for the specified applications, or the entire site if no apps are specified'
-test.args = '[--verbosity] ' + APP_ARGS
+test.args = '[--verbosity] [--noinput]' + APP_ARGS
def load_data(fixture_labels, verbosity=1):
"Installs the provided fixture file(s) as data in the database."
@@ -1450,7 +1432,7 @@ def load_data(fixture_labels, verbosity=1):
print "Installing %s fixture '%s' from %s." % \
(format, fixture_name, humanize(fixture_dir))
try:
- objects = serializers.deserialize(format, fixture)
+ objects = serializers.deserialize(format, fixture)
for obj in objects:
count[0] += 1
models.add(obj.object.__class__)
@@ -1652,7 +1634,12 @@ def execute_from_command_line(action_mapping=DEFAULT_ACTION_MAPPING, argv=None):
action_mapping[action](args[1])
except IndexError:
parser.print_usage_and_exit()
- elif action in ('test', 'loaddata'):
+ elif action == 'test':
+ try:
+ action_mapping[action](args[1:], int(options.verbosity), options.interactive)
+ except IndexError:
+ parser.print_usage_and_exit()
+ elif action == 'loaddata':
try:
action_mapping[action](args[1:], int(options.verbosity))
except IndexError:
@@ -1716,14 +1703,15 @@ def setup_environ(settings_mod):
# Add this project to sys.path so that it's importable in the conventional
# way. For example, if this file (manage.py) lives in a directory
# "myproject", this code would add "/path/to/myproject" to sys.path.
- project_directory = os.path.dirname(settings_mod.__file__)
+ project_directory, settings_filename = os.path.split(settings_mod.__file__)
project_name = os.path.basename(project_directory)
+ settings_name = os.path.splitext(settings_filename)[0]
sys.path.append(os.path.join(project_directory, '..'))
project_module = __import__(project_name, {}, {}, [''])
sys.path.pop()
# Set DJANGO_SETTINGS_MODULE appropriately.
- os.environ['DJANGO_SETTINGS_MODULE'] = '%s.settings' % project_name
+ os.environ['DJANGO_SETTINGS_MODULE'] = '%s.%s' % (project_name, settings_name)
return project_directory
def execute_manager(settings_mod, argv=None):
diff --git a/django/core/serializers/base.py b/django/core/serializers/base.py
index 1ef7bee472..ee9e4dd621 100644
--- a/django/core/serializers/base.py
+++ b/django/core/serializers/base.py
@@ -158,7 +158,12 @@ class DeserializedObject(object):
return " for this set of radio fields."
+ return self.render()
+
+ def render(self):
+ """Outputs a
for this set of radio fields."""
return u'
-The render() method returns a RadioFieldRenderer object, whose str() is a \n%s\n
' % u'\n'.join([u'
)*?
s"
+ "Convert newlines into
s."
value = re.sub(r'\r\n|\r|\n', '\n', force_unicode(value)) # normalize newlines
paras = re.split('\n{2,}', value)
paras = [u'
') for p in paras]
@@ -39,31 +39,32 @@ def linebreaks(value):
linebreaks = allow_lazy(linebreaks, unicode)
def strip_tags(value):
- "Returns the given HTML with all tags stripped"
+ "Return the given HTML with all tags stripped."
return re.sub(r'<[^>]*?>', '', force_unicode(value))
strip_tags = allow_lazy(strip_tags)
def strip_spaces_between_tags(value):
- "Returns the given HTML with spaces between tags removed"
+ "Return the given HTML with spaces between tags removed."
return re.sub(r'>\s+<', '><', force_unicode(value))
strip_spaces_between_tags = allow_lazy(strip_spaces_between_tags, unicode)
def strip_entities(value):
- "Returns the given HTML with all entities (&something;) stripped"
- return re.sub(r'&(?:\w+|#\d);', '', force_unicode(value))
+ "Return the given HTML with all entities (&something;) stripped."
+ return re.sub(r'&(?:\w+|#\d+);', '', force_unicode(value))
strip_entities = allow_lazy(strip_entities, unicode)
def fix_ampersands(value):
- "Returns the given HTML with all unencoded ampersands encoded correctly"
+ "Return the given HTML with all unencoded ampersands encoded correctly."
return unencoded_ampersands_re.sub('&', force_unicode(value))
fix_ampersands = allow_lazy(fix_ampersands, unicode)
def urlize(text, trim_url_limit=None, nofollow=False):
"""
- Converts any URLs in text into clickable links. Works on http://, https://
- and www. links. Links can have trailing punctuation (periods, commas,
- close-parens) and leading punctuation (opening parens) and it'll still do
- the right thing.
+ Convert any URLs in text into clickable links.
+
+ Works on http://, https://, and www. links. Links can have trailing
+ punctuation (periods, commas, close-parens) and leading punctuation
+ (opening parens) and it'll still do the right thing.
If trim_url_limit is not None, the URLs in link text longer than this limit
will truncated to trim_url_limit-3 characters and appended with an elipsis.
@@ -94,14 +95,14 @@ urlize = allow_lazy(urlize, unicode)
def clean_html(text):
"""
- Cleans the given HTML. Specifically, it does the following:
- * Converts and to and .
- * Encodes all ampersands correctly.
- * Removes all "target" attributes from tags.
- * Removes extraneous HTML, such as presentational tags that open and
+ Clean the given HTML. Specifically, do the following:
+ * Convert and to and .
+ * Encode all ampersands correctly.
+ * Remove all "target" attributes from tags.
+ * Remove extraneous HTML, such as presentational tags that open and
immediately close and
.
- * Converts hard-coded bullets into HTML unordered lists.
- * Removes stuff like "\n%s\n
' % s
text = hard_coded_bullets_re.sub(replace_p_tags, text)
- # Remove stuff like ".
+RadioSelect uses a RadioFieldRenderer to render the individual radio inputs.
You can manipulate that object directly to customize the way the RadioSelect
is rendered.
>>> w = RadioSelect()
->>> r = w.render('beatle', 'J', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo')))
+>>> r = w.get_renderer('beatle', 'J', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo')))
>>> for inp in r:
... print inp
@@ -645,10 +648,21 @@ beatle J P Paul False
beatle J G George False
beatle J R Ringo False
+You can create your own custom renderers for RadioSelect to use.
+>>> class MyRenderer(RadioFieldRenderer):
+... def render(self):
+... return u'
\n'.join([unicode(choice) for choice in self])
+>>> w = RadioSelect(renderer=MyRenderer)
+>>> print w.render('beatle', 'G', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo')))
+
+
+
+
+
A RadioFieldRenderer object also allows index access to individual RadioInput
objects.
>>> w = RadioSelect()
->>> r = w.render('beatle', 'J', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo')))
+>>> r = w.get_renderer('beatle', 'J', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo')))
>>> print r[1]
>>> print r[0]
@@ -897,7 +911,7 @@ u'1234567890'
>>> f.clean('1234567890a')
Traceback (most recent call last):
...
-ValidationError: [u'Ensure this value has at most 10 characters.']
+ValidationError: [u'Ensure this value has at most 10 characters (it has 11).']
CharField accepts an optional min_length parameter:
>>> f = CharField(min_length=10, required=False)
@@ -906,7 +920,7 @@ u''
>>> f.clean('12345')
Traceback (most recent call last):
...
-ValidationError: [u'Ensure this value has at least 10 characters.']
+ValidationError: [u'Ensure this value has at least 10 characters (it has 5).']
>>> f.clean('1234567890')
u'1234567890'
>>> f.clean('1234567890a')
@@ -920,7 +934,7 @@ ValidationError: [u'This field is required.']
>>> f.clean('12345')
Traceback (most recent call last):
...
-ValidationError: [u'Ensure this value has at least 10 characters.']
+ValidationError: [u'Ensure this value has at least 10 characters (it has 5).']
>>> f.clean('1234567890')
u'1234567890'
>>> f.clean('1234567890a')
@@ -1177,6 +1191,10 @@ ValidationError: [u'Ensure this value is greater than or equal to 0.5.']
Decimal("1.5")
>>> f.clean('0.5')
Decimal("0.5")
+>>> f.clean('.5')
+Decimal("0.5")
+>>> f.clean('00.50')
+Decimal("0.50")
# DateField ###################################################################
@@ -1440,11 +1458,11 @@ RegexField also access min_length and max_length parameters, for convenience.
>>> f.clean('123')
Traceback (most recent call last):
...
-ValidationError: [u'Ensure this value has at least 5 characters.']
+ValidationError: [u'Ensure this value has at least 5 characters (it has 3).']
>>> f.clean('abc')
Traceback (most recent call last):
...
-ValidationError: [u'Ensure this value has at least 5 characters.']
+ValidationError: [u'Ensure this value has at least 5 characters (it has 3).']
>>> f.clean('12345')
u'12345'
>>> f.clean('1234567890')
@@ -1452,7 +1470,7 @@ u'1234567890'
>>> f.clean('12345678901')
Traceback (most recent call last):
...
-ValidationError: [u'Ensure this value has at most 10 characters.']
+ValidationError: [u'Ensure this value has at most 10 characters (it has 11).']
>>> f.clean('12345a')
Traceback (most recent call last):
...
@@ -1509,13 +1527,49 @@ EmailField also access min_length and max_length parameters, for convenience.
>>> f.clean('a@foo.com')
Traceback (most recent call last):
...
-ValidationError: [u'Ensure this value has at least 10 characters.']
+ValidationError: [u'Ensure this value has at least 10 characters (it has 9).']
>>> f.clean('alf@foo.com')
u'alf@foo.com'
>>> f.clean('alf123456788@foo.com')
Traceback (most recent call last):
...
-ValidationError: [u'Ensure this value has at most 15 characters.']
+ValidationError: [u'Ensure this value has at most 15 characters (it has 20).']
+
+# FileField ##################################################################
+
+>>> f = FileField()
+>>> f.clean('')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+
+>>> f.clean(None)
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
+
+>>> f.clean({})
+Traceback (most recent call last):
+...
+ValidationError: [u'No file was submitted.']
+
+>>> f.clean('some content that is not a file')
+Traceback (most recent call last):
+...
+ValidationError: [u'No file was submitted. Check the encoding type on the form.']
+
+>>> f.clean({'filename': 'name', 'content':None})
+Traceback (most recent call last):
+...
+ValidationError: [u'The submitted file is empty.']
+
+>>> f.clean({'filename': 'name', 'content':''})
+Traceback (most recent call last):
+...
+ValidationError: [u'The submitted file is empty.']
+
+>>> type(f.clean({'filename': 'name', 'content':'Some File Content'}))
+
+
+>>> f = FileForm(data={}, files={}, auto_id=False)
+>>> print f
+File1:
+
+>>> f = FileForm(data={}, files={'file1': {'filename': 'name', 'content':''}}, auto_id=False)
+>>> print f
+File1:
+
+>>> f = FileForm(data={}, files={'file1': 'something that is not a file'}, auto_id=False)
+>>> print f
+File1:
+
+>>> f = FileForm(data={}, files={'file1': {'filename': 'name', 'content':'some content'}}, auto_id=False)
+>>> print f
+File1:
+>>> f.is_valid()
+True
+
# Basic form processing in a view #############################################
>>> from django.template import Template, Context
@@ -3268,7 +3351,7 @@ Case 2: POST with erroneous data (a redisplayed form, with errors).
File1:
diff --git a/tests/regressiontests/initial_sql_regress/models.py b/tests/regressiontests/initial_sql_regress/models.py
index dedbba8e5c..7cf725991a 100644
--- a/tests/regressiontests/initial_sql_regress/models.py
+++ b/tests/regressiontests/initial_sql_regress/models.py
@@ -5,7 +5,7 @@ Regression tests for initial SQL insertion.
from django.db import models
class Simple(models.Model):
- name = models.CharField(maxlength = 50)
+ name = models.CharField(max_length = 50)
__test__ = {'API_TESTS':""}
diff --git a/tests/regressiontests/invalid_admin_options/models.py b/tests/regressiontests/invalid_admin_options/models.py
index 94e6ccdde1..9f77ef5e06 100644
--- a/tests/regressiontests/invalid_admin_options/models.py
+++ b/tests/regressiontests/invalid_admin_options/models.py
@@ -10,7 +10,7 @@ model_errors = ""
class ListDisplayBadOne(models.Model):
"Test list_display, list_display must be a list or tuple"
- first_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
class Admin:
list_display = 'first_name'
@@ -20,7 +20,7 @@ model_errors += """invalid_admin_options.listdisplaybadone: "admin.list_display"
class ListDisplayBadTwo(models.Model):
"Test list_display, list_display items must be attributes, methods or properties."
- first_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
class Admin:
list_display = ['first_name','nonexistent']
@@ -29,7 +29,7 @@ model_errors += """invalid_admin_options.listdisplaybadtwo: "admin.list_display"
"""
class ListDisplayBadThree(models.Model):
"Test list_display, list_display items can not be a ManyToManyField."
- first_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
nick_names = models.ManyToManyField('ListDisplayGood')
class Admin:
@@ -40,7 +40,7 @@ model_errors += """invalid_admin_options.listdisplaybadthree: "admin.list_displa
class ListDisplayGood(models.Model):
"Test list_display, Admin list_display can be a attribute, method or property."
- first_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
def _last_name(self):
return self.first_name
@@ -54,8 +54,8 @@ class ListDisplayGood(models.Model):
class ListDisplayLinksBadOne(models.Model):
"Test list_display_links, item must be included in list_display."
- first_name = models.CharField(maxlength=30)
- last_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
+ last_name = models.CharField(max_length=30)
class Admin:
list_display = ['last_name']
@@ -66,8 +66,8 @@ model_errors += """invalid_admin_options.listdisplaylinksbadone: "admin.list_dis
class ListDisplayLinksBadTwo(models.Model):
"Test list_display_links, must be a list or tuple."
- first_name = models.CharField(maxlength=30)
- last_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
+ last_name = models.CharField(max_length=30)
class Admin:
list_display = ['first_name','last_name']
@@ -80,8 +80,8 @@ model_errors += """invalid_admin_options.listdisplaylinksbadtwo: "admin.list_dis
## This is failing but the validation which should fail is not.
#class ListDisplayLinksBadThree(models.Model):
# "Test list_display_links, must define list_display to use list_display_links."
-# first_name = models.CharField(maxlength=30)
-# last_name = models.CharField(maxlength=30)
+# first_name = models.CharField(max_length=30)
+# last_name = models.CharField(max_length=30)
#
# class Admin:
# list_display_links = ('first_name',)
@@ -91,7 +91,7 @@ model_errors += """invalid_admin_options.listdisplaylinksbadtwo: "admin.list_dis
class ListDisplayLinksGood(models.Model):
"Test list_display_links, Admin list_display_list can be a attribute, method or property."
- first_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
def _last_name(self):
return self.first_name
@@ -106,7 +106,7 @@ class ListDisplayLinksGood(models.Model):
class ListFilterBadOne(models.Model):
"Test list_filter, must be a list or tuple."
- first_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
class Admin:
list_filter = 'first_name'
@@ -116,7 +116,7 @@ model_errors += """invalid_admin_options.listfilterbadone: "admin.list_filter",
class ListFilterBadTwo(models.Model):
"Test list_filter, must be a field not a property or method."
- first_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
def _last_name(self):
return self.first_name
@@ -134,7 +134,7 @@ invalid_admin_options.listfilterbadtwo: "admin.list_filter" refers to 'full_name
class DateHierarchyBadOne(models.Model):
"Test date_hierarchy, must be a date or datetime field."
- first_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
birth_day = models.DateField()
class Admin:
@@ -146,7 +146,7 @@ class DateHierarchyBadOne(models.Model):
class DateHierarchyBadTwo(models.Model):
"Test date_hieracrhy, must be a field."
- first_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
birth_day = models.DateField()
class Admin:
@@ -157,7 +157,7 @@ model_errors += """invalid_admin_options.datehierarchybadtwo: "admin.date_hierar
class DateHierarchyGood(models.Model):
"Test date_hieracrhy, must be a field."
- first_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
birth_day = models.DateField()
class Admin:
@@ -165,7 +165,7 @@ class DateHierarchyGood(models.Model):
class SearchFieldsBadOne(models.Model):
"Test search_fields, must be a list or tuple."
- first_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
class Admin:
search_fields = ('nonexistent')
@@ -176,7 +176,7 @@ class SearchFieldsBadOne(models.Model):
class SearchFieldsBadTwo(models.Model):
"Test search_fields, must be a field."
- first_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
def _last_name(self):
return self.first_name
@@ -191,8 +191,8 @@ class SearchFieldsBadTwo(models.Model):
class SearchFieldsGood(models.Model):
"Test search_fields, must be a list or tuple."
- first_name = models.CharField(maxlength=30)
- last_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
+ last_name = models.CharField(max_length=30)
class Admin:
search_fields = ['first_name','last_name']
@@ -200,7 +200,7 @@ class SearchFieldsGood(models.Model):
class JsBadOne(models.Model):
"Test js, must be a list or tuple"
- name = models.CharField(maxlength=30)
+ name = models.CharField(max_length=30)
class Admin:
js = 'test.js'
@@ -211,7 +211,7 @@ class JsBadOne(models.Model):
class SaveAsBad(models.Model):
"Test save_as, should be True or False"
- name = models.CharField(maxlength=30)
+ name = models.CharField(max_length=30)
class Admin:
save_as = 'not True or False'
@@ -222,7 +222,7 @@ class SaveAsBad(models.Model):
class SaveOnTopBad(models.Model):
"Test save_on_top, should be True or False"
- name = models.CharField(maxlength=30)
+ name = models.CharField(max_length=30)
class Admin:
save_on_top = 'not True or False'
@@ -233,7 +233,7 @@ class SaveOnTopBad(models.Model):
class ListSelectRelatedBad(models.Model):
"Test list_select_related, should be True or False"
- name = models.CharField(maxlength=30)
+ name = models.CharField(max_length=30)
class Admin:
list_select_related = 'not True or False'
@@ -244,7 +244,7 @@ class ListSelectRelatedBad(models.Model):
class ListPerPageBad(models.Model):
"Test list_per_page, should be a positive integer value."
- name = models.CharField(maxlength=30)
+ name = models.CharField(max_length=30)
class Admin:
list_per_page = 89.3
@@ -255,8 +255,8 @@ class ListPerPageBad(models.Model):
class FieldsBadOne(models.Model):
"Test fields, should be a tuple"
- first_name = models.CharField(maxlength=30)
- last_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
+ last_name = models.CharField(max_length=30)
class Admin:
fields = 'not a tuple'
@@ -267,8 +267,8 @@ class FieldsBadOne(models.Model):
class FieldsBadTwo(models.Model):
"""Test fields, 'fields' dict option is required."""
- first_name = models.CharField(maxlength=30)
- last_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
+ last_name = models.CharField(max_length=30)
class Admin:
fields = ('Name', {'description': 'this fieldset needs fields'})
@@ -279,8 +279,8 @@ class FieldsBadTwo(models.Model):
class FieldsBadThree(models.Model):
"""Test fields, 'classes' and 'description' are the only allowable extra dict options."""
- first_name = models.CharField(maxlength=30)
- last_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
+ last_name = models.CharField(max_length=30)
class Admin:
fields = ('Name', {'fields': ('first_name','last_name'),'badoption': 'verybadoption'})
@@ -291,8 +291,8 @@ class FieldsBadThree(models.Model):
class FieldsGood(models.Model):
"Test fields, working example"
- first_name = models.CharField(maxlength=30)
- last_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
+ last_name = models.CharField(max_length=30)
birth_day = models.DateField()
class Admin:
@@ -303,8 +303,8 @@ class FieldsGood(models.Model):
class OrderingBad(models.Model):
"Test ordering, must be a field."
- first_name = models.CharField(maxlength=30)
- last_name = models.CharField(maxlength=30)
+ first_name = models.CharField(max_length=30)
+ last_name = models.CharField(max_length=30)
class Admin:
ordering = 'nonexistent'
@@ -316,7 +316,7 @@ class OrderingBad(models.Model):
## TODO: Add a manager validator, this should fail gracefully.
#class ManagerBad(models.Model):
# "Test manager, must be a manager object."
-# first_name = models.CharField(maxlength=30)
+# first_name = models.CharField(max_length=30)
#
# class Admin:
# manager = 'nonexistent'
diff --git a/tests/regressiontests/many_to_one_regress/models.py b/tests/regressiontests/many_to_one_regress/models.py
index 8ddec98da4..57bbcd8489 100644
--- a/tests/regressiontests/many_to_one_regress/models.py
+++ b/tests/regressiontests/many_to_one_regress/models.py
@@ -12,15 +12,15 @@ class Second(models.Model):
# Protect against repetition of #1839, #2415 and #2536.
class Third(models.Model):
- name = models.CharField(maxlength=20)
+ name = models.CharField(max_length=20)
third = models.ForeignKey('self', null=True, related_name='child_set')
class Parent(models.Model):
- name = models.CharField(maxlength=20)
+ name = models.CharField(max_length=20)
bestchild = models.ForeignKey('Child', null=True, related_name='favored_by')
class Child(models.Model):
- name = models.CharField(maxlength=20)
+ name = models.CharField(max_length=20)
parent = models.ForeignKey(Parent)
diff --git a/tests/regressiontests/maxlength/__init__.py b/tests/regressiontests/maxlength/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/regressiontests/maxlength/models.py b/tests/regressiontests/maxlength/models.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/regressiontests/maxlength/tests.py b/tests/regressiontests/maxlength/tests.py
new file mode 100644
index 0000000000..8a5f874c78
--- /dev/null
+++ b/tests/regressiontests/maxlength/tests.py
@@ -0,0 +1,160 @@
+# Test access to max_length while still providing full backwards compatibility
+# with legacy maxlength attribute.
+"""
+
+Don't print out the deprecation warnings during testing.
+>>> from warnings import filterwarnings
+>>> filterwarnings("ignore")
+
+# legacy_maxlength function
+
+>>> from django.utils.maxlength import legacy_maxlength
+
+>>> legacy_maxlength(None, None)
+
+
+>>> legacy_maxlength(10, None)
+10
+
+>>> legacy_maxlength(None, 10)
+10
+
+>>> legacy_maxlength(10, 12)
+Traceback (most recent call last):
+...
+TypeError: field can not take both the max_length argument and the legacy maxlength argument.
+
+>>> legacy_maxlength(0, 10)
+Traceback (most recent call last):
+...
+TypeError: field can not take both the max_length argument and the legacy maxlength argument.
+
+>>> legacy_maxlength(0, None)
+0
+
+>>> legacy_maxlength(None, 0)
+0
+
+#===============================================================================
+# Fields
+#===============================================================================
+
+# Set up fields
+>>> from django.db.models import fields
+>>> new = fields.Field(max_length=15)
+>>> old = fields.Field(maxlength=10)
+
+# Ensure both max_length and legacy maxlength are not able to both be specified
+>>> fields.Field(maxlength=10, max_length=15)
+Traceback (most recent call last):
+ ...
+TypeError: field can not take both the max_length argument and the legacy maxlength argument.
+
+# Test max_length
+>>> new.max_length
+15
+>>> old.max_length
+10
+
+# Test accessing maxlength
+>>> new.maxlength
+15
+>>> old.maxlength
+10
+
+# Test setting maxlength
+>>> new.maxlength += 1
+>>> old.maxlength += 1
+>>> new.max_length
+16
+>>> old.max_length
+11
+
+# SlugField __init__ passes through max_length so test that too
+>>> fields.SlugField('new', max_length=15).max_length
+15
+>>> fields.SlugField('empty').max_length
+50
+>>> fields.SlugField('old', maxlength=10).max_length
+10
+
+#===============================================================================
+# (old)forms
+#===============================================================================
+
+>>> from django import oldforms
+
+# Test max_length attribute
+
+>>> oldforms.TextField('new', max_length=15).render('')
+u''
+
+>>> oldforms.IntegerField('new', max_length=15).render('')
+u''
+
+>>> oldforms.SmallIntegerField('new', max_length=15).render('')
+u''
+
+>>> oldforms.PositiveIntegerField('new', max_length=15).render('')
+u''
+
+>>> oldforms.PositiveSmallIntegerField('new', max_length=15).render('')
+u''
+
+>>> oldforms.DatetimeField('new', max_length=15).render('')
+u''
+
+>>> oldforms.EmailField('new', max_length=15).render('')
+u''
+>>> oldforms.EmailField('new').render('')
+u''
+
+>>> oldforms.URLField('new', max_length=15).render('')
+u''
+>>> oldforms.URLField('new').render('')
+u''
+
+>>> oldforms.IPAddressField('new', max_length=15).render('')
+u''
+>>> oldforms.IPAddressField('new').render('')
+u''
+
+>>> oldforms.CommaSeparatedIntegerField('new', max_length=15).render('')
+u''
+
+
+# Test legacy maxlength attribute
+
+>>> oldforms.TextField('old', maxlength=10).render('')
+u''
+
+>>> oldforms.IntegerField('old', maxlength=10).render('')
+u''
+
+>>> oldforms.SmallIntegerField('old', maxlength=10).render('')
+u''
+
+>>> oldforms.PositiveIntegerField('old', maxlength=10).render('')
+u''
+
+>>> oldforms.PositiveSmallIntegerField('old', maxlength=10).render('')
+u''
+
+>>> oldforms.DatetimeField('old', maxlength=10).render('')
+u''
+
+>>> oldforms.EmailField('old', maxlength=10).render('')
+u''
+
+>>> oldforms.URLField('old', maxlength=10).render('')
+u''
+
+>>> oldforms.IPAddressField('old', maxlength=10).render('')
+u''
+
+>>> oldforms.CommaSeparatedIntegerField('old', maxlength=10).render('')
+u''
+"""
+if __name__ == "__main__":
+ import doctest
+ doctest.testmod()
diff --git a/tests/regressiontests/model_fields/__init__.py b/tests/regressiontests/model_fields/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/regressiontests/model_fields/models.py b/tests/regressiontests/model_fields/models.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/regressiontests/model_fields/tests.py b/tests/regressiontests/model_fields/tests.py
new file mode 100644
index 0000000000..e279a0669f
--- /dev/null
+++ b/tests/regressiontests/model_fields/tests.py
@@ -0,0 +1,18 @@
+"""
+>>> from django.db.models.fields import *
+
+# DecimalField
+
+>>> f = DecimalField()
+
+>>> f.to_python(3)
+Decimal("3")
+
+>>> f.to_python("3.14")
+Decimal("3.14")
+
+>>> f.to_python("abc")
+Traceback (most recent call last):
+...
+ValidationError: [u'This value must be a decimal number.']
+"""
diff --git a/tests/regressiontests/model_regress/models.py b/tests/regressiontests/model_regress/models.py
index b4d432d8fa..0fee831212 100644
--- a/tests/regressiontests/model_regress/models.py
+++ b/tests/regressiontests/model_regress/models.py
@@ -7,7 +7,7 @@ CHOICES = (
)
class Article(models.Model):
- headline = models.CharField(maxlength=100, default='Default headline')
+ headline = models.CharField(max_length=100, default='Default headline')
pub_date = models.DateTimeField()
status = models.IntegerField(blank=True, null=True, choices=CHOICES)
diff --git a/tests/regressiontests/null_queries/models.py b/tests/regressiontests/null_queries/models.py
index 2e903876bf..2aa36b2c1a 100644
--- a/tests/regressiontests/null_queries/models.py
+++ b/tests/regressiontests/null_queries/models.py
@@ -1,14 +1,14 @@
from django.db import models
class Poll(models.Model):
- question = models.CharField(maxlength=200)
+ question = models.CharField(max_length=200)
def __unicode__(self):
return u"Q: %s " % self.question
class Choice(models.Model):
poll = models.ForeignKey(Poll)
- choice = models.CharField(maxlength=200)
+ choice = models.CharField(max_length=200)
def __unicode__(self):
return u"Choice: %s in poll %s" % (self.choice, self.poll)
diff --git a/tests/regressiontests/one_to_one_regress/models.py b/tests/regressiontests/one_to_one_regress/models.py
index be48c842ed..c5ffd3fb3c 100644
--- a/tests/regressiontests/one_to_one_regress/models.py
+++ b/tests/regressiontests/one_to_one_regress/models.py
@@ -1,8 +1,8 @@
from django.db import models
class Place(models.Model):
- name = models.CharField(maxlength=50)
- address = models.CharField(maxlength=80)
+ name = models.CharField(max_length=50)
+ address = models.CharField(max_length=80)
def __unicode__(self):
return u"%s the place" % self.name
@@ -16,7 +16,7 @@ class Restaurant(models.Model):
return u"%s the restaurant" % self.place.name
class Favorites(models.Model):
- name = models.CharField(maxlength = 50)
+ name = models.CharField(max_length = 50)
restaurants = models.ManyToManyField(Restaurant)
def __unicode__(self):
diff --git a/tests/regressiontests/serializers_regress/models.py b/tests/regressiontests/serializers_regress/models.py
index b441885f10..e9df508822 100644
--- a/tests/regressiontests/serializers_regress/models.py
+++ b/tests/regressiontests/serializers_regress/models.py
@@ -16,7 +16,7 @@ class BooleanData(models.Model):
data = models.BooleanField(null=True)
class CharData(models.Model):
- data = models.CharField(maxlength=30, null=True)
+ data = models.CharField(max_length=30, null=True)
class DateData(models.Model):
data = models.DateField(null=True)
@@ -90,7 +90,7 @@ class Tag(models.Model):
ordering = ["data"]
class GenericData(models.Model):
- data = models.CharField(maxlength=30)
+ data = models.CharField(max_length=30)
tags = generic.GenericRelation(Tag)
@@ -102,13 +102,13 @@ class Anchor(models.Model):
"""This is a model that can be used as
something for other models to point at"""
- data = models.CharField(maxlength=30)
+ data = models.CharField(max_length=30)
class UniqueAnchor(models.Model):
"""This is a model that can be used as
something for other models to point at"""
- data = models.CharField(unique=True, maxlength=30)
+ data = models.CharField(unique=True, max_length=30)
class FKData(models.Model):
data = models.ForeignKey(Anchor, null=True)
@@ -117,7 +117,8 @@ class M2MData(models.Model):
data = models.ManyToManyField(Anchor, null=True)
class O2OData(models.Model):
- data = models.OneToOneField(Anchor, null=True)
+ # One to one field can't be null, since it is a PK.
+ data = models.OneToOneField(Anchor)
class FKSelfData(models.Model):
data = models.ForeignKey('self', null=True)
@@ -143,7 +144,7 @@ class BooleanPKData(models.Model):
data = models.BooleanField(primary_key=True)
class CharPKData(models.Model):
- data = models.CharField(maxlength=30, primary_key=True)
+ data = models.CharField(max_length=30, primary_key=True)
# class DatePKData(models.Model):
# data = models.DateField(primary_key=True)
@@ -175,8 +176,9 @@ class IntegerPKData(models.Model):
class IPAddressPKData(models.Model):
data = models.IPAddressField(primary_key=True)
-class NullBooleanPKData(models.Model):
- data = models.NullBooleanField(primary_key=True)
+# This is just a Boolean field with null=True, and we can't test a PK value of NULL.
+# class NullBooleanPKData(models.Model):
+# data = models.NullBooleanField(primary_key=True)
class PhonePKData(models.Model):
data = models.PhoneNumberField(primary_key=True)
@@ -206,6 +208,19 @@ class USStatePKData(models.Model):
# data = models.XMLField(primary_key=True)
class ComplexModel(models.Model):
- field1 = models.CharField(maxlength=10)
- field2 = models.CharField(maxlength=10)
- field3 = models.CharField(maxlength=10)
+ field1 = models.CharField(max_length=10)
+ field2 = models.CharField(max_length=10)
+ field3 = models.CharField(max_length=10)
+
+# Tests for handling fields with pre_save functions, or
+# models with save functions that modify data
+class AutoNowDateTimeData(models.Model):
+ data = models.DateTimeField(null=True, auto_now=True)
+
+class ModifyingSaveData(models.Model):
+ data = models.IntegerField(null=True)
+
+ def save(self):
+ "A save method that modifies the data in the object"
+ self.data = 666
+ super(ModifyingSaveData, self).save(raw)
diff --git a/tests/regressiontests/serializers_regress/tests.py b/tests/regressiontests/serializers_regress/tests.py
index 7c6da9d356..86dc311269 100644
--- a/tests/regressiontests/serializers_regress/tests.py
+++ b/tests/regressiontests/serializers_regress/tests.py
@@ -24,17 +24,20 @@ except ImportError:
from django.utils import _decimal as decimal
# A set of functions that can be used to recreate
-# test data objects of various kinds
+# test data objects of various kinds.
+# The save method is a raw base model save, to make
+# sure that the data in the database matches the
+# exact test case.
def data_create(pk, klass, data):
instance = klass(id=pk)
instance.data = data
- instance.save()
+ models.Model.save(instance, raw=True)
return instance
def generic_create(pk, klass, data):
instance = klass(id=pk)
instance.data = data[0]
- instance.save()
+ models.Model.save(instance, raw=True)
for tag in data[1:]:
instance.tags.create(data=tag)
return instance
@@ -42,25 +45,25 @@ def generic_create(pk, klass, data):
def fk_create(pk, klass, data):
instance = klass(id=pk)
setattr(instance, 'data_id', data)
- instance.save()
+ models.Model.save(instance, raw=True)
return instance
def m2m_create(pk, klass, data):
instance = klass(id=pk)
- instance.save()
+ models.Model.save(instance, raw=True)
instance.data = data
return instance
def o2o_create(pk, klass, data):
instance = klass()
instance.data_id = data
- instance.save()
+ models.Model.save(instance, raw=True)
return instance
def pk_create(pk, klass, data):
instance = klass()
instance.data = data
- instance.save()
+ models.Model.save(instance, raw=True)
return instance
# A set of functions that can be used to compare
@@ -233,8 +236,8 @@ The end."""),
(pk_obj, 682, IntegerPKData, 0),
# (XX, ImagePKData
(pk_obj, 690, IPAddressPKData, "127.0.0.1"),
- (pk_obj, 700, NullBooleanPKData, True),
- (pk_obj, 701, NullBooleanPKData, False),
+ # (pk_obj, 700, NullBooleanPKData, True),
+ # (pk_obj, 701, NullBooleanPKData, False),
(pk_obj, 710, PhonePKData, "212-634-5789"),
(pk_obj, 720, PositiveIntegerPKData, 123456789),
(pk_obj, 730, PositiveSmallIntegerPKData, 12),
@@ -249,6 +252,9 @@ The end."""),
# (pk_obj, 770, TimePKData, datetime.time(10,42,37)),
(pk_obj, 780, USStatePKData, "MA"),
# (pk_obj, 790, XMLPKData, "
-
+Username: Username: Password1: Password2:
sub1
sub2
sub1