From a3053273c8a5d450a0cd73ee8deebc277d8c4170 Mon Sep 17 00:00:00 2001 From: Boulder Sprinters Date: Mon, 2 Apr 2007 15:36:31 +0000 Subject: boulder-oracle-sprint: Merged to [4905]. git-svn-id: http://code.djangoproject.com/svn/django/branches/boulder-oracle-sprint@4906 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/conf/locale/es_AR/LC_MESSAGES/django.mo | Bin 40281 -> 41308 bytes django/conf/locale/es_AR/LC_MESSAGES/django.po | 2998 ++++++++++---------- django/conf/locale/fr/LC_MESSAGES/django.mo | Bin 39707 -> 41139 bytes django/conf/locale/fr/LC_MESSAGES/django.po | 24 +- django/conf/locale/ja/LC_MESSAGES/django.mo | Bin 43571 -> 47042 bytes django/conf/locale/ja/LC_MESSAGES/django.po | 544 +++- django/conf/locale/ja/LC_MESSAGES/djangojs.mo | Bin 1604 -> 1601 bytes django/conf/locale/ja/LC_MESSAGES/djangojs.po | 14 +- django/conf/locale/te/LC_MESSAGES/django.mo | Bin 35017 -> 35037 bytes django/conf/locale/te/LC_MESSAGES/django.po | 132 +- django/conf/urls/defaults.py | 22 +- django/contrib/comments/models.py | 2 +- django/contrib/humanize/templatetags/humanize.py | 2 +- django/contrib/localflavor/br/__init__.py | 0 django/contrib/localflavor/br/br_states.py | 39 + django/contrib/localflavor/br/forms.py | 39 + django/contrib/localflavor/fi/__init__.py | 0 django/contrib/localflavor/fi/fi_municipalities.py | 427 +++ django/contrib/localflavor/fi/forms.py | 47 + django/contrib/localflavor/it/__init__.py | 0 django/contrib/localflavor/it/forms.py | 32 + django/contrib/localflavor/it/it_province.py | 114 + django/contrib/localflavor/it/it_region.py | 24 + django/contrib/localflavor/no/__init__.py | 0 django/contrib/localflavor/no/forms.py | 77 + django/contrib/localflavor/no/no_municipalities.py | 32 + django/contrib/webdesign/__init__.py | 0 django/contrib/webdesign/lorem_ipsum.py | 66 + django/contrib/webdesign/templatetags/__init__.py | 0 django/contrib/webdesign/templatetags/webdesign.py | 67 + django/core/servers/fastcgi.py | 25 +- django/core/urlresolvers.py | 8 +- django/db/models/base.py | 7 +- django/http/__init__.py | 34 +- django/newforms/fields.py | 19 +- django/newforms/models.py | 5 +- django/newforms/util.py | 11 + django/newforms/widgets.py | 5 +- django/oldforms/__init__.py | 3 +- django/template/defaulttags.py | 92 +- django/utils/html.py | 4 +- django/utils/text.py | 5 +- django/utils/translation/__init__.py | 98 +- django/utils/translation/trans_real.py | 5 - 44 files changed, 3240 insertions(+), 1783 deletions(-) create mode 100644 django/contrib/localflavor/br/__init__.py create mode 100644 django/contrib/localflavor/br/br_states.py create mode 100644 django/contrib/localflavor/br/forms.py create mode 100644 django/contrib/localflavor/fi/__init__.py create mode 100644 django/contrib/localflavor/fi/fi_municipalities.py create mode 100644 django/contrib/localflavor/fi/forms.py create mode 100644 django/contrib/localflavor/it/__init__.py create mode 100644 django/contrib/localflavor/it/forms.py create mode 100644 django/contrib/localflavor/it/it_province.py create mode 100644 django/contrib/localflavor/it/it_region.py create mode 100644 django/contrib/localflavor/no/__init__.py create mode 100644 django/contrib/localflavor/no/forms.py create mode 100644 django/contrib/localflavor/no/no_municipalities.py create mode 100644 django/contrib/webdesign/__init__.py create mode 100644 django/contrib/webdesign/lorem_ipsum.py create mode 100644 django/contrib/webdesign/templatetags/__init__.py create mode 100644 django/contrib/webdesign/templatetags/webdesign.py (limited to 'django') diff --git a/django/conf/locale/es_AR/LC_MESSAGES/django.mo b/django/conf/locale/es_AR/LC_MESSAGES/django.mo index b7f777611b..7fb381c78f 100644 Binary files a/django/conf/locale/es_AR/LC_MESSAGES/django.mo and b/django/conf/locale/es_AR/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/es_AR/LC_MESSAGES/django.po b/django/conf/locale/es_AR/LC_MESSAGES/django.po index c299f2c502..27472353e4 100644 --- a/django/conf/locale/es_AR/LC_MESSAGES/django.po +++ b/django/conf/locale/es_AR/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-02-25 17:21-0300\n" -"PO-Revision-Date: 2007-02-25 17:46-0300\n" +"POT-Creation-Date: 2007-03-24 11:16-0300\n" +"PO-Revision-Date: 2007-03-24 11:54-0300\n" "Last-Translator: Ramiro Morales \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" @@ -16,207 +16,328 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: contrib/contenttypes/models.py:26 -msgid "python model class name" -msgstr "nombre de la clase python del modelo" - -#: contrib/contenttypes/models.py:29 -msgid "content type" -msgstr "tipo de contenido" +#: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450 +#: newforms/fields.py:461 newforms/models.py:177 +#: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274 +#: db/models/fields/__init__.py:610 db/models/fields/__init__.py:621 +#: oldforms/__init__.py:357 +msgid "This field is required." +msgstr "Este campo es obligatorio." -#: contrib/contenttypes/models.py:30 -msgid "content types" -msgstr "tipos de contenido" +#: newforms/fields.py:101 newforms/fields.py:254 +#, python-format +msgid "Ensure this value has at most %d characters." +msgstr "Asegúrese de que este valor tenga como máximo %d caracteres." -#: contrib/auth/views.py:39 -msgid "Logged out" -msgstr "Sesión cerrada" +#: newforms/fields.py:103 newforms/fields.py:256 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "Asegúrese de que este valor tenga al menos %d caracteres." -#: contrib/auth/models.py:38 contrib/auth/models.py:57 -msgid "name" -msgstr "nombre" +#: newforms/fields.py:126 core/validators.py:120 +msgid "Enter a whole number." +msgstr "Introduzca un número entero." -#: contrib/auth/models.py:40 -msgid "codename" -msgstr "nombre en código" +#: newforms/fields.py:128 +#, 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." -#: contrib/auth/models.py:42 -msgid "permission" -msgstr "permiso" +#: newforms/fields.py:130 +#, 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." -#: contrib/auth/models.py:43 contrib/auth/models.py:58 -msgid "permissions" -msgstr "permisos" +#: newforms/fields.py:163 +msgid "Enter a valid date." +msgstr "Ingrese una fecha válida." -#: contrib/auth/models.py:60 -msgid "group" -msgstr "grupo" +#: newforms/fields.py:190 +msgid "Enter a valid time." +msgstr "Introduzca una hora válida." -#: contrib/auth/models.py:61 contrib/auth/models.py:100 -msgid "groups" -msgstr "grupos" +#: newforms/fields.py:226 +msgid "Enter a valid date/time." +msgstr "Introduzca una fecha/hora válida." -#: contrib/auth/models.py:90 -msgid "username" -msgstr "nombre de usuario" +#: newforms/fields.py:240 +msgid "Enter a valid value." +msgstr "Introduzca un valor válido." -#: contrib/auth/models.py:90 -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)." +#: newforms/fields.py:269 core/validators.py:162 +msgid "Enter a valid e-mail address." +msgstr "Introduzca una dirección de correo electrónico válida" -#: contrib/auth/models.py:91 -msgid "first name" -msgstr "nombre" +#: newforms/fields.py:287 newforms/fields.py:309 +msgid "Enter a valid URL." +msgstr "Introduzca una URL válida." -#: contrib/auth/models.py:92 -msgid "last name" -msgstr "apellido" +#: newforms/fields.py:311 +msgid "This URL appears to be a broken link." +msgstr "La URL parece ser un enlace roto." -#: contrib/auth/models.py:93 -msgid "e-mail address" -msgstr "dirección de correo" +#: newforms/fields.py:360 newforms/models.py:164 +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." -#: contrib/auth/models.py:94 -msgid "password" -msgstr "contraseña" +#: newforms/fields.py:378 newforms/fields.py:454 newforms/models.py:181 +msgid "Enter a list of values." +msgstr "Introduzca una lista de valores." -#: contrib/auth/models.py:94 -msgid "" -"Use '[algo]$[salt]$[hexdigest]' or use the change " -"password form." +#: newforms/fields.py:387 newforms/models.py:187 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." msgstr "" -"Use '[algo]$[salt]$[hexdigest]' o use el formulario de " -"cambio de contraseña." +"Seleccione una opción válida. %s no es una de las opciones disponibles." -#: contrib/auth/models.py:95 -msgid "staff status" -msgstr "es staff" +#: newforms/widgets.py:170 contrib/admin/filterspecs.py:150 +#: oldforms/__init__.py:577 +msgid "Unknown" +msgstr "Desconocido" -#: contrib/auth/models.py:95 -msgid "Designates whether the user can log into this admin site." -msgstr "Indica si el usuario puede ingresar a este sitio de administración." +#: newforms/widgets.py:170 contrib/admin/filterspecs.py:143 +#: oldforms/__init__.py:577 +msgid "Yes" +msgstr "Sí" -#: contrib/auth/models.py:96 -msgid "active" -msgstr "activo" +#: newforms/widgets.py:170 contrib/admin/filterspecs.py:143 +#: oldforms/__init__.py:577 +msgid "No" +msgstr "No" -#: contrib/auth/models.py:96 -msgid "" -"Designates whether this user can log into the Django admin. Unselect this " -"instead of deleting accounts." +#: utils/dateformat.py:40 +msgid "p.m." 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:97 -msgid "superuser status" -msgstr "es superusuario" -#: contrib/auth/models.py:97 -msgid "" -"Designates that this user has all permissions without explicitly assigning " -"them." +#: utils/dateformat.py:41 +msgid "a.m." msgstr "" -"Indica que este usuario posee todos los permisos, sin asignarle los mismos " -"explícitamente." - -#: contrib/auth/models.py:98 -msgid "last login" -msgstr "último registro" -#: contrib/auth/models.py:99 -msgid "date joined" -msgstr "fecha de creación" +#: utils/dateformat.py:46 +msgid "PM" +msgstr "" -#: contrib/auth/models.py:101 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." +#: utils/dateformat.py:47 +msgid "AM" 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:102 -msgid "user permissions" -msgstr "permisos de usuario" +#: utils/dateformat.py:95 +msgid "midnight" +msgstr "medianoche" -#: contrib/auth/models.py:105 -msgid "user" -msgstr "usuario" +#: utils/dateformat.py:97 +msgid "noon" +msgstr "mediodía" -#: contrib/auth/models.py:106 -msgid "users" -msgstr "usuarios" +#: utils/timesince.py:12 +msgid "year" +msgid_plural "years" +msgstr[0] "año" +msgstr[1] "años" -#: contrib/auth/models.py:111 -msgid "Personal info" -msgstr "Información personal" +#: utils/timesince.py:13 +msgid "month" +msgid_plural "months" +msgstr[0] "mes" +msgstr[1] "meses" -#: contrib/auth/models.py:112 -msgid "Permissions" -msgstr "Permisos" +#: utils/timesince.py:14 +msgid "week" +msgid_plural "weeks" +msgstr[0] "semana" +msgstr[1] "semanas" -#: contrib/auth/models.py:113 -msgid "Important dates" -msgstr "Fechas importantes" +#: utils/timesince.py:15 +msgid "day" +msgid_plural "days" +msgstr[0] "día" +msgstr[1] "días" -#: contrib/auth/models.py:114 -msgid "Groups" -msgstr "Grupos" +#: utils/timesince.py:16 +msgid "hour" +msgid_plural "hours" +msgstr[0] "hora" +msgstr[1] "horas" -#: contrib/auth/models.py:258 -msgid "message" -msgstr "mensaje" +#: utils/timesince.py:17 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minuto" +msgstr[1] "minutos" -#: 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." +#: utils/dates.py:6 +msgid "Monday" +msgstr "Lunes" -#: contrib/auth/forms.py:25 -msgid "A user with that username already exists." -msgstr "Ya existe un usuario con ese nombre." +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "Martes" -#: 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." +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "Miércoles" -#: 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." +#: utils/dates.py:6 +msgid "Thursday" +msgstr "Jueves" -#: contrib/auth/forms.py:62 -msgid "This account is inactive." -msgstr "Esta cuenta está inactiva" +#: utils/dates.py:6 +msgid "Friday" +msgstr "Viernes" -#: contrib/auth/forms.py:85 -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?" +#: utils/dates.py:7 +msgid "Saturday" +msgstr "Sábado" -#: 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." +#: utils/dates.py:7 +msgid "Sunday" +msgstr "Domingo" -#: 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." +#: utils/dates.py:14 +msgid "January" +msgstr "Enero" + +#: utils/dates.py:14 +msgid "February" +msgstr "Febrero" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "March" +msgstr "Marzo" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "April" +msgstr "Abril" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "May" +msgstr "Mayo" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "June" +msgstr "Junio" + +#: utils/dates.py:15 utils/dates.py:27 +msgid "July" +msgstr "Julio" + +#: utils/dates.py:15 +msgid "August" +msgstr "Agosto" + +#: utils/dates.py:15 +msgid "September" +msgstr "Setiembre" + +#: utils/dates.py:15 +msgid "October" +msgstr "Octubre" + +#: utils/dates.py:15 +msgid "November" +msgstr "Noviembre" + +#: utils/dates.py:16 +msgid "December" +msgstr "Diciembre" + +#: utils/dates.py:19 +msgid "jan" +msgstr "ene" + +#: utils/dates.py:19 +msgid "feb" +msgstr "feb" + +#: utils/dates.py:19 +msgid "mar" +msgstr "mar" + +#: utils/dates.py:19 +msgid "apr" +msgstr "abr" + +#: utils/dates.py:19 +msgid "may" +msgstr "may" + +#: utils/dates.py:19 +msgid "jun" +msgstr "jun" + +#: utils/dates.py:20 +msgid "jul" +msgstr "jul" + +#: utils/dates.py:20 +msgid "aug" +msgstr "ago" + +#: utils/dates.py:20 +msgid "sep" +msgstr "set" + +#: utils/dates.py:20 +msgid "oct" +msgstr "oct" + +#: utils/dates.py:20 +msgid "nov" +msgstr "nov" + +#: utils/dates.py:20 +msgid "dec" +msgstr "dic" + +#: utils/dates.py:27 +msgid "Jan." +msgstr "Enero" + +#: utils/dates.py:27 +msgid "Feb." +msgstr "Feb." + +#: utils/dates.py:28 +msgid "Aug." +msgstr "Ago." + +#: utils/dates.py:28 +msgid "Sept." +msgstr "Set." + +#: utils/dates.py:28 +msgid "Oct." +msgstr "Oct." + +#: utils/dates.py:28 +msgid "Nov." +msgstr "Nov." + +#: utils/dates.py:28 +msgid "Dec." +msgstr "Dic." + +#: utils/translation/trans_real.py:362 +msgid "DATE_FORMAT" +msgstr "j N Y" + +#: utils/translation/trans_real.py:363 +msgid "DATETIME_FORMAT" +msgstr "j N Y P" + +#: utils/translation/trans_real.py:364 +msgid "TIME_FORMAT" +msgstr "P" + +#: utils/translation/trans_real.py:380 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y" + +#: utils/translation/trans_real.py:381 +msgid "MONTH_DAY_FORMAT" +msgstr "j \\de F" #: contrib/redirects/models.py:7 msgid "redirect from" @@ -250,425 +371,195 @@ msgstr "redirecci msgid "redirects" msgstr "redirecciones" -#: contrib/comments/models.py:67 contrib/comments/models.py:166 -msgid "object ID" -msgstr "ID de objeto" +#: contrib/auth/models.py:38 contrib/auth/models.py:57 +msgid "name" +msgstr "nombre" -#: contrib/comments/models.py:68 -msgid "headline" -msgstr "encabezado" +#: contrib/auth/models.py:40 +msgid "codename" +msgstr "nombre en código" -#: contrib/comments/models.py:69 contrib/comments/models.py:90 -#: contrib/comments/models.py:167 -msgid "comment" -msgstr "comentario" +#: contrib/auth/models.py:42 +msgid "permission" +msgstr "permiso" -#: contrib/comments/models.py:70 -msgid "rating #1" -msgstr "calificación 1" +#: contrib/auth/models.py:43 contrib/auth/models.py:58 +msgid "permissions" +msgstr "permisos" -#: contrib/comments/models.py:71 -msgid "rating #2" -msgstr "calificación 2" +#: contrib/auth/models.py:60 +msgid "group" +msgstr "grupo" -#: contrib/comments/models.py:72 -msgid "rating #3" -msgstr "calificación 3" +#: contrib/auth/models.py:61 contrib/auth/models.py:100 +msgid "groups" +msgstr "grupos" -#: contrib/comments/models.py:73 -msgid "rating #4" -msgstr "calificación 4" +#: contrib/auth/models.py:90 +msgid "username" +msgstr "nombre de usuario" -#: contrib/comments/models.py:74 -msgid "rating #5" -msgstr "calificación 5" +#: contrib/auth/models.py:90 +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/comments/models.py:75 -msgid "rating #6" -msgstr "calificación 6" +#: contrib/auth/models.py:91 +msgid "first name" +msgstr "nombre" -#: contrib/comments/models.py:76 -msgid "rating #7" -msgstr "calificación 7" +#: contrib/auth/models.py:92 +msgid "last name" +msgstr "apellido" -#: contrib/comments/models.py:77 -msgid "rating #8" -msgstr "calificación 8" +#: contrib/auth/models.py:93 +msgid "e-mail address" +msgstr "dirección de correo" -#: contrib/comments/models.py:82 -msgid "is valid rating" -msgstr "es calificación válida" +#: contrib/auth/models.py:94 +msgid "password" +msgstr "contraseña" -#: contrib/comments/models.py:83 contrib/comments/models.py:169 -msgid "date/time submitted" -msgstr "fecha/hora de envío" +#: contrib/auth/models.py:94 +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/comments/models.py:84 contrib/comments/models.py:170 -msgid "is public" -msgstr "es público" +#: contrib/auth/models.py:95 +msgid "staff status" +msgstr "es staff" -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 -msgid "IP address" -msgstr "Dirección IP" +#: contrib/auth/models.py:95 +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/comments/models.py:86 -msgid "is removed" -msgstr "está eliminado" +#: contrib/auth/models.py:96 +msgid "active" +msgstr "activo" -#: 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 "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:19 -msgid "Anonymous users cannot vote" -msgstr "Los usuarios anónimos no pueden votar" - -#: contrib/comments/views/karma.py:23 -msgid "Invalid comment ID" -msgstr "ID de comentario no válido" - -#: contrib/comments/views/karma.py:25 -msgid "No voting for yourself" -msgstr "No puedes votarte tú 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 puntuación porque ha introducido al menos otra más." - -#: 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 +#: contrib/auth/models.py:96 msgid "" -"This comment was posted by a sketchy user:\n" -"\n" -"%(text)s" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." msgstr "" -"Este comentario ha sido enviado por un usuario 'semi-anónimo':\n" -"\n" -"%(text)s" - -#: contrib/comments/views/comments.py:188 -#: contrib/comments/views/comments.py:280 -msgid "Only POSTs are allowed" -msgstr "Sólo 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 más de los siguientes campos requeridos" +"Indica si el usuario puede ingresar al sitio de administración Django." +"Desactive este campo en lugar de eliminar usuarios." -#: 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 (violación de " -"seguridad)" +#: contrib/auth/models.py:97 +msgid "superuser status" +msgstr "es superusuario" -#: contrib/comments/views/comments.py:206 -#: contrib/comments/views/comments.py:292 +#: contrib/auth/models.py:97 msgid "" -"The comment form had an invalid 'target' parameter -- the object ID was " -"invalid" +"Designates that this user has all permissions without explicitly assigning " +"them." 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: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/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/object_history.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/admin/base.html:25 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/auth/user/change_password.html:9 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/model_index.html:5 -msgid "Log out" -msgstr "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" +"Indica que este usuario posee todos los permisos, sin asignarle los mismos " +"explícitamente." -#: contrib/comments/templates/comments/form.html:23 -msgid "Post a photo" -msgstr "Enviar una foto" +#: contrib/auth/models.py:98 +msgid "last login" +msgstr "último ingreso" -#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315 -msgid "URL" -msgstr "URL" +#: contrib/auth/models.py:99 +msgid "date joined" +msgstr "fecha de creación" -#: contrib/flatpages/models.py:8 +#: contrib/auth/models.py:101 msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." 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" +"Además de los permisos asignados manualmente, este usuario también poseerá " +"todos los permisos de los grupos a los que pertenezca." -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "contenido" +#: contrib/auth/models.py:102 +msgid "user permissions" +msgstr "permisos de usuario" -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "activar comentarios" +#: contrib/auth/models.py:105 +msgid "user" +msgstr "usuario" -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "nombre de plantilla" +#: contrib/auth/models.py:106 +msgid "users" +msgstr "usuarios" -#: 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/auth/models.py:111 +msgid "Personal info" +msgstr "Información personal" -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "debe estar registrado" +#: contrib/auth/models.py:112 +msgid "Permissions" +msgstr "Permisos" -#: 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/auth/models.py:113 +msgid "Important dates" +msgstr "Fechas importantes" -#: contrib/flatpages/models.py:18 -msgid "flat page" -msgstr "página estática" +#: contrib/auth/models.py:114 +msgid "Groups" +msgstr "Grupos" -#: contrib/flatpages/models.py:19 -msgid "flat pages" -msgstr "páginas estáticas" +#: contrib/auth/models.py:258 +msgid "message" +msgstr "mensaje" -#: contrib/sessions/models.py:51 -msgid "session key" -msgstr "clave de sesión" +#: 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/sessions/models.py:52 -msgid "session data" -msgstr "datos de sesión" +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Ya existe un usuario con ese nombre." -#: contrib/sessions/models.py:53 -msgid "expire date" -msgstr "fecha de caducidad" +#: 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/sessions/models.py:57 -msgid "session" -msgstr "sesión" +#: 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/sessions/models.py:58 -msgid "sessions" -msgstr "sesiones" +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "Esta cuenta está inactiva" -#: contrib/sites/models.py:10 -msgid "domain name" -msgstr "nombre de dominio" +#: contrib/auth/forms.py:85 +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/sites/models.py:11 -msgid "display name" -msgstr "nombre para visualizar" +#: 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/sites/models.py:15 -msgid "site" -msgstr "sitio" +#: 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/sites/models.py:16 -msgid "sites" -msgstr "sitios" +#: contrib/auth/views.py:39 +msgid "Logged out" +msgstr "Sesión cerrada" #: contrib/admin/filterspecs.py:40 #, python-format @@ -704,21 +595,6 @@ msgstr "Este mes" msgid "This year" msgstr "Este año" -#: contrib/admin/filterspecs.py:143 newforms/widgets.py:170 -#: oldforms/__init__.py:572 -msgid "Yes" -msgstr "Sí" - -#: contrib/admin/filterspecs.py:143 newforms/widgets.py:170 -#: oldforms/__init__.py:572 -msgid "No" -msgstr "No" - -#: contrib/admin/filterspecs.py:150 newforms/widgets.py:170 -#: oldforms/__init__.py:572 -msgid "Unknown" -msgstr "Desconocido" - #: contrib/admin/models.py:16 msgid "action time" msgstr "hora de acción" @@ -747,10 +623,6 @@ msgstr "entrada de registro" msgid "log entries" msgstr "entradas de registro" -#: contrib/admin/templatetags/admin_list.py:238 -msgid "All dates" -msgstr "Todas las fechas" - #: contrib/admin/views/decorators.py:24 #: contrib/admin/templates/admin/login.html:25 msgid "Log in" @@ -780,111 +652,31 @@ msgstr "Los nombres de usuario no pueden contener el car #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "" -"Su dirección de correo no es su nombre de usuario. Pruebe con '%s' en su " -"lugar." - -#: contrib/admin/views/main.py:223 -msgid "Site administration" -msgstr "Sitio administrativo" +"Su dirección de correo no es su nombre de usuario. Intente nuevamente " +"usando '%s'." -#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:19 +#: 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/main.py:261 contrib/admin/views/main.py:347 -#: contrib/admin/views/auth.py:24 +#: 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/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:306 -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 ningún 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:473 -#, 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:478 -#, 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:511 -#, 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:514 -msgid "Are you sure?" -msgstr "¿Está seguro?" - -#: contrib/admin/views/main.py:536 -#, python-format -msgid "Change history: %s" -msgstr "Historia de modificaciones: %s" +#: contrib/admin/views/auth.py:30 +msgid "Add user" +msgstr "Agregar usuario" -#: contrib/admin/views/main.py:570 -#, python-format -msgid "Select %s" -msgstr "Seleccione %s" +#: contrib/admin/views/auth.py:57 +msgid "Password changed successfully." +msgstr "Cambio de contraseña exitoso" -#: contrib/admin/views/main.py:570 +#: contrib/admin/views/auth.py:64 #, python-format -msgid "Select %s to change" -msgstr "Seleccione %s a modificar" - -#: contrib/admin/views/main.py:758 -msgid "Database error" -msgstr "Error de base de datos" +msgid "Change password: %s" +msgstr "Cambiar contraseña: %S" #: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 #: contrib/admin/views/doc.py:50 @@ -894,7 +686,7 @@ msgstr "etiqueta:" #: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 #: contrib/admin/views/doc.py:81 msgid "filter:" -msgstr "Filtrar:" +msgstr "filtrar:" #: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 #: contrib/admin/views/doc.py:139 @@ -904,17 +696,17 @@ msgstr "ver:" #: contrib/admin/views/doc.py:164 #, python-format msgid "App %r not found" -msgstr "App %r no encontrada" +msgstr "Aplicación %r no encontrada" #: contrib/admin/views/doc.py:171 #, python-format -msgid "Model %r not found in app %r" -msgstr "Modelo %r no encontrado en app %r" +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:183 #, python-format -msgid "the related `%s.%s` object" -msgstr "El objeto relacionado `%s.%s`" +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 @@ -923,8 +715,8 @@ msgstr "modelo:" #: contrib/admin/views/doc.py:214 #, python-format -msgid "related `%s.%s` objects" -msgstr "objetos relacionados `%s.%s`" +msgid "related `%(label)s.%(name)s` objects" +msgstr "objetos relacionados `%(label)s.%(name)s`" #: contrib/admin/views/doc.py:219 #, python-format @@ -981,6 +773,10 @@ msgstr "Ruta de archivo" msgid "Decimal number" msgstr "Número decimal" +#: contrib/admin/views/doc.py:304 contrib/comments/models.py:85 +msgid "IP address" +msgstr "Dirección IP" + #: contrib/admin/views/doc.py:306 msgid "Boolean (Either True, False or None)" msgstr "Booleano (Verdadero, Falso o Nulo)" @@ -989,43 +785,139 @@ msgstr "Booleano (Verdadero, Falso o Nulo)" msgid "Relation to parent model" msgstr "Relación con el modelo padre" -#: contrib/admin/views/doc.py:308 -msgid "Phone number" -msgstr "Número de teléfono" +#: contrib/admin/views/doc.py:308 +msgid "Phone number" +msgstr "Número de teléfono" + +#: 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 mayúsculas)" + +#: 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 ningún 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 más %(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 más %(fieldname)s en %(name)s:" -#: contrib/admin/views/doc.py:313 -msgid "Text" -msgstr "Texto" +#: 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/doc.py:314 -msgid "Time" -msgstr "Hora" +#: contrib/admin/views/main.py:517 +msgid "Are you sure?" +msgstr "¿Está seguro?" -#: contrib/admin/views/doc.py:316 -msgid "U.S. state (two uppercase letters)" -msgstr "Estado de los EEUU (dos letras mayúsculas)" +#: contrib/admin/views/main.py:539 +#, python-format +msgid "Change history: %s" +msgstr "Historia de modificaciones: %s" -#: contrib/admin/views/doc.py:317 -msgid "XML text" -msgstr "Texto XML" +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s" +msgstr "Seleccione %s" -#: contrib/admin/views/doc.py:343 +#: contrib/admin/views/main.py:573 #, python-format -msgid "%s does not appear to be a urlpattern object" -msgstr "%s no parece ser un objeto urlpattern" +msgid "Select %s to change" +msgstr "Seleccione %s a modificar" -#: contrib/admin/views/auth.py:30 -msgid "Add user" -msgstr "Agregar usuario" +#: contrib/admin/views/main.py:768 +msgid "Database error" +msgstr "Error de base de datos" -#: contrib/admin/views/auth.py:57 -msgid "Password changed successfully." -msgstr "Cambio de contraseña exitoso" +#: contrib/admin/templatetags/admin_list.py:247 +msgid "All dates" +msgstr "Todas las fechas" -#: contrib/admin/views/auth.py:64 -#, python-format -msgid "Change password: %s" -msgstr "Cambiar contraseña: %S" +#: 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:" @@ -1035,18 +927,74 @@ msgstr "Actualmente" msgid "Change:" msgstr "Modificar:" -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -msgstr "Fecha:" +#: 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/widget/date_time.html:4 -msgid "Time:" -msgstr "Hora:" +#: 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/object_history.html:3 -#: contrib/admin/templates/admin/change_list.html:5 #: 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 @@ -1055,50 +1003,149 @@ msgstr "Hora:" msgid "Documentation" msgstr "Documentación" -#: 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/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/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/index.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/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 contraseña" -#: 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/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 sesión" + #: 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/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/logged_out.html:4 #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Home" msgstr "Inicio" -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_form.html:21 -msgid "History" -msgstr "Historia" +#: 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 "Ordenación" + +#: 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 "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/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/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 "Contraseña:" + +#: 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/object_history.html:18 msgid "Date/time" @@ -1121,19 +1168,9 @@ 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 fue " +"Este objeto no tiene historia de modificaciones. Probablemente no fué " "añadido usando este sitio de administración." -#: contrib/admin/templates/admin/change_list.html:12 -#, python-format -msgid "Add %(name)s" -msgstr "Agregar %(name)s" - -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(filter_title)s " -msgstr " Por %(filter_title)s " - #: contrib/admin/templates/admin/500.html:4 msgid "Server error" msgstr "Error del servidor" @@ -1152,601 +1189,855 @@ msgid "" "mail and should be fixed shortly. Thanks for your patience." msgstr "" "Ha ocurrido un error. Se ha informado a los administradores del sitio " -"mediante correo electrónico y debería arreglarse en breve. Gracias por su " -"paciencia" +"mediante correo electrónico y debería ser solucionado en breve. Gracias " +"por su paciencia." -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "Buscar" +#: 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/search_form.html:10 +#: contrib/admin/templates/admin/delete_confirmation.html:21 #, python-format -msgid "1 result" -msgid_plural "%(counter)s results" -msgstr[0] "un resultado" -msgstr[1] "%(counter)s resultados" +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/search_form.html:10 +#: 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 "%(full_result_count)s total" -msgstr "total: %(full_result_count)s" +msgid "Enter a new password for the user %(username)s." +msgstr "" +"Introduzca una nueva contraseña para el usuario %(username)s" +"." -#: contrib/admin/templates/admin/pagination.html:10 -msgid "Show all" -msgstr "Mostrar todos/as" +#: 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/base_site.html:4 -msgid "Django site admin" -msgstr "Sitio de administración de Django" +#: 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/base_site.html:7 -msgid "Django administration" -msgstr "Administración de Django" +#: 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/index.html:17 +#: 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/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +msgid "Password change" +msgstr "Cambio de contraseña" + +#: contrib/admin/templates/registration/password_change_done.html: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: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 contraseña" + +#: 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/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_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_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 "Models available in the %(name)s application." -msgstr "Modelos disponibles en la aplicación %(name)s." +msgid "for your user account at %(site_name)s" +msgstr "de su cuenta de usuario en %(site_name)s." -#: contrib/admin/templates/admin/index.html:18 +#: contrib/admin/templates/registration/password_reset_email.html:5 #, python-format -msgid "%(name)s" -msgstr "%(name)s" +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/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 documentación" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:9 +msgid "" +"\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" +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 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).\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/index.html:28 -#: contrib/admin/templates/admin/change_form.html:15 -msgid "Add" -msgstr "Agregar" +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Edit this object (current window)" +msgstr "Editar este objeto (ventana actual)" -#: contrib/admin/templates/admin/index.html:34 -msgid "Change" -msgstr "Modificar" +#: 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/index.html:44 -msgid "You don't have permission to edit anything." -msgstr "No tiene permiso para editar nada." +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "Edit this object (new window)" +msgstr "Editar este objeto (nueva ventana)" -#: contrib/admin/templates/admin/index.html:52 -msgid "Recent Actions" -msgstr "Acciones recientes" +#: 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/admin/index.html:53 -msgid "My Actions" -msgstr "Mis acciones" +#: contrib/sites/models.py:10 +msgid "domain name" +msgstr "nombre de dominio" -#: contrib/admin/templates/admin/index.html:57 -msgid "None available" -msgstr "Ninguna disponible" +#: contrib/sites/models.py:11 +msgid "display name" +msgstr "nombre para visualizar" -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "Página no encontrada" +#: contrib/sites/models.py:15 +msgid "site" +msgstr "sitio" -#: 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/sites/models.py:16 +msgid "sites" +msgstr "sitios" -#: contrib/admin/templates/admin/filters.html:4 -msgid "Filter" -msgstr "Filtrar" +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "clave de sesión" -#: contrib/admin/templates/admin/change_form.html:22 -msgid "View on site" -msgstr "Ver en el sitio" +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "datos de sesión" -#: 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/sessions/models.py:70 +msgid "expire date" +msgstr "fecha de caducidad" -#: contrib/admin/templates/admin/change_form.html:50 -msgid "Ordering" -msgstr "Ordenación" +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "sesión" -#: contrib/admin/templates/admin/change_form.html:53 -msgid "Order:" -msgstr "Orden:" +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "sesiones" -#: contrib/admin/templates/admin/base.html:25 -msgid "Welcome," -msgstr "Bienvenido," +#: contrib/contenttypes/models.py:36 +msgid "python model class name" +msgstr "nombre de la clase python del modelo" -#: contrib/admin/templates/admin/delete_confirmation.html:9 -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Delete" -msgstr "Eliminar" +#: contrib/contenttypes/models.py:39 +msgid "content type" +msgstr "tipo de contenido" -#: 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/contenttypes/models.py:40 +msgid "content types" +msgstr "tipos de contenido" -#: contrib/admin/templates/admin/delete_confirmation.html:21 -#, python-format +#: contrib/flatpages/models.py:8 msgid "" -"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " -"All of the following related items will be deleted:" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." 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" +"Ejemplo: '/about/contact/'. Asegúrese de que pone barras al principio y al " +"final." -#: contrib/admin/templates/admin/submit_line.html:4 -msgid "Save as new" -msgstr "Grabar como nuevo" +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "título" -#: contrib/admin/templates/admin/submit_line.html:5 -msgid "Save and add another" -msgstr "Grabar y añadir otro" +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "contenido" -#: contrib/admin/templates/admin/submit_line.html:6 -msgid "Save and continue editing" -msgstr "Grabar y continuar editando" +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "activar comentarios" -#: contrib/admin/templates/admin/submit_line.html:7 -msgid "Save" -msgstr "Grabar" +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "nombre de plantilla" -#: contrib/admin/templates/admin/invalid_setup.html:8 +#: contrib/flatpages/models.py:13 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." +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." 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 escritura en la base de datos." +"Ejemplo: 'flatpages/contact_page.html'. Si no lo proporciona, el sistema " +"usará 'flatpages/default.html'." -#: 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ªna para el usuario %(username)s." +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "debe estar registrado" -#: 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/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/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/flatpages/models.py:18 +msgid "flat page" +msgstr "página estática" -#: 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/flatpages/models.py:19 +msgid "flat pages" +msgstr "páginas estáticas" -#: 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." +#: contrib/localflavor/usa/forms.py:17 +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/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." msgstr "" -"Primero, introduzca un nombre de usuario y una contraseña. Luego podrá " -"configurar opciones adicionales." +"Introduzca un postcode. Se requiere un espacio entre las dos secciones del " +"mismo." -#: contrib/admin/templates/admin/auth/user/add_form.html:12 -msgid "Username" -msgstr "Nombre de usuario:" +#: contrib/comments/models.py:67 contrib/comments/models.py:166 +msgid "object ID" +msgstr "ID de objeto" -#: contrib/admin/templates/registration/password_change_done.html:4 -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/registration/password_change_form.html:6 -#: contrib/admin/templates/registration/password_change_form.html:10 -msgid "Password change" -msgstr "Cambio de contraseña" +#: contrib/comments/models.py:68 +msgid "headline" +msgstr "encabezado" -#: 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/comments/models.py:69 contrib/comments/models.py:90 +#: contrib/comments/models.py:167 +msgid "comment" +msgstr "comentario" -#: contrib/admin/templates/registration/password_change_done.html:12 -msgid "Your password was changed." -msgstr "Su contraseña ha sido cambiada." +#: contrib/comments/models.py:70 +msgid "rating #1" +msgstr "calificación 1" -#: 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 contraseña" +#: contrib/comments/models.py:71 +msgid "rating #2" +msgstr "calificación 2" -#: 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/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/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "Dirección de correo electrónico:" +#: contrib/comments/models.py:77 +msgid "rating #8" +msgstr "calificación 8" -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "Recuperar mi cöntraseña" +#: contrib/comments/models.py:82 +msgid "is valid rating" +msgstr "es calificación válida" -#: 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/comments/models.py:83 contrib/comments/models.py:169 +msgid "date/time submitted" +msgstr "fecha/hora de envío" -#: contrib/admin/templates/registration/logged_out.html:10 -msgid "Log in again" -msgstr "Identificarse de nuevo" +#: contrib/comments/models.py:84 contrib/comments/models.py:170 +msgid "is public" +msgstr "es público" -#: 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/comments/models.py:86 +msgid "is removed" +msgstr "está eliminado" -#: contrib/admin/templates/registration/password_reset_done.html:12 +#: contrib/comments/models.py:86 msgid "" -"We've e-mailed a new password to the e-mail address you submitted. You " -"should be receiving it shortly." +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." msgstr "" -"Le hemos enviado una nueva contraseña a la dirección que ha suministrado. " -"Debería recibirla en breve." +"Marque esta caja si el comentario es inapropiado. En su lugar se mostrará " +"\"Este comentario ha sido eliminado\"." -#: contrib/admin/templates/registration/password_change_form.html:12 +#: 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 "" -"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." +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" msgstr "" -"Por favor, introduzca su contraseña antigua, por seguridad, y después " -"introduzca la nueva contraseña dos veces para verificar que la ha escrito " -"correctamente." +"Enviado por %(user)s el %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "Contraseña antigua:" +#: contrib/comments/models.py:168 +msgid "person's name" +msgstr "nombre de la persona" -#: contrib/admin/templates/registration/password_change_form.html:19 -msgid "New password:" -msgstr "Contraseña nueva:" +#: contrib/comments/models.py:171 +msgid "ip address" +msgstr "dirección ip" -#: contrib/admin/templates/registration/password_change_form.html:21 -msgid "Confirm password:" -msgstr "Confirme contraseña:" +#: contrib/comments/models.py:173 +msgid "approved by staff" +msgstr "aprobado por el staff" -#: contrib/admin/templates/registration/password_change_form.html:23 -msgid "Change my password" -msgstr "Cambiar mi contraseña" +#: contrib/comments/models.py:176 +msgid "free comment" +msgstr "comentario libre" -#: 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/comments/models.py:177 +msgid "free comments" +msgstr "comentarios libres" -#: contrib/admin/templates/registration/password_reset_email.html:3 +#: 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 "for your user account at %(site_name)s" -msgstr "de su cuenta de usuario en %(site_name)s." +msgid "%(score)d rating by %(user)s" +msgstr "puntuado %(score)d por %(user)s" -#: contrib/admin/templates/registration/password_reset_email.html:5 +#: contrib/comments/models.py:258 #, python-format -msgid "Your new password is: %(new_password)s" -msgstr "Su nueva contraseña es: %(new_password)s" +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/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/comments/models.py:265 +msgid "flag date" +msgstr "fecha de la marca" -#: 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/comments/models.py:268 +msgid "user flag" +msgstr "marca de usuario" -#: contrib/admin/templates/registration/password_reset_email.html:13 -msgid "Thanks for using our site!" -msgstr "¡Gracias por usar nuestro sitio!" +#: contrib/comments/models.py:269 +msgid "user flags" +msgstr "marcas de usuario" -#: contrib/admin/templates/registration/password_reset_email.html:15 +#: contrib/comments/models.py:273 #, python-format -msgid "The %(site_name)s team" -msgstr "El equipo de %(site_name)s" +msgid "Flag by %r" +msgstr "Marca de %r" -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Bookmarklets" -msgstr "Bookmarklets" +#: contrib/comments/models.py:278 +msgid "deletion date" +msgstr "fecha de eliminación" -#: contrib/admin/templates/admin_doc/bookmarklets.html:5 -msgid "Documentation bookmarklets" -msgstr "Bookmarklets de documentación" +#: contrib/comments/models.py:280 +msgid "moderator deletion" +msgstr "Eliminación por moderador" -#: contrib/admin/templates/admin_doc/bookmarklets.html:9 -msgid "" -"\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" -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 sleccionar 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 equipo señalado como \"interno\" (hable\n" -"con su administrador de sistemas si no está seguro de si el suyo lo es).\n" +#: contrib/comments/models.py:281 +msgid "moderator deletions" +msgstr "eliminaciones por moderador" -#: contrib/admin/templates/admin_doc/bookmarklets.html:19 -msgid "Documentation for this page" -msgstr "Documentación de esta página" +#: contrib/comments/models.py:285 +#, python-format +msgid "Moderator deletion by %r" +msgstr "Eliminación del moderador %r" -#: 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/comments/views/karma.py:19 +msgid "Anonymous users cannot vote" +msgstr "Los usuarios anónimos no pueden votar" -#: contrib/admin/templates/admin_doc/bookmarklets.html:22 -msgid "Show object ID" -msgstr "Mostrar ID de objeto" +#: contrib/comments/views/karma.py:23 +msgid "Invalid comment ID" +msgstr "ID de comentario no válido" -#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +#: 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 "" -"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." +"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/admin/templates/admin_doc/bookmarklets.html:25 -msgid "Edit this object (current window)" -msgstr "Editar este objeto (ventana actual)" +#: 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/admin/templates/admin_doc/bookmarklets.html:26 -msgid "Jumps to the admin page for pages that represent a single object." +#: contrib/comments/views/comments.py:116 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" msgstr "" -"Le lleva a la página de administración de páginas que representan un único " -"objeto." +"Este comentario ha sido enviado por un usuario 'semi-anónimo':\n" +"\n" +"%(text)s" -#: contrib/admin/templates/admin_doc/bookmarklets.html:28 -msgid "Edit this object (new window)" -msgstr "Editar este objeto (nueva ventana)" +#: contrib/comments/views/comments.py:188 +#: contrib/comments/views/comments.py:280 +msgid "Only POSTs are allowed" +msgstr "Sólo se admiten POSTs" -#: 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/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 más de los siguientes campos requeridos" -#: contrib/localflavor/uk/forms.py:18 -msgid "Enter a postcode. A space is required between the two postcode parts." +#: contrib/comments/views/comments.py:196 +#: contrib/comments/views/comments.py:286 +msgid "Somebody tampered with the comment form (security violation)" msgstr "" -"Introduzca un postcode. Se requiere un espacio entre ambas partes del " -"postcode." - -#: contrib/localflavor/usa/forms.py:17 -msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." -msgstr "Introduzca un zip code en el formato XXXXX o XXXXX-XXXX." +"Alguien está jugando con el formulario de comentarios (violación de " +"seguridad)" -#: utils/dates.py:6 -msgid "Monday" -msgstr "Lunes" +#: 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 parámetro 'target' no válido (el ID de " +"objeto era inválido)" -#: utils/dates.py:6 -msgid "Tuesday" -msgstr "Martes" +#: 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'" -#: utils/dates.py:6 -msgid "Wednesday" -msgstr "Miércoles" +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Olvidó su contraseña?" -#: utils/dates.py:6 -msgid "Thursday" -msgstr "Jueves" +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "Calificaciones" -#: utils/dates.py:6 -msgid "Friday" -msgstr "Viernes" +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "Requerido" -#: utils/dates.py:7 -msgid "Saturday" -msgstr "Sábado" +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "Opcional" -#: utils/dates.py:7 -msgid "Sunday" -msgstr "Domingo" +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "Enviar una foto" -#: utils/dates.py:14 -msgid "January" -msgstr "Enero" +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "Comentario:" -#: utils/dates.py:14 -msgid "February" -msgstr "Febrero" +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "Previsualizar comentario" -#: utils/dates.py:14 utils/dates.py:27 -msgid "March" -msgstr "Marzo" +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "Su nombre:" -#: utils/dates.py:14 utils/dates.py:27 -msgid "April" -msgstr "Abril" +#: contrib/humanize/templatetags/humanize.py:17 +msgid "th" +msgstr "" -#: utils/dates.py:14 utils/dates.py:27 -msgid "May" -msgstr "Mayo" +#: contrib/humanize/templatetags/humanize.py:17 +msgid "st" +msgstr "" -#: utils/dates.py:14 utils/dates.py:27 -msgid "June" -msgstr "Junio" +#: contrib/humanize/templatetags/humanize.py:17 +msgid "nd" +msgstr "" -#: utils/dates.py:15 utils/dates.py:27 -msgid "July" -msgstr "Julio" +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" +msgstr "" -#: utils/dates.py:15 -msgid "August" -msgstr "Agosto" +#: 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" -#: utils/dates.py:15 -msgid "September" -msgstr "Setiembre" +#: 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" -#: utils/dates.py:15 -msgid "October" -msgstr "Octubre" +#: 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" -#: utils/dates.py:15 -msgid "November" -msgstr "Noviembre" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "one" +msgstr "uno" -#: utils/dates.py:16 -msgid "December" -msgstr "Diciembre" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "dos" -#: utils/dates.py:19 -msgid "jan" -msgstr "ene" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "tres" -#: utils/dates.py:19 -msgid "feb" -msgstr "feb" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "four" +msgstr "cuatro" -#: utils/dates.py:19 -msgid "mar" -msgstr "mar" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "cinco" -#: utils/dates.py:19 -msgid "apr" -msgstr "abr" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "seis" -#: utils/dates.py:19 -msgid "may" -msgstr "may" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "siete" -#: utils/dates.py:19 -msgid "jun" -msgstr "jun" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "ocho" -#: utils/dates.py:20 -msgid "jul" -msgstr "jul" +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "nueve" -#: utils/dates.py:20 -msgid "aug" -msgstr "ago" +#: db/models/manipulators.py:307 +#, 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." -#: utils/dates.py:20 -msgid "sep" -msgstr "set" +#: db/models/fields/__init__.py:42 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "Ya existe %(optname)s con este %(fieldname)s." -#: utils/dates.py:20 -msgid "oct" -msgstr "oct" +#: db/models/fields/__init__.py:367 +msgid "This value must be an integer." +msgstr "Este valor debe ser un número entero." -#: utils/dates.py:20 -msgid "nov" -msgstr "nov" +#: db/models/fields/__init__.py:402 +msgid "This value must be either True or False." +msgstr "Este valor debe ser True o False." -#: utils/dates.py:20 -msgid "dec" -msgstr "dic" +#: db/models/fields/__init__.py:423 +msgid "This field cannot be null." +msgstr "Este campo no puede ser nulo." -#: utils/dates.py:27 -msgid "Jan." -msgstr "Enero" +#: db/models/fields/__init__.py:457 core/validators.py:148 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Introduzca una fecha válida en formato AAAA-MM-DD." -#: utils/dates.py:27 -msgid "Feb." -msgstr "Feb." +#: db/models/fields/__init__.py:526 core/validators.py:157 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Introduzca una fecha/hora válida en formato AAAA-MM-DD HH:MM." -#: utils/dates.py:28 -msgid "Aug." -msgstr "Ago." +#: db/models/fields/__init__.py:630 +msgid "Enter a valid filename." +msgstr "Introduzca un nombre de archivo válido." -#: utils/dates.py:28 -msgid "Sept." -msgstr "Set." +#: db/models/fields/__init__.py:751 +msgid "This value must be either None, True or False." +msgstr "Este valor debe ser None, True o False." -#: utils/dates.py:28 -msgid "Oct." -msgstr "Oct." +#: db/models/fields/related.py:53 +#, python-format +msgid "Please enter a valid %s." +msgstr "Por favor, introduzca un %s válido." -#: utils/dates.py:28 -msgid "Nov." -msgstr "Nov." +#: db/models/fields/related.py:642 +msgid "Separate multiple IDs with commas." +msgstr " Separe múltiples identificadores con comas." -#: utils/dates.py:28 -msgid "Dec." -msgstr "Dic." +#: db/models/fields/related.py:644 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Mantenga presionada \"Control\" (\"Command\" en una Mac) para seleccionar " +"más de uno." -#: utils/timesince.py:12 -msgid "year" -msgid_plural "years" -msgstr[0] "año" -msgstr[1] "años" +#: db/models/fields/related.py:691 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "" +"Por favor, introduzca IDs de %(self)s válidos. El valor %(value)r no es " +"válido." +msgstr[1] "" +"Por favor, introduzca IDs de %(self)s válidos. Los valores %(value)r no son " +"válidos." -#: utils/timesince.py:13 -msgid "month" -msgid_plural "months" -msgstr[0] "mes" -msgstr[1] "meses" +#: oldforms/__init__.py:392 +#, 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 caracter." +msgstr[1] "Asegúrese de que su texto tiene menos de %s caracteres." -#: utils/timesince.py:14 -msgid "week" -msgid_plural "weeks" -msgstr[0] "semana" -msgstr[1] "semanas" +#: oldforms/__init__.py:397 +msgid "Line breaks are not allowed here." +msgstr "No se permiten saltos de línea." -#: utils/timesince.py:15 -msgid "day" -msgid_plural "days" -msgstr[0] "día" -msgstr[1] "días" +#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "Seleccione una opción válida; '%(data)s' no está en %(choices)s." -#: utils/timesince.py:16 -msgid "hour" -msgid_plural "hours" -msgstr[0] "hora" -msgstr[1] "horas" +#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" +"No se envió un archivo. Verifique el tipo de codificación en el formulario." -#: utils/timesince.py:17 -msgid "minute" -msgid_plural "minutes" -msgstr[0] "minuto" -msgstr[1] "minutos" +#: oldforms/__init__.py:674 +msgid "The submitted file is empty." +msgstr "El archivo enviado está vacío." -#: utils/translation/trans_real.py:362 -msgid "DATE_FORMAT" -msgstr "j N Y" +#: oldforms/__init__.py:730 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Introduzca un número entero entre -32.768 y 32.767." -#: utils/translation/trans_real.py:363 -msgid "DATETIME_FORMAT" -msgstr "j N Y P" +#: oldforms/__init__.py:740 +msgid "Enter a positive number." +msgstr "Introduzca un número positivo." -#: utils/translation/trans_real.py:364 -msgid "TIME_FORMAT" -msgstr "P" +#: oldforms/__init__.py:750 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Introduzca un número entero entre 0 y 32.767." -#: utils/translation/trans_real.py:380 -msgid "YEAR_MONTH_FORMAT" -msgstr "F Y" +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "Se creó con éxito %(verbose_name)." -#: utils/translation/trans_real.py:381 -msgid "MONTH_DAY_FORMAT" -msgstr "j \\de F" +#: 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:39 msgid "Arabic" @@ -1825,141 +2116,88 @@ msgid "Japanese" msgstr "Japonés" #: conf/global_settings.py:58 -msgid "Latvian" -msgstr "Latvio" +msgid "Kannada" +msgstr "Canarés" #: conf/global_settings.py:59 +msgid "Latvian" +msgstr "Letón" + +#: conf/global_settings.py:60 msgid "Macedonian" msgstr "Macedonio" -#: conf/global_settings.py:60 +#: conf/global_settings.py:61 msgid "Dutch" msgstr "Holandés" -#: conf/global_settings.py:61 +#: conf/global_settings.py:62 msgid "Norwegian" msgstr "Noruego" -#: conf/global_settings.py:62 +#: conf/global_settings.py:63 msgid "Polish" msgstr "Polaco" -#: conf/global_settings.py:63 +#: conf/global_settings.py:64 +msgid "Portugese" +msgstr "Portugués" + +#: conf/global_settings.py:65 msgid "Brazilian" msgstr "Brasileño" -#: conf/global_settings.py:64 +#: conf/global_settings.py:66 msgid "Romanian" msgstr "Rumano" -#: conf/global_settings.py:65 +#: conf/global_settings.py:67 msgid "Russian" msgstr "Ruso" -#: conf/global_settings.py:66 +#: conf/global_settings.py:68 msgid "Slovak" msgstr "Eslovaco" -#: conf/global_settings.py:67 +#: conf/global_settings.py:69 msgid "Slovenian" msgstr "Esloveno" -#: conf/global_settings.py:68 +#: conf/global_settings.py:70 msgid "Serbian" msgstr "Serbio" -#: conf/global_settings.py:69 +#: conf/global_settings.py:71 msgid "Swedish" msgstr "Sueco" -#: conf/global_settings.py:70 +#: conf/global_settings.py:72 msgid "Tamil" msgstr "Tamil" -#: conf/global_settings.py:71 +#: conf/global_settings.py:73 +msgid "Telugu" +msgstr "Telugu" + +#: conf/global_settings.py:74 msgid "Turkish" msgstr "Turco" -#: conf/global_settings.py:72 +#: conf/global_settings.py:75 msgid "Ukrainian" msgstr "Ucraniano" -#: conf/global_settings.py:73 +#: conf/global_settings.py:76 msgid "Simplified Chinese" msgstr "Chino simplificado" -#: conf/global_settings.py:74 +#: conf/global_settings.py:77 msgid "Traditional Chinese" msgstr "Chino tradicional" -#: db/models/manipulators.py:305 -#, 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 -#, 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:116 db/models/fields/__init__.py:273 -#: db/models/fields/__init__.py:605 db/models/fields/__init__.py:616 -#: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450 -#: newforms/fields.py:461 newforms/models.py:177 oldforms/__init__.py:352 -msgid "This field is required." -msgstr "Este campo es obligatorio." - -#: db/models/fields/__init__.py:366 -msgid "This value must be an integer." -msgstr "Este valor debe ser un número entero." - -#: db/models/fields/__init__.py:401 -msgid "This value must be either True or False." -msgstr "Este valor debe ser True o False." - -#: db/models/fields/__init__.py:422 -msgid "This field cannot be null." -msgstr "Este campo no puede ser nulo." - -#: db/models/fields/__init__.py:454 core/validators.py:147 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Introduzca una fecha válida en formato AAAA-MM-DD." - -#: db/models/fields/__init__.py:521 core/validators.py:156 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Introduzca una fecha/hora válida en formato YYYY-MM-DD HH:MM." - -#: db/models/fields/__init__.py:625 -msgid "Enter a valid filename." -msgstr "Introduzca un nombre de achivo válido." - -#: db/models/fields/related.py:53 -#, python-format -msgid "Please enter a valid %s." -msgstr "Por favor, introduzca un %s válido." - -#: db/models/fields/related.py:642 -msgid "Separate multiple IDs with commas." -msgstr " Separe múltiples IDs con comas." - -#: db/models/fields/related.py:644 -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" -"Mantenga presionada \"Control\" (\"Command\" en un Mac) para seleccionar más " -"de uno." - -#: db/models/fields/related.py:691 -#, python-format -msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "" -"Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "" -"Por favor, introduzca IDs de %(self)s válidos. El valor %(value)r no es " -"válido." -msgstr[1] "" -"Por favor, introduzca IDs de %(self)s válidos. Los valores %(value)r no son " -"válidos." +#: template/defaultfilters.py:491 +msgid "yes,no,maybe" +msgstr "si,no,talvez" #: core/validators.py:64 msgid "This value must contain only letters, numbers and underscores." @@ -2010,10 +2248,6 @@ msgstr "No se admiten caracteres no num msgid "This value can't be comprised solely of digits." msgstr "Este valor no puede estar formado sólo por dígitos." -#: core/validators.py:120 newforms/fields.py:126 -msgid "Enter a whole number." -msgstr "Introduzca un número entero." - #: core/validators.py:124 msgid "Only alphabetical characters are allowed here." msgstr "Sólo se admiten caracteres alfabéticos." @@ -2024,23 +2258,14 @@ msgstr "El a #: core/validators.py:143 #, python-format -msgid "Invalid date: %s." -msgstr "Fecha no válida: %s." +msgid "Invalid date: %s" +msgstr "Fecha no válida: %s" -#: core/validators.py:152 +#: core/validators.py:153 msgid "Enter a valid time in HH:MM format." msgstr "Introduzca una hora válida en formato HH:MM." -#: core/validators.py:161 newforms/fields.py:269 -msgid "Enter a valid e-mail address." -msgstr "Introduzca una dirección de correo electrónico válida" - -#: core/validators.py:173 core/validators.py:444 oldforms/__init__.py:667 -msgid "No file was submitted. Check the encoding type on the form." -msgstr "" -"No se envió un archivo. Verifique el tipo de codificación en el formulario." - -#: core/validators.py:177 +#: core/validators.py:178 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -2048,28 +2273,28 @@ msgstr "" "Envíe una imagen válida. El archivo que ha enviado no era una imagen o se " "trataba de una imagen corrupta." -#: core/validators.py:184 +#: core/validators.py:185 #, python-format msgid "The URL %s does not point to a valid image." msgstr "La URL %s no apunta a una imagen válida." -#: core/validators.py:188 +#: core/validators.py:189 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "" -"Los números telefónicos deben respetar el formato XXX-XXX-XXXX. \"%s\" no es " -"válido." +"Los números telefónicos deben respetar el formato XXX-XXX-XXXX. \"%s\" " +"no es válido." -#: core/validators.py:196 +#: core/validators.py:197 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "La URL %s no apunta a un vídeo QuickTime válido." -#: core/validators.py:200 +#: core/validators.py:201 msgid "A valid URL is required." msgstr "Se precisa una URL válida." -#: core/validators.py:214 +#: core/validators.py:215 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" @@ -2078,96 +2303,96 @@ msgstr "" "Se precisa HTML válido. Los errores específicos son:\n" "%s" -#: core/validators.py:221 +#: core/validators.py:222 #, python-format msgid "Badly formed XML: %s" msgstr "XML mal formado: %s" -#: core/validators.py:238 +#: core/validators.py:239 #, python-format msgid "Invalid URL: %s" msgstr "URL no válida: %s" -#: core/validators.py:243 core/validators.py:245 +#: core/validators.py:244 core/validators.py:246 #, python-format msgid "The URL %s is a broken link." msgstr "La URL %s es un enlace roto." -#: core/validators.py:251 +#: core/validators.py:252 msgid "Enter a valid U.S. state abbreviation." -msgstr "Introduzca una abreviatura válida de estado de los EEUU." +msgstr "Introduzca una abreviatura válida de estado de los EE.UU." -#: core/validators.py:265 +#: core/validators.py:266 #, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." msgstr[0] "¡Vigila tu boca! Aquí no admitimos la palabra %s." msgstr[1] "¡Vigila tu boca! Aquí no admitimos las palabras %s." -#: core/validators.py:272 +#: core/validators.py:273 #, python-format msgid "This field must match the '%s' field." msgstr "Este campo debe concordar con el campo '%s'." -#: core/validators.py:291 +#: core/validators.py:292 msgid "Please enter something for at least one field." msgstr "Por favor, introduzca algo en al menos un campo." -#: core/validators.py:300 core/validators.py:311 +#: core/validators.py:301 core/validators.py:312 msgid "Please enter both fields or leave them both empty." msgstr "Por favor, rellene ambos campos o deje ambos vacíos." -#: core/validators.py:319 +#: core/validators.py:320 #, 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:332 +#: core/validators.py:333 #, 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:351 +#: core/validators.py:352 msgid "Duplicate values are not allowed." msgstr "No se admiten valores duplicados." -#: core/validators.py:366 +#: core/validators.py:367 #, python-format -msgid "This value must be between %s and %s." -msgstr "Este valor debe ser estar entre %s y %s." +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:368 +#: core/validators.py:369 #, python-format msgid "This value must be at least %s." msgstr "Este valor debe ser al menos %s." -#: core/validators.py:370 +#: core/validators.py:371 #, python-format msgid "This value must be no more than %s." msgstr "Este valor debe ser no mayor que %s." -#: core/validators.py:406 +#: core/validators.py:407 #, python-format msgid "This value must be a power of %s." msgstr "Este valor debe ser una potencia de %s." -#: core/validators.py:417 +#: core/validators.py:418 msgid "Please enter a valid decimal number." msgstr "Por favor, introduzca un número decimal válido." -#: core/validators.py:421 +#: core/validators.py:422 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" "Please enter a valid decimal number with at most %s total digits." msgstr[0] "" -"Por favor, introduzca un número decimal válido con con un máximo de un " +"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 número decimal válido con un maximo de %s dígitos " "en total." -#: core/validators.py:424 +#: core/validators.py:425 #, python-format msgid "" "Please enter a valid decimal number with a whole part of at most %s digit." @@ -2180,7 +2405,7 @@ msgstr[1] "" "Por favor, introduzca un número decimal válido con un máximo de %s dígitos " "enteros." -#: core/validators.py:427 +#: core/validators.py:428 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" @@ -2192,34 +2417,32 @@ msgstr[1] "" "Por favor, introduzca un número decimal válido con un máximo de %s " "posiciones decimales." -#: core/validators.py:437 +#: core/validators.py:438 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "" -"Asegúrese de que el archivo que envía es de un tamaño mínimo de " -"%s bytes." +"Asegúrese de que el archivo que envía es de un tamaño mínimo de %s bytes." -#: core/validators.py:438 +#: core/validators.py:439 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "" -"Asegúrese de que el archivo que envía es de un tamaño máximo de " -"%s bytes." +"Asegúrese de que el archivo que envía es de un tamaño máximo de %s bytes." -#: core/validators.py:455 +#: core/validators.py:456 msgid "The format for this field is wrong." msgstr "El formato de este campo es incorrecto." -#: core/validators.py:470 +#: core/validators.py:471 msgid "This field is invalid." msgstr "Este campo no es válido." -#: core/validators.py:506 +#: core/validators.py:507 #, python-format msgid "Could not retrieve anything from %s." -msgstr "No pude obtener nada de %s." +msgstr "No se pudo obtener nada de %s." -#: core/validators.py:509 +#: core/validators.py:510 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." @@ -2227,170 +2450,59 @@ msgstr "" "La URL %(url)s devolvió la cabecera Content-Type '%(contenttype)s', que no " "es válida." -#: core/validators.py:542 +#: core/validators.py:543 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " "\"%(start)s\".)" msgstr "" "Por favor, cierre la etiqueta %(tag)s de la línea %(line)s. (La línea " -"empieza por \"%(start)s\".)" +"empieza con \"%(start)s\".)" -#: core/validators.py:546 +#: core/validators.py:547 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " "starts with \"%(start)s\".)" msgstr "" "Parte del texto que comienza en la línea %(line)s no está permitido en ese " -"contexto. (La línea empieza por \"%(start)s\".)" +"contexto. (La línea empieza con \"%(start)s\".)" -#: core/validators.py:551 +#: core/validators.py:552 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" "(start)s\".)" msgstr "" "El \"%(attr)s\" de la línea %(line)s no es un atributo válido. (La línea " -"empieza por \"%(start)s\".)" +"empieza con \"%(start)s\".)" -#: core/validators.py:556 +#: core/validators.py:557 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" "(start)s\".)" msgstr "" "La \"<%(tag)s>\" de la línea %(line)s no es una etiqueta válida. (La línea " -"empieza por \"%(start)s\".)" +"empieza con \"%(start)s\".)" -#: core/validators.py:560 +#: core/validators.py:561 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " "starts with \"%(start)s\".)" msgstr "" "A una etiqueta de la línea %(line)s le faltan uno o más atributos " -"requeridos. (La línea empieza por \"%(start)s\".)" +"requeridos. (La línea empieza con \"%(start)s\".)" -#: core/validators.py:565 +#: core/validators.py:566 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " "starts with \"%(start)s\".)" msgstr "" "El atributo \"%(attr)s\" de la línea %(line)s tiene un valor que no es " -"válido. (La línea empieza por \"%(start)s\".)" - -#: template/defaultfilters.py:490 -msgid "yes,no,maybe" -msgstr "si,no,talvez" - -#: views/generic/create_update.py:43 -#, python-format -msgid "The %(verbose_name)s was created successfully." -msgstr "Se creó con éxito %(verbose_name)." - -#: 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." - -#: newforms/fields.py:101 newforms/fields.py:254 -#, python-format -msgid "Ensure this value has at most %d characters." -msgstr "Asegúrese de que este valor tenga como máximo %d caracteres." - -#: newforms/fields.py:103 newforms/fields.py:256 -#, python-format -msgid "Ensure this value has at least %d characters." -msgstr "Asegúrese de que este valor tenga al menos %d caracteres." - -#: newforms/fields.py:128 -#, 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:130 -#, 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:163 -msgid "Enter a valid date." -msgstr "Ingrse una fecha válida." - -#: newforms/fields.py:190 -msgid "Enter a valid time." -msgstr "Introduzca una hora válida." - -#: newforms/fields.py:226 -msgid "Enter a valid date/time." -msgstr "Introduzca una fecha/hora válida." - -#: newforms/fields.py:240 -msgid "Enter a valid value." -msgstr "Introduzca un valor válido." - -#: newforms/fields.py:287 newforms/fields.py:309 -msgid "Enter a valid URL." -msgstr "Introduzca una URL válida." - -#: newforms/fields.py:311 -msgid "This URL appears to be a broken link." -msgstr "La URL parece ser un enlace roto." - -#: newforms/fields.py:360 newforms/models.py:164 -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:378 newforms/fields.py:454 newforms/models.py:181 -msgid "Enter a list of values." -msgstr "Introduzca una lista de valores." - -#: newforms/fields.py:387 newforms/models.py:187 -#, 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." - -#: oldforms/__init__.py:387 -#, 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 caracter." -msgstr[1] "Asegúrese de que su texto tiene menos de %s caracteres." - -#: oldforms/__init__.py:392 -msgid "Line breaks are not allowed here." -msgstr "No se permiten saltos de línea." - -#: oldforms/__init__.py:493 oldforms/__init__.py:566 oldforms/__init__.py:605 -#, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "Seleccione una opción válida; '%(data)s' no está en %(choices)s." - -#: oldforms/__init__.py:669 -msgid "The submitted file is empty." -msgstr "El archivo enviado está vacío." - -#: oldforms/__init__.py:725 -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:735 -msgid "Enter a positive number." -msgstr "Introduzca un número positivo." - -#: oldforms/__init__.py:745 -msgid "Enter a whole number between 0 and 32,767." -msgstr "Introduzca un número entero entre 0 y 32.767." +"válido. (La línea empieza con \"%(start)s\".)" #~ msgid "Use '[algo]$[salt]$[hexdigest]'" #~ msgstr "Use '[algoritmo]$[salt]$[hexdigest]'" diff --git a/django/conf/locale/fr/LC_MESSAGES/django.mo b/django/conf/locale/fr/LC_MESSAGES/django.mo index 14b8a935a1..7250343b45 100644 Binary files a/django/conf/locale/fr/LC_MESSAGES/django.mo and b/django/conf/locale/fr/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/fr/LC_MESSAGES/django.po b/django/conf/locale/fr/LC_MESSAGES/django.po index 62f3b46c37..14fc0083b8 100644 --- a/django/conf/locale/fr/LC_MESSAGES/django.po +++ b/django/conf/locale/fr/LC_MESSAGES/django.po @@ -673,19 +673,19 @@ msgstr "L'URL est un lien cassé." #: contrib/humanize/templatetags/humanize.py:16 msgid "th" -msgstr "e" +msgstr "e" #: contrib/humanize/templatetags/humanize.py:16 msgid "st" -msgstr "er" +msgstr "er" #: contrib/humanize/templatetags/humanize.py:16 msgid "nd" -msgstr "d" +msgstr "d" #: contrib/humanize/templatetags/humanize.py:16 msgid "rd" -msgstr "e" +msgstr "e" #: contrib/humanize/templatetags/humanize.py:48 #, python-format @@ -1346,7 +1346,7 @@ msgstr "Sélectionnez %s pour changer" #: contrib/admin/views/main.py:768 msgid "Database error" -msgstr "" +msgstr "Erreur de base de données" #: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 #: contrib/admin/views/doc.py:50 @@ -1391,7 +1391,7 @@ msgstr "les objets `%(label)s.%(type)s en relation" #: contrib/admin/views/doc.py:219 #, python-format msgid "all %s" -msgstr "" +msgstr "tous les %s" #: contrib/admin/views/doc.py:224 #, python-format @@ -1401,7 +1401,7 @@ msgstr "nombre de %s" #: contrib/admin/views/doc.py:229 #, python-format msgid "Fields on %s objects" -msgstr "" +msgstr "Champs sur les objets %s" #: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301 #: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309 @@ -1613,7 +1613,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 "" +msgstr "Quelque chose ne va pas avec votre base de données. Vérifiez que les" +"bonnes bases ont été créées, et qu'elle est lisible par le bon utilisateur." #: contrib/admin/templates/admin/search_form.html:8 msgid "Go" @@ -1930,6 +1931,13 @@ msgid "" "as \"internal\" (talk to your system administrator if you aren't sure if\n" "your computer is \"internal\").

