diff --git a/AUTHORS b/AUTHORS index 4d57503bf8..bad8008d86 100644 --- a/AUTHORS +++ b/AUTHORS @@ -44,6 +44,7 @@ answer newbie questions, and generally made Django that much better: akaihola Andreas + ant9000@netwise.it David Ascher Arthur Jiri Barton @@ -126,6 +127,7 @@ answer newbie questions, and generally made Django that much better: Oliver Rutherfurd Ivan Sagalaev (Maniac) David Schein + serbaut@gmail.com Pete Shinners SmileyChris sopel diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index c382d7bf96..dee39867c6 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -46,6 +46,7 @@ LANGUAGES = ( ('en', gettext_noop('English')), ('es', gettext_noop('Spanish')), ('es_AR', gettext_noop('Argentinean Spanish')), + ('fi', gettext_noop('Finnish')), ('fr', gettext_noop('French')), ('gl', gettext_noop('Galician')), ('hu', gettext_noop('Hungarian')), diff --git a/django/conf/locale/es_AR/LC_MESSAGES/django.mo b/django/conf/locale/es_AR/LC_MESSAGES/django.mo index f550fca3db..dd96bf99ce 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 8af7c42e5e..e5169e9c4a 100644 --- a/django/conf/locale/es_AR/LC_MESSAGES/django.po +++ b/django/conf/locale/es_AR/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-06-19 11:19-0300\n" -"PO-Revision-Date: 2006-05-16 10:05-0300\n" +"POT-Creation-Date: 2006-08-18 18:57-0300\n" +"PO-Revision-Date: 2006-08-21 18:06-0300\n" "Last-Translator: Ramiro Morales \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" @@ -17,15 +17,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: contrib/contenttypes/models.py:25 +#: contrib/contenttypes/models.py:20 msgid "python model class name" msgstr "nombre de la clase python del modelo" -#: contrib/contenttypes/models.py:28 +#: contrib/contenttypes/models.py:23 msgid "content type" msgstr "tipo de contenido" -#: contrib/contenttypes/models.py:29 +#: contrib/contenttypes/models.py:24 msgid "content types" msgstr "tipos de contenido" @@ -33,79 +33,103 @@ msgstr "tipos de contenido" msgid "Logged out" msgstr "Sesin cerrada" -#: contrib/auth/models.py:13 contrib/auth/models.py:26 +#: contrib/auth/models.py:38 contrib/auth/models.py:57 msgid "name" msgstr "nombre" -#: contrib/auth/models.py:15 +#: contrib/auth/models.py:40 msgid "codename" msgstr "nombre en cdigo" -#: contrib/auth/models.py:17 +#: contrib/auth/models.py:42 msgid "permission" msgstr "permiso" -#: contrib/auth/models.py:18 contrib/auth/models.py:27 +#: contrib/auth/models.py:43 contrib/auth/models.py:58 msgid "permissions" msgstr "permisos" -#: contrib/auth/models.py:29 +#: contrib/auth/models.py:60 msgid "group" msgstr "grupo" -#: contrib/auth/models.py:30 contrib/auth/models.py:65 +#: contrib/auth/models.py:61 contrib/auth/models.py:100 msgid "groups" msgstr "grupos" -#: contrib/auth/models.py:55 +#: contrib/auth/models.py:90 msgid "username" msgstr "nombre de usuario" -#: contrib/auth/models.py:56 +#: contrib/auth/models.py:90 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +"Requerido. Longitud mxima 30 caracteres alfanumricos (letras, dgitos y " +"guiones bajos)." + +#: contrib/auth/models.py:91 msgid "first name" msgstr "nombre" -#: contrib/auth/models.py:57 +#: contrib/auth/models.py:92 msgid "last name" msgstr "apellido" -#: contrib/auth/models.py:58 +#: contrib/auth/models.py:93 msgid "e-mail address" msgstr "direccin de correo" -#: contrib/auth/models.py:59 +#: contrib/auth/models.py:94 msgid "password" msgstr "contrasea" -#: contrib/auth/models.py:59 +#: contrib/auth/models.py:94 msgid "Use '[algo]$[salt]$[hexdigest]'" msgstr "Use '[algoritmo]$[salt]$[hexdigest]'" -#: contrib/auth/models.py:60 +#: contrib/auth/models.py:95 msgid "staff status" msgstr "es staff" -#: contrib/auth/models.py:60 +#: 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 administracin." -#: contrib/auth/models.py:61 +#: contrib/auth/models.py:96 msgid "active" msgstr "activo" -#: contrib/auth/models.py:62 +#: contrib/auth/models.py:96 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"Indica si el usuario puede ingresar al sitio de administracin Django." +"Desactive este campo en lugar de eliminar usuarios." + +#: contrib/auth/models.py:97 msgid "superuser status" msgstr "es superusuario" -#: contrib/auth/models.py:63 +#: contrib/auth/models.py:97 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Indica que este usuario posee todos los permisos, sin asignarle los mismos " +"explcitamente." + +#: contrib/auth/models.py:98 msgid "last login" msgstr "ltimo registro" -#: contrib/auth/models.py:64 +#: contrib/auth/models.py:99 msgid "date joined" msgstr "fecha de creacin" -#: contrib/auth/models.py:66 +#: 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." @@ -113,39 +137,39 @@ msgstr "" "Adems de los permisos asignados manualmente, este usuario tambin poseer " "todos los permisos de los grupos a los que pertenezca." -#: contrib/auth/models.py:67 +#: contrib/auth/models.py:102 msgid "user permissions" msgstr "permisos de usuario" -#: contrib/auth/models.py:70 +#: contrib/auth/models.py:105 msgid "user" msgstr "usuario" -#: contrib/auth/models.py:71 +#: contrib/auth/models.py:106 msgid "users" msgstr "usuarios" -#: contrib/auth/models.py:76 +#: contrib/auth/models.py:111 msgid "Personal info" msgstr "Informacin personal" -#: contrib/auth/models.py:77 +#: contrib/auth/models.py:112 msgid "Permissions" msgstr "Permisos" -#: contrib/auth/models.py:78 +#: contrib/auth/models.py:113 msgid "Important dates" msgstr "Fechas importantes" -#: contrib/auth/models.py:79 +#: contrib/auth/models.py:114 msgid "Groups" msgstr "Grupos" -#: contrib/auth/models.py:219 +#: contrib/auth/models.py:256 msgid "message" msgstr "mensaje" -#: contrib/auth/forms.py:30 +#: contrib/auth/forms.py:52 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." @@ -153,8 +177,7 @@ msgstr "" "Su navegador Web aparenta no tener cookies activas. Las cookies son un " "requerimiento para poder ingresar." -#: contrib/auth/forms.py:36 contrib/auth/forms.py:43 -#: contrib/admin/views/decorators.py:9 +#: contrib/auth/forms.py:59 contrib/admin/views/decorators.py:10 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." @@ -162,7 +185,7 @@ msgstr "" "Por favor ingrese un nombre de usuario y una contrasea correctos. Note que " "ambos campos son sensibles a maysculas/minsculas." -#: contrib/auth/forms.py:45 +#: contrib/auth/forms.py:61 msgid "This account is inactive." msgstr "Esta cuenta est inactiva" @@ -255,7 +278,7 @@ msgstr "fecha/hora de env msgid "is public" msgstr "es pblico" -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:292 +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 msgid "IP address" msgstr "Direccin IP" @@ -392,12 +415,12 @@ msgstr "ID de comentario no v msgid "No voting for yourself" msgstr "No puedes votarte t mismo" -#: contrib/comments/views/comments.py:28 +#: contrib/comments/views/comments.py:27 msgid "" "This rating is required because you've entered at least one other rating." msgstr "Se precisa esta puntuacin porque ha introducido al menos otra ms." -#: contrib/comments/views/comments.py:112 +#: contrib/comments/views/comments.py:111 #, python-format msgid "" "This comment was posted by a user who has posted fewer than %(count)s " @@ -420,7 +443,7 @@ msgstr[1] "" "\n" "%(text)s" -#: contrib/comments/views/comments.py:117 +#: contrib/comments/views/comments.py:116 #, fuzzy, python-format msgid "" "This comment was posted by a sketchy user:\n" @@ -431,24 +454,24 @@ msgstr "" "\n" "%(text)s" -#: contrib/comments/views/comments.py:189 +#: contrib/comments/views/comments.py:188 #: contrib/comments/views/comments.py:280 msgid "Only POSTs are allowed" msgstr "Slo se admiten POSTs" -#: contrib/comments/views/comments.py:193 +#: contrib/comments/views/comments.py:192 #: contrib/comments/views/comments.py:284 msgid "One or more of the required fields wasn't submitted" msgstr "No se proporcion uno o ms de los siguientes campos requeridos" -#: contrib/comments/views/comments.py:197 +#: contrib/comments/views/comments.py:196 #: contrib/comments/views/comments.py:286 msgid "Somebody tampered with the comment form (security violation)" msgstr "" "Alguien est jugando con el formulario de comentarios (violacin de " "seguridad)" -#: contrib/comments/views/comments.py:207 +#: 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 " @@ -467,12 +490,12 @@ msgid "Your name:" msgstr "Su nombre:" #: contrib/comments/templates/comments/freeform.html:5 -#: contrib/comments/templates/comments/form.html:27 +#: contrib/comments/templates/comments/form.html:28 msgid "Comment:" msgstr "Comentario:" -#: contrib/comments/templates/comments/freeform.html:9 -#: contrib/comments/templates/comments/form.html:32 +#: contrib/comments/templates/comments/freeform.html:10 +#: contrib/comments/templates/comments/form.html:35 msgid "Preview comment" msgstr "Previsualizar comentario" @@ -483,19 +506,10 @@ msgid "Username:" msgstr "Usuario:" #: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "Contrasea:" - -#: contrib/comments/templates/comments/form.html:6 -msgid "Forgotten your password?" -msgstr "Olvid su contrasea?" - -#: contrib/comments/templates/comments/form.html:8 #: 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:24 +#: contrib/admin/templates/admin/base.html:25 #: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 @@ -512,6 +526,15 @@ msgstr "Olvid msgid "Log out" msgstr "Cerrar sesin" +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "Contrasea:" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Olvid su contrasea?" + #: contrib/comments/templates/comments/form.html:12 msgid "Ratings" msgstr "Calificaciones" @@ -530,7 +553,7 @@ msgstr "Opcional" msgid "Post a photo" msgstr "Enviar una foto" -#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:303 +#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315 msgid "URL" msgstr "URL" @@ -559,11 +582,11 @@ msgstr "nombre de plantilla" #: contrib/flatpages/models.py:13 msgid "" -"Example: 'flatpages/contact_page'. If this isn't provided, the system will " -"use 'flatpages/default'." +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." msgstr "" -"Ejemplo: 'flatpages/contact_page'. Si no lo proporciona, el sistema usar " -"'flatpages/default'." +"Ejemplo: 'flatpages/contact_page.html'. Si no lo proporciona, el sistema " +"usar 'flatpages/default.html'." #: contrib/flatpages/models.py:14 msgid "registration required" @@ -581,23 +604,23 @@ msgstr "p msgid "flat pages" msgstr "pginas estticas" -#: contrib/sessions/models.py:35 +#: contrib/sessions/models.py:51 msgid "session key" msgstr "clave de sesin" -#: contrib/sessions/models.py:36 +#: contrib/sessions/models.py:52 msgid "session data" msgstr "datos de sesin" -#: contrib/sessions/models.py:37 +#: contrib/sessions/models.py:53 msgid "expire date" msgstr "fecha de caducidad" -#: contrib/sessions/models.py:41 +#: contrib/sessions/models.py:57 msgid "session" msgstr "sesin" -#: contrib/sessions/models.py:42 +#: contrib/sessions/models.py:58 msgid "sessions" msgstr "sesiones" @@ -695,12 +718,12 @@ msgstr "entradas de registro" msgid "All dates" msgstr "Todas las fechas" -#: contrib/admin/views/decorators.py:23 +#: contrib/admin/views/decorators.py:24 #: contrib/admin/templates/admin/login.html:25 msgid "Log in" msgstr "Identificarse" -#: contrib/admin/views/decorators.py:61 +#: contrib/admin/views/decorators.py:62 msgid "" "Please log in again, because your session has expired. Don't worry: Your " "submission has been saved." @@ -708,7 +731,7 @@ msgstr "" "Por favor, identifquese de nuevo porque su sesin ha caducado. No se " "preocupe: se ha guardado su envo." -#: contrib/admin/views/decorators.py:68 +#: 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." @@ -716,187 +739,253 @@ msgstr "" "Parece que su navegador no est configurado para aceptar cookies. Actvelas " "por favor, recargue esta pgina, e intntelo de nuevo." -#: contrib/admin/views/decorators.py:82 +#: contrib/admin/views/decorators.py:83 msgid "Usernames cannot contain the '@' character." msgstr "Los nombres de usuario no pueden contener el carcter '@'." -#: contrib/admin/views/decorators.py:84 +#: contrib/admin/views/decorators.py:85 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "" "Su direccin de correo no es su nombre de usuario. Pruebe con '%s' en su " "lugar." -#: contrib/admin/views/main.py:226 +#: contrib/admin/views/main.py:223 msgid "Site administration" msgstr "Sitio administrativo" -#: contrib/admin/views/main.py:260 +#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:14 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "Se aadi con xito el %(name)s \"%(obj)s\"." +msgstr "Se agreg con xito el %(name)s \"%(obj)s\"." -#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348 +#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347 +#: contrib/admin/views/auth.py:19 msgid "You may edit it again below." -msgstr "Puede editarlo de nuevo abajo." +msgstr "Puede modificarlo nuevamente abajo." -#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357 +#: 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:290 +#: contrib/admin/views/main.py:289 #, python-format msgid "Add %s" msgstr "Agregar %s" -#: contrib/admin/views/main.py:336 +#: contrib/admin/views/main.py:335 #, python-format msgid "Added %s." msgstr "Agregado %s." -#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338 -#: contrib/admin/views/main.py:340 +#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337 +#: contrib/admin/views/main.py:339 msgid "and" msgstr "y" -#: contrib/admin/views/main.py:338 +#: contrib/admin/views/main.py:337 #, python-format msgid "Changed %s." msgstr "Modifica %s." -#: contrib/admin/views/main.py:340 +#: contrib/admin/views/main.py:339 #, python-format msgid "Deleted %s." msgstr "Elimina %s." -#: contrib/admin/views/main.py:343 +#: contrib/admin/views/main.py:342 msgid "No fields changed." -msgstr "No ha cambiado ningn campo." +msgstr "No ha modificado ningn campo." -#: contrib/admin/views/main.py:346 +#: contrib/admin/views/main.py:345 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "Se modific con xito el %(name)s \"%(obj)s." -#: contrib/admin/views/main.py:354 +#: 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 el %(name)s \"%(obj)s. Puede editarlo de nuevo abajo." +"Se agreg con xito el %(name)s \"%(obj)s. Puede modificarlo nuevamente " +"abajo." -#: contrib/admin/views/main.py:392 +#: contrib/admin/views/main.py:391 #, python-format msgid "Change %s" msgstr "Modificar %s" -#: contrib/admin/views/main.py:470 +#: contrib/admin/views/main.py:473 #, python-format msgid "One or more %(fieldname)s in %(name)s: %(obj)s" msgstr "Uno o ms %(fieldname)s en %(name)s: %(obj)s" -#: contrib/admin/views/main.py:475 +#: contrib/admin/views/main.py:478 #, python-format msgid "One or more %(fieldname)s in %(name)s:" msgstr "Uno o ms %(fieldname)s en %(name)s:" -#: contrib/admin/views/main.py:508 +#: contrib/admin/views/main.py:511 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." msgstr "Se elimin con xito el %(name)s \"%(obj)s\"." -#: contrib/admin/views/main.py:511 +#: contrib/admin/views/main.py:514 msgid "Are you sure?" msgstr "Est seguro?" -#: contrib/admin/views/main.py:533 +#: contrib/admin/views/main.py:536 #, python-format msgid "Change history: %s" msgstr "Historia de modificaciones: %s" -#: contrib/admin/views/main.py:567 +#: contrib/admin/views/main.py:570 #, python-format msgid "Select %s" msgstr "Seleccione %s" -#: contrib/admin/views/main.py:567 +#: contrib/admin/views/main.py:570 #, python-format msgid "Select %s to change" msgstr "Seleccione %s a modificar" -#: contrib/admin/views/main.py:743 +#: contrib/admin/views/main.py:756 msgid "Database error" msgstr "Error de base de datos" -#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:289 -#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:297 -#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:300 +#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 +#: contrib/admin/views/doc.py:50 +msgid "tag:" +msgstr "etiqueta:" + +#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 +#: contrib/admin/views/doc.py:81 +msgid "filter:" +msgstr "Filtrar:" + +#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 +#: contrib/admin/views/doc.py:139 +msgid "view:" +msgstr "ver:" + +#: contrib/admin/views/doc.py:164 +#, python-format +msgid "App %r not found" +msgstr "App %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" + +#: contrib/admin/views/doc.py:183 +#, python-format +msgid "the related `%s.%s` object" +msgstr "El objeto relacionado `%s.%s`" + +#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +msgid "model:" +msgstr "modelo:" + +#: contrib/admin/views/doc.py:214 +#, python-format +msgid "related `%s.%s` objects" +msgstr "objetos relacionados `%s.%s`" + +#: contrib/admin/views/doc.py:219 +#, python-format +msgid "all %s" +msgstr "todos %s" + +#: contrib/admin/views/doc.py:224 +#, python-format +msgid "number of %s" +msgstr "nmero de %s" + +#: contrib/admin/views/doc.py:229 +#, python-format +msgid "Fields on %s objects" +msgstr "Capos en %s objetos" + +#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309 +#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312 msgid "Integer" msgstr "Entero" -#: contrib/admin/views/doc.py:280 +#: contrib/admin/views/doc.py:292 msgid "Boolean (Either True or False)" msgstr "Booleano (Verdadero o Falso)" -#: contrib/admin/views/doc.py:281 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311 #, python-format msgid "String (up to %(maxlength)s)" msgstr "Cadena (mximo %(maxlength)s)" -#: contrib/admin/views/doc.py:282 +#: contrib/admin/views/doc.py:294 msgid "Comma-separated integers" msgstr "Enteros separados por comas" -#: contrib/admin/views/doc.py:283 +#: contrib/admin/views/doc.py:295 msgid "Date (without time)" msgstr "Fecha (sin hora)" -#: contrib/admin/views/doc.py:284 +#: contrib/admin/views/doc.py:296 msgid "Date (with time)" msgstr "Fecha (con hora)" -#: contrib/admin/views/doc.py:285 +#: contrib/admin/views/doc.py:297 msgid "E-mail address" msgstr "Direccin de correo electrnico" -#: contrib/admin/views/doc.py:286 contrib/admin/views/doc.py:287 -#: contrib/admin/views/doc.py:290 +#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:302 msgid "File path" msgstr "Ruta de archivo" -#: contrib/admin/views/doc.py:288 +#: contrib/admin/views/doc.py:300 msgid "Decimal number" msgstr "Nmero decimal" -#: contrib/admin/views/doc.py:294 +#: contrib/admin/views/doc.py:306 msgid "Boolean (Either True, False or None)" msgstr "Booleano (Verdadero, Falso o Nulo)" -#: contrib/admin/views/doc.py:295 +#: contrib/admin/views/doc.py:307 msgid "Relation to parent model" msgstr "Relacin con el modelo padre" -#: contrib/admin/views/doc.py:296 +#: contrib/admin/views/doc.py:308 msgid "Phone number" msgstr "Nmero de telfono" -#: contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:313 msgid "Text" msgstr "Texto" -#: contrib/admin/views/doc.py:302 +#: contrib/admin/views/doc.py:314 msgid "Time" msgstr "Hora" -#: contrib/admin/views/doc.py:304 +#: contrib/admin/views/doc.py:316 msgid "U.S. state (two uppercase letters)" msgstr "Estado de los EEUU (dos letras maysculas)" -#: contrib/admin/views/doc.py:305 +#: contrib/admin/views/doc.py:317 msgid "XML text" msgstr "Texto XML" +#: contrib/admin/views/doc.py:339 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s no parece ser un objeto urlpattern" + +#: contrib/admin/views/auth.py:25 +msgid "Add user" +msgstr "Agregar usuario" + #: contrib/admin/templates/widget/file.html:2 msgid "Currently:" msgstr "Actualmente" @@ -916,7 +1005,7 @@ msgstr "Hora:" #: 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:24 +#: contrib/admin/templates/admin/base.html:25 #: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 @@ -927,7 +1016,7 @@ msgstr "Documentaci #: 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:24 +#: contrib/admin/templates/admin/base.html:25 #: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 @@ -948,7 +1037,7 @@ msgstr "Cambiar contrase #: contrib/admin/templates/admin/change_list.html:6 #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/change_form.html:13 -#: contrib/admin/templates/admin/base.html:29 +#: contrib/admin/templates/admin/base.html:30 #: contrib/admin/templates/admin/delete_confirmation.html:6 #: contrib/admin/templates/admin/invalid_setup.html:4 #: contrib/admin/templates/registration/password_change_done.html:4 @@ -996,8 +1085,8 @@ msgstr "Agregar %(name)s" #: contrib/admin/templates/admin/filter.html:2 #, python-format -msgid " By %(title)s " -msgstr " Por %(title)s " +msgid " By %(filter_title)s " +msgstr " Por %(filter_title)s " #: contrib/admin/templates/admin/500.html:4 msgid "Server error" @@ -1053,6 +1142,11 @@ msgstr "Administraci msgid "Models available in the %(name)s application." msgstr "Modelos disponibles en la aplicacin %(name)s." +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + #: contrib/admin/templates/admin/index.html:28 #: contrib/admin/templates/admin/change_form.html:15 msgid "Add" @@ -1113,7 +1207,7 @@ msgstr "Ordenaci msgid "Order:" msgstr "Orden:" -#: contrib/admin/templates/admin/base.html:24 +#: contrib/admin/templates/admin/base.html:25 msgid "Welcome," msgstr "Bienvenido," @@ -1125,22 +1219,22 @@ msgstr "Eliminar" #: contrib/admin/templates/admin/delete_confirmation.html:14 #, python-format msgid "" -"Deleting the %(object_name)s '%(object)s' would result in deleting related " -"objects, but your account doesn't have permission to delete the following " -"types of objects:" +"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 '%(object)s' provocara la eliminacin de " -"objetos relacionados, pero su cuenta no tiene permiso para eliminar los " +"Eliminar el %(object_name)s '%(escaped_object)s' provocara la eliminacin " +"de objetos relacionados, pero su cuenta no tiene permiso para eliminar los " "siguientes tipos de objetos:" #: contrib/admin/templates/admin/delete_confirmation.html:21 #, python-format msgid "" -"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of " -"the following related items will be deleted:" +"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 \"%(object)s\"? Se " -"eliminarn los siguientes objetos relacionados:" +"Est seguro de que quiere eliminar los %(object_name)s \"%(escaped_object)s" +"\"? Se eliminarn los siguientes objetos relacionados:" #: contrib/admin/templates/admin/delete_confirmation.html:26 msgid "Yes, I'm sure" @@ -1172,6 +1266,30 @@ msgstr "" "tablas de la misma hayan sido creadas, y asegrese de que el usuario " "apropiado tenga permisos de escritura en la base de datos." +#: 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, ingrese un nombre de usuario y una contrasea. Luego podr " +"configurar opciones adicionales." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "Nombre de usuario:" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +msgid "Password" +msgstr "Contrasea:" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +msgid "Password (again)" +msgstr "Contrasea (de nuevo)" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +msgid "Enter the same password as above, for verification." +msgstr "Para verificacin, ingrese la misma contrasea que ingres arriba." + #: 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 @@ -1359,26 +1477,6 @@ msgid "As above, but opens the admin page in a new window." msgstr "" "Como antes, pero abre la pgina de administracin en una nueva ventana." -#: utils/translation.py:363 -msgid "DATE_FORMAT" -msgstr "j N Y" - -#: utils/translation.py:364 -msgid "DATETIME_FORMAT" -msgstr "j N Y P" - -#: utils/translation.py:365 -msgid "TIME_FORMAT" -msgstr "P" - -#: utils/translation.py:381 -msgid "YEAR_MONTH_FORMAT" -msgstr "F Y" - -#: utils/translation.py:382 -msgid "MONTH_DAY_FORMAT" -msgstr "j \\de F" - #: utils/dates.py:6 msgid "Monday" msgstr "Lunes" @@ -1567,115 +1665,143 @@ msgid_plural "minutes" msgstr[0] "minuto" msgstr[1] "minutos" -#: conf/global_settings.py:37 +#: 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" + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "rabe" + +#: conf/global_settings.py:40 msgid "Bengali" msgstr "Bengal" -#: conf/global_settings.py:38 +#: conf/global_settings.py:41 msgid "Czech" msgstr "Checo" -#: conf/global_settings.py:39 +#: conf/global_settings.py:42 msgid "Welsh" msgstr "Gals" -#: conf/global_settings.py:40 +#: conf/global_settings.py:43 msgid "Danish" msgstr "Dans" -#: conf/global_settings.py:41 +#: conf/global_settings.py:44 msgid "German" msgstr "Alemn" -#: conf/global_settings.py:42 +#: conf/global_settings.py:45 msgid "Greek" msgstr "Griego" -#: conf/global_settings.py:43 +#: conf/global_settings.py:46 msgid "English" msgstr "Ingls" -#: conf/global_settings.py:44 +#: conf/global_settings.py:47 msgid "Spanish" msgstr "Espaol" -#: conf/global_settings.py:45 +#: conf/global_settings.py:48 msgid "Argentinean Spanish" msgstr "Espaol Argentino" -#: conf/global_settings.py:46 +#: conf/global_settings.py:49 msgid "French" msgstr "Francs" -#: conf/global_settings.py:47 +#: conf/global_settings.py:50 msgid "Galician" msgstr "Gallego" -#: conf/global_settings.py:48 +#: conf/global_settings.py:51 msgid "Hungarian" msgstr "Hngaro" -#: conf/global_settings.py:49 +#: conf/global_settings.py:52 msgid "Hebrew" msgstr "Hebreo" -#: conf/global_settings.py:50 +#: conf/global_settings.py:53 msgid "Icelandic" msgstr "Islands" -#: conf/global_settings.py:51 +#: conf/global_settings.py:54 msgid "Italian" msgstr "Italiano" -#: conf/global_settings.py:52 +#: conf/global_settings.py:55 msgid "Japanese" msgstr "Japons" -#: conf/global_settings.py:53 +#: conf/global_settings.py:56 msgid "Dutch" msgstr "Holands" -#: conf/global_settings.py:54 +#: conf/global_settings.py:57 msgid "Norwegian" msgstr "Noruego" -#: conf/global_settings.py:55 +#: conf/global_settings.py:58 msgid "Brazilian" msgstr "Brasileo" -#: conf/global_settings.py:56 +#: conf/global_settings.py:59 msgid "Romanian" msgstr "Rumano" -#: conf/global_settings.py:57 +#: conf/global_settings.py:60 msgid "Russian" msgstr "Ruso" -#: conf/global_settings.py:58 +#: conf/global_settings.py:61 msgid "Slovak" msgstr "Eslovaco" -#: conf/global_settings.py:59 +#: conf/global_settings.py:62 msgid "Slovenian" msgstr "Esloveno" -#: conf/global_settings.py:60 +#: conf/global_settings.py:63 msgid "Serbian" msgstr "Serbio" -#: conf/global_settings.py:61 +#: conf/global_settings.py:64 msgid "Swedish" msgstr "Sueco" -#: conf/global_settings.py:62 +#: conf/global_settings.py:65 +msgid "Tamil" +msgstr "Tamil" + +#: conf/global_settings.py:66 msgid "Ukrainian" msgstr "Ucraniano" -#: conf/global_settings.py:63 +#: conf/global_settings.py:67 msgid "Simplified Chinese" msgstr "Chino simplificado" -#: conf/global_settings.py:64 +#: conf/global_settings.py:68 msgid "Traditional Chinese" msgstr "Chino tradicional" @@ -1691,47 +1817,51 @@ msgid "%(optname)s with this %(fieldname)s already exists." msgstr "Ya existe %(optname)s con este %(fieldname)s." #: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 -#: db/models/fields/__init__.py:545 db/models/fields/__init__.py:556 +#: db/models/fields/__init__.py:551 db/models/fields/__init__.py:562 #: forms/__init__.py:346 msgid "This field is required." msgstr "Este campo es obligatorio." -#: db/models/fields/__init__.py:337 +#: db/models/fields/__init__.py:340 msgid "This value must be an integer." msgstr "Este valor debe ser un nmero entero." -#: db/models/fields/__init__.py:369 +#: db/models/fields/__init__.py:372 msgid "This value must be either True or False." msgstr "Este valor debe ser True o False." -#: db/models/fields/__init__.py:385 +#: db/models/fields/__init__.py:388 msgid "This field cannot be null." msgstr "Este campo no puede ser nulo." -#: db/models/fields/__init__.py:471 core/validators.py:135 +#: db/models/fields/__init__.py:415 core/validators.py:127 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Introduzca una fecha vlida en formato AAAA-MM-DD." + +#: db/models/fields/__init__.py:477 core/validators.py:135 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "Introduzca una fecha/hora vlida en formato YYYY-MM-DD HH:MM." -#: db/models/fields/__init__.py:565 +#: db/models/fields/__init__.py:571 msgid "Enter a valid filename." msgstr "Introduzca un nombre de achivo vlido" -#: db/models/fields/related.py:43 +#: db/models/fields/related.py:51 #, python-format msgid "Please enter a valid %s." msgstr "Por favor, introduzca un %s vlido." -#: db/models/fields/related.py:579 +#: db/models/fields/related.py:618 msgid "Separate multiple IDs with commas." msgstr " Separe mltiples IDs con comas." -#: db/models/fields/related.py:581 +#: db/models/fields/related.py:620 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Pulse \"Control\", o \"Command\" en un Mac, para seleccionar ms de uno." -#: db/models/fields/related.py:625 +#: db/models/fields/related.py:664 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -1754,29 +1884,29 @@ msgstr[1] "Aseg msgid "Line breaks are not allowed here." msgstr "No se permiten saltos de lnea." -#: forms/__init__.py:485 forms/__init__.py:558 forms/__init__.py:597 +#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599 #, python-format msgid "Select a valid choice; '%(data)s' is not in %(choices)s." msgstr "Seleccione una opcin vlida; '%(data)s' no est en %(choices)s." -#: forms/__init__.py:659 core/validators.py:151 core/validators.py:379 +#: forms/__init__.py:661 core/validators.py:151 core/validators.py:379 msgid "No file was submitted. Check the encoding type on the form." msgstr "" "No se envi un archivo. Verifique el tipo de codificacin en el formulario." -#: forms/__init__.py:661 +#: forms/__init__.py:663 msgid "The submitted file is empty." msgstr "El archivo enviado est vaco." -#: forms/__init__.py:717 +#: forms/__init__.py:719 msgid "Enter a whole number between -32,768 and 32,767." msgstr "Introduzca un nmero entero entre -32,768 y 32,767." -#: forms/__init__.py:727 +#: forms/__init__.py:729 msgid "Enter a positive number." msgstr "Introduzca un nmero positivo." -#: forms/__init__.py:737 +#: forms/__init__.py:739 msgid "Enter a whole number between 0 and 32,767." msgstr "Introduzca un nmero entero entre 0 y 32,767." @@ -1832,10 +1962,6 @@ msgstr "Introduzca un n msgid "Only alphabetical characters are allowed here." msgstr "Slo se admiten caracteres alfabticos." -#: core/validators.py:127 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Introduzca una fecha vlida en formato AAAA-MM-DD." - #: core/validators.py:131 msgid "Enter a valid time in HH:MM format." msgstr "Introduzca una hora vlida en formato HH:MM." @@ -2066,18 +2192,28 @@ msgstr "" "El atributo \"%(attr)s\" de la lnea %(line)s tiene un valor que no es " "vlido. (La lnea empieza por \"%(start)s\".)" -#: template/defaultfilters.py:389 +#: template/defaultfilters.py:401 msgid "yes,no,maybe" msgstr "si,no,tal vez" -#, fuzzy +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "Se cre con xito el %(verbose_name)." + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "Se actualiz con xito el %(verbose_name)s." + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "Se elimin el %(verbose_name)s." + #~ msgid "%(content_type_name)s" #~ msgstr "tipos de contenido" -#, fuzzy -#~ msgid "%(myname)s" -#~ msgstr "Agregar %(name)s" - #~ msgid "%(result_count)s result" #~ msgid_plural "%(counter)s results" #~ msgstr[0] "un resultado" diff --git a/django/conf/locale/fi/LC_MESSAGES/django.mo b/django/conf/locale/fi/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..1e690716fd Binary files /dev/null and b/django/conf/locale/fi/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/fi/LC_MESSAGES/django.po b/django/conf/locale/fi/LC_MESSAGES/django.po new file mode 100644 index 0000000000..9b91982e6b --- /dev/null +++ b/django/conf/locale/fi/LC_MESSAGES/django.po @@ -0,0 +1,2031 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-08-05 14:41+0300\n" +"PO-Revision-Date: 2006-08-12 23:41+0300\n" +"Last-Translator: Antti Kaihola \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: db/models/manipulators.py:302 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "" + +#: db/models/fields/related.py:51 +#, python-format +msgid "Please enter a valid %s." +msgstr "Syöttämäsi %s ei kelpaa." + +#: db/models/fields/related.py:618 +msgid "Separate multiple IDs with commas." +msgstr "Erottele tunnisteet pilkuilla." + +#: db/models/fields/related.py:620 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +" Pidä \"Ctrl\"-näppäin (tai Macin \"Command\") pohjassa valitaksesi useita " +"vaihtoehtoja." + +#: db/models/fields/related.py:664 +#, 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] "Syöttämäsi %(self)s-tunniste %(value)r ei kelpaa." +msgstr[1] "Syöttämäsi %(self)s-tunnisteet %(value)r eivät kelpaa." + +#: db/models/fields/__init__.py:40 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)s, jolla on tämä %(fieldname)s, on jo olemassa." + +#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 +#: db/models/fields/__init__.py:551 db/models/fields/__init__.py:562 +#: forms/__init__.py:346 +msgid "This field is required." +msgstr "Tämä kenttä vaaditaan." + +#: db/models/fields/__init__.py:340 +msgid "This value must be an integer." +msgstr "Tarvitaan kokonaisluku." + +#: db/models/fields/__init__.py:372 +msgid "This value must be either True or False." +msgstr "Tarvitaan tosi (True) tai epätosi (False)." + +#: db/models/fields/__init__.py:388 +msgid "This field cannot be null." +msgstr "Tämän kentän arvo ei voi olla \"null\"." + +#: db/models/fields/__init__.py:415 core/validators.py:127 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Päivämäärän pitää olla muodossa VVVV-KK-PP." + +#: db/models/fields/__init__.py:477 core/validators.py:135 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Ajankohdan pitää olla muodossa VVVV-KK-PP TT:MM." + +#: db/models/fields/__init__.py:571 +msgid "Enter a valid filename." +msgstr "Tiedostonimi ei kelpaa." + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "arabia" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "bengali" + +#: conf/global_settings.py:41 +msgid "Czech" +msgstr "tšekki" + +#: conf/global_settings.py:42 +msgid "Welsh" +msgstr "" + +#: conf/global_settings.py:43 +msgid "Danish" +msgstr "tanska" + +#: conf/global_settings.py:44 +msgid "German" +msgstr "saksa" + +#: conf/global_settings.py:45 +msgid "Greek" +msgstr "kreikka" + +#: conf/global_settings.py:46 +msgid "English" +msgstr "englanti" + +#: conf/global_settings.py:47 +msgid "Spanish" +msgstr "espanja" + +#: conf/global_settings.py:48 +msgid "Argentinean Spanish" +msgstr "Argentiinan espanja" + +#: conf/global_settings.py:49 +msgid "French" +msgstr "ranska" + +#: conf/global_settings.py:50 +msgid "Galician" +msgstr "" + +#: conf/global_settings.py:51 +msgid "Hungarian" +msgstr "unkari" + +#: conf/global_settings.py:52 +msgid "Hebrew" +msgstr "heprea" + +#: conf/global_settings.py:53 +msgid "Icelandic" +msgstr "islanti" + +#: conf/global_settings.py:54 +msgid "Italian" +msgstr "italia" + +#: conf/global_settings.py:55 +msgid "Japanese" +msgstr "japani" + +#: conf/global_settings.py:56 +msgid "Dutch" +msgstr "hollanti" + +#: conf/global_settings.py:57 +msgid "Norwegian" +msgstr "norja" + +#: conf/global_settings.py:58 +msgid "Brazilian" +msgstr "" + +#: conf/global_settings.py:59 +msgid "Romanian" +msgstr "romania" + +#: conf/global_settings.py:60 +msgid "Russian" +msgstr "venäjä" + +#: conf/global_settings.py:61 +msgid "Slovak" +msgstr "" + +#: conf/global_settings.py:62 +msgid "Slovenian" +msgstr "" + +#: conf/global_settings.py:63 +msgid "Serbian" +msgstr "" + +#: conf/global_settings.py:64 +msgid "Swedish" +msgstr "ruotsi" + +#: conf/global_settings.py:65 +msgid "Tamil" +msgstr "" + +#: conf/global_settings.py:66 +msgid "Ukrainian" +msgstr "" + +#: conf/global_settings.py:67 +msgid "Simplified Chinese" +msgstr "" + +#: conf/global_settings.py:68 +msgid "Traditional Chinese" +msgstr "" + +#: core/validators.py:63 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Tässä voidaan käyttää vain kirjaimia (a-z), numeroita (0-9) ja alaviivoja (_)." + +#: core/validators.py:67 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "Tässä voidaan käyttää vain kirjaimia (a-z), numeroita (0-9) sekä ala-, tavu- ja kauttaviivoja (_ - /)." + +#: core/validators.py:75 +msgid "Uppercase letters are not allowed here." +msgstr "Versaalit (ABC) eivät kelpaa tässä." + +#: core/validators.py:79 +msgid "Lowercase letters are not allowed here." +msgstr "Pienet kirjaimet (abc) eivät kelpaa tässä." + +#: core/validators.py:86 +msgid "Enter only digits separated by commas." +msgstr "Vain pilkulla erotetut luvut kelpaavat tässä." + +#: core/validators.py:98 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Syötä sähköpostiosoitteita pilkuilla erotettuina." + +#: core/validators.py:102 +msgid "Please enter a valid IP address." +msgstr "IP-osoite ei kelpaa." + +#: core/validators.py:106 +msgid "Empty values are not allowed here." +msgstr "Tätä kohtaa ei voi jättää tyhjäksi." + +#: core/validators.py:110 +msgid "Non-numeric characters aren't allowed here." +msgstr "Vain numerot (0-9) kelpaavat tässä." + +#: core/validators.py:114 +msgid "This value can't be comprised solely of digits." +msgstr "Tarvitaan vähintään yksi merkki, joka ei ole numero (0-9)." + +#: core/validators.py:119 +msgid "Enter a whole number." +msgstr "Syötä kokonaisluku." + +#: core/validators.py:123 +msgid "Only alphabetical characters are allowed here." +msgstr "Vain kirjaimet kelpaavat tässä." + +#: core/validators.py:131 +msgid "Enter a valid time in HH:MM format." +msgstr "Ajan täytyy olla muodossa TT:MM." + +#: core/validators.py:139 +msgid "Enter a valid e-mail address." +msgstr "Syötä kelvollinen sähköpostiosoite." + +#: core/validators.py:151 core/validators.py:379 forms/__init__.py:661 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Tiedostoa ei lähetetty. Tarkista lomakkeen koodaus (encoding)." + +#: core/validators.py:155 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "Kuva ei kelpaa. Lähettämäsi tiedosto ei ole kuva, tai tiedosto on vioittunut." + +#: core/validators.py:162 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "Osoittessa %s ei ole kelpaavaa kuvaa." + +#: core/validators.py:166 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "Puhelinnumeron tulee olla muodossa XXX-XXX-XXXX. \"%s\" ei kelpaa." + +#: core/validators.py:174 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "Osoitteessa %s ei ole kelpaavaa QuickTime-videota." + +#: core/validators.py:178 +msgid "A valid URL is required." +msgstr "URL-osoite ei kelpaa." + +#: core/validators.py:192 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"HTML-koodi ei kelpaa. Virheilmoitus on:\n" +"%s" + +#: core/validators.py:199 +#, python-format +msgid "Badly formed XML: %s" +msgstr "Vääränmuotoinen XML: %s" + +#: core/validators.py:209 +#, python-format +msgid "Invalid URL: %s" +msgstr "URL-osoite %s ei kelpaa." + +#: core/validators.py:213 core/validators.py:215 +#, python-format +msgid "The URL %s is a broken link." +msgstr "Osoite %s on katkennut linkki." + +#: core/validators.py:221 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Syötä USA:n osavaltion lyhenne." + +#: core/validators.py:236 +#, 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] "Sanaa \"%s\" ei saa käyttää tässä." +msgstr[1] "Sanoja \"%s\" ei saa käyttää tässä." + +#: core/validators.py:243 +#, python-format +msgid "This field must match the '%s' field." +msgstr "" + +#: core/validators.py:262 +msgid "Please enter something for at least one field." +msgstr "Täytä ainakin yksi kenttä." + +#: core/validators.py:271 core/validators.py:282 +msgid "Please enter both fields or leave them both empty." +msgstr "Täytä tai jätä tyhjäksi kummatkin kentät." + +#: core/validators.py:289 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Tämä kenttä pitää täyttää, jos %(field)s on %(value)s." + +#: core/validators.py:301 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Tämä kenttä pitää täyttää, jos %(field)s ei ole %(value)s." + +#: core/validators.py:320 +msgid "Duplicate values are not allowed." +msgstr "Samaa arvoa ei voi käyttää kahdesti." + +#: core/validators.py:343 +#, python-format +msgid "This value must be a power of %s." +msgstr "Tämän luvun on oltava %s:n potenssi." + +#: core/validators.py:354 +msgid "Please enter a valid decimal number." +msgstr "Desimaaliluku ei kelpaa." + +#: core/validators.py:356 +#, 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] "Desimaaliluvussa saa tässä olla yhteensä vain %s merkitsevä numero. Huomaa, että desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)." +msgstr[1] "Desimaaliluvussa saa tässä olla yhteensä vain %s merkitsevää numeroa. Huomaa, että desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)." + +#: core/validators.py:359 +#, python-format +msgid "" +"Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "" +"Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "Desimaaliluvun kokonaisosassa saa tässä olla vain %s numero. Huomaa, että desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)." +msgstr[1] "Desimaaliluvun kokonaisosassa saa tässä olla vain %s numeroa. Huomaa, että desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)." + +#: core/validators.py:362 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "" +"Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "Tässä saa olla vain %s desimaali. Huomaa, että desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)." +msgstr[1] "Tässä saa olla vain %s desimaalia. Huomaa, että desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)." + +#: core/validators.py:372 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Lähetä vähintään %s tavun kokoinen tiedosto." + +#: core/validators.py:373 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Lähetä enintään %s tavun kokoinen tiedosto." + +#: core/validators.py:390 +msgid "The format for this field is wrong." +msgstr "Muoto ei kelpaa." + +#: core/validators.py:405 +msgid "This field is invalid." +msgstr "Tämä arvo ei kelpaa." + +#: core/validators.py:441 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "" + +#: core/validators.py:444 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "Osoitteesta %(url)s saatiin virheellinen Content-Type '%(contenttype)s'." + +#: core/validators.py:477 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "Rivillä %(line)s oleva tagi %(tag)s pitää sulkea. (Rivi alkaa \"%(start)s\")" + +#: core/validators.py:481 +#, python-format +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "Rivillä %(line)s on tekstiä, joka ei kelpaa tässä yhteydessä. (Rivi alkaa \"%(start)s\")" + +#: core/validators.py:486 +#, python-format +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "Rivillä %(line)s attribuutti %(attr)s ei kelpaa. (Rivi alkaa \"%(start)s\")" + +#: core/validators.py:491 +#, python-format +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "Rivillä %(line)s tagi \"<%(tag)s>\" ei kelpaa. (Rivi alkaa \"%(start)s\")" + +#: core/validators.py:495 +#, python-format +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "Rivillä %(line)s yhdestä tagista puuttuu yksi tai useampi attribuutti. (Rivi alkaa \"%(start)s\")" + +#: core/validators.py:500 +#, python-format +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "Rivillä %(line)s attribuutin %(attr)s arvo ei kelpaa. (Rivi alkaa \"%(start)s\")" + +#: contrib/auth/forms.py:52 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "Selaimesi ei salli evästeitä. Sisäänkirjautuminen vaatii evästeen." + +#: contrib/auth/forms.py:59 contrib/admin/views/decorators.py:10 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "Käyttäjätunnus tai salasana ei kelpaa. Huomaa, että isot ja pienet kirjaimet ovat merkitseviä." + +#: contrib/auth/forms.py:61 +msgid "This account is inactive." +msgstr "Tämä käyttäjätili ei ole voimassa." + +#: contrib/auth/models.py:38 contrib/auth/models.py:57 +msgid "name" +msgstr "nimi" + +#: contrib/auth/models.py:40 +msgid "codename" +msgstr "koodinimi" + +#: contrib/auth/models.py:42 +msgid "permission" +msgstr "oikeus" + +#: contrib/auth/models.py:43 contrib/auth/models.py:58 +msgid "permissions" +msgstr "oikeudet" + +#: contrib/auth/models.py:60 +msgid "group" +msgstr "ryhmä" + +#: contrib/auth/models.py:61 contrib/auth/models.py:100 +msgid "groups" +msgstr "ryhmät" + +#: contrib/auth/models.py:90 +msgid "username" +msgstr "tunnus" + +#: contrib/auth/models.py:90 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr " Vaaditaan. Enintään 30 kirjanta (a-z), numeroa (0-9) tai alaviivaa (_)." + +#: contrib/auth/models.py:91 +msgid "first name" +msgstr "etunimi" + +#: contrib/auth/models.py:92 +msgid "last name" +msgstr "sukunimi" + +#: contrib/auth/models.py:93 +msgid "e-mail address" +msgstr "sähköposti" + +#: contrib/auth/models.py:94 +msgid "password" +msgstr "salasana" + +#: contrib/auth/models.py:94 +msgid "Use '[algo]$[salt]$[hexdigest]'" +msgstr "(Salasanaa ei näytetä selväkielisenä)" + +#: contrib/auth/models.py:95 +msgid "staff status" +msgstr "ylläpitäjä" + +#: contrib/auth/models.py:95 +msgid "Designates whether the user can log into this admin site." +msgstr "Ylläpitäjillä on pääsy tähän sivuston ylläpito-osioon." + +#: contrib/auth/models.py:96 +msgid "active" +msgstr "voimassa" + +#: contrib/auth/models.py:96 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "Määrää, voiko käyttäjä kirjautua sisään. Tällä voi estää käyttäjätilin käytön poistamatta sitä." + +#: contrib/auth/models.py:97 +msgid "superuser status" +msgstr "pääkäyttäjä" + +#: contrib/auth/models.py:97 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "Antaa käyttäjälle kaikki oikeudet ilman, että niitä täytyy erikseen luetella." + +#: contrib/auth/models.py:98 +msgid "last login" +msgstr "viimeksi kirjautunut" + +#: contrib/auth/models.py:99 +msgid "date joined" +msgstr "liittynyt" + +#: 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." +msgstr "" +"Tässä valittujen oikeuksien lisäksi käyttäjä saa myös kaikki niiden ryhmien " +"oikeudet, joiden jäsen hän on." + +#: contrib/auth/models.py:102 +msgid "user permissions" +msgstr "käyttäjän oikeudet" + +#: contrib/auth/models.py:105 +msgid "user" +msgstr "käyttäjä" + +#: contrib/auth/models.py:106 +msgid "users" +msgstr "käyttäjät" + +#: contrib/auth/models.py:111 +msgid "Personal info" +msgstr "Henkilökohtaiset tiedot" + +#: contrib/auth/models.py:112 +msgid "Permissions" +msgstr "Oikeudet" + +#: contrib/auth/models.py:113 +msgid "Important dates" +msgstr "Tärkeät päivämäärät" + +#: contrib/auth/models.py:114 +msgid "Groups" +msgstr "Ryhmät" + +#: contrib/auth/models.py:256 +msgid "message" +msgstr "viesti" + +#: contrib/auth/views.py:39 +msgid "Logged out" +msgstr "Kirjautunut ulos" + +#: contrib/admin/models.py:16 +msgid "action time" +msgstr "tapahtumahetki" + +#: contrib/admin/models.py:19 +msgid "object id" +msgstr "kohteen tunniste" + +#: contrib/admin/models.py:20 +msgid "object repr" +msgstr "kohteen tiedot" + +#: contrib/admin/models.py:21 +msgid "action flag" +msgstr "tapahtumatyyppi" + +#: contrib/admin/models.py:22 +msgid "change message" +msgstr "selitys" + +#: contrib/admin/models.py:25 +msgid "log entry" +msgstr "lokimerkintä" + +#: contrib/admin/models.py:26 +msgid "log entries" +msgstr "lokimerkinnät" + +#: contrib/admin/filterspecs.py:40 +#, python-format +msgid "" +"

By %s:

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

    Yksi %s:

    \n" +"
      \n" + +#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 +#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 +msgid "All" +msgstr "Kaikki" + +#: contrib/admin/filterspecs.py:109 +msgid "Any date" +msgstr "Mikä tahansa päivä" + +#: contrib/admin/filterspecs.py:110 +msgid "Today" +msgstr "Tänään" + +#: contrib/admin/filterspecs.py:113 +msgid "Past 7 days" +msgstr "Viimeiset 7 päivää" + +#: contrib/admin/filterspecs.py:115 +msgid "This month" +msgstr "Tässä kuussa" + +#: contrib/admin/filterspecs.py:117 +msgid "This year" +msgstr "Tänä vuonna" + +#: contrib/admin/filterspecs.py:143 +msgid "Yes" +msgstr "Kyllä" + +#: contrib/admin/filterspecs.py:143 +msgid "No" +msgstr "Ei" + +#: contrib/admin/filterspecs.py:150 +msgid "Unknown" +msgstr "Tuntematon" + +#: contrib/admin/views/decorators.py:24 +#: contrib/admin/templates/admin/login.html:25 +msgid "Log in" +msgstr "Kirjaudu sisään" + +#: contrib/admin/views/decorators.py:62 +msgid "" +"Please log in again, because your session has expired. Don't worry: Your " +"submission has been saved." +msgstr "Kirjaudu uudelleen sisään, koska istuntosi on mennyt umpeen. Muutoksesi ovat silti tallessa." + +#: 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 "Selaimesi ei salli evästeitä. Muuta asetukset sallimaan evästeet, lataa tämä sivu uudelleen ja yritä toistamiseen." + +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "Käyttäjätunnuksessa ei saa olla '@'-merkkiä." + +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "Käyttäjätunnus ei ole sama kuin sähköpostiosoite. Kokeile '%s'." + +#: contrib/admin/views/main.py:223 +msgid "Site administration" +msgstr "Sivuston ylläpito" + +#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:14 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s\" on nyt lisätty." + +#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:345 +#: contrib/admin/views/auth.py:19 +msgid "You may edit it again below." +msgstr "Voit muokata sitä uudelleen alla." + +#: contrib/admin/views/main.py:269 contrib/admin/views/main.py:354 +#, python-format +msgid "You may add another %s below." +msgstr "Uusi %s on lisättävissä alla." + +#: contrib/admin/views/main.py:287 +#, python-format +msgid "Add %s" +msgstr "Uusi %s" + +#: contrib/admin/views/main.py:333 +#, python-format +msgid "Added %s." +msgstr "Lisätty %s." + +#: contrib/admin/views/main.py:333 contrib/admin/views/main.py:335 +#: contrib/admin/views/main.py:337 +msgid "and" +msgstr "ja" + +#: contrib/admin/views/main.py:335 +#, python-format +msgid "Changed %s." +msgstr "Muokattu: %s." + +#: contrib/admin/views/main.py:337 +#, python-format +msgid "Deleted %s." +msgstr "Poistettu %s." + +#: contrib/admin/views/main.py:340 +msgid "No fields changed." +msgstr "Ei muutoksia kenttiin." + +#: contrib/admin/views/main.py:343 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" on nyt muutettu." + +#: contrib/admin/views/main.py:351 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "%(name)s \"%(obj)s\" on nyt lisätty. Voit muokata sitä uudelleen alla." + +#: contrib/admin/views/main.py:389 +#, python-format +msgid "Change %s" +msgstr "Muokkaa: %s" + +#: contrib/admin/views/main.py:471 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "Yksi tai useampi %(fieldname)s kohteessa %(name)s: %(obj)s" + +#: contrib/admin/views/main.py:476 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "Yksi tai useampi %(fieldname)s kohteessa %(name)s:" + +#: contrib/admin/views/main.py:509 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "%(name)s \"%(obj)s\" on poistettu." + +#: contrib/admin/views/main.py:512 +msgid "Are you sure?" +msgstr "Oletko varma?" + +#: contrib/admin/views/main.py:534 +#, python-format +msgid "Change history: %s" +msgstr "Muokkaushistoria: %s" + +#: contrib/admin/views/main.py:568 +#, python-format +msgid "Select %s" +msgstr "Valitse %s" + +#: contrib/admin/views/main.py:568 +#, python-format +msgid "Select %s to change" +msgstr "Valitse muokattava %s" + +#: contrib/admin/views/main.py:744 +msgid "Database error" +msgstr "Tietokantavirhe" + +#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309 +#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312 +msgid "Integer" +msgstr "Kokonaisluku" + +#: contrib/admin/views/doc.py:292 +msgid "Boolean (Either True or False)" +msgstr "Totuusarvo: joko tosi (True) tai epätosi (False)" + +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311 +#, python-format +msgid "String (up to %(maxlength)s)" +msgstr "Merkkijono (enintään %(maxlength)s merkkiä)" + +#: contrib/admin/views/doc.py:294 +msgid "Comma-separated integers" +msgstr "Pilkulla erotetut kokonaisluvut" + +#: contrib/admin/views/doc.py:295 +msgid "Date (without time)" +msgstr "Päivämäärä" + +#: contrib/admin/views/doc.py:296 +msgid "Date (with time)" +msgstr "Päivämäärä ja kellonaika" + +#: contrib/admin/views/doc.py:297 +msgid "E-mail address" +msgstr "Sähköpostios." + +#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:302 +msgid "File path" +msgstr "Tiedostopolku" + +#: contrib/admin/views/doc.py:300 +msgid "Decimal number" +msgstr "Desimaaliluku" + +#: contrib/admin/views/doc.py:304 contrib/comments/models.py:85 +msgid "IP address" +msgstr "IP-osoite" + +#: contrib/admin/views/doc.py:306 +msgid "Boolean (Either True, False or None)" +msgstr "Totuusarvo: joko tosi (True), epätosi (False) tai ei mikään (None)" + +#: contrib/admin/views/doc.py:307 +msgid "Relation to parent model" +msgstr "Relaatio emomalliin" + +#: contrib/admin/views/doc.py:308 +msgid "Phone number" +msgstr "Puhelinnumero" + +#: contrib/admin/views/doc.py:313 +msgid "Text" +msgstr "Tekstiä" + +#: contrib/admin/views/doc.py:314 +msgid "Time" +msgstr "Kellonaika" + +#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7 +msgid "URL" +msgstr "URL-osoite" + +#: contrib/admin/views/doc.py:316 +msgid "U.S. state (two uppercase letters)" +msgstr "USA:n osavaltio (kaksikirjaiminen versaalein)" + +#: contrib/admin/views/doc.py:317 +msgid "XML text" +msgstr "XML-teksti" + +#: contrib/admin/views/auth.py:25 +msgid "Add user" +msgstr "Uusi käyttäjä" + +#: contrib/admin/templatetags/admin_list.py:230 +msgid "All dates" +msgstr "Kaikki päivät" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Näytä kaikki" + +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/base.html:24 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Documentation" +msgstr "Ohjeita" + +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/base.html:24 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Change password" +msgstr "Vaihda salasana" + +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/base.html:24 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/comments/templates/comments/form.html:6 +msgid "Log out" +msgstr "Kirjaudu ulos" + +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/change_form.html:13 +#: contrib/admin/templates/admin/change_list.html:6 +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/base.html:29 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: 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/password_change_done.html:4 +msgid "Home" +msgstr "Etusivu" + +#: contrib/admin/templates/admin/delete_confirmation.html:9 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "Poista" + +#: 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 "Kohteen '%(escaped_object)s' (%(object_name)s) poisto poistaisi myös siihen liittyviä kohteita, mutta sinulla ei ole oikeutta näiden kohteiden poistamiseen:" + +#: contrib/admin/templates/admin/delete_confirmation.html:21 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "Haluatko varmasti poistaa kohteen \"%(escaped_object)s\" (%(object_name)s)? Myös seuraavat kohteet poistettaisiin samalla:" + +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +msgstr "Kyllä, olen varma" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Sivua ei löydy" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Pahoittelemme, pyydettyä sivua ei voitu löytää." + +#: contrib/admin/templates/admin/change_form.html:15 +#: contrib/admin/templates/admin/index.html:28 +msgid "Add" +msgstr "Lisää uusi" + +#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/object_history.html:5 +msgid "History" +msgstr "Muokkaushistoria" + +#: contrib/admin/templates/admin/change_form.html:21 +msgid "View on site" +msgstr "Näytä lopputulos" + +#: contrib/admin/templates/admin/change_form.html:30 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Korjaa virhe." +msgstr[1] "Korjaa virheet." + +#: contrib/admin/templates/admin/change_form.html:48 +msgid "Ordering" +msgstr "Järjestys" + +#: contrib/admin/templates/admin/change_form.html:51 +msgid "Order:" +msgstr "Järjestysnumero:" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " %(filter_title)s:" + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "Talleta uutena" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "Talleta ja lisää seuraava" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "Talleta välillä ja jatka muokkaamista" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "Talleta ja poistu" + +#: contrib/admin/templates/admin/change_list.html:11 +#, python-format +msgid "Add %(name)s" +msgstr "Lisää uusi %(name)s" + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Sovelluksen %(name)s mallit." + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "Muokkaa" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "Sinulla ei ole oikeutta muokata mitään." + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "Viimeisimmät muutokset" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "Sinun tekemäsi muutokset" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "Ei yhtään" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Django-sivuston ylläpito" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Djangon ylläpito" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "Pvm/klo" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "User" +msgstr "Käyttäjä" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "Toiminto" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "N j, Y, P" + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "Tällä kohteella ei ole muutoshistoriaa. Sitä ei ole lisätty tämän ylläpitosivun avulla." + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Palvelinvirhe" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Palvelinvirhe (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Palvelinvirhe (500)" + +#: 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 "Tietokanta-asennuksessasi on jotain vialla. Varmistu, että sopivat taulut on luotu ja että oikea käyttäjä voi lukea tietokantaa." + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Etsi" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 hakutulas" +msgstr[1] "%(counter)s hakutulosta" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "yhteensä %(full_result_count)s" + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Suodatin" + +#: contrib/admin/templates/admin/login.html:17 +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +msgid "Username:" +msgstr "Käyttäjätunnus" + +#: contrib/admin/templates/admin/login.html:20 +#: contrib/comments/templates/comments/form.html:8 +msgid "Password:" +msgstr "Salasana:" + +#: contrib/admin/templates/admin/login.html:22 +msgid "Have you forgotten your password?" +msgstr "Oletko unohtanut salasanasi?" + +#: contrib/admin/templates/admin/base.html:24 +msgid "Welcome," +msgstr "Tervetuloa," + +#: 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 "Syötä ensin käyttäjätunnus ja salasana. Sen jälkeen voit muokata muita käyttäjän tietoja." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "Käyttäjätunnus" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +msgid "Password" +msgstr "Salasana:" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +msgid "Password (again)" +msgstr "Salasana toistamiseen" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +msgid "Enter the same password as above, for verification." +msgstr "Syötä sama salasana tarkistuksen vuoksi toistamiseen." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "Kirjanmerkkiset" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:5 +msgid "Documentation bookmarklets" +msgstr "Ohjeiden kirjanmerkkiset" + +#: 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

      Asenna kirjanmerkkinen raahaamalla linkki kirjanmerkkien työkalupalkkiin tai napsauttamalla linkkiä oikeanpuoleisella hiiren painikkeella ja valitsemalla kirjanmerkkeihin lisäämisen. Sen jälkeen voit valita kirjanmerkkisen miltä tahansa sivuston sivulta. Huomaa, että jotkin näistä kirjanmerkkisistä toimivat vain, jos selaat sivustoa \"paikalliseksi\" määritellyltä tietokoneelta (kysy lisätietoja verkkonne ylläpitäjältä).

      \n" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "Documentation for this page" +msgstr "Tämän sivun ohjeita" + +#: 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 "Vie avoinna olevan sivun luoneen näkymän ohjeisiin." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "Show object ID" +msgstr "Näytä kohteen tunniste" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:23 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "Näyttää yksittäistä kohdetta vastaavilla sivuilla kohteen tyypin ja tunnisteen." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Edit this object (current window)" +msgstr "Muokkaa tätä kohdetta (tässä ikkunassa)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:26 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "Siirtyy yksittäistä kohdetta vastaavalta sivulta kohteen ylläpitosivulle." + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "Edit this object (new window)" +msgstr "Muokkaa tätä kohdetta (uudessa ikkunassa)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:29 +msgid "As above, but opens the admin page in a new window." +msgstr "Kuten yllä, mutta avaa ylläpitosivun uuteen ikkunaan." + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Pvm:" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Klo:" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Tällä hetkellä:" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Muokkaa:" + +#: 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 "Salasanan nollaus" + +#: 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 "" +"Unohditko salasanasi? Syötä alle sähköpostiosoitteesi, niin \n" +"lähetämme sinulle uuden salasanan." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "Sähköpostiosoite:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Nollaa salasana" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "Sait tämän viestin, koska pyysit uutta salasanaa" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "sivuston %(site_name)s käyttäjätilillesi" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "Uusi salasanasi on: %(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 "Voit vaihtaa salasanan sivulla:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "Käyttäjätunnuksesi siltä varalta, että olet unohtanut sen:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "Kiitos vierailustasi sivuillemme!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "%(site_name)s ylläpitäjät" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Kiitos sivuillamme viettämästäsi ajasta." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Kirjaudu uudelleen sisään" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Salasanan nollaus onnistui" + +#: 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 "" +"Uusi salasanasi on lähetetty antamaasi sähköpostiosoitteeseen.\n" +"Se saapuu tuota pikaa." + +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:4 +msgid "Password change" +msgstr "Salasanan muuttaminen" + +#: 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 "" +"Syötä vanha salasanasi varmistukseksi, ja syötä sitten uusi salasanasi\n" +"kaksi kertaa, jotta se tulee varmasti oikein." + +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "Vanha salasana:" + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "Uusi salasana:" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "Varmista uusi salasana:" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "Vaihda salasana" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "Salasanan muuttaminen onnistui" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "Salasanasi on muutettu." + +#: contrib/sites/models.py:10 +msgid "domain name" +msgstr "domain-nimi" + +#: contrib/sites/models.py:11 +msgid "display name" +msgstr "näyttönimi" + +#: contrib/sites/models.py:15 +msgid "site" +msgstr "sivusto" + +#: contrib/sites/models.py:16 +msgid "sites" +msgstr "sivustot" + +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Esimerkki: '/tietoja/yhteystiedot/'. Varmista, että sekä alussa että lopussa " +"on kauttaviiva." + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "otsikko" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "sisältö" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "salli kommentit" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "mallipohjan nimi" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "Esimerkiksi: 'flatpages/yhteydenotto.html'. Jos tämä jätetään tyhjäksi, käytetään oletuspohjaa 'flatpages/default.html'." + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "vaaditaan rekisteröityminen" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "Jos tämä kohta on valittu, vain sisäänkirjautuneet käyttäjät näkevät sivun." + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "tekstisivu" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "tekstisivut" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "ohjaa osoitteesta" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Tässä on käytettävä absoluuttista polkua ilman verkkotunnusta. Esimerkki: " +"'\\\n" +"events/search/'" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "ohjaa osoitteeseen" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Tässä on käytettävä joko absoluuttista polkua (kuten yllä) tai täydellistä " +"'http://'-alkuista URL-osoitetta." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "edelleenohjaus" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "edelleenohjaukset" + +#: contrib/comments/models.py:67 contrib/comments/models.py:166 +msgid "object ID" +msgstr "kohteen tunniste" + +#: contrib/comments/models.py:68 +msgid "headline" +msgstr "otsikko" + +#: contrib/comments/models.py:69 contrib/comments/models.py:90 +#: contrib/comments/models.py:167 +msgid "comment" +msgstr "kommentti" + +#: contrib/comments/models.py:70 +msgid "rating #1" +msgstr "1. pisteytys" + +#: contrib/comments/models.py:71 +msgid "rating #2" +msgstr "2. pisteytys" + +#: contrib/comments/models.py:72 +msgid "rating #3" +msgstr "3. pisteytys" + +#: contrib/comments/models.py:73 +msgid "rating #4" +msgstr "4. pisteytys" + +#: contrib/comments/models.py:74 +msgid "rating #5" +msgstr "5. pisteytys" + +#: contrib/comments/models.py:75 +msgid "rating #6" +msgstr "6. pisteytys" + +#: contrib/comments/models.py:76 +msgid "rating #7" +msgstr "7. pisteytys" + +#: contrib/comments/models.py:77 +msgid "rating #8" +msgstr "8. pisteytys" + +#: contrib/comments/models.py:82 +msgid "is valid rating" +msgstr "on sallittu pisteytys" + +#: contrib/comments/models.py:83 contrib/comments/models.py:169 +msgid "date/time submitted" +msgstr "lähetyshetki" + +#: contrib/comments/models.py:84 contrib/comments/models.py:170 +msgid "is public" +msgstr "on julkinen" + +#: contrib/comments/models.py:86 +msgid "is removed" +msgstr "on poistettu" + +#: 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 "" +"Rastita jos kommentti on asiaankuulumaton. Kommentin tilalla näytetään\n" +"viesti \"Tämä kommentti on poistettu\"." + +#: contrib/comments/models.py:91 +msgid "comments" +msgstr "kommentit" + +#: contrib/comments/models.py:131 contrib/comments/models.py:207 +msgid "Content object" +msgstr "Kommentoitu kohde" + +#: 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 "" +" Kirjoittanut %(user)s, pvm %(date)s\\n\n" +" \\n\n" +" %(comment)s\\n\n" +" \\n\n" +" http://%(domain)s%(url)s" + +#: contrib/comments/models.py:168 +msgid "person's name" +msgstr "henkilön nimi" + +#: contrib/comments/models.py:171 +msgid "ip address" +msgstr "IP-osoite" + +#: contrib/comments/models.py:173 +msgid "approved by staff" +msgstr "ylläpidon hyväksymä" + +#: contrib/comments/models.py:176 +msgid "free comment" +msgstr "vapaa kommentti" + +#: contrib/comments/models.py:177 +msgid "free comments" +msgstr "vapaat kommentit" + +#: contrib/comments/models.py:233 +msgid "score" +msgstr "pisteet" + +#: contrib/comments/models.py:234 +msgid "score date" +msgstr "pisteytyspäivä" + +#: contrib/comments/models.py:237 +msgid "karma score" +msgstr "karma-pisteytys" + +#: contrib/comments/models.py:238 +msgid "karma scores" +msgstr "karma-pisteytykset" + +#: contrib/comments/models.py:242 +#, python-format +msgid "%(score)d rating by %(user)s" +msgstr "%(score)d pistettä käyttäjältä %(user)s" + +#: contrib/comments/models.py:258 +#, python-format +msgid "" +"This comment was flagged by %(user)s:\n" +"\n" +"%(text)s" +msgstr "" +" %(user)s on merkinnyt tämän kommentin:\\n\n" +" \\n\n" +" %(text)s" + +#: contrib/comments/models.py:265 +msgid "flag date" +msgstr "merkintäpäivä" + +#: contrib/comments/models.py:268 +msgid "user flag" +msgstr "käyttäjän merkki" + +#: contrib/comments/models.py:269 +msgid "user flags" +msgstr "käyttäjien merkit" + +#: contrib/comments/models.py:273 +#, python-format +msgid "Flag by %r" +msgstr "Käyttäjän %r merkki" + +#: contrib/comments/models.py:278 +msgid "deletion date" +msgstr "poistamispäivä" + +#: contrib/comments/models.py:280 +msgid "moderator deletion" +msgstr "valvojan poisto" + +#: contrib/comments/models.py:281 +msgid "moderator deletions" +msgstr "valvojien poistot" + +#: contrib/comments/models.py:285 +#, python-format +msgid "Moderator deletion by %r" +msgstr "Valvojan %r poisto" + +#: contrib/comments/views/karma.py:19 +msgid "Anonymous users cannot vote" +msgstr "Anonyymit käyttäjät eivät voi äänestää" + +#: contrib/comments/views/karma.py:23 +msgid "Invalid comment ID" +msgstr "Kommentin tunniste on virheellinen" + +#: contrib/comments/views/karma.py:25 +msgid "No voting for yourself" +msgstr "Itseään ei voi äänestää" + +#: contrib/comments/views/comments.py:27 +msgid "" +"This rating is required because you've entered at least one other rating." +msgstr "Tämä pisteytys on annettava, koska olet syöttänyt ainakin yhden muunkin pisteytyksen." + +#: 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] "" +msgstr[1] "" + +# Mitä "sketchy user" tarkoittaa? +#: contrib/comments/views/comments.py:116 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" +msgstr "" +"Tämä on \"sketchy\"-käyttäjän kirjoittama kommentti:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:188 +#: contrib/comments/views/comments.py:280 +msgid "Only POSTs are allowed" +msgstr "Vain POST-kutsut sallittu" + +#: contrib/comments/views/comments.py:192 +#: contrib/comments/views/comments.py:284 +msgid "One or more of the required fields wasn't submitted" +msgstr "Yksi tai useampi vaadittu kenttä on jäänyt täyttämättä" + +#: contrib/comments/views/comments.py:196 +#: contrib/comments/views/comments.py:286 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "Kommenttilomaketta on käpälöity (turvallisuusrike)" + +#: 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 "Kommenttilomakkeen 'target'-parametri ei kelpaa -- kohteen ID oli virheellinen" + +#: contrib/comments/views/comments.py:257 +#: contrib/comments/views/comments.py:321 +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "Kommenttilomake ei pyytänyt esikatselua tai lähettämistä" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Unohditko salasanasi?" + +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "Pisteytykset" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "Vaaditaan" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "Vapaavalintainen" + +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "Lähetä valokuva" + +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "Kommentti:" + +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "Esikatsele kommenttia" + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "Nimesi:" + +#: contrib/sessions/models.py:51 +msgid "session key" +msgstr "istunnon avain" + +#: contrib/sessions/models.py:52 +msgid "session data" +msgstr "istunnon tiedot" + +#: contrib/sessions/models.py:53 +msgid "expire date" +msgstr "vanhenee" + +#: contrib/sessions/models.py:57 +msgid "session" +msgstr "istunto" + +#: contrib/sessions/models.py:58 +msgid "sessions" +msgstr "istunnot" + +#: contrib/contenttypes/models.py:20 +msgid "python model class name" +msgstr "mallin python-luokan nimi" + +#: contrib/contenttypes/models.py:23 +msgid "content type" +msgstr "sisältötyyppi" + +#: contrib/contenttypes/models.py:24 +msgid "content types" +msgstr "sisältötyypit" + +#: forms/__init__.py:381 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "Varmista, että tekstin pituus on vähemmän kuin %s merkki." +msgstr[1] "Varmista, että teksti pituus on vähemmän kuin %s merkkiä." + +#: forms/__init__.py:386 +msgid "Line breaks are not allowed here." +msgstr "Rivinvaihtoja ei voi käyttää." + +#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "Valinta ei kelpaa; '%(data)s' ei löydy vaihtoehtojen %(choices)s joukosta." + +#: forms/__init__.py:663 +msgid "The submitted file is empty." +msgstr "Lähetetty tiedosto on tyhjä." + +#: forms/__init__.py:719 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Syötä kokonaisluku väliltä -32768 ja 32767." + +#: forms/__init__.py:729 +msgid "Enter a positive number." +msgstr "Syötä positiivinen kokonaisluku." + +#: forms/__init__.py:739 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Syötä kokonaisluku väliltä 0 ja 32767." + +#: utils/dates.py:6 +msgid "Monday" +msgstr "maanantai" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "tiistai" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "keskiviikko" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "torstai" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "perjantai" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "lauantai" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "sunnuntai" + +#: utils/dates.py:14 +msgid "January" +msgstr "tammikuu" + +#: utils/dates.py:14 +msgid "February" +msgstr "helmikuu" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "March" +msgstr "maaliskuu" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "April" +msgstr "huhtikuu" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "May" +msgstr "toukokuu" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "June" +msgstr "kesäkuu" + +#: utils/dates.py:15 utils/dates.py:27 +msgid "July" +msgstr "heinäkuu" + +#: utils/dates.py:15 +msgid "August" +msgstr "elokuu" + +#: utils/dates.py:15 +msgid "September" +msgstr "syyskuu" + +#: utils/dates.py:15 +msgid "October" +msgstr "lokakuu" + +#: utils/dates.py:15 +msgid "November" +msgstr "marraskuu" + +#: utils/dates.py:16 +msgid "December" +msgstr "joulukuu" + +#: utils/dates.py:19 +msgid "jan" +msgstr "tam" + +#: utils/dates.py:19 +msgid "feb" +msgstr "hel" + +#: utils/dates.py:19 +msgid "mar" +msgstr "maa" + +#: utils/dates.py:19 +msgid "apr" +msgstr "huh" + +#: utils/dates.py:19 +msgid "may" +msgstr "tou" + +#: utils/dates.py:19 +msgid "jun" +msgstr "kes" + +#: utils/dates.py:20 +msgid "jul" +msgstr "hei" + +#: utils/dates.py:20 +msgid "aug" +msgstr "elo" + +#: utils/dates.py:20 +msgid "sep" +msgstr "syy" + +#: utils/dates.py:20 +msgid "oct" +msgstr "lok" + +#: utils/dates.py:20 +msgid "nov" +msgstr "mar" + +#: utils/dates.py:20 +msgid "dec" +msgstr "jou" + +#: utils/dates.py:27 +msgid "Jan." +msgstr "tammi" + +#: utils/dates.py:27 +msgid "Feb." +msgstr "helmi" + +#: utils/dates.py:28 +msgid "Aug." +msgstr "elo" + +#: utils/dates.py:28 +msgid "Sept." +msgstr "syys" + +#: utils/dates.py:28 +msgid "Oct." +msgstr "loka" + +#: utils/dates.py:28 +msgid "Nov." +msgstr "marras" + +#: utils/dates.py:28 +msgid "Dec." +msgstr "joulu" + +#: utils/timesince.py:12 +msgid "year" +msgid_plural "years" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:13 +msgid "month" +msgid_plural "months" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:14 +msgid "week" +msgid_plural "weeks" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:15 +msgid "day" +msgid_plural "days" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:16 +msgid "hour" +msgid_plural "hours" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:17 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "" +msgstr[1] "" + +#: 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 G:i" + +#: utils/translation/trans_real.py:364 +msgid "TIME_FORMAT" +msgstr "G:i" + +#: utils/translation/trans_real.py:380 +msgid "YEAR_MONTH_FORMAT" +msgstr "N j, Y" + +#: utils/translation/trans_real.py:381 +#, fuzzy +msgid "MONTH_DAY_FORMAT" +msgstr "N j, Y" + +#: template/defaultfilters.py:401 +msgid "yes,no,maybe" +msgstr "kyllä,ei,ehkä" diff --git a/django/conf/locale/fi/LC_MESSAGES/djangojs.mo b/django/conf/locale/fi/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000..34b397e4ba Binary files /dev/null and b/django/conf/locale/fi/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/fi/LC_MESSAGES/djangojs.po b/django/conf/locale/fi/LC_MESSAGES/djangojs.po new file mode 100644 index 0000000000..35aa82e893 --- /dev/null +++ b/django/conf/locale/fi/LC_MESSAGES/djangojs.po @@ -0,0 +1,110 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-12-09 11:51+0100\n" +"PO-Revision-Date: 2006-08-05 15:27+0300\n" +"Last-Translator: Antti Kaihola \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admin/media/js/SelectFilter2.js:33 +#, perl-format +msgid "Available %s" +msgstr "Mahdolliset %s" + +#: contrib/admin/media/js/SelectFilter2.js:41 +msgid "Choose all" +msgstr "Valitse kaikki" + +#: contrib/admin/media/js/SelectFilter2.js:46 +msgid "Add" +msgstr "Lisää uusi" + +#: contrib/admin/media/js/SelectFilter2.js:48 +msgid "Remove" +msgstr "Poista" + +#: contrib/admin/media/js/SelectFilter2.js:53 +#, perl-format +msgid "Chosen %s" +msgstr "Valitut %s" + +#: contrib/admin/media/js/SelectFilter2.js:54 +msgid "Select your choice(s) and click " +msgstr "Valitse vasemmalta ja napsauta " + +#: contrib/admin/media/js/SelectFilter2.js:59 +msgid "Clear all" +msgstr "Tyhjennä kaikki" + +#: contrib/admin/media/js/dateparse.js:26 +#: contrib/admin/media/js/calendar.js:24 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "" +"Tammikuu Helmikuu Maaliskuu Huhtikuu Toukokuu Kesäkuu Heinäkuu Elokuu " +"Syyskuu Lokakuu Marraskuu Joulukuu" + +#: contrib/admin/media/js/dateparse.js:27 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "Sunnuntai Maanantai Tiistai Keskiviikko Torstai Perjantai Lauantai" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "S M T K T P L" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 +msgid "Now" +msgstr "Nyt" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48 +msgid "Clock" +msgstr "Kello" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77 +msgid "Choose a time" +msgstr "Valitse kellonaika" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +msgid "Midnight" +msgstr "24" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +msgid "6 a.m." +msgstr "06" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +msgid "Noon" +msgstr "12" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168 +msgid "Cancel" +msgstr "Peruuta" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162 +msgid "Today" +msgstr "Tänään" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114 +msgid "Calendar" +msgstr "Kalenteri" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160 +msgid "Yesterday" +msgstr "Eilen" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 +msgid "Tomorrow" +msgstr "Huomenna" diff --git a/django/conf/locale/no/LC_MESSAGES/django.mo b/django/conf/locale/no/LC_MESSAGES/django.mo index 4f55637235..ee2152b5e1 100644 Binary files a/django/conf/locale/no/LC_MESSAGES/django.mo and b/django/conf/locale/no/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/no/LC_MESSAGES/django.po b/django/conf/locale/no/LC_MESSAGES/django.po index 9b3099046d..427879a8f3 100644 --- a/django/conf/locale/no/LC_MESSAGES/django.po +++ b/django/conf/locale/no/LC_MESSAGES/django.po @@ -264,7 +264,7 @@ msgstr "Bare POST er tillatt" #: contrib/comments/views/comments.py:193 #: contrib/comments/views/comments.py:284 msgid "One or more of the required fields wasn't submitted" -msgstr "En eller flere av feltene som er krevd ble ikke sendt." +msgstr "En eller flere av feltene som er påkrevd ble ikke sendt." #: contrib/comments/views/comments.py:197 #: contrib/comments/views/comments.py:286 @@ -371,35 +371,32 @@ msgid "All" msgstr "Alle" #: contrib/admin/filterspecs.py:109 -#, fuzzy msgid "Any date" -msgstr "Alle datoer" +msgstr "Når som helst" #: contrib/admin/filterspecs.py:110 -#, fuzzy msgid "Today" -msgstr "Mondag" +msgstr "I dag" #: contrib/admin/filterspecs.py:113 msgid "Past 7 days" -msgstr "" +msgstr "Siste 7 dager" #: contrib/admin/filterspecs.py:115 msgid "This month" -msgstr "" +msgstr "Denne måneden" #: contrib/admin/filterspecs.py:117 msgid "This year" -msgstr "" +msgstr "I år" #: contrib/admin/filterspecs.py:143 msgid "Yes" -msgstr "" +msgstr "Ja" #: contrib/admin/filterspecs.py:143 -#, fuzzy msgid "No" -msgstr "Nov." +msgstr "Nei" #: contrib/admin/filterspecs.py:150 msgid "Unknown" @@ -443,11 +440,13 @@ msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." msgstr "" +"Vær snill å angi korrekt brukernavn og passord. La merke til at små og " +"store bokstaver er betraktet ulik." #: contrib/admin/views/decorators.py:23 #: contrib/admin/templates/admin/login.html:25 msgid "Log in" -msgstr "Log inn" +msgstr "Logg inn" #: contrib/admin/views/decorators.py:61 msgid "" @@ -473,12 +472,11 @@ msgstr "Brukernavnet kan ikke inneholde '@'" #: contrib/admin/views/decorators.py:84 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "Epost adressen din er ikke brukernavnet ditt, prøv '%s' i stede." +msgstr "E-post adressen din er ikke brukernavnet ditt, prøv '%s' i stede." #: contrib/admin/views/main.py:226 -#, fuzzy msgid "Site administration" -msgstr "Django administrasjon" +msgstr "Nettsted administrasjon" #: contrib/admin/views/main.py:260 #, python-format @@ -502,7 +500,7 @@ msgstr "Ny %s" #: contrib/admin/views/main.py:336 #, python-format msgid "Added %s." -msgstr "La til %s" +msgstr "Lagt til %s" #: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338 #: contrib/admin/views/main.py:340 @@ -559,7 +557,7 @@ msgid "Are you sure?" msgstr "Er du sikker?" #: contrib/admin/views/main.py:533 -#, fuzzy, python-format +#, python-format msgid "Change history: %s" msgstr "Endre historien: %s" @@ -580,7 +578,6 @@ msgid "Integer" msgstr "Heltall" #: contrib/admin/views/doc.py:278 -#, fuzzy msgid "Boolean (Either True or False)" msgstr "Boolean (Enten \"True\" eller \"False\")" @@ -603,7 +600,7 @@ msgstr "Dato/tid" #: contrib/admin/views/doc.py:283 msgid "E-mail address" -msgstr "Epost adresse" +msgstr "E-post adresse" #: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287 msgid "File path" @@ -614,13 +611,12 @@ msgid "Decimal number" msgstr "Desimal tall" #: contrib/admin/views/doc.py:291 -#, fuzzy msgid "Boolean (Either True, False or None)" msgstr "Boolean (enten \"True\", \"False\" eller \"None\")" #: contrib/admin/views/doc.py:292 msgid "Relation to parent model" -msgstr "" +msgstr "Relasjon til forelder modell" #: contrib/admin/views/doc.py:293 msgid "Phone number" @@ -636,7 +632,7 @@ msgstr "Tid" #: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7 msgid "URL" -msgstr "Internettadresse" +msgstr "URL" #: contrib/admin/views/doc.py:301 msgid "U.S. state (two uppercase letters)" @@ -756,12 +752,12 @@ msgstr "Fant ikke siden" #: contrib/admin/templates/admin/404.html:10 msgid "We're sorry, but the requested page could not be found." -msgstr "Beklager, men siden du spør etter finnest ikke." +msgstr "Beklager, men siden du spør etter finnes ikke." #: contrib/admin/templates/admin/index.html:17 #, python-format msgid "Models available in the %(name)s application." -msgstr "" +msgstr "Modeller fra applikasjonen %(name)s." #: contrib/admin/templates/admin/index.html:28 #: contrib/admin/templates/admin/change_form.html:15 @@ -813,7 +809,7 @@ msgid "" "objects, but your account doesn't have permission to delete the following " "types of objects:" msgstr "" -"Vist du sletter %(object_name)s '%(object)s' vill du også slette relaterte " +"Hivs du sletter %(object_name)s '%(object)s' vil du også slette relaterte " "objekter, men du har ikke tillatelse til å slette de følgende objektene:" #: contrib/admin/templates/admin/delete_confirmation.html:21 @@ -836,11 +832,11 @@ msgstr "Av %(title)s " #: contrib/admin/templates/admin/search_form.html:8 msgid "Go" -msgstr "" +msgstr "Gå" #: contrib/admin/templates/admin/change_form.html:21 msgid "View on site" -msgstr "Vis på siden" +msgstr "Vis på nettsted" #: contrib/admin/templates/admin/change_form.html:30 msgid "Please correct the error below." @@ -900,12 +896,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 "" -"Har du glemt passordet ditt? Skriv inn epost adressen din under, så sender " -"vi deg et nytt passord via epost." +"Har du glemt passordet ditt? Skriv inn e-post adressen din under, så sender " +"vi deg et nytt passord via e-post." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" -msgstr "Epost adresse:" +msgstr "E-post adresse:" #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "Reset my password" @@ -917,7 +913,7 @@ msgstr "Takk for å bruke tid på internett siden i dag." #: contrib/admin/templates/registration/logged_out.html:10 msgid "Log in again" -msgstr "Log inn igjen" +msgstr "Logg inn igjen" #: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:10 @@ -929,7 +925,7 @@ msgid "" "We've e-mailed a new password to the e-mail address you submitted. You " "should be receiving it shortly." msgstr "" -"Vi sender deg et nytt passord til epost adressen du oppgav. Du villmotta det " +"Vi sender deg et nytt passord til e-post adressen du oppgav. Du villmotta det " "snart." #: contrib/admin/templates/registration/password_change_form.html:12 @@ -959,7 +955,7 @@ msgstr "Endre passord" #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" msgstr "" -"Du har mottatt denne epost-en fordi du ba om å tilbakestille passordet ditt" +"Du har mottatt denne e-posten fordi du ba om å tilbakestille passordet ditt" #: contrib/admin/templates/registration/password_reset_email.html:3 #, python-format @@ -1036,10 +1032,9 @@ msgid "Edit this object (current window)" msgstr "Endre dette objektet (åpnes i dette vinduet)" #: contrib/admin/templates/admin_doc/bookmarklets.html:26 -#, fuzzy msgid "Jumps to the admin page for pages that represent a single object." msgstr "" -"Hopp til administrasjonsiden for siden som representerer et enkelt objekt." +"Hopp til administrasjonsiden for sidene som representerer et enkelt objekt." #: contrib/admin/templates/admin_doc/bookmarklets.html:28 msgid "Edit this object (new window)" @@ -1051,21 +1046,19 @@ msgstr "Samme som over, men åpner administrasjonsiden i et nytt vindu." #: contrib/admin/templates/widget/date_time.html:3 msgid "Date:" -msgstr "" +msgstr "Dato:" #: contrib/admin/templates/widget/date_time.html:4 -#, fuzzy msgid "Time:" -msgstr "Tid" +msgstr "Tid:" #: contrib/admin/templates/widget/file.html:2 msgid "Currently:" -msgstr "" +msgstr "Nå:" #: contrib/admin/templates/widget/file.html:3 -#, fuzzy msgid "Change:" -msgstr "Endre" +msgstr "Endre:" #: contrib/redirects/models.py:7 msgid "redirect from" @@ -1126,7 +1119,7 @@ msgid "" "Example: 'flatpages/contact_page'. If this isn't provided, the system will " "use 'flatpages/default'." msgstr "" -"Eksempel: 'flatfiler/kontakt_side'. Vist denne ikke denne er gitt, vill " +"Eksempel: 'flatfiler/kontakt_side'. Hvis denne ikke denne er gitt, vill " "'flatfiles/default' bli brukt." #: contrib/flatpages/models.py:14 @@ -1136,7 +1129,7 @@ msgstr "registrering kreves" #: contrib/flatpages/models.py:14 msgid "If this is checked, only logged-in users will be able to view the page." msgstr "" -"Vist denne er krysset av er det bare brukere som er logget inn som kan se " +"Hvis denne er krysset av er det bare brukere som er logget inn som kan se " "siden." #: contrib/flatpages/models.py:18 @@ -1156,24 +1149,20 @@ msgid "codename" msgstr "kodenavn" #: contrib/auth/models.py:17 -#, fuzzy msgid "permission" -msgstr "Rettighet" +msgstr "rettighet" #: contrib/auth/models.py:18 contrib/auth/models.py:27 -#, fuzzy msgid "permissions" -msgstr "Rettigheter" +msgstr "rettigheter" #: contrib/auth/models.py:29 -#, fuzzy msgid "group" -msgstr "Gruppe" +msgstr "gruppe" #: contrib/auth/models.py:30 contrib/auth/models.py:65 -#, fuzzy msgid "groups" -msgstr "Grupper" +msgstr "grupper" #: contrib/auth/models.py:55 msgid "username" @@ -1205,7 +1194,7 @@ msgstr "administrasjons status" #: contrib/auth/models.py:60 msgid "Designates whether the user can log into this admin site." -msgstr "Bestemmer om brukeren kan logge inn på denne administrasjons siden." +msgstr "Bestemmer om brukeren kan logge inn på dette administrasjons sted." #: contrib/auth/models.py:61 msgid "active" @@ -1217,7 +1206,7 @@ msgstr "super bruker" #: contrib/auth/models.py:63 msgid "last login" -msgstr "liste logg inn" +msgstr "siste logg inn" #: contrib/auth/models.py:64 msgid "date joined" @@ -1232,19 +1221,16 @@ msgstr "" "tilgang til gruppene han/hun er i." #: contrib/auth/models.py:67 -#, fuzzy msgid "user permissions" msgstr "Rettigheter" #: contrib/auth/models.py:70 -#, fuzzy msgid "user" -msgstr "Bruker" +msgstr "bruker" #: contrib/auth/models.py:71 -#, fuzzy msgid "users" -msgstr "Brukere" +msgstr "brukere" #: contrib/auth/models.py:76 msgid "Personal info" @@ -1263,9 +1249,8 @@ msgid "Groups" msgstr "Grupper" #: contrib/auth/models.py:219 -#, fuzzy msgid "message" -msgstr "Meldinger" +msgstr "Melding" #: contrib/auth/forms.py:30 msgid "" @@ -1274,9 +1259,8 @@ msgid "" msgstr "" #: contrib/contenttypes/models.py:25 -#, fuzzy msgid "python model class name" -msgstr "python modul navn" +msgstr "python modell klasse navn" #: contrib/contenttypes/models.py:28 msgid "content type" @@ -1312,23 +1296,23 @@ msgstr "domene navn" #: contrib/sites/models.py:11 msgid "display name" -msgstr "vist navn" +msgstr "vise navn" #: contrib/sites/models.py:15 msgid "site" -msgstr "side" +msgstr "nettsted" #: contrib/sites/models.py:16 msgid "sites" -msgstr "sider" +msgstr "nettsteder" #: utils/translation.py:360 msgid "DATE_FORMAT" -msgstr "j. M U" +msgstr "j. M Y" #: utils/translation.py:361 msgid "DATETIME_FORMAT" -msgstr "j. M U - h:i" +msgstr "j. M Y - h:i" #: utils/translation.py:362 msgid "TIME_FORMAT" @@ -1336,7 +1320,7 @@ msgstr "h:i" #: utils/dates.py:6 msgid "Monday" -msgstr "Mondag" +msgstr "Mandag" #: utils/dates.py:6 msgid "Tuesday" @@ -1411,54 +1395,52 @@ msgid "December" msgstr "Desember" #: utils/dates.py:19 -#, fuzzy msgid "jan" -msgstr "og" +msgstr "jan" #: utils/dates.py:19 msgid "feb" -msgstr "" +msgstr "feb" #: utils/dates.py:19 msgid "mar" -msgstr "" +msgstr "mar" #: utils/dates.py:19 msgid "apr" -msgstr "" +msgstr "apr" #: utils/dates.py:19 -#, fuzzy msgid "may" -msgstr "Mai" +msgstr "mai" #: utils/dates.py:19 msgid "jun" -msgstr "" +msgstr "jun" #: utils/dates.py:20 msgid "jul" -msgstr "" +msgstr "jul" #: utils/dates.py:20 msgid "aug" -msgstr "" +msgstr "aug" #: utils/dates.py:20 msgid "sep" -msgstr "" +msgstr "sep" #: utils/dates.py:20 msgid "oct" -msgstr "" +msgstr "okt" #: utils/dates.py:20 msgid "nov" -msgstr "" +msgstr "nov" #: utils/dates.py:20 msgid "dec" -msgstr "" +msgstr "des" #: utils/dates.py:27 msgid "Jan." @@ -1466,7 +1448,7 @@ msgstr "Jan." #: utils/dates.py:27 msgid "Feb." -msgstr "Fef." +msgstr "Feb." #: utils/dates.py:28 msgid "Aug." @@ -1491,40 +1473,38 @@ msgstr "Des." #: utils/timesince.py:12 msgid "year" msgid_plural "years" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "år" +msgstr[1] "år" #: utils/timesince.py:13 msgid "month" msgid_plural "months" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "måned" +msgstr[1] "måndeder" #: utils/timesince.py:14 msgid "week" msgid_plural "weeks" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "uke" +msgstr[1] "uker" #: utils/timesince.py:15 -#, fuzzy msgid "day" msgid_plural "days" -msgstr[0] "Mai" -msgstr[1] "Mai" +msgstr[0] "dag" +msgstr[1] "dager" #: utils/timesince.py:16 msgid "hour" msgid_plural "hours" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "time" +msgstr[1] "timer" #: utils/timesince.py:17 -#, fuzzy msgid "minute" msgid_plural "minutes" -msgstr[0] "side" -msgstr[1] "side" +msgstr[0] "minutt" +msgstr[1] "minutter" #: conf/global_settings.py:37 msgid "Bengali" @@ -1548,7 +1528,7 @@ msgstr "Tysk" #: conf/global_settings.py:42 msgid "Greek" -msgstr "" +msgstr "Gresk" #: conf/global_settings.py:43 msgid "English" @@ -1568,11 +1548,11 @@ msgstr "Galisisk" #: conf/global_settings.py:47 msgid "Hungarian" -msgstr "" +msgstr "Ungarsk" #: conf/global_settings.py:48 msgid "Hebrew" -msgstr "" +msgstr "Hebraiske" #: conf/global_settings.py:49 msgid "Icelandic" @@ -1584,11 +1564,11 @@ msgstr "Italiensk" #: conf/global_settings.py:51 msgid "Japanese" -msgstr "" +msgstr "Japansk" #: conf/global_settings.py:52 msgid "Dutch" -msgstr "" +msgstr "Nederlandsk" #: conf/global_settings.py:53 msgid "Norwegian" @@ -1600,7 +1580,7 @@ msgstr "Brasiliansk" #: conf/global_settings.py:55 msgid "Romanian" -msgstr "Romansk" +msgstr "Rumensk" #: conf/global_settings.py:56 msgid "Russian" @@ -1611,9 +1591,8 @@ msgid "Slovak" msgstr "Slovakisk" #: conf/global_settings.py:58 -#, fuzzy msgid "Slovenian" -msgstr "Slovakisk" +msgstr "Slovensk" #: conf/global_settings.py:59 msgid "Serbian" @@ -1624,9 +1603,8 @@ msgid "Swedish" msgstr "Svensk" #: conf/global_settings.py:61 -#, fuzzy msgid "Ukrainian" -msgstr "Brasiliansk" +msgstr "Ukrainsk" #: conf/global_settings.py:62 msgid "Simplified Chinese" @@ -1634,14 +1612,13 @@ msgstr "Simplifisert Kinesisk" #: conf/global_settings.py:63 msgid "Traditional Chinese" -msgstr "" +msgstr "Tradisjonell Kinesisk" #: core/validators.py:60 msgid "This value must contain only letters, numbers and underscores." msgstr "Dette feltet må bare inneholde bokstaver, nummer og understreker." #: core/validators.py:64 -#, fuzzy msgid "" "This value must contain only letters, numbers, underscores, dashes or " "slashes." @@ -1651,7 +1628,7 @@ msgstr "" #: core/validators.py:72 msgid "Uppercase letters are not allowed here." -msgstr "Tor skrift er ikke tillatt her." +msgstr "Stor bokstaver er ikke tillatt her." #: core/validators.py:76 msgid "Lowercase letters are not allowed here." @@ -1687,19 +1664,19 @@ msgstr "Skriv inn et helt nummer." #: core/validators.py:120 msgid "Only alphabetical characters are allowed here." -msgstr "Bare alfabetiske bokstaber er tillatt her." +msgstr "Bare alfabetiske bokstaver er tillatt her." #: core/validators.py:124 msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Skriv inn en dato i ÅÅÅÅ-MM-DD formatet." +msgstr "Skriv inn en dato i ÅÅÅÅ-MM-DD format." #: core/validators.py:128 msgid "Enter a valid time in HH:MM format." -msgstr "Skriv inn tiden i TT:MM formatet." +msgstr "Skriv inn tiden i TT:MM format." #: core/validators.py:132 db/models/fields/__init__.py:468 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Skriv inn dato og tid i ÅÅÅÅ-MM-DD TT:MM formatet." +msgstr "Skriv inn dato og tid i ÅÅÅÅ-MM-DD TT:MM format." #: core/validators.py:136 msgid "Enter a valid e-mail address." @@ -1722,7 +1699,7 @@ msgstr "Internettadressen %s peker ikke til et godkjent bilde." #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "" -"Telefon nummeret må være i XXX-XXX-XXXX formatet. \"%s\" er ikke godkjent." +"Telefon nummeret må være i XXX-XXX-XXXX format. \"%s\" er ikke godkjent." #: core/validators.py:167 #, python-format @@ -1731,7 +1708,7 @@ msgstr "Internettadressen %s peker ikke til en godkjent QuickTime film." #: core/validators.py:171 msgid "A valid URL is required." -msgstr "En godkjent internettadresse er påbudt." +msgstr "En godkjent internettadresse er påkrevd." #: core/validators.py:185 #, python-format @@ -1739,7 +1716,7 @@ msgid "" "Valid HTML is required. Specific errors are:\n" "%s" msgstr "" -"Godkjent HTML er påbudt. Feilene var:\n" +"Godkjent HTML er påkrevd. Feilene var:\n" "%s" #: core/validators.py:192 @@ -1750,7 +1727,7 @@ msgstr "Ikke godkjent XML: %s" #: core/validators.py:202 #, python-format msgid "Invalid URL: %s" -msgstr "Ikke godkjent internettadresse: %s" +msgstr "Ikke godkjent URL: %s" #: core/validators.py:206 core/validators.py:208 #, python-format @@ -1759,7 +1736,7 @@ msgstr "Internettadresse fører til en side som ikke virker." #: core/validators.py:214 msgid "Enter a valid U.S. state abbreviation." -msgstr "Skriv inn en godkjent amerikansk stats forkortelse." +msgstr "Skriv inn en godkjent amerikansk delstat forkortelse." #: core/validators.py:229 #, python-format @@ -1771,7 +1748,7 @@ msgstr[1] "Pass munnen din! Ordene %s er ikke tillatt her." #: core/validators.py:236 #, python-format msgid "This field must match the '%s' field." -msgstr "Dette felte må være det samme som i '%s' feltet." +msgstr "Dette feltet må være det samme som i '%s' feltet." #: core/validators.py:255 msgid "Please enter something for at least one field." @@ -1784,12 +1761,12 @@ msgstr "Vennligst skriv inn noe i begge felta, eller la dem stå blanke." #: core/validators.py:282 #, python-format msgid "This field must be given if %(field)s is %(value)s" -msgstr "Dette feltet må bare brukes vist %(field)s er lik %(value)s" +msgstr "Dette feltet må bare brukes hvis %(field)s er lik %(value)s" #: core/validators.py:294 #, python-format msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Dette feltet må bare brukes vist %(field)s ikke er lik %(value)s" +msgstr "Dette feltet må bare brukes hvis %(field)s ikke er lik %(value)s" #: core/validators.py:313 msgid "Duplicate values are not allowed." @@ -1824,13 +1801,13 @@ msgstr[1] "Skriv inn et desimal tall med maksimum %s tall bak komma. " #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "" -"Er du sikker på at fila du prøver å laste opp er minimum %s bytes stor?" +"Vær sikker på at fila du prøver å laste opp er minimum %s bytes stor." #: core/validators.py:363 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "" -"Er du sikker på at fila du prøver å laste opp er maksimum %s bytes stor?" +"Vær sikker på at fila du prøver å laste opp er maksimum %s bytes stor." #: core/validators.py:376 msgid "The format for this field is wrong." @@ -1850,7 +1827,7 @@ msgstr "Klarte ikke å motta noe fra %s." msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "" -"Tnternettadressen %(url)s returnerte en ikke godkjent Content-Type '%" +"Internettadressen %(url)s returnerte en ikke godkjent Content-Type '%" "(contenttype)s'." #: core/validators.py:462 @@ -1859,7 +1836,7 @@ msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " "\"%(start)s\".)" msgstr "" -"Vennligst lukk taggen %(tag)s på linje %(line)s. (Linja starer med \"%(start)" +"Vennligst lukk taggen %(tag)s på linje %(line)s. (Linjen starer med \"%(start)" "s\".)" #: core/validators.py:466 @@ -1868,7 +1845,7 @@ msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " "starts with \"%(start)s\".)" msgstr "" -"Noe av teksten som starter på linje %(line)s er ikke tillatt. (Linja starter " +"Noe av teksten som starter på linje %(line)s er ikke tillatt. (Linjen starter " "med \"%(start)s\".)" #: core/validators.py:471 @@ -1877,7 +1854,7 @@ msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" "(start)s\".)" msgstr "" -"\"%(attr)s\" på linje %(line)s er ikke en godkjent tillegg. (Linja starter " +"\"%(attr)s\" på linje %(line)s er ikke en godkjent tillegg. (Linjen starter " "med \"%(start)s\".)" #: core/validators.py:476 @@ -1886,7 +1863,7 @@ msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" "(start)s\".)" msgstr "" -"\"<%(tag)s>\" på linje %(line)s er ikke en godkjent tag. (linja starter med " +"\"<%(tag)s>\" på linje %(line)s er ikke en godkjent tag. (linjen starter med " "\"%(start)s\".)" #: core/validators.py:480 @@ -1895,7 +1872,7 @@ msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " "starts with \"%(start)s\".)" msgstr "" -"En tag på linje %(line)s mangler en av de påbydte tillegga. (linja starter " +"En tag på linje %(line)s mangler en av de påkrevde attributtene. (linjen starter " "med \"%(start)s\".)" #: core/validators.py:485 @@ -1904,13 +1881,13 @@ msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " "starts with \"%(start)s\".)" msgstr "" -"\"%(attr)s\" tillegg på linje $(line)s har en ikke godkjent verdi. (Linja " +"\"%(attr)s\" tillegg på linje $(line)s har en ikke godkjent verdi. (Linjen " "starter med \"%(start)s\".)" #: db/models/manipulators.py:302 -#, fuzzy, python-format +#, python-format msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "$(optname)s med %(fieldname)s finnes allerede." +msgstr "%(object)s med %(type)s finnes allerede for angitt %(field)s." #: db/models/fields/__init__.py:40 #, python-format @@ -1924,37 +1901,31 @@ msgid "This field is required." msgstr "Dette feltet er påkrevd." #: db/models/fields/__init__.py:337 -#, fuzzy msgid "This value must be an integer." -msgstr "Denne verdien må være 'power' av %s." +msgstr "Denne verdien må være et heltall." #: db/models/fields/__init__.py:369 -#, fuzzy msgid "This value must be either True or False." -msgstr "Denne verdien må være 'power' av %s." +msgstr "Denne verdien må være enten \"True\" eller \"False\"." #: db/models/fields/__init__.py:385 -#, fuzzy msgid "This field cannot be null." -msgstr "Dette feltet er feil." +msgstr "Dette feltet kan ikke være null/tom." #: db/models/fields/__init__.py:562 -#, fuzzy msgid "Enter a valid filename." -msgstr "Skriv inn en godkjent e-post adresse." +msgstr "Skriv inn et godkjent fil navn." #: db/models/fields/related.py:43 -#, fuzzy, python-format +#, python-format msgid "Please enter a valid %s." -msgstr "Vennligst skriv inn en godkjent IP adresse." +msgstr "Vennligst skriv inn en/et gyldig %s." #: db/models/fields/related.py:579 -#, fuzzy msgid "Separate multiple IDs with commas." msgstr "Separer Id-ene med kommaer." #: db/models/fields/related.py:581 -#, fuzzy msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" @@ -1965,14 +1936,14 @@ msgstr "" 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] "" -msgstr[1] "" +msgstr[0] "Skriv inn gyldige %(self)s ID-er. Verdien %(value)r er ikke gyldig." +msgstr[1] "Skriv inn gyldige %(self)s ID-er. Verdiene %(value)r er ikke gyldige." #: forms/__init__.py:380 -#, fuzzy, python-format +#, python-format msgid "Ensure your text is less than %s character." msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "Sjekk at teksten er kortere enn %s bokstaver" +msgstr[0] "Sjekk at teksten er kortere enn %s bokstav" msgstr[1] "Sjekk at teksten er kortere enn %s bokstaver" #: forms/__init__.py:385 @@ -1982,7 +1953,7 @@ msgstr "Det er ikke tillatt med flere linjer her." #: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589 #, python-format msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "Velg et av valga; '%(data)s' er ikke i %(choices)s." +msgstr "Velg et gyldig valg; '%(data)s' er ikke i %(choices)s." #: forms/__init__.py:645 msgid "The submitted file is empty." @@ -2002,7 +1973,7 @@ msgstr "Skriv inn et heltall mellom 0 og 32767." #: template/defaultfilters.py:379 msgid "yes,no,maybe" -msgstr "" +msgstr "ja,nei,kanskje" #, fuzzy #~ msgid "Comments" diff --git a/django/conf/locale/no/LC_MESSAGES/djangojs.mo b/django/conf/locale/no/LC_MESSAGES/djangojs.mo index acdc98a7ef..4b23aba4e0 100644 Binary files a/django/conf/locale/no/LC_MESSAGES/djangojs.mo and b/django/conf/locale/no/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/no/LC_MESSAGES/djangojs.po b/django/conf/locale/no/LC_MESSAGES/djangojs.po index befc101881..c6087646e0 100644 --- a/django/conf/locale/no/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/no/LC_MESSAGES/djangojs.po @@ -61,6 +61,15 @@ msgstr "Søndag Mandag Tirsdag Onsdag Torsdag Fredag Lørdag" msgid "S M T W T F S" msgstr "S M T O T F L" +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 +msgid "Show" +msgstr "Vis" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 +msgid "Hide" +msgstr "Skjul" + #: contrib/admin/media/js/admin/DateTimeShortcuts.js:45 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 msgid "Now" @@ -80,7 +89,7 @@ msgstr "24.00" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 msgid "6 a.m." -msgstr "18.00" +msgstr "06.00" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 msgid "Noon" diff --git a/django/conf/locale/pl/LC_MESSAGES/django.mo b/django/conf/locale/pl/LC_MESSAGES/django.mo index f7fad56339..d132fc114e 100644 Binary files a/django/conf/locale/pl/LC_MESSAGES/django.mo and b/django/conf/locale/pl/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/pl/LC_MESSAGES/django.po b/django/conf/locale/pl/LC_MESSAGES/django.po index b6449e22b0..61fc4d0a90 100644 --- a/django/conf/locale/pl/LC_MESSAGES/django.po +++ b/django/conf/locale/pl/LC_MESSAGES/django.po @@ -126,12 +126,10 @@ msgid "approved by staff" msgstr "zaakceptowano" #: contrib/comments/models.py:176 -#, fuzzy msgid "free comment" msgstr "wolny komentarz" #: contrib/comments/models.py:177 -#, fuzzy msgid "free comments" msgstr "wolne komentarze" @@ -144,7 +142,6 @@ msgid "score date" msgstr "data przyznania punktów" #: contrib/comments/models.py:237 -#, fuzzy msgid "karma score" msgstr "ilość punktów" @@ -243,6 +240,9 @@ msgid "" "\n" "%(text)s" msgstr "" +"Ten komentarze został dodany przez użytkownika::\n" +"\n" +"%(text)s" #: contrib/comments/views/comments.py:189 #: contrib/comments/views/comments.py:280 @@ -257,19 +257,20 @@ msgstr "Jedno lub więcej wymaganych pól nie zostało wypełnionych" #: contrib/comments/views/comments.py:197 #: contrib/comments/views/comments.py:286 msgid "Somebody tampered with the comment form (security violation)" -msgstr "" +msgstr "Ktoś próbował obejść zabezpieczenia formularza komentarzy" #: contrib/comments/views/comments.py:207 #: contrib/comments/views/comments.py:292 msgid "" "The comment form had an invalid 'target' parameter -- the object ID was " "invalid" -msgstr "" +msgstr "Formularz komentarza miał niepoprawny parametr 'target' -- ID obiektu było " +"niepoprawne" #: contrib/comments/views/comments.py:257 #: contrib/comments/views/comments.py:321 msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "" +msgstr "Formularz komentarza nie zapewnił obiektów 'preview' ani 'post'" #: contrib/comments/templates/comments/form.html:6 #: contrib/comments/templates/comments/form.html:8 @@ -600,7 +601,7 @@ msgstr "Wartość logiczna (True, False, None - prawda, fałsz lub nic)" #: contrib/admin/views/doc.py:292 msgid "Relation to parent model" -msgstr "" +msgstr "Relacja do modelu rodzica" #: contrib/admin/views/doc.py:293 msgid "Phone number" @@ -794,6 +795,9 @@ msgid "" "objects, but your account doesn't have permission to delete the following " "types of objects:" msgstr "" +"Skasowanie %(object_name)s '%(object)s' spowoduje kasację zależnych " +"obiektów, lecz twoje uprawnienia nie pozwalają na usunięcie następujących " +"typów obiektów:" #: contrib/admin/templates/admin/delete_confirmation.html:21 #, python-format @@ -801,6 +805,8 @@ msgid "" "Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of " "the following related items will be deleted:" msgstr "" +"Czy chcesz skasować %(object_name)s \"%(object)s\"? Wszystkie " +"zależne obiekty zostaną skasowane:" #: contrib/admin/templates/admin/delete_confirmation.html:26 msgid "Yes, I'm sure" @@ -820,11 +826,10 @@ msgid "View on site" msgstr "Pokaż na stronie" #: contrib/admin/templates/admin/change_form.html:30 -#, fuzzy msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Proszę popraw poniższy błąd" -msgstr[1] "Proszę popraw poniższy błąd" +msgstr[1] "Proszę popraw poniższe błędy" #: contrib/admin/templates/admin/change_form.html:48 msgid "Ordering" @@ -965,11 +970,11 @@ msgstr "Zespół %(site_name)s" #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Bookmarklets" -msgstr "" +msgstr "Zakładki" #: contrib/admin/templates/admin_doc/bookmarklets.html:5 msgid "Documentation bookmarklets" -msgstr "" +msgstr "Zakładki Dokumentacji" #: contrib/admin/templates/admin_doc/bookmarklets.html:9 msgid "" @@ -1094,6 +1099,8 @@ msgid "" "Example: 'flatpages/contact_page'. If this isn't provided, the system will " "use 'flatpages/default'." msgstr "" +"Przykład: 'flatpages/contact_page'. Jeżeli nie podane system użyje " +"'flatpages/default'." #: contrib/flatpages/models.py:14 msgid "registration required" @@ -1105,11 +1112,11 @@ msgstr "Jeżeli zaznaczone - tylko zalogowani użytkownicy będą mogli zobaczy #: contrib/flatpages/models.py:18 msgid "flat page" -msgstr "" +msgstr "strona statyczna" #: contrib/flatpages/models.py:19 msgid "flat pages" -msgstr "" +msgstr "strony statyczne" #: contrib/auth/models.py:13 contrib/auth/models.py:26 msgid "name" @@ -1117,7 +1124,7 @@ msgstr "nazwa" #: contrib/auth/models.py:15 msgid "codename" -msgstr "" +msgstr "nazwa kodowa" #: contrib/auth/models.py:17 msgid "permission" @@ -1161,11 +1168,11 @@ msgstr "Użyj '[algo]$[salt]$[hexdigest]'" #: contrib/auth/models.py:60 msgid "staff status" -msgstr "stan w zespole" +msgstr "w zespole" #: contrib/auth/models.py:60 msgid "Designates whether the user can log into this admin site." -msgstr "Oznaczy czy użytkownik może zalogować się do panelu admina." +msgstr "Oznacza czy użytkownik może zalogować się do panelu admina." #: contrib/auth/models.py:61 msgid "active" @@ -1195,15 +1202,14 @@ msgstr "" msgid "user permissions" msgstr "uprawnienia użytkownika" +#kurwa #: contrib/auth/models.py:70 -#, fuzzy msgid "user" -msgstr "Użytkownik" +msgstr "użytkownik" #: contrib/auth/models.py:71 -#, fuzzy msgid "users" -msgstr "Uzytkownicy" +msgstr "użytkownicy" #: contrib/auth/models.py:76 msgid "Personal info" @@ -1222,7 +1228,6 @@ msgid "Groups" msgstr "Grupy" #: contrib/auth/models.py:219 -#, fuzzy msgid "message" msgstr "wiadomość" @@ -1371,7 +1376,6 @@ msgid "December" msgstr "Grudzień" #: utils/dates.py:19 -#, fuzzy msgid "jan" msgstr "sty" @@ -1472,11 +1476,10 @@ msgstr[0] "dzień" msgstr[1] "dni" #: utils/timesince.py:16 -#, fuzzy msgid "hour" msgid_plural "hours" msgstr[0] "godzina" -msgstr[1] "godzina" +msgstr[1] "godzin" #: utils/timesince.py:17 msgid "minute" @@ -1569,7 +1572,6 @@ msgid "Slovak" msgstr "Słowacki" #: conf/global_settings.py:58 -#, fuzzy msgid "Slovenian" msgstr "Słowacki" @@ -1582,9 +1584,8 @@ msgid "Swedish" msgstr "Szwedzki" #: conf/global_settings.py:61 -#, fuzzy msgid "Ukrainian" -msgstr "Brazylijski" +msgstr "Ukraiński" #: conf/global_settings.py:62 msgid "Simplified Chinese" @@ -1715,14 +1716,14 @@ msgstr "Odnośnik %s jest nieprawidłowy." #: core/validators.py:214 msgid "Enter a valid U.S. state abbreviation." -msgstr "Wpisz poprawny kod stanu U.S." +msgstr "Wpisz poprawny kod stanu U.S.A." #: core/validators.py:229 -#, fuzzy, python-format +#, 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] "Nie wolno przeklinać! Słowo %s jest niedozwolone." -msgstr[1] "Nie wolno przeklinać! Słowo %s jest niedozwolone." +msgstr[1] "Nie wolno przeklinać! Słowa %s są niedozwolone." #: core/validators.py:236 #, python-format @@ -1745,11 +1746,11 @@ msgstr "To pole musi być uzupełnione jeśli %(field)s jest %(value)s" #: core/validators.py:294 #, python-format msgid "This field must be given if %(field)s is not %(value)s" -msgstr "" +msgstr "To pole musi być wypełnione jeżeli %(field)s nie jest %(value)s" #: core/validators.py:313 msgid "Duplicate values are not allowed." -msgstr "" +msgstr "Duplikaty są niedozwolone." #: core/validators.py:336 #, python-format @@ -1761,20 +1762,20 @@ msgid "Please enter a valid decimal number." msgstr "Proszę wpisać poprawną liczbę dziesiętną." #: core/validators.py:349 -#, fuzzy, python-format +#, 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] "Proszę wpisać poprawną liczbę dziesiętną." -msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną." +msgstr[0] "Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfry." +msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfr." #: core/validators.py:352 -#, fuzzy, python-format +#, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" "Please enter a valid decimal number with at most %s decimal places." -msgstr[0] "Proszę wpisać poprawną liczbę dziesiętną." -msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną." +msgstr[0] "Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsca po przecinku." +msgstr[1] "Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsc po przecinku." #: core/validators.py:362 #, python-format @@ -1797,13 +1798,14 @@ msgstr "To pole jest nieprawidłowe." #: core/validators.py:426 #, python-format msgid "Could not retrieve anything from %s." -msgstr "Nie można otrzymać nic z %s." +msgstr "Nie można nic pobrać z %s." #: core/validators.py:429 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "" +"URL %(url)s zwrócił niepoprawny Content-Type header '%(contenttype)s'." #: core/validators.py:462 @@ -1866,17 +1868,15 @@ msgstr "To pole jest wymagane" #: db/models/fields/__init__.py:337 msgid "This value must be an integer." -msgstr "" +msgstr "Ta wartość musi być liczbą całkowitą" #: db/models/fields/__init__.py:369 -#, fuzzy msgid "This value must be either True or False." -msgstr "Wartość logiczna (True, False - prawda lub fałsz)" +msgstr "Ta wartość musi być logiczna (True, False - prawda lub fałsz)." #: db/models/fields/__init__.py:385 -#, fuzzy msgid "This field cannot be null." -msgstr "To pole jest nieprawidłowe." +msgstr "To pole nie może być puste." #: db/models/fields/__init__.py:562 msgid "Enter a valid filename." @@ -1888,12 +1888,10 @@ msgid "Please enter a valid %s." msgstr "Proszę wpisać poprawne %s." #: db/models/fields/related.py:579 -#, fuzzy msgid "Separate multiple IDs with commas." msgstr "Oddziel kilka pól ID przecinkami." #: db/models/fields/related.py:581 -#, fuzzy msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" @@ -1909,11 +1907,11 @@ msgstr[0] "" msgstr[1] "" #: forms/__init__.py:380 -#, fuzzy, python-format +#, python-format msgid "Ensure your text is less than %s character." msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "Upewnij się, że jest mniej niż %s znaków." -msgstr[1] "Upewnij się, że jest mniej niż %s znaków." +msgstr[0] "Upewnij się, że tekst ma mniej niż %s znak." +msgstr[1] "Upewnij się, że tekst ma mniej niż %s znaków." #: forms/__init__.py:385 msgid "Line breaks are not allowed here." diff --git a/django/conf/locale/ru/LC_MESSAGES/django.mo b/django/conf/locale/ru/LC_MESSAGES/django.mo index 467c8ddb62..12e240529f 100644 Binary files a/django/conf/locale/ru/LC_MESSAGES/django.mo and b/django/conf/locale/ru/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/ru/LC_MESSAGES/django.po b/django/conf/locale/ru/LC_MESSAGES/django.po index ca204d2ddf..f329efe24f 100644 --- a/django/conf/locale/ru/LC_MESSAGES/django.po +++ b/django/conf/locale/ru/LC_MESSAGES/django.po @@ -8,12 +8,13 @@ msgstr "" "Project-Id-Version: django 0.95\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-16 10:11+0200\n" -"PO-Revision-Date: 2006-08-14 18:08+0300\n" -"Last-Translator: Grigory Fateyev \n" +"PO-Revision-Date: 2006-09-07 15:28+0300\n" +"Last-Translator: Alexander Yakovlev \n" "Language-Team: Dialcom Services \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Poedit-Language: Russian\n" "X-Poedit-Country: RUSSIAN FEDERATION\n" "X-Poedit-SourceCharset: utf-8\n" @@ -25,81 +26,81 @@ msgstr "ID объекта" #: contrib/comments/models.py:68 msgid "headline" -msgstr "заголовок" +msgstr "Заголовок" #: contrib/comments/models.py:69 #: contrib/comments/models.py:90 #: contrib/comments/models.py:167 msgid "comment" -msgstr "комментарий" +msgstr "Комментарий" #: contrib/comments/models.py:70 msgid "rating #1" -msgstr "рейтинг #1" +msgstr "рейтинг №1" #: contrib/comments/models.py:71 msgid "rating #2" -msgstr "рейтинг #2" +msgstr "рейтинг №2" #: contrib/comments/models.py:72 msgid "rating #3" -msgstr "рейтинг #3" +msgstr "рейтинг №3" #: contrib/comments/models.py:73 msgid "rating #4" -msgstr "рейтинг #4" +msgstr "рейтинг №4" #: contrib/comments/models.py:74 msgid "rating #5" -msgstr "рейтинг #5" +msgstr "рейтинг №5" #: contrib/comments/models.py:75 msgid "rating #6" -msgstr "рейтинг #6" +msgstr "рейтинг №6" #: contrib/comments/models.py:76 msgid "rating #7" -msgstr "рейтинг #7" +msgstr "рейтинг №7" #: contrib/comments/models.py:77 msgid "rating #8" -msgstr "рейтинг #8" +msgstr "рейтинг №8" #: contrib/comments/models.py:82 msgid "is valid rating" -msgstr "доступный рейтинг" +msgstr "Допустимый рейтинг" #: contrib/comments/models.py:83 #: contrib/comments/models.py:169 msgid "date/time submitted" -msgstr "дата/время добавления" +msgstr "Дата/время добавления" #: contrib/comments/models.py:84 #: contrib/comments/models.py:170 msgid "is public" -msgstr "публичный" +msgstr "Публичный" #: contrib/comments/models.py:85 #: contrib/admin/views/doc.py:289 msgid "IP address" -msgstr "IP адрес" +msgstr "IP-адрес" #: contrib/comments/models.py:86 msgid "is removed" -msgstr "удален" +msgstr "Удален" #: 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 "Отметте, если комментарий нежелателен. Сообщение \"Этот комментарий был удалён\" будет показано взамен." +msgstr "Отметьте, если комментарий нежелателен. Сообщение \"Этот комментарий был удалён\" будет показано взамен." #: contrib/comments/models.py:91 msgid "comments" -msgstr "комментарии" +msgstr "Комментарии" #: contrib/comments/models.py:131 #: contrib/comments/models.py:207 msgid "Content object" -msgstr "Объект наполнения" +msgstr "Объект содержимого" #: contrib/comments/models.py:159 #, python-format @@ -110,7 +111,7 @@ msgid "" "\n" "http://%(domain)s%(url)s" msgstr "" -"Добавил %(user)s %(date)s\n" +"Добавил %(user)s %(date)s\n" "\n" "%(comment)s\n" "\n" @@ -118,15 +119,15 @@ msgstr "" #: contrib/comments/models.py:168 msgid "person's name" -msgstr "имя человека" +msgstr "Имя человека" #: contrib/comments/models.py:171 msgid "ip address" -msgstr "ip адрес:" +msgstr "IP-адрес:" #: contrib/comments/models.py:173 msgid "approved by staff" -msgstr "одобрено администрацией" +msgstr "Одобрено администрацией" #: contrib/comments/models.py:176 msgid "free comment" @@ -138,24 +139,24 @@ msgstr "Свободные комментарии" #: contrib/comments/models.py:233 msgid "score" -msgstr "счёт" +msgstr "Счёт" #: contrib/comments/models.py:234 msgid "score date" -msgstr "счёт времени" +msgstr "Время счёта" #: contrib/comments/models.py:237 msgid "karma score" -msgstr "Карма счёт" +msgstr "Кармический счёт" #: contrib/comments/models.py:238 msgid "karma scores" -msgstr "Карма счета" +msgstr "Кармические счета" #: contrib/comments/models.py:242 #, python-format msgid "%(score)d rating by %(user)s" -msgstr "%(score)d рейтинг %(user)s" +msgstr "%(score)d рейтинг пользователя %(user)s" #: contrib/comments/models.py:258 #, python-format @@ -164,21 +165,21 @@ msgid "" "\n" "%(text)s" msgstr "" -"Этот комментарий был отмечен %(user)s:\n" +"Этот комментарий был отмечен пользователем %(user)s:\n" "\n" "%(text)s" #: contrib/comments/models.py:265 msgid "flag date" -msgstr "отметка даты" +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 @@ -187,11 +188,11 @@ msgstr "Отмечен %r" #: contrib/comments/models.py:278 msgid "deletion date" -msgstr "дата удаления" +msgstr "Дата удаления" #: contrib/comments/models.py:280 msgid "moderator deletion" -msgstr "Удаленно модератором" +msgstr "Удаление модератором" #: contrib/comments/models.py:281 msgid "moderator deletions" @@ -216,7 +217,7 @@ msgstr "Нельзя голосовать за себя" #: contrib/comments/views/comments.py:28 msgid "This rating is required because you've entered at least one other rating." -msgstr "Этот рейтинг необходим, так как вы входили хоть однажды в другие рейтинги." +msgstr "Этот рейтинг обязателен, так как вы уже ввели как минимум еще один рейтинг." #: contrib/comments/views/comments.py:112 #, python-format @@ -229,7 +230,17 @@ msgid_plural "" "\n" "%(text)s" msgstr[0] "" +"Этот комментарий сделан пользователем, который отправил меньше %(count)s комментария:\n" +"\n" +"%(text)s" msgstr[1] "" +"Этот комментарий сделан пользователем, который отправил меньше %(count)s комментариев:\n" +"\n" +"%(text)s" +msgstr[2] "" +"Этот комментарий сделан пользователем, который отправил меньше %(count)s комментариев:\n" +"\n" +"%(text)s" #: contrib/comments/views/comments.py:117 #, python-format @@ -238,14 +249,14 @@ msgid "" "\n" "%(text)s" msgstr "" -"Коментарий был добавлен ндоверенным пользователем:\n" +"Коментарий был добавлен недоверенным пользователем:\n" "\n" "%(text)s" #: contrib/comments/views/comments.py:189 #: contrib/comments/views/comments.py:280 msgid "Only POSTs are allowed" -msgstr "Только POSTы разрешены" +msgstr "Разрешены только POSTы" #: contrib/comments/views/comments.py:193 #: contrib/comments/views/comments.py:284 @@ -255,17 +266,17 @@ msgstr "Одно или больше обязательных полей не б #: contrib/comments/views/comments.py:197 #: contrib/comments/views/comments.py:286 msgid "Somebody tampered with the comment form (security violation)" -msgstr "Кто-то вмешивается в форму комментария (нарушение безопасности)" +msgstr "Кто-то вмешался в форму комментария (нарушение безопасности)" #: contrib/comments/views/comments.py:207 #: contrib/comments/views/comments.py:292 msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid" -msgstr "Форма комментария имеет неверный 'target' параметр -- ID объекта неверно" +msgstr "Форма комментария имела неверный параметр 'target' -- ID объекта неверен" #: contrib/comments/views/comments.py:257 #: contrib/comments/views/comments.py:321 msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "Форма комментария не обеспечивает и 'preview' или 'post'" +msgstr "Форма комментария не предоставила ни 'предпросмотр', ни 'отправить'" #: contrib/comments/templates/comments/form.html:6 #: contrib/comments/templates/comments/form.html:8 @@ -310,7 +321,7 @@ msgstr "Рейтинги" #: contrib/comments/templates/comments/form.html:12 #: contrib/comments/templates/comments/form.html:23 msgid "Required" -msgstr "Необходимое" +msgstr "Обязательное" #: contrib/comments/templates/comments/form.html:12 #: contrib/comments/templates/comments/form.html:23 @@ -329,11 +340,11 @@ msgstr "Комментарий:" #: contrib/comments/templates/comments/form.html:32 #: contrib/comments/templates/comments/freeform.html:9 msgid "Preview comment" -msgstr "Просмотр комментария" +msgstr "Предпросмотр комментария" #: contrib/comments/templates/comments/freeform.html:4 msgid "Your name:" -msgstr "имя пользователя:" +msgstr "Имя пользователя:" #: contrib/admin/filterspecs.py:40 #, python-format @@ -341,7 +352,7 @@ msgid "" "

      By %s:

      \n" "
        \n" msgstr "" -"

        К %s:

        \n" +"

        По %s:

        \n" "
          \n" #: contrib/admin/filterspecs.py:70 @@ -384,7 +395,7 @@ msgstr "Неизвестно" #: contrib/admin/models.py:16 msgid "action time" -msgstr "время действия" +msgstr "Время действия" #: contrib/admin/models.py:19 msgid "object id" @@ -392,23 +403,23 @@ msgstr "id обьекта" #: contrib/admin/models.py:20 msgid "object repr" -msgstr "представление обьекта" +msgstr "Представление обьекта" #: contrib/admin/models.py:21 msgid "action flag" -msgstr "отметка действия" +msgstr "Отметка действия" #: contrib/admin/models.py:22 msgid "change message" -msgstr "изменить сообщение" +msgstr "Изменить сообщение" #: contrib/admin/models.py:25 msgid "log entry" -msgstr "журнальная запись" +msgstr "Журнальная запись" #: contrib/admin/models.py:26 msgid "log entries" -msgstr "журнальные записи" +msgstr "Журнальные записи" #: contrib/admin/templatetags/admin_list.py:228 msgid "All dates" @@ -418,7 +429,7 @@ msgstr "Все даты" #: contrib/auth/forms.py:36 #: contrib/auth/forms.py:41 msgid "Please enter a correct username and password. Note that both fields are case-sensitive." -msgstr "Пожалуйста, вводите верные данные именя пользователя и пароль. Помните, оба поля чувствительны к регистру." +msgstr "Пожалуйста, введите верные имя пользователя и пароль. Помните, оба поля чувствительны к регистру." #: contrib/admin/views/decorators.py:23 #: contrib/admin/templates/admin/login.html:25 @@ -427,11 +438,11 @@ msgstr "Вход" #: contrib/admin/views/decorators.py:61 msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved." -msgstr "Пожалуйста войдите снова, посколькук ваша сессия устарела. Не беспокойтесь:введенные вами данные сохранены." +msgstr "Пожалуйста, войдите снова, поскольку ваша сессия устарела. Не беспокойтесь: введенные вами данные сохранены." #: contrib/admin/views/decorators.py:68 msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again." -msgstr "Похоже, что ваш броузер не настроен на прием cookies. Пожалуйства включите cookie, перезагрузите страницу и попытайтесь снова. " +msgstr "Похоже, ваш броузер не настроен на прием cookies. Пожалуйства, включите cookie, перезагрузите страницу и попытайтесь снова." #: contrib/admin/views/decorators.py:82 msgid "Usernames cannot contain the '@' character." @@ -440,7 +451,7 @@ msgstr "Имя пользователя не может включать сим #: contrib/admin/views/decorators.py:84 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "Ваш e-mail адрес не ваше имя. Попробуйте '%s' в замен." +msgstr "Ваш адрес электронной почты не является вашим именем пользователя. Попробуйте '%s' взамен." #: contrib/admin/views/main.py:226 msgid "Site administration" @@ -449,12 +460,12 @@ msgstr "Администрирование сайта" #: contrib/admin/views/main.py:260 #, 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:264 #: contrib/admin/views/main.py:348 msgid "You may edit it again below." -msgstr "Вы снова можете редактировать их внизу" +msgstr "Ниже можно снова редактировать его" #: contrib/admin/views/main.py:272 #: contrib/admin/views/main.py:357 @@ -470,7 +481,7 @@ msgstr "Добавить %s" #: contrib/admin/views/main.py:336 #, python-format msgid "Added %s." -msgstr "Добавлено %s" +msgstr "Добавлен %s." #: contrib/admin/views/main.py:336 #: contrib/admin/views/main.py:338 @@ -481,12 +492,12 @@ msgstr "и" #: contrib/admin/views/main.py:338 #, python-format msgid "Changed %s." -msgstr "Изменено %s." +msgstr "Изменен %s." #: contrib/admin/views/main.py:340 #, python-format msgid "Deleted %s." -msgstr "Удалено %s." +msgstr "Удален %s." #: contrib/admin/views/main.py:343 msgid "No fields changed." @@ -495,12 +506,12 @@ msgstr "Ни одно поле не изменено." #: contrib/admin/views/main.py:346 #, 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:354 #, 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:392 #, python-format @@ -510,17 +521,17 @@ msgstr "Изменить %s" #: contrib/admin/views/main.py:470 #, python-format msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "Одно или более %(fieldname)s в %(name)s: %(obj)s" +msgstr "Один или более %(fieldname)s в %(name)s: %(obj)s" #: contrib/admin/views/main.py:475 #, python-format msgid "One or more %(fieldname)s in %(name)s:" -msgstr "Одно или более %(fieldname)s в %(name)s:" +msgstr "Один или более %(fieldname)s в %(name)s:" #: contrib/admin/views/main.py:508 #, python-format msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "%(name)s \"%(obj)s\" было успешно удалено." +msgstr "%(name)s \"%(obj)s\" был успешно удален." #: contrib/admin/views/main.py:511 msgid "Are you sure?" @@ -529,7 +540,7 @@ msgstr "Вы уверены?" #: contrib/admin/views/main.py:533 #, python-format msgid "Change history: %s" -msgstr "Измени историю: %s" +msgstr "История изменений: %s" #: contrib/admin/views/main.py:565 #, python-format @@ -574,7 +585,7 @@ msgstr "Дата (с указанием времени)" #: contrib/admin/views/doc.py:283 msgid "E-mail address" -msgstr "E-mail адрес" +msgstr "Адрес электронной почты" #: contrib/admin/views/doc.py:284 #: contrib/admin/views/doc.py:287 @@ -591,7 +602,7 @@ msgstr "Логическое (True, False или None)" #: contrib/admin/views/doc.py:292 msgid "Relation to parent model" -msgstr "Зависимость на родительскую модель." +msgstr "Связь с родительской моделью" #: contrib/admin/views/doc.py:293 msgid "Phone number" @@ -612,11 +623,11 @@ msgstr "URL" #: contrib/admin/views/doc.py:301 msgid "U.S. state (two uppercase letters)" -msgstr "Штат США (два заглавных символа)" +msgstr "Штат США (две заглавные буквы)" #: contrib/admin/views/doc.py:302 msgid "XML text" -msgstr "XML текст" +msgstr "Текст XML" #: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 @@ -683,11 +694,11 @@ msgstr "Действие" #: contrib/admin/templates/admin/object_history.html:26 msgid "DATE_WITH_TIME_FULL" -msgstr "j. N Y, H:i" +msgstr "j N Y H:i" #: contrib/admin/templates/admin/object_history.html:36 msgid "This object doesn't have a change history. It probably wasn't added via this admin site." -msgstr "Данный обьект не имеет истории изменения. Возможно он не был добавлен через данный административный сайт." +msgstr "Данный обьект не имеет истории изменений. Возможно, он был добавлен не через данный административный сайт." #: contrib/admin/templates/admin/base_site.html:4 msgid "Django site admin" @@ -711,7 +722,7 @@ msgstr "Ошибка сервера (500)" #: contrib/admin/templates/admin/500.html:10 msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience." -msgstr "Произошла ошибка. Отчет об ошибке отправлен администраторам сайта по e-mailи она должна быть вскоре исправлена. Благодарим вас на терпение и помощь." +msgstr "Произошла ошибка. Отчет об ошибке отправлен администраторам сайта по электронной почте, ошибка должна быть вскоре исправлена. Благодарим вас на терпение и помощь." #: contrib/admin/templates/admin/404.html:4 #: contrib/admin/templates/admin/404.html:8 @@ -725,7 +736,7 @@ msgstr "К сожалению, запрашиваемая вами страни #: contrib/admin/templates/admin/index.html:17 #, python-format msgid "Models available in the %(name)s application." -msgstr "Модели доступны в %(name)s приложении." +msgstr "Модели доступны в приложении %(name)s." #: contrib/admin/templates/admin/index.html:28 #: contrib/admin/templates/admin/change_form.html:15 @@ -742,11 +753,11 @@ msgstr "Недостаточно прав для редактирования." #: contrib/admin/templates/admin/index.html:52 msgid "Recent Actions" -msgstr "Последние Действия" +msgstr "Последние действия" #: contrib/admin/templates/admin/index.html:53 msgid "My Actions" -msgstr "Мои Действия" +msgstr "Мои действия" #: contrib/admin/templates/admin/index.html:57 msgid "None available" @@ -773,12 +784,12 @@ msgstr "Удалить" #: contrib/admin/templates/admin/delete_confirmation.html:14 #, python-format msgid "Deleting the %(object_name)s '%(object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" -msgstr "Удаление объекта %(object_name)s '%(object)s' приведет к удалению зависимых элементов, но предоставленных вам прав недостаточно для удаления следующих типов объектов:" +msgstr "Удаление объекта %(object_name)s '%(object)s' привело бы к удалению связанных элементов, но предоставленных вам прав недостаточно для удаления следующих типов объектов:" #: contrib/admin/templates/admin/delete_confirmation.html:21 #, python-format msgid "Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of the following related items will be deleted:" -msgstr "Вы уверены, что хотите удалить %(object_name)s \"%(object)s\"? Все следующие объекты также будут удалены:" +msgstr "Вы уверены, что хотите удалить %(object_name)s \"%(object)s\"? Все следующие связанные объекты также будут удалены:" #: contrib/admin/templates/admin/delete_confirmation.html:26 msgid "Yes, I'm sure" @@ -787,12 +798,24 @@ msgstr "Да, я уверен" #: contrib/admin/templates/admin/filter.html:2 #, python-format msgid " By %(title)s " -msgstr "К%(title)s " +msgstr " По %(title)s " #: contrib/admin/templates/admin/search_form.html:8 msgid "Go" msgstr "Вперёд" +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 результат" +msgstr[1] "%(counter)s результата" +msgstr[2] "%(counter)s результатов" + +#: contrib/admin/templates/admin/search_form.html:10 +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s всего" + #: contrib/admin/templates/admin/change_form.html:21 msgid "View on site" msgstr "Смотреть сайт" @@ -800,8 +823,9 @@ msgstr "Смотреть сайт" #: contrib/admin/templates/admin/change_form.html:30 msgid "Please correct the error below." msgid_plural "Please correct the errors below." -msgstr[0] "Пожалуйста исправьте ошибку ниже." -msgstr[1] "Пожалуйста исправьте ошибки ниже." +msgstr[0] "Пожалуйста, исправьте ошибку ниже." +msgstr[1] "Пожалуйста, исправьте ошибки ниже." +msgstr[2] "Пожалуйста, исправьте ошибки ниже." #: contrib/admin/templates/admin/change_form.html:48 msgid "Ordering" @@ -852,11 +876,11 @@ msgstr "Сброс пароля" #: contrib/admin/templates/registration/password_reset_form.html:12 msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you." -msgstr "Забыли пароль? Введите ваш e-mail адрес ниже и мы очистим ваш старый пароль, и вышлем вам по e-mail новый." +msgstr "Забыли пароль? Введите свой адрес электронной почты ниже, мы очистим ваш старый пароль и вышлем вам по e-mail новый." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" -msgstr "E-mail адрес:" +msgstr "Адрес электронной почты:" #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "Reset my password" @@ -877,11 +901,11 @@ msgstr "Успешная очистка пароля" #: contrib/admin/templates/registration/password_reset_done.html:12 msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly." -msgstr "Мы отправили новый пароль по указанному вами адресу электронной почты. Вы должны его вскоре получить." +msgstr "Мы отправили новый пароль по указанному вами адресу электронной почты. Вскоре вы его получите." #: contrib/admin/templates/registration/password_change_form.html:12 msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly." -msgstr "В целях безопасности, пожалуйста, введите ваш старый пароль, затем - новый пароль дважды, с тем, чтобы мы могли убедиться в правильности написания." +msgstr "В целях безопасности, пожалуйста, введите свой старый пароль, затем - новый пароль дважды, с тем, чтобы мы могли убедиться в правильности написания." #: contrib/admin/templates/registration/password_change_form.html:17 msgid "Old password:" @@ -901,12 +925,12 @@ msgstr "Изменение пароля" #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" -msgstr "Вы получили это сообщение потому что была запрошена очистка пароля" +msgstr "Вы получили это сообщение, потому что была запрошена очистка пароля" #: contrib/admin/templates/registration/password_reset_email.html:3 #, python-format msgid "for your user account at %(site_name)s" -msgstr "для вашего пользовательского аккаунта на %(site_name)s" +msgstr "Для вашей учетной записи на %(site_name)s" #: contrib/admin/templates/registration/password_reset_email.html:5 #, python-format @@ -915,7 +939,7 @@ 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:" @@ -936,7 +960,7 @@ msgstr "Закладки" #: contrib/admin/templates/admin_doc/bookmarklets.html:5 msgid "Documentation bookmarklets" -msgstr "Документация по bookmarklets" +msgstr "Закладки документации" #: contrib/admin/templates/admin_doc/bookmarklets.html:9 msgid "" @@ -948,6 +972,13 @@ msgid "" "as \"internal\" (talk to your system administrator if you aren't sure if\n" "your computer is \"internal\").

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

          Для установки закладок перетащите ссылку к себе на панель\n" +"закладок или щелкните правой кнопкой мыши по ссылке и добавьте ее в закладки. Теперь у вас есть возможность\n" +"выбрать закладку с любой страницы сайта. Обратите внимание: некоторые из этих\n" +"закладок требуют, чтобы вы просматривали сайт с компьютера, определенного\n" +"как \"внутренний\" (уточните у своего системного администратора, если не уверены, является ли\n" +"ваш компьютер \"внутренним\").

          \n" #: contrib/admin/templates/admin_doc/bookmarklets.html:19 msgid "Documentation for this page" @@ -955,7 +986,7 @@ msgstr "Документация по данной странице" #: 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 "Перенаправит вас с любой страницы к просмотру документа, который генерирует эту страницу." +msgstr "Перенаправляет вас с любой страницы к документации view, который генерирует эту страницу." #: contrib/admin/templates/admin_doc/bookmarklets.html:22 msgid "Show object ID" @@ -963,7 +994,7 @@ msgstr "Показать ID обьекта" #: contrib/admin/templates/admin_doc/bookmarklets.html:23 msgid "Shows the content-type and unique ID for pages that represent a single object." -msgstr "Показывает тип наполнения и уникальный ID для страниц, которые означают одинокий объект." +msgstr "Показывает тип наполнения и уникальный ID для страниц, представляющих один объект." #: contrib/admin/templates/admin_doc/bookmarklets.html:25 msgid "Edit this object (current window)" @@ -971,7 +1002,7 @@ 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)" @@ -979,7 +1010,7 @@ msgstr "Редактировать данный обьект (в новом ок #: contrib/admin/templates/admin_doc/bookmarklets.html:29 msgid "As above, but opens the admin page in a new window." -msgstr "То же что и выше, но откроет административную страницу в новом окне" +msgstr "То же что и выше, но откроет административную страницу в новом окне." #: contrib/admin/templates/widget/date_time.html:3 msgid "Date:" @@ -999,27 +1030,27 @@ msgstr "Изменить:" #: contrib/redirects/models.py:7 msgid "redirect from" -msgstr "перенаправить из" +msgstr "Перенаправить из" #: contrib/redirects/models.py:8 msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." -msgstr "Это должен быть абсолютный путь, исключая доменное имя. Пример: '/events/search/'." +msgstr "Это должен быть абсолютный путь без доменного имени. Пример: '/events/search/'." #: contrib/redirects/models.py:9 msgid "redirect to" -msgstr "перенаправить на" +msgstr "Перенаправить на" #: contrib/redirects/models.py:10 msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." -msgstr "Это должен быть, либо абсолютный путь (как выше) или полный URL начинающийся с 'http://'." +msgstr "Это должен быть абсолютный путь (как выше) или полный URL, начинающийся с 'http://'." #: contrib/redirects/models.py:12 msgid "redirect" -msgstr "перенаправить" +msgstr "Перенаправление" #: contrib/redirects/models.py:13 msgid "redirects" -msgstr "перенаправления" +msgstr "Перенаправления" #: contrib/flatpages/models.py:8 msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." @@ -1027,19 +1058,19 @@ msgstr "Пример: '/about/contact/'. Будьте уверенны, что #: contrib/flatpages/models.py:9 msgid "title" -msgstr "заголовок" +msgstr "Заголовок" #: contrib/flatpages/models.py:10 msgid "content" -msgstr "наполнение" +msgstr "Содержимое" #: contrib/flatpages/models.py:11 msgid "enable comments" -msgstr "активировать комментарии" +msgstr "Активировать комментарии" #: contrib/flatpages/models.py:12 msgid "template name" -msgstr "имя шаблона" +msgstr "Имя шаблона" #: contrib/flatpages/models.py:13 msgid "Example: 'flatpages/contact_page'. If this isn't provided, the system will use 'flatpages/default'." @@ -1047,7 +1078,7 @@ msgstr "Пример: 'flatpages/contact_page'. Если этот файл не #: contrib/flatpages/models.py:14 msgid "registration required" -msgstr "регистрация обязательна" +msgstr "Регистрация обязательна" #: contrib/flatpages/models.py:14 msgid "If this is checked, only logged-in users will be able to view the page." @@ -1055,24 +1086,24 @@ msgstr "Если отмечено, только вошедшие пользов #: contrib/flatpages/models.py:18 msgid "flat page" -msgstr "простая страница" +msgstr "Простая страница" #: contrib/flatpages/models.py:19 msgid "flat pages" -msgstr "простые страницы" +msgstr "Простые страницы" #: contrib/auth/models.py:13 #: contrib/auth/models.py:26 msgid "name" -msgstr "имя" +msgstr "Имя" #: contrib/auth/models.py:15 msgid "codename" -msgstr "код" +msgstr "Кодовое название" #: contrib/auth/models.py:17 msgid "permission" -msgstr "Права" +msgstr "Право" #: contrib/auth/models.py:18 #: contrib/auth/models.py:27 @@ -1090,23 +1121,23 @@ msgstr "Группы" #: contrib/auth/models.py:55 msgid "username" -msgstr "имя пользователя" +msgstr "Имя пользователя" #: contrib/auth/models.py:56 msgid "first name" -msgstr "имя" +msgstr "Имя" #: contrib/auth/models.py:57 msgid "last name" -msgstr "фамилия" +msgstr "Фамилия" #: contrib/auth/models.py:58 msgid "e-mail address" -msgstr "e-mail адрес" +msgstr "Адрес электронной почты" #: contrib/auth/models.py:59 msgid "password" -msgstr "пароль" +msgstr "Пароль" #: contrib/auth/models.py:59 msgid "Use '[algo]$[salt]$[hexdigest]'" @@ -1114,7 +1145,7 @@ msgstr "Используйте '[algo]$[salt]$[hexdigest]'" #: contrib/auth/models.py:60 msgid "staff status" -msgstr "статус персонала" +msgstr "Статус персонала" #: contrib/auth/models.py:60 msgid "Designates whether the user can log into this admin site." @@ -1122,27 +1153,27 @@ msgstr "Отметьте, если пользователь может вход #: contrib/auth/models.py:61 msgid "active" -msgstr "активен" +msgstr "Активный" #: contrib/auth/models.py:62 msgid "superuser status" -msgstr "статус админа" +msgstr "Статус суперпользователя" #: contrib/auth/models.py:63 msgid "last login" -msgstr "последний вход" +msgstr "Последний вход" #: contrib/auth/models.py:64 msgid "date joined" -msgstr "дата регистрации" +msgstr "Дата регистрации" #: contrib/auth/models.py:66 msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in." -msgstr "К добавлению к перавам выбрнанным вуручную, этот пользователь может получить все права группы, к которой он принадлежит." +msgstr "В добавление к правам, присвоенным вручную, этот пользователь получит все права групп, к которым он принадлежит." #: contrib/auth/models.py:67 msgid "user permissions" -msgstr "Права пользователя" +msgstr "права пользователя" #: contrib/auth/models.py:70 msgid "user" @@ -1182,59 +1213,59 @@ msgstr "имя класса python модуля" #: contrib/contenttypes/models.py:28 msgid "content type" -msgstr "тип наполнения" +msgstr "Тип содержимого" #: contrib/contenttypes/models.py:29 msgid "content types" -msgstr "типы наполнения" +msgstr "Типы содержимого" #: contrib/sessions/models.py:35 msgid "session key" -msgstr "ключ сессии" +msgstr "Ключ сессии" #: contrib/sessions/models.py:36 msgid "session data" -msgstr "данные сессии" +msgstr "Данные сессии" #: contrib/sessions/models.py:37 msgid "expire date" -msgstr "дата окончания" +msgstr "Дата окончания" #: contrib/sessions/models.py:41 msgid "session" -msgstr "сессия" +msgstr "Сессия" #: contrib/sessions/models.py:42 msgid "sessions" -msgstr "сессии" +msgstr "Сессии" #: contrib/sites/models.py:10 msgid "domain name" -msgstr "домен" +msgstr "Доменное имя" #: contrib/sites/models.py:11 msgid "display name" -msgstr "выводимое имя" +msgstr "Выводимое имя" #: contrib/sites/models.py:15 msgid "site" -msgstr "сайт" +msgstr "Сайт" #: contrib/sites/models.py:16 msgid "sites" -msgstr "сайты" +msgstr "Сайты" #: utils/translation.py:360 msgid "DATE_FORMAT" -msgstr "" +msgstr "d.m.Y" #: utils/translation.py:361 msgid "DATETIME_FORMAT" -msgstr "" +msgstr "d.m.Y H:i" #: utils/translation.py:362 msgid "TIME_FORMAT" -msgstr "" +msgstr "H:i" #: utils/dates.py:6 msgid "Monday" @@ -1307,7 +1338,7 @@ msgstr "Сентябрь" #: utils/dates.py:15 msgid "October" -msgstr "Остябрь" +msgstr "Октябрь" #: utils/dates.py:15 msgid "November" @@ -1367,143 +1398,149 @@ msgstr "дек" #: utils/dates.py:27 msgid "Jan." -msgstr "Янв." +msgstr "янв." #: utils/dates.py:27 msgid "Feb." -msgstr "Фев." +msgstr "фев." #: utils/dates.py:28 msgid "Aug." -msgstr "Авг." +msgstr "авг." #: utils/dates.py:28 msgid "Sept." -msgstr "Сен." +msgstr "сен." #: utils/dates.py:28 msgid "Oct." -msgstr "Окт." +msgstr "окт." #: utils/dates.py:28 msgid "Nov." -msgstr "Нояб." +msgstr "нояб." #: utils/dates.py:28 msgid "Dec." -msgstr "Дек." +msgstr "дек." #: utils/timesince.py:12 msgid "year" msgid_plural "years" msgstr[0] "год" -msgstr[1] "лет" +msgstr[1] "года" +msgstr[2] "лет" #: utils/timesince.py:13 msgid "month" msgid_plural "months" msgstr[0] "месяц" -msgstr[1] "месяцев" +msgstr[1] "месяца" +msgstr[2] "месяцев" #: utils/timesince.py:14 msgid "week" msgid_plural "weeks" msgstr[0] "неделя" -msgstr[1] "недель" +msgstr[1] "недели" +msgstr[2] "недель" #: utils/timesince.py:15 msgid "day" msgid_plural "days" msgstr[0] "день" -msgstr[1] "дней" +msgstr[1] "дня" +msgstr[2] "дней" #: utils/timesince.py:16 msgid "hour" msgid_plural "hours" msgstr[0] "час" -msgstr[1] "часов" +msgstr[1] "часа" +msgstr[2] "часов" #: utils/timesince.py:17 msgid "minute" msgid_plural "minutes" msgstr[0] "минута" -msgstr[1] "минут" +msgstr[1] "минуты" +msgstr[2] "минут" #: conf/global_settings.py:37 msgid "Bengali" -msgstr "" +msgstr "Бенгальский" #: conf/global_settings.py:38 msgid "Czech" -msgstr "" +msgstr "Чешский" #: conf/global_settings.py:39 msgid "Welsh" -msgstr "" +msgstr "Уэльский" #: conf/global_settings.py:40 msgid "Danish" -msgstr "" +msgstr "Датский" #: conf/global_settings.py:41 msgid "German" -msgstr "" +msgstr "Немецкий" #: conf/global_settings.py:42 msgid "Greek" -msgstr "" +msgstr "Греческий" #: conf/global_settings.py:43 msgid "English" -msgstr "" +msgstr "Английский" #: conf/global_settings.py:44 msgid "Spanish" -msgstr "" +msgstr "Испанский" #: conf/global_settings.py:45 msgid "French" -msgstr "" +msgstr "Французский" #: conf/global_settings.py:46 msgid "Galician" -msgstr "" +msgstr "Галльский" #: conf/global_settings.py:47 msgid "Hungarian" -msgstr "" +msgstr "Венгерский" #: conf/global_settings.py:48 msgid "Hebrew" -msgstr "" +msgstr "Иврит" #: conf/global_settings.py:49 msgid "Icelandic" -msgstr "" +msgstr "Исландский" #: conf/global_settings.py:50 msgid "Italian" -msgstr "" +msgstr "Итальянский" #: conf/global_settings.py:51 msgid "Japanese" -msgstr "" +msgstr "Японский" #: conf/global_settings.py:52 msgid "Dutch" -msgstr "" +msgstr "Голландский" #: conf/global_settings.py:53 msgid "Norwegian" -msgstr "" +msgstr "Норвежский" #: conf/global_settings.py:54 msgid "Brazilian" -msgstr "" +msgstr "Бразильский" #: conf/global_settings.py:55 msgid "Romanian" -msgstr "" +msgstr "Румынский" #: conf/global_settings.py:56 msgid "Russian" @@ -1511,100 +1548,100 @@ msgstr "Русский" #: conf/global_settings.py:57 msgid "Slovak" -msgstr "" +msgstr "Словацкий" #: conf/global_settings.py:58 msgid "Slovenian" -msgstr "" +msgstr "Словенский" #: conf/global_settings.py:59 msgid "Serbian" -msgstr "" +msgstr "Сербский" #: conf/global_settings.py:60 msgid "Swedish" -msgstr "" +msgstr "Шведский" #: conf/global_settings.py:61 msgid "Ukrainian" -msgstr "" +msgstr "Украинский" #: conf/global_settings.py:62 msgid "Simplified Chinese" -msgstr "" +msgstr "Упрощенный китайский" #: conf/global_settings.py:63 msgid "Traditional Chinese" -msgstr "" +msgstr "Традиционный китайский" #: core/validators.py:60 msgid "This value must contain only letters, numbers and underscores." -msgstr "Значение может содержать только буквы, цифры и подчеркивания." +msgstr "Значение должно состоять только из букв, цифр и знаков подчеркивания." #: core/validators.py:64 msgid "This value must contain only letters, numbers, underscores, dashes or slashes." -msgstr "Значение может содержать только буквы, цифры, подчеркивания, дифисы или тере." +msgstr "Значение должно состоять только из букв, цифр, знаков подчеркивания, тире или наклонной черты вправо." #: core/validators.py:72 msgid "Uppercase letters are not allowed here." -msgstr "Заглавные буквы не разрешены" +msgstr "Заглавные буквы недопустимы." #: core/validators.py:76 msgid "Lowercase letters are not allowed here." -msgstr "Строчные буквы не разрешены" +msgstr "Строчные буквы здесь недопустимы." #: core/validators.py:83 msgid "Enter only digits separated by commas." -msgstr "Вводите только цифры разделённые запятыми" +msgstr "Введите цифры, разделённые запятыми." #: core/validators.py:95 msgid "Enter valid e-mail addresses separated by commas." -msgstr "Вводите реальные e-mail адреса разделённые запятыми" +msgstr "Введите правильные адреса электронной почты, разделённые запятыми." #: core/validators.py:99 msgid "Please enter a valid IP address." -msgstr "Пожалуйста, вводите реальный IP адрес" +msgstr "Пожалуйста, введите правильный IP-адрес." #: core/validators.py:103 msgid "Empty values are not allowed here." -msgstr "Пустое значение не разрешено" +msgstr "Пустое значение здесь недопустимо." #: core/validators.py:107 msgid "Non-numeric characters aren't allowed here." -msgstr "Не цифровые символы не рназрешены" +msgstr "Нецифровые символы здесь недопустимы." #: core/validators.py:111 msgid "This value can't be comprised solely of digits." -msgstr "" +msgstr "Это значение не может быть составлено только из цифр." #: core/validators.py:116 msgid "Enter a whole number." -msgstr "Введите номер" +msgstr "Введите целое число." #: core/validators.py:120 msgid "Only alphabetical characters are allowed here." -msgstr "Только буквы можно использовать" +msgstr "Здесь разрешены только алфавитные символы." #: core/validators.py:124 msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "Вводите реальную дату в формате YYYY-MM-DD." +msgstr "Вводите правильную дату в формате YYYY-MM-DD." #: core/validators.py:128 msgid "Enter a valid time in HH:MM format." -msgstr "Вводите реальное время в формате HH:MM." +msgstr "Введите правильное время в формате HH:MM." #: core/validators.py:132 #: db/models/fields/__init__.py:468 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Вводите реальные дата/время в формате YYYY-MM-DD HH:MM." +msgstr "Введите правильные дату/время в формате YYYY-MM-DD HH:MM." #: core/validators.py:136 msgid "Enter a valid e-mail address." -msgstr "Укажите реальный e-mail адрес." +msgstr "Укажите правильный адрес электронной почты." #: core/validators.py:148 msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." -msgstr "Загрузите реальное изображение. Файл, который вы загружали, не был изображением или был поврежден." +msgstr "Загрузите реальное изображение. Файл, который вы загрузили, не является изображением или был поврежден." #: core/validators.py:155 #, python-format @@ -1614,7 +1651,7 @@ msgstr "URL %s не указывает на реальное изображен #: core/validators.py:159 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "Телефонный номер должен быть в формате XXX-XXX-XXXX. \"%s\" не верен." +msgstr "Телефонные номера должен быть в формате XXX-XXX-XXXX. \"%s\" неверен." #: core/validators.py:167 #, python-format @@ -1623,7 +1660,7 @@ msgstr "URL %s не указывает на реальное видео QuickTim #: core/validators.py:171 msgid "A valid URL is required." -msgstr "Реальный URL обязателен." +msgstr "Правильный URL обязателен." #: core/validators.py:185 #, python-format @@ -1631,7 +1668,7 @@ msgid "" "Valid HTML is required. Specific errors are:\n" "%s" msgstr "" -"Реальный HTML обязателен. Специфичные ошибки:\n" +"Правильный HTML обязателен. Специфичные ошибки:\n" "%s" #: core/validators.py:192 @@ -1648,11 +1685,11 @@ msgstr "Неверный URL: %s" #: core/validators.py:208 #, python-format msgid "The URL %s is a broken link." -msgstr "URL %s сломанная ссылка." +msgstr "URL %s - сломанная ссылка." #: core/validators.py:214 msgid "Enter a valid U.S. state abbreviation." -msgstr "Вводите реальную абревиатуру штатов США." +msgstr "Введите правильную аббревиатуру штата США." #: core/validators.py:229 #, python-format @@ -1660,6 +1697,7 @@ 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 здесь запрещены." +msgstr[2] "Следите за своими словами! Слова %s здесь запрещены." #: core/validators.py:236 #, python-format @@ -1673,58 +1711,60 @@ msgstr "Пожалуйста, заполните хотя бы одно поле #: core/validators.py:264 #: core/validators.py:275 msgid "Please enter both fields or leave them both empty." -msgstr "Пожалуйста, заполните оба поля либо оставьте их пустыми." +msgstr "Пожалуйста, заполните оба поля или оставьте их оба пустыми." #: core/validators.py:282 #, python-format msgid "This field must be given if %(field)s is %(value)s" -msgstr "Это поле должно быть заполнено если %(field)s равно %(value)s" +msgstr "Это поле должно быть заполнено, если %(field)s равно %(value)s" #: core/validators.py:294 #, python-format msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Это поле должно быть заполнено если %(field)s не равно %(value)s" +msgstr "Это поле должно быть заполнено, если %(field)s не равно %(value)s" #: core/validators.py:313 msgid "Duplicate values are not allowed." -msgstr "Двойные значения запрещенны." +msgstr "Двойные значения запрещены." #: core/validators.py:336 #, python-format msgid "This value must be a power of %s." -msgstr "" +msgstr "Это значение должно быть степенью %s." #: core/validators.py:347 msgid "Please enter a valid decimal number." -msgstr "Пожалуйста, вводите корректное десятичное число." +msgstr "Пожалуйста, введите корректное десятичное число." #: core/validators.py:349 #, 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] "Пожалуйста, вводите корректное десятичное число с максимальным количеством знаков %s." -msgstr[1] "Пожалуйста, вводите корректное десятичное число с максимальным количеством знаков %s." +msgstr[0] "Пожалуйста, введите корректное десятичное число максимально с %s знаком." +msgstr[1] "Пожалуйста, введите корректное десятичное число максимально с %s знаками." +msgstr[2] "Пожалуйста, введите корректное десятичное число максимально с %s знаками." #: core/validators.py:352 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "Please enter a valid decimal number with at most %s decimal places." -msgstr[0] "Пожалуйста, вводите корректное десятичное число с максимальным количеством знаков после запятой %s." -msgstr[1] "Пожалуйста, вводите корректное десятичное число с максимальным количеством знаков после запятой %s." +msgstr[0] "Пожалуйста, введите корректное десятичное число максимально с %s знаком после запятой." +msgstr[1] "Пожалуйста, введите корректное десятичное число максимально с %s знаками после запятой." +msgstr[2] "Пожалуйста, введите корректное десятичное число максимально с %s знаками после запятой." #: core/validators.py:362 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Убедитесь, что загруженный файл по крайней мере не меньше %s байт." +msgstr "Убедитесь, что загруженный файл не меньше %s байт." #: core/validators.py:363 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "Убедитесь, что загруженный файл больше чем %s байт." +msgstr "Убедитесь, что загруженный файл не больше %s байт." #: core/validators.py:376 msgid "The format for this field is wrong." -msgstr "Формат этого поля неверен" +msgstr "Формат этого поля неверен." #: core/validators.py:391 msgid "This field is invalid." @@ -1733,7 +1773,7 @@ msgstr "Это поле неверно." #: core/validators.py:426 #, python-format msgid "Could not retrieve anything from %s." -msgstr "Невозможно получить что-либо с %s." +msgstr "Невозможно получить ничего с %s." #: core/validators.py:429 #, python-format @@ -1743,42 +1783,42 @@ msgstr "URL %(url)s вернул неверный заголовок Content-Typ #: core/validators.py:462 #, python-format msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)" -msgstr "" +msgstr "Пожалуйста, закройте незакрытый тэг %(tag)s на строке %(line)s. (Строка начинается с \"%(start)s\".)" #: core/validators.py:466 #, python-format msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)" -msgstr "" +msgstr "Что-то из текста, начинающегося на строке %(line)s, недопустимо в том контексте. (Строка начинается с \"%(start)s\".)" #: core/validators.py:471 #, python-format msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)" -msgstr "" +msgstr "\"%(attr)s\" на строке %(line)s - неправильный атрибут. (Строка начинается с \"%(start)s\".)" #: core/validators.py:476 #, python-format msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)" -msgstr "" +msgstr "\"<%(tag)s>\" на строке %(line)s - неправильный тег. (Строка начинается с \"%(start)s\".)" #: core/validators.py:480 #, python-format msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)" -msgstr "" +msgstr "В теге на строке %(line)s не хватает одного или более обязательных атрибутов. (Строка начинается с \"%(start)s\".)" #: core/validators.py:485 #, python-format msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)" -msgstr "" +msgstr "Атрибут \"%(attr)s\" на строке %(line)s имеет недопустимое значение. (Строка начинается с \"%(start)s\".)" #: db/models/manipulators.py:302 #, python-format msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "" +msgstr "%(object)s с типом %(type)s уже существует для данного %(field)s." #: db/models/fields/__init__.py:40 #, python-format msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "" +msgstr "%(optname)s с %(fieldname)s уже существует." #: db/models/fields/__init__.py:114 #: db/models/fields/__init__.py:265 @@ -1790,11 +1830,11 @@ msgstr "Обязательное поле." #: db/models/fields/__init__.py:337 msgid "This value must be an integer." -msgstr "" +msgstr "Это значение должно быть целым числом." #: db/models/fields/__init__.py:369 msgid "This value must be either True or False." -msgstr "Значение должно либо True либо False." +msgstr "Значение должно либо True, либо False." #: db/models/fields/__init__.py:385 msgid "This field cannot be null." @@ -1807,48 +1847,50 @@ msgstr "Укажите правильное имя файла." #: db/models/fields/related.py:43 #, python-format msgid "Please enter a valid %s." -msgstr "" +msgstr "Пожалуйста, введите правильный %s." #: db/models/fields/related.py:579 msgid "Separate multiple IDs with commas." -msgstr "Несколько значений ID разделяйте запятыми." +msgstr "Несколько значений ID разделите запятыми." #: db/models/fields/related.py:581 msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr " Удерживайте \"Control\", или \"Command\" на Макинтош, для выбора больше чем одного." +msgstr "Удерживайте \"Control\" (или \"Command\" на Mac) для выбора нескольких." #: db/models/fields/related.py:625 #, 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] "" -msgstr[1] "" +msgstr[0] "Пожалуйста, введите корректный ID для %(self)s. Значение %(value)r недопустимо." +msgstr[1] "Пожалуйста, введите корректные ID для %(self)s. Значения %(value)r недопустимы." +msgstr[2] "Пожалуйста, введите корректные ID для %(self)s. Значения %(value)r недопустимы." #: forms/__init__.py:380 #, python-format msgid "Ensure your text is less than %s character." msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Убедитесь, что длина вашего текста меньше %s символа." +msgstr[1] "Убедитесь, что длина вашего текста меньше %s символов." +msgstr[2] "Убедитесь, что длина вашего текста меньше %s символов." #: forms/__init__.py:385 msgid "Line breaks are not allowed here." -msgstr "Переносы строк не допускаются здесь." +msgstr "Переносы строк здесь не допускаются." #: forms/__init__.py:480 #: forms/__init__.py:551 #: forms/__init__.py:589 #, python-format msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "" +msgstr "Выберите корректный вариант; '%(data)s' нет в %(choices)s." #: forms/__init__.py:645 msgid "The submitted file is empty." -msgstr "Указанный файл - пуст." +msgstr "Указанный файл пуст." #: forms/__init__.py:699 msgid "Enter a whole number between -32,768 and 32,767." -msgstr "" +msgstr "Введите целое число в диапазоне от -32768 до 32767." #: forms/__init__.py:708 msgid "Enter a positive number." diff --git a/django/contrib/admin/media/js/admin/DateTimeShortcuts.js b/django/contrib/admin/media/js/admin/DateTimeShortcuts.js index 3f6fb67bc7..77c536b865 100644 --- a/django/contrib/admin/media/js/admin/DateTimeShortcuts.js +++ b/django/contrib/admin/media/js/admin/DateTimeShortcuts.js @@ -171,7 +171,6 @@ var DateTimeShortcuts = { cal_nav_prev.className = 'calendarnav-previous'; var cal_nav_next = quickElement('a', cal_nav, '>', 'href', 'javascript:DateTimeShortcuts.drawNext('+num+');'); cal_nav_next.className = 'calendarnav-next'; - cal_box.appendChild(cal_nav); // main box var cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num); diff --git a/django/contrib/admin/views/auth.py b/django/contrib/admin/views/auth.py index d09075c2a1..42230050cc 100644 --- a/django/contrib/admin/views/auth.py +++ b/django/contrib/admin/views/auth.py @@ -1,3 +1,4 @@ +from django.contrib.admin.views.decorators import staff_member_required from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.models import User from django import forms, template @@ -5,6 +6,8 @@ from django.shortcuts import render_to_response from django.http import HttpResponseRedirect def user_add_stage(request): + if not request.user.has_perm('auth.change_user'): + raise PermissionDenied manipulator = UserCreationForm() if request.method == 'POST': new_data = request.POST.copy() @@ -37,3 +40,4 @@ def user_add_stage(request): 'opts': User._meta, 'username_help_text': User._meta.get_field('username').help_text, }, context_instance=template.RequestContext(request)) +user_add_stage = staff_member_required(user_add_stage) diff --git a/django/contrib/auth/middleware.py b/django/contrib/auth/middleware.py index a6a60780a7..42dc15a366 100644 --- a/django/contrib/auth/middleware.py +++ b/django/contrib/auth/middleware.py @@ -1,12 +1,9 @@ class LazyUser(object): - def __init__(self): - self._user = None - def __get__(self, request, obj_type=None): - if self._user is None: + if not hasattr(request, '_cached_user'): from django.contrib.auth import get_user - self._user = get_user(request) - return self._user + request._cached_user = get_user(request) + return request._cached_user class AuthenticationMiddleware(object): def process_request(self, request): diff --git a/django/core/management.py b/django/core/management.py index 799ec30d2c..16c9d6b693 100644 --- a/django/core/management.py +++ b/django/core/management.py @@ -492,7 +492,7 @@ def syncdb(verbosity=2, interactive=True): # to do at this point. for app in models.get_apps(): dispatcher.send(signal=signals.post_syncdb, sender=app, - app=app, created_models=created_models, + app=app, created_models=created_models, verbosity=verbosity, interactive=interactive) # Install initial data for the app (but only if this is a model we've @@ -552,7 +552,7 @@ def diffsettings(): # Inspired by Postfix's "postconf -n". from django.conf import settings, global_settings - user_settings = _module_to_dict(settings) + user_settings = _module_to_dict(settings._target) default_settings = _module_to_dict(global_settings) output = [] @@ -903,27 +903,32 @@ def get_validation_errors(outfile, app=None): rel_name = RelatedObject(f.rel.to, cls, f).get_accessor_name() rel_query_name = f.related_query_name() - for r in rel_opts.fields: - if r.name == rel_name: - e.add(opts, "Accessor for m2m field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name)) - if r.name == rel_query_name: - e.add(opts, "Reverse query name for m2m field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name)) - for r in rel_opts.many_to_many: - if r.name == rel_name: - e.add(opts, "Accessor for m2m field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name)) - if r.name == rel_query_name: - e.add(opts, "Reverse query name for m2m field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name)) - for r in rel_opts.get_all_related_many_to_many_objects(): - if r.field is not f: + # If rel_name is none, there is no reverse accessor. + # (This only occurs for symmetrical m2m relations to self). + # If this is the case, there are no clashes to check for this field, as + # there are no reverse descriptors for this field. + if rel_name is not None: + for r in rel_opts.fields: + if r.name == rel_name: + e.add(opts, "Accessor for m2m field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name)) + if r.name == rel_query_name: + e.add(opts, "Reverse query name for m2m field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name)) + for r in rel_opts.many_to_many: + if r.name == rel_name: + e.add(opts, "Accessor for m2m field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name)) + if r.name == rel_query_name: + e.add(opts, "Reverse query name for m2m field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name)) + for r in rel_opts.get_all_related_many_to_many_objects(): + if r.field is not f: + if r.get_accessor_name() == rel_name: + e.add(opts, "Accessor for m2m field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name)) + if r.get_accessor_name() == rel_query_name: + e.add(opts, "Reverse query name for m2m field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name)) + for r in rel_opts.get_all_related_objects(): if r.get_accessor_name() == rel_name: - e.add(opts, "Accessor for m2m field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name)) + e.add(opts, "Accessor for m2m field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name)) if r.get_accessor_name() == rel_query_name: - e.add(opts, "Reverse query name for m2m field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name)) - for r in rel_opts.get_all_related_objects(): - if r.get_accessor_name() == rel_name: - e.add(opts, "Accessor for m2m field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name)) - if r.get_accessor_name() == rel_query_name: - e.add(opts, "Reverse query name for m2m field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name)) + e.add(opts, "Reverse query name for m2m field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name)) # Check admin attribute. if opts.admin is not None: @@ -1167,7 +1172,7 @@ def test(verbosity, app_labels): app_list = get_apps() else: app_list = [get_app(app_label) for app_label in app_labels] - + test_path = settings.TEST_RUNNER.split('.') # Allow for Python 2.5 relative paths if len(test_path) > 1: @@ -1176,7 +1181,7 @@ def test(verbosity, app_labels): test_module_name = '.' test_module = __import__(test_module_name, [],[],test_path[-1]) test_runner = getattr(test_module, test_path[-1]) - + test_runner(app_list, verbosity) test.help_doc = 'Runs the test suite for the specified applications, or the entire site if no apps are specified' test.args = '[--verbosity] ' + APP_ARGS diff --git a/django/core/servers/fastcgi.py b/django/core/servers/fastcgi.py index dedc1f8ba1..7377bed1c5 100644 --- a/django/core/servers/fastcgi.py +++ b/django/core/servers/fastcgi.py @@ -74,8 +74,9 @@ def fastcgi_help(message=None): print message return False -def runfastcgi(argset): +def runfastcgi(argset, **kwargs): options = FASTCGI_OPTIONS.copy() + options.update(kwargs) for x in argset: if "=" in x: k, v = x.split('=', 1) diff --git a/django/db/backends/mysql/introspection.py b/django/db/backends/mysql/introspection.py index 2c77f76ee3..7829457fa9 100644 --- a/django/db/backends/mysql/introspection.py +++ b/django/db/backends/mysql/introspection.py @@ -36,13 +36,14 @@ def get_relations(cursor, table_name): SELECT column_name, referenced_table_name, referenced_column_name FROM information_schema.key_column_usage WHERE table_name = %s + AND table_schema = DATABASE() AND referenced_table_name IS NOT NULL AND referenced_column_name IS NOT NULL""", [table_name]) constraints.extend(cursor.fetchall()) except (ProgrammingError, OperationalError): # Fall back to "SHOW CREATE TABLE", for previous MySQL versions. # Go through all constraints and save the equal matches. - cursor.execute("SHOW CREATE TABLE %s" % table_name) + cursor.execute("SHOW CREATE TABLE %s" % quote_name(table_name)) for row in cursor.fetchall(): pos = 0 while True: diff --git a/django/db/backends/postgresql_psycopg2/base.py b/django/db/backends/postgresql_psycopg2/base.py index 9cfef25cb3..4c835d89fc 100644 --- a/django/db/backends/postgresql_psycopg2/base.py +++ b/django/db/backends/postgresql_psycopg2/base.py @@ -68,23 +68,9 @@ def quote_name(name): return name # Quoting once is enough. return '"%s"' % name -def dictfetchone(cursor): - "Returns a row from the cursor as a dict" - # TODO: cursor.dictfetchone() doesn't exist in psycopg2, - # but no Django code uses this. Safe to remove? - return cursor.dictfetchone() - -def dictfetchmany(cursor, number): - "Returns a certain number of rows from a cursor as a dict" - # TODO: cursor.dictfetchmany() doesn't exist in psycopg2, - # but no Django code uses this. Safe to remove? - return cursor.dictfetchmany(number) - -def dictfetchall(cursor): - "Returns all rows from a cursor as a dict" - # TODO: cursor.dictfetchall() doesn't exist in psycopg2, - # but no Django code uses this. Safe to remove? - return cursor.dictfetchall() +dictfetchone = util.dictfetchone +dictfetchmany = util.dictfetchmany +dictfetchall = util.dictfetchall def get_last_insert_id(cursor, table_name, pk_name): cursor.execute("SELECT CURRVAL('\"%s_%s_seq\"')" % (table_name, pk_name)) diff --git a/django/db/models/related.py b/django/db/models/related.py index ee3b916cf4..ac1ec50ca2 100644 --- a/django/db/models/related.py +++ b/django/db/models/related.py @@ -131,6 +131,9 @@ class RelatedObject(object): # many-to-many objects. It uses the lower-cased object_name + "_set", # but this can be overridden with the "related_name" option. if self.field.rel.multiple: + # If this is a symmetrical m2m relation on self, there is no reverse accessor. + if getattr(self.field.rel, 'symmetrical', False) and self.model == self.parent_model: + return None return self.field.rel.related_name or (self.opts.object_name.lower() + '_set') else: return self.field.rel.related_name or (self.opts.object_name.lower()) diff --git a/django/test/simple.py b/django/test/simple.py index 043787414e..628fa464d2 100644 --- a/django/test/simple.py +++ b/django/test/simple.py @@ -38,10 +38,23 @@ def build_suite(app_module): except ValueError: # No doc tests in tests.py pass - except ImportError: - # No tests.py file for application - pass - + except ImportError, e: + # Couldn't import tests.py. Was it due to a missing file, or + # due to an import error in a tests.py that actually exists? + import os.path + from imp import find_module + try: + mod = find_module(TEST_MODULE, [os.path.dirname(app_module.__file__)]) + except ImportError: + # 'tests' module doesn't exist. Move on. + pass + else: + # The module exists, so there must be an import error in the + # test module itself. We don't need the module; close the file + # handle returned by find_module. + mod[0].close() + raise + return suite def run_tests(module_list, verbosity=1, extra_tests=[]): diff --git a/django/utils/functional.py b/django/utils/functional.py index d1514d5728..e3c0a3c76b 100644 --- a/django/utils/functional.py +++ b/django/utils/functional.py @@ -1,6 +1,6 @@ -def curry(*args, **kwargs): +def curry(_curried_func, *args, **kwargs): def _curried(*moreargs, **morekwargs): - return args[0](*(args[1:]+moreargs), **dict(kwargs.items() + morekwargs.items())) + return _curried_func(*(args+moreargs), **dict(kwargs, **morekwargs)) return _curried class Promise: diff --git a/docs/authentication.txt b/docs/authentication.txt index d10dda28ef..f161e9d357 100644 --- a/docs/authentication.txt +++ b/docs/authentication.txt @@ -82,14 +82,14 @@ Methods ``user_permissions``. ``User`` objects can access their related objects in the same way as any other `Django model`_:: - myuser.objects.groups = [group_list] - myuser.objects.groups.add(group, group,...) - myuser.objects.groups.remove(group, group,...) - myuser.objects.groups.clear() - myuser.objects.permissions = [permission_list] - myuser.objects.permissions.add(permission, permission, ...) - myuser.objects.permissions.remove(permission, permission, ...] - myuser.objects.permissions.clear() + myuser.groups = [group_list] + myuser.groups.add(group, group,...) + myuser.groups.remove(group, group,...) + myuser.groups.clear() + myuser.permissions = [permission_list] + myuser.permissions.add(permission, permission, ...) + myuser.permissions.remove(permission, permission, ...] + myuser.permissions.clear() In addition to those automatic API methods, ``User`` objects have the following custom methods: diff --git a/docs/django-admin.txt b/docs/django-admin.txt index 672200c5e7..ffafc83972 100644 --- a/docs/django-admin.txt +++ b/docs/django-admin.txt @@ -295,6 +295,8 @@ give you the option of creating a superuser immediately. test ---- +**New in Django development version** + Discover and run tests for all installed models. See `Testing Django applications`_ for more information. .. _testing django applications: ../testing/ @@ -348,6 +350,8 @@ options. --noinput --------- +**New in Django development version** + Inform django-admin that the user should NOT be prompted for any input. Useful if the django-admin script will be executed as an unattended, automated script. @@ -369,6 +373,8 @@ Example output:: --verbosity ----------- +**New in Django development version** + Example usage:: django-admin.py syncdb --verbosity=2 diff --git a/docs/fastcgi.txt b/docs/fastcgi.txt index 41d50d97a1..e2f4e933b4 100644 --- a/docs/fastcgi.txt +++ b/docs/fastcgi.txt @@ -270,7 +270,7 @@ In your Web root directory, add this to a file named ``.htaccess`` :: AddHandler fastcgi-script .fcgi RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f - RewriteRule ^/(.*)$ /mysite.fcgi/$1 [QSA,L] + RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA,L] Then, create a small script that tells Apache how to spawn your FastCGI program. Create a file ``mysite.fcgi`` and place it in your Web directory, and @@ -289,7 +289,7 @@ be sure to make it executable :: os.environ['DJANGO_SETTINGS_MODULE'] = "myproject.settings" from django.core.servers.fastcgi import runfastcgi - runfastcgi(["method=threaded", "daemonize=false"]) + runfastcgi(method="threaded", daemonize="false") Restarting the spawned server ----------------------------- diff --git a/docs/forms.txt b/docs/forms.txt index 67408f3c5d..d6ef6f791b 100644 --- a/docs/forms.txt +++ b/docs/forms.txt @@ -321,7 +321,7 @@ about editing an existing one? It's shockingly similar to creating a new one:: else: errors = {} # This makes sure the form accurate represents the fields of the place. - new_data = place.__dict__ + new_data = manipulator.flatten_data() form = forms.FormWrapper(manipulator, new_data, errors) return render_to_response('places/edit_form.html', {'form': form, 'place': place}) @@ -336,10 +336,10 @@ The only real differences are: * ``ChangeManipulator.original_object`` stores the instance of the object being edited. - * We set ``new_data`` to the original object's ``__dict__``. This makes - sure the form fields contain the current values of the object. - ``FormWrapper`` does not modify ``new_data`` in any way, and templates - cannot, so this is perfectly safe. + * We set ``new_data`` based upon ``flatten_data()`` from the manipulator. + ``flatten_data()`` takes the data from the original object under + manipulation, and converts it into a data dictionary that can be used + to populate form elements with the existing values for the object. * The above example uses a different template, so create and edit can be "skinned" differently if needed, but the form chunk itself is completely diff --git a/docs/testing.txt b/docs/testing.txt index f8158a0001..b1ede3e4cc 100644 --- a/docs/testing.txt +++ b/docs/testing.txt @@ -92,7 +92,8 @@ Writing unittests Like doctests, Django's unit tests use a standard library module: unittest_. As with doctests, Django's test runner looks for any unit test cases defined -in ``models.py``, or in a ``tests.py`` file in your application directory. +in ``models.py``, or in a ``tests.py`` file stored in the application +directory. An equivalent unittest test case for the above example would look like:: @@ -110,8 +111,9 @@ An equivalent unittest test case for the above example would look like:: self.assertEquals(self.cat.speak(), 'The cat says "meow"') When you `run your tests`_, the test utility will find all the test cases -(that is, subclasses of ``unittest.TestCase``) in ``tests.py``, automatically -build a test suite out of those test cases, and run that suite. +(that is, subclasses of ``unittest.TestCase``) in ``models.py`` and +``tests.py``, automatically build a test suite out of those test cases, +and run that suite. For more details about ``unittest``, see the `standard library unittest documentation`_. @@ -197,10 +199,10 @@ used as test conditions. .. _Selenium: http://www.openqa.org/selenium/ The Test Client is stateful; if a cookie is returned as part of a response, -that cookie is provided as part of the next request. Expiry policies for these -cookies are not followed; if you want a cookie to expire, either delete it -manually from ``client.cookies``, or create a new Client instance (which will -effectively delete all cookies). +that cookie is provided as part of the next request issued to that Client +instance. Expiry policies for these cookies are not followed; if you want +a cookie to expire, either delete it manually from ``client.cookies``, or +create a new Client instance (which will effectively delete all cookies). Making requests ~~~~~~~~~~~~~~~ @@ -210,7 +212,6 @@ no arguments at time of construction. Once constructed, the following methods can be invoked on the ``Client`` instance. ``get(path, data={})`` - Make a GET request on the provided ``path``. The key-value pairs in the data dictionary will be used to create a GET data payload. For example:: @@ -222,7 +223,6 @@ can be invoked on the ``Client`` instance. http://yoursite.com/customers/details/?name='fred'&age=7 ``post(path, data={})`` - Make a POST request on the provided ``path``. The key-value pairs in the data dictionary will be used to create the POST data payload. This payload will be transmitted with the mimetype ``multipart/form-data``. @@ -243,7 +243,6 @@ can be invoked on the ``Client`` instance. need to manually close the file after it has been provided to the POST. ``login(path, username, password)`` - In a production site, it is likely that some views will be protected with the @login_required URL provided by ``django.contrib.auth``. Interacting with a URL that has been login protected is a slightly complex operation, @@ -307,9 +306,12 @@ The following is a simple unit test using the Test Client:: # Every test needs a client self.client = Client() def test_details(self): + # Issue a GET request response = self.client.get('/customer/details/') + # Check that the respose is 200 OK self.failUnlessEqual(response.status_code, 200) + # Check that the rendered context contains 5 customers self.failUnlessEqual(len(response.context['customers']), 5) Fixtures diff --git a/tests/modeltests/invalid_models/models.py b/tests/modeltests/invalid_models/models.py index 5540c1bd5f..2299cd85e6 100644 --- a/tests/modeltests/invalid_models/models.py +++ b/tests/modeltests/invalid_models/models.py @@ -68,15 +68,34 @@ class SelfClashForeign(models.Model): foreign_1 = models.ForeignKey("SelfClashForeign", related_name='id') foreign_2 = models.ForeignKey("SelfClashForeign", related_name='src_safe') +class ValidM2M(models.Model): + src_safe = models.CharField(maxlength=10) + validm2m = models.CharField(maxlength=10) + + # M2M fields are symmetrical by default. Symmetrical M2M fields + # on self don't require a related accessor, so many potential + # clashes are avoided. + validm2m_set = models.ManyToManyField("ValidM2M") + + m2m_1 = models.ManyToManyField("ValidM2M", related_name='id') + m2m_2 = models.ManyToManyField("ValidM2M", related_name='src_safe') + + m2m_3 = models.ManyToManyField('self') + m2m_4 = models.ManyToManyField('self') + class SelfClashM2M(models.Model): src_safe = models.CharField(maxlength=10) selfclashm2m = models.CharField(maxlength=10) - selfclashm2m_set = models.ManyToManyField("SelfClashM2M") - m2m_1 = models.ManyToManyField("SelfClashM2M", related_name='id') - m2m_2 = models.ManyToManyField("SelfClashM2M", related_name='src_safe') - + # Non-symmetrical M2M fields _do_ have related accessors, so + # there is potential for clashes. + selfclashm2m_set = models.ManyToManyField("SelfClashM2M", symmetrical=False) + + m2m_1 = models.ManyToManyField("SelfClashM2M", related_name='id', symmetrical=False) + m2m_2 = models.ManyToManyField("SelfClashM2M", related_name='src_safe', symmetrical=False) + m2m_3 = models.ManyToManyField('self', symmetrical=False) + m2m_4 = models.ManyToManyField('self', symmetrical=False) model_errors = """invalid_models.fielderrors: "charfield": CharFields require a "maxlength" attribute. invalid_models.fielderrors: "floatfield": FloatFields require a "decimal_places" attribute. @@ -147,9 +166,17 @@ invalid_models.selfclashforeign: Accessor for field 'foreign_2' clashes with fie invalid_models.selfclashforeign: Reverse query name for field 'foreign_2' clashes with field 'SelfClashForeign.src_safe'. Add a related_name argument to the definition for 'foreign_2'. invalid_models.selfclashm2m: Accessor for m2m field 'selfclashm2m_set' clashes with m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'selfclashm2m_set'. invalid_models.selfclashm2m: Reverse query name for m2m field 'selfclashm2m_set' clashes with field 'SelfClashM2M.selfclashm2m'. Add a related_name argument to the definition for 'selfclashm2m_set'. +invalid_models.selfclashm2m: Accessor for m2m field 'selfclashm2m_set' clashes with related m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'selfclashm2m_set'. invalid_models.selfclashm2m: Accessor for m2m field 'm2m_1' clashes with field 'SelfClashM2M.id'. Add a related_name argument to the definition for 'm2m_1'. invalid_models.selfclashm2m: Accessor for m2m field 'm2m_2' clashes with field 'SelfClashM2M.src_safe'. Add a related_name argument to the definition for 'm2m_2'. invalid_models.selfclashm2m: Reverse query name for m2m field 'm2m_1' clashes with field 'SelfClashM2M.id'. Add a related_name argument to the definition for 'm2m_1'. invalid_models.selfclashm2m: Reverse query name for m2m field 'm2m_2' clashes with field 'SelfClashM2M.src_safe'. Add a related_name argument to the definition for 'm2m_2'. +invalid_models.selfclashm2m: Accessor for m2m field 'm2m_3' clashes with m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_3'. +invalid_models.selfclashm2m: Accessor for m2m field 'm2m_3' clashes with related m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_3'. +invalid_models.selfclashm2m: Accessor for m2m field 'm2m_3' clashes with related m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_3'. +invalid_models.selfclashm2m: Accessor for m2m field 'm2m_4' clashes with m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_4'. +invalid_models.selfclashm2m: Accessor for m2m field 'm2m_4' clashes with related m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_4'. +invalid_models.selfclashm2m: Accessor for m2m field 'm2m_4' clashes with related m2m field 'SelfClashM2M.selfclashm2m_set'. Add a related_name argument to the definition for 'm2m_4'. +invalid_models.selfclashm2m: Reverse query name for m2m field 'm2m_3' clashes with field 'SelfClashM2M.selfclashm2m'. Add a related_name argument to the definition for 'm2m_3'. +invalid_models.selfclashm2m: Reverse query name for m2m field 'm2m_4' clashes with field 'SelfClashM2M.selfclashm2m'. Add a related_name argument to the definition for 'm2m_4'. """ -