diff --git a/django/bin/profiling/gather_profile_stats.py b/django/bin/profiling/gather_profile_stats.py index c0844930e9..0fd2b7fca9 100644 --- a/django/bin/profiling/gather_profile_stats.py +++ b/django/bin/profiling/gather_profile_stats.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python + """ gather_profile_stats.py /path/to/dir/of/profiles diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index cdf71c00dc..9f24f0c2df 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -11,9 +11,10 @@ gettext_noop = lambda s: s DEBUG = False TEMPLATE_DEBUG = False -# True if BaseHandler.get_response() should propagate raw exceptions -# rather than catching them. This is useful under some testing siutations, -# and should never be used on a live site. + +# Whether the framework should propagate raw exceptions rather than catching +# them. This is useful under some testing siutations and should never be used +# on a live site. DEBUG_PROPAGATE_EXCEPTIONS = False # Whether to use the "Etag" header. This saves bandwidth but slows down performance. @@ -289,7 +290,7 @@ SESSION_COOKIE_DOMAIN = None # A string like ".lawren SESSION_COOKIE_SECURE = False # Whether the session cookie should be secure (https:// only). SESSION_COOKIE_PATH = '/' # The path of the session cookie. SESSION_SAVE_EVERY_REQUEST = False # Whether to save the session data on every request. -SESSION_EXPIRE_AT_BROWSER_CLOSE = False # Whether a user's session cookie expires when they close their browser. +SESSION_EXPIRE_AT_BROWSER_CLOSE = False # Whether a user's session cookie expires when the Web browser is closed. SESSION_ENGINE = 'django.contrib.sessions.backends.db' # The module to store session data SESSION_FILE_PATH = None # Directory to store session files if using the file session module. If None, the backend will use a sensible default. diff --git a/django/conf/locale/es/LC_MESSAGES/django.mo b/django/conf/locale/es/LC_MESSAGES/django.mo index 9437a3b483..d62d6f1a60 100644 Binary files a/django/conf/locale/es/LC_MESSAGES/django.mo and b/django/conf/locale/es/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/es/LC_MESSAGES/django.po b/django/conf/locale/es/LC_MESSAGES/django.po index 1bb9491696..025dbac5f2 100644 --- a/django/conf/locale/es/LC_MESSAGES/django.po +++ b/django/conf/locale/es/LC_MESSAGES/django.po @@ -5,201 +5,200 @@ msgid "" msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-05-26 10:38+0200\n" -"PO-Revision-Date: 2008-03-30 01:04+0100\n" -"Last-Translator: Django Spanish Group \n" -"Language-Team: Spanish \n" +"POT-Creation-Date: 2008-06-13 16:14+0200\n" +"PO-Revision-Date: 2008-06-16 10:04+0200\n" +"Last-Translator: Django Spanish Translation Team \n" +"Language-Team: Django Spanish Translation Team \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: conf/global_settings.py:43 +#: conf/global_settings.py:44 msgid "Arabic" msgstr "Árabe" -#: conf/global_settings.py:44 +#: conf/global_settings.py:45 msgid "Bengali" msgstr "Bengalí" -#: conf/global_settings.py:45 +#: conf/global_settings.py:46 msgid "Bulgarian" msgstr "Búlgaro" -#: conf/global_settings.py:46 +#: conf/global_settings.py:47 msgid "Catalan" msgstr "Catalán" -#: conf/global_settings.py:47 +#: conf/global_settings.py:48 msgid "Czech" msgstr "Checo" -#: conf/global_settings.py:48 +#: conf/global_settings.py:49 msgid "Welsh" msgstr "Galés" -#: conf/global_settings.py:49 +#: conf/global_settings.py:50 msgid "Danish" msgstr "Danés" -#: conf/global_settings.py:50 +#: conf/global_settings.py:51 msgid "German" msgstr "Alemán" -#: conf/global_settings.py:51 +#: conf/global_settings.py:52 msgid "Greek" msgstr "Griego" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "English" msgstr "Inglés" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "Spanish" msgstr "Español" -#: conf/global_settings.py:54 +#: conf/global_settings.py:55 msgid "Argentinean Spanish" msgstr "Español Argentino" -#: conf/global_settings.py:55 +#: conf/global_settings.py:56 msgid "Basque" msgstr "Vasco" -#: conf/global_settings.py:56 +#: conf/global_settings.py:57 msgid "Persian" msgstr "Persa" -#: conf/global_settings.py:57 +#: conf/global_settings.py:58 msgid "Finnish" msgstr "Finés" -#: conf/global_settings.py:58 +#: conf/global_settings.py:59 msgid "French" msgstr "Francés" -#: conf/global_settings.py:59 +#: conf/global_settings.py:60 msgid "Irish" msgstr "Irlandés" -#: conf/global_settings.py:60 +#: conf/global_settings.py:61 msgid "Galician" msgstr "Gallego" -#: conf/global_settings.py:61 +#: conf/global_settings.py:62 msgid "Hungarian" msgstr "Húngaro" -#: conf/global_settings.py:62 +#: conf/global_settings.py:63 msgid "Hebrew" msgstr "Hebreo" -#: conf/global_settings.py:63 +#: conf/global_settings.py:64 msgid "Croatian" msgstr "Croata" -#: conf/global_settings.py:64 +#: conf/global_settings.py:65 msgid "Icelandic" msgstr "Islandés" -#: conf/global_settings.py:65 +#: conf/global_settings.py:66 msgid "Italian" msgstr "Italiano" -#: conf/global_settings.py:66 +#: conf/global_settings.py:67 msgid "Japanese" msgstr "Japonés" -#: conf/global_settings.py:67 +#: conf/global_settings.py:68 msgid "Georgian" msgstr "Georgiano" -#: conf/global_settings.py:68 +#: conf/global_settings.py:69 msgid "Korean" msgstr "Koreano" -#: conf/global_settings.py:69 +#: conf/global_settings.py:70 msgid "Khmer" msgstr "Khmer" -#: conf/global_settings.py:70 +#: conf/global_settings.py:71 msgid "Kannada" msgstr "Kannada" -#: conf/global_settings.py:71 -msgid "Latvian" -msgstr "Latvio" - #: conf/global_settings.py:72 +msgid "Latvian" +msgstr "Letón" + +#: conf/global_settings.py:73 msgid "Macedonian" msgstr "Macedonio" -#: conf/global_settings.py:73 -msgid "Dutch" -msgstr "Alemán" - #: conf/global_settings.py:74 +msgid "Dutch" +msgstr "Holandés" + +#: conf/global_settings.py:75 msgid "Norwegian" msgstr "Noruego" -#: conf/global_settings.py:75 +#: conf/global_settings.py:76 msgid "Polish" msgstr "Polaco" -#: conf/global_settings.py:76 -msgid "Portugese" -msgstr "Portugés" - #: conf/global_settings.py:77 -#, fuzzy -msgid "Brazilian Portuguese" -msgstr "Portugés" +msgid "Portugese" +msgstr "Portugués" #: conf/global_settings.py:78 +msgid "Brazilian Portuguese" +msgstr "Portugués Brasileño" + +#: conf/global_settings.py:79 msgid "Romanian" msgstr "Rumano" -#: conf/global_settings.py:79 +#: conf/global_settings.py:80 msgid "Russian" msgstr "Ruso" -#: conf/global_settings.py:80 +#: conf/global_settings.py:81 msgid "Slovak" msgstr "Eslovaco" -#: conf/global_settings.py:81 +#: conf/global_settings.py:82 msgid "Slovenian" msgstr "Esloveno" -#: conf/global_settings.py:82 +#: conf/global_settings.py:83 msgid "Serbian" msgstr "Serbio" -#: conf/global_settings.py:83 +#: conf/global_settings.py:84 msgid "Swedish" msgstr "Sueco" -#: conf/global_settings.py:84 +#: conf/global_settings.py:85 msgid "Tamil" msgstr "Tamil" -#: conf/global_settings.py:85 +#: conf/global_settings.py:86 msgid "Telugu" msgstr "Telugu" -#: conf/global_settings.py:86 +#: conf/global_settings.py:87 msgid "Turkish" msgstr "Turco" -#: conf/global_settings.py:87 +#: conf/global_settings.py:88 msgid "Ukrainian" msgstr "Ucraniano" -#: conf/global_settings.py:88 +#: conf/global_settings.py:89 msgid "Simplified Chinese" msgstr "Chino simplificado" -#: conf/global_settings.py:89 +#: conf/global_settings.py:90 msgid "Traditional Chinese" msgstr "Chino tradicional" @@ -329,7 +328,7 @@ msgstr "" #: contrib/admin/templates/admin/base.html:26 msgid "Welcome," -msgstr "Bienvenido," +msgstr "Bienvenido/a," #: contrib/admin/templates/admin/base.html:28 #: contrib/admin/templates/admin_doc/bookmarklets.html:3 @@ -340,7 +339,7 @@ msgstr "Documentación" #: contrib/admin/templates/admin/auth/user/change_password.html:14 #: contrib/admin/templates/admin/auth/user/change_password.html:45 msgid "Change password" -msgstr "Cambiar clave" +msgstr "Cambiar contraseña" #: contrib/admin/templates/admin/base.html:30 #: contrib/comments/templates/comments/form.html:6 @@ -358,7 +357,7 @@ msgstr "Administración de Django" #: contrib/admin/templates/admin/change_form.html:14 #: contrib/admin/templates/admin/index.html:28 msgid "Add" -msgstr "Agregar" +msgstr "Añadir" #: contrib/admin/templates/admin/change_form.html:20 #: contrib/admin/templates/admin/object_history.html:4 @@ -387,7 +386,7 @@ msgstr "Orden:" #: contrib/admin/templates/admin/change_list.html:11 #, python-format msgid "Add %(name)s" -msgstr "Agregar %(name)s" +msgstr "Añadir %(name)s" #: contrib/admin/templates/admin/delete_confirmation.html:8 #: contrib/admin/templates/admin/submit_line.html:3 @@ -463,7 +462,7 @@ msgid "" "database tables have been created, and make sure the database is readable by " "the appropriate user." msgstr "" -"Algo va mal con la instalación de la base de datos. Asegúrate que las tablas " +"Algo va mal con la instalación de la base de datos. Asegúrese que las tablas " "necesarias han sido creadas, y que la base de datos puede ser leída por el " "usuario apropiado." @@ -476,12 +475,12 @@ msgstr "Usuario:" #: contrib/admin/templates/admin/login.html:20 #: contrib/comments/templates/comments/form.html:8 msgid "Password:" -msgstr "Clave:" +msgstr "Contraseña:" #: contrib/admin/templates/admin/login.html:25 #: contrib/admin/views/decorators.py:31 msgid "Log in" -msgstr "Identificarse" +msgstr "Iniciar sesión" #: contrib/admin/templates/admin/object_history.html:17 msgid "Date/time" @@ -509,11 +508,11 @@ msgstr "" #: contrib/admin/templates/admin/pagination.html:10 msgid "Show all" -msgstr "Mostrarlo todo" +msgstr "Mostrar todo" #: contrib/admin/templates/admin/search_form.html:8 msgid "Go" -msgstr "Buscar" +msgstr "Ir" #: contrib/admin/templates/admin/search_form.html:10 #, python-format @@ -568,7 +567,7 @@ msgstr "Contraseña (de nuevo)" #: contrib/admin/templates/admin/auth/user/add_form.html:24 #: contrib/admin/templates/admin/auth/user/change_password.html:39 msgid "Enter the same password as above, for verification." -msgstr "Introduzca la misma contraseña que arriba, para verificación" +msgstr "Introduzca la misma contraseña que arriba, para verificación." #: contrib/admin/templates/admin/auth/user/change_password.html:27 #, python-format @@ -599,22 +598,22 @@ msgstr "" "

Para instalar bookmarklets, arrastre el enlace a su barra\n" "de favoritos, o pulse con el botón derecho el enlace y añádalo a sus " "favoritos.\n" -"Ahora puede escoger el bookmarklet desde cualquier página en el sitio.\n" -"Observer que algunos de estos bookmarklets precisan que esté viendo\n" -"el sitio desde un computador señalado como \"interno\" (hable\n" -"con su administrador de sistemas si no está seguro de si el suyo lo es).\n" #: contrib/admin/templates/admin_doc/bookmarklets.html:18 msgid "Documentation for this page" -msgstr "Documentación de esta página" +msgstr "Documentación para esta página" #: contrib/admin/templates/admin_doc/bookmarklets.html:19 msgid "" "Jumps you from any page to the documentation for the view that generates " "that page." msgstr "" -"Le lleva desde cualquier página a la documentación de la vista que la genera." +"Lleva desde cualquier página a la documentación de la vista que la genera." #: contrib/admin/templates/admin_doc/bookmarklets.html:21 msgid "Show object ID" @@ -625,8 +624,8 @@ msgid "" "Shows the content-type and unique ID for pages that represent a single " "object." msgstr "" -"Muestra el tipo de contenido e ID unívoco de las páginas que representan un " -"único objeto." +"Muestra el tipo de contenido e ID único de las páginas que representan un " +"simple objeto." #: contrib/admin/templates/admin_doc/bookmarklets.html:24 msgid "Edit this object (current window)" @@ -635,7 +634,7 @@ msgstr "Editar este objeto (ventana actual)" #: contrib/admin/templates/admin_doc/bookmarklets.html:25 msgid "Jumps to the admin page for pages that represent a single object." msgstr "" -"Le lleva a la página de administración de páginas que representan un único " +"Lleva a la página de administración de páginas que representan un único " "objeto." #: contrib/admin/templates/admin_doc/bookmarklets.html:27 @@ -649,85 +648,85 @@ msgstr "" #: contrib/admin/templates/registration/logged_out.html:8 msgid "Thanks for spending some quality time with the Web site today." -msgstr "Gracias por el tiempo que ha dedicado al sitio web hoy." +msgstr "Gracias por el tiempo que ha dedicado hoy al sitio web." #: contrib/admin/templates/registration/logged_out.html:10 msgid "Log in again" -msgstr "Identificarse de nuevo" +msgstr "Iniciar sesión de nuevo" #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/registration/password_change_form.html:5 #: contrib/admin/templates/registration/password_change_form.html:9 msgid "Password change" -msgstr "Cambio de clave" +msgstr "Cambio de contraseña" #: contrib/admin/templates/registration/password_change_done.html:5 #: contrib/admin/templates/registration/password_change_done.html:9 msgid "Password change successful" -msgstr "Cambio de clave exitoso" +msgstr "Cambio de contraseña exitoso" #: contrib/admin/templates/registration/password_change_done.html:11 msgid "Your password was changed." -msgstr "Su clave ha sido cambiada." +msgstr "Su contraseña ha sido cambiada." #: contrib/admin/templates/registration/password_change_form.html:11 msgid "" "Please enter your old password, for security's sake, and then enter your new " "password twice so we can verify you typed it in correctly." msgstr "" -"Por favor, introduzca su clave antigua, por seguridad, y después introduzca " -"la nueva clave dos veces para verificar que la ha escrito correctamente." +"Por favor, introduzca su contraseña antigua, por seguridad, y después introduzca " +"la nueva contraseña dos veces para verificar que la ha escrito correctamente." #: contrib/admin/templates/registration/password_change_form.html:16 msgid "Old password:" -msgstr "Clave antigua:" +msgstr "Contraseña antigua:" #: contrib/admin/templates/registration/password_change_form.html:18 msgid "New password:" -msgstr "Clave nueva:" +msgstr "Contraseña nueva:" #: contrib/admin/templates/registration/password_change_form.html:20 msgid "Confirm password:" -msgstr "Confirme clave:" +msgstr "Confirme contraseña:" #: contrib/admin/templates/registration/password_change_form.html:22 msgid "Change my password" -msgstr "Cambiar mi clave" +msgstr "Cambiar mi contraseña" #: contrib/admin/templates/registration/password_reset_done.html:4 #: contrib/admin/templates/registration/password_reset_form.html:4 #: contrib/admin/templates/registration/password_reset_form.html:6 #: contrib/admin/templates/registration/password_reset_form.html:10 msgid "Password reset" -msgstr "Recuperar clave" +msgstr "Restablecer contraseña" #: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:10 msgid "Password reset successful" -msgstr "Recuperación de clave exitosa" +msgstr "Restablecimiento de contraseña exitoso" #: contrib/admin/templates/registration/password_reset_done.html:12 msgid "" "We've e-mailed a new password to the e-mail address you submitted. You " "should be receiving it shortly." msgstr "" -"Le hemos enviado una clave nueva a la dirección que ha suministrado. Debería " +"Le hemos enviado una contraseña nueva a la dirección que ha suministrado. Debería " "recibirla en breve." #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" -msgstr "Está recibiendo este mensaje debido a que solicitó recuperar la clave" +msgstr "Está recibiendo este mensaje debido a que solicitó restablecer la contraseña" #: contrib/admin/templates/registration/password_reset_email.html:3 #, python-format msgid "for your user account at %(site_name)s" -msgstr "de su cuenta de usuario en %(site_name)s." +msgstr "para su cuenta de usuario en %(site_name)s." #: contrib/admin/templates/registration/password_reset_email.html:5 #, python-format msgid "Your new password is: %(new_password)s" -msgstr "Su nueva clave es: %(new_password)s" +msgstr "Su nueva contraseña es: %(new_password)s" #: contrib/admin/templates/registration/password_reset_email.html:7 msgid "Feel free to change this password by going to this page:" @@ -751,7 +750,7 @@ msgid "" "Forgotten your password? Enter your e-mail address below, and we'll reset " "your password and e-mail the new one to you." msgstr "" -"¿Ha olvidado su clave? Introduzca su dirección de correo electrónico, y " +"¿Ha olvidado su contraseña? Introduzca su dirección de correo electrónico, y " "crearemos una nueva que le enviaremos por correo." #: contrib/admin/templates/registration/password_reset_form.html:16 @@ -760,7 +759,7 @@ msgstr "Dirección de correo electrónico:" #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "Reset my password" -msgstr "Recuperar mi clave" +msgstr "Restablecer mi contraseña" #: contrib/admin/templates/widget/date_time.html:3 msgid "Date:" @@ -798,19 +797,19 @@ msgstr "Añadir usuario" #: contrib/admin/views/auth.py:58 msgid "Password changed successfully." -msgstr "La clave se ha cambiado exitosamente." +msgstr "La contraseña se ha cambiado con éxito." #: contrib/admin/views/auth.py:65 #, python-format msgid "Change password: %s" -msgstr "Cambiar clave: %s" +msgstr "Cambiar contraseña: %s" #: contrib/admin/views/decorators.py:17 contrib/auth/forms.py:60 msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." msgstr "" -"Por favor, introduzca un correcto nombre de usuario y contraseña. Note que " +"Por favor, introduzca un nombre de usuario y contraseña correctos. Note que " "ambos campos son sensibles a mayúsculas/minúsculas." #: contrib/admin/views/decorators.py:69 @@ -818,7 +817,7 @@ msgid "" "Please log in again, because your session has expired. Don't worry: Your " "submission has been saved." msgstr "" -"Por favor, identifíquese de nuevo, porque su sesión ha caducado. No se " +"Por favor, inicie sesión de nuevo, ya que su sesión ha caducado. No se " "preocupe: se ha guardado su envío." #: contrib/admin/views/decorators.py:76 @@ -827,7 +826,7 @@ msgid "" "cookies, reload this page, and try again." msgstr "" "Parece que su navegador no está configurado para aceptar cookies. Actívelas " -"por favor, recargue esta página, e inténtelo de nuevo." +", recargue esta página, e inténtelo de nuevo." #: contrib/admin/views/decorators.py:89 #, python-format @@ -868,7 +867,7 @@ msgstr "El modelo %(name)s no se ha encontrado en la aplicación %(label)r" #: contrib/admin/views/doc.py:185 #, python-format msgid "the related `%(label)s.%(type)s` object" -msgstr "el objeto relacionado`%(label)s.%(type)s` " +msgstr "el objeto relacionado `%(label)s.%(type)s`" #: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207 #: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226 @@ -937,7 +936,7 @@ msgstr "Ruta de fichero" #: contrib/admin/views/doc.py:303 msgid "Floating point number" -msgstr "Número decimal" +msgstr "Número en coma flotante" #: contrib/admin/views/doc.py:307 contrib/comments/models.py:89 msgid "IP address" @@ -987,17 +986,17 @@ msgstr "Sitio administrativo" #: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365 #, python-format msgid "You may add another %s below." -msgstr "Puede agregar otro %s abajo." +msgstr "Puede añadir otro %s abajo." #: contrib/admin/views/main.py:298 #, python-format msgid "Add %s" -msgstr "Agregar %s" +msgstr "Añadir %s" #: contrib/admin/views/main.py:344 #, python-format msgid "Added %s." -msgstr "Agregado %s." +msgstr "Añadido %s." #: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346 #: contrib/admin/views/main.py:348 core/validators.py:283 @@ -1029,7 +1028,7 @@ msgstr "Se modificó con éxito el %(name)s \"%(obj)s\"." 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 añadió con éxito el %(name)s \"%(obj)s. Puede editarlo de nuevo abajo." #: contrib/admin/views/main.py:400 #, python-format @@ -1058,7 +1057,7 @@ msgstr "¿Está seguro?" #: contrib/admin/views/main.py:549 #, python-format msgid "Change history: %s" -msgstr "Modificar histórico: %s" +msgstr "Histórico de modificaciones: %s" #: contrib/admin/views/main.py:583 #, python-format @@ -1068,7 +1067,7 @@ msgstr "Escoja %s" #: contrib/admin/views/main.py:583 #, python-format msgid "Select %s to change" -msgstr "Escoja %s para modificar" +msgstr "Escoja %s a modificar" #: contrib/admin/views/main.py:765 msgid "Database error" @@ -1080,14 +1079,14 @@ msgstr "Las dos contraseñas no coinciden." #: contrib/auth/forms.py:25 msgid "A user with that username already exists." -msgstr "Ya existe un usuario con este nombre." +msgstr "Ya existe un usuario con este nombre." #: contrib/auth/forms.py:53 msgid "" "Your Web browser doesn't appear to have cookies enabled. Cookies are " "required for logging in." msgstr "" -"Tu navegador de internet parece no tener las cookies habilitadas. Las " +"Su navegador no parece tener las cookies habilitadas. Las " "cookies se necesitan para poder ingresar." #: contrib/auth/forms.py:62 @@ -1105,17 +1104,17 @@ msgstr "" #: contrib/auth/forms.py:107 #, python-format msgid "Password reset on %s" -msgstr "Clave restablecida en %s" +msgstr "Contraseña restablecida en %s" #: contrib/auth/forms.py:117 msgid "The two 'new password' fields didn't match." msgstr "" -"Las contraseñas introducidas en los campos 'nueva contraseña' no coinciden." +"Los dos campos 'nueva contraseña' no coinciden." #: contrib/auth/forms.py:124 msgid "Your old password was entered incorrectly. Please enter it again." msgstr "" -"Tu contraseña antigua es incorrecta. Por favor, vuelve a introducirla " +"Su contraseña antigua es incorrecta. Por favor, vuelva a introducirla " "correctamente." #: contrib/auth/models.py:73 contrib/auth/models.py:93 @@ -1138,15 +1137,15 @@ msgstr "permisos" msgid "group" msgstr "grupo" -#: contrib/auth/models.py:98 contrib/auth/models.py:141 +#: contrib/auth/models.py:98 contrib/auth/models.py:148 msgid "groups" msgstr "grupos" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:138 msgid "username" msgstr "nombre de usuario" -#: contrib/auth/models.py:131 +#: contrib/auth/models.py:138 msgid "" "Required. 30 characters or fewer. Alphanumeric characters only (letters, " "digits and underscores)." @@ -1154,23 +1153,23 @@ msgstr "" "Requerido. 30 caracteres o menos. Sólo caracteres alfanuméricos (letras, " "dígitos y guiones bajos)." -#: contrib/auth/models.py:132 +#: contrib/auth/models.py:139 msgid "first name" -msgstr "nombre" +msgstr "nombre propio" -#: contrib/auth/models.py:133 +#: contrib/auth/models.py:140 msgid "last name" msgstr "apellidos" -#: contrib/auth/models.py:134 +#: contrib/auth/models.py:141 msgid "e-mail address" -msgstr "dirección de correo" +msgstr "dirección de correo electrónico" -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:142 msgid "password" -msgstr "clave" +msgstr "contraseña" -#: contrib/auth/models.py:135 +#: contrib/auth/models.py:142 msgid "" "Use '[algo]$[salt]$[hexdigest]' or use the change " "password form." @@ -1178,32 +1177,31 @@ msgstr "" "Use'[algo]$[sal]$[hash hexadecimal]' o use el " "formulario para cambiar la contraseña." -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:143 msgid "staff status" msgstr "es staff" -#: contrib/auth/models.py:136 +#: contrib/auth/models.py:143 msgid "Designates whether the user can log into this admin site." msgstr "Indica si el usuario puede entrar en este sitio de administración." -#: contrib/auth/models.py:137 +#: contrib/auth/models.py:144 msgid "active" msgstr "activo" -#: contrib/auth/models.py:137 -#, fuzzy +#: contrib/auth/models.py:144 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." msgstr "" -"Indica si el usuario puede entrar en este sitio de administración. Desmarque " -"esto en lugar de borrar la cuenta." +"Indica si el usuario puede ser tratado como activo. Desmarque " +"esta opción en lugar de borrar la cuenta." -#: contrib/auth/models.py:138 +#: contrib/auth/models.py:145 msgid "superuser status" msgstr "es superusuario" -#: contrib/auth/models.py:138 +#: contrib/auth/models.py:145 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -1211,15 +1209,15 @@ msgstr "" "Indica que este usuario tiene todos los permisos sin asignárselos " "explícitamente." -#: contrib/auth/models.py:139 +#: contrib/auth/models.py:146 msgid "last login" -msgstr "Último registro" +msgstr "último inicio de sesión" -#: contrib/auth/models.py:140 +#: contrib/auth/models.py:147 msgid "date joined" -msgstr "fecha de creación" +msgstr "fecha de alta" -#: contrib/auth/models.py:142 +#: contrib/auth/models.py:149 msgid "" "In addition to the permissions manually assigned, this user will also get " "all permissions granted to each group he/she is in." @@ -1227,35 +1225,35 @@ msgstr "" "Además de los permisos asignados manualmente, este usuario también tendrá " "todos los permisos de los grupos en los que esté." -#: contrib/auth/models.py:143 +#: contrib/auth/models.py:150 msgid "user permissions" -msgstr "permisos" +msgstr "permisos de usuario" -#: contrib/auth/models.py:147 +#: contrib/auth/models.py:154 msgid "user" msgstr "usuario" -#: contrib/auth/models.py:148 +#: contrib/auth/models.py:155 msgid "users" msgstr "usuarios" -#: contrib/auth/models.py:154 +#: contrib/auth/models.py:161 msgid "Personal info" msgstr "Información personal" -#: contrib/auth/models.py:155 +#: contrib/auth/models.py:162 msgid "Permissions" msgstr "Permisos" -#: contrib/auth/models.py:156 +#: contrib/auth/models.py:163 msgid "Important dates" msgstr "Fechas importantes" -#: contrib/auth/models.py:157 +#: contrib/auth/models.py:164 msgid "Groups" msgstr "Grupos" -#: contrib/auth/models.py:316 +#: contrib/auth/models.py:323 msgid "message" msgstr "mensaje" @@ -1278,39 +1276,39 @@ msgstr "comentario" #: contrib/comments/models.py:74 msgid "rating #1" -msgstr "calificación 1" +msgstr "puntuación 1" #: contrib/comments/models.py:75 msgid "rating #2" -msgstr "calificación 2" +msgstr "puntuación 2" #: contrib/comments/models.py:76 msgid "rating #3" -msgstr "calificación 3" +msgstr "puntuación 3" #: contrib/comments/models.py:77 msgid "rating #4" -msgstr "calificación 4" +msgstr "puntuación 4" #: contrib/comments/models.py:78 msgid "rating #5" -msgstr "calificación 5" +msgstr "puntuación 5" #: contrib/comments/models.py:79 msgid "rating #6" -msgstr "calificación 6" +msgstr "puntuación 6" #: contrib/comments/models.py:80 msgid "rating #7" -msgstr "calificación 7" +msgstr "puntuación 7" #: contrib/comments/models.py:81 msgid "rating #8" -msgstr "calificación 8" +msgstr "puntuación 8" #: contrib/comments/models.py:86 msgid "is valid rating" -msgstr "es calificación válida" +msgstr "puntuación válida" #: contrib/comments/models.py:87 contrib/comments/models.py:179 msgid "date/time submitted" @@ -1329,8 +1327,8 @@ msgid "" "Check this box if the comment is inappropriate. A \"This comment has been " "removed\" message will be displayed instead." msgstr "" -"Marque esta caja si el comentario es inapropiado. En su lugar se mostrará " -"\"Este comentario ha sido eliminado\"." +"Marque esta opción si el comentario es inapropiado. En su lugar se mostrará " +"el mensaje \"Este comentario ha sido eliminado\"." #: contrib/comments/models.py:96 msgid "comments" @@ -1430,11 +1428,11 @@ msgstr "fecha de eliminación" #: contrib/comments/models.py:303 msgid "moderator deletion" -msgstr "eliminación de moderador" +msgstr "eliminación del moderador" #: contrib/comments/models.py:304 msgid "moderator deletions" -msgstr "eliminaciones de moderador" +msgstr "eliminaciones del moderador" #: contrib/comments/models.py:308 #, python-format @@ -1443,11 +1441,11 @@ msgstr "Eliminación del moderador %r" #: contrib/comments/templates/comments/form.html:8 msgid "Forgotten your password?" -msgstr "¿Has olvidado tu contraseña?" +msgstr "¿Ha olvidado su contraseña?" #: contrib/comments/templates/comments/form.html:12 msgid "Ratings" -msgstr "Calificaciones" +msgstr "Puntuaciones" #: contrib/comments/templates/comments/form.html:12 #: contrib/comments/templates/comments/form.html:23 @@ -1461,7 +1459,7 @@ msgstr "Opcional" #: contrib/comments/templates/comments/form.html:23 msgid "Post a photo" -msgstr "Postea una fotografía" +msgstr "Publica una fotografía" #: contrib/comments/templates/comments/form.html:28 #: contrib/comments/templates/comments/freeform.html:5 @@ -1475,7 +1473,7 @@ msgstr "Previsualizar comentario" #: contrib/comments/templates/comments/freeform.html:4 msgid "Your name:" -msgstr "Tu nombre:" +msgstr "Su nombre:" #: contrib/comments/views/comments.py:28 msgid "" @@ -1519,7 +1517,7 @@ msgstr "" #: contrib/comments/views/comments.py:190 #: contrib/comments/views/comments.py:283 msgid "Only POSTs are allowed" -msgstr "Sólo se admite POST" +msgstr "Sólo se admiten POSTs" #: contrib/comments/views/comments.py:194 #: contrib/comments/views/comments.py:287 @@ -1530,8 +1528,7 @@ msgstr "No se proporcionó uno o más de los siguientes campos requeridos" #: contrib/comments/views/comments.py:289 msgid "Somebody tampered with the comment form (security violation)" msgstr "" -"Alguien está jugando con el formulario de comentarios (violación de " -"seguridad)" +"Alguien manipuló el formulario de comentarios (violación de seguridad)" #: contrib/comments/views/comments.py:208 #: contrib/comments/views/comments.py:295 @@ -1557,11 +1554,11 @@ msgstr "ID de comentario no válido" #: contrib/comments/views/karma.py:27 msgid "No voting for yourself" -msgstr "No puedes votarte tú mismo" +msgstr "No puede votarse a sí mismo" #: contrib/contenttypes/models.py:67 msgid "python model class name" -msgstr "nombre de módulo python" +msgstr "nombre de la clase modelo de python" #: contrib/contenttypes/models.py:71 msgid "content type" @@ -1588,7 +1585,7 @@ msgstr "contenido" #: contrib/flatpages/models.py:12 msgid "enable comments" -msgstr "admitir comentarios" +msgstr "habilitar comentarios" #: contrib/flatpages/models.py:13 msgid "template name" @@ -1624,40 +1621,40 @@ msgstr "Opciones avanzadas" #: contrib/humanize/templatetags/humanize.py:19 msgid "th" -msgstr "th" +msgstr "º" #: contrib/humanize/templatetags/humanize.py:19 msgid "st" -msgstr "st" +msgstr "º" #: contrib/humanize/templatetags/humanize.py:19 msgid "nd" -msgstr "nd" +msgstr "º" #: contrib/humanize/templatetags/humanize.py:19 msgid "rd" -msgstr "rd" +msgstr "º" #: contrib/humanize/templatetags/humanize.py:51 #, python-format msgid "%(value).1f million" msgid_plural "%(value).1f million" msgstr[0] "%(value).1f millón" -msgstr[1] "%(value).1f millión" +msgstr[1] "%(value).1f millón" #: contrib/humanize/templatetags/humanize.py:54 #, python-format msgid "%(value).1f billion" msgid_plural "%(value).1f billion" -msgstr[0] "%(value).1f billión" -msgstr[1] "%(value).1f billión" +msgstr[0] "%(value).1f mil millones" +msgstr[1] "%(value).1f mil millones" #: contrib/humanize/templatetags/humanize.py:57 #, python-format msgid "%(value).1f trillion" msgid_plural "%(value).1f trillion" -msgstr[0] "%(value).1f trillión" -msgstr[1] "%(value).1f trillión" +msgstr[0] "%(value).1f billón" +msgstr[1] "%(value).1f billón" #: contrib/humanize/templatetags/humanize.py:73 msgid "one" @@ -1719,11 +1716,11 @@ msgstr "Este campo sólo acepta números." #: contrib/localflavor/ar/forms.py:50 msgid "This field requires 7 or 8 digits." -msgstr "Este campo necesita 7 o 8 dígitos." +msgstr "Este campo necesita 7 u 8 dígitos." #: contrib/localflavor/ar/forms.py:79 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." -msgstr "Introduzca un CUIT válido en el formato XX-XXXXXXXX-X or XXXXXXXXXXXX." +msgstr "Introduzca un CUIT válido en el formato XX-XXXXXXXX-X o XXXXXXXXXXXX." #: contrib/localflavor/ar/forms.py:80 msgid "Invalid CUIT." @@ -1755,15 +1752,15 @@ msgstr "Número CPF inválido." #: contrib/localflavor/br/forms.py:95 msgid "This field requires at most 11 digits or 14 characters." -msgstr "Este campo necesita al menos 11 o 14 caracteres" +msgstr "Este campo necesita un máximo de 11 dígitos o 14 caracteres." #: contrib/localflavor/br/forms.py:134 msgid "Invalid CNPJ number." -msgstr "Número CNPJ inválido" +msgstr "Número CNPJ inválido." #: contrib/localflavor/br/forms.py:136 msgid "This field requires at least 14 digits" -msgstr "Este campo necesita 14 dígitos como máximo" +msgstr "Este campo necesita 14 dígitos como mínimo" #: contrib/localflavor/ca/forms.py:17 msgid "Enter a postal code in the format XXX XXX." @@ -1772,7 +1769,7 @@ msgstr "Introduzca un código postal en el formato XXX XXX." #: contrib/localflavor/ca/forms.py:88 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." msgstr "" -"Introduzca un Número del Seguro Social de Canada válido en el formato XXX-" +"Introduzca un Número del Seguro Social de Canadá válido en el formato XXX-" "XXX-XXX." #: contrib/localflavor/ch/ch_states.py:5 @@ -1888,12 +1885,12 @@ msgid "" "Enter a valid Swiss identity or passport card number in X1234567<0 or " "1234567890 format." msgstr "" -"Introduzca una identificación suiza válida o un número de pasaporte en el " -"formato X1234567<0 or 1234567890." +"Introduzca un número de identificación o pasaporte suizos válidos en el " +"formato X1234567<0 o 1234567890." #: contrib/localflavor/cl/forms.py:29 msgid "Enter a valid Chilean RUT." -msgstr "Introduzca un RUT chileno válido" +msgstr "Introduzca un RUT chileno válido." #: contrib/localflavor/cl/forms.py:30 msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." @@ -2257,7 +2254,7 @@ msgid "" "9XXXXXXXX." msgstr "" "Introduzca un número de teléfono válido en el formato 6XXXXXXXX, 8XXXXXXXX " -"or 9XXXXXXXX." +"o 9XXXXXXXX." #: contrib/localflavor/es/forms.py:66 msgid "Please enter a valid NIF, NIE, or CIF." @@ -2725,7 +2722,7 @@ msgstr "El Número de Identificación Nacional es incorrecto." msgid "" "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." msgstr "" -"Introduzca un número de impuesto (NIP) en el formato XXX-XXX-XX-XX or XX-XX-" +"Introduzca un número de impuesto (NIP) en el formato XXX-XXX-XX-XX o XX-XX-" "XXX-XXX." #: contrib/localflavor/pl/forms.py:73 @@ -2735,7 +2732,7 @@ msgstr "El Número de Identificación Tributaria (NIP) es incorrecto." #: contrib/localflavor/pl/forms.py:112 msgid "National Business Register Number (REGON) consists of 7 or 9 digits." msgstr "" -"El Número Nacional de Registro de Negocios (REGON) consiste en 11 dígitos" +"El Número Nacional de Registro de Negocios (REGON) consiste en 7 o 9 dígitos." #: contrib/localflavor/pl/forms.py:113 msgid "Wrong checksum for the National Business Register Number (REGON)." @@ -3163,7 +3160,7 @@ msgstr "Región de Zilina" #: contrib/localflavor/uk/forms.py:21 msgid "Enter a valid postcode." -msgstr "Introduzca un código postal válido" +msgstr "Introduzca un código postal válido." #: contrib/localflavor/uk/uk_regions.py:11 msgid "Bedfordshire" @@ -3456,11 +3453,11 @@ msgstr "" #: contrib/localflavor/za/forms.py:20 msgid "Enter a valid South African ID number" -msgstr "Introduzca un ID Sur Africano válido" +msgstr "Introduzca un ID surafricano válido" #: contrib/localflavor/za/forms.py:54 msgid "Enter a valid South African postal code" -msgstr "Introduzca un código postal Sur Africano válido" +msgstr "Introduzca un código postal surafricano válido" #: contrib/localflavor/za/za_provinces.py:4 msgid "Eastern Cape" @@ -3507,7 +3504,7 @@ msgid "" "This should be an absolute path, excluding the domain name. Example: '/" "events/search/'." msgstr "" -"Esta ruta debería ser absoluta, excluyendo el nombre de dominio. Ejeplo: '/" +"Esta ruta debería ser absoluta, excluyendo el nombre de dominio. Ejemplo: '/" "events/search/'." #: contrib/redirects/models.py:9 @@ -3575,7 +3572,7 @@ msgid "" "This value must contain only letters, numbers, underscores, dashes or " "slashes." msgstr "" -"Este valor debe contener letras, números, guiones bajos o barras solamente." +"Este valor debe contener sólo letras, números, guiones bajos y barras." #: core/validators.py:80 msgid "This value must contain only letters, numbers, underscores or hyphens." @@ -3644,7 +3641,7 @@ msgstr "Introduzca una fecha/hora válida en formato AAAA-MM-DD HH:MM." #: core/validators.py:170 newforms/fields.py:403 msgid "Enter a valid e-mail address." -msgstr "Introduzca una dirección de correo electrónico válida" +msgstr "Introduzca una dirección de correo electrónico válida." #: core/validators.py:182 core/validators.py:474 newforms/fields.py:433 #: oldforms/__init__.py:687 @@ -3714,8 +3711,8 @@ msgstr "Introduzca una abreviatura válida de estado de los EEUU." #, 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] "¡Cuida tu vocabulario! Aquí no admitimos la palabra %s." -msgstr[1] "¡Cuida tu vocabulario! Aquí no admitimos las palabras %s." +msgstr[0] "¡Cuide su vocabulario! Aquí no admitimos la palabra %s." +msgstr[1] "¡Cuide su vocabulario! Aquí no admitimos las palabras %s." #: core/validators.py:288 #, python-format @@ -3807,7 +3804,7 @@ msgstr[1] "" #: core/validators.py:458 msgid "Please enter a valid floating point number." -msgstr "Por favor, introduzca un número decimal válido." +msgstr "Por favor, introduzca un número de coma flotante válido." #: core/validators.py:467 #, python-format @@ -3830,7 +3827,7 @@ msgstr "Este campo no es válido." #: core/validators.py:536 #, python-format msgid "Could not retrieve anything from %s." -msgstr "No pude obtener nada de %s." +msgstr "No se pudo obtener nada de %s." #: core/validators.py:539 #, python-format @@ -3932,25 +3929,25 @@ msgstr "Introduzca un nombre de fichero válido" #: db/models/fields/__init__.py:981 msgid "This value must be either None, True or False." -msgstr "Este valor debe ser Verdadero o Falso." +msgstr "Este valor debe ser Verdadero, Falso o Ninguno." #: db/models/fields/related.py:94 #, python-format msgid "Please enter a valid %s." msgstr "Por favor, introduzca un %s válido." -#: db/models/fields/related.py:721 +#: db/models/fields/related.py:746 msgid "Separate multiple IDs with commas." msgstr "Separe múltiples IDs con comas." -#: db/models/fields/related.py:723 +#: db/models/fields/related.py:748 msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" "Mantenga presionado \"Control\", o \"Command\" en un Mac, para seleccionar " -"más de uno." +"más de una opción." -#: db/models/fields/related.py:770 +#: db/models/fields/related.py:795 #, python-format msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." msgid_plural "" @@ -4007,7 +4004,7 @@ msgstr "Asegúrese de que no hay más de %s decimales." #: newforms/fields.py:215 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." -msgstr "Asegúrese de que no hay más de %s dígitos antes del punto decimal." +msgstr "Asegúrese de que no hay más de %s dígitos antes de la coma decimal." #: newforms/fields.py:263 newforms/fields.py:751 msgid "Enter a valid date." @@ -4039,7 +4036,7 @@ msgstr "La URL parece ser un enlace roto." #: newforms/fields.py:560 newforms/models.py:299 msgid "Select a valid choice. That choice is not one of the available choices." -msgstr "Escoja una opción válida. Esa opción no está entre las aceptadas." +msgstr "Escoja una opción válida. Esa opción no está entre las disponibles." #: newforms/fields.py:599 #, python-format @@ -4078,7 +4075,7 @@ msgstr "Escoja una opción válida; '%(data)s' no está en %(choices)s." #: oldforms/__init__.py:745 msgid "Enter a whole number between -32,768 and 32,767." -msgstr "Introduzca un número entero entre -32,768 y 32,767." +msgstr "Introduzca un número entero entre -32.768 y 32.767." #: oldforms/__init__.py:755 msgid "Enter a positive number." @@ -4086,7 +4083,7 @@ msgstr "Introduzca un número positivo." #: oldforms/__init__.py:765 msgid "Enter a whole number between 0 and 32,767." -msgstr "Introduzca un número entero entre 0 y 32,767." +msgstr "Introduzca un número entero entre 0 y 32.767." #: template/defaultfilters.py:698 msgid "yes,no,maybe" @@ -4116,11 +4113,11 @@ msgstr "%.1f GB" #: utils/dateformat.py:41 msgid "p.m." -msgstr "p.m" +msgstr "p.m." #: utils/dateformat.py:42 msgid "a.m." -msgstr "a.m" +msgstr "a.m." #: utils/dateformat.py:47 msgid "PM" @@ -4176,7 +4173,7 @@ msgstr "Mar" #: utils/dates.py:10 msgid "Wed" -msgstr "Mie" +msgstr "Mié" #: utils/dates.py:10 msgid "Thu" @@ -4188,7 +4185,7 @@ msgstr "Vie" #: utils/dates.py:11 msgid "Sat" -msgstr "Sab" +msgstr "Sáb" #: utils/dates.py:11 msgid "Sun" @@ -4395,7 +4392,7 @@ msgstr "j \\de F" #: views/generic/create_update.py:43 #, python-format msgid "The %(verbose_name)s was created successfully." -msgstr "El %(verbose_name)s se ha creado correctamente." +msgstr "El %(verbose_name)s se ha creado exitosamente." #: views/generic/create_update.py:117 #, python-format @@ -4405,16 +4402,5 @@ msgstr "Se actualizó con éxito el %(verbose_name)s." #: views/generic/create_update.py:184 #, python-format msgid "The %(verbose_name)s was deleted." -msgstr "El %(verbose_name)s ha sido eliminado." +msgstr "El %(verbose_name)s ha sido borrado." -#~ msgid "Brazilian" -#~ msgstr "Brasileño" - -#~ msgid "Gaeilge" -#~ msgstr "Gaeilge" - -#~ msgid "" -#~ "Enter a postcode. A space is required between the two postcode parts." -#~ msgstr "" -#~ "Introduzca un código postal. Se necesita un espacio entre las dos partes " -#~ "del código." diff --git a/django/conf/locale/et/LC_MESSAGES/django.mo b/django/conf/locale/et/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..8ab647767a Binary files /dev/null and b/django/conf/locale/et/LC_MESSAGES/django.mo differ diff --git a/django/conf/locale/et/LC_MESSAGES/django.po b/django/conf/locale/et/LC_MESSAGES/django.po new file mode 100644 index 0000000000..2430cd0c1b --- /dev/null +++ b/django/conf/locale/et/LC_MESSAGES/django.po @@ -0,0 +1,4340 @@ +# Estonian translation for the Django Project. +# Copyright (C) 2008, Django Project +# This file is distributed under the same license as the django package. +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-06-02 19:15+0300\n" +"PO-Revision-Date: 2008-06-16 19:55+0200\n" +"Last-Translator: Erik Allik \n" +"Language-Team: Django-i18n \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: conf/global_settings.py:43 +msgid "Arabic" +msgstr "araabia" + +#: conf/global_settings.py:44 +msgid "Bengali" +msgstr "bengali" + +#: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "bulgaaria" + +#: conf/global_settings.py:46 +msgid "Catalan" +msgstr "katalaani" + +#: conf/global_settings.py:47 +msgid "Czech" +msgstr "tšehhi" + +#: conf/global_settings.py:48 +msgid "Welsh" +msgstr "wales'i" + +#: conf/global_settings.py:49 +msgid "Danish" +msgstr "taani" + +#: conf/global_settings.py:50 +msgid "German" +msgstr "saksa" + +#: conf/global_settings.py:51 +msgid "Greek" +msgstr "kreeka" + +#: conf/global_settings.py:52 +msgid "English" +msgstr "inglise" + +#: conf/global_settings.py:53 +msgid "Spanish" +msgstr "hispaania" + +#: conf/global_settings.py:54 +msgid "Argentinean Spanish" +msgstr "argentiina hispaania keel" + +#: conf/global_settings.py:55 +msgid "Basque" +msgstr "baski" + +#: conf/global_settings.py:56 +msgid "Persian" +msgstr "pärsia" + +#: conf/global_settings.py:57 +msgid "Finnish" +msgstr "soome" + +#: conf/global_settings.py:58 +msgid "French" +msgstr "prantsuse" + +#: conf/global_settings.py:59 +msgid "Irish" +msgstr "iiri" + +#: conf/global_settings.py:60 +msgid "Galician" +msgstr "galiitsia" + +#: conf/global_settings.py:61 +msgid "Hungarian" +msgstr "ungari" + +#: conf/global_settings.py:62 +msgid "Hebrew" +msgstr "heebrea" + +#: conf/global_settings.py:63 +msgid "Croatian" +msgstr "horvaatia" + +#: conf/global_settings.py:64 +msgid "Icelandic" +msgstr "islandi" + +#: conf/global_settings.py:65 +msgid "Italian" +msgstr "itaalia" + +#: conf/global_settings.py:66 +msgid "Japanese" +msgstr "jaapani" + +#: conf/global_settings.py:67 +msgid "Georgian" +msgstr "gruusia" + +#: conf/global_settings.py:68 +msgid "Korean" +msgstr "korea" + +#: conf/global_settings.py:69 +msgid "Khmer" +msgstr "khmeri" + +#: conf/global_settings.py:70 +msgid "Kannada" +msgstr "kannada" + +#: conf/global_settings.py:71 +msgid "Latvian" +msgstr "läti" + +#: conf/global_settings.py:72 +msgid "Macedonian" +msgstr "makedoonia" + +#: conf/global_settings.py:73 +msgid "Dutch" +msgstr "hollandi" + +#: conf/global_settings.py:74 +msgid "Norwegian" +msgstr "norra" + +#: conf/global_settings.py:75 +msgid "Polish" +msgstr "poola" + +#: conf/global_settings.py:76 +msgid "Portugese" +msgstr "portugali" + +#: conf/global_settings.py:77 +msgid "Brazilian Portuguese" +msgstr "brasiilia portugali keel" + +#: conf/global_settings.py:78 +msgid "Romanian" +msgstr "rumeenia" + +#: conf/global_settings.py:79 +msgid "Russian" +msgstr "vene" + +#: conf/global_settings.py:80 +msgid "Slovak" +msgstr "slovaki" + +#: conf/global_settings.py:81 +msgid "Slovenian" +msgstr "sloveeni" + +#: conf/global_settings.py:82 +msgid "Serbian" +msgstr "serbia" + +#: conf/global_settings.py:83 +msgid "Swedish" +msgstr "rootsi" + +#: conf/global_settings.py:84 +msgid "Tamil" +msgstr "tamiili" + +#: conf/global_settings.py:85 +msgid "Telugu" +msgstr "telugu" + +#: conf/global_settings.py:86 +msgid "Turkish" +msgstr "türgi" + +#: conf/global_settings.py:87 +msgid "Ukrainian" +msgstr "ukrania" + +#: conf/global_settings.py:88 +msgid "Simplified Chinese" +msgstr "lihtsustatud hiina keel" + +#: conf/global_settings.py:89 +msgid "Traditional Chinese" +msgstr "traditsiooniline hiina keel" + +#: contrib/admin/filterspecs.py:44 +#, python-format +msgid "" +"

By %s:

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

    %s:

    \n" +"
      \n" + +#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 +msgid "All" +msgstr "Kõik" + +#: contrib/admin/filterspecs.py:113 +msgid "Any date" +msgstr "Suvaline kuupäev" + +#: contrib/admin/filterspecs.py:114 +msgid "Today" +msgstr "Täna" + +#: contrib/admin/filterspecs.py:117 +msgid "Past 7 days" +msgstr "Viimased 7 päeva" + +#: contrib/admin/filterspecs.py:119 +msgid "This month" +msgstr "See kuu" + +#: contrib/admin/filterspecs.py:121 +msgid "This year" +msgstr "See aasta" + +#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231 +#: oldforms/__init__.py:592 +msgid "Yes" +msgstr "Jah" + +#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231 +#: oldforms/__init__.py:592 +msgid "No" +msgstr "Ei" + +#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231 +#: oldforms/__init__.py:592 +msgid "Unknown" +msgstr "Tundmatu" + +#: contrib/admin/models.py:18 +msgid "action time" +msgstr "toimingu aeg" + +#: contrib/admin/models.py:21 +msgid "object id" +msgstr "objekti id" + +#: contrib/admin/models.py:22 +msgid "object repr" +msgstr "objekti esitus" + +#: contrib/admin/models.py:23 +msgid "action flag" +msgstr "toimingu lipp" + +#: contrib/admin/models.py:24 +msgid "change message" +msgstr "muudatuse tekst" + +#: contrib/admin/models.py:27 +msgid "log entry" +msgstr "logisissekanne" + +#: contrib/admin/models.py:28 +msgid "log entries" +msgstr "logisissekanded" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Lehte ei leitud" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Vabandame, kuid soovitud lehte ei leitud." + +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/base.html:37 +#: contrib/admin/templates/admin/change_form.html:12 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/delete_confirmation.html:5 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:4 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +msgid "Home" +msgstr "Kodu" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Serveri viga" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Serveri viga (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Serveri Viga (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 "" +"On tekkinud viga. Vastavasisuline teavitus on saadetud süsteemi haldajale " +"ning vea parandamisega tegeletakse esimesel võimalusel. Täname mõistva " +"suhtumise eest!" + +#: contrib/admin/templates/admin/base.html:26 +msgid "Welcome," +msgstr "Tere tulemast," + +#: contrib/admin/templates/admin/base.html:28 +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "Dokumentatsioon" + +#: contrib/admin/templates/admin/base.html:29 +#: contrib/admin/templates/admin/auth/user/change_password.html:14 +#: contrib/admin/templates/admin/auth/user/change_password.html:45 +msgid "Change password" +msgstr "Muuda salasõna" + +#: contrib/admin/templates/admin/base.html:30 +#: contrib/comments/templates/comments/form.html:6 +msgid "Log out" +msgstr "Logi välja" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Django administreerimisliides" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Django administreerimisliides" + +#: contrib/admin/templates/admin/change_form.html:14 +#: contrib/admin/templates/admin/index.html:28 +msgid "Add" +msgstr "Lisa" + +#: contrib/admin/templates/admin/change_form.html:20 +#: contrib/admin/templates/admin/object_history.html:4 +msgid "History" +msgstr "Ajalugu" + +#: contrib/admin/templates/admin/change_form.html:21 +msgid "View on site" +msgstr "Näida lehel" + +#: contrib/admin/templates/admin/change_form.html:31 +#: contrib/admin/templates/admin/auth/user/change_password.html:23 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Palun parandage allolev viga" +msgstr[1] "Palun parandage allolevad vead" + +#: contrib/admin/templates/admin/change_form.html:49 +msgid "Ordering" +msgstr "Järjestus" + +#: contrib/admin/templates/admin/change_form.html:52 +msgid "Order:" +msgstr "Järjestus:" + +#: contrib/admin/templates/admin/change_list.html:11 +#, python-format +msgid "Add %(name)s" +msgstr "Lisa %(name)s" + +#: contrib/admin/templates/admin/delete_confirmation.html:8 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Delete" +msgstr "Kustuta" + +#: contrib/admin/templates/admin/delete_confirmation.html:13 +#, 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 "" +"Selleks, et kustutada %(object_name)s '%(escaped_object)s', on vaja " +"kustutada lisaks ka kõik seotud objecktid, aga teil puudub õigus järgnevat " +"tüüpi objektide kustutamiseks:" + +#: contrib/admin/templates/admin/delete_confirmation.html:20 +#, 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 "" +"Kas olete kindel, et soovite kustutada objekti %(object_name)s \"%" +"(escaped_object)s\"? Kõik järgnevad seotud objektid kustutatakse koos " +"sellega:" + +#: contrib/admin/templates/admin/delete_confirmation.html:25 +msgid "Yes, I'm sure" +msgstr "Jah, olen kindel" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " %(filter_title)s järgi " + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "Filtreeri" + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Rakenduses %(name)s leitud mudelid" + +#: 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 "Muuda" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "Teil ei ole õigust midagi muuta." + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "Hiljtuised Toimingud" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "Minu Toimingud" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "Ei leitud ühtegi" + +#: 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 "" +"On tekkinud viga seoses andmebaasiga. Veenduge, et kõik vajalikud " +"andmebaasitabelid on loodud ning et andmebaas on vastava kasutaja poolt " +"loetav." + +#: contrib/admin/templates/admin/login.html:17 +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +msgid "Username:" +msgstr "Kasutajatunnus:" + +#: contrib/admin/templates/admin/login.html:20 +#: contrib/comments/templates/comments/form.html:8 +msgid "Password:" +msgstr "Salasõna:" + +#: contrib/admin/templates/admin/login.html:25 +#: contrib/admin/views/decorators.py:31 +msgid "Log in" +msgstr "Logi sisse" + +#: contrib/admin/templates/admin/object_history.html:17 +msgid "Date/time" +msgstr "Kuupäev/kellaaeg" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "User" +msgstr "Kasutaja" + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "Action" +msgstr "Toiming" + +#: contrib/admin/templates/admin/object_history.html:25 +msgid "DATE_WITH_TIME_FULL" +msgstr "N j, Y, P" + +#: contrib/admin/templates/admin/object_history.html:35 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Sellel objektil puudub muudatuste ajalugu. Tõenäoliselt ei kasutatud selle " +"objekti lisamisel käesolevat administreerimislidest." + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "Näita kõiki" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "Mine" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 tulemus" +msgstr[1] "%(counter)s tulemust" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "Kokku %(full_result_count)s" + +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "Salvesta uuena" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "Salvesta ja lisa uus" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "Salvesta ja jätka muutmist" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "Salvesta" + +#: 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 "" +"Kõige pealt sisestage kasutajatunnus ja salasõna, seejärel on võimalik muuta " +"täiendavaid kasutajaandmeid." + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "Kasutajatunnus" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +#: contrib/admin/templates/admin/auth/user/change_password.html:33 +msgid "Password" +msgstr "Salasõna" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +#: contrib/admin/templates/admin/auth/user/change_password.html:38 +msgid "Password (again)" +msgstr "Salasõna (uuesti)" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +msgid "Enter the same password as above, for verification." +msgstr "" +"Sisestage sama salasõna uuesti veendumaks, et sisestamisel ei tekkinud vigu" + +#: contrib/admin/templates/admin/auth/user/change_password.html:27 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Sisestage uus salasõna kasutajale %(username)s" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "Järjehoidjad" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +msgid "Documentation bookmarklets" +msgstr "Dokumentatsiooni järjehoidjad" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:8 +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 "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:18 +msgid "Documentation for this page" +msgstr "Selle lehekülje dokumentatsioon" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:19 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:21 +msgid "Show object ID" +msgstr "Näita objekti ID-d" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:22 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:24 +msgid "Edit this object (current window)" +msgstr "Muuda seda objekti (samas aknas)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:25 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:27 +msgid "Edit this object (new window)" +msgstr "Muuda seda objekti (uues aknas)" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:28 +msgid "As above, but opens the admin page in a new window." +msgstr "Sama, mis üleval, kuid avab admin. lehe uues aknas." + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Tänan, et veetsite aega meie lehel." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Logi uuesti sisse" + +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:9 +msgid "Password change" +msgstr "Salasõna muutmine" + +#: contrib/admin/templates/registration/password_change_done.html:5 +#: contrib/admin/templates/registration/password_change_done.html:9 +msgid "Password change successful" +msgstr "Salasõna muutmine õnnestus" + +#: contrib/admin/templates/registration/password_change_done.html:11 +msgid "Your password was changed." +msgstr "Teie salasõna on vahetatud." + +#: contrib/admin/templates/registration/password_change_form.html:11 +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 "" +"Turvalisuse tagamiseks palun sisestage oma praegune salasõna ning seejärel " +"uus salasõna.Veendumaks, et uue salasõna sisestamisel ei tekkinud vigu, " +"palun sisestage see kaks korda." + +#: contrib/admin/templates/registration/password_change_form.html:16 +msgid "Old password:" +msgstr "Senine salasõna:" + +#: contrib/admin/templates/registration/password_change_form.html:18 +msgid "New password:" +msgstr "Uus salasõna:" + +#: contrib/admin/templates/registration/password_change_form.html:20 +msgid "Confirm password:" +msgstr "Kinnita salasõna:" + +#: contrib/admin/templates/registration/password_change_form.html:22 +msgid "Change my password" +msgstr "Muuda salasõna" + +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +msgid "Password reset" +msgstr "Uue parooli loomine" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Uue parooli loomine õnnestus" + +#: 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 "" +"Teie poolt sisestatud e-posti aadressile on saadetud kiri uue salasõnaga. " +"Kiri saabub üsna pea." + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "See kiri saadeti teile, sest soovisite uut salasõna" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "teie kasutajakontole lehel %(site_name)s" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "Teie uus parool 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 "Parooli vahetamiseks minge:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "Teie kasutajatunnus juhul, kui olete unustanud:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "Täname meie lehte külastamast!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "%(site_name)s meeskond" + +#: 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 "" +"Unustasid parool? Sisesta oma e-posti aadress ning me saadame sulle uue " +"parooli e-kirjaga." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "E-posti aadress:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Reseti parool" + +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "Kuupäev:" + +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "Aeg:" + +#: contrib/admin/templates/widget/file.html:2 +msgid "Currently:" +msgstr "Hetkel:" + +#: contrib/admin/templates/widget/file.html:3 +msgid "Change:" +msgstr "Muuda:" + +#: contrib/admin/templatetags/admin_list.py:257 +msgid "All dates" +msgstr "Kõik kuupäevad" + +#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s\" lisamine õnnestus." + +#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271 +#: contrib/admin/views/main.py:356 +msgid "You may edit it again below." +msgstr "Te võite selle muutmist jätkata." + +#: contrib/admin/views/auth.py:31 +msgid "Add user" +msgstr "Lisa kasutaja" + +#: contrib/admin/views/auth.py:58 +msgid "Password changed successfully." +msgstr "Salasõna edukalt muudetud." + +#: contrib/admin/views/auth.py:65 +#, python-format +msgid "Change password: %s" +msgstr "Muuda salasõna: %s" + +#: contrib/admin/views/decorators.py:17 contrib/auth/forms.py:60 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Palun sisestage korrektne kasutajatunnus ja salasõna. Mõlemad väljad on " +"tõstutundlikud." + +#: contrib/admin/views/decorators.py:69 +msgid "" +"Please log in again, because your session has expired. Don't worry: Your " +"submission has been saved." +msgstr "" +"Teie sessioon on aegunud. Palun logige uuesti sisse. Olge mureta: sisestatud " +"andmed on salvestatud." + +#: contrib/admin/views/decorators.py:76 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" +"Paistab, et Teie brauser ei aktsepteeri küpsiseid. Palun võimaldage küpsised " +"ning seejärel laadige see leht uuesti." + +#: contrib/admin/views/decorators.py:89 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "" +"Teie e-posti aadress ei ole sama asi, mis Teie kasutajatunnus. Proovige '%s'." + +#: contrib/admin/views/decorators.py:93 +msgid "Usernames cannot contain the '@' character." +msgstr "Kasutajatunnused ei tohi sisaldada '@' märki." + +#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50 +#: contrib/admin/views/doc.py:52 +msgid "tag:" +msgstr "lipik:" + +#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81 +#: contrib/admin/views/doc.py:83 +msgid "filter:" +msgstr "filtreeri:" + +#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139 +#: contrib/admin/views/doc.py:141 +msgid "view:" +msgstr "vaade:" + +#: contrib/admin/views/doc.py:166 +#, python-format +msgid "App %r not found" +msgstr "Rakendust %r ei leitud" + +#: contrib/admin/views/doc.py:173 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "Mudelit %(name)r ei leitud rakenduses %(label)r" + +#: contrib/admin/views/doc.py:185 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "seotud `%(label)s.%(type)s` objekt" + +#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207 +#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226 +msgid "model:" +msgstr "mudel:" + +#: contrib/admin/views/doc.py:216 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "seotud `%(label)s.%(name)s` objektid" + +#: contrib/admin/views/doc.py:221 +#, python-format +msgid "all %s" +msgstr "kõik %s" + +#: contrib/admin/views/doc.py:226 +#, python-format +msgid "number of %s" +msgstr "%s arv" + +#: contrib/admin/views/doc.py:231 +#, python-format +msgid "Fields on %s objects" +msgstr "Objekti %s väljad" + +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304 +#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312 +#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315 +msgid "Integer" +msgstr "Täisarv" + +#: contrib/admin/views/doc.py:294 +msgid "Boolean (Either True or False)" +msgstr "Tõeväärtus (Kas tõene või väär)" + +#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "String (kuni %(max_length)s märki)" + +#: contrib/admin/views/doc.py:296 +msgid "Comma-separated integers" +msgstr "Komaga eraldatud täisarvud" + +#: contrib/admin/views/doc.py:297 +msgid "Date (without time)" +msgstr "Kuupäev (kellaajata)" + +#: contrib/admin/views/doc.py:298 +msgid "Date (with time)" +msgstr "Kuupäev (kellaajaga)" + +#: contrib/admin/views/doc.py:299 +msgid "Decimal number" +msgstr "Kümnendmurd" + +#: contrib/admin/views/doc.py:300 +msgid "E-mail address" +msgstr "E-posti aadress" + +#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302 +#: contrib/admin/views/doc.py:305 +msgid "File path" +msgstr "Faili asukoht" + +#: contrib/admin/views/doc.py:303 +msgid "Floating point number" +msgstr "Ujukomaarv" + +#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89 +msgid "IP address" +msgstr "IP aadress" + +#: contrib/admin/views/doc.py:309 +msgid "Boolean (Either True, False or None)" +msgstr "Tõeväärtus (Kas tõene, väär või tühi)" + +#: contrib/admin/views/doc.py:310 +msgid "Relation to parent model" +msgstr "Seos ülem-mudeliga" + +#: contrib/admin/views/doc.py:311 +msgid "Phone number" +msgstr "Telefoninumber" + +#: contrib/admin/views/doc.py:316 +msgid "Text" +msgstr "Tekst" + +#: contrib/admin/views/doc.py:317 +msgid "Time" +msgstr "Aeg" + +#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:8 +msgid "URL" +msgstr "URL" + +#: contrib/admin/views/doc.py:319 +msgid "U.S. state (two uppercase letters)" +msgstr "U.S.A. osariik (kaks suurt tähte)" + +#: contrib/admin/views/doc.py:320 +msgid "XML text" +msgstr "XML tekst" + +#: contrib/admin/views/doc.py:346 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s ei tundu olevat urlpattern objekt" + +#: contrib/admin/views/main.py:233 +msgid "Site administration" +msgstr "Saidi administreerimine" + +#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365 +#, python-format +msgid "You may add another %s below." +msgstr "Te võite lisada uue objekti %s" + +#: contrib/admin/views/main.py:298 +#, python-format +msgid "Add %s" +msgstr "Lisa %s" + +#: contrib/admin/views/main.py:344 +#, python-format +msgid "Added %s." +msgstr "Lisasin %s." + +#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346 +#: contrib/admin/views/main.py:348 core/validators.py:283 +#: db/models/manipulators.py:309 +msgid "and" +msgstr "ja" + +#: contrib/admin/views/main.py:346 +#, python-format +msgid "Changed %s." +msgstr "Muutsin %s." + +#: contrib/admin/views/main.py:348 +#, python-format +msgid "Deleted %s." +msgstr "Kustutasin %s." + +#: contrib/admin/views/main.py:351 +msgid "No fields changed." +msgstr "Ühtegi välja ei muudetud." + +#: contrib/admin/views/main.py:354 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "Objekti %(name)s \"%(obj)s\" muutmine õnnestus." + +#: contrib/admin/views/main.py:362 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "Objekti %(name)s \"%(obj)s\" lisamine õnnestus. Te võite seda muuta." + +#: contrib/admin/views/main.py:400 +#, python-format +msgid "Change %s" +msgstr "Muuda %s" + +#: contrib/admin/views/main.py:487 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "" + +#: contrib/admin/views/main.py:492 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "" + +#: contrib/admin/views/main.py:524 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "Objekti %(name)s \"%(obj)s\" kustutamine õnnestus." + +#: contrib/admin/views/main.py:527 +msgid "Are you sure?" +msgstr "Kas olete kindel?" + +#: contrib/admin/views/main.py:549 +#, python-format +msgid "Change history: %s" +msgstr "Muudatuste ajalugu: %s" + +#: contrib/admin/views/main.py:583 +#, python-format +msgid "Select %s" +msgstr "Vali %s" + +#: contrib/admin/views/main.py:583 +#, python-format +msgid "Select %s to change" +msgstr "Vali %s mida muuta" + +#: contrib/admin/views/main.py:765 +msgid "Database error" +msgstr "Andmebaasi viga" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "Kaks sisestatud parooli ei olnud identsed." + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "Sama kasutajatunnusega kasutaja on juba olemas." + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Teie veebibrauser ei aktsepteeri küpsiseid, aga küpsised on sisselogimiseks " +"vajalikud." + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "See konto ei ole aktiivne." + +#: contrib/auth/forms.py:84 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Selle e-posti aadressiga ei ole seotud ühtegi kasutajakontot. Veenduge, et " +"olete registreerunud." + +#: contrib/auth/forms.py:107 +#, python-format +msgid "Password reset on %s" +msgstr "" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "Sisestatud uue parooli väljad ei olnud identsed." + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "Te sisestasite oma vana parooli vigaselt. Palun sisestage see uuesti." + +#: contrib/auth/models.py:73 contrib/auth/models.py:93 +msgid "name" +msgstr "nimi" + +#: contrib/auth/models.py:75 +msgid "codename" +msgstr "koodnimi" + +#: contrib/auth/models.py:78 +msgid "permission" +msgstr "õigus" + +#: contrib/auth/models.py:79 contrib/auth/models.py:94 +msgid "permissions" +msgstr "õigused" + +#: contrib/auth/models.py:97 +msgid "group" +msgstr "grupp" + +#: contrib/auth/models.py:98 contrib/auth/models.py:141 +msgid "groups" +msgstr "grupid" + +#: contrib/auth/models.py:131 +msgid "username" +msgstr "kasutajatunnus" + +#: contrib/auth/models.py:131 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "Nõutav. 30 tähemärki või vähem. Ainult tähed, numbrid ja alakriipsud." + +#: contrib/auth/models.py:132 +msgid "first name" +msgstr "eesnimi" + +#: contrib/auth/models.py:133 +msgid "last name" +msgstr "perenimi" + +#: contrib/auth/models.py:134 +msgid "e-mail address" +msgstr "e-posti aadress" + +#: contrib/auth/models.py:135 +msgid "password" +msgstr "salasõna" + +#: contrib/auth/models.py:135 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" + +#: contrib/auth/models.py:136 +msgid "staff status" +msgstr "personalistaatus" + +#: contrib/auth/models.py:136 +msgid "Designates whether the user can log into this admin site." +msgstr "" +"Määrab, kas kasutaja saab sisse logida sellesse admininistreerimisliidesesse." + +#: contrib/auth/models.py:137 +msgid "active" +msgstr "aktiivne" + +#: contrib/auth/models.py:137 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Määrab, kas see konto on aktiivne. Kustutamise asemel lihtsalt deaktiveerige " +"konto." + +#: contrib/auth/models.py:138 +msgid "superuser status" +msgstr "superkasutaja staatus" + +#: contrib/auth/models.py:138 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "Määrab, kas see kasutaja omab automaatselt ja alati kõiki õigus." + +#: contrib/auth/models.py:139 +msgid "last login" +msgstr "viimane sisenemine" + +#: contrib/auth/models.py:140 +msgid "date joined" +msgstr "liitumise kuupäev" + +#: contrib/auth/models.py:142 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Lisaks neile õigustele, mis kasutajale on määratud, omab kasutaja ka neid " +"õigusi, mis on nendel gruppidel, millesse ta kuulub." + +#: contrib/auth/models.py:143 +msgid "user permissions" +msgstr "kasutajaõigused" + +#: contrib/auth/models.py:147 +msgid "user" +msgstr "kasutaja" + +#: contrib/auth/models.py:148 +msgid "users" +msgstr "kasutajad" + +#: contrib/auth/models.py:154 +msgid "Personal info" +msgstr "Isiklikud andmd" + +#: contrib/auth/models.py:155 +msgid "Permissions" +msgstr "Õigused" + +#: contrib/auth/models.py:156 +msgid "Important dates" +msgstr "Tähtsad kuupäevad" + +#: contrib/auth/models.py:157 +msgid "Groups" +msgstr "Grupid" + +#: contrib/auth/models.py:316 +msgid "message" +msgstr "sõnum" + +#: contrib/auth/views.py:47 +msgid "Logged out" +msgstr "Välja logitud" + +#: contrib/comments/models.py:71 contrib/comments/models.py:176 +msgid "object ID" +msgstr "objekti ID" + +#: contrib/comments/models.py:72 +msgid "headline" +msgstr "pealkiri" + +#: contrib/comments/models.py:73 contrib/comments/models.py:95 +#: contrib/comments/models.py:177 +msgid "comment" +msgstr "kommentaar" + +#: contrib/comments/models.py:74 +msgid "rating #1" +msgstr "reiting #1" + +#: contrib/comments/models.py:75 +msgid "rating #2" +msgstr "reiting #2" + +#: contrib/comments/models.py:76 +msgid "rating #3" +msgstr "reiting #3" + +#: contrib/comments/models.py:77 +msgid "rating #4" +msgstr "reiting #4" + +#: contrib/comments/models.py:78 +msgid "rating #5" +msgstr "reiting #5" + +#: contrib/comments/models.py:79 +msgid "rating #6" +msgstr "reiting #6" + +#: contrib/comments/models.py:80 +msgid "rating #7" +msgstr "reiting #7" + +#: contrib/comments/models.py:81 +msgid "rating #8" +msgstr "reiting #8" + +#: contrib/comments/models.py:86 +msgid "is valid rating" +msgstr "on korrektne reiting" + +#: contrib/comments/models.py:87 contrib/comments/models.py:179 +msgid "date/time submitted" +msgstr "loomise kuupäev/kellaaeg" + +#: contrib/comments/models.py:88 contrib/comments/models.py:180 +msgid "is public" +msgstr "on avalik" + +#: contrib/comments/models.py:90 +msgid "is removed" +msgstr "on eemaldatud" + +#: contrib/comments/models.py:90 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"Märkige siia linnuke, kui see kommentaar on ebasobiv. Kommentaari asemel " +"kuvatakse kirja \"Kommentaar on kustutatud\"." + +#: contrib/comments/models.py:96 +msgid "comments" +msgstr "kommentaarid" + +#: contrib/comments/models.py:140 contrib/comments/models.py:222 +msgid "Content object" +msgstr "Sisuobjekt" + +#: contrib/comments/models.py:168 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" +"Postitatud kasutaja %(user)s poolt %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" + +#: contrib/comments/models.py:178 +msgid "person's name" +msgstr "isiku nimi" + +#: contrib/comments/models.py:181 +msgid "ip address" +msgstr "ip aadress" + +#: contrib/comments/models.py:183 +msgid "approved by staff" +msgstr "personali poolt heaks kiidetud" + +#: contrib/comments/models.py:187 +msgid "free comment" +msgstr "vaba kommentaar" + +#: contrib/comments/models.py:188 +msgid "free comments" +msgstr "vabad kommentaarid" + +#: contrib/comments/models.py:250 +msgid "score" +msgstr "tulemus" + +#: contrib/comments/models.py:251 +msgid "score date" +msgstr "tulemuse kuupäev" + +#: contrib/comments/models.py:255 +msgid "karma score" +msgstr "karma tulemus" + +#: contrib/comments/models.py:256 +msgid "karma scores" +msgstr "karma tulemused" + +#: contrib/comments/models.py:260 +#, python-format +msgid "%(score)d rating by %(user)s" +msgstr "%(score)d reiting kasutaja %(user)s poolt" + +#: contrib/comments/models.py:277 +#, python-format +msgid "" +"This comment was flagged by %(user)s:\n" +"\n" +"%(text)s" +msgstr "" +"See kommentaar märgiti kasutaja %(user)s poolt:\n" +"\n" +"%(text)s" + +#: contrib/comments/models.py:285 +msgid "flag date" +msgstr "märkimise kuupäev" + +#: contrib/comments/models.py:289 +msgid "user flag" +msgstr "kasutajamärge" + +#: contrib/comments/models.py:290 +msgid "user flags" +msgstr "kasutajamärked" + +#: contrib/comments/models.py:294 +#, python-format +msgid "Flag by %r" +msgstr "Lipu pani %r" + +#: contrib/comments/models.py:300 +msgid "deletion date" +msgstr "kustutamise kuupäev" + +#: contrib/comments/models.py:303 +msgid "moderator deletion" +msgstr "moderaatori kustutus" + +#: contrib/comments/models.py:304 +msgid "moderator deletions" +msgstr "moderaatori kustutused" + +#: contrib/comments/models.py:308 +#, python-format +msgid "Moderator deletion by %r" +msgstr "moderaatori kustutus kasutaja %r poolt" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Unustasid salasõna?" + +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "Reitingud" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "Nõutav" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "Valikuline" + +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "Postita foto" + +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "Kommentaar:" + +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "Kommentaari eelvaade" + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "Teie nimi:" + +#: contrib/comments/views/comments.py:28 +msgid "" +"This rating is required because you've entered at least one other rating." +msgstr "" +"See reiting on nõutav, sest olete sisestanud vähemalt ühe teise reitingu." + +#: contrib/comments/views/comments.py:112 +#, python-format +msgid "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comment:\n" +"\n" +"%(text)s" +msgid_plural "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" +"\n" +"%(text)s" +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/views/comments.py:117 +#, python-format +msgid "" +"This comment was posted by a sketchy user:\n" +"\n" +"%(text)s" +msgstr "" +"Selle kommentaari postitas pealiskaudne kasutaja:\n" +"\n" +"%(text)s" + +#: contrib/comments/views/comments.py:190 +#: contrib/comments/views/comments.py:283 +msgid "Only POSTs are allowed" +msgstr "Ainult POST päringud on lubatud" + +#: contrib/comments/views/comments.py:194 +#: contrib/comments/views/comments.py:287 +msgid "One or more of the required fields wasn't submitted" +msgstr "Üks või enam nõutavatest väljadest on puudu" + +#: contrib/comments/views/comments.py:198 +#: contrib/comments/views/comments.py:289 +msgid "Somebody tampered with the comment form (security violation)" +msgstr "" +"Keegi on kommentaari ankeeti sisestanud vigaseid andmed (turvarikkumine)" + +#: contrib/comments/views/comments.py:208 +#: contrib/comments/views/comments.py:295 +msgid "" +"The comment form had an invalid 'target' parameter -- the object ID was " +"invalid" +msgstr "" +"Kommentaariankeet sisaldas ebakorrektset 'target' parameetrit -- objekti ID " +"ei olnud korrektne" + +#: contrib/comments/views/comments.py:259 +#: contrib/comments/views/comments.py:324 +msgid "The comment form didn't provide either 'preview' or 'post'" +msgstr "Kommentaari ankeedis oli puudu kas 'preview' või 'post'" + +#: contrib/comments/views/karma.py:21 +msgid "Anonymous users cannot vote" +msgstr "Anonüümsed kasutajad ei saa hääletada" + +#: contrib/comments/views/karma.py:25 +msgid "Invalid comment ID" +msgstr "Ebakorrektne kommentaari ID" + +#: contrib/comments/views/karma.py:27 +msgid "No voting for yourself" +msgstr "Iseendale ei saa häält anda" + +#: contrib/contenttypes/models.py:67 +msgid "python model class name" +msgstr "pythoni mudeli klassinimi" + +#: contrib/contenttypes/models.py:71 +msgid "content type" +msgstr "sisutüüp" + +#: contrib/contenttypes/models.py:72 +msgid "content types" +msgstr "sisutüübid" + +#: contrib/flatpages/models.py:9 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Näide: '/about/contact/'. Veenduge, et URL algaks ja lõppeks kaldkriipsuga." + +#: contrib/flatpages/models.py:10 +msgid "title" +msgstr "pealkiri" + +#: contrib/flatpages/models.py:11 +msgid "content" +msgstr "sisu" + +#: contrib/flatpages/models.py:12 +msgid "enable comments" +msgstr "võimalda kommentaarid" + +#: contrib/flatpages/models.py:13 +msgid "template name" +msgstr "mall" + +#: contrib/flatpages/models.py:14 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Näide: 'flatpages/contact_page.html'. Kui mall on määramata, kasutatakse " +"vaikimisi malli 'flatpages/default.html'." + +#: contrib/flatpages/models.py:15 +msgid "registration required" +msgstr "registreerumine nõutav" + +#: contrib/flatpages/models.py:15 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "Kui see on valitud, näevad lehte ainult sisselogitud kasutajad" + +#: contrib/flatpages/models.py:20 +msgid "flat page" +msgstr "sisuleht" + +#: contrib/flatpages/models.py:21 +msgid "flat pages" +msgstr "sisulehed" + +#: contrib/flatpages/models.py:27 +msgid "Advanced options" +msgstr "Lisavalikud" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "th" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "st" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "nd" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "rd" +msgstr "." + +#: contrib/humanize/templatetags/humanize.py:51 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f miljon" +msgstr[1] "%(value).11f miljonit" + +#: contrib/humanize/templatetags/humanize.py:54 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f miljard" +msgstr[1] "%(value).1f miljardit" + +#: contrib/humanize/templatetags/humanize.py:57 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f triljon" +msgstr[1] "%(value).1f triljonit" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "one" +msgstr "üks" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "two" +msgstr "kaks" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "three" +msgstr "kolm" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "four" +msgstr "neli" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "five" +msgstr "viis" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "six" +msgstr "kuus" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "seven" +msgstr "seitse" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "eight" +msgstr "kaheksa" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "nine" +msgstr "üheksa" + +#: contrib/humanize/templatetags/humanize.py:93 +msgid "today" +msgstr "täna" + +#: contrib/humanize/templatetags/humanize.py:95 +msgid "tomorrow" +msgstr "homme" + +#: contrib/humanize/templatetags/humanize.py:97 +msgid "yesterday" +msgstr "eile" + +#: contrib/localflavor/ar/forms.py:27 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "Sisesta postiindeks kujul NNNN või ANNNNAAA." + +#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 +#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 +#: contrib/localflavor/pe/forms.py:51 +msgid "This field requires only numbers." +msgstr "See väli peab koosnema ainult numbritest." + +#: contrib/localflavor/ar/forms.py:50 +msgid "This field requires 7 or 8 digits." +msgstr "Siin väljal peab olema kas 7 või 8 numbrit." + +#: contrib/localflavor/ar/forms.py:79 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "Sisesta korrektne CUIT kujul XX-XXXXXXXX-X or XXXXXXXXXXXX." + +#: contrib/localflavor/ar/forms.py:80 +msgid "Invalid CUIT." +msgstr "Vale CUIT." + +#: contrib/localflavor/au/forms.py:16 +msgid "Enter a 4 digit post code." +msgstr "Sisesta neljakohaline postiindeks." + +#: contrib/localflavor/br/forms.py:21 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Sisesta postiindeks kujul XXXXX-XXX." + +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Telefoninumbrid peavad olema kujul XX-XXXX-XXXX." + +#: contrib/localflavor/br/forms.py:58 +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." +msgstr "Vali korrektne Brasiilia osariik. Valitud osariik ei ole korrektne." + +#: contrib/localflavor/br/forms.py:94 +msgid "Invalid CPF number." +msgstr "Mittekorrektne CPF number." + +#: contrib/localflavor/br/forms.py:95 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "See väli võib olla maksimaalselt 11 või 14 sümbolit." + +#: contrib/localflavor/br/forms.py:134 +msgid "Invalid CNPJ number." +msgstr "Mittekorrektne CNPJ number." + +#: contrib/localflavor/br/forms.py:136 +msgid "This field requires at least 14 digits" +msgstr "See väli peab olema vähemalt 14-kohaline arv." + +#: contrib/localflavor/ca/forms.py:17 +msgid "Enter a postal code in the format XXX XXX." +msgstr "Sisesta postiindeks kujul XXX XXX." + +#: contrib/localflavor/ca/forms.py:88 +msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." +msgstr "Sisesta korrektne Kanada sotsiaalturvatunnus formaadis XXX-XXX-XXXX." + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "Aargau" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "Appenzell Innerrhoden" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "Appenzell Ausserrhoden" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "Basel-Stadt" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "Basel-Land" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "Berne" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "Fribourg" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "Geneva" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "Glarus" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "Graubuenden" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "Jura" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "Lucerne" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "Neuchatel" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "Nidwalden" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "Obwalden" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "Schaffhausen" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "Schwyz" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "Solothurn" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "St. Gallen" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "Thurgau" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "Ticino" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "Uri" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "Valais" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "Vaud" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "Zug" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "Zurich" + +#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12 +msgid "Enter a zip code in the format XXXX." +msgstr "Sisesta postiindeks kujul XXXX." + +#: contrib/localflavor/ch/forms.py:64 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" +"Sisesta kehtiv Šveitsi isiku- või passinumber kujul X1234567<0 või " +"1234567890." + +#: contrib/localflavor/cl/forms.py:29 +msgid "Enter a valid Chilean RUT." +msgstr "Sisesta korrektne Tšiili RUT." + +#: contrib/localflavor/cl/forms.py:30 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "Sisesta korrektne Tšiili RUT formaadis XX.XXX.XXX-X." + +#: contrib/localflavor/cl/forms.py:31 +msgid "The Chilean RUT is not valid." +msgstr "Tšiili RUT on ebakorrektne." + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "Baden-Württemberg" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "Baieri" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "Berliin" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "Brandenburg" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "Bremen" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "Hamburg" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "Hessen" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "Mecklenburg-Vorpommern" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "Alam-Saksi" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "Nordrhein-Westfalen" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "Rheinland-Pfalz" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "Saarimaa" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "Saksimaa" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "Saksi-Anhalt" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "Schleswig-Holstein" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "Tüüringi" + +#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 +#: contrib/localflavor/fr/forms.py:15 +msgid "Enter a zip code in the format XXXXX." +msgstr "Sisesta postiindeks kujul XXXXX." + +#: contrib/localflavor/de/forms.py:41 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" +"Sisesta kehtiv Saksamaa ID-kaardi number kujul XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." + +#: contrib/localflavor/es/es_provinces.py:5 +msgid "Arava" +msgstr "Álava" + +#: contrib/localflavor/es/es_provinces.py:6 +msgid "Albacete" +msgstr "Albacete" + +#: contrib/localflavor/es/es_provinces.py:7 +msgid "Alacant" +msgstr "Alicante" + +#: contrib/localflavor/es/es_provinces.py:8 +msgid "Almeria" +msgstr "Almería" + +#: contrib/localflavor/es/es_provinces.py:9 +msgid "Avila" +msgstr "Ávila" + +#: contrib/localflavor/es/es_provinces.py:10 +msgid "Badajoz" +msgstr "Badajoz" + +#: contrib/localflavor/es/es_provinces.py:11 +msgid "Illes Balears" +msgstr "Baleaarid" + +#: contrib/localflavor/es/es_provinces.py:12 +msgid "Barcelona" +msgstr "Barcelona" + +#: contrib/localflavor/es/es_provinces.py:13 +msgid "Burgos" +msgstr "Burgos" + +#: contrib/localflavor/es/es_provinces.py:14 +msgid "Caceres" +msgstr "Cáceres" + +#: contrib/localflavor/es/es_provinces.py:15 +msgid "Cadiz" +msgstr "Cádiz" + +#: contrib/localflavor/es/es_provinces.py:16 +msgid "Castello" +msgstr "Castellón" + +#: contrib/localflavor/es/es_provinces.py:17 +msgid "Ciudad Real" +msgstr "Ciudad Real" + +#: contrib/localflavor/es/es_provinces.py:18 +msgid "Cordoba" +msgstr "Córdoba" + +#: contrib/localflavor/es/es_provinces.py:19 +msgid "A Coruna" +msgstr "A Coruna" + +#: contrib/localflavor/es/es_provinces.py:20 +msgid "Cuenca" +msgstr "Cuenca" + +#: contrib/localflavor/es/es_provinces.py:21 +msgid "Girona" +msgstr "Girona" + +#: contrib/localflavor/es/es_provinces.py:22 +msgid "Granada" +msgstr "Granada" + +#: contrib/localflavor/es/es_provinces.py:23 +msgid "Guadalajara" +msgstr "Guadalajara" + +#: contrib/localflavor/es/es_provinces.py:24 +msgid "Guipuzkoa" +msgstr "Guipúzcoa" + +#: contrib/localflavor/es/es_provinces.py:25 +msgid "Huelva" +msgstr "Huelva" + +#: contrib/localflavor/es/es_provinces.py:26 +msgid "Huesca" +msgstr "Huesca" + +#: contrib/localflavor/es/es_provinces.py:27 +msgid "Jaen" +msgstr "Jaén" + +#: contrib/localflavor/es/es_provinces.py:28 +msgid "Leon" +msgstr "León" + +#: contrib/localflavor/es/es_provinces.py:29 +msgid "Lleida" +msgstr "Lleida" + +#: contrib/localflavor/es/es_provinces.py:30 +#: contrib/localflavor/es/es_regions.py:17 +msgid "La Rioja" +msgstr "La Rioja" + +#: contrib/localflavor/es/es_provinces.py:31 +msgid "Lugo" +msgstr "Lugo" + +#: contrib/localflavor/es/es_provinces.py:32 +#: contrib/localflavor/es/es_regions.py:18 +msgid "Madrid" +msgstr "Madrid" + +#: contrib/localflavor/es/es_provinces.py:33 +msgid "Malaga" +msgstr "Málaga" + +#: contrib/localflavor/es/es_provinces.py:34 +msgid "Murcia" +msgstr "Murcia" + +#: contrib/localflavor/es/es_provinces.py:35 +msgid "Navarre" +msgstr "Navarra" + +#: contrib/localflavor/es/es_provinces.py:36 +msgid "Ourense" +msgstr "Orense" + +#: contrib/localflavor/es/es_provinces.py:37 +msgid "Asturias" +msgstr "Astuuria" + +#: contrib/localflavor/es/es_provinces.py:38 +msgid "Palencia" +msgstr "Palencia" + +#: contrib/localflavor/es/es_provinces.py:39 +msgid "Las Palmas" +msgstr "Las Palmas" + +#: contrib/localflavor/es/es_provinces.py:40 +msgid "Pontevedra" +msgstr "Pontevedra" + +#: contrib/localflavor/es/es_provinces.py:41 +msgid "Salamanca" +msgstr "Salamanca" + +#: contrib/localflavor/es/es_provinces.py:42 +msgid "Santa Cruz de Tenerife" +msgstr "Tenerife" + +#: contrib/localflavor/es/es_provinces.py:43 +#: contrib/localflavor/es/es_regions.py:11 +msgid "Cantabria" +msgstr "Cantabria" + +#: contrib/localflavor/es/es_provinces.py:44 +msgid "Segovia" +msgstr "Segovia" + +#: contrib/localflavor/es/es_provinces.py:45 +msgid "Seville" +msgstr "Sevilla" + +#: contrib/localflavor/es/es_provinces.py:46 +msgid "Soria" +msgstr "Soria" + +#: contrib/localflavor/es/es_provinces.py:47 +msgid "Tarragona" +msgstr "Tarragona" + +#: contrib/localflavor/es/es_provinces.py:48 +msgid "Teruel" +msgstr "Teruel" + +#: contrib/localflavor/es/es_provinces.py:49 +msgid "Toledo" +msgstr "Toledo" + +#: contrib/localflavor/es/es_provinces.py:50 +msgid "Valencia" +msgstr "Valencia" + +#: contrib/localflavor/es/es_provinces.py:51 +msgid "Valladolid" +msgstr "Valladolid" + +#: contrib/localflavor/es/es_provinces.py:52 +msgid "Bizkaia" +msgstr "Vizcaya" + +#: contrib/localflavor/es/es_provinces.py:53 +msgid "Zamora" +msgstr "Zamora" + +#: contrib/localflavor/es/es_provinces.py:54 +msgid "Zaragoza" +msgstr "Zaragoza" + +#: contrib/localflavor/es/es_provinces.py:55 +msgid "Ceuta" +msgstr "Ceuta" + +#: contrib/localflavor/es/es_provinces.py:56 +msgid "Melilla" +msgstr "Melilla" + +#: contrib/localflavor/es/es_regions.py:5 +msgid "Andalusia" +msgstr "Andaluusia" + +#: contrib/localflavor/es/es_regions.py:6 +msgid "Aragon" +msgstr "Aragón" + +#: contrib/localflavor/es/es_regions.py:7 +msgid "Principality of Asturias" +msgstr "Astuuria" + +#: contrib/localflavor/es/es_regions.py:8 +msgid "Balearic Islands" +msgstr "Baleaarid" + +#: contrib/localflavor/es/es_regions.py:9 +msgid "Basque Country" +msgstr "Baskimaa" + +#: contrib/localflavor/es/es_regions.py:10 +msgid "Canary Islands" +msgstr "Kanaari saared" + +#: contrib/localflavor/es/es_regions.py:12 +msgid "Castile-La Mancha" +msgstr "Castilla-La Mancha" + +#: contrib/localflavor/es/es_regions.py:13 +msgid "Castile and Leon" +msgstr "Castilla-León" + +#: contrib/localflavor/es/es_regions.py:14 +msgid "Catalonia" +msgstr "Kataloonia" + +#: contrib/localflavor/es/es_regions.py:15 +msgid "Extremadura" +msgstr "Extremadura" + +#: contrib/localflavor/es/es_regions.py:16 +msgid "Galicia" +msgstr "Galicia" + +#: contrib/localflavor/es/es_regions.py:19 +msgid "Region of Murcia" +msgstr "Murcia" + +#: contrib/localflavor/es/es_regions.py:20 +msgid "Foral Community of Navarre" +msgstr "Navarra" + +#: contrib/localflavor/es/es_regions.py:21 +msgid "Valencian Community" +msgstr "Valencia" + +#: contrib/localflavor/es/forms.py:19 +msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." +msgstr "Sisesta korrektne postiindeks vahemikus 01XXX - 52XXX." + +#: contrib/localflavor/es/forms.py:39 +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "" +"Sisesta korrektne telefoninumber, mis on formaadis 6XXXXXXXX, 8XXXXXXXX või " +"9XXXXXXXX." + +#: contrib/localflavor/es/forms.py:66 +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "Palun sisesta korrektne NIF, NIE või CIF." + +#: contrib/localflavor/es/forms.py:67 +msgid "Please enter a valid NIF or NIE." +msgstr "Palun sisesta korrektne NIF või NIE." + +#: contrib/localflavor/es/forms.py:68 +msgid "Invalid checksum for NIF." +msgstr "Vale NIF-i kontrollsumma." + +#: contrib/localflavor/es/forms.py:69 +msgid "Invalid checksum for NIE." +msgstr "Vale NIE kontrollsumma." + +#: contrib/localflavor/es/forms.py:70 +msgid "Invalid checksum for CIF." +msgstr "Vale CIF-i kontrollsumma." + +#: contrib/localflavor/es/forms.py:142 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "Palun sisesta korrektne kontonumber formaadis XXXX-XXXX-XX-XXXXXXXXXX." + +#: contrib/localflavor/es/forms.py:143 +msgid "Invalid checksum for bank account number." +msgstr "Pangakonto numbri kontrollsumma on vale." + +#: contrib/localflavor/fi/forms.py:28 +msgid "Enter a valid Finnish social security number." +msgstr "Sisesta korrektne Soome sotsiaalturvatunnus." + +#: contrib/localflavor/in_/forms.py:14 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "Sisesta postiindeks kujul XXXXXXX." + +#: contrib/localflavor/is_/forms.py:17 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "Sisesta kehtiv Islandi isikukood formaadis XXXXXX-XXXX." + +#: contrib/localflavor/is_/forms.py:18 +msgid "The Icelandic identification number is not valid." +msgstr "Islandi isikukood ei ole korrektne." + +#: contrib/localflavor/it/forms.py:14 +msgid "Enter a valid zip code." +msgstr "Sisesta korrektne postiindeks." + +#: contrib/localflavor/it/forms.py:43 +msgid "Enter a valid Social Security number." +msgstr "Sisesta korrektne sotsiaalturvatunnus." + +#: contrib/localflavor/it/forms.py:68 +msgid "Enter a valid VAT number." +msgstr "Sisesta korrektne käibemaksukohuslase kood." + +#: contrib/localflavor/jp/forms.py:17 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Sisesta postiindeks kujul XXXXXXX või XXX-XXXX." + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "Hokkaido" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "Aomori" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "Iwate" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "Miyagi" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "Akita" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "Yamagata" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "Fukushima" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "Ibaraki" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "Tochigi" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "Gunma" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "Saitama" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "Chiba" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "Tokyo" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "Kanagawa" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "Yamanashi" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "Nagano" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "Niigata" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "Toyama" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "Ishikawa" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "Fukui" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "Gifu" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "Shizuoka" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "Aichi" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "Mie" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "Shiga" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "Kyoto" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "Osaka" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "Hyogo" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "Nara" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "Wakayama" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "Tottori" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "Shimane" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "Okayama" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "Hiroshima" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "Yamaguchi" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "Tokushima" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "Kagawa" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "Ehime" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "Kochi" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "Fukuoka" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "Saga" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "Nagasaki" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "Kumamoto" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "Oita" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "Miyazaki" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "Kagoshima" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "Okinawa" + +#: contrib/localflavor/mx/mx_states.py:12 +msgid "Aguascalientes" +msgstr "Aguascalientes" + +#: contrib/localflavor/mx/mx_states.py:13 +msgid "Baja California" +msgstr "Baja California" + +#: contrib/localflavor/mx/mx_states.py:14 +msgid "Baja California Sur" +msgstr "Baja California Sur" + +#: contrib/localflavor/mx/mx_states.py:15 +msgid "Campeche" +msgstr "Campeche" + +#: contrib/localflavor/mx/mx_states.py:16 +msgid "Chihuahua" +msgstr "Chihuahua" + +#: contrib/localflavor/mx/mx_states.py:17 +msgid "Chiapas" +msgstr "Chiapas" + +#: contrib/localflavor/mx/mx_states.py:18 +msgid "Coahuila" +msgstr "Coahuila" + +#: contrib/localflavor/mx/mx_states.py:19 +msgid "Colima" +msgstr "Colima" + +#: contrib/localflavor/mx/mx_states.py:20 +msgid "Distrito Federal" +msgstr "Distrito Federal" + +#: contrib/localflavor/mx/mx_states.py:21 +msgid "Durango" +msgstr "Durango" + +#: contrib/localflavor/mx/mx_states.py:22 +msgid "Guerrero" +msgstr "Guerrero" + +#: contrib/localflavor/mx/mx_states.py:23 +msgid "Guanajuato" +msgstr "Guanajuato" + +#: contrib/localflavor/mx/mx_states.py:24 +msgid "Hidalgo" +msgstr "Hidalgo" + +#: contrib/localflavor/mx/mx_states.py:25 +msgid "Jalisco" +msgstr "Jalisco" + +#: contrib/localflavor/mx/mx_states.py:26 +msgid "Estado de México" +msgstr "Estado de México" + +#: contrib/localflavor/mx/mx_states.py:27 +msgid "Michoacán" +msgstr "Michoacán" + +#: contrib/localflavor/mx/mx_states.py:28 +msgid "Morelos" +msgstr "Morelos" + +#: contrib/localflavor/mx/mx_states.py:29 +msgid "Nayarit" +msgstr "Nayarit" + +#: contrib/localflavor/mx/mx_states.py:30 +msgid "Nuevo León" +msgstr "Nuevo León" + +#: contrib/localflavor/mx/mx_states.py:31 +msgid "Oaxaca" +msgstr "Oaxaca" + +#: contrib/localflavor/mx/mx_states.py:32 +msgid "Puebla" +msgstr "Puebla" + +#: contrib/localflavor/mx/mx_states.py:33 +msgid "Querétaro" +msgstr "Querétaro" + +#: contrib/localflavor/mx/mx_states.py:34 +msgid "Quintana Roo" +msgstr "Quintana Roo" + +#: contrib/localflavor/mx/mx_states.py:35 +msgid "Sinaloa" +msgstr "Sinaloa" + +#: contrib/localflavor/mx/mx_states.py:36 +msgid "San Luis Potosí" +msgstr "San Luis Potosí" + +#: contrib/localflavor/mx/mx_states.py:37 +msgid "Sonora" +msgstr "Sonora" + +#: contrib/localflavor/mx/mx_states.py:38 +msgid "Tabasco" +msgstr "Tabasco" + +#: contrib/localflavor/mx/mx_states.py:39 +msgid "Tamaulipas" +msgstr "Tamaulipas" + +#: contrib/localflavor/mx/mx_states.py:40 +msgid "Tlaxcala" +msgstr "Tlaxcala" + +#: contrib/localflavor/mx/mx_states.py:41 +msgid "Veracruz" +msgstr "Veracruz" + +#: contrib/localflavor/mx/mx_states.py:42 +msgid "Yucatán" +msgstr "Yucatán" + +#: contrib/localflavor/mx/mx_states.py:43 +msgid "Zacatecas" +msgstr "Zacatecas" + +#: contrib/localflavor/nl/forms.py:21 +msgid "Enter a valid postal code" +msgstr "Sisesta kehtiv postiindeks" + +#: contrib/localflavor/nl/forms.py:52 +msgid "Enter a valid phone number" +msgstr "Sisesta kehtiv telefoninumber" + +#: contrib/localflavor/nl/forms.py:78 +msgid "Enter a valid SoFi number" +msgstr "Sisesta kehtiv SoFi number" + +#: contrib/localflavor/nl/nl_provinces.py:4 +msgid "Drente" +msgstr "Drenthe" + +#: contrib/localflavor/nl/nl_provinces.py:5 +msgid "Flevoland" +msgstr "Flevoland" + +#: contrib/localflavor/nl/nl_provinces.py:6 +msgid "Friesland" +msgstr "Friisimaa" + +#: contrib/localflavor/nl/nl_provinces.py:7 +msgid "Gelderland" +msgstr "Gelderland" + +#: contrib/localflavor/nl/nl_provinces.py:8 +msgid "Groningen" +msgstr "Groningeni provints" + +#: contrib/localflavor/nl/nl_provinces.py:9 +msgid "Limburg" +msgstr "Limburgi provints" + +#: contrib/localflavor/nl/nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "Põhja-Brabant" + +#: contrib/localflavor/nl/nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "Põhja-Holland" + +#: contrib/localflavor/nl/nl_provinces.py:12 +msgid "Overijssel" +msgstr "Overijssel" + +#: contrib/localflavor/nl/nl_provinces.py:13 +msgid "Utrecht" +msgstr "Utrechti provints" + +#: contrib/localflavor/nl/nl_provinces.py:14 +msgid "Zeeland" +msgstr "Zeeland" + +#: contrib/localflavor/nl/nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "Lõuna-Holland" + +#: contrib/localflavor/no/forms.py:33 +msgid "Enter a valid Norwegian social security number." +msgstr "Sisesta kehtiv Norra sotsiaalturvatunnus." + +#: contrib/localflavor/pe/forms.py:24 +msgid "This field requires 8 digits." +msgstr "Sellel väljal peab olema 8 numbrit." + +#: contrib/localflavor/pe/forms.py:52 +msgid "This field requires 11 digits." +msgstr "Sellel väljal peab olema 11 numbrit." + +#: contrib/localflavor/pl/forms.py:39 +msgid "National Identification Number consists of 11 digits." +msgstr "Riiklik isikukood koosneb 11 numbrist." + +#: contrib/localflavor/pl/forms.py:40 +msgid "Wrong checksum for the National Identification Number." +msgstr "Isikukoodil on vale kontrollsumma." + +#: contrib/localflavor/pl/forms.py:72 +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "" +"Sisesta maksumaksja number (NIP) formaadis XXX-XXX-XX-XX või XX-XX-XXX-XXX." + +#: contrib/localflavor/pl/forms.py:73 +msgid "Wrong checksum for the Tax Number (NIP)." +msgstr "Maksukohustusnumbril (NIP) on vale kontrollsumma." + +#: contrib/localflavor/pl/forms.py:112 +msgid "National Business Register Number (REGON) consists of 7 or 9 digits." +msgstr "Riikliku Äriregistri number (REGON) koosneb 7 või 9 numbrist." + +#: contrib/localflavor/pl/forms.py:113 +msgid "Wrong checksum for the National Business Register Number (REGON)." +msgstr "Riiklikul Äriregistri numbril (REGON) on vale kontrollsumma." + +#: contrib/localflavor/pl/forms.py:156 +msgid "Enter a postal code in the format XX-XXX." +msgstr "Sisesta postiindeks kujul XX-XXX." + +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "Alam-Sileesia" + +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "Kujawy-Pomorze" + +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "Lublin" + +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "Lubusz" + +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "Łódź" + +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "Väike-Poola" + +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "Masoovia" + +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "Opole" + +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "Podkarpacie" + +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "Podlaasia" + +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "Pomorze" + +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "Sileesia" + +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "Święty Krzyżi" + +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "Warmia-Masuuria" + +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "Suur-Poola" + +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "Lääne-Pomorze" + +#: contrib/localflavor/sk/forms.py:30 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "Sisesta postiindeks kujul XXXXX või XXX XX." + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "Banska Bystrica" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "Banska Stiavnica" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "Bardejov" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "Banovce nad Bebravou" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "Brezno" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "Bratislava I" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "Bratislava II" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "Bratislava III" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "Bratislava IV" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "Bratislava V" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "Bytca" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "Cadca" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "Detva" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "Dolny Kubin" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "Dunajska Streda" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "Galanta" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "Gelnica" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "Hlohovec" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "Humenne" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "Ilava" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "Kezmarok" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "Komarno" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "Kosice I" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "Kosice II" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "Kosice III" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "Kosice IV" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "Kosice - okolie" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "Krupina" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "Kysucke Nove Mesto" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "Levice" + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "Levoca" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "Liptovsky Mikulas" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "Lucenec" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "Malacky" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "Martin" + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "Medzilaborce" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "Michalovce" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "Myjava" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "Namestovo" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "Nitra" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "Nove Mesto nad Vahom" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "Nove Zamky" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "Partizanske" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "Pezinok" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "Piestany" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "Poltar" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "Poprad" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "Povazska Bystrica" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "Presov" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "Prievidza" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "Puchov" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "Revuca" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "Rimavska Sobota" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "Roznava" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "Ruzomberok" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "Sabinov" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "Senec" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "Senica" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "Skalica" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "Snina" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "Sobrance" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "Spisska Nova Ves" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "Stara Lubovna" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "Stropkov" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "Svidnik" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "Sala" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "Topolcany" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "Trebisov" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "Trencin" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "Trnava" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "Turcianske Teplice" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "Tvrdosin" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "Velky Krtis" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "Vranov nad Toplou" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "Zlate Moravce" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "Zvolen" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "Zarnovica" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "Ziar nad Hronom" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "Zilina" + +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "Banská Bystrica regioon" + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "Bratislava regioon" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "Košice regioon" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "Nitra regioon" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "Prešovi regioon" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "Trenšíni regioon" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "Trnava regioon" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "Žilina regioon" + +#: contrib/localflavor/uk/forms.py:21 +msgid "Enter a valid postcode." +msgstr "Sisesta kehtiv postiindeks." + +#: contrib/localflavor/uk/uk_regions.py:11 +msgid "Bedfordshire" +msgstr "Bedfordshire" + +#: contrib/localflavor/uk/uk_regions.py:12 +msgid "Buckinghamshire" +msgstr "Buckinghamshire" + +#: contrib/localflavor/uk/uk_regions.py:14 +msgid "Cheshire" +msgstr "Cheshire" + +#: contrib/localflavor/uk/uk_regions.py:15 +msgid "Cornwall and Isles of Scilly" +msgstr "Cornwall and Isles of Scilly" + +#: contrib/localflavor/uk/uk_regions.py:16 +msgid "Cumbria" +msgstr "Cumbria" + +#: contrib/localflavor/uk/uk_regions.py:17 +msgid "Derbyshire" +msgstr "Derbyshire" + +#: contrib/localflavor/uk/uk_regions.py:18 +msgid "Devon" +msgstr "Devon" + +#: contrib/localflavor/uk/uk_regions.py:19 +msgid "Dorset" +msgstr "Dorset" + +#: contrib/localflavor/uk/uk_regions.py:20 +msgid "Durham" +msgstr "Durham" + +#: contrib/localflavor/uk/uk_regions.py:21 +msgid "East Sussex" +msgstr "East Sussex" + +#: contrib/localflavor/uk/uk_regions.py:22 +msgid "Essex" +msgstr "Essex" + +#: contrib/localflavor/uk/uk_regions.py:23 +msgid "Gloucestershire" +msgstr "Gloucestershire" + +#: contrib/localflavor/uk/uk_regions.py:24 +msgid "Greater London" +msgstr "Suur-London" + +#: contrib/localflavor/uk/uk_regions.py:25 +msgid "Greater Manchester" +msgstr "Suur-Manchester" + +#: contrib/localflavor/uk/uk_regions.py:26 +msgid "Hampshire" +msgstr "Hampshire" + +#: contrib/localflavor/uk/uk_regions.py:27 +msgid "Hertfordshire" +msgstr "Hertfordshire" + +#: contrib/localflavor/uk/uk_regions.py:28 +msgid "Kent" +msgstr "Kent" + +#: contrib/localflavor/uk/uk_regions.py:29 +msgid "Lancashire" +msgstr "Lancashire" + +#: contrib/localflavor/uk/uk_regions.py:30 +msgid "Leicestershire" +msgstr "Leicestershire" + +#: contrib/localflavor/uk/uk_regions.py:31 +msgid "Lincolnshire" +msgstr "Lincolnshire" + +#: contrib/localflavor/uk/uk_regions.py:32 +msgid "Merseyside" +msgstr "Merseyside" + +#: contrib/localflavor/uk/uk_regions.py:33 +msgid "Norfolk" +msgstr "Norfolk" + +#: contrib/localflavor/uk/uk_regions.py:34 +msgid "North Yorkshire" +msgstr "North Yorkshire" + +#: contrib/localflavor/uk/uk_regions.py:35 +msgid "Northamptonshire" +msgstr "Northamptonshire" + +#: contrib/localflavor/uk/uk_regions.py:36 +msgid "Northumberland" +msgstr "Northumberland" + +#: contrib/localflavor/uk/uk_regions.py:37 +msgid "Nottinghamshire" +msgstr "Nottinghamshire" + +#: contrib/localflavor/uk/uk_regions.py:38 +msgid "Oxfordshire" +msgstr "Oxfordshire" + +#: contrib/localflavor/uk/uk_regions.py:39 +msgid "Shropshire" +msgstr "Shropshire" + +#: contrib/localflavor/uk/uk_regions.py:40 +msgid "Somerset" +msgstr "Somerset" + +#: contrib/localflavor/uk/uk_regions.py:41 +msgid "South Yorkshire" +msgstr "Lõuna-Yorkshire" + +#: contrib/localflavor/uk/uk_regions.py:42 +msgid "Staffordshire" +msgstr "Staffordshire" + +#: contrib/localflavor/uk/uk_regions.py:43 +msgid "Suffolk" +msgstr "Suffolk" + +#: contrib/localflavor/uk/uk_regions.py:44 +msgid "Surrey" +msgstr "Surrey" + +#: contrib/localflavor/uk/uk_regions.py:45 +msgid "Tyne and Wear" +msgstr "Tyne ja Wear" + +#: contrib/localflavor/uk/uk_regions.py:46 +msgid "Warwickshire" +msgstr "Warwickshire" + +#: contrib/localflavor/uk/uk_regions.py:47 +msgid "West Midlands" +msgstr "West Midlands" + +#: contrib/localflavor/uk/uk_regions.py:48 +msgid "West Sussex" +msgstr "Lääne-Sussex" + +#: contrib/localflavor/uk/uk_regions.py:49 +msgid "West Yorkshire" +msgstr "Lääne-Yorkshire" + +#: contrib/localflavor/uk/uk_regions.py:50 +msgid "Wiltshire" +msgstr "Wiltshire" + +#: contrib/localflavor/uk/uk_regions.py:51 +msgid "Worcestershire" +msgstr "Worcestershire" + +#: contrib/localflavor/uk/uk_regions.py:55 +msgid "County Antrim" +msgstr "County Antrim" + +#: contrib/localflavor/uk/uk_regions.py:56 +msgid "County Armagh" +msgstr "County Armagh" + +#: contrib/localflavor/uk/uk_regions.py:57 +msgid "County Down" +msgstr "County Down" + +#: contrib/localflavor/uk/uk_regions.py:58 +msgid "County Fermanagh" +msgstr "County Fermanagh" + +#: contrib/localflavor/uk/uk_regions.py:59 +msgid "County Londonderry" +msgstr "County Londonderry" + +#: contrib/localflavor/uk/uk_regions.py:60 +msgid "County Tyrone" +msgstr "County Tyrone" + +#: contrib/localflavor/uk/uk_regions.py:64 +msgid "Clwyd" +msgstr "Clwyd" + +#: contrib/localflavor/uk/uk_regions.py:65 +msgid "Dyfed" +msgstr "Dyfed" + +#: contrib/localflavor/uk/uk_regions.py:66 +msgid "Gwent" +msgstr "Gwent" + +#: contrib/localflavor/uk/uk_regions.py:67 +msgid "Gwynedd" +msgstr "Gwynedd" + +#: contrib/localflavor/uk/uk_regions.py:68 +msgid "Mid Glamorgan" +msgstr "Mid Glamorgan" + +#: contrib/localflavor/uk/uk_regions.py:69 +msgid "Powys" +msgstr "Powys" + +#: contrib/localflavor/uk/uk_regions.py:70 +msgid "South Glamorgan" +msgstr "South Glamorgan" + +#: contrib/localflavor/uk/uk_regions.py:71 +msgid "West Glamorgan" +msgstr "Lääne-Glamorgan" + +#: contrib/localflavor/uk/uk_regions.py:75 +msgid "Borders" +msgstr "Piirid" + +#: contrib/localflavor/uk/uk_regions.py:76 +msgid "Central Scotland" +msgstr "Kesk-Šotimaa" + +#: contrib/localflavor/uk/uk_regions.py:77 +msgid "Dumfries and Galloway" +msgstr "Dumfries and Galloway" + +#: contrib/localflavor/uk/uk_regions.py:78 +msgid "Fife" +msgstr "Fife" + +#: contrib/localflavor/uk/uk_regions.py:79 +msgid "Grampian" +msgstr "Grampian" + +#: contrib/localflavor/uk/uk_regions.py:80 +msgid "Highland" +msgstr "Highland" + +#: contrib/localflavor/uk/uk_regions.py:81 +msgid "Lothian" +msgstr "Lothian" + +#: contrib/localflavor/uk/uk_regions.py:82 +msgid "Orkney Islands" +msgstr "Orkney saared" + +#: contrib/localflavor/uk/uk_regions.py:83 +msgid "Shetland Islands" +msgstr "Shetlandi saared" + +#: contrib/localflavor/uk/uk_regions.py:84 +msgid "Strathclyde" +msgstr "Strathclyde" + +#: contrib/localflavor/uk/uk_regions.py:85 +msgid "Tayside" +msgstr "Tayside" + +#: contrib/localflavor/uk/uk_regions.py:86 +msgid "Western Isles" +msgstr "Western Isles" + +#: contrib/localflavor/uk/uk_regions.py:90 +msgid "England" +msgstr "Inglismaa" + +#: contrib/localflavor/uk/uk_regions.py:91 +msgid "Northern Ireland" +msgstr "Põhja-Iirimaa" + +#: contrib/localflavor/uk/uk_regions.py:92 +msgid "Scotland" +msgstr "Šotimaa" + +#: contrib/localflavor/uk/uk_regions.py:93 +msgid "Wales" +msgstr "Wales" + +#: contrib/localflavor/us/forms.py:16 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Sisesta postiindeks kujul XXXXX või XXXXX-XXXX." + +#: contrib/localflavor/us/forms.py:54 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "Sisesta kehtiv U.S. Social Security number formaadis XXX-XX-XXXX." + +#: contrib/localflavor/za/forms.py:20 +msgid "Enter a valid South African ID number" +msgstr "Sisesta kehtiv Lõuna-Aafrika ID-number" + +#: contrib/localflavor/za/forms.py:54 +msgid "Enter a valid South African postal code" +msgstr "Sisesta kehtiv Lõuna-Aafrika postiindeks" + +#: contrib/localflavor/za/za_provinces.py:4 +msgid "Eastern Cape" +msgstr "Eastern Cape" + +#: contrib/localflavor/za/za_provinces.py:5 +msgid "Free State" +msgstr "Free State" + +#: contrib/localflavor/za/za_provinces.py:6 +msgid "Gauteng" +msgstr "Gauteng" + +#: contrib/localflavor/za/za_provinces.py:7 +msgid "KwaZulu-Natal" +msgstr "KwaZulu-Natal" + +#: contrib/localflavor/za/za_provinces.py:8 +msgid "Limpopo" +msgstr "Limpopo" + +#: contrib/localflavor/za/za_provinces.py:9 +msgid "Mpumalanga" +msgstr "Mpumalanga" + +#: contrib/localflavor/za/za_provinces.py:10 +msgid "Northern Cape" +msgstr "Northern Cape" + +#: contrib/localflavor/za/za_provinces.py:11 +msgid "North West" +msgstr "North West" + +#: contrib/localflavor/za/za_provinces.py:12 +msgid "Western Cape" +msgstr "Western Cape" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "ümbersuunatav asukoht" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"See peaks olema absoluutne asukoht, v.a. domeeninimi. Näide: '/events/" +"search/'." + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "suuna aadressile" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"See võib olla kas absoluutne asukoht (nagu ülemine) või täielik URL algusega " +"'http://'." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "suunamine" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "suunamised" + +#: contrib/sessions/models.py:41 +msgid "session key" +msgstr "sessioonivõti" + +#: contrib/sessions/models.py:42 +msgid "session data" +msgstr "sessiooni andmed" + +#: contrib/sessions/models.py:43 +msgid "expire date" +msgstr "kehtivusaja lõpp" + +#: contrib/sessions/models.py:48 +msgid "session" +msgstr "sessioon" + +#: contrib/sessions/models.py:49 +msgid "sessions" +msgstr "sessioonid" + +#: contrib/sites/models.py:32 +msgid "domain name" +msgstr "domeeninimi" + +#: contrib/sites/models.py:33 +msgid "display name" +msgstr "hüüdnimi" + +#: contrib/sites/models.py:37 +msgid "site" +msgstr "sait" + +#: contrib/sites/models.py:38 +msgid "sites" +msgstr "saidid" + +#: core/validators.py:72 +msgid "This value must contain only letters, numbers and underscores." +msgstr "See väärtus võib sisaldada ainult tähti, numbreid ja alakriipse." + +#: core/validators.py:76 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"See väärtus võib sisaldada ainult tähti, numbreid, alakriipse, mõttekriipse " +"või kaldkriipse." + +#: core/validators.py:80 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "" +"See väärtus võib sisaldada ainult tähti, nubmreid, alakriipse ja sidekriipse." + +#: core/validators.py:84 +msgid "Uppercase letters are not allowed here." +msgstr "Suured tähed ei ole siin lubatud." + +#: core/validators.py:88 +msgid "Lowercase letters are not allowed here." +msgstr "Väiksed tähed ei ole siin lubatud." + +#: core/validators.py:95 +msgid "Enter only digits separated by commas." +msgstr "Sisestage ainult komaga eraldatud numbreid." + +#: core/validators.py:107 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Sisestage korrektseid komaga eraldatud e-posti aadresseid." + +#: core/validators.py:111 +msgid "Please enter a valid IP address." +msgstr "Palun sisestage korrektne IP aadress." + +#: core/validators.py:115 +msgid "Empty values are not allowed here." +msgstr "Tühjad väärtused ei ole siin lubatud." + +#: core/validators.py:119 +msgid "Non-numeric characters aren't allowed here." +msgstr "Mittenumbrilised märgid ei ole siin lubatud." + +#: core/validators.py:123 +msgid "This value can't be comprised solely of digits." +msgstr "See väärtus ei tohi sisaldada ainult numbreid." + +#: core/validators.py:128 newforms/fields.py:152 +msgid "Enter a whole number." +msgstr "Sisestage täisarv." + +#: core/validators.py:132 +msgid "Only alphabetical characters are allowed here." +msgstr "Siin on lubatud ainult tähestiku tähed." + +#: core/validators.py:147 +msgid "Year must be 1900 or later." +msgstr "Aasta peab olema 1900 või hiljem." + +#: core/validators.py:151 +#, python-format +msgid "Invalid date: %s" +msgstr "Ebakorrektne kuupäev: %s" + +#: core/validators.py:156 db/models/fields/__init__.py:548 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Sisestage korrektne kuupäev formaadis AAAA-KK-PP." + +#: core/validators.py:161 +msgid "Enter a valid time in HH:MM format." +msgstr "Sisestage korrektne kellaaeg formaadis TT:MM" + +#: core/validators.py:165 db/models/fields/__init__.py:625 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Sisestage korrektne kuupäev ja kellaaeg formaadis AAAA-KK-PP TT:MM." + +#: core/validators.py:170 newforms/fields.py:403 +msgid "Enter a valid e-mail address." +msgstr "Sisestage korrektne e-posti aadress:" + +#: core/validators.py:182 core/validators.py:474 newforms/fields.py:433 +#: oldforms/__init__.py:687 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Ühtegi faili ei saadetud. Kontrollige vormi kodeeringutüüpi." + +#: core/validators.py:193 newforms/fields.py:459 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Laadige korrektne pilt. Fail, mille laadisite, ei olnud kas pilt või oli " +"fail vigane." + +#: core/validators.py:200 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "URL %s ei viita korrektsele pildile." + +#: core/validators.py:204 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "" +"Telefoninumbrid peavad olema formaadis XXX-XXX-XXXX. \"%s\" on ebakorrektne." + +#: core/validators.py:212 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "URL %s ei viita korrektsele QuickTime videole." + +#: core/validators.py:216 +msgid "A valid URL is required." +msgstr "Korrektne URL on nõutav." + +#: core/validators.py:230 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"Korrektne HTML on nõutav. Vead on järgnevad:\n" +"%s" + +#: core/validators.py:237 +#, python-format +msgid "Badly formed XML: %s" +msgstr "Vigane XML: %s" + +#: core/validators.py:254 +#, python-format +msgid "Invalid URL: %s" +msgstr "Vigane URL: %s" + +#: core/validators.py:259 core/validators.py:261 +#, python-format +msgid "The URL %s is a broken link." +msgstr "URL %s on katkine." + +#: core/validators.py:267 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Sisestage korrektne USA osariigilühend." + +#: core/validators.py:281 +#, 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] "Jälgige oma keelekasutust. Sõna %s ei ole lubatud." +msgstr[1] "Jälgige oma keelekasutust. Sõnad %s ei ole lubatud." + +#: core/validators.py:288 +#, python-format +msgid "This field must match the '%s' field." +msgstr "See väli peab sobima väljaga '%s'." + +#: core/validators.py:307 +msgid "Please enter something for at least one field." +msgstr "Palun täitke vähemalt üks väli." + +#: core/validators.py:316 core/validators.py:327 +msgid "Please enter both fields or leave them both empty." +msgstr "Palun täitke mõlemad lahtrid või jätke mõlemad tühjaks." + +#: core/validators.py:335 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "See lahter on kohustuslik, kui %(field)s on %(value)s" + +#: core/validators.py:348 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "See lahter on nõutav, kui %(field)s ei ole %(value)s" + +#: core/validators.py:367 +msgid "Duplicate values are not allowed." +msgstr "Mitte-unikaalsed väärtused ei ole lubatud." + +#: core/validators.py:382 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "See väärtus peab olema vahemikus %(lower)s kuni %(upper)s." + +#: core/validators.py:384 +#, python-format +msgid "This value must be at least %s." +msgstr "See väärtus peab olema vähemalt %s." + +#: core/validators.py:386 +#, python-format +msgid "This value must be no more than %s." +msgstr "See väärtus ei tohi olla rohkem kui %s." + +#: core/validators.py:427 +#, python-format +msgid "This value must be a power of %s." +msgstr "See väärtus peab jaguma arvuga %s." + +#: core/validators.py:437 +msgid "Please enter a valid decimal number." +msgstr "Palun sisestage korrektne kümnendarv." + +#: core/validators.py:444 +#, 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] "Palun sisestage %s-kohaline kümnendarv." +msgstr[1] "Palun sisestage %s-kohaline kümnendarv." + +#: core/validators.py:447 +#, 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] "Palun sisestage korrektne kümnendarv, mille täisosa on %s-kohaline" +msgstr[1] "Palun sisestage korrektne kümnendarv, mille täisosa on %s-kohaline" + +#: core/validators.py:450 +#, 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] "" +"Palun sisestage korrektne kümnendarv, millel on maksimaalselt %s komakoht." +msgstr[1] "" +"Palun sisestage korrektne kümnendarv, millel on maksimaalselt %s komakohta." + +#: core/validators.py:458 +msgid "Please enter a valid floating point number." +msgstr "Palun sisestage korrektne murdarv." + +#: core/validators.py:467 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Veenduge, et üleslaetud fail on vähemalt %s baiti suur." + +#: core/validators.py:468 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Veenduge, et üleslaetud fail ei ole suurem kui %s baiti." + +#: core/validators.py:485 +msgid "The format for this field is wrong." +msgstr "Selle lahtri formaat on ebakorrektne." + +#: core/validators.py:500 +msgid "This field is invalid." +msgstr "See lahter on ebakorrektne." + +#: core/validators.py:536 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Ei õnnestunud leida midagi aadressilt %s." + +#: core/validators.py:539 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "URL %(url)s tagastas sobimatu Content-Type päise '%(contenttype)s'." + +#: core/validators.py:572 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Palun sulgege sulgemata jäänud %(tag)s lipik real %(line)s. (Rea algus: \"%" +"(start)s\".)" + +#: core/validators.py:576 +#, python-format +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Rida %(line)s sisaldab teksti, mis ei ole selles kontekstis lubatud. (Rea " +"algus: \"%(start)s\".)" + +#: core/validators.py:581 +#, python-format +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"Real %(line)s on vigane attribute \"%(attr)s\". (Rea algus: \"%(start)s\".)" + +#: core/validators.py:586 +#, python-format +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"Real %(line)s on vigane lipik \"<%(tag)s>\". (Rea algus: \"%(start)s\".)" + +#: core/validators.py:590 +#, python-format +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Real %(line)s on lipik, millel on puudu üks või enam nõutavatest " +"atribuutidest. (Rea algus: \"%(start)s\".)" + +#: core/validators.py:595 +#, python-format +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Real %(line)s on atribuut \"%(attr)s\", mille väärtus on vigane. (Rea algus: " +"\"%(start)s\".)" + +#: db/models/manipulators.py:308 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "" +"%(type)s tüüpi %(object)s on juba olemas etteantud väärtustele %(field)s." + +#: db/models/fields/__init__.py:54 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "" + +#: db/models/fields/__init__.py:179 db/models/fields/__init__.py:348 +#: db/models/fields/__init__.py:780 db/models/fields/__init__.py:791 +#: newforms/fields.py:46 oldforms/__init__.py:374 +msgid "This field is required." +msgstr "See lahter on nõutav." + +#: db/models/fields/__init__.py:448 +msgid "This value must be an integer." +msgstr "See väärtus peab olema täisarv." + +#: db/models/fields/__init__.py:487 +msgid "This value must be either True or False." +msgstr "See väärtus peab olema kas tõene või väär" + +#: db/models/fields/__init__.py:511 +msgid "This field cannot be null." +msgstr "See lahter ei tohi olla tühi." + +#: db/models/fields/__init__.py:689 +msgid "This value must be a decimal number." +msgstr "See väärtus peab olema kümnendarv." + +#: db/models/fields/__init__.py:800 +msgid "Enter a valid filename." +msgstr "Sisestage korrektne failinimi." + +#: db/models/fields/__init__.py:981 +msgid "This value must be either None, True or False." +msgstr "See väärtus peab olema kas tühi, tõene või väär." + +#: db/models/fields/related.py:94 +#, python-format +msgid "Please enter a valid %s." +msgstr "Palun sisestage korrektne %s." + +#: db/models/fields/related.py:721 +msgid "Separate multiple IDs with commas." +msgstr "Eraldage mitu ID-d komaga." + +#: db/models/fields/related.py:723 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "Et valida mitu, hoidke all \"Control\"-nuppu (Maci puhul \"Command\")." + +#: db/models/fields/related.py:770 +#, 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] "Palun sisestage korrektne %(self)s ID. Väärtus %(value)r on vigane." +msgstr[1] "" +"Palun sisestage korrektne %(self)s ID. Väärtused %(value)r on vigased." + +#: newforms/fields.py:47 +msgid "Enter a valid value." +msgstr "Sisestage korrektne väärtus." + +#: newforms/fields.py:124 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Veenduge, et see väärtus sisaldab kõige rohkem %(max)d tähemärki (hetkel on %" +"(length)d)." + +#: newforms/fields.py:125 +#, python-format +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "" +"Veenduge, et see väärtus sisaldab vähemalt %(min)d märki (hetkel on %(length)" +"d)." + +#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "Veenduge, et see väärtus on väiksem või võrdne kui %s." + +#: newforms/fields.py:154 newforms/fields.py:183 newforms/fields.py:212 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "Veenduge, et see väärtus on suurem või võrdne kui %s." + +#: newforms/fields.py:181 newforms/fields.py:210 +msgid "Enter a number." +msgstr "Sisestage arv." + +#: newforms/fields.py:213 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Veenduge, et kogu numbrikohtade arv ei ületaks %s." + +#: newforms/fields.py:214 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Veenduge, et komakohtade arv ei ületaks %s." + +#: newforms/fields.py:215 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Veenduge, et komast vasakul olevaid numbreid ei oleks rohkem kui %s." + +#: newforms/fields.py:263 newforms/fields.py:751 +msgid "Enter a valid date." +msgstr "Sisestage korrektne kuupäev." + +#: newforms/fields.py:296 newforms/fields.py:752 +msgid "Enter a valid time." +msgstr "Sisestage korrektne kellaaeg." + +#: newforms/fields.py:335 +msgid "Enter a valid date/time." +msgstr "Sisestage korrektne kuupäev ja kellaaeg." + +#: newforms/fields.py:434 +msgid "No file was submitted." +msgstr "Ühtegi faili ei saadetud." + +#: newforms/fields.py:435 oldforms/__init__.py:689 +msgid "The submitted file is empty." +msgstr "Saadetud fail on tühi." + +#: newforms/fields.py:497 +msgid "Enter a valid URL." +msgstr "Sisestage korrektne URL." + +#: newforms/fields.py:498 +msgid "This URL appears to be a broken link." +msgstr "See URL näib olevat katkine." + +#: newforms/fields.py:560 newforms/models.py:299 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Valige korrektne väärtus. Valitud väärtus ei ole valitav." + +#: newforms/fields.py:599 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "Valige korrektne väärtus. %(value)s ei ole valitav." + +#: newforms/fields.py:600 newforms/fields.py:662 newforms/models.py:371 +msgid "Enter a list of values." +msgstr "Sisestage väärtuste nimekiri." + +#: newforms/fields.py:780 +msgid "Enter a valid IPv4 address." +msgstr "Sisestage korrektne IPv4 aadress." + +#: newforms/models.py:372 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Valige korrektne väärtus. %s ei ole valitav." + +#: oldforms/__init__.py:409 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "Veenduge, et tekst on alla %s tähemärgi." +msgstr[1] "Veenduge, et tekst on alla %s tähemärgi." + +#: oldforms/__init__.py:414 +msgid "Line breaks are not allowed here." +msgstr "Reavahetused ei ole lubatud." + +#: oldforms/__init__.py:512 oldforms/__init__.py:586 oldforms/__init__.py:625 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "Valige korrektne väärtus; '%(data)s' ei kuulu valikutesse %(choices)s." + +#: oldforms/__init__.py:745 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Sisestage täisarv vahemikus -32 768 kuni 32 767." + +#: oldforms/__init__.py:755 +msgid "Enter a positive number." +msgstr "Sisestage postiivne arv." + +#: oldforms/__init__.py:765 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Sisestage täisarv vahemikus 0 kuni 32 767." + +#: template/defaultfilters.py:698 +msgid "yes,no,maybe" +msgstr "jah,ei,võib-olla" + +#: template/defaultfilters.py:729 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d bait" +msgstr[1] "%(size)d baiti" + +#: template/defaultfilters.py:731 +#, python-format +msgid "%.1f KB" +msgstr "%.1f KB" + +#: template/defaultfilters.py:733 +#, python-format +msgid "%.1f MB" +msgstr "%.1f MB" + +#: template/defaultfilters.py:734 +#, python-format +msgid "%.1f GB" +msgstr "%.1f GB" + +#: utils/dateformat.py:41 +msgid "p.m." +msgstr "p.l." + +#: utils/dateformat.py:42 +msgid "a.m." +msgstr "e.l." + +#: utils/dateformat.py:47 +msgid "PM" +msgstr "PL" + +#: utils/dateformat.py:48 +msgid "AM" +msgstr "EL" + +#: utils/dateformat.py:97 +msgid "midnight" +msgstr "südaöö" + +#: utils/dateformat.py:99 +msgid "noon" +msgstr "keskpäev" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "esmaspäev" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "teisipäev" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "kolmapäev" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "neljapäev" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "reede" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "laupäev" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "pühapäev" + +#: utils/dates.py:10 +msgid "Mon" +msgstr "esmasp." + +#: utils/dates.py:10 +msgid "Tue" +msgstr "teisip." + +#: utils/dates.py:10 +msgid "Wed" +msgstr "kolmap." + +#: utils/dates.py:10 +msgid "Thu" +msgstr "neljap." + +#: utils/dates.py:10 +msgid "Fri" +msgstr "reede" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "laup." + +#: utils/dates.py:11 +msgid "Sun" +msgstr "pühap." + +#: utils/dates.py:18 +msgid "January" +msgstr "jaanuar" + +#: utils/dates.py:18 +msgid "February" +msgstr "veebruar" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "March" +msgstr "märts" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "April" +msgstr "aprill" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "May" +msgstr "mai" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "June" +msgstr "juuni" + +#: utils/dates.py:19 utils/dates.py:31 +msgid "July" +msgstr "juuli" + +#: utils/dates.py:19 +msgid "August" +msgstr "august" + +#: utils/dates.py:19 +msgid "September" +msgstr "september" + +#: utils/dates.py:19 +msgid "October" +msgstr "oktoober" + +#: utils/dates.py:19 +msgid "November" +msgstr "november" + +#: utils/dates.py:20 +msgid "December" +msgstr "detsember" + +#: utils/dates.py:23 +msgid "jan" +msgstr "jaan" + +#: utils/dates.py:23 +msgid "feb" +msgstr "veeb" + +#: utils/dates.py:23 +msgid "mar" +msgstr "märts" + +#: utils/dates.py:23 +msgid "apr" +msgstr "apr" + +#: utils/dates.py:23 +msgid "may" +msgstr "mai" + +#: utils/dates.py:23 +msgid "jun" +msgstr "jun" + +#: utils/dates.py:24 +msgid "jul" +msgstr "jul" + +#: utils/dates.py:24 +msgid "aug" +msgstr "aug" + +#: utils/dates.py:24 +msgid "sep" +msgstr "sept" + +#: utils/dates.py:24 +msgid "oct" +msgstr "okt" + +#: utils/dates.py:24 +msgid "nov" +msgstr "nov" + +#: utils/dates.py:24 +msgid "dec" +msgstr "dets" + +#: utils/dates.py:31 +msgid "Jan." +msgstr "Jaan." + +#: utils/dates.py:31 +msgid "Feb." +msgstr "Veeb." + +#: utils/dates.py:32 +msgid "Aug." +msgstr "Aug." + +#: utils/dates.py:32 +msgid "Sept." +msgstr "Sept." + +#: utils/dates.py:32 +msgid "Oct." +msgstr "Okt." + +#: utils/dates.py:32 +msgid "Nov." +msgstr "Nov." + +#: utils/dates.py:32 +msgid "Dec." +msgstr "Dets." + +#: utils/text.py:127 +msgid "or" +msgstr "või" + +#: utils/timesince.py:21 +msgid "year" +msgid_plural "years" +msgstr[0] "aasta" +msgstr[1] "aastat" + +#: utils/timesince.py:22 +msgid "month" +msgid_plural "months" +msgstr[0] "kuu" +msgstr[1] "kuud" + +#: utils/timesince.py:23 +msgid "week" +msgid_plural "weeks" +msgstr[0] "nädal" +msgstr[1] "nädalat" + +#: utils/timesince.py:24 +msgid "day" +msgid_plural "days" +msgstr[0] "päev" +msgstr[1] "päeva" + +#: utils/timesince.py:25 +msgid "hour" +msgid_plural "hours" +msgstr[0] "tund" +msgstr[1] "tundi" + +#: utils/timesince.py:26 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minut" +msgstr[1] "minutit" + +#: utils/timesince.py:46 +msgid "minutes" +msgstr "minutit" + +#: utils/timesince.py:51 +#, python-format +msgid "%(number)d %(type)s" +msgstr "%(number)d %(type)s" + +#: utils/timesince.py:57 +#, python-format +msgid ", %(number)d %(type)s" +msgstr ", %(number)d %(type)s" + +#: utils/translation/trans_real.py:403 +msgid "DATE_FORMAT" +msgstr "N j, Y" + +#: utils/translation/trans_real.py:404 +msgid "DATETIME_FORMAT" +msgstr "j. N Y, H:i" + +#: utils/translation/trans_real.py:405 +msgid "TIME_FORMAT" +msgstr "H:i" + +#: utils/translation/trans_real.py:421 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y" + +#: utils/translation/trans_real.py:422 +msgid "MONTH_DAY_FORMAT" +msgstr "j. F" + +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s edukalt loodud." + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)s edukalt muudetud." + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s kustutatud." diff --git a/django/conf/locale/et/LC_MESSAGES/djangojs.mo b/django/conf/locale/et/LC_MESSAGES/djangojs.mo new file mode 100644 index 0000000000..c3cd06ee57 Binary files /dev/null and b/django/conf/locale/et/LC_MESSAGES/djangojs.mo differ diff --git a/django/conf/locale/et/LC_MESSAGES/djangojs.po b/django/conf/locale/et/LC_MESSAGES/djangojs.po new file mode 100644 index 0000000000..604eaa004a --- /dev/null +++ b/django/conf/locale/et/LC_MESSAGES/djangojs.po @@ -0,0 +1,115 @@ +# Estonian translation for the Django Project. +# Copyright (C) 2008, Django Project +# This file is distributed under the same license as the django package. +msgid "" +msgstr "" +"Project-Id-Version: Django" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-06-02 19:42+0300\n" +"PO-Revision-Date: 2008-06-16 19:55+0200\n" +"Last-Translator: Erik Allik \n" +"Language-Team: Django-i18n \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 "Saadaval %s" + +#: contrib/admin/media/js/SelectFilter2.js:41 +msgid "Choose all" +msgstr "Vali kõik" + +#: contrib/admin/media/js/SelectFilter2.js:46 +msgid "Add" +msgstr "Lisa" + +#: contrib/admin/media/js/SelectFilter2.js:48 +msgid "Remove" +msgstr "Eemalda" + +#: contrib/admin/media/js/SelectFilter2.js:53 +#, perl-format +msgid "Chosen %s" +msgstr "Valitud %s" + +#: contrib/admin/media/js/SelectFilter2.js:54 +msgid "Select your choice(s) and click " +msgstr "Tee valik(ud) ja klõpsa" + +#: contrib/admin/media/js/SelectFilter2.js:59 +msgid "Clear all" +msgstr "Puhasta kõik" + +#: contrib/admin/media/js/calendar.js:24 +#: contrib/admin/media/js/dateparse.js:32 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "Jaanuar Veebruar Märts Aprill Mai Juuni Juuli August September Oktoober November Detsember" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "P E T K N R L" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "Pühapäev Esmaspäev Teisipäev Kolmapäev Neljapäev Reede Laupäev" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34 +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72 +msgid "Show" +msgstr "Näita" + +#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63 +msgid "Hide" +msgstr "Varja" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 +msgid "Now" +msgstr "Praegu" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51 +msgid "Clock" +msgstr "Kell" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78 +msgid "Choose a time" +msgstr "Vali aeg" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 +msgid "Midnight" +msgstr "Kesköö" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 +msgid "6 a.m." +msgstr "6 hommikul" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +msgid "Noon" +msgstr "Keskpäev" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 +msgid "Cancel" +msgstr "Tühista" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177 +msgid "Today" +msgstr "Täna" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132 +msgid "Calendar" +msgstr "Kalender" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175 +msgid "Yesterday" +msgstr "Eile" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 +msgid "Tomorrow" +msgstr "Homme" diff --git a/django/conf/locale/hr/LC_MESSAGES/django.mo b/django/conf/locale/hr/LC_MESSAGES/django.mo index adbbfa1d7d..0290455bc2 100644 Binary files a/django/conf/locale/hr/LC_MESSAGES/django.mo and b/django/conf/locale/hr/LC_MESSAGES/django.mo differ diff --git a/django/contrib/flatpages/models.py b/django/contrib/flatpages/models.py index 80e8a2775b..2b62d38e07 100644 --- a/django/contrib/flatpages/models.py +++ b/django/contrib/flatpages/models.py @@ -20,7 +20,7 @@ class FlatPage(models.Model): verbose_name = _('flat page') verbose_name_plural = _('flat pages') ordering = ('url',) - + def __unicode__(self): return u"%s -- %s" % (self.url, self.title) @@ -38,7 +38,8 @@ class FlatPageAdmin(admin.ModelAdmin): (None, {'fields': ('url', 'title', 'content', 'sites')}), (_('Advanced options'), {'classes': ('collapse',), 'fields': ('enable_comments', 'registration_required', 'template_name')}), ) - list_filter = ('sites',) + list_display = ('url', 'title') + list_filter = ('sites', 'enable_comments', 'registration_required') search_fields = ('url', 'title') admin.site.register(FlatPage, FlatPageAdmin) diff --git a/django/contrib/formtools/wizard.py b/django/contrib/formtools/wizard.py index a197c3e659..398de742ec 100644 --- a/django/contrib/formtools/wizard.py +++ b/django/contrib/formtools/wizard.py @@ -149,7 +149,7 @@ class FormWizard(object): data = [(bf.name, bf.data or '') for bf in form] + [settings.SECRET_KEY] # Use HIGHEST_PROTOCOL because it's the most efficient. It requires # Python 2.3, but Django requires 2.3 anyway, so that's OK. - pickled = pickle.dumps(data, protocol=pickle.HIGHEST_PROTOCOL) + pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL) return md5.new(pickled).hexdigest() def determine_step(self, request, *args, **kwargs): diff --git a/django/contrib/localflavor/it/forms.py b/django/contrib/localflavor/it/forms.py index 88e65734e4..901c86fafa 100644 --- a/django/contrib/localflavor/it/forms.py +++ b/django/contrib/localflavor/it/forms.py @@ -27,7 +27,7 @@ class ITRegionSelect(Select): class ITProvinceSelect(Select): """ - A Select widget that uses a list of IT regions as its choices. + A Select widget that uses a list of IT provinces as its choices. """ def __init__(self, attrs=None): from it_province import PROVINCE_CHOICES diff --git a/django/contrib/redirects/models.py b/django/contrib/redirects/models.py index a35c95f1a8..991423268d 100644 --- a/django/contrib/redirects/models.py +++ b/django/contrib/redirects/models.py @@ -15,7 +15,7 @@ class Redirect(models.Model): db_table = 'django_redirect' unique_together=(('site', 'old_path'),) ordering = ('old_path',) - + def __unicode__(self): return "%s ---> %s" % (self.old_path, self.new_path) @@ -26,6 +26,7 @@ class Redirect(models.Model): from django.contrib import admin class RedirectAdmin(admin.ModelAdmin): + list_display = ('old_path', 'new_path') list_filter = ('site',) search_fields = ('old_path', 'new_path') radio_fields = {'site': admin.VERTICAL} diff --git a/django/core/management/commands/dumpdata.py b/django/core/management/commands/dumpdata.py index 2642ae925e..2559d57104 100644 --- a/django/core/management/commands/dumpdata.py +++ b/django/core/management/commands/dumpdata.py @@ -9,6 +9,8 @@ class Command(BaseCommand): help='Specifies the output serialization format for fixtures.'), make_option('--indent', default=None, dest='indent', type='int', help='Specifies the indent level to use when pretty-printing output'), + make_option('-e', '--exclude', dest='exclude',action='append', default=[], + help='App to exclude (use multiple --exclude to exclude multiple apps).'), ) help = 'Output the contents of the database as a fixture of the given format.' args = '[appname ...]' @@ -16,12 +18,15 @@ class Command(BaseCommand): def handle(self, *app_labels, **options): from django.db.models import get_app, get_apps, get_models - format = options.get('format', 'json') - indent = options.get('indent', None) + format = options.get('format','json') + indent = options.get('indent',None) + exclude = options.get('exclude',[]) show_traceback = options.get('traceback', False) + excluded_apps = [get_app(app_label) for app_label in exclude] + if len(app_labels) == 0: - app_list = get_apps() + app_list = [app for app in get_apps() if app not in excluded_apps] else: app_list = [get_app(app_label) for app_label in app_labels] diff --git a/django/core/management/commands/loaddata.py b/django/core/management/commands/loaddata.py index 193bb26ccf..688cd58e2c 100644 --- a/django/core/management/commands/loaddata.py +++ b/django/core/management/commands/loaddata.py @@ -111,7 +111,10 @@ class Command(BaseCommand): models.add(obj.object.__class__) obj.save() label_found = True - except Exception, e: + except (SystemExit, KeyboardInterrupt): + raise + except Exception: + import traceback fixture.close() transaction.rollback() transaction.leave_transaction_management() @@ -121,7 +124,7 @@ class Command(BaseCommand): else: sys.stderr.write( self.style.ERROR("Problem installing fixture '%s': %s\n" % - (full_path, str(e)))) + (full_path, traceback.format_exc()))) return fixture.close() except: diff --git a/django/core/management/commands/startapp.py b/django/core/management/commands/startapp.py index a3d517dd7a..a81c427142 100644 --- a/django/core/management/commands/startapp.py +++ b/django/core/management/commands/startapp.py @@ -3,8 +3,7 @@ import os from django.core.management.base import copy_helper, CommandError, LabelCommand class Command(LabelCommand): - help = ("Creates a Django app directory structure for the given app name" - " in the current directory.") + help = "Creates a Django app directory structure for the given app name in the current directory." args = "[appname]" label = 'application name' @@ -16,6 +15,7 @@ class Command(LabelCommand): def handle_label(self, app_name, directory=None, **options): if directory is None: directory = os.getcwd() + # Determine the project_name by using the basename of directory, # which should be the full path of the project directory (or the # current directory if no directory was passed). @@ -23,6 +23,15 @@ class Command(LabelCommand): if app_name == project_name: raise CommandError("You cannot create an app with the same name" " (%r) as your project." % app_name) + + # Check that the app_name cannot be imported. + try: + __import__(app_name) + except ImportError: + pass + else: + raise CommandError("%r conflicts with the name of an existing Python module and cannot be used as an app name. Please try another name." % app_name) + copy_helper(self.style, 'app', app_name, directory, project_name) class ProjectCommand(Command): diff --git a/django/core/management/commands/startproject.py b/django/core/management/commands/startproject.py index 867d4fd3da..540a64d2ea 100644 --- a/django/core/management/commands/startproject.py +++ b/django/core/management/commands/startproject.py @@ -3,8 +3,6 @@ import os import re from random import choice -INVALID_PROJECT_NAMES = ('django', 'site', 'test') - class Command(LabelCommand): help = "Creates a Django project directory structure for the given project name in the current directory." args = "[projectname]" @@ -20,13 +18,13 @@ class Command(LabelCommand): # the parent directory. directory = os.getcwd() + # Check that the project_name cannot be imported. try: - proj_name = __import__(project_name) - if proj_name: - raise CommandError("%r conflicts with the name of an existing Python module and cannot be used as a project name. Please try another name." % project_name) + __import__(project_name) except ImportError: - if project_name in INVALID_PROJECT_NAMES: - raise CommandError("%r contains an invalid project name. Please try another name." % project_name) + pass + else: + raise CommandError("%r conflicts with the name of an existing Python module and cannot be used as a project name. Please try another name." % project_name) copy_helper(self.style, 'project', project_name, directory) diff --git a/django/core/management/commands/syncdb.py b/django/core/management/commands/syncdb.py index b8b2ff1beb..d87644d049 100644 --- a/django/core/management/commands/syncdb.py +++ b/django/core/management/commands/syncdb.py @@ -34,7 +34,16 @@ class Command(NoArgsCommand): try: __import__(app_name + '.management', {}, {}, ['']) except ImportError, exc: - if not exc.args[0].startswith('No module named management'): + # This is slightly hackish. We want to ignore ImportErrors + # if the "management" module itself is missing -- but we don't + # want to ignore the exception if the management module exists + # but raises an ImportError for some reason. The only way we + # can do this is to check the text of the exception. Note that + # we're a bit broad in how we check the text, because different + # Python implementations may not use the same text. CPython + # uses the text "No module named management". + msg = exc.args[0] + if not msg.startswith('No module named management') or 'management' not in msg: raise cursor = connection.cursor() diff --git a/django/core/urlresolvers.py b/django/core/urlresolvers.py index 2ef3d6f169..2ad63bfc7d 100644 --- a/django/core/urlresolvers.py +++ b/django/core/urlresolvers.py @@ -86,7 +86,7 @@ def reverse_helper(regex, *args, **kwargs): """ # TODO: Handle nested parenthesis in the following regex. result = re.sub(r'\(([^)]+)\)', MatchChecker(args, kwargs), regex.pattern) - return result.replace('^', '').replace('$', '') + return result.replace('^', '').replace('$', '').replace('\\', '') class MatchChecker(object): "Class used in reverse RegexURLPattern lookup." diff --git a/django/db/backends/__init__.py b/django/db/backends/__init__.py index 063c0ae411..63a6435bdb 100644 --- a/django/db/backends/__init__.py +++ b/django/db/backends/__init__.py @@ -52,6 +52,10 @@ class BaseDatabaseFeatures(object): uses_custom_query_class = False empty_fetchmany_value = [] update_can_self_select = True + supports_usecs = True + time_field_needs_date = False + interprets_empty_strings_as_nulls = False + date_field_supports_time_value = True class BaseDatabaseOperations(object): """ @@ -202,8 +206,8 @@ class BaseDatabaseOperations(object): def query_class(self, DefaultQueryClass): """ - Given the default QuerySet class, returns a custom QuerySet class - to use for this backend. Returns None if a custom QuerySet isn't used. + Given the default Query class, returns a custom Query class + to use for this backend. Returns None if a custom Query isn't used. See also BaseDatabaseFeatures.uses_custom_query_class, which regulates whether this method is called at all. """ @@ -266,3 +270,8 @@ class BaseDatabaseOperations(object): tablespaces. """ return None + + def prep_for_like_query(self, x): + """Prepares a value for use in a LIKE query.""" + from django.utils.encoding import smart_unicode + return smart_unicode(x).replace("\\", "\\\\").replace("%", "\%").replace("_", "\_") diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py index da57ecbe47..23735a023b 100644 --- a/django/db/backends/mysql/base.py +++ b/django/db/backends/mysql/base.py @@ -64,6 +64,7 @@ class DatabaseFeatures(BaseDatabaseFeatures): inline_fk_references = False empty_fetchmany_value = () update_can_self_select = False + supports_usecs = False class DatabaseOperations(BaseDatabaseOperations): def date_extract_sql(self, lookup_type, field_name): diff --git a/django/db/backends/mysql_old/base.py b/django/db/backends/mysql_old/base.py index 0ae114d176..e57aee6a04 100644 --- a/django/db/backends/mysql_old/base.py +++ b/django/db/backends/mysql_old/base.py @@ -68,6 +68,7 @@ class DatabaseFeatures(BaseDatabaseFeatures): inline_fk_references = False empty_fetchmany_value = () update_can_self_select = False + supports_usecs = False class DatabaseOperations(BaseDatabaseOperations): def date_extract_sql(self, lookup_type, field_name): diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py index 3635acdf2a..a1a9fb1c73 100644 --- a/django/db/backends/oracle/base.py +++ b/django/db/backends/oracle/base.py @@ -31,6 +31,9 @@ class DatabaseFeatures(BaseDatabaseFeatures): supports_tablespaces = True uses_case_insensitive_names = True uses_custom_query_class = True + time_field_needs_date = True + interprets_empty_strings_as_nulls = True + date_field_supports_time_value = False class DatabaseOperations(BaseDatabaseOperations): def autoinc_sql(self, table, column): diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index e71f41cb85..8a51193a01 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -7,7 +7,7 @@ try: except ImportError: from django.utils import _decimal as decimal # for Python 2.3 -from django.db import get_creation_module +from django.db import connection, get_creation_module from django.db.models import signals from django.db.models.query_utils import QueryWrapper from django.dispatch import dispatcher @@ -30,9 +30,6 @@ class NOT_PROVIDED: BLANK_CHOICE_DASH = [("", "---------")] BLANK_CHOICE_NONE = [("", "None")] -# prepares a value for use in a LIKE query -prep_for_like_query = lambda x: smart_unicode(x).replace("\\", "\\\\").replace("%", "\%").replace("_", "\_") - class FieldDoesNotExist(Exception): pass @@ -91,7 +88,7 @@ class Field(object): self.blank, self.null = blank, null # Oracle treats the empty string ('') as null, so coerce the null # option whenever '' is a possible value. - if self.empty_strings_allowed and settings.DATABASE_ENGINE == 'oracle': + if self.empty_strings_allowed and connection.features.interprets_empty_strings_as_nulls: self.null = True self.core, self.rel, self.default = core, rel, default self.editable = editable @@ -227,13 +224,13 @@ class Field(object): elif lookup_type in ('range', 'in'): return value elif lookup_type in ('contains', 'icontains'): - return ["%%%s%%" % prep_for_like_query(value)] + return ["%%%s%%" % connection.ops.prep_for_like_query(value)] elif lookup_type == 'iexact': - return [prep_for_like_query(value)] + return [connection.ops.prep_for_like_query(value)] elif lookup_type in ('startswith', 'istartswith'): - return ["%s%%" % prep_for_like_query(value)] + return ["%s%%" % connection.ops.prep_for_like_query(value)] elif lookup_type in ('endswith', 'iendswith'): - return ["%%%s" % prep_for_like_query(value)] + return ["%%%s" % connection.ops.prep_for_like_query(value)] elif lookup_type == 'isnull': return [] elif lookup_type == 'year': @@ -244,9 +241,12 @@ class Field(object): if settings.DATABASE_ENGINE == 'sqlite3': first = '%s-01-01' second = '%s-12-31 23:59:59.999999' - elif settings.DATABASE_ENGINE == 'oracle' and self.get_internal_type() == 'DateField': + elif not connection.features.date_field_supports_time_value and self.get_internal_type() == 'DateField': first = '%s-01-01' second = '%s-12-31' + elif not connection.features.supports_usecs: + first = '%s-01-01 00:00:00' + second = '%s-12-31 23:59:59.99' else: first = '%s-01-01 00:00:00' second = '%s-12-31 23:59:59.999999' @@ -263,7 +263,7 @@ class Field(object): if callable(self.default): return self.default() return force_unicode(self.default, strings_only=True) - if not self.empty_strings_allowed or (self.null and settings.DATABASE_ENGINE != 'oracle'): + if not self.empty_strings_allowed or (self.null and not connection.features.interprets_empty_strings_as_nulls): return None return "" @@ -614,7 +614,7 @@ class DateTimeField(DateField): if value is not None: # MySQL will throw a warning if microseconds are given, because it # doesn't support microseconds. - if settings.DATABASE_ENGINE == 'mysql' and hasattr(value, 'microsecond'): + if not connection.features.supports_usecs and hasattr(value, 'microsecond'): value = value.replace(microsecond=0) value = smart_unicode(value) return Field.get_db_prep_save(self, value) @@ -848,7 +848,7 @@ class FilePathField(Field): self.path, self.match, self.recursive = path, match, recursive kwargs['max_length'] = kwargs.get('max_length', 100) Field.__init__(self, verbose_name, name, **kwargs) - + def formfield(self, **kwargs): defaults = { 'path': self.path, @@ -1060,7 +1060,7 @@ class TimeField(Field): return "TimeField" def get_db_prep_lookup(self, lookup_type, value): - if settings.DATABASE_ENGINE == 'oracle': + if connection.features.time_field_needs_date: # Oracle requires a date in order to parse. def prep(value): if isinstance(value, datetime.time): @@ -1087,9 +1087,9 @@ class TimeField(Field): if value is not None: # MySQL will throw a warning if microseconds are given, because it # doesn't support microseconds. - if settings.DATABASE_ENGINE == 'mysql' and hasattr(value, 'microsecond'): + if not connection.features.supports_usecs and hasattr(value, 'microsecond'): value = value.replace(microsecond=0) - if settings.DATABASE_ENGINE == 'oracle': + if connection.features.time_field_needs_date: # cx_Oracle expects a datetime.datetime to persist into TIMESTAMP field. if isinstance(value, datetime.time): value = datetime.datetime(1900, 1, 1, value.hour, value.minute, diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index c82574081c..495f9f05d6 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -351,7 +351,7 @@ def create_many_related_manager(superclass): self.target_col_name = target_col_name self._pk_val = self.instance._get_pk_val() if self._pk_val is None: - raise ValueError("%r instance needs to have a primary key value before a many-to-many relationship can be used." % model) + raise ValueError("%r instance needs to have a primary key value before a many-to-many relationship can be used." % instance.__class__.__name__) def get_query_set(self): return superclass.get_query_set(self).filter(**(self.core_filters)) diff --git a/django/db/models/query.py b/django/db/models/query.py index 12731caa94..fb6d116a6e 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -513,7 +513,9 @@ class ValuesQuerySet(QuerySet): # names of the model fields to select. def iterator(self): - self.query.trim_extra_select(self.extra_names) + if (not self.extra_names and + len(self.field_names) != len(self.model._meta.fields)): + self.query.trim_extra_select(self.extra_names) names = self.query.extra_select.keys() + self.field_names for row in self.query.results_iter(): yield dict(zip(names, row)) diff --git a/django/db/models/sql/subqueries.py b/django/db/models/sql/subqueries.py index 7385cd00e1..28436abede 100644 --- a/django/db/models/sql/subqueries.py +++ b/django/db/models/sql/subqueries.py @@ -2,10 +2,9 @@ Query subclasses which provide extra functionality beyond simple data retrieval. """ -from django.contrib.contenttypes import generic from django.core.exceptions import FieldError from django.db.models.sql.constants import * -from django.db.models.sql.datastructures import RawValue, Date +from django.db.models.sql.datastructures import Date from django.db.models.sql.query import Query from django.db.models.sql.where import AND @@ -43,6 +42,7 @@ class DeleteQuery(Query): More than one physical query may be executed if there are a lot of values in pk_list. """ + from django.contrib.contenttypes import generic cls = self.model for related in cls._meta.get_all_related_many_to_many_objects(): if not isinstance(related.field, generic.GenericRelation): @@ -382,4 +382,3 @@ class CountQuery(Query): def get_ordering(self): return () - diff --git a/django/db/models/sql/where.py b/django/db/models/sql/where.py index 3e8bfed087..14e54487a3 100644 --- a/django/db/models/sql/where.py +++ b/django/db/models/sql/where.py @@ -18,7 +18,7 @@ class WhereNode(tree.Node): Used to represent the SQL where-clause. The class is tied to the Query class that created it (in order to create - the corret SQL). + the correct SQL). The children in this tree are usually either Q-like objects or lists of [table_alias, field_name, field_class, lookup_type, value]. However, a diff --git a/django/middleware/common.py b/django/middleware/common.py index 3d57fa4367..5cb7ca1bd3 100644 --- a/django/middleware/common.py +++ b/django/middleware/common.py @@ -108,7 +108,7 @@ class CommonMiddleware(object): if response.has_header('ETag'): etag = response['ETag'] else: - etag = md5.new(response.content).hexdigest() + etag = '"%s"' % md5.new(response.content).hexdigest() if response.status_code >= 200 and response.status_code < 300 and request.META.get('HTTP_IF_NONE_MATCH') == etag: cookies = response.cookies response = http.HttpResponseNotModified() diff --git a/django/newforms/fields.py b/django/newforms/fields.py index 08e8b842ec..dfe46a2e3e 100644 --- a/django/newforms/fields.py +++ b/django/newforms/fields.py @@ -514,7 +514,6 @@ class URLField(RegexField): return value if self.verify_exists: import urllib2 - from django.conf import settings headers = { "Accept": "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5", "Accept-Language": "en-us,en;q=0.5", diff --git a/django/newforms/models.py b/django/newforms/models.py index a60c1793a7..e515071162 100644 --- a/django/newforms/models.py +++ b/django/newforms/models.py @@ -544,13 +544,7 @@ class ModelChoiceField(ChoiceField): # the queryset. return ModelChoiceIterator(self) - def _set_choices(self, value): - # This method is copied from ChoiceField._set_choices(). It's necessary - # because property() doesn't allow a subclass to overwrite only - # _get_choices without implementing _set_choices. - self._choices = self.widget.choices = list(value) - - choices = property(_get_choices, _set_choices) + choices = property(_get_choices, ChoiceField._set_choices) def clean(self, value): Field.clean(self, value) diff --git a/django/utils/cache.py b/django/utils/cache.py index 4fcf493944..603199cc7e 100644 --- a/django/utils/cache.py +++ b/django/utils/cache.py @@ -104,7 +104,7 @@ def patch_response_headers(response, cache_timeout=None): if cache_timeout < 0: cache_timeout = 0 # Can't have max-age negative if not response.has_header('ETag'): - response['ETag'] = md5.new(response.content).hexdigest() + response['ETag'] = '"%s"' % md5.new(response.content).hexdigest() if not response.has_header('Last-Modified'): response['Last-Modified'] = http_date() if not response.has_header('Expires'): diff --git a/django/views/defaults.py b/django/views/defaults.py index b4dfc1e1eb..8a8fa474b9 100644 --- a/django/views/defaults.py +++ b/django/views/defaults.py @@ -68,8 +68,7 @@ def shortcut(request, content_type_id, object_id): def page_not_found(request, template_name='404.html'): """ - Default 404 handler, which looks for the requested URL in the redirects - table, redirects if found, and displays 404 page if not redirected. + Default 404 handler. Templates: `404.html` Context: diff --git a/docs/authentication.txt b/docs/authentication.txt index aacf21c106..cd76731bc4 100644 --- a/docs/authentication.txt +++ b/docs/authentication.txt @@ -270,17 +270,17 @@ to create a superuser at a later date, you can use a command line utility. manage.py createsuperuser --username=joe --email=joe@example.com -You will be prompted for a password. Once entered, the user is created. If you -leave off the ``--username`` or the ``--email`` option, It will prompt you for -those values as well. +You will be prompted for a password. After you enter one, the user will be +created immediately. If you leave off the ``--username`` or the ``--email`` +options, it will prompt you for those values. If you're using an older release of Django, the old way of creating a superuser on the command line still works:: python /path/to/django/contrib/auth/create_superuser.py -Where ``/path/to`` is the path to the Django codebase on your filesystem. The -``manage.py`` command is prefered since it'll figure out the correct path and +...where ``/path/to`` is the path to the Django codebase on your filesystem. The +``manage.py`` command is preferred because it figures out the correct path and environment for you. Storing additional information about users diff --git a/docs/contributing.txt b/docs/contributing.txt index 885f5159b9..c5f98bec11 100644 --- a/docs/contributing.txt +++ b/docs/contributing.txt @@ -148,15 +148,17 @@ Once you've claimed a ticket, you have a responsibility to work on that ticket in a reasonably timely fashion. If you don't have time to work on it, either unclaim it or don't claim it in the first place! -Core Django developers go through the list of claimed tickets from time to +Ticket triagers go through the list of claimed tickets from time to time, checking whether any progress has been made. If there's no sign of -progress on a particular claimed ticket for a week or two after it's been -claimed, we will unclaim it for you so that it's no longer monopolized and +progress on a particular claimed ticket for a week or two, a triager may ask +you to relinquish the ticket claim so that it's no longer monopolized and somebody else can claim it. If you've claimed a ticket and it's taking a long time (days or weeks) to code, -keep everybody updated by posting comments on the ticket. That way, we'll know -not to unclaim it. More communication is better than less communication! +keep everybody updated by posting comments on the ticket. If you don't provide +regular updates, and you don't respond to a request for a progress report, +your claim on the ticket may be revoked. As always, more communication is +better than less communication! Which tickets should be claimed? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -177,10 +179,10 @@ Patch style English than in code. Indentation is the most common example; it's hard to read patches when the only difference in code is that it's indented. - * When creating patches, always run ``svn diff`` from the top-level - ``trunk`` directory -- i.e., the one that contains ``django``, ``docs``, - ``tests``, ``AUTHORS``, etc. This makes it easy for other people to apply - your patches. + * When creating patches, always run ``svn diff`` from the top-level + ``trunk`` directory -- i.e., the one that contains ``django``, ``docs``, + ``tests``, ``AUTHORS``, etc. This makes it easy for other people to apply + your patches. * Attach patches to a ticket in the `ticket tracker`_, using the "attach file" button. Please *don't* put the patch in the ticket description or comment @@ -234,22 +236,28 @@ Since a picture is worth a thousand words, let's start there: :width: 590 :alt: Django's ticket workflow -We've got two roles here: +We've got two official roles here: - * Core developers: people with commit access who make the decisions and - write the bulk of the code. - - * Ticket triagers: community members who keep track of tickets, making - sure the tickets are always categorized correctly. + * Core developers: people with commit access who make the big decisions + and write the bulk of the code. + * Ticket triagers: trusted community members with a proven history of + working with the Django community. As a result of this history, they + have been entrusted by the core developers to make some of the smaller + decisions about tickets. + Second, note the five triage stages: - 1. A ticket starts as "Unreviewed", meaning that a triager has yet to - examine the ticket and move it along. + 1. A ticket starts as "Unreviewed", meaning that nobody has examined + the ticket. 2. "Design decision needed" means "this concept requires a design decision," which should be discussed either in the ticket comments or on - django-developers. + `django-developers`_. The "Design decision needed" step will generally + only be used for feature requests. It can also be used for issues + that *might* be bugs, depending on opinion or interpretation. Obvious + bugs (such as crashes, incorrect query results, or non-compliance with a + standard) skip this step and move straight to "Accepted". 3. Once a ticket is ruled to be approved for fixing, it's moved into the "Accepted" stage. This stage is where all the real work gets done. @@ -269,7 +277,7 @@ ticket has or needs in order to be "ready for checkin": "Has patch" This means the ticket has an associated patch_. These will be - reviewed to see if the patch is "good". + reviewed by the triage team to see if the patch is "good". "Needs documentation" This flag is used for tickets with patches that need associated @@ -292,7 +300,11 @@ A ticket can be resolved in a number of ways: Django and the issue is fixed. "invalid" - Used if the ticket is found to be incorrect or a user error. + Used if the ticket is found to be incorrect. This means that the + issue in the ticket is actually the result of a user error, or + describes a problem with something other than Django, or isn't + a bug report or feature request at all (for example, some new users + submit support queries as tickets). "wontfix" Used when a core developer decides that this request is not @@ -305,7 +317,8 @@ A ticket can be resolved in a number of ways: tickets, we keep all the discussion in one place, which helps everyone. "worksforme" - Used when the triage team is unable to replicate the original bug. + Used when the the ticket doesn't contain enough detail to replicate + the original bug. If you believe that the ticket was closed in error -- because you're still having the issue, or it's popped up somewhere else, or the triagers have @@ -316,6 +329,55 @@ reopen tickets that have been marked as "wontfix" by core developers. .. _good patch: `Patch style`_ .. _patch: `Submitting patches`_ +Triage by the general community +------------------------------- + +Although the Core Developers and Ticket Triagers make the big decisions in +the ticket triage process, there is also a lot that general community +members can do to help the triage process. In particular, you can help out by: + + * Closing "Unreviewed" tickets as "invalid", "worksforme", or "duplicate". + + * Promoting "Unreviewed" tickets to "Design Decision Required" if there + is a design decision that needs to be made, or "Accepted" if they are + an obvious bug. + + * Correcting the "Needs Tests", "Needs documentation", or "Has Patch" flags + for tickets where they are incorrectly set. + + * Checking that old tickets are still valid. If a ticket hasn't seen + any activity in a long time, it's possible that the problem has been + fixed, but the ticket hasn't been closed. + + * Contact the owners of tickets that have been claimed, but have not seen + any recent activity. If the owner doesn't respond after a week or so, + remove the owner's claim on the ticket. + + * Identifying trends and themes in the tickets. If there a lot of bug reports + about a particular part of Django, it possibly indicates that we need + to consider refactoring that part of the code. If a trend is emerging, + you should raise it for discussion (referencing the relevant tickets) + on `django-developers`_. + +However, we do ask that as a general community member working in the +ticket database: + + * Please **don't** close tickets as "wontfix". The core developers will + make the final determination of the fate of a ticket, usually after + consultation with the community. + + * Please **don't** promote tickets to "Ready for checkin" unless they are + *trivial* changes - for example, spelling mistakes or + broken links in documentation. + + * Please **don't** reverse a decision that has been made by a core + developer. If you disagree with a discussion that has been made, + please post a message to `django-developers`_. + + * Please be conservative in your actions. If you're unsure if you should + be making a change, don't make the change - leave a comment with your + concerns on the ticket, or post a message to `django-developers`_. + Submitting and maintaining translations ======================================= diff --git a/docs/db-api.txt b/docs/db-api.txt index a15c45d37b..4e1c2c5791 100644 --- a/docs/db-api.txt +++ b/docs/db-api.txt @@ -1373,6 +1373,17 @@ SQL equivalent:: SELECT ... WHERE id IN (1, 3, 4); +You can also use a queryset to dynamically evaluate the list of values +instead of providing a list of literal values. The queryset must be +reduced to a list of individual values using the ``values()`` method, +and then converted into a query using the ``query`` attribute:: + + Entry.objects.filter(blog__in=Blog.objects.filter(name__contains='Cheddar').values('pk').query) + +This queryset will be evaluated as subselect statement:: + + SELET ... WHERE blog.id IN (SELECT id FROM ... WHERE NAME LIKE '%Cheddar%') + startswith ~~~~~~~~~~ @@ -2026,6 +2037,37 @@ Each "reverse" operation described in this section has an immediate effect on the database. Every addition, creation and deletion is immediately and automatically saved to the database. +One-to-one relationships +------------------------ + +One-to-one relationships are very similar to Many-to-one relationships. +If you define a OneToOneField on your model, instances of that model will have +access to the related object via a simple attribute of the model. + +For example:: + + class EntryDetail(models.Model): + entry = models.OneToOneField(Entry) + details = models.TextField() + + ed = EntryDetail.objects.get(id=2) + ed.entry # Returns the related Entry object. + +The difference comes in reverse queries. The related model in a One-to-one +relationship also has access to a ``Manager`` object; however, that ``Manager`` +represents a single object, rather than a collection of objects:: + + e = Entry.objects.get(id=2) + e.entrydetail # returns the related EntryDetail object + +If no object has been assigned to this relationship, Django will raise +a ``DoesNotExist`` exception. + +Instances can be assigned to the reverse relationship in the same way as +you would assign the forward relationship:: + + e.entrydetail = ed + Many-to-many relationships -------------------------- @@ -2053,12 +2095,6 @@ above example, if the ``ManyToManyField`` in ``Entry`` had specified ``related_name='entries'``, then each ``Author`` instance would have an ``entries`` attribute instead of ``entry_set``. -One-to-one relationships ------------------------- - -The semantics of one-to-one relationships will be changing soon, so we don't -recommend you use them. - How are the backward relationships possible? -------------------------------------------- diff --git a/docs/django-admin.txt b/docs/django-admin.txt index 5aed3b0816..8797d2e988 100644 --- a/docs/django-admin.txt +++ b/docs/django-admin.txt @@ -93,6 +93,31 @@ backend. See the `cache documentation`_ for more information. .. _cache documentation: ../cache/ +createsuperuser +--------------- + +**New in Django development version** + +Creates a superuser account (a user who has all permissions). This is +useful if you need to create an initial superuser account but did not +do so during ``syncdb``, or if you need to programmatically generate +superuser accounts for your site(s). + +When run interactively, this command will prompt for a password for +the new superuser account. When run non-interactively, no password +will be set, and the superuser account will not be able to log in until +a password has been manually set for it. + +The username and e-mail address for the new account can be supplied by +using the ``--username`` and ``--email`` arguments on the command +line. If either of those is not supplied, ``createsuperuser`` will prompt for +it when running interactively. + +This command is only available if Django's `authentication system`_ +(``django.contrib.auth``) is installed. + +.. _authentication system: ../authentication/ + dbshell ------- @@ -109,31 +134,6 @@ the program name (``psql``, ``mysql``, ``sqlite3``) will find the program in the right place. There's no way to specify the location of the program manually. -createsuperuser ---------------- - -**New in Django development version** - -Creates a superuser account (a user who has all permissions). This is -useful if you need to create an initial superuser account but did not -do so during ``syncdb``, or if you need to programmatically generate -superuser accounts for your site(s). - -When run interactively, this command will prompt for a password for -the new superuser account; when run non-interactively, no password -will be set and the superuser account will not be able to log in until -a password has been manually set for it. - -The username and e-mail address for the new account can be supplied by -using the ``--username`` and ``--email`` arguments on the command -line; if not supplied, ``createsuperuser`` will prompt for them when -running interactively. - -This command is only available if Django's `authentication system`_ -(``django.contrib.auth``) is installed. - -.. _authentication system: ../authentication/ - diffsettings ------------ @@ -164,6 +164,22 @@ dumped. .. _custom manager: ../model-api/#custom-managers +--exclude +~~~~~~~~~ + +**New in Django development version** + +Exclude a specific application from the applications whose contents is +output. For example, to specifically exclude the `auth` application from +the output, you would call:: + + django-admin.py dumpdata --exclude=auth + +If you want to exclude multiple applications, use multiple ``--exclude`` +directives:: + + django-admin.py dumpdata --exclude=auth --exclude=contenttype + --format ~~~~~~~~ @@ -338,9 +354,9 @@ The ``dumpdata`` command can be used to generate input for ``loaddata``. Use ``--verbosity`` to specify the amount of notification and debug information that ``django-admin.py`` should print to the console. - * ``0`` means no input. - * ``1`` means normal input (default). - * ``2`` means verbose input. + * ``0`` means no output. + * ``1`` means normal output (default). + * ``2`` means verbose output. Example usage:: @@ -422,6 +438,10 @@ means any Python code changes you make while the server is running will *not* take effect if the particular Python modules have already been loaded into memory. +Example usage:: + + django-admin.py runserver --noreload + Examples of using different ports and addresses ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -451,14 +471,6 @@ documentation. .. _serving static files: ../static_files/ -Turning off auto-reload -~~~~~~~~~~~~~~~~~~~~~~~ - -To disable auto-reloading of code while the development server is running, use the -``--noreload`` option, like so:: - - django-admin.py runserver --noreload - shell ----- @@ -581,9 +593,9 @@ data files. Use ``--verbosity`` to specify the amount of notification and debug information that ``django-admin.py`` should print to the console. - * ``0`` means no input. - * ``1`` means normal input (default). - * ``2`` means verbose input. + * ``0`` means no output. + * ``1`` means normal output (default). + * ``2`` means verbose output. Example usage:: @@ -617,9 +629,9 @@ is being executed as an unattended, automated script. Use ``--verbosity`` to specify the amount of notification and debug information that ``django-admin.py`` should print to the console. - * ``0`` means no input. - * ``1`` means normal input (default). - * ``2`` means verbose input. + * ``0`` means no output. + * ``1`` means normal output (default). + * ``2`` means verbose output. Example usage:: @@ -693,9 +705,9 @@ To run on 1.2.3.4:7000 with a ``test`` fixture:: Use ``--verbosity`` to specify the amount of notification and debug information that ``django-admin.py`` should print to the console. - * ``0`` means no input. - * ``1`` means normal input (default). - * ``2`` means verbose input. + * ``0`` means no output. + * ``1`` means normal output (default). + * ``2`` means verbose output. Example usage:: diff --git a/docs/faq.txt b/docs/faq.txt index 5e36f1d933..6d12a95cba 100644 --- a/docs/faq.txt +++ b/docs/faq.txt @@ -226,7 +226,7 @@ When will you release Django 1.0? Short answer: When we're comfortable with Django's APIs, have added all features that we feel are necessary to earn a "1.0" status, and are ready to -begin maintaining backwards compatibility. +begin maintaining backwards compatibility. The merging of Django's `Queryset Refactor branch`_ went a long way toward Django 1.0. Merging the `Newforms Admin branch` will be another important step. @@ -260,8 +260,8 @@ Where can I find Django developers for hire? Consult our `developers for hire page`_ for a list of Django developers who would be happy to help you. -You might also be interested in posting a job to http://djangogigs.com/ . -If you want to find Django-capable people in your local area, try +You might also be interested in posting a job to http://djangogigs.com/ . +If you want to find Django-capable people in your local area, try http://djangopeople.net/ . .. _developers for hire page: http://code.djangoproject.com/wiki/DevelopersForHire @@ -646,18 +646,18 @@ You can also use the Python API. See `creating users`_ for full info. .. _creating users: ../authentication/#creating-users -Getting Help +Getting help ============ How do I do X? Why doesn't Y work? Where can I go to get help? -------------------------------------------------------------- If this FAQ doesn't contain an answer to your question, you might want to -try the `django-users mailing list`_. Feel free to ask any question related -to installing, using, or debugging Django. +try the `django-users mailing list`_. Feel free to ask any question related +to installing, using, or debugging Django. -If you prefer IRC, the `#django IRC channel`_ on freenode is an active -community of helpful individuals who may be able to solve your problem. +If you prefer IRC, the `#django IRC channel`_ on the Freenode IRC network is an +active community of helpful individuals who may be able to solve your problem. .. _`django-users mailing list`: http://groups.google.com/group/django-users .. _`#django IRC channel`: irc://irc.freenode.net/django @@ -666,35 +666,36 @@ Why hasn't my message appeared on django-users? ----------------------------------------------- django-users_ has a lot of subscribers. This is good for the community, as -there are lot of people that can contribute answers to questions. +it means many people are available to contribute answers to questions. Unfortunately, it also means that django-users_ is an attractive target for -spammers. +spammers. In order to combat the spam problem, when you join the django-users_ mailing -list, we manually moderate the first message you send to the list. This means -that spammers get caught, but it also means that your first question to the +list, we manually moderate the first message you send to the list. This means +that spammers get caught, but it also means that your first question to the list might take a little longer to get answered. We apologize for any inconvenience that this policy may cause. .. _django-users: http://groups.google.com/group/django-users -Nobody on django-users answered my question? What should I do? +Nobody on django-users answered my question! What should I do? -------------------------------------------------------------- -Wait. Ask again later. Try making your question more specific, or provide -a better example of your problem. +Try making your question more specific, or provide a better example of your +problem. -Remember, the readers of django-users_ are all volunteers. If nobody has -answered your question, it may be because nobody knows the answer, it may -be because nobody can understand the question, or it may be that everybody -that can help is extremely busy. +As with most open-source mailing lists, the folks on django-users_ are +volunteers. If nobody has answered your question, it may be because nobody +knows the answer, it may be because nobody can understand the question, or it +may be that everybody that can help is busy. One thing you might try is to ask +the question on IRC -- visit the `#django IRC channel`_ on the Freenode IRC +network. -Resist any temptation to mail the `django-developers mailing list`_ in an -attempt to get an answer to your question. django-developers_ is for discussing -the development of Django itself. Attempts to use django-developers_ as -a second-tier support mechanism will not be met an enthusiastic response. +You might notice we have a second mailing list, called django-developers_ -- +but please don't e-mail support questions to this mailing list. This list is +for discussion of the development of Django itself. Asking a tech support +question there is considered quite impolite. -.. _`django-developers mailing list`: http://groups.google.com/group/django-developers .. _django-developers: http://groups.google.com/group/django-developers I think I've found a bug! What should I do? @@ -708,15 +709,14 @@ Detailed instructions on how to handle a potential bug can be found in our I think I've found a security problem! What should I do? -------------------------------------------------------- -If you think you have found a security problem with Django, please send -a message to security@djangoproject.com. This is a private list only -open to long-time, highly trusted Django developers, and its archives -are not publicly readable. +If you think you've found a security problem with Django, please send a message +to security@djangoproject.com. This is a private list only open to long-time, +highly trusted Django developers, and its archives are not publicly readable. Due to the sensitive nature of security issues, we ask that if you think you -have found a security problem, *please* don't send a message to one of the +have found a security problem, *please* don't send a message to one of the public mailing lists. Django has a `policy for handling security issues`_; -while a defect is outstanding, we would like to minimize any damage that +while a defect is outstanding, we would like to minimize any damage that could be inflicted through public knowledge of that defect. .. _`policy for handling security issues`: ../contributing/#reporting-security-issues @@ -742,10 +742,10 @@ ignored" and "a ticket has not been attended to yet." Django's ticket system contains hundreds of open tickets, of various degrees of impact on end-user functionality, and Django's developers have to review and prioritize. -On top of that - the team working on Django are all volunteers. As a result, -the amount of time that we have to work on Django is limited, and will vary -from week to week depending on how much spare time we have. If we are busy, we -may not be able to spend as much time on Django as we might want. +On top of that: the people who work on Django are all volunteers. As a result, +the amount of time that we have to work on the framework is limited and will +vary from week to week depending on our spare time. If we're busy, we may not +be able to spend as much time on Django as we might want. Besides, if your feature request stands no chance of inclusion in Django, we won't ignore it -- we'll just close the ticket. So if your ticket is still diff --git a/docs/model-api.txt b/docs/model-api.txt index 57e366f959..2c497b30c2 100644 --- a/docs/model-api.txt +++ b/docs/model-api.txt @@ -669,7 +669,7 @@ unless you want to override the default primary-key behavior. If ``True``, this field must be unique throughout the table. This is enforced at the database level and at the Django admin-form level. If -you try to add save a model with a duplicate value in a ``unique`` field, a +you try to save a model with a duplicate value in a ``unique`` field, a ``django.db.IntegrityError`` will be raised by the model's ``save()`` method. ``unique_for_date`` diff --git a/docs/sessions.txt b/docs/sessions.txt index 86ed49f135..0c47f0deed 100644 --- a/docs/sessions.txt +++ b/docs/sessions.txt @@ -112,7 +112,7 @@ It also has these methods: Sets a test cookie to determine whether the user's browser supports cookies. Due to the way cookies work, you won't be able to test this - until the user's next page request. See "Setting test cookies" below for + until the user's next page request. See `Setting test cookies`_ below for more information. * ``test_cookie_worked()`` @@ -120,7 +120,7 @@ It also has these methods: Returns either ``True`` or ``False``, depending on whether the user's browser accepted the test cookie. Due to the way cookies work, you'll have to call ``set_test_cookie()`` on a previous, separate page request. - See "Setting test cookies" below for more information. + See `Setting test cookies`_ below for more information. * ``delete_test_cookie()`` @@ -139,10 +139,10 @@ It also has these methods: in 5 minutes. * If ``value`` is a ``datetime`` or ``timedelta`` object, the - session will expire at that specific time. - - * If ``value`` is ``0`` then the user's session cookie will expire - when their browser is closed. + session will expire at that specific date/time. + + * If ``value`` is ``0``, the user's session cookie will expire + when the user's Web browser is closed. * If ``value`` is ``None``, the session reverts to using the global session expiry policy. @@ -168,7 +168,7 @@ It also has these methods: **New in Django development version** Returns either ``True`` or ``False``, depending on whether the user's - session cookie will expire when their browser is closed. + session cookie will expire when the user's Web browser is closed. You can edit ``request.session`` at any point in your view. You can edit it multiple times. diff --git a/docs/settings.txt b/docs/settings.txt index 9b89c92343..02e458fcda 100644 --- a/docs/settings.txt +++ b/docs/settings.txt @@ -394,6 +394,8 @@ site with ``DEBUG`` turned on. DEBUG_PROPAGATE_EXCEPTIONS -------------------------- +**New in Django development version** + Default: ``False`` If set to True, Django's normal exception handling of view functions diff --git a/docs/templates.txt b/docs/templates.txt index ea9f3fb6b2..3b2c03766b 100644 --- a/docs/templates.txt +++ b/docs/templates.txt @@ -819,7 +819,7 @@ The 'ifchanged' block tag is used within a loop. It has two possible uses. 2. If given a variable, check whether that variable has changed. For example, the following shows the date every time it changes, but - only shows the hour if both the hour and the date has changed:: + only shows the hour if both the hour and the date have changed:: {% for date in days %} {% ifchanged date.date %} {{ date.date }} {% endifchanged %} diff --git a/docs/templates_python.txt b/docs/templates_python.txt index 43ef016ed4..a03ea215d2 100644 --- a/docs/templates_python.txt +++ b/docs/templates_python.txt @@ -1059,8 +1059,8 @@ Passing template variables to the tag Although you can pass any number of arguments to a template tag using ``token.split_contents()``, the arguments are all unpacked as -string literals. A little more work is required in order to dynamic content (a -template variable) to a template tag as an argument. +string literals. A little more work is required in order to pass dynamic +content (a template variable) to a template tag as an argument. While the previous examples have formatted the current time into a string and returned the string, suppose you wanted to pass in a ``DateTimeField`` from an @@ -1169,10 +1169,11 @@ Our earlier ``current_time`` function could thus be written like this:: In Python 2.4, the decorator syntax also works:: @register.simple_tag - def current_time(token): + def current_time(format_string): ... A couple of things to note about the ``simple_tag`` helper function: + * Checking for the required number of arguments, etc, has already been done by the time our function is called, so we don't need to do that. * The quotes around the argument (if any) have already been stripped away, diff --git a/docs/tutorial01.txt b/docs/tutorial01.txt index b84ecd5f7e..04863cc7fd 100644 --- a/docs/tutorial01.txt +++ b/docs/tutorial01.txt @@ -22,8 +22,8 @@ installed. .. admonition:: Where to get help: If you're having trouble going through this tutorial, please post a message - to `django-users`_ or drop by `#django`_ on ``irc.freenode.net`` and we'll - try to help. + to `django-users`_ or drop by `#django`_ on ``irc.freenode.net`` to chat + with other Django users who might be able to help. .. _django-users: http://groups.google.com/group/django-users .. _#django: irc://irc.freenode.net/django diff --git a/tests/modeltests/many_to_many/models.py b/tests/modeltests/many_to_many/models.py index e09fd825f8..c2ab2897b6 100644 --- a/tests/modeltests/many_to_many/models.py +++ b/tests/modeltests/many_to_many/models.py @@ -39,6 +39,14 @@ __test__ = {'API_TESTS':""" # Create an Article. >>> a1 = Article(id=None, headline='Django lets you build Web apps easily') + +# You can't associate it with a Publication until it's been saved. +>>> a1.publications.add(p1) +Traceback (most recent call last): +... +ValueError: 'Article' instance needs to have a primary key value before a many-to-many relationship can be used. + +# Save it! >>> a1.save() # Associate the Article with a Publication. diff --git a/tests/modeltests/many_to_one/models.py b/tests/modeltests/many_to_one/models.py index 53ad4466bb..dfb17b8344 100644 --- a/tests/modeltests/many_to_one/models.py +++ b/tests/modeltests/many_to_one/models.py @@ -175,6 +175,12 @@ False >>> Article.objects.filter(reporter__in=[r,r2]).distinct() [, , ] +# You can also use a queryset instead of a literal list of instances. +# The queryset must be reduced to a list of values using values(), +# then converted into a query +>>> Article.objects.filter(reporter__in=Reporter.objects.filter(first_name='John').values('pk').query).distinct() +[, ] + # You need two underscores between "reporter" and "id" -- not one. >>> Article.objects.filter(reporter_id__exact=1) Traceback (most recent call last): diff --git a/tests/regressiontests/forms/widgets.py b/tests/regressiontests/forms/widgets.py index fb0af1760b..379e05f028 100644 --- a/tests/regressiontests/forms/widgets.py +++ b/tests/regressiontests/forms/widgets.py @@ -772,7 +772,7 @@ True False >>> r[1].name, r[1].value, r[1].choice_value, r[1].choice_label ('beatle', u'J', u'P', u'Paul') ->>> r[10] +>>> r[10] # doctest: +IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): ... IndexError: list index out of range diff --git a/tests/regressiontests/queries/models.py b/tests/regressiontests/queries/models.py index 8c9334c849..aa78d6583a 100644 --- a/tests/regressiontests/queries/models.py +++ b/tests/regressiontests/queries/models.py @@ -507,6 +507,12 @@ True >>> [sorted(d.items()) for d in dicts] [[('id', 1), ('rank', 2)], [('id', 2), ('rank', 1)], [('id', 3), ('rank', 3)]] +Bug #7256 +# An empty values() call includes all aliases, including those from an extra() +>>> dicts = qs.values().order_by('id') +>>> [sorted(d.items()) for d in dicts] +[[('author_id', 2), ('good', 0), ('id', 1), ('rank', 2)], [('author_id', 3), ('good', 0), ('id', 2), ('rank', 1)], [('author_id', 1), ('good', 1), ('id', 3), ('rank', 3)]] + Bugs #2874, #3002 >>> qs = Item.objects.select_related().order_by('note__note', 'name') >>> list(qs) diff --git a/tests/regressiontests/urlpatterns_reverse/tests.py b/tests/regressiontests/urlpatterns_reverse/tests.py index 8f571ac66c..610c3f7bc7 100644 --- a/tests/regressiontests/urlpatterns_reverse/tests.py +++ b/tests/regressiontests/urlpatterns_reverse/tests.py @@ -17,6 +17,7 @@ test_data = ( ('^hardcoded/$', 'hardcoded/', [], {}), ('^hardcoded/$', 'hardcoded/', ['any arg'], {}), ('^hardcoded/$', 'hardcoded/', [], {'kwarg': 'foo'}), + ('^hardcoded/doc\\.pdf$', 'hardcoded/doc.pdf', [], {}), ('^people/(?P\w\w)/(?P\w+)/$', 'people/il/adrian/', [], {'state': 'il', 'name': 'adrian'}), ('^people/(?P\w\w)/(?P\d)/$', NoReverseMatch, [], {'state': 'il', 'name': 'adrian'}), ('^people/(?P\w\w)/(?P\w+)/$', NoReverseMatch, [], {'state': 'il'}),