\n" msgstr "" +"\n" +"

Pour installer des bookmarklets, 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" +"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).

\n" #: contrib/admin/templates/admin_doc/bookmarklets.html:19 msgid "Documentation for this page" diff --git a/django/conf/locale/ja/LC_MESSAGES/django.mo b/django/conf/locale/ja/LC_MESSAGES/django.mo index 97b8f4145b..07d3994755 100644 Binary files a/django/conf/locale/ja/LC_MESSAGES/django.mo and b/django/conf/locale/ja/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/ja/LC_MESSAGES/django.po b/django/conf/locale/ja/LC_MESSAGES/django.po index 46700505ba..ab761254ae 100644 --- a/django/conf/locale/ja/LC_MESSAGES/django.po +++ b/django/conf/locale/ja/LC_MESSAGES/django.po @@ -1,5 +1,5 @@ # Translation of django.po to japanese. -# Copyright (C) 2005,2006 THE PACKAGE'S COPYRIGHT HOLDER +# Copyright (C) 2005,2006,2007 makoto tsuyuki # This file is distributed under the same license as the PACKAGE package. # makoto tsuyuki , 2005,2006,2007. # @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Django 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-02-15 23:43+0900\n" +"POT-Creation-Date: 2007-03-26 22:51+0900\n" "PO-Revision-Date: 2006-05-18 00:28+0900\n" "Last-Translator: makoto tsuyuki \n" "Language-Team: Japanese \n" @@ -92,70 +92,82 @@ msgid "Japanese" msgstr "日本語" #: conf/global_settings.py:58 +msgid "Kannada" +msgstr "カンナダ語" + +#: conf/global_settings.py:59 msgid "Latvian" msgstr "ラトビア語" -#: conf/global_settings.py:59 +#: conf/global_settings.py:60 msgid "Macedonian" msgstr "マケドニア語" -#: conf/global_settings.py:60 +#: conf/global_settings.py:61 msgid "Dutch" msgstr "オランダ語" -#: conf/global_settings.py:61 +#: conf/global_settings.py:62 msgid "Norwegian" msgstr "ノルウェー語" -#: conf/global_settings.py:62 +#: conf/global_settings.py:63 msgid "Polish" msgstr "ãƒãƒ¼ãƒ©ãƒ³ãƒ‰èªž" -#: conf/global_settings.py:63 +#: conf/global_settings.py:64 +msgid "Portugese" +msgstr "ãƒãƒ«ãƒˆã‚¬ãƒ«èªž" + +#: conf/global_settings.py:65 msgid "Brazilian" msgstr "ブラジル語" -#: conf/global_settings.py:64 +#: conf/global_settings.py:66 msgid "Romanian" msgstr "ルーマニア語" -#: conf/global_settings.py:65 +#: conf/global_settings.py:67 msgid "Russian" msgstr "ロシア語" -#: conf/global_settings.py:66 +#: conf/global_settings.py:68 msgid "Slovak" msgstr "スロãƒã‚­ã‚¢èªž" -#: conf/global_settings.py:67 +#: conf/global_settings.py:69 msgid "Slovenian" msgstr "スロヴェニア語" -#: conf/global_settings.py:68 +#: conf/global_settings.py:70 msgid "Serbian" msgstr "セルビア語" -#: conf/global_settings.py:69 +#: conf/global_settings.py:71 msgid "Swedish" msgstr "スウェーデン語" -#: conf/global_settings.py:70 +#: conf/global_settings.py:72 msgid "Tamil" msgstr "タミル語" -#: conf/global_settings.py:71 +#: conf/global_settings.py:73 +msgid "Telugu" +msgstr "テルグ語" + +#: conf/global_settings.py:74 msgid "Turkish" msgstr "トルコ語" -#: conf/global_settings.py:72 +#: conf/global_settings.py:75 msgid "Ukrainian" msgstr "ウクライナ語" -#: conf/global_settings.py:73 +#: conf/global_settings.py:76 msgid "Simplified Chinese" msgstr "簡体字中国語" -#: conf/global_settings.py:74 +#: conf/global_settings.py:77 msgid "Traditional Chinese" msgstr "ç¹ä½“字中国語" @@ -194,17 +206,17 @@ msgid "This year" msgstr "今年" #: contrib/admin/filterspecs.py:143 newforms/widgets.py:170 -#: oldforms/__init__.py:572 +#: oldforms/__init__.py:577 msgid "Yes" msgstr "ã¯ã„" #: contrib/admin/filterspecs.py:143 newforms/widgets.py:170 -#: oldforms/__init__.py:572 +#: oldforms/__init__.py:577 msgid "No" msgstr "ã„ã„ãˆ" #: contrib/admin/filterspecs.py:150 newforms/widgets.py:170 -#: oldforms/__init__.py:572 +#: oldforms/__init__.py:577 msgid "Unknown" msgstr "䏿˜Ž" @@ -568,7 +580,8 @@ msgstr "確èªã®ãŸã‚ã€å†åº¦ãƒ‘スワードを入力ã—ã¦ãã ã•ã„。" #: contrib/admin/templates/admin/auth/user/change_password.html:28 #, python-format msgid "Enter a new password for the user %(username)s." -msgstr "%(username)sã•ã‚“ã®æ–°ã—ã„パスワードを入力ã—ã¦ãã ã•ã„。" +msgstr "" +"%(username)sã•ã‚“ã®æ–°ã—ã„パスワードを入力ã—ã¦ãã ã•ã„。" #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Bookmarklets" @@ -602,7 +615,6 @@ msgstr "" msgid "Documentation for this page" msgstr "ã“ã®ãƒšãƒ¼ã‚¸ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆ" -# TODO #: contrib/admin/templates/admin_doc/bookmarklets.html:20 msgid "" "Jumps you from any page to the documentation for the view that generates " @@ -769,7 +781,7 @@ msgstr "ç¾åœ¨:" msgid "Change:" msgstr "変更:" -#: contrib/admin/templatetags/admin_list.py:238 +#: contrib/admin/templatetags/admin_list.py:247 msgid "All dates" msgstr "ã„ã¤ã§ã‚‚" @@ -850,13 +862,13 @@ msgstr "アプリケーション %r ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" #: contrib/admin/views/doc.py:171 #, python-format -msgid "Model %r not found in app %r" -msgstr "モデル %r ㌠%r アプリケーションã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" +msgid "Model %(name)r not found in app %(label)r" +msgstr "モデル %(name)r ㌠%(label)r アプリケーションã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" #: contrib/admin/views/doc.py:183 #, python-format -msgid "the related `%s.%s` object" -msgstr "`%s.%s` (関連オブジェクト)" +msgid "the related `%(label)s.%(type)s` object" +msgstr "`%(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 @@ -865,8 +877,8 @@ msgstr "モデル :" #: contrib/admin/views/doc.py:214 #, python-format -msgid "related `%s.%s` objects" -msgstr "`%s.%s` (関連オブジェクト)" +msgid "related `%(label)s.%(name)s` objects" +msgstr "`%(label)s.%(name)s` (関連オブジェクト)" #: contrib/admin/views/doc.py:219 #, python-format @@ -984,7 +996,7 @@ msgid "Added %s." msgstr "%s を追加ã—ã¾ã—ãŸã€‚" #: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337 -#: contrib/admin/views/main.py:339 db/models/manipulators.py:306 +#: contrib/admin/views/main.py:339 db/models/manipulators.py:308 msgid "and" msgstr "ã¨" @@ -1018,41 +1030,41 @@ msgstr "%(name)s \"%(obj)s\" を追加ã—ã¾ã—ãŸã€‚ç¶šã‘ã¦ç·¨é›†ã§ãã¾ã™ msgid "Change %s" msgstr "%s を変更" -#: contrib/admin/views/main.py:473 +#: contrib/admin/views/main.py:476 #, python-format msgid "One or more %(fieldname)s in %(name)s: %(obj)s" msgstr "%(name)s ã« %(fieldname)s ãŒä¸€ã¤ä»¥ä¸Šã‚りã¾ã™: %(obj)s" -#: contrib/admin/views/main.py:478 +#: contrib/admin/views/main.py:481 #, python-format msgid "One or more %(fieldname)s in %(name)s:" msgstr "%(name)s ã« %(fieldname)s ãŒä¸€ã¤ä»¥ä¸Šã‚りã¾ã™:" -#: contrib/admin/views/main.py:511 +#: contrib/admin/views/main.py:514 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "%(name)s \"%(obj)s\" を削除ã—ã¾ã—ãŸã€‚" -#: contrib/admin/views/main.py:514 +#: contrib/admin/views/main.py:517 msgid "Are you sure?" msgstr "よã‚ã—ã„ã§ã™ã‹ï¼Ÿ" -#: contrib/admin/views/main.py:536 +#: contrib/admin/views/main.py:539 #, python-format msgid "Change history: %s" msgstr "変更履歴: %s" -#: contrib/admin/views/main.py:570 +#: contrib/admin/views/main.py:573 #, python-format msgid "Select %s" msgstr "%s ã‚’é¸æŠž" -#: contrib/admin/views/main.py:570 +#: contrib/admin/views/main.py:573 #, python-format msgid "Select %s to change" msgstr "変更ã™ã‚‹ %s ã‚’é¸æŠž" -#: contrib/admin/views/main.py:758 +#: contrib/admin/views/main.py:768 msgid "Database error" msgstr "データベースエラー" @@ -1147,8 +1159,8 @@ msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." msgstr "" -"'[algo]$[salt]$[hexdigest]'å½¢å¼ã‹ã€" -"パスワード変更フォームを使ã£ã¦ãã ã•ã„。" +"'[algo]$[salt]$[hexdigest]'å½¢å¼ã‹ã€ãƒ‘スワード変更フォー" +"ムを使ã£ã¦ãã ã•ã„。" #: contrib/auth/models.py:95 msgid "staff status" @@ -1517,15 +1529,15 @@ msgstr "コメント ID ãŒä¸æ­£ã§ã™" msgid "No voting for yourself" msgstr "自分ã«ã¯æŠ•票ã§ãã¾ã›ã‚“。" -#: contrib/contenttypes/models.py:26 +#: contrib/contenttypes/models.py:36 msgid "python model class name" msgstr "Python モデルクラスå" -#: contrib/contenttypes/models.py:29 +#: contrib/contenttypes/models.py:39 msgid "content type" msgstr "コンテンツタイプ" -#: contrib/contenttypes/models.py:30 +#: contrib/contenttypes/models.py:40 msgid "content types" msgstr "コンテンツタイプ" @@ -1575,7 +1587,281 @@ msgstr "フラットページ" msgid "flat pages" msgstr "フラットページ" -#: contrib/localflavor/usa/forms.py:13 +#: 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 百万" +msgstr[1] "%(value).1f 百万" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f åå„„" +msgstr[1] "%(value).1f åå„„" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f å…†" +msgstr[1] "%(value).1f å…†" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "one" +msgstr "1" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "2" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "3" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "four" +msgstr "4" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "5" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "6" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "7" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "8" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "9" + +#: contrib/localflavor/fr/forms.py:17 +#, fuzzy +msgid "Enter a zip code in the format XXXXX." +msgstr "XXXXXã®å½¢å¼ã§Zipコードを入力ã—ã¦ãã ã•ã„。" + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "XXXXXã‹ã€XXXXX-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/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "ãƒã‚¹ã‚¿ãƒ«ã‚³ãƒ¼ãƒ‰ã‚’入力ã—ã¦ãã ã•ã„。コードã¨ã‚³ãƒ¼ãƒ‰ã®é–“ã¯åŠè§’ã®ã‚¹ãƒšãƒ¼ã‚¹ã§åŒºåˆ‡ã£ã¦ãã ã•ã„。" + +#: contrib/localflavor/usa/forms.py:17 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." msgstr "XXXXXã‹ã€XXXXX-XXXXã®å½¢å¼ã§éƒµä¾¿ç•ªå·ã‚’入力ã—ã¦ãã ã•ã„。" @@ -1607,23 +1893,23 @@ msgstr "リダイレクト" msgid "redirects" msgstr "リダイレクト" -#: contrib/sessions/models.py:51 +#: contrib/sessions/models.py:68 msgid "session key" msgstr "セッションキー" -#: contrib/sessions/models.py:52 +#: contrib/sessions/models.py:69 msgid "session data" msgstr "セッションデータ" -#: contrib/sessions/models.py:53 +#: contrib/sessions/models.py:70 msgid "expire date" msgstr "有効期é™" -#: contrib/sessions/models.py:57 +#: contrib/sessions/models.py:74 msgid "session" msgstr "セッション" -#: contrib/sessions/models.py:58 +#: contrib/sessions/models.py:75 msgid "sessions" msgstr "セッション" @@ -1704,31 +1990,31 @@ msgstr "1900年以é™ã‚’指定ã—ã¦ãã ã•ã„。" #: core/validators.py:143 #, python-format -msgid "Invalid date: %s." +msgid "Invalid date: %s" msgstr "ç„¡åŠ¹ãªæ—¥ä»˜: %s" -#: core/validators.py:147 db/models/fields/__init__.py:454 +#: core/validators.py:148 db/models/fields/__init__.py:457 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "YYYY-MM-DDå½¢å¼ã§æ—¥ä»˜ã‚’入力ã—ã¦ãã ã•ã„。" -#: core/validators.py:152 +#: core/validators.py:153 msgid "Enter a valid time in HH:MM format." msgstr "HH:MMå½¢å¼ã§æ™‚刻を入力ã—ã¦ãã ã•ã„。" -#: core/validators.py:156 db/models/fields/__init__.py:521 +#: core/validators.py:157 db/models/fields/__init__.py:526 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "YYYY-MM-DD HH:MMå½¢å¼ã§æ—¥æ™‚を入力ã—ã¦ãã ã•ã„。" -#: core/validators.py:161 newforms/fields.py:269 +#: core/validators.py:162 newforms/fields.py:269 msgid "Enter a valid e-mail address." msgstr "有効ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入力ã—ã¦ãã ã•ã„。" -#: core/validators.py:173 core/validators.py:442 oldforms/__init__.py:667 +#: core/validators.py:174 core/validators.py:445 oldforms/__init__.py:672 msgid "No file was submitted. Check the encoding type on the form." msgstr "" "ファイルãŒå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚formã®encoding typeを確èªã—ã¦ãã ã•ã„。" -#: core/validators.py:177 +#: core/validators.py:178 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -1736,26 +2022,26 @@ msgstr "" "ç”»åƒã‚’アップロードã—ã¦ãã ã•ã„。アップロードã—ãŸç”»åƒã¯ç”»åƒã§ãªã„ã‹ã€ã¾ãŸã¯å£Š" "れã¦ã„ã¾ã™ã€‚" -#: core/validators.py:184 +#: core/validators.py:185 #, python-format msgid "The URL %s does not point to a valid image." msgstr "URL ( %s ) ã¯ç”»åƒã§ã¯ã‚りã¾ã›ã‚“。" -#: core/validators.py:188 +#: core/validators.py:189 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "電話番å·ã¯ XXX-XXX-XXXX å½¢å¼ã§å…¥åŠ›ã—ã¦ãã ã•ã„。\"%s\" ã¯ç„¡åйã§ã™ã€‚" -#: core/validators.py:196 +#: core/validators.py:197 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "URL ( %s ) 㯠QuickTime ビデオã§ã¯ã‚りã¾ã›ã‚“。" -#: core/validators.py:200 +#: core/validators.py:201 msgid "A valid URL is required." msgstr "æ­£ã—ã„ URL を入力ã—ã¦ãã ã•ã„。" -#: core/validators.py:214 +#: core/validators.py:215 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" @@ -1764,86 +2050,86 @@ msgstr "" "有効㪠HTML を入力ã—ã¦ãã ã•ã„。エラー:\n" "%s" -#: core/validators.py:221 +#: core/validators.py:222 #, python-format msgid "Badly formed XML: %s" msgstr "䏿­£ãª XML ã§ã™: %s" -#: core/validators.py:238 +#: core/validators.py:239 #, python-format msgid "Invalid URL: %s" msgstr "無効ãªURL: %s" -#: core/validators.py:243 core/validators.py:245 +#: core/validators.py:244 core/validators.py:246 #, python-format msgid "The URL %s is a broken link." msgstr "URL ( %s ) ã¯ãƒªãƒ³ã‚¯ãŒå£Šã‚Œã¦ã„ã¾ã™ã€‚" -#: core/validators.py:251 +#: core/validators.py:252 msgid "Enter a valid U.S. state abbreviation." msgstr "æ­£ã—ã„米州略称を入力ã—ã¦ãã ã•ã„。" -#: core/validators.py:265 +#: core/validators.py:266 #, 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] "言葉使ã„ã«æ°—を付ã‘ã¦ï¼ %s ã¨ã„ã†è¨€è‘‰ã¯ä½¿ãˆã¾ã›ã‚“。" msgstr[1] "言葉使ã„ã«æ°—を付ã‘ã¦ï¼ %s ã¨ã„ã†è¨€è‘‰ã¯ä½¿ãˆã¾ã›ã‚“。" -#: core/validators.py:272 +#: core/validators.py:273 #, python-format msgid "This field must match the '%s' field." msgstr "ã“ã®ãƒ•ィールド㯠'%s' フィールドã¨ä¸€è‡´ã›ã­ã°ãªã‚Šã¾ã›ã‚“。" -#: core/validators.py:291 +#: core/validators.py:292 msgid "Please enter something for at least one field." msgstr "å°‘ãªãã¨ã‚‚一ã¤ã®ãƒ•ィールドã«ä½•ã‹å…¥åŠ›ã—ã¦ãã ã•ã„。" -#: core/validators.py:300 core/validators.py:311 +#: core/validators.py:301 core/validators.py:312 msgid "Please enter both fields or leave them both empty." msgstr "両方ã®ãƒ•ィールドã«å…¥åŠ›ã™ã‚‹ã‹ã€ä¸¡æ–¹ã¨ã‚‚未入力ã«ã—ã¦ãã ã•ã„。" -#: core/validators.py:318 +#: core/validators.py:320 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "" "%(field)s ã‚’ %(value)s ã«ã™ã‚‹ã®ãªã‚‰ã€ã“ã®ãƒ•ィールドã«å¿…ãšå…¥åŠ›ã—ã¦ãã ã•ã„。" -#: core/validators.py:330 +#: core/validators.py:333 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "" "%(field)s ã‚’ %(value)s ã«ã—ãªã„ã®ãªã‚‰ã€ã“ã®ãƒ•ィールドã«å¿…ãšå…¥åŠ›ã—ã¦ãã ã•ã„。" -#: core/validators.py:349 +#: core/validators.py:352 msgid "Duplicate values are not allowed." msgstr "é‡è¤‡ã™ã‚‹å€¤ã¯èªã‚られã¾ã›ã‚“。" -#: core/validators.py:364 +#: core/validators.py:367 #, python-format -msgid "This value must be between %s and %s." -msgstr "ã“ã®å€¤ã¯ %s ã‹ã‚‰ %s ã®é–“ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。" +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "ã“ã®å€¤ã¯ %(lower)s ã‹ã‚‰ %(upper)s ã®é–“ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。" -#: core/validators.py:366 +#: core/validators.py:369 #, python-format msgid "This value must be at least %s." msgstr "ã“ã®å€¤ã¯ %s 以上ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。" -#: core/validators.py:368 +#: core/validators.py:371 #, python-format msgid "This value must be no more than %s." msgstr "ã“ã®å€¤ã¯ %s よりå°ã•ããªã‘れã°ãªã‚Šã¾ã›ã‚“。" -#: core/validators.py:404 +#: core/validators.py:407 #, python-format msgid "This value must be a power of %s." msgstr "ã“ã®å€¤ã¯ %s ã®ç´¯ä¹—ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。" -#: core/validators.py:415 +#: core/validators.py:418 msgid "Please enter a valid decimal number." msgstr "有効㪠10 進数を入力ã—ã¦ãã ã•ã„。" -#: core/validators.py:419 +#: core/validators.py:422 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" @@ -1851,7 +2137,7 @@ msgid_plural "" msgstr[0] "全体㧠%s æ–‡å­—ä»¥ä¸‹ã®æ•°å­—を入力ã—ã¦ãã ã•ã„。" msgstr[1] "全体㧠%s æ–‡å­—ä»¥ä¸‹ã®æ•°å­—を入力ã—ã¦ãã ã•ã„。" -#: core/validators.py:422 +#: core/validators.py:425 #, python-format msgid "" "Please enter a valid decimal number with a whole part of at most %s digit." @@ -1860,7 +2146,7 @@ msgid_plural "" msgstr[0] "整数部㯠%s æ–‡å­—ä»¥ä¸‹ã®æ•°å­—を入力ã—ã¦ãã ã•ã„。" msgstr[1] "整数部㯠%s æ–‡å­—ä»¥ä¸‹ã®æ•°å­—を入力ã—ã¦ãã ã•ã„。" -#: core/validators.py:425 +#: core/validators.py:428 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" @@ -1868,37 +2154,37 @@ msgid_plural "" msgstr[0] "å°æ•°éƒ¨ã¯ %s æ–‡å­—ä»¥ä¸‹ã®æ•°å­—を入力ã—ã¦ãã ã•ã„。" msgstr[1] "å°æ•°éƒ¨ã¯ %s æ–‡å­—ä»¥ä¸‹ã®æ•°å­—を入力ã—ã¦ãã ã•ã„。" -#: core/validators.py:435 +#: core/validators.py:438 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "アップロードã™ã‚‹ãƒ•ァイルã®å¤§ãã•㯠%s ãƒã‚¤ãƒˆä»¥ä¸Šã«ã—ã¦ãã ã•ã„。" -#: core/validators.py:436 +#: core/validators.py:439 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "アップロードã™ã‚‹ãƒ•ァイルã®å¤§ãã•㯠%s 最大ãƒã‚¤ãƒˆã¾ã§ã§ã™ã€‚" -#: core/validators.py:453 +#: core/validators.py:456 msgid "The format for this field is wrong." msgstr "フィールドã®å½¢å¼ãŒæ­£ã—ãã‚りã¾ã›ã‚“。" -#: core/validators.py:468 +#: core/validators.py:471 msgid "This field is invalid." msgstr "ã“ã®ãƒ•ィールドã¯ç„¡åйã§ã™ã€‚" -#: core/validators.py:504 +#: core/validators.py:507 #, python-format msgid "Could not retrieve anything from %s." msgstr "%s ã‹ã‚‰ä½•も検索ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" -#: core/validators.py:507 +#: core/validators.py:510 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "" "URL %(url)s ã¯ç„¡åйãªã‚³ãƒ³ãƒ†ãƒ³ãƒ„タイプヘッダ '%(contenttype)s' ã‚’è¿”ã—ã¾ã—ãŸã€‚" -#: core/validators.py:540 +#: core/validators.py:543 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " @@ -1907,7 +2193,7 @@ msgstr "" "%(line)s 行目ã‹ã‚‰å§‹ã¾ã‚‹ %(tag)s ã‚¿ã‚°ã‚’é–‰ã˜ã¦ãã ã•ã„ (\"%(start)s\" ã§å§‹ã¾ã‚‹" "行ã§ã™)。" -#: core/validators.py:544 +#: core/validators.py:547 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " @@ -1916,7 +2202,7 @@ msgstr "" "%(line)s 行目ã‹ã‚‰å§‹ã¾ã‚‹ãƒ†ã‚­ã‚¹ãƒˆã¯ã“ã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã§ã¯ä½¿ãˆã¾ã›ã‚“。 (\"%(start)" "s\" ã§å§‹ã¾ã‚‹è¡Œã§ã™)。" -#: core/validators.py:549 +#: core/validators.py:552 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" @@ -1925,7 +2211,7 @@ msgstr "" "%(line)s 行目㮠\"%(attr)s\" ã¯ç„¡åйãªã‚¢ãƒˆãƒªãƒ“ュートã§ã™ (\"%(start)s\" ã§å§‹ã¾" "る行ã§ã™)。" -#: core/validators.py:554 +#: core/validators.py:557 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" @@ -1934,7 +2220,7 @@ msgstr "" "%(line)s 行目㮠\"<%(tag)s>\" ã¯ç„¡åйãªã‚¿ã‚°ã§ã™( \"%(start)s\" ã§å§‹ã¾ã‚‹è¡Œã§" "ã™)。" -#: core/validators.py:558 +#: core/validators.py:561 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " @@ -1943,7 +2229,7 @@ msgstr "" "%(line)s 行目ã®ã‚¿ã‚°ã¯å¿…é ˆã‚¢ãƒˆãƒªãƒ“ãƒ¥ãƒ¼ãƒˆãŒæœªå…¥åŠ›ã§ã™( \"%(start)s\" ã§å§‹ã¾ã‚‹è¡Œ" "ã§ã™)。" -#: core/validators.py:563 +#: core/validators.py:566 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " @@ -1952,7 +2238,7 @@ msgstr "" "%(line)s 行目㮠\"%(attr)s\" アトリビュートã®å€¤ãŒæ­£ã—ãã‚りã¾ã›ã‚“ (\"%(start)" "s\" ã§å§‹ã¾ã‚‹è¡Œã§ã™) 。" -#: db/models/manipulators.py:305 +#: db/models/manipulators.py:307 #, python-format msgid "%(object)s with this %(type)s already exists for the given %(field)s." msgstr "" @@ -1963,29 +2249,33 @@ msgstr "" msgid "%(optname)s with this %(fieldname)s already exists." msgstr "%(fieldname)s ã« %(optname)s ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚" -#: db/models/fields/__init__.py:116 db/models/fields/__init__.py:273 -#: db/models/fields/__init__.py:605 db/models/fields/__init__.py:616 -#: newforms/fields.py:78 newforms/fields.py:373 newforms/fields.py:449 -#: newforms/fields.py:460 oldforms/__init__.py:352 +#: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274 +#: db/models/fields/__init__.py:610 db/models/fields/__init__.py:621 +#: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450 +#: newforms/fields.py:461 newforms/models.py:177 oldforms/__init__.py:357 msgid "This field is required." msgstr "ã“ã®ãƒ•ィールドã¯å¿…é ˆã§ã™ã€‚" -#: db/models/fields/__init__.py:366 +#: db/models/fields/__init__.py:367 msgid "This value must be an integer." msgstr "å€¤ã¯æ•´æ•°ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。" -#: db/models/fields/__init__.py:401 +#: db/models/fields/__init__.py:402 msgid "This value must be either True or False." msgstr "値ã¯çœŸ: True ã¾ãŸã¯å½: False ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。" -#: db/models/fields/__init__.py:422 +#: db/models/fields/__init__.py:423 msgid "This field cannot be null." msgstr "ã“ã®ãƒ•ィールドã«ã¯ NULL を指定ã§ãã¾ã›ã‚“。" -#: db/models/fields/__init__.py:625 +#: db/models/fields/__init__.py:630 msgid "Enter a valid filename." msgstr "æ­£ã—ã„ファイルåを入力ã—ã¦ãã ã•ã„。" +#: db/models/fields/__init__.py:751 +msgid "This value must be either None, True or False." +msgstr "値ã¯ã€ç©º: Noneã€çœŸ: True ã¾ãŸã¯å½: False ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。" + #: db/models/fields/related.py:53 #, python-format msgid "Please enter a valid %s." @@ -2054,55 +2344,79 @@ msgstr "URLã‚’æ­£ã—ã入力ã—ã¦ãã ã•ã„。" msgid "This URL appears to be a broken link." msgstr "ã“ã®URLã¯ãƒªãƒ³ã‚¯ãŒå£Šã‚Œã¦ã„ã¾ã™ã€‚" -#: newforms/fields.py:359 +#: newforms/fields.py:360 newforms/models.py:164 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "æ­£ã—ãé¸æŠžã—ã¦ãã ã•ã„ã€‚é¸æŠžã—ãŸã‚‚ã®ã¯å€™è£œã«ã‚りã¾ã›ã‚“。" -#: newforms/fields.py:377 newforms/fields.py:453 +#: newforms/fields.py:378 newforms/fields.py:454 newforms/models.py:181 msgid "Enter a list of values." msgstr "リストを入力ã—ã¦ãã ã•ã„。" -#: newforms/fields.py:386 +#: newforms/fields.py:387 newforms/models.py:187 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "æ­£ã—ãé¸æŠžã—ã¦ãã ã•ã„。 %s ã¯å€™è£œã«ã‚りã¾ã›ã‚“。" -#: oldforms/__init__.py:387 +#: oldforms/__init__.py:392 #, python-format msgid "Ensure your text is less than %s character." msgid_plural "Ensure your text is less than %s characters." msgstr[0] "%s 字以下ã§å…¥åŠ›ã—ã¦ãã ã•ã„。" msgstr[1] "%s 字以下ã§å…¥åŠ›ã—ã¦ãã ã•ã„。" -#: oldforms/__init__.py:392 +#: oldforms/__init__.py:397 msgid "Line breaks are not allowed here." msgstr "改行ã¯ã§ãã¾ã›ã‚“。" -#: oldforms/__init__.py:493 oldforms/__init__.py:566 oldforms/__init__.py:605 +#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 #, python-format msgid "Select a valid choice; '%(data)s' is not in %(choices)s." msgstr "æ­£ã—ãé¸æŠžã—ã¦ãã ã•ã„。; '%(data)s' 㯠%(choices)s ã«ã‚りã¾ã›ã‚“。" -#: oldforms/__init__.py:669 +#: oldforms/__init__.py:674 msgid "The submitted file is empty." msgstr "入力ã•れãŸãƒ•ァイルã¯ç©ºã§ã™ã€‚" -#: oldforms/__init__.py:725 +#: oldforms/__init__.py:730 msgid "Enter a whole number between -32,768 and 32,767." msgstr "-32,768 ã‹ã‚‰ 32,767 ã¾ã§ã®æ•´æ•°ã‚’入力ã—ã¦ãã ã•ã„。" -#: oldforms/__init__.py:735 +#: oldforms/__init__.py:740 msgid "Enter a positive number." msgstr "æ­£ã®æ•°ã‚’入力ã—ã¦ãã ã•ã„。" -#: oldforms/__init__.py:745 +#: oldforms/__init__.py:750 msgid "Enter a whole number between 0 and 32,767." msgstr "0 ã‹ã‚‰ 32,767 ã¾ã§ã®æ•´æ•°ã‚’入力ã—ã¦ãã ã•ã„。" -#: template/defaultfilters.py:436 +#: template/defaultfilters.py:491 msgid "yes,no,maybe" msgstr "ã¯ã„,ã„ã„ãˆ,ãŸã¶ã‚“" +#: utils/dateformat.py:40 +msgid "p.m." +msgstr "p.m." + +#: utils/dateformat.py:41 +msgid "a.m." +msgstr "a.m." + +#: utils/dateformat.py:46 +msgid "PM" +msgstr "PM" + +#: utils/dateformat.py:47 +msgid "AM" +msgstr "AM" + +#: utils/dateformat.py:95 +msgid "midnight" +msgstr "0時" + +#: utils/dateformat.py:97 +msgid "noon" +msgstr "12時" + #: utils/dates.py:6 msgid "Monday" msgstr "月曜日" diff --git a/django/conf/locale/ja/LC_MESSAGES/djangojs.mo b/django/conf/locale/ja/LC_MESSAGES/djangojs.mo index bddecacb10..45a4ff9f67 100644 Binary files a/django/conf/locale/ja/LC_MESSAGES/djangojs.mo and b/django/conf/locale/ja/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/ja/LC_MESSAGES/djangojs.po b/django/conf/locale/ja/LC_MESSAGES/djangojs.po index 0ec1cadcf5..d35b88aa73 100644 --- a/django/conf/locale/ja/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/ja/LC_MESSAGES/djangojs.po @@ -1,14 +1,12 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# Japanese translation for js. +# Copyright (C) 2005 makoto tsuyuki # This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy +# makoto tsuyuki , 2005. msgid "" msgstr "" "Project-Id-Version: Django 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-10-06 00:30+0900\n" +"POT-Creation-Date: 2007-03-26 23:41+0900\n" "PO-Revision-Date: 2006-05-08 13:39+0900\n" "Last-Translator: makoto tsuyuki \n" "Language-Team: Japanese \n" @@ -85,7 +83,7 @@ msgstr "æ™‚é–“ã‚’é¸æŠž" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 msgid "Midnight" -msgstr "夜中" +msgstr "0時" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 msgid "6 a.m." @@ -93,7 +91,7 @@ msgstr "åˆå‰ 6 時" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 msgid "Noon" -msgstr "æ­£åˆ" +msgstr "12時" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 diff --git a/django/conf/locale/te/LC_MESSAGES/django.mo b/django/conf/locale/te/LC_MESSAGES/django.mo index 29360bb660..318ce76779 100644 Binary files a/django/conf/locale/te/LC_MESSAGES/django.mo and b/django/conf/locale/te/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/te/LC_MESSAGES/django.po b/django/conf/locale/te/LC_MESSAGES/django.po index 0057bf97de..b2e450c0a7 100644 --- a/django/conf/locale/te/LC_MESSAGES/django.po +++ b/django/conf/locale/te/LC_MESSAGES/django.po @@ -163,11 +163,11 @@ msgstr "à°«à±à°²à°¾à°—ౠతేది " #: contrib/comments/models.py:268 msgid "user flag" -msgstr "యూఙరౠఫà±à°²à°¾à°—à±" +msgstr "యూజరౠఫà±à°²à°¾à°—à±" #: contrib/comments/models.py:269 msgid "user flags" -msgstr "యూఙరౠఫà±à°²à°¾à°—à±à°²à±" +msgstr "యూజరౠఫà±à°²à°¾à°—à±à°²à±" #: contrib/comments/models.py:273 #, python-format @@ -193,7 +193,7 @@ msgstr "మొదరేటరౠతీసివేసిన %r" #: contrib/comments/views/karma.py:19 msgid "Anonymous users cannot vote" -msgstr "అపరిచిత యూఙరà±à°²à± వోటౠవేయలేరà±" +msgstr "అపరిచిత యూజరà±à°²à± వోటౠవేయలేరà±" #: contrib/comments/views/karma.py:23 msgid "Invalid comment ID" @@ -220,12 +220,12 @@ msgid_plural "" "\n" "%(text)s" msgstr[0] "" -"à°ˆ à°µà±à°¯à°¾à°–à±à°¯à°¾à°¨à°®à± చేసిన యూఙరౠ%(count)లౠకనà±à°¨ తకà±à°•à±à°µ సమరà±à°ªà°¿à°‚చాడౠ" +"à°ˆ à°µà±à°¯à°¾à°–à±à°¯à°¾à°¨à°®à± చేసిన యూజరౠ%(count)లౠకనà±à°¨ తకà±à°•à±à°µ సమరà±à°ªà°¿à°‚చాడౠ" "à°µà±à°¯à°¾à°–à±à°¯à°¾à°¨à°®à±:\n" "\n" "%(text)s" msgstr[1] "" -"à°ˆ à°µà±à°¯à°¾à°–à±à°¯à°¾à°¨à°®à± చేసిన యూఙరౠ%(count)లౠకనà±à°¨ తకà±à°•à±à°µ సమరà±à°ªà°¿à°‚చాడà±" +"à°ˆ à°µà±à°¯à°¾à°–à±à°¯à°¾à°¨à°®à± చేసిన యూజరౠ%(count)లౠకనà±à°¨ తకà±à°•à±à°µ సమరà±à°ªà°¿à°‚చాడà±" "à°µà±à°¯à°¾à°–à±à°¯à°¾à°¨à°®à±à°²à±:\n" "\n" "%(text)s" @@ -237,7 +237,7 @@ msgid "" "\n" "%(text)s" msgstr "" -"à°ˆ à°µà±à°¯à°¾à°–à±à°¯à°¾à°¨à°®à± à°¸à±à°•ెచి యూఙరౠచేసాడౠ:\n" +"à°ˆ à°µà±à°¯à°¾à°–à±à°¯à°¾à°¨à°®à± à°¸à±à°•ెచి యూజరౠచేసాడౠ:\n" "\n" "%(text)s" @@ -274,7 +274,7 @@ msgstr "à°µà±à°¯à°¾à°–à±à°¯à°¾à°¨à°®à± ఫారà±à°®à± లో 'à°ªà±à°° #: contrib/comments/templates/comments/form.html:8 #: contrib/admin/templates/admin/login.html:17 msgid "Username:" -msgstr "యూఙరౠపేరà±" +msgstr "యూజరౠపేరà±" #: contrib/comments/templates/comments/form.html:6 #: contrib/admin/templates/admin/object_history.html:3 @@ -353,15 +353,15 @@ msgstr "à°…à°¨à±à°¨à±€" #: contrib/admin/filterspecs.py:109 msgid "Any date" -msgstr "ఠరోఙైన" +msgstr "ఠరోజైన" #: contrib/admin/filterspecs.py:110 msgid "Today" -msgstr "à°ˆ రోఙà±" +msgstr "à°ˆ రోజà±" #: contrib/admin/filterspecs.py:113 msgid "Past 7 days" -msgstr "à°—à°¤ 7 రోఙà±à°² à°—à°¾" +msgstr "à°—à°¤ 7 రోజà±à°² à°—à°¾" #: contrib/admin/filterspecs.py:115 msgid "This month" @@ -413,13 +413,13 @@ msgstr "లాగౠఎంటà±à°°à±€à°²à±" #: contrib/admin/templatetags/admin_list.py:230 msgid "All dates" -msgstr "à°…à°¨à±à°¨à±€ రోఙà±à°²à±" +msgstr "à°…à°¨à±à°¨à±€ రోజà±à°²à±" #: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." -msgstr "దయచేసి సరైన యూఙరౠపేరౠపాసౠవరà±à°¡à± ఇవà±à°µà°‚à°¡à°¿" +msgstr "దయచేసి సరైన యూజరౠపేరౠపాసౠవరà±à°¡à± ఇవà±à°µà°‚à°¡à°¿" #: contrib/admin/views/decorators.py:24 #: contrib/admin/templates/admin/login.html:25 @@ -430,22 +430,22 @@ msgstr "లాగౠఇనà±" msgid "" "Please log in again, because your session has expired. Don't worry: Your " "submission has been saved." -msgstr "దయచేసి మళీ లాగౠఇనౠఅవà±à°µà°‚à°¡à°¿ à°Žà°‚à°¦à±à°•ంటే మీ సేసà±à°¸à°¨à± à°®à±à°—ిసింది . బాధపడకండి మీ సమరà±à°ªà°¨ దాచిపెటà±à°Ÿà°¾à°®à±" +msgstr "దయచేసి మళà±à°³à±€ లాగౠఇనౠఅవà±à°µà°‚à°¡à°¿ à°Žà°‚à°¦à±à°•ంటే మీ సేసà±à°¸à°¨à± à°®à±à°—ిసింది . బాధపడకండి మీ సమరà±à°ªà°¨ దాచిపెటà±à°Ÿà°¾à°®à±" #: 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 "మీ à°¬à±à°°à±Œà°™à°°à± పై à°•à±à°•ీసౠఅంగీకరించబడేటటà±à°²à± చేయలేదౠ. దయ చేసి à°•à±à°•ీసౠఎనేబలౠచేసి ,మళà±à°³à±€ à°Ÿà±à°°à±ˆ చేయండి" +msgstr "మీ à°¬à±à°°à±Œà°œà°°à± పై à°•à±à°•ీసౠఅంగీకరించేటటà±à°²à± చేయలేదౠ. దయ చేసి à°•à±à°•ీసౠఎనేబలౠచేసి ,మళà±à°³à±€ à°Ÿà±à°°à±ˆ చేయండి" #: contrib/admin/views/decorators.py:83 msgid "Usernames cannot contain the '@' character." -msgstr "యూఙరౠపేరౠలో '@' à°…à°•à±à°·à°°à°®à± ఉందకూడడà±" +msgstr "యూజరౠపేరౠలో '@' à°…à°•à±à°·à°°à°®à± ఉందకూడడà±" #: contrib/admin/views/decorators.py:85 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "మీ à°ˆ మెయిలౠఅడà±à°°à°¸à± మీ యూఙరౠపేరౠకాదౠ. '%s' ఇచà±à°šà°¿ చూడండి " +msgstr "మీ à°ˆ మెయిలౠఅడà±à°°à°¸à± మీ యూజరౠపేరౠకాదౠ. '%s' ఇచà±à°šà°¿ చూడండి " #: contrib/admin/views/main.py:223 msgid "Site administration" @@ -454,7 +454,7 @@ msgstr "సైటౠనిరà±à°µà°¾à°¹à°¨" #: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:17 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "%(name)s \"%(obj)s\"ఙయపà±à°°à°¦à°‚à°—à°¾ కలపబడà±à°¡à°¡à°¿" +msgstr "%(name)s \"%(obj)s\"జయపà±à°°à°¦à°‚à°—à°¾ కలపబడà±à°¡à°¡à°¿" #: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347 #: contrib/admin/views/auth.py:22 @@ -464,12 +464,12 @@ msgstr "మీరౠమళà±à°³à±€ దీనినీ à°•à±à°°à°¿à°‚à°¦ à°® #: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 #, python-format msgid "You may add another %s below." -msgstr "మీరౠఇంకొక %s ని à°•à±à°°à°¿à°‚à°¦ ఙత చేయొచà±à°šà±" +msgstr "మీరౠఇంకొక %s ని à°•à±à°°à°¿à°‚à°¦ జత చేయొచà±à°šà±" #: contrib/admin/views/main.py:289 #, python-format msgid "Add %s" -msgstr "%s ని ఙత చేయండి " +msgstr "%s ని జత చేయండి " #: contrib/admin/views/main.py:335 #, python-format @@ -493,17 +493,17 @@ msgstr "%s తీసివేయబడà±à°¡à°¡à°¿" #: contrib/admin/views/main.py:342 msgid "No fields changed." -msgstr "మారà±à°šà°¬à°¡à°²à±‡à°¦à±" +msgstr "ఫీలà±à°¡à±à°¸à± à°à°®à°¿ మారà±à°šà°¬à°¡à°²à±‡à°¦à±" #: contrib/admin/views/main.py:345 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "%(name)s \"%(obj)s\" ఙయపà±à°°à°¦à°‚à°—à°¾ మారà±à°šà°¬à°¡à°¿à°‚à°¡à°¿" +msgstr "%(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 "%(name)s \"%(obj)s\" ఙయపà±à°°à°¦à°‚à°—à°¾ కలపబడà±à°¡à°¡à°¿ .మీరౠమళà±à°³à±€ దీనినీ à°•à±à°°à°¿à°‚à°¦ మారà±à°šà°µà°šà±à°šà±" +msgstr "%(name)s \"%(obj)s\" జయపà±à°°à°¦à°‚à°—à°¾ కలపబడà±à°¡à°¡à°¿ .మీరౠమళà±à°³à±€ దీనినీ à°•à±à°°à°¿à°‚à°¦ మారà±à°šà°µà°šà±à°šà±" #: contrib/admin/views/main.py:391 #, python-format @@ -523,7 +523,7 @@ msgstr "à°’à°•à°Ÿà°¿ కాని ,à°…à°‚à°¤ à°•à°¨à±à°¨à°Žà°•à±à°•à±à°µ %( #: contrib/admin/views/main.py:511 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "%(name)లౠ\"%(obj)s\"ఙయపà±à°°à°¦à°‚à°—à°¾ తీసివేయబడà±à°¡à°¡à°¿" +msgstr "%(name)లౠ\"%(obj)s\"జయపà±à°°à°¦à°‚à°—à°¾ తీసివేయబడà±à°¡à°¡à°¿" #: contrib/admin/views/main.py:514 msgid "Are you sure?" @@ -601,7 +601,7 @@ msgstr "" #: contrib/admin/views/doc.py:229 #, python-format msgid "Fields on %s objects" -msgstr "వసà±à°¤à±à°µà±" +msgstr "%s వసà±à°¤à±à°µà±à°²à°²à±‹ ఫీలà±à°¡à±à°¸à± " #: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301 #: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309 @@ -682,7 +682,7 @@ msgstr "" #: contrib/admin/views/auth.py:28 msgid "Add user" -msgstr "యూఙరà±" +msgstr "యూజరౠని జత చేయండి" #: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 @@ -742,7 +742,7 @@ msgstr "తేది/వేళ" #: contrib/admin/templates/admin/object_history.html:19 msgid "User" -msgstr "యూఙరà±" +msgstr "యూజరà±" #: contrib/admin/templates/admin/object_history.html:20 msgid "Action" @@ -760,11 +760,11 @@ msgstr "" #: contrib/admin/templates/admin/base_site.html:4 msgid "Django site admin" -msgstr "à°¡à±à°™à°¾à°‚గొ యొకà±à°• నిరà±à°µà°¾à°¹à°¨à°¦à°¾à°°à±à°²à±" +msgstr "à°¡à±à°œà°¾à°‚గొ యొకà±à°• నిరà±à°µà°¾à°¹à°¨à°¦à°¾à°°à±à°²à±" #: contrib/admin/templates/admin/base_site.html:7 msgid "Django administration" -msgstr "à°¡à±à°™à°¾à°‚గొ నిరà±à°µà°¾à°¹à°¨" +msgstr "à°¡à±à°œà°¾à°‚గొ నిరà±à°µà°¾à°¹à°¨" #: contrib/admin/templates/admin/500.html:4 msgid "Server error" @@ -782,16 +782,16 @@ msgstr "సరà±à°µà°°à± తపà±à°ªà± (500)" 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 "తపà±à°ªà± ఙరిగిండి . దానిని నిరà±à°µà°¾à°¹à°¨à°¾à°§à°¿à°•ారà±à°²à± à°•à°¿ à°ˆ మెయిలౠచేయబడà±à°¡à°¡à°¿,మీ ఓపిక à°•à°¿ à°§à°¨à±à°¯à°µà°¾à°¦à°®à±à°²à±" +msgstr "తపà±à°ªà± జరిగిండి . దానిని నిరà±à°µà°¾à°¹à°¨à°¾à°§à°¿à°•ారà±à°²à± à°•à°¿ à°ˆ మెయిలౠచేయబడà±à°¡à°¡à°¿,మీ ఓపిక à°•à°¿ à°§à°¨à±à°¯à°µà°¾à°¦à°®à±à°²à±" #: contrib/admin/templates/admin/404.html:4 #: contrib/admin/templates/admin/404.html:8 msgid "Page not found" -msgstr "పేఙి దొరకలేదà±" +msgstr "పేజి దొరకలేదà±" #: contrib/admin/templates/admin/404.html:10 msgid "We're sorry, but the requested page could not be found." -msgstr "à°•à±à°·à°®à°¿à°‚à°šà°‚à°¡à°¿ మీరౠకోరిన పేఙి దొరకలేడà±" +msgstr "à°•à±à°·à°®à°¿à°‚à°šà°‚à°¡à°¿ మీరౠకోరిన పేజి దొరకలేడà±" #: contrib/admin/templates/admin/index.html:17 #, python-format @@ -801,12 +801,12 @@ msgstr "మొడలౠలౠ%(name)లో దొరికే à°…à°ªà±à°ªà± #: contrib/admin/templates/admin/index.html:18 #, python-format msgid "%(name)s" -msgstr "" +msgstr "%(name)à°²à±" #: contrib/admin/templates/admin/index.html:28 #: contrib/admin/templates/admin/change_form.html:15 msgid "Add" -msgstr "ఙత చేయి" +msgstr "జత చేయి" #: contrib/admin/templates/admin/index.html:34 msgid "Change" @@ -831,7 +831,7 @@ msgstr "à°à°®à°¿ దొరకలేదà±" #: contrib/admin/templates/admin/change_list.html:11 #, python-format msgid "Add %(name)s" -msgstr "%(name)లౠఙత చేయà±" +msgstr "%(name)లౠజత చేయà±" #: contrib/admin/templates/admin/login.html:22 msgid "Have you forgotten your password?" @@ -943,7 +943,7 @@ msgstr "" #: contrib/admin/templates/admin/auth/user/add_form.html:12 msgid "Username" -msgstr "యూఙరౠపేరà±" +msgstr "యూజరౠపేరà±" #: contrib/admin/templates/admin/auth/user/add_form.html:18 msgid "Password" @@ -967,7 +967,7 @@ msgstr "పాసౠవరà±à°¡à± మారà±à°ªà±" #: contrib/admin/templates/registration/password_change_done.html:6 #: contrib/admin/templates/registration/password_change_done.html:10 msgid "Password change successful" -msgstr "పాసౠవరà±à°¡à± మారà±à°ªà± ఙయపà±à°°à°¦à°®à±ˆà°‚à°¡à°¿ " +msgstr "పాసౠవరà±à°¡à± మారà±à°ªà± జయపà±à°°à°¦à°®à±ˆà°‚à°¡à°¿ " #: contrib/admin/templates/registration/password_change_done.html:12 msgid "Your password was changed." @@ -1005,7 +1005,7 @@ msgstr "మళà±à°³à±€ లాగౠఇనౠఅవà±à°µà°‚à°¡à°¿" #: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:10 msgid "Password reset successful" -msgstr "పాసౠవరà±à°¡à± రీసెటౠఙయపà±à°°à°¦à°®à±ˆà°‚à°¡à°¿" +msgstr "పాసౠవరà±à°¡à± రీసెటౠజయపà±à°°à°¦à°®à±ˆà°‚à°¡à°¿" #: contrib/admin/templates/registration/password_reset_done.html:12 msgid "" @@ -1051,11 +1051,11 @@ 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 "నిసà±à°¸à°‚దేహమౠగా à°ˆ పేఙి à°•à± à°•à°¿ వెళà±à°³à°¿ పాసౠవరà±à°¡à± మారà±à°šà±à°•ోండి " +msgstr "నిసà±à°¸à°‚దేహమౠగా à°ˆ పేజి à°•à± à°•à°¿ వెళà±à°³à°¿ పాసౠవరà±à°¡à± మారà±à°šà±à°•ోండి " #: contrib/admin/templates/registration/password_reset_email.html:11 msgid "Your username, in case you've forgotten:" -msgstr "మీ యూఙరౠపేరà±, à°’à°• వేళ మరà±à°šà°¿à°ªà±‹à°¯à°¿ ఉంటే " +msgstr "మీ యూజరౠపేరà±, à°’à°• వేళ మరà±à°šà°¿à°ªà±‹à°¯à°¿ ఉంటే " #: contrib/admin/templates/registration/password_reset_email.html:13 msgid "Thanks for using our site!" @@ -1103,19 +1103,19 @@ msgstr "వసà±à°¤à±à°µà± ఇడి చూడండి" msgid "" "Shows the content-type and unique ID for pages that represent a single " "object." -msgstr "వసà±à°¤à±à°µà±" +msgstr "" #: contrib/admin/templates/admin_doc/bookmarklets.html:25 msgid "Edit this object (current window)" -msgstr "వసà±à°¤à±à°µà±" +msgstr "వసà±à°¤à±à°µà± ని మారà±à°šà°‚à°¡à°¿ (à°ªà±à°°à°¸à±à°¤à±à°¤ విండొ)" #: contrib/admin/templates/admin_doc/bookmarklets.html:26 msgid "Jumps to the admin page for pages that represent a single object." -msgstr "వసà±à°¤à±à°µà±" +msgstr "" #: contrib/admin/templates/admin_doc/bookmarklets.html:28 msgid "Edit this object (new window)" -msgstr "వసà±à°¤à±à°µà±" +msgstr "వసà±à°¤à±à°µà± ని మారà±à°šà°‚à°¡à°¿(కొతà±à°¤ విండొ) " #: contrib/admin/templates/admin_doc/bookmarklets.html:29 msgid "As above, but opens the admin page in a new window." @@ -1197,7 +1197,7 @@ msgstr "నమొదౠచేయటమౠఅవసరం" #: contrib/flatpages/models.py:14 msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "ఇది చెకౠచేసి ఉంటే కేవలం లాగà±à°—డౠఇనౠయూఙరà±à°²à± పేఙి చూడలేసà±à°¤à°¾à°°à±" +msgstr "ఇది చెకౠచేసి ఉంటే కేవలం లాగà±à°—డౠఇనౠయూజరà±à°²à± పేజి చూడలేసà±à°¤à°¾à°°à±" #: contrib/flatpages/models.py:18 msgid "flat page" @@ -1237,7 +1237,7 @@ msgstr "à°—à±à°‚à°ªà±à°²à±" #: contrib/auth/models.py:90 msgid "username" -msgstr "యూఙరౠపేరà±" +msgstr "యూజరౠపేరà±" #: contrib/auth/models.py:90 msgid "" @@ -1309,15 +1309,15 @@ msgstr "" #: contrib/auth/models.py:102 msgid "user permissions" -msgstr "యూఙరౠఅనà±à°®à°¤à±à°²à±" +msgstr "యూజరౠఅనà±à°®à°¤à±à°²à±" #: contrib/auth/models.py:105 msgid "user" -msgstr "యూఙరà±" +msgstr "యూజరà±" #: contrib/auth/models.py:106 msgid "users" -msgstr "యూఙరà±à°²à±" +msgstr "యూజరà±à°²à±" #: contrib/auth/models.py:111 msgid "Personal info" @@ -1427,7 +1427,7 @@ msgstr "ఆదివారమà±" #: utils/dates.py:14 msgid "January" -msgstr "ఙానà±à°µà°°à°¿ " +msgstr "జానà±à°µà°°à°¿ " #: utils/dates.py:14 msgid "February" @@ -1447,11 +1447,11 @@ msgstr "మే" #: utils/dates.py:14 utils/dates.py:27 msgid "June" -msgstr "ఙూనà±" +msgstr "జూనà±" #: utils/dates.py:15 utils/dates.py:27 msgid "July" -msgstr "à°™à±à°²à±ˆ" +msgstr "à°œà±à°²à±ˆ" #: utils/dates.py:15 msgid "August" @@ -1475,7 +1475,7 @@ msgstr "డిసెంబరà±" #: utils/dates.py:19 msgid "jan" -msgstr "ఙానà±" +msgstr "జానà±" #: utils/dates.py:19 msgid "feb" @@ -1495,11 +1495,11 @@ msgstr "మే" #: utils/dates.py:19 msgid "jun" -msgstr "ఙూనà±" +msgstr "జూనà±" #: utils/dates.py:20 msgid "jul" -msgstr "à°™à±à°²à±" +msgstr "à°œà±à°²à±" #: utils/dates.py:20 msgid "aug" @@ -1523,7 +1523,7 @@ msgstr "à°¡à°¿à°¸à±" #: utils/dates.py:27 msgid "Jan." -msgstr "ఙానà±" +msgstr "జానà±" #: utils/dates.py:27 msgid "Feb." @@ -1570,8 +1570,8 @@ msgstr[1] "వారాలà±" #: utils/timesince.py:15 msgid "day" msgid_plural "days" -msgstr[0] "రోఙà±" -msgstr[1] "రోఙà±à°²à±" +msgstr[0] "రోజà±" +msgstr[1] "రోజà±à°²à±" #: utils/timesince.py:16 msgid "hour" @@ -1615,7 +1615,7 @@ msgstr "బెంగాలి" #: conf/global_settings.py:41 msgid "Czech" -msgstr "à°•à±à°™à±†à°–à±" +msgstr "à°•à±à°œà±†à°–à±" #: conf/global_settings.py:42 msgid "Welsh" @@ -1627,7 +1627,7 @@ msgstr "డానిశà±" #: conf/global_settings.py:44 msgid "German" -msgstr "ఙెరà±à°®à°¨à±" +msgstr "జెరà±à°®à°¨à±" #: conf/global_settings.py:45 msgid "Greek" @@ -1643,7 +1643,7 @@ msgstr "à°¸à±à°ªà°¾à°¨à°¿à°·à±" #: conf/global_settings.py:48 msgid "Argentinean Spanish" -msgstr "à°…à°°à±à°™à°‚టీనా à°¸à±à°ªà°¾à°¨à°¿à°·à±" +msgstr "à°…à°°à±à°œà°‚టీనా à°¸à±à°ªà°¾à°¨à°¿à°·à±" #: conf/global_settings.py:49 msgid "Finnish" @@ -1675,7 +1675,7 @@ msgstr "ఇటాలియవà±" #: conf/global_settings.py:56 msgid "Japanese" -msgstr "ఙపనీసà±" +msgstr "జపనీసà±" #: conf/global_settings.py:57 msgid "Dutch" @@ -1683,11 +1683,11 @@ msgstr "à°¡à°Ÿà±à°šà±" #: conf/global_settings.py:58 msgid "Norwegian" -msgstr "నారà±à°µà±€à°™à°¿à°¯à°¨à±" +msgstr "నారà±à°µà±€à°œà°¿à°¯à°¨à±" #: conf/global_settings.py:59 msgid "Brazilian" -msgstr "à°¬à±à°°à°™à±€à°²à°¿à°¯à°¨à±" +msgstr "à°¬à±à°°à°œà±€à°²à°¿à°¯à°¨à±" #: conf/global_settings.py:60 msgid "Romanian" @@ -1865,7 +1865,7 @@ msgstr "" #: core/validators.py:242 msgid "Enter a valid U.S. state abbreviation." -msgstr "దయచేసి సరైన à°…à°—à±à°° రాఙà±à°¯ సంకà±à°·à±‡à°ªà°®à± చేసిన రాషà±à°Ÿà±à°°à°®à± పేరౠఇవà±à°µà°‚à°¡à°¿" +msgstr "దయచేసి సరైన à°…à°—à±à°° రాజà±à°¯ సంకà±à°·à±‡à°ªà°®à± చేసిన రాషà±à°Ÿà±à°°à°®à± పేరౠఇవà±à°µà°‚à°¡à°¿" #: core/validators.py:256 #, python-format @@ -2004,12 +2004,12 @@ msgstr "" #: views/generic/create_update.py:43 #, python-format msgid "The %(verbose_name)s was created successfully." -msgstr "%(verbose_name)లౠఙయపà±à°°à°¦à°‚à°—à°¾ తయారయింది" +msgstr "%(verbose_name)లౠజయపà±à°°à°¦à°‚à°—à°¾ తయారయింది" #: views/generic/create_update.py:117 #, python-format msgid "The %(verbose_name)s was updated successfully." -msgstr "%(verbose_name)లౠఙయపà±à°°à°¦à°‚à°—à°¾ @@" +msgstr "%(verbose_name)లౠజయపà±à°°à°¦à°‚à°—à°¾ @@" #: views/generic/create_update.py:184 #, python-format diff --git a/django/conf/urls/defaults.py b/django/conf/urls/defaults.py index 17fe603d96..49bc176ef3 100644 --- a/django/conf/urls/defaults.py +++ b/django/conf/urls/defaults.py @@ -1,19 +1,25 @@ from django.core.urlresolvers import RegexURLPattern, RegexURLResolver -__all__ = ['handler404', 'handler500', 'include', 'patterns'] +__all__ = ['handler404', 'handler500', 'include', 'patterns', 'url'] handler404 = 'django.views.defaults.page_not_found' handler500 = 'django.views.defaults.server_error' include = lambda urlconf_module: [urlconf_module] -def patterns(prefix, *tuples): +def patterns(prefix, *args): pattern_list = [] - for t in tuples: - regex, view_or_include = t[:2] - default_kwargs = t[2:] - if type(view_or_include) == list: - pattern_list.append(RegexURLResolver(regex, view_or_include[0], *default_kwargs)) + for t in args: + if isinstance(t, (list, tuple)): + pattern_list.append(url(prefix=prefix, *t)) else: - pattern_list.append(RegexURLPattern(regex, prefix and (prefix + '.' + view_or_include) or view_or_include, *default_kwargs)) + pattern_list.append(t) return pattern_list + +def url(regex, view, kwargs=None, name=None, prefix=''): + if type(view) == list: + # For include(...) processing. + return RegexURLResolver(regex, view[0], kwargs) + else: + return RegexURLPattern(regex, prefix and (prefix + '.' + view) or view, kwargs, name) + diff --git a/django/contrib/comments/models.py b/django/contrib/comments/models.py index 90a84baaff..fa6c6aa363 100644 --- a/django/contrib/comments/models.py +++ b/django/contrib/comments/models.py @@ -209,7 +209,7 @@ class FreeComment(models.Model): class KarmaScoreManager(models.Manager): def vote(self, user_id, comment_id, score): try: - karma = self.objects.get(comment__pk=comment_id, user__pk=user_id) + karma = self.get(comment__pk=comment_id, user__pk=user_id) except self.model.DoesNotExist: karma = self.model(None, user_id=user_id, comment_id=comment_id, score=score, scored_date=datetime.datetime.now()) karma.save() diff --git a/django/contrib/humanize/templatetags/humanize.py b/django/contrib/humanize/templatetags/humanize.py index a399e7eef1..a16cbcc9bb 100644 --- a/django/contrib/humanize/templatetags/humanize.py +++ b/django/contrib/humanize/templatetags/humanize.py @@ -43,7 +43,7 @@ def intword(value): if value < 1000000: return value if value < 1000000000: - new_value = value / 1000000.0 + new_value = value / 1000000.0 return ngettext('%(value).1f million', '%(value).1f million', new_value) % {'value': new_value} if value < 1000000000000: new_value = value / 1000000000.0 diff --git a/django/contrib/localflavor/br/__init__.py b/django/contrib/localflavor/br/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/localflavor/br/br_states.py b/django/contrib/localflavor/br/br_states.py new file mode 100644 index 0000000000..c6ce0a1bb7 --- /dev/null +++ b/django/contrib/localflavor/br/br_states.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +""" +A brazilian mapping of state misspellings/abbreviations to normalized +abbreviations, and an alphabetical list of states for use as `choices +in a formfield. + +This exists in this standalone file so that it's only imported into +memory when explicitly needed. +""" + +STATE_CHOICES = ( + ('AC', 'Acre'), + ('AL', 'Alagoas'), + ('AP', u'Amapá'), + ('AM', 'Amazonas'), + ('BA', 'Bahia'), + ('CE', u'Ceará'), + ('DF', 'Distrito Federal'), + ('ES', u'Espírito Santo'), + ('GO', u'Goiás'), + ('MA', u'Maranhão'), + ('MT', 'Mato Grosso'), + ('MS', 'Mato Grosso do Sul'), + ('MG', 'Minas Gerais'), + ('PA', u'Pará'), + ('PB', u'Paraíba'), + ('PR', u'Paraná'), + ('PE', 'Pernambuco'), + ('PI', u'Piauí'), + ('RJ', 'Rio de Janeiro'), + ('RN', 'Rio Grande do Norte'), + ('RS', 'Rio Grande do Sul'), + ('RO', u'Rondônia'), + ('RR', 'Roraima'), + ('SC', 'Santa Catarina'), + ('SP', u'São Paulo'), + ('SE', 'Sergipe'), + ('TO', 'Tocantins'), +) diff --git a/django/contrib/localflavor/br/forms.py b/django/contrib/localflavor/br/forms.py new file mode 100644 index 0000000000..d3ca28f053 --- /dev/null +++ b/django/contrib/localflavor/br/forms.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +""" +BR-specific Form helpers +""" + +from django.newforms import ValidationError +from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES +from django.newforms.util import smart_unicode +from django.utils.translation import gettext +import re + +phone_digits_re = re.compile(r'^(\d{2})[-\.]?(\d{4})[-\.]?(\d{4})$') + +class BRZipCodeField(RegexField): + def __init__(self, *args, **kwargs): + super(BRZipCodeField, self).__init__(r'^\d{5}-\d{3}$', + max_length=None, min_length=None, + error_message=u'Informe um código postal no formato XXXXX-XXX.', + *args, **kwargs) + +class BRPhoneNumberField(Field): + def clean(self, value): + super(BRPhoneNumberField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + value = re.sub('(\(|\)|\s+)', '', smart_unicode(value)) + m = phone_digits_re.search(value) + if m: + return u'%s-%s-%s' % (m.group(1), m.group(2), m.group(3)) + raise ValidationError(u'Números de telefone devem estar no formato XX-XXXX-XXXX.') + +class BRStateSelect(Select): + """ + A Select widget that uses a list of brazilian states/territories + as its choices. + """ + def __init__(self, attrs=None): + from br_states import STATE_CHOICES # relative import + super(BRStateSelect, self).__init__(attrs, choices=STATE_CHOICES) diff --git a/django/contrib/localflavor/fi/__init__.py b/django/contrib/localflavor/fi/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/localflavor/fi/fi_municipalities.py b/django/contrib/localflavor/fi/fi_municipalities.py new file mode 100644 index 0000000000..965a52d327 --- /dev/null +++ b/django/contrib/localflavor/fi/fi_municipalities.py @@ -0,0 +1,427 @@ +# -*- coding: utf-8 -*- +""" +An alphabetical list of Finnish municipalities for use as `choices` in a +formfield. + +This exists in this standalone file so that it's only imported into memory +when explicitly needed. +""" + +MUNICIPALITY_CHOICES = ( + ('akaa', u"Akaa"), + ('alaharma', u"Alahärmä"), + ('alajarvi', u"Alajärvi"), + ('alastaro', u"Alastaro"), + ('alavieska', u"Alavieska"), + ('alavus', u"Alavus"), + ('anjalankoski', u"Anjalankoski"), + ('artjarvi', u"Artjärvi"), + ('asikkala', u"Asikkala"), + ('askainen', u"Askainen"), + ('askola', u"Askola"), + ('aura', u"Aura"), + ('brando', u"Brändö"), + ('dragsfjard', u"Dragsfjärd"), + ('eckero', u"Eckerö"), + ('elimaki', u"Elimäki"), + ('eno', u"Eno"), + ('enonkoski', u"Enonkoski"), + ('enontekio', u"Enontekiö"), + ('espoo', u"Espoo"), + ('eura', u"Eura"), + ('eurajoki', u"Eurajoki"), + ('evijarvi', u"Evijärvi"), + ('finstrom', u"Finström"), + ('forssa', u"Forssa"), + ('foglo', u"Föglö"), + ('geta', u"Geta"), + ('haapajarvi', u"Haapajärvi"), + ('haapavesi', u"Haapavesi"), + ('hailuoto', u"Hailuoto"), + ('halikko', u"Halikko"), + ('halsua', u"Halsua"), + ('hamina', u"Hamina"), + ('hammarland', u"Hammarland"), + ('hankasalmi', u"Hankasalmi"), + ('hanko', u"Hanko"), + ('harjavalta', u"Harjavalta"), + ('hartola', u"Hartola"), + ('hattula', u"Hattula"), + ('hauho', u"Hauho"), + ('haukipudas', u"Haukipudas"), + ('hausjarvi', u"Hausjärvi"), + ('heinola', u"Heinola"), + ('heinavesi', u"Heinävesi"), + ('helsinki', u"Helsinki"), + ('himanka', u"Himanka"), + ('hirvensalmi', u"Hirvensalmi"), + ('hollola', u"Hollola"), + ('honkajoki', u"Honkajoki"), + ('houtskari', u"Houtskari"), + ('huittinen', u"Huittinen"), + ('humppila', u"Humppila"), + ('hyrynsalmi', u"Hyrynsalmi"), + ('hyvinkaa', u"Hyvinkää"), + ('hameenkoski', u"Hämeenkoski"), + ('hameenkyro', u"Hämeenkyrö"), + ('hameenlinna', u"Hämeenlinna"), + ('ii', u"Ii"), + ('iisalmi', u"Iisalmi"), + ('iitti', u"Iitti"), + ('ikaalinen', u"Ikaalinen"), + ('ilmajoki', u"Ilmajoki"), + ('ilomantsi', u"Ilomantsi"), + ('imatra', u"Imatra"), + ('inari', u"Inari"), + ('inio', u"Iniö"), + ('inkoo', u"Inkoo"), + ('isojoki', u"Isojoki"), + ('isokyro', u"Isokyrö"), + ('jaala', u"Jaala"), + ('jalasjarvi', u"Jalasjärvi"), + ('janakkala', u"Janakkala"), + ('joensuu', u"Joensuu"), + ('jokioinen', u"Jokioinen"), + ('jomala', u"Jomala"), + ('joroinen', u"Joroinen"), + ('joutsa', u"Joutsa"), + ('joutseno', u"Joutseno"), + ('juankoski', u"Juankoski"), + ('jurva', u"Jurva"), + ('juuka', u"Juuka"), + ('juupajoki', u"Juupajoki"), + ('juva', u"Juva"), + ('jyvaskyla', u"Jyväskylä"), + ('jyvaskylan_mlk', u"Jyväskylän maalaiskunta"), + ('jamijarvi', u"Jämijärvi"), + ('jamsa', u"Jämsä"), + ('jamsankoski', u"Jämsänkoski"), + ('jarvenpaa', u"Järvenpää"), + ('kaarina', u"Kaarina"), + ('kaavi', u"Kaavi"), + ('kajaani', u"Kajaani"), + ('kalajoki', u"Kalajoki"), + ('kalvola', u"Kalvola"), + ('kangasala', u"Kangasala"), + ('kangasniemi', u"Kangasniemi"), + ('kankaanpaa', u"Kankaanpää"), + ('kannonkoski', u"Kannonkoski"), + ('kannus', u"Kannus"), + ('karijoki', u"Karijoki"), + ('karjaa', u"Karjaa"), + ('karjalohja', u"Karjalohja"), + ('karkkila', u"Karkkila"), + ('karstula', u"Karstula"), + ('karttula', u"Karttula"), + ('karvia', u"Karvia"), + ('kaskinen', u"Kaskinen"), + ('kauhajoki', u"Kauhajoki"), + ('kauhava', u"Kauhava"), + ('kauniainen', u"Kauniainen"), + ('kaustinen', u"Kaustinen"), + ('keitele', u"Keitele"), + ('kemi', u"Kemi"), + ('kemijarvi', u"Kemijärvi"), + ('keminmaa', u"Keminmaa"), + ('kemio', u"Kemiö"), + ('kempele', u"Kempele"), + ('kerava', u"Kerava"), + ('kerimaki', u"Kerimäki"), + ('kestila', u"Kestilä"), + ('kesalahti', u"Kesälahti"), + ('keuruu', u"Keuruu"), + ('kihnio', u"Kihniö"), + ('kiikala', u"Kiikala"), + ('kiikoinen', u"Kiikoinen"), + ('kiiminki', u"Kiiminki"), + ('kinnula', u"Kinnula"), + ('kirkkonummi', u"Kirkkonummi"), + ('kisko', u"Kisko"), + ('kitee', u"Kitee"), + ('kittila', u"Kittilä"), + ('kiukainen', u"Kiukainen"), + ('kiuruvesi', u"Kiuruvesi"), + ('kivijarvi', u"Kivijärvi"), + ('kokemaki', u"Kokemäki"), + ('kokkola', u"Kokkola"), + ('kolari', u"Kolari"), + ('konnevesi', u"Konnevesi"), + ('kontiolahti', u"Kontiolahti"), + ('korpilahti', u"Korpilahti"), + ('korppoo', u"Korppoo"), + ('korsnas', u"Korsnäs"), + ('kortesjarvi', u"Kortesjärvi"), + ('koskitl', u"KoskiTl"), + ('kotka', u"Kotka"), + ('kouvola', u"Kouvola"), + ('kristiinankaupunki', u"Kristiinankaupunki"), + ('kruunupyy', u"Kruunupyy"), + ('kuhmalahti', u"Kuhmalahti"), + ('kuhmo', u"Kuhmo"), + ('kuhmoinen', u"Kuhmoinen"), + ('kumlinge', u"Kumlinge"), + ('kuopio', u"Kuopio"), + ('kuortane', u"Kuortane"), + ('kurikka', u"Kurikka"), + ('kuru', u"Kuru"), + ('kustavi', u"Kustavi"), + ('kuusamo', u"Kuusamo"), + ('kuusankoski', u"Kuusankoski"), + ('kuusjoki', u"Kuusjoki"), + ('kylmakoski', u"Kylmäkoski"), + ('kyyjarvi', u"Kyyjärvi"), + ('kalvia', u"Kälviä"), + ('karkola', u"Kärkölä"), + ('karsamaki', u"Kärsämäki"), + ('kokar', u"Kökar"), + ('koylio', u"Köyliö"), + ('lahti', u"Lahti"), + ('laihia', u"Laihia"), + ('laitila', u"Laitila"), + ('lammi', u"Lammi"), + ('lapinjarvi', u"Lapinjärvi"), + ('lapinlahti', u"Lapinlahti"), + ('lappajarvi', u"Lappajärvi"), + ('lappeenranta', u"Lappeenranta"), + ('lappi', u"Lappi"), + ('lapua', u"Lapua"), + ('laukaa', u"Laukaa"), + ('lavia', u"Lavia"), + ('lehtimaki', u"Lehtimäki"), + ('leivonmaki', u"Leivonmäki"), + ('lemi', u"Lemi"), + ('lemland', u"Lemland"), + ('lempaala', u"Lempäälä"), + ('lemu', u"Lemu"), + ('leppavirta', u"Leppävirta"), + ('lestijarvi', u"Lestijärvi"), + ('lieksa', u"Lieksa"), + ('lieto', u"Lieto"), + ('liljendal', u"Liljendal"), + ('liminka', u"Liminka"), + ('liperi', u"Liperi"), + ('lohja', u"Lohja"), + ('lohtaja', u"Lohtaja"), + ('loimaa', u"Loimaa"), + ('loppi', u"Loppi"), + ('loviisa', u"Loviisa"), + ('luhanka', u"Luhanka"), + ('lumijoki', u"Lumijoki"), + ('lumparland', u"Lumparland"), + ('luoto', u"Luoto"), + ('luumaki', u"Luumäki"), + ('luvia', u"Luvia"), + ('maalahti', u"Maalahti"), + ('maaninka', u"Maaninka"), + ('maarianhamina', u"Maarianhamina"), + ('marttila', u"Marttila"), + ('masku', u"Masku"), + ('mellila', u"Mellilä"), + ('merijarvi', u"Merijärvi"), + ('merikarvia', u"Merikarvia"), + ('merimasku', u"Merimasku"), + ('miehikkala', u"Miehikkälä"), + ('mikkeli', u"Mikkeli"), + ('mouhijarvi', u"Mouhijärvi"), + ('muhos', u"Muhos"), + ('multia', u"Multia"), + ('muonio', u"Muonio"), + ('mustasaari', u"Mustasaari"), + ('muurame', u"Muurame"), + ('muurla', u"Muurla"), + ('mynamaki', u"Mynämäki"), + ('myrskyla', u"Myrskylä"), + ('mantsala', u"Mäntsälä"), + ('mantta', u"Mänttä"), + ('mantyharju', u"Mäntyharju"), + ('naantali', u"Naantali"), + ('nakkila', u"Nakkila"), + ('nastola', u"Nastola"), + ('nauvo', u"Nauvo"), + ('nilsia', u"Nilsiä"), + ('nivala', u"Nivala"), + ('nokia', u"Nokia"), + ('noormarkku', u"Noormarkku"), + ('nousiainen', u"Nousiainen"), + ('nummi-pusula', u"Nummi-Pusula"), + ('nurmes', u"Nurmes"), + ('nurmijarvi', u"Nurmijärvi"), + ('nurmo', u"Nurmo"), + ('narpio', u"Närpiö"), + ('oravainen', u"Oravainen"), + ('orimattila', u"Orimattila"), + ('oripaa', u"Oripää"), + ('orivesi', u"Orivesi"), + ('oulainen', u"Oulainen"), + ('oulu', u"Oulu"), + ('oulunsalo', u"Oulunsalo"), + ('outokumpu', u"Outokumpu"), + ('padasjoki', u"Padasjoki"), + ('paimio', u"Paimio"), + ('paltamo', u"Paltamo"), + ('parainen', u"Parainen"), + ('parikkala', u"Parikkala"), + ('parkano', u"Parkano"), + ('pedersore', u"Pedersöre"), + ('pelkosenniemi', u"Pelkosenniemi"), + ('pello', u"Pello"), + ('perho', u"Perho"), + ('pernaja', u"Pernaja"), + ('pernio', u"Perniö"), + ('pertteli', u"Pertteli"), + ('pertunmaa', u"Pertunmaa"), + ('petajavesi', u"Petäjävesi"), + ('pieksamaki', u"Pieksämäki"), + ('pielavesi', u"Pielavesi"), + ('pietarsaari', u"Pietarsaari"), + ('pihtipudas', u"Pihtipudas"), + ('piikkio', u"Piikkiö"), + ('piippola', u"Piippola"), + ('pirkkala', u"Pirkkala"), + ('pohja', u"Pohja"), + ('polvijarvi', u"Polvijärvi"), + ('pomarkku', u"Pomarkku"), + ('pori', u"Pori"), + ('pornainen', u"Pornainen"), + ('porvoo', u"Porvoo"), + ('posio', u"Posio"), + ('pudasjarvi', u"Pudasjärvi"), + ('pukkila', u"Pukkila"), + ('pulkkila', u"Pulkkila"), + ('punkaharju', u"Punkaharju"), + ('punkalaidun', u"Punkalaidun"), + ('puolanka', u"Puolanka"), + ('puumala', u"Puumala"), + ('pyhtaa', u"Pyhtää"), + ('pyhajoki', u"Pyhäjoki"), + ('pyhajarvi', u"Pyhäjärvi"), + ('pyhanta', u"Pyhäntä"), + ('pyharanta', u"Pyhäranta"), + ('pyhaselka', u"Pyhäselkä"), + ('pylkonmaki', u"Pylkönmäki"), + ('palkane', u"Pälkäne"), + ('poytya', u"Pöytyä"), + ('raahe', u"Raahe"), + ('raisio', u"Raisio"), + ('rantasalmi', u"Rantasalmi"), + ('rantsila', u"Rantsila"), + ('ranua', u"Ranua"), + ('rauma', u"Rauma"), + ('rautalampi', u"Rautalampi"), + ('rautavaara', u"Rautavaara"), + ('rautjarvi', u"Rautjärvi"), + ('reisjarvi', u"Reisjärvi"), + ('renko', u"Renko"), + ('riihimaki', u"Riihimäki"), + ('ristiina', u"Ristiina"), + ('ristijarvi', u"Ristijärvi"), + ('rovaniemi', u"Rovaniemi"), + ('ruokolahti', u"Ruokolahti"), + ('ruotsinpyhtaa', u"Ruotsinpyhtää"), + ('ruovesi', u"Ruovesi"), + ('rusko', u"Rusko"), + ('rymattyla', u"Rymättylä"), + ('raakkyla', u"Rääkkylä"), + ('saarijarvi', u"Saarijärvi"), + ('salla', u"Salla"), + ('salo', u"Salo"), + ('saltvik', u"Saltvik"), + ('sammatti', u"Sammatti"), + ('sauvo', u"Sauvo"), + ('savitaipale', u"Savitaipale"), + ('savonlinna', u"Savonlinna"), + ('savonranta', u"Savonranta"), + ('savukoski', u"Savukoski"), + ('seinajoki', u"Seinäjoki"), + ('sievi', u"Sievi"), + ('siikainen', u"Siikainen"), + ('siikajoki', u"Siikajoki"), + ('siilinjarvi', u"Siilinjärvi"), + ('simo', u"Simo"), + ('sipoo', u"Sipoo"), + ('siuntio', u"Siuntio"), + ('sodankyla', u"Sodankylä"), + ('soini', u"Soini"), + ('somero', u"Somero"), + ('sonkajarvi', u"Sonkajärvi"), + ('sotkamo', u"Sotkamo"), + ('sottunga', u"Sottunga"), + ('sulkava', u"Sulkava"), + ('sund', u"Sund"), + ('suomenniemi', u"Suomenniemi"), + ('suomusjarvi', u"Suomusjärvi"), + ('suomussalmi', u"Suomussalmi"), + ('suonenjoki', u"Suonenjoki"), + ('sysma', u"Sysmä"), + ('sakyla', u"Säkylä"), + ('sarkisalo', u"Särkisalo"), + ('taipalsaari', u"Taipalsaari"), + ('taivalkoski', u"Taivalkoski"), + ('taivassalo', u"Taivassalo"), + ('tammela', u"Tammela"), + ('tammisaari', u"Tammisaari"), + ('tampere', u"Tampere"), + ('tarvasjoki', u"Tarvasjoki"), + ('tervo', u"Tervo"), + ('tervola', u"Tervola"), + ('teuva', u"Teuva"), + ('tohmajarvi', u"Tohmajärvi"), + ('toholampi', u"Toholampi"), + ('toivakka', u"Toivakka"), + ('tornio', u"Tornio"), + ('turku', u"Turku"), + ('tuulos', u"Tuulos"), + ('tuusniemi', u"Tuusniemi"), + ('tuusula', u"Tuusula"), + ('tyrnava', u"Tyrnävä"), + ('toysa', u"Töysä"), + ('ullava', u"Ullava"), + ('ulvila', u"Ulvila"), + ('urjala', u"Urjala"), + ('utajarvi', u"Utajärvi"), + ('utsjoki', u"Utsjoki"), + ('uurainen', u"Uurainen"), + ('uusikaarlepyy', u"Uusikaarlepyy"), + ('uusikaupunki', u"Uusikaupunki"), + ('vaala', u"Vaala"), + ('vaasa', u"Vaasa"), + ('vahto', u"Vahto"), + ('valkeakoski', u"Valkeakoski"), + ('valkeala', u"Valkeala"), + ('valtimo', u"Valtimo"), + ('vammala', u"Vammala"), + ('vampula', u"Vampula"), + ('vantaa', u"Vantaa"), + ('varkaus', u"Varkaus"), + ('varpaisjarvi', u"Varpaisjärvi"), + ('vehmaa', u"Vehmaa"), + ('velkua', u"Velkua"), + ('vesanto', u"Vesanto"), + ('vesilahti', u"Vesilahti"), + ('veteli', u"Veteli"), + ('vierema', u"Vieremä"), + ('vihanti', u"Vihanti"), + ('vihti', u"Vihti"), + ('viitasaari', u"Viitasaari"), + ('vilppula', u"Vilppula"), + ('vimpeli', u"Vimpeli"), + ('virolahti', u"Virolahti"), + ('virrat', u"Virrat"), + ('vardo', u"VÃ¥rdö"), + ('vahakyro', u"Vähäkyrö"), + ('vastanfjard', u"Västanfjärd"), + ('voyri-maksamaa', u"Vöyri-Maksamaa"), + ('yliharma', u"Ylihärmä"), + ('yli-ii', u"Yli-Ii"), + ('ylikiiminki', u"Ylikiiminki"), + ('ylistaro', u"Ylistaro"), + ('ylitornio', u"Ylitornio"), + ('ylivieska', u"Ylivieska"), + ('ylamaa', u"Ylämaa"), + ('ylane', u"Yläne"), + ('ylojarvi', u"Ylöjärvi"), + ('ypaja', u"Ypäjä"), + ('aetsa', u"Äetsä"), + ('ahtari', u"Ähtäri"), + ('aanekoski', u"Äänekoski") +) \ No newline at end of file diff --git a/django/contrib/localflavor/fi/forms.py b/django/contrib/localflavor/fi/forms.py new file mode 100644 index 0000000000..a2b2eed5c2 --- /dev/null +++ b/django/contrib/localflavor/fi/forms.py @@ -0,0 +1,47 @@ +""" +FI-specific Form helpers +""" + +import re +from django.newforms import ValidationError +from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES +from django.utils.translation import gettext + +class FIZipCodeField(RegexField): + def __init__(self, *args, **kwargs): + super(FIZipCodeField, self).__init__(r'^\d{5}$', + max_length=None, min_length=None, + error_message=gettext(u'Enter a zip code in the format XXXXX.'), + *args, **kwargs) + +class FIMunicipalitySelect(Select): + """ + A Select widget that uses a list of Finnish municipalities as its choices. + """ + def __init__(self, attrs=None): + from fi_municipalities import MUNICIPALITY_CHOICES # relative import + super(FIMunicipalitySelect, self).__init__(attrs, choices=MUNICIPALITY_CHOICES) + +class FISocialSecurityNumber(Field): + def clean(self, value): + super(FISocialSecurityNumber, self).clean(value) + if value in EMPTY_VALUES: + return u'' + + checkmarks = "0123456789ABCDEFHJKLMNPRSTUVWXY" + result = re.match(r"""^ + (?P([0-2]\d|3[01]) + (0\d|1[012]) + (\d{2})) + [A+-] + (?P(\d{3})) + (?P[%s])$""" % checkmarks, value, re.VERBOSE | re.IGNORECASE) + if not result: + raise ValidationError(gettext(u'Enter a valid Finnish social security number.')) + checksum = int(result.groupdict()['date'] + result.groupdict()['serial']) + + if checkmarks[checksum % len(checkmarks)] == result.groupdict()['chechsum'].upper(): + return u'%s' % value.upper() + + raise ValidationError(gettext(u'Enter a valid Finnish social security number.')) + diff --git a/django/contrib/localflavor/it/__init__.py b/django/contrib/localflavor/it/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/localflavor/it/forms.py b/django/contrib/localflavor/it/forms.py new file mode 100644 index 0000000000..6760d91799 --- /dev/null +++ b/django/contrib/localflavor/it/forms.py @@ -0,0 +1,32 @@ +""" +IT-specific Form helpers +""" + +from django.newforms import ValidationError +from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES +from django.newforms.util import smart_unicode +from django.utils.translation import gettext +import re + +class ITZipCodeField(RegexField): + def __init__(self, *args, **kwargs): + super(ITZipCodeField, self).__init__(r'^\d{5}$', + max_length=None, min_length=None, + error_message=gettext(u'Enter a zip code in the format XXXXX.'), + *args, **kwargs) + +class ITRegionSelect(Select): + """ + A Select widget that uses a list of IT regions as its choices. + """ + def __init__(self, attrs=None): + from it_region import REGION_CHOICES # relative import + super(ITRegionSelect, self).__init__(attrs, choices=REGION_CHOICES) + +class ITProvinceSelect(Select): + """ + A Select widget that uses a list of IT regions as its choices. + """ + def __init__(self, attrs=None): + from it_province import PROVINCE_CHOICES # relative import + super(ITProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES) diff --git a/django/contrib/localflavor/it/it_province.py b/django/contrib/localflavor/it/it_province.py new file mode 100644 index 0000000000..1867191b31 --- /dev/null +++ b/django/contrib/localflavor/it/it_province.py @@ -0,0 +1,114 @@ +# -*- coding: utf-8 -* + +PROVINCE_CHOICES = ( + ('AG', 'Agrigento'), + ('AL', 'Alessandria'), + ('AN', 'Ancona'), + ('AO', 'Aosta'), + ('AR', 'Arezzo'), + ('AP', 'Ascoli Piceno'), + ('AT', 'Asti'), + ('AV', 'Avellino'), + ('BA', 'Bari'), +# ('BT', 'Barletta-Andria-Trani'), # active starting from 2009 + ('BL', 'Belluno'), + ('BN', 'Benevento'), + ('BG', 'Bergamo'), + ('BI', 'Biella'), + ('BO', 'Bologna'), + ('BZ', 'Bolzano/Bozen'), + ('BS', 'Brescia'), + ('BR', 'Brindisi'), + ('CA', 'Cagliari'), + ('CL', 'Caltanissetta'), + ('CB', 'Campobasso'), + ('CI', 'Carbonia-Iglesias'), + ('CE', 'Caserta'), + ('CT', 'Catania'), + ('CZ', 'Catanzaro'), + ('CH', 'Chieti'), + ('CO', 'Como'), + ('CS', 'Cosenza'), + ('CR', 'Cremona'), + ('KR', 'Crotone'), + ('CN', 'Cuneo'), + ('EN', 'Enna'), +# ('FM', 'Fermo'), # active starting from 2009 + ('FE', 'Ferrara'), + ('FI', 'Firenze'), + ('FG', 'Foggia'), + ('FC', 'Forlì-Cesena'), + ('FR', 'Frosinone'), + ('GE', 'Genova'), + ('GO', 'Gorizia'), + ('GR', 'Grosseto'), + ('IM', 'Imperia'), + ('IS', 'Isernia'), + ('SP', 'La Spezia'), + ('AQ', u'L’Acquila'), + ('LT', 'Latina'), + ('LE', 'Lecce'), + ('LC', 'Lecco'), + ('LI', 'Livorno'), + ('LO', 'Lodi'), + ('LU', 'Lucca'), + ('MC', 'Macerata'), + ('MN', 'Mantova'), + ('MS', 'Massa-Carrara'), + ('MT', 'Matera'), + ('VS', 'Medio Campidano'), + ('ME', 'Messina'), + ('MI', 'Milano'), + ('MO', 'Modena'), +# ('MB', 'Monza e Brianza'), # active starting from 2009 + ('NA', 'Napoli'), + ('NO', 'Novara'), + ('NU', 'Nuoro'), + ('OG', 'Ogliastra'), + ('OT', 'Olbia-Tempio'), + ('OR', 'Oristano'), + ('PD', 'Padova'), + ('PA', 'Palermo'), + ('PR', 'Parma'), + ('PV', 'Pavia'), + ('PG', 'Perugia'), + ('PU', 'Pesaro e Urbino'), + ('PE', 'Pescara'), + ('PC', 'Piacenza'), + ('PI', 'Pisa'), + ('PT', 'Pistoia'), + ('PN', 'Pordenone'), + ('PZ', 'Potenza'), + ('PO', 'Prato'), + ('RG', 'Ragusa'), + ('RA', 'Ravenna'), + ('RC', 'Reggio Calabria'), + ('RE', 'Reggio Emilia'), + ('RI', 'Rieti'), + ('RN', 'Rimini') + ('RM', 'Roma'), + ('RO', 'Rovigo'), + ('SA', 'Salerno'), + ('SS', 'Sassari'), + ('SV', 'Savona'), + ('SI', 'Siena'), + ('SR', 'Siracusa'), + ('SO', 'Sondrio'), + ('TA', 'Taranto'), + ('TE', 'Teramo'), + ('TR', 'Terni'), + ('TO', 'Torino'), + ('TP', 'Trapani'), + ('TN', 'Trento'), + ('TV', 'Treviso'), + ('TS', 'Trieste'), + ('UD', 'Udine'), + ('VA', 'Varese'), + ('VE', 'Venezia'), + ('VB', 'Verbano Cusio Ossola'), + ('VC', 'Vercelli'), + ('VR', 'Verona'), + ('VV', 'Vibo Valentia'), + ('VI', 'Vicenza'), + ('VT', 'Viterbo'), +) diff --git a/django/contrib/localflavor/it/it_region.py b/django/contrib/localflavor/it/it_region.py new file mode 100644 index 0000000000..0700b46ea8 --- /dev/null +++ b/django/contrib/localflavor/it/it_region.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -* + +REGION_CHOICES = ( + ('ABR', 'Abruzzo'), + ('BAS', 'Basilicata'), + ('CAL', 'Calabria'), + ('CAM', 'Campania'), + ('EMR', 'Emilia-Romagna'), + ('FVG', 'Friuli-Venezia Giulia'), + ('LAZ', 'Lazio'), + ('LIG', 'Liguria'), + ('LOM', 'Lombardia'), + ('MAR', 'Marche'), + ('MOL', 'Molise'), + ('PMN', 'Piemonte'), + ('PUG', 'Puglia'), + ('SAR', 'Sardegna'), + ('SIC', 'Sicilia'), + ('TOS', 'Toscana'), + ('TAA', 'Trentino-Alto Adige'), + ('UMB', 'Umbria'), + ('VAO', u'Valle d’Aosta'), + ('VEN', 'Veneto'), +) diff --git a/django/contrib/localflavor/no/__init__.py b/django/contrib/localflavor/no/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/localflavor/no/forms.py b/django/contrib/localflavor/no/forms.py new file mode 100644 index 0000000000..22099005b9 --- /dev/null +++ b/django/contrib/localflavor/no/forms.py @@ -0,0 +1,77 @@ +# -*- coding: iso-8859-1 -*- +""" +Norwegian-specific Form helpers +""" + +import re, datetime +from django.newforms import ValidationError +from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES +from django.utils.translation import gettext + +class NOZipCodeField(RegexField): + def __init__(self, *args, **kwargs): + super(NOZipCodeField, self).__init__(r'^\d{4}$', + max_length=None, min_length=None, + error_message=gettext(u'Enter a zip code in the format XXXX.'), + *args, **kwargs) + +class NOMunicipalitySelect(Select): + """ + A Select widget that uses a list of Norwegian municipalities (fylker) + as its choices. + """ + def __init__(self, attrs=None): + from no_municipalities import MUNICIPALITY_CHOICES + super(NOMunicipalitySelect, self).__init__(attrs, choices=MUNICIPALITY_CHOICES) + +class NOSocialSecurityNumber(Field): + """ + Algorithm is documented at http://no.wikipedia.org/wiki/Personnummer + """ + def clean(self, value): + super(NOSocialSecurityNumber, self).clean(value) + if value in EMPTY_VALUES: + return u'' + + msg = gettext(u'Enter a valid Norwegian social security number.') + if not re.match(r'^\d{11}$', value): + raise ValidationError(msg) + + day = int(value[:2]) + month = int(value[2:4]) + year2 = int(value[4:6]) + + inum = int(value[6:9]) + self.birthday = None + try: + if 000 <= inum < 500: + self.birthday = datetime.date(1900+year2, month, day) + if 500 <= inum < 750 and year2 > 54: + self.birthday = datetime.date(1800+year2, month, day) + if 500 <= inum < 1000 and year2 < 40: + self.birthday = datetime.date(2000+year2, month, day) + if 900 <= inum < 1000 and year2 > 39: + self.birthday = datetime.date(1900+year2, month, day) + except ValueError: + raise ValidationError(msg) + + sexnum = int(value[8]) + if sexnum % 2 == 0: + self.gender = 'F' + else: + self.gender = 'M' + + digits = map(int, list(value)) + weight_1 = [3, 7, 6, 1, 8, 9, 4, 5, 2, 1, 0] + 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)) + + if multiply_reduce(digits, weight_1) % 11 != 0: + raise ValidationError(msg) + if multiply_reduce(digits, weight_2) % 11 != 0: + raise ValidationError(msg) + + return value + diff --git a/django/contrib/localflavor/no/no_municipalities.py b/django/contrib/localflavor/no/no_municipalities.py new file mode 100644 index 0000000000..d66fef514c --- /dev/null +++ b/django/contrib/localflavor/no/no_municipalities.py @@ -0,0 +1,32 @@ +# -*- coding: iso-8859-1 -*- +""" +An alphabetical list of Norwegian municipalities (fylker) fro use as `choices` +in a formfield. + +This exists in this standalone file so that it's on ly imported into memory +when explicitly needed. +""" + +MUNICIPALITY_CHOICES = ( + ('akershus', u'Akershus'), + ('austagder', u'Aust-Agder'), + ('buskerud', u'Buskerud'), + ('finnmark', u'Finnmark'), + ('hedmark', u'Hedmark'), + ('hordaland', u'Hordaland'), + ('janmayen', u'Jan Mayen'), + ('moreogromsdal', u'Møre og Romsdal'), + ('nordtrondelag', u'Nord-Trøndelag'), + ('nordland', u'Nordland'), + ('oppland', u'Oppland'), + ('oslo', u'Oslo'), + ('rogaland', u'Rogaland'), + ('sognogfjordane', u'Sogn og Fjordane'), + ('svalbard', u'Svalbard'), + ('sortrondelag', u'Sør-Trøndelag'), + ('telemark', u'Telemark'), + ('troms', u'Troms'), + ('vestagder', u'Vest-Agder'), + ('vestfold', u'Vestfold'), + ('ostfold', u'Østfold') +) diff --git a/django/contrib/webdesign/__init__.py b/django/contrib/webdesign/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/webdesign/lorem_ipsum.py b/django/contrib/webdesign/lorem_ipsum.py new file mode 100644 index 0000000000..b5a3d3b5db --- /dev/null +++ b/django/contrib/webdesign/lorem_ipsum.py @@ -0,0 +1,66 @@ +""" +Utility functions for generating "lorem ipsum" Latin text. +""" + +import random + +COMMON_P = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' +WORDS = ('exercitationem', 'perferendis', 'perspiciatis', 'laborum', 'eveniet', 'sunt', 'iure', 'nam', 'nobis', 'eum', 'cum', 'officiis', 'excepturi', 'odio', 'consectetur', 'quasi', 'aut', 'quisquam', 'vel', 'eligendi', 'itaque', 'non', 'odit', 'tempore', 'quaerat', 'dignissimos', 'facilis', 'neque', 'nihil', 'expedita', 'vitae', 'vero', 'ipsum', 'nisi', 'animi', 'cumque', 'pariatur', 'velit', 'modi', 'natus', 'iusto', 'eaque', 'sequi', 'illo', 'sed', 'ex', 'et', 'voluptatibus', 'tempora', 'veritatis', 'ratione', 'assumenda', 'incidunt', 'nostrum', 'placeat', 'aliquid', 'fuga', 'provident', 'praesentium', 'rem', 'necessitatibus', 'suscipit', 'adipisci', 'quidem', 'possimus', 'voluptas', 'debitis', 'sint', 'accusantium', 'unde', 'sapiente', 'voluptate', 'qui', 'aspernatur', 'laudantium', 'soluta', 'amet', 'quo', 'aliquam', 'saepe', 'culpa', 'libero', 'ipsa', 'dicta', 'reiciendis', 'nesciunt', 'doloribus', 'autem', 'impedit', 'minima', 'maiores', 'repudiandae', 'ipsam', 'obcaecati', 'ullam', 'enim', 'totam', 'delectus', 'ducimus', 'quis', 'voluptates', 'dolores', 'molestiae', 'harum', 'dolorem', 'quia', 'voluptatem', 'molestias', 'magni', 'distinctio', 'omnis', 'illum', 'dolorum', 'voluptatum', 'ea', 'quas', 'quam', 'corporis', 'quae', 'blanditiis', 'atque', 'deserunt', 'laboriosam', 'earum', 'consequuntur', 'hic', 'cupiditate', 'quibusdam', 'accusamus', 'ut', 'rerum', 'error', 'minus', 'eius', 'ab', 'ad', 'nemo', 'fugit', 'officia', 'at', 'in', 'id', 'quos', 'reprehenderit', 'numquam', 'iste', 'fugiat', 'sit', 'inventore', 'beatae', 'repellendus', 'magnam', 'recusandae', 'quod', 'explicabo', 'doloremque', 'aperiam', 'consequatur', 'asperiores', 'commodi', 'optio', 'dolor', 'labore', 'temporibus', 'repellat', 'veniam', 'architecto', 'est', 'esse', 'mollitia', 'nulla', 'a', 'similique', 'eos', 'alias', 'dolore', 'tenetur', 'deleniti', 'porro', 'facere', 'maxime', 'corrupti') +COMMON_WORDS = ('lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipisicing', 'elit', 'sed', 'do', 'eiusmod', 'tempor', 'incididunt', 'ut', 'labore', 'et', 'dolore', 'magna', 'aliqua') + +def sentence(): + """ + Returns a randomly generated sentence of lorem ipsum text. + + The first word is capitalized, and the sentence ends in either a period or + question mark. Commas are added at random. + """ + # Determine the number of comma-separated sections and number of words in + # each section for this sentence. + sections = [' '.join(random.sample(WORDS, random.randint(3, 12))) for i in range(random.randint(1, 5))] + s = ', '.join(sections) + # Convert to sentence case and add end punctuation. + return '%s%s%s' % (s[0].upper(), s[1:], random.choice('?.')) + +def paragraph(): + """ + Returns a randomly generated paragraph of lorem ipsum text. + + The paragraph consists of between 1 and 4 sentences, inclusive. + """ + return ' '.join([sentence() for i in range(random.randint(1, 4))]) + +def paragraphs(count, common=True): + """ + Returns a list of paragraphs as returned by paragraph(). + + If `common` is True, then the first paragraph will be the standard + 'lorem ipsum' paragraph. Otherwise, the first paragraph will be random + Latin text. Either way, subsequent paragraphs will be random Latin text. + """ + paras = [] + for i in range(count): + if common and i == 0: + paras.append(COMMON_P) + else: + paras.append(paragraph()) + return paras + +def words(count, common=True): + """ + Returns a string of `count` lorem ipsum words separated by a single space. + + If `common` is True, then the first 19 words will be the standard + 'lorem ipsum' words. Otherwise, all words will be selected randomly. + """ + if common: + word_list = list(COMMON_WORDS) + else: + word_list = [] + c = len(word_list) + if count > c: + count = min(count - c, len(WORDS)) + word_list += random.sample(WORDS, count - c) + else: + word_list = word_list[:count] + return ' '.join(word_list) diff --git a/django/contrib/webdesign/templatetags/__init__.py b/django/contrib/webdesign/templatetags/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/django/contrib/webdesign/templatetags/webdesign.py b/django/contrib/webdesign/templatetags/webdesign.py new file mode 100644 index 0000000000..e5117093f8 --- /dev/null +++ b/django/contrib/webdesign/templatetags/webdesign.py @@ -0,0 +1,67 @@ +from django.contrib.webdesign.lorem_ipsum import words, paragraphs +from django import template + +register = template.Library() + +class LoremNode(template.Node): + def __init__(self, count, method, common): + self.count, self.method, self.common = count, method, common + + def render(self, context): + try: + count = int(self.count.resolve(context)) + except (ValueError, TypeError): + count = 1 + if self.method == 'w': + return words(count, common=self.common) + else: + paras = paragraphs(count, common=self.common) + if self.method == 'p': + paras = ['

%s

' % p for p in paras] + return '\n\n'.join(paras) + +#@register.tag +def lorem(parser, token): + """ + Creates random Latin text useful for providing test data in templates. + + Usage format:: + + {% lorem [count] [method] [random] %} + + ``count`` is a number (or variable) containing the number of paragraphs or + words to generate (default is 1). + + ``method`` is either ``w`` for words, ``p`` for HTML paragraphs, ``b`` for + plain-text paragraph blocks (default is ``b``). + + ``random`` is the word ``random``, which if given, does not use the common + paragraph (starting "Lorem ipsum dolor sit amet, consectetuer..."). + + Examples: + * ``{% lorem %}`` will output the common "lorem ipsum" paragraph + * ``{% lorem 3 p %}`` will output the common "lorem ipsum" paragraph + and two random paragraphs each wrapped in HTML ``

`` tags + * ``{% lorem 2 w random %}`` will output two random latin words + """ + bits = list(token.split_contents()) + tagname = bits[0] + # Random bit + common = bits[-1] != 'random' + if not common: + bits.pop() + # Method bit + if bits[-1] in ('w', 'p', 'b'): + method = bits.pop() + else: + method = 'b' + # Count bit + if len(bits) > 1: + count = bits.pop() + else: + count = '1' + count = parser.compile_filter(count) + if len(bits) != 1: + raise TemplateSyntaxError("Incorrect format for %r tag" % tagname) + return LoremNode(count, method, common) +lorem = register.tag(lorem) diff --git a/django/core/servers/fastcgi.py b/django/core/servers/fastcgi.py index 649dd6942d..619758a0b1 100644 --- a/django/core/servers/fastcgi.py +++ b/django/core/servers/fastcgi.py @@ -1,5 +1,5 @@ """ -FastCGI server that implements the WSGI protocol. +FastCGI (or SCGI, or AJP1.3 ...) server that implements the WSGI protocol. Uses the flup python package: http://www.saddi.com/software/flup/ @@ -18,15 +18,16 @@ __version__ = "0.1" __all__ = ["runfastcgi"] FASTCGI_HELP = r"""runfcgi: - Run this project as a fastcgi application. To do this, the - flup package from http://www.saddi.com/software/flup/ is - required. + Run this project as a fastcgi (or some other protocol supported + by flup) application. To do this, the flup package from + http://www.saddi.com/software/flup/ is required. Usage: django-admin.py runfcgi --settings=yourproject.settings [fcgi settings] manage.py runfcgi [fcgi settings] Optional Fcgi settings: (setting=value) + protocol=PROTOCOL fcgi, scgi, ajp, ... (default fcgi) host=HOSTNAME hostname to listen on.. port=PORTNUM port to listen on. socket=FILE UNIX socket to listen on. @@ -45,8 +46,8 @@ Examples: (for webservers which spawn your processes for you) $ manage.py runfcgi method=threaded - Run a fastcgi server on a TCP host/port - $ manage.py runfcgi method=prefork host=127.0.0.1 port=8025 + Run a scgi server on a TCP host/port + $ manage.py runfcgi protocol=scgi method=prefork host=127.0.0.1 port=8025 Run a fastcgi server on a UNIX domain socket (posix platforms only) $ manage.py runfcgi method=prefork socket=/tmp/fcgi.sock @@ -58,6 +59,7 @@ Examples: """ FASTCGI_OPTIONS = { + 'protocol': 'fcgi', 'host': None, 'port': None, 'socket': None, @@ -100,16 +102,17 @@ def runfastcgi(argset=[], **kwargs): print >> sys.stderr, " installed flup, then make sure you have it in your PYTHONPATH." return False + flup_module = 'server.' + options['protocol'] + if options['method'] in ('prefork', 'fork'): - from flup.server.fcgi_fork import WSGIServer wsgi_opts = { 'maxSpare': int(options["maxspare"]), 'minSpare': int(options["minspare"]), 'maxChildren': int(options["maxchildren"]), 'maxRequests': int(options["maxrequests"]), } + flup_module += '_fork' elif options['method'] in ('thread', 'threaded'): - from flup.server.fcgi import WSGIServer wsgi_opts = { 'maxSpare': int(options["maxspare"]), 'minSpare': int(options["minspare"]), @@ -120,6 +123,12 @@ def runfastcgi(argset=[], **kwargs): wsgi_opts['debug'] = False # Turn off flup tracebacks + try: + WSGIServer = getattr(__import__('flup.' + flup_module, '', '', flup_module), 'WSGIServer') + except: + print "Can't import flup." + flup_module + return False + # Prep up and go from django.core.handlers.wsgi import WSGIHandler diff --git a/django/core/urlresolvers.py b/django/core/urlresolvers.py index 3f1004c4fb..c4cbccabcf 100644 --- a/django/core/urlresolvers.py +++ b/django/core/urlresolvers.py @@ -88,7 +88,7 @@ class MatchChecker(object): return str(value) # TODO: Unicode? class RegexURLPattern(object): - def __init__(self, regex, callback, default_args=None): + def __init__(self, regex, callback, default_args=None, name=None): # regex is a string representing a regular expression. # callback is either a string like 'foo.views.news.stories.story_detail' # which represents the path to a module and a view function name, or a @@ -100,6 +100,7 @@ class RegexURLPattern(object): self._callback = None self._callback_str = callback self.default_args = default_args or {} + self.name = name def resolve(self, path): match = self.regex.search(path) @@ -205,14 +206,15 @@ class RegexURLResolver(object): try: lookup_view = getattr(__import__(mod_name, {}, {}, ['']), func_name) except (ImportError, AttributeError): - raise NoReverseMatch + if func_name != '': + raise NoReverseMatch for pattern in self.urlconf_module.urlpatterns: if isinstance(pattern, RegexURLResolver): try: return pattern.reverse_helper(lookup_view, *args, **kwargs) except NoReverseMatch: continue - elif pattern.callback == lookup_view: + elif pattern.callback == lookup_view or pattern.name == lookup_view: try: return pattern.reverse_helper(*args, **kwargs) except NoReverseMatch: diff --git a/django/db/models/base.py b/django/db/models/base.py index ed7f484626..eb95aae4f2 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -22,7 +22,12 @@ class ModelBase(type): "Metaclass for all models" def __new__(cls, name, bases, attrs): # If this isn't a subclass of Model, don't do anything special. - if name == 'Model' or not filter(lambda b: issubclass(b, Model), bases): + try: + if not filter(lambda b: issubclass(b, Model), bases): + return super(ModelBase, cls).__new__(cls, name, bases, attrs) + except NameError: + # 'Model' isn't defined yet, meaning we're looking at Django's own + # Model class, defined below. return super(ModelBase, cls).__new__(cls, name, bases, attrs) # Create the class. diff --git a/django/http/__init__.py b/django/http/__init__.py index 0ae90c4921..ed2c128a16 100644 --- a/django/http/__init__.py +++ b/django/http/__init__.py @@ -155,6 +155,9 @@ def parse_cookie(cookie): class HttpResponse(object): "A basic HTTP response, with content and dictionary-accessed headers" + + status_code = 200 + def __init__(self, content='', mimetype=None): from django.conf import settings self._charset = settings.DEFAULT_CHARSET @@ -168,7 +171,6 @@ class HttpResponse(object): self._is_string = True self.headers = {'Content-Type': mimetype} self.cookies = SimpleCookie() - self.status_code = 200 def __str__(self): "Full HTTP message, including headers" @@ -254,47 +256,49 @@ class HttpResponse(object): return sum([len(chunk) for chunk in self._container]) class HttpResponseRedirect(HttpResponse): + status_code = 302 + def __init__(self, redirect_to): HttpResponse.__init__(self) self['Location'] = quote(redirect_to, safe=RESERVED_CHARS) - self.status_code = 302 class HttpResponsePermanentRedirect(HttpResponse): + status_code = 301 + def __init__(self, redirect_to): HttpResponse.__init__(self) self['Location'] = quote(redirect_to, safe=RESERVED_CHARS) - self.status_code = 301 class HttpResponseNotModified(HttpResponse): - def __init__(self): - HttpResponse.__init__(self) - self.status_code = 304 + status_code = 304 + +class HttpResponseBadRequest(HttpResponse): + status_code = 400 class HttpResponseNotFound(HttpResponse): - def __init__(self, *args, **kwargs): - HttpResponse.__init__(self, *args, **kwargs) - self.status_code = 404 + status_code = 404 class HttpResponseForbidden(HttpResponse): - def __init__(self, *args, **kwargs): - HttpResponse.__init__(self, *args, **kwargs) - self.status_code = 403 + status_code = 403 class HttpResponseNotAllowed(HttpResponse): + status_code = 405 + def __init__(self, permitted_methods): HttpResponse.__init__(self) self['Allow'] = ', '.join(permitted_methods) - self.status_code = 405 class HttpResponseGone(HttpResponse): + status_code = 410 + def __init__(self, *args, **kwargs): HttpResponse.__init__(self, *args, **kwargs) - self.status_code = 410 class HttpResponseServerError(HttpResponse): + status_code = 500 + def __init__(self, *args, **kwargs): HttpResponse.__init__(self, *args, **kwargs) - self.status_code = 500 def get_host(request): "Gets the HTTP host from the environment or request headers." diff --git a/django/newforms/fields.py b/django/newforms/fields.py index 8e3da03470..72c5047030 100644 --- a/django/newforms/fields.py +++ b/django/newforms/fields.py @@ -38,15 +38,16 @@ class Field(object): def __init__(self, required=True, widget=None, label=None, initial=None, help_text=None): # required -- Boolean that specifies whether the field is required. # True by default. - # widget -- A Widget class, or instance of a Widget class, that should be - # used for this Field when displaying it. Each Field has a default - # Widget that it'll use if you don't specify this. In most cases, - # the default widget is TextInput. - # label -- A verbose name for this field, for use in displaying this field in - # a form. By default, Django will use a "pretty" version of the form - # field name, if the Field is part of a Form. - # initial -- A value to use in this Field's initial display. This value is - # *not* used as a fallback if data isn't given. + # widget -- A Widget class, or instance of a Widget class, that should + # be used for this Field when displaying it. Each Field has a + # default Widget that it'll use if you don't specify this. In + # most cases, the default widget is TextInput. + # label -- A verbose name for this field, for use in displaying this + # field in a form. By default, Django will use a "pretty" + # version of the form field name, if the Field is part of a + # Form. + # initial -- A value to use in this Field's initial display. This value + # is *not* used as a fallback if data isn't given. # help_text -- An optional string to use as "help text" for this Field. if label is not None: label = smart_unicode(label) diff --git a/django/newforms/models.py b/django/newforms/models.py index 616c7141e7..a60002b705 100644 --- a/django/newforms/models.py +++ b/django/newforms/models.py @@ -36,13 +36,14 @@ def save_instance(form, instance, commit=True): raise ValueError("The %s could not be changed because the data didn't validate." % opts.object_name) clean_data = form.clean_data for f in opts.fields: - if not f.editable or isinstance(f, models.AutoField): + if not f.editable or isinstance(f, models.AutoField) or not f.name in clean_data: continue setattr(instance, f.name, clean_data[f.name]) if commit: instance.save() for f in opts.many_to_many: - setattr(instance, f.attname, clean_data[f.name]) + if f.name in clean_data: + setattr(instance, f.attname, clean_data[f.name]) # GOTCHA: If many-to-many data is given and commit=False, the many-to-many # data will be lost. This happens because a many-to-many options cannot be # set on an object until after it's saved. Maybe we should raise an diff --git a/django/newforms/util.py b/django/newforms/util.py index 51a8efdde2..f98027c2e3 100644 --- a/django/newforms/util.py +++ b/django/newforms/util.py @@ -1,11 +1,20 @@ from django.conf import settings from django.utils.html import escape +from django.utils.functional import Promise, lazy # Converts a dictionary to a single string with key="value", XML-style with # a leading space. Assumes keys do not need to be XML-escaped. flatatt = lambda attrs: u''.join([u' %s="%s"' % (k, escape(v)) for k, v in attrs.items()]) def smart_unicode(s): + if isinstance(s, Promise): + # The input is something from gettext_lazy or similar. We don't want to + # translate it until render time, so defer the conversion. + return smart_unicode_lazy(s) + else: + return smart_unicode_immediate(s) + +def smart_unicode_immediate(s): if not isinstance(s, basestring): if hasattr(s, '__unicode__'): s = unicode(s) @@ -15,6 +24,8 @@ def smart_unicode(s): s = unicode(s, settings.DEFAULT_CHARSET) return s +smart_unicode_lazy = lazy(smart_unicode_immediate, unicode) + class StrAndUnicode(object): """ A class whose __str__ returns its __unicode__ as a bytestring diff --git a/django/newforms/widgets.py b/django/newforms/widgets.py index 18bba31897..58d8ab1322 100644 --- a/django/newforms/widgets.py +++ b/django/newforms/widgets.py @@ -24,7 +24,10 @@ class Widget(object): is_hidden = False # Determines whether this corresponds to an . def __init__(self, attrs=None): - self.attrs = attrs or {} + if attrs is not None: + self.attrs = attrs.copy() + else: + self.attrs = {} def render(self, name, value, attrs=None): """ diff --git a/django/oldforms/__init__.py b/django/oldforms/__init__.py index 56101984f5..873bd0204a 100644 --- a/django/oldforms/__init__.py +++ b/django/oldforms/__init__.py @@ -923,7 +923,8 @@ class FilePathField(SelectField): for root, dirs, files in os.walk(path): for f in files: if match is None or match_re.search(f): - choices.append((os.path.join(root, f), f)) + f = os.path.join(root, f) + choices.append((f, f.replace(path, "", 1))) else: try: for f in os.listdir(path): diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py index 30aeca1af1..6a37c163e9 100644 --- a/django/template/defaulttags.py +++ b/django/template/defaulttags.py @@ -140,7 +140,7 @@ class IfChangedNode(Node): else: compare_to = self.nodelist.render(context) except VariableDoesNotExist: - compare_to = None + compare_to = None if compare_to != self._last_seen: firstloop = (self._last_seen == None) @@ -280,24 +280,6 @@ class LoadNode(Node): def render(self, context): return '' -class LoremNode(Node): - def __init__(self, count, method, common): - self.count, self.method, self.common = count, method, common - - def render(self, context): - from django.utils.lorem_ipsum import words, paragraphs - try: - count = int(self.count.resolve(context)) - except (ValueError, TypeError): - count = 1 - if self.method == 'w': - return words(count, common=self.common) - else: - paras = paragraphs(count, common=self.common) - if self.method == 'p': - paras = ['

%s

' % p for p in paras] - return '\n\n'.join(paras) - class NowNode(Node): def __init__(self, format_string): self.format_string = format_string @@ -338,7 +320,7 @@ class URLNode(Node): self.view_name = view_name self.args = args self.kwargs = kwargs - + def render(self, context): from django.core.urlresolvers import reverse, NoReverseMatch args = [arg.resolve(context) for arg in self.args] @@ -786,52 +768,6 @@ def load(parser, token): return LoadNode() load = register.tag(load) -#@register.tag -def lorem(parser, token): - """ - Creates random latin text useful for providing test data in templates. - - Usage format:: - - {% lorem [count] [method] [random] %} - - ``count`` is a number (or variable) containing the number of paragraphs or - words to generate (default is 1). - - ``method`` is either ``w`` for words, ``p`` for HTML paragraphs, ``b`` for - plain-text paragraph blocks (default is ``b``). - - ``random`` is the word ``random``, which if given, does not use the common - paragraph (starting "Lorem ipsum dolor sit amet, consectetuer..."). - - Examples: - * ``{% lorem %}`` will output the common "lorem ipsum" paragraph - * ``{% lorem 3 p %}`` will output the common "lorem ipsum" paragraph - and two random paragraphs each wrapped in HTML ``

`` tags - * ``{% lorem 2 w random %}`` will output two random latin words - """ - bits = list(token.split_contents()) - tagname = bits[0] - # Random bit - common = bits[-1] != 'random' - if not common: - bits.pop() - # Method bit - if bits[-1] in ('w', 'p', 'b'): - method = bits.pop() - else: - method = 'b' - # Count bit - if len(bits) > 1: - count = bits.pop() - else: - count = '1' - count = parser.compile_filter(count) - if len(bits) != 1: - raise TemplateSyntaxError, "Incorrect format for %r tag" % tagname - return LoremNode(count, method, common) -lorem = register.tag(lorem) - #@register.tag def now(parser, token): """ @@ -916,7 +852,7 @@ regroup = register.tag(regroup) def spaceless(parser, token): """ - Normalize whitespace between HTML tags to a single space. This includes tab + Removes whitespace between HTML tags. This includes tab characters and newlines. Example usage:: @@ -929,7 +865,7 @@ def spaceless(parser, token): This example would return this HTML:: -

Foo

+

Foo

Only space between *tags* is normalized -- not space between tags and text. In this example, the space around ``Hello`` won't be stripped:: @@ -980,12 +916,12 @@ templatetag = register.tag(templatetag) def url(parser, token): """ - Returns an absolute URL matching given view with its parameters. - + Returns an absolute URL matching given view with its parameters. + This is a way to define links that aren't tied to a particular URL configuration:: - + {% url path.to.some_view arg1,arg2,name1=value1 %} - + The first argument is a path to a view. It can be an absolute python path or just ``app_name.view_name`` without the project name if the view is located inside the project. Other arguments are comma-separated values @@ -994,18 +930,18 @@ def url(parser, token): For example if you have a view ``app_name.client`` taking client's id and the corresponding line in a URLconf looks like this:: - + ('^client/(\d+)/$', 'app_name.client') - + and this app's URLconf is included into the project's URLconf under some path:: - + ('^clients/', include('project_name.app_name.urls')) - + then in a template you can create a link for a certain client like this:: - + {% url app_name.client client.id %} - + The URL will look like ``/clients/client/123/``. """ bits = token.contents.split(' ', 2) diff --git a/django/utils/html.py b/django/utils/html.py index a0d1e82dcf..baa2fb06fc 100644 --- a/django/utils/html.py +++ b/django/utils/html.py @@ -39,8 +39,8 @@ def strip_tags(value): return re.sub(r'<[^>]*?>', '', value) def strip_spaces_between_tags(value): - "Returns the given HTML with spaces between tags normalized to a single space" - return re.sub(r'>\s+<', '> <', value) + "Returns the given HTML with spaces between tags removed" + return re.sub(r'>\s+<', '><', value) def strip_entities(value): "Returns the given HTML with all entities (&something;) stripped" diff --git a/django/utils/text.py b/django/utils/text.py index faf8705fa9..c73ab908f3 100644 --- a/django/utils/text.py +++ b/django/utils/text.py @@ -191,14 +191,15 @@ def smart_split(text): Supports both single and double quotes, and supports escaping quotes with backslashes. In the output, strings will keep their initial and trailing quote marks. + >>> list(smart_split('This is "a person\'s" test.')) ['This', 'is', '"a person\'s"', 'test.'] """ for bit in smart_split_re.finditer(text): bit = bit.group(0) - if bit[0] == '"': + if bit[0] == '"' and bit[-1] == '"': yield '"' + bit[1:-1].replace('\\"', '"').replace('\\\\', '\\') + '"' - elif bit[0] == "'": + elif bit[0] == "'" and bit[-1] == "'": yield "'" + bit[1:-1].replace("\\'", "'").replace("\\\\", "\\") + "'" else: yield bit diff --git a/django/utils/translation/__init__.py b/django/utils/translation/__init__.py index 276e59f4bd..39ebd6f75a 100644 --- a/django/utils/translation/__init__.py +++ b/django/utils/translation/__init__.py @@ -1,8 +1,94 @@ -from django.conf import settings +""" +Internationalization support. +""" +from django.utils.functional import lazy -if settings.USE_I18N: - from trans_real import * -else: - from trans_null import * +__all__ = ['gettext', 'gettext_noop', 'gettext_lazy', 'ngettext', + 'ngettext_lazy', 'string_concat', 'activate', 'deactivate', + 'get_language', 'get_language_bidi', 'get_date_formats', + 'get_partial_date_formats', 'check_for_language', 'to_locale', + 'get_language_from_request', 'install'] + +# Here be dragons, so a short explanation of the logic won't hurt: +# We are trying to solve two problems: (1) access settings, in particular +# settings.USE_I18N, as late as possible, so that modules can be imported +# without having to first configure Django, and (2) if some other code creates +# a reference to one of these functions, don't break that reference when we +# replace the functions with their real counterparts (once we do access the +# settings). + +def delayed_loader(*args, **kwargs): + """ + Replace each real_* function with the corresponding function from either + trans_real or trans_null (e.g. real_gettext is replaced with + trans_real.gettext or trans_null.gettext). This function is run once, the + first time any i18n method is called. It replaces all the i18n methods at + once at that time. + """ + import traceback + from django.conf import settings + if settings.USE_I18N: + import trans_real as trans + else: + import trans_null as trans + caller = traceback.extract_stack(limit=2)[0][2] + g = globals() + for name in __all__: + if hasattr(trans, name): + g['real_%s' % name] = getattr(trans, name) + + # Make the originally requested function call on the way out the door. + return g[caller](*args, **kwargs) + +g = globals() +for name in __all__: + g['real_%s' % name] = delayed_loader +del g, delayed_loader + +def gettext_noop(message): + return real_gettext_noop(message) + +def gettext(message): + return real_gettext(message) + + +def ngettext(singular, plural, number): + return real_ngettext(singular, plural, number) + +def string_concat(*strings): + return real_string_concat(*strings) + +ngettext_lazy = lazy(ngettext, str, unicode) +gettext_lazy = lazy(gettext, str, unicode) +string_concat = lazy(string_concat, str, unicode) + +def activate(language): + return real_activate(language) + +def deactivate(): + return real_deactivate() + +def get_language(): + return real_get_language() + +def get_language_bidi(): + return real_get_language_bidi() + +def get_date_formats(): + return real_get_date_formats() + +def get_partial_date_formats(): + return real_get_partial_date_formats() + +def check_for_language(lang_code): + return real_check_for_language(lang_code) + +def to_locale(language): + return real_to_locale(language) + +def get_language_from_request(request): + return real_get_language_from_request(request) + +def install(): + return real_install() -del settings diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py index 94df23a8e9..0c8dcd540f 100644 --- a/django/utils/translation/trans_real.py +++ b/django/utils/translation/trans_real.py @@ -3,7 +3,6 @@ import os, re, sys import gettext as gettext_module from cStringIO import StringIO -from django.utils.functional import lazy try: import threading @@ -277,9 +276,6 @@ def ngettext(singular, plural, number): _default = translation(settings.LANGUAGE_CODE) return _default.ngettext(singular, plural, number) -gettext_lazy = lazy(gettext, str) -ngettext_lazy = lazy(ngettext, str) - def check_for_language(lang_code): """ Checks whether there is a global language file for the given language code. @@ -493,4 +489,3 @@ def string_concat(*strings): """ return ''.join([str(el) for el in strings]) -string_concat = lazy(string_concat, str) -- cgit v1.3