From 4d52c80dd1b4c6aef9407b268ae720eeffd4d962 Mon Sep 17 00:00:00 2001 From: Joseph Kocherhans Date: Fri, 30 Nov 2007 04:32:25 +0000 Subject: [PATCH] newforms-admin: Merged from trunk up to [6670]. This is just before auto-escaping was checked in. git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@6761 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- AUTHORS | 2 + django/conf/locale/ca/LC_MESSAGES/django.mo | Bin 61430 -> 61655 bytes django/conf/locale/ca/LC_MESSAGES/django.po | 766 ++-- django/conf/locale/he/LC_MESSAGES/django.mo | Bin 61545 -> 62506 bytes django/conf/locale/he/LC_MESSAGES/django.po | 1009 +++-- django/conf/locale/sv/LC_MESSAGES/django.mo | Bin 47968 -> 48025 bytes django/conf/locale/sv/LC_MESSAGES/django.po | 78 +- django/conf/locale/sv/LC_MESSAGES/djangojs.mo | Bin 1680 -> 1674 bytes django/conf/locale/sv/LC_MESSAGES/djangojs.po | 6 +- .../conf/locale/zh_TW/LC_MESSAGES/django.mo | Bin 28397 -> 41345 bytes .../conf/locale/zh_TW/LC_MESSAGES/django.po | 3376 ++++++++++------- django/contrib/auth/decorators.py | 47 +- django/core/handlers/base.py | 28 +- django/core/handlers/modpython.py | 1 + django/core/handlers/wsgi.py | 2 + django/http/__init__.py | 1 + django/http/utils.py | 34 + django/middleware/http.py | 18 +- django/newforms/forms.py | 18 +- django/newforms/models.py | 25 +- django/test/client.py | 2 +- django/test/testcases.py | 8 +- django/utils/datastructures.py | 8 +- docs/sitemaps.txt | 2 +- tests/modeltests/model_forms/models.py | 36 +- tests/modeltests/test_client/models.py | 135 +- tests/modeltests/test_client/urls.py | 3 + tests/modeltests/test_client/views.py | 34 +- .../test_client_regress/models.py | 52 +- 29 files changed, 3598 insertions(+), 2093 deletions(-) create mode 100644 django/http/utils.py diff --git a/AUTHORS b/AUTHORS index 6475858519..e0e32af258 100644 --- a/AUTHORS +++ b/AUTHORS @@ -121,6 +121,7 @@ answer newbie questions, and generally made Django that much better: Marc Fargas Szilveszter Farkas favo@exoweb.net + Dmitri Fedortchenko Bill Fenner Stefane Fermgier Afonso Fernández Nogueira @@ -304,6 +305,7 @@ answer newbie questions, and generally made Django that much better: Tyler Tarabula Tyson Tate Frank Tegtmeyer + terryh.tp@gmail.com thebjorn Zach Thompson Michael Thornhill diff --git a/django/conf/locale/ca/LC_MESSAGES/django.mo b/django/conf/locale/ca/LC_MESSAGES/django.mo index 8f10d00c4e132d88f576fad482b740f49b15bdec..fdba04abd26960b8ed635342546275a0337242bb 100644 GIT binary patch delta 17705 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

i9?=0rV`aMVPKn59qyR6u=R)W8tzZ1sat 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

vSih2}hz*d6Kjf^ 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 diff --git a/django/conf/locale/ca/LC_MESSAGES/django.po b/django/conf/locale/ca/LC_MESSAGES/django.po index 26225d4269..9f561acc5b 100644 --- a/django/conf/locale/ca/LC_MESSAGES/django.po +++ b/django/conf/locale/ca/LC_MESSAGES/django.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-10-20 14:55+0200\n" -"PO-Revision-Date: 2007-10-20 15:22+0100\n" +"POT-Creation-Date: 2007-11-05 17:33+0100\n" +"PO-Revision-Date: 2007-11-05 17:34+0100\n" "Last-Translator: Marc Garcia \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -203,10 +203,8 @@ msgstr "" "

Per %s:

\n" "
    \n" -#: contrib/admin/filterspecs.py:72 -#: contrib/admin/filterspecs.py:90 -#: contrib/admin/filterspecs.py:145 -#: contrib/admin/filterspecs.py:171 +#: contrib/admin/filterspecs.py:72 contrib/admin/filterspecs.py:90 +#: contrib/admin/filterspecs.py:145 contrib/admin/filterspecs.py:171 msgid "All" msgstr "Tots" @@ -230,20 +228,17 @@ msgstr "Aquest mes" msgid "This year" msgstr "Aquest any" -#: contrib/admin/filterspecs.py:145 -#: newforms/widgets.py:205 +#: contrib/admin/filterspecs.py:145 newforms/widgets.py:221 #: oldforms/__init__.py:591 msgid "Yes" msgstr "Si" -#: contrib/admin/filterspecs.py:145 -#: newforms/widgets.py:205 +#: contrib/admin/filterspecs.py:145 newforms/widgets.py:221 #: oldforms/__init__.py:591 msgid "No" msgstr "No" -#: contrib/admin/filterspecs.py:152 -#: newforms/widgets.py:205 +#: contrib/admin/filterspecs.py:152 newforms/widgets.py:221 #: oldforms/__init__.py:591 msgid "Unknown" msgstr "Desconegut" @@ -315,8 +310,12 @@ msgid "Server Error (500)" msgstr "Error del servidor (500)" #: contrib/admin/templates/admin/500.html:10 -msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience." -msgstr "Hi ha hagut un error. S'ha informat als administradors del lloc per correu electrònic y hauria d'arreglar-se en breu. Gràcies per la seva paciència." +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 "" +"Hi ha hagut un error. S'ha informat als administradors del lloc per correu " +"electrònic y hauria d'arreglar-se en breu. Gràcies per la seva paciència." #: contrib/admin/templates/admin/base.html:26 msgid "Welcome," @@ -387,13 +386,23 @@ msgstr "Eliminar" #: 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 "Eliminar el/la %(object_name)s '%(escaped_object)s' provocaria l'eliminació d'objectes relacionats, però el seu compte no te permisos per a esborrar els tipus d'objecte següents:" +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"Eliminar el/la %(object_name)s '%(escaped_object)s' provocaria l'eliminació " +"d'objectes relacionats, però el seu compte no te permisos per a esborrar els " +"tipus d'objecte següents:" #: 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 "Està segur de voler esborrar els/les %(object_name)s \"%(escaped_object)s\"? S'esborraran els següents elements relacionats:" +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" +"Està segur de voler esborrar els/les %(object_name)s \"%(escaped_object)s\"? " +"S'esborraran els següents elements relacionats:" #: contrib/admin/templates/admin/delete_confirmation.html:25 msgid "Yes, I'm sure" @@ -439,8 +448,14 @@ msgid "None available" msgstr "Cap disponible" #: 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 "Alguna cosa està malament en la instal·lació de la teva base de dades. Assegurat de que s'han creat les taules, i de que la base de dades és llegible per l'usuari apropiat." +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 "" +"Alguna cosa està malament en la instal·lació de la teva base de dades. " +"Assegurat de que s'han creat les taules, i de que la base de dades és " +"llegible per l'usuari apropiat." #: contrib/admin/templates/admin/login.html:17 #: contrib/comments/templates/comments/form.html:6 @@ -475,8 +490,12 @@ msgid "DATE_WITH_TIME_FULL" msgstr "F j, Y, H:i " #: 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 "Aquest objecte no te historial de canvis. Probablement no va ser afegit utilitzant aquest lloc administratiu." +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Aquest objecte no te historial de canvis. Probablement no va ser afegit " +"utilitzant aquest lloc administratiu." #: contrib/admin/templates/admin/pagination.html:10 msgid "Show all" @@ -515,8 +534,12 @@ msgid "Save" msgstr "Desar" #: 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 "Primer, entri un usuari i una contrasenya. Després podrà editar més opcions del usuari." +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"Primer, entri un usuari i una contrasenya. Després podrà editar més opcions " +"del usuari." #: contrib/admin/templates/admin/auth/user/add_form.html:12 msgid "Username" @@ -561,28 +584,38 @@ msgid "" "your computer is \"internal\").

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

    Per a instalar 'bookmarklets', arrosegui l'enllaç a la seva barra de\n" -"marcadors, o faci click amb el botò dret en l'enllaç i afegeixi'l als marcadors.\n" +"

    Per a instalar 'bookmarklets', arrosegui l'enllaç a la " +"seva barra de\n" +"marcadors, o faci click amb el botò dret en l'enllaç i afegeixi'l als " +"marcadors.\n" "Ara pot escollir el 'bookmarklet' des de qualsevol pàgina del lloc.\n" "Observi que alguns d'aquests 'bookmarklets' precisen que estigui veient\n" "el lloc des de un ordinador senyalat com a \"intern\" (parli\n" -"amb el seu administrador de sistemes si no està segur de la condició del seu).

    \n" +"amb el seu administrador de sistemes si no està segur de la condició del " +"seu).

    \n" #: contrib/admin/templates/admin_doc/bookmarklets.html:18 msgid "Documentation for this page" msgstr "Documentació d'aquesta 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 "El porta des de qualsevol pàgina de la documentació a la vista que la genera." +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" +"El porta des de qualsevol pàgina de la documentació a la vista que la genera." #: contrib/admin/templates/admin_doc/bookmarklets.html:21 msgid "Show object ID" msgstr "Mostra el ID de l'objecte" #: contrib/admin/templates/admin_doc/bookmarklets.html:22 -msgid "Shows the content-type and unique ID for pages that represent a single object." -msgstr "Mostra el 'content-type' (tipus de contingut) i el ID inequívoc de les pàgines que representen un únic objecte." +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" +"Mostra el 'content-type' (tipus de contingut) i el ID inequívoc de les " +"pàgines que representen un únic objecte." #: contrib/admin/templates/admin_doc/bookmarklets.html:24 msgid "Edit this object (current window)" @@ -590,7 +623,9 @@ msgstr "Editar aquest objecte (finestra actual)" #: contrib/admin/templates/admin_doc/bookmarklets.html:25 msgid "Jumps to the admin page for pages that represent a single object." -msgstr "El porta a la pàgina d'administració de pàgines que representen un únic objecte." +msgstr "" +"El porta a la pàgina d'administració de pàgines que representen un únic " +"objecte." #: contrib/admin/templates/admin_doc/bookmarklets.html:27 msgid "Edit this object (new window)" @@ -625,8 +660,13 @@ msgid "Your password was changed." msgstr "La seva clau ha estat canviada." #: 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 "Si us plau, introdueixi la seva contrasenya antiga, per seguretat, i tot seguit introdueixi la seva nova contrasenya dues vegades per verificar que l'ha escrit correctament." +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 "" +"Si us plau, introdueixi la seva contrasenya antiga, per seguretat, i tot " +"seguit introdueixi la seva nova contrasenya dues vegades per verificar que " +"l'ha escrit correctament." #: contrib/admin/templates/registration/password_change_form.html:16 msgid "Old password:" @@ -657,12 +697,18 @@ msgid "Password reset successful" msgstr "Contrasenya restaber-ta amb èxit" #: 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 "Li hem enviat una contrasenya nova a l'adreça de correu electrònic que ens ha indicat. L'hauria de rebre en breu." +msgid "" +"We've e-mailed a new password to the e-mail address you submitted. You " +"should be receiving it shortly." +msgstr "" +"Li hem enviat una contrasenya nova a l'adreça de correu electrònic que ens " +"ha indicat. L'hauria de rebre en breu." #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" -msgstr "Està rebent aquest missatge degut a que va solicitar un restabliment de contrasenya." +msgstr "" +"Està rebent aquest missatge degut a que va solicitar un restabliment de " +"contrasenya." #: contrib/admin/templates/registration/password_reset_email.html:3 #, python-format @@ -692,8 +738,12 @@ msgid "The %(site_name)s team" msgstr "L'equip de %(site_name)s" #: contrib/admin/templates/registration/password_reset_form.html:12 -msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you." -msgstr "Ha oblidat la seva contrasenya? Introdueixi la seva adreça de correu electrònic i crearem una nova que li enviarem per correu." +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 oblidat la seva contrasenya? Introdueixi la seva adreça de correu " +"electrònic i crearem una nova que li enviarem per correu." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" @@ -723,14 +773,12 @@ msgstr "Modificar:" msgid "All dates" msgstr "Totes les dates" -#: contrib/admin/views/auth.py:20 -#: contrib/admin/views/main.py:264 +#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:264 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "El/la %(name)s \"%(obj)s\".ha estat agregat/da amb èxit." -#: contrib/admin/views/auth.py:25 -#: contrib/admin/views/main.py:268 +#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:268 #: contrib/admin/views/main.py:354 msgid "You may edit it again below." msgstr "Pot editar-lo de nou abaix." @@ -748,18 +796,30 @@ msgstr "Canvi de clau exitós" msgid "Change password: %s" msgstr "Canviar clau: %s" -#: contrib/admin/views/decorators.py:10 -#: contrib/auth/forms.py:60 -msgid "Please enter a correct username and password. Note that both fields are case-sensitive." -msgstr "Si us plau, introdueixi un nom d'usuari i contrasenya vàlids. Tingui en compte que tots dos camps son sensibles a majúscules i minúscules." +#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Si us plau, introdueixi un nom d'usuari i contrasenya vàlids. Tingui en " +"compte que tots dos camps son sensibles a majúscules i minúscules." #: contrib/admin/views/decorators.py:62 -msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved." -msgstr "Si us plau, identifiquis de nou doncs la seva sessió ha expirat. No es preocupi, el seu enviament està emmagatzemat." +msgid "" +"Please log in again, because your session has expired. Don't worry: Your " +"submission has been saved." +msgstr "" +"Si us plau, identifiquis de nou doncs la seva sessió ha expirat. No es " +"preocupi, el seu enviament està emmagatzemat." #: contrib/admin/views/decorators.py:69 -msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again." -msgstr "Sembla ser que el seu navegador no està configurat per acceptar 'cookies' (galetes). Si us plau, habiliti les 'cookies', recarregui aquesta pàgina i provi-ho de nou. " +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" +"Sembla ser que el seu navegador no està configurat per acceptar " +"'cookies' (galetes). Si us plau, habiliti les 'cookies', recarregui aquesta " +"pàgina i provi-ho de nou. " #: contrib/admin/views/decorators.py:83 msgid "Usernames cannot contain the '@' character." @@ -768,22 +828,20 @@ msgstr "Els noms d'usuari no poden contenir el caracter '@'." #: contrib/admin/views/decorators.py:85 #, python-format msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "La seva adreça de correu no és el seu nom d'usuari. Provi '%s' en tot cas." +msgstr "" +"La seva adreça de correu no és el seu nom d'usuari. Provi '%s' en tot cas." -#: contrib/admin/views/doc.py:47 -#: contrib/admin/views/doc.py:49 +#: contrib/admin/views/doc.py:47 contrib/admin/views/doc.py:49 #: contrib/admin/views/doc.py:51 msgid "tag:" msgstr "etiqueta:" -#: contrib/admin/views/doc.py:78 -#: contrib/admin/views/doc.py:80 +#: contrib/admin/views/doc.py:78 contrib/admin/views/doc.py:80 #: contrib/admin/views/doc.py:82 msgid "filter:" msgstr "filtre:" -#: contrib/admin/views/doc.py:136 -#: contrib/admin/views/doc.py:138 +#: contrib/admin/views/doc.py:136 contrib/admin/views/doc.py:138 #: contrib/admin/views/doc.py:140 msgid "view:" msgstr "vista:" @@ -803,10 +861,8 @@ msgstr "El model %(name)r no s'ha trobat en la aplicació %(label)r" msgid "the related `%(label)s.%(type)s` object" msgstr "el objecte relacionat `%(label)s.%(type)s`" -#: contrib/admin/views/doc.py:184 -#: contrib/admin/views/doc.py:206 -#: contrib/admin/views/doc.py:220 -#: contrib/admin/views/doc.py:225 +#: contrib/admin/views/doc.py:184 contrib/admin/views/doc.py:206 +#: contrib/admin/views/doc.py:220 contrib/admin/views/doc.py:225 msgid "model:" msgstr "model:" @@ -830,12 +886,9 @@ msgstr "nombre de %s" msgid "Fields on %s objects" msgstr "Camps en objectes %s" -#: contrib/admin/views/doc.py:292 -#: contrib/admin/views/doc.py:303 -#: contrib/admin/views/doc.py:305 -#: contrib/admin/views/doc.py:311 -#: contrib/admin/views/doc.py:312 -#: contrib/admin/views/doc.py:314 +#: contrib/admin/views/doc.py:292 contrib/admin/views/doc.py:303 +#: contrib/admin/views/doc.py:305 contrib/admin/views/doc.py:311 +#: contrib/admin/views/doc.py:312 contrib/admin/views/doc.py:314 msgid "Integer" msgstr "Enter" @@ -843,8 +896,7 @@ msgstr "Enter" msgid "Boolean (Either True or False)" msgstr "Booleà (Verdader o Fals)" -#: contrib/admin/views/doc.py:294 -#: contrib/admin/views/doc.py:313 +#: contrib/admin/views/doc.py:294 contrib/admin/views/doc.py:313 #, python-format msgid "String (up to %(max_length)s)" msgstr "Cadena (de fins a %(max_length)s)" @@ -869,8 +921,7 @@ msgstr "Número decimal" msgid "E-mail address" msgstr "Adreça de correu electrònic" -#: contrib/admin/views/doc.py:300 -#: contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:300 contrib/admin/views/doc.py:301 #: contrib/admin/views/doc.py:304 msgid "File path" msgstr "Ruta del fitxer" @@ -879,8 +930,7 @@ msgstr "Ruta del fitxer" msgid "Floating point number" msgstr "Número amb punt de coma flotant" -#: contrib/admin/views/doc.py:306 -#: contrib/comments/models.py:85 +#: contrib/admin/views/doc.py:306 contrib/comments/models.py:85 msgid "IP address" msgstr "Adreça IP" @@ -904,8 +954,7 @@ msgstr "Texte" msgid "Time" msgstr "Hora" -#: contrib/admin/views/doc.py:317 -#: contrib/flatpages/models.py:7 +#: contrib/admin/views/doc.py:317 contrib/flatpages/models.py:7 msgid "URL" msgstr "URL" @@ -926,8 +975,7 @@ msgstr "%s no sembla ser un objecte 'urlpattern'" msgid "Site administration" msgstr "Lloc administratiu" -#: contrib/admin/views/main.py:278 -#: contrib/admin/views/main.py:363 +#: contrib/admin/views/main.py:278 contrib/admin/views/main.py:363 #, python-format msgid "You may add another %s below." msgstr "Pot afegir un altre %s a baix." @@ -942,10 +990,8 @@ msgstr "Afegir %s" msgid "Added %s." msgstr "Agregat %s." -#: contrib/admin/views/main.py:342 -#: contrib/admin/views/main.py:344 -#: contrib/admin/views/main.py:346 -#: core/validators.py:283 +#: contrib/admin/views/main.py:342 contrib/admin/views/main.py:344 +#: contrib/admin/views/main.py:346 core/validators.py:283 #: db/models/manipulators.py:309 msgid "and" msgstr "i" @@ -971,8 +1017,10 @@ msgstr "S'ha modificat amb èxist el/la %(name)s \"%(obj)s." #: contrib/admin/views/main.py:360 #, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "S'ha agregat amb èxit el/la %(name)s \"%(obj)s\". Pot editar-lo de nou abaix." +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" +"S'ha agregat amb èxit el/la %(name)s \"%(obj)s\". Pot editar-lo de nou abaix." #: contrib/admin/views/main.py:398 #, python-format @@ -1017,8 +1065,7 @@ msgstr "Seleccioni %s per modificar" msgid "Database error" msgstr "Error de/en la base de dades" -#: contrib/auth/forms.py:17 -#: contrib/auth/forms.py:138 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 msgid "The two password fields didn't match." msgstr "Els dos camps de contrasenya no coincideixen." @@ -1027,16 +1074,29 @@ msgid "A user with that username already exists." msgstr "Ja existeix un usuari amb aquest nom." #: contrib/auth/forms.py:53 -msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in." -msgstr "El seu navegador no sembla tenir les 'cookies' (galetes) activades. Aquestes són necessàries per iniciar la sessió." +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"El seu navegador no sembla tenir les 'cookies' (galetes) activades. Aquestes " +"són necessàries per iniciar la sessió." #: contrib/auth/forms.py:62 msgid "This account is inactive." msgstr "Aquest compte està inactiu" #: contrib/auth/forms.py:84 -msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?" -msgstr "Aquesta adreça de correu no té associada cap compte d'usuari. Està segur de que s'ha registrat?" +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Aquesta adreça de correu no té associada cap compte d'usuari. Està segur de " +"que s'ha registrat?" + +#: contrib/auth/forms.py:107 +#, python-format +msgid "Password reset on %s" +msgstr "Restablir contrasenya en %s" #: contrib/auth/forms.py:117 msgid "The two 'new password' fields didn't match." @@ -1044,10 +1104,10 @@ msgstr "Els dos camps de nova contrasenya no coincideixen." #: contrib/auth/forms.py:124 msgid "Your old password was entered incorrectly. Please enter it again." -msgstr "La seva antiga contrasenya no és correcte. Si el plau, introdueixi-la de nou." +msgstr "" +"La seva antiga contrasenya no és correcte. Si el plau, introdueixi-la de nou." -#: contrib/auth/models.py:73 -#: contrib/auth/models.py:93 +#: contrib/auth/models.py:73 contrib/auth/models.py:93 msgid "name" msgstr "nom" @@ -1059,8 +1119,7 @@ msgstr "nom en clau" msgid "permission" msgstr "permís" -#: contrib/auth/models.py:79 -#: contrib/auth/models.py:94 +#: contrib/auth/models.py:79 contrib/auth/models.py:94 msgid "permissions" msgstr "permissos" @@ -1068,8 +1127,7 @@ msgstr "permissos" msgid "group" msgstr "grup" -#: contrib/auth/models.py:98 -#: contrib/auth/models.py:141 +#: contrib/auth/models.py:98 contrib/auth/models.py:141 msgid "groups" msgstr "grups" @@ -1078,8 +1136,12 @@ msgid "username" msgstr "nom d'usuari" #: contrib/auth/models.py:131 -msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)." -msgstr "Requerit. 30 o menys caracters. Només caracters alfanumèrics (lletres, dígits i guions baixos)." +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +"Requerit. 30 o menys caracters. Només caracters alfanumèrics (lletres, " +"dígits i guions baixos)." #: contrib/auth/models.py:132 msgid "first name" @@ -1098,8 +1160,12 @@ msgid "password" msgstr "contrasenya" #: contrib/auth/models.py:135 -msgid "Use '[algo]$[salt]$[hexdigest]' or use the change password form." -msgstr "Utilitzi '[algo]$[salt]$[hexdigest]' o el formulari de canvi de contrasenya." +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"Utilitzi '[algo]$[salt]$[hexdigest]' o el formulari de " +"canvi de contrasenya." #: contrib/auth/models.py:136 msgid "staff status" @@ -1114,16 +1180,24 @@ msgid "active" msgstr "actiu" #: contrib/auth/models.py:137 -msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts." -msgstr "Designa si aquest usuari pot iniciar sessió a la interfície administrativa Djano. Deselecciona-ho enlloc de esborrar comptes d'usuari." +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"Designa si aquest usuari pot iniciar sessió a la interfície administrativa " +"Djano. Deselecciona-ho enlloc de esborrar comptes d'usuari." #: contrib/auth/models.py:138 msgid "superuser status" msgstr "estat de superusuari" #: contrib/auth/models.py:138 -msgid "Designates that this user has all permissions without explicitly assigning them." -msgstr "Designa que aquest usuari té tots els permisos sense assignar-los explícitament." +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Designa que aquest usuari té tots els permisos sense assignar-los " +"explícitament." #: contrib/auth/models.py:139 msgid "last login" @@ -1134,8 +1208,12 @@ msgid "date joined" msgstr "data de creació" #: 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 "Junt amb els permissos asignats manualment, aquest usuari tindrà, també, els permissos dels grups dels que sigui membre." +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Junt amb els permissos asignats manualment, aquest usuari tindrà, també, els " +"permissos dels grups dels que sigui membre." #: contrib/auth/models.py:143 msgid "user permissions" @@ -1173,8 +1251,7 @@ msgstr "missatge" msgid "Logged out" msgstr "Sessió finalitzada" -#: contrib/comments/models.py:67 -#: contrib/comments/models.py:169 +#: contrib/comments/models.py:67 contrib/comments/models.py:169 msgid "object ID" msgstr "ID de l'objecte" @@ -1182,8 +1259,7 @@ msgstr "ID de l'objecte" msgid "headline" msgstr "encapçalament" -#: contrib/comments/models.py:69 -#: contrib/comments/models.py:90 +#: contrib/comments/models.py:69 contrib/comments/models.py:90 #: contrib/comments/models.py:170 msgid "comment" msgstr "comentari" @@ -1224,13 +1300,11 @@ msgstr "qualificació #8" msgid "is valid rating" msgstr "és qualificació vàlida" -#: contrib/comments/models.py:83 -#: contrib/comments/models.py:172 +#: contrib/comments/models.py:83 contrib/comments/models.py:172 msgid "date/time submitted" msgstr "data/hora d'enviament" -#: contrib/comments/models.py:84 -#: contrib/comments/models.py:173 +#: contrib/comments/models.py:84 contrib/comments/models.py:173 msgid "is public" msgstr "és públic" @@ -1239,15 +1313,18 @@ msgid "is removed" msgstr "està eliminat" #: contrib/comments/models.py:86 -msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead." -msgstr "Marqui aquesta caixa si el comentari no és apropiat. En lloc seu es mostrarà \"Aquest comentari ha estat eliminat\" " +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"Marqui aquesta caixa si el comentari no és apropiat. En lloc seu es mostrarà " +"\"Aquest comentari ha estat eliminat\" " #: contrib/comments/models.py:91 msgid "comments" msgstr "comentaris" -#: contrib/comments/models.py:134 -#: contrib/comments/models.py:213 +#: contrib/comments/models.py:134 contrib/comments/models.py:213 msgid "Content object" msgstr "Objecte Contingut" @@ -1389,25 +1466,30 @@ msgid "Your name:" msgstr "El seu nom:" #: contrib/comments/views/comments.py:28 -msgid "This rating is required because you've entered at least one other rating." +msgid "" +"This rating is required because you've entered at least one other rating." msgstr "Es precisa aquesta puntuació perquè has introduït almenys un altre." #: 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" +"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" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" "\n" "%(text)s" msgstr[0] "" -"Aquest comentari ha estat publicat per un usuari que ha publicat menys de %(count)s comentari:\n" +"Aquest comentari ha estat publicat per un usuari que ha publicat menys de %" +"(count)s comentari:\n" "\n" "%(text)s" msgstr[1] "" -"Aquest comentari ha estat publicat per un usuari que ha publicat menys de %(count)s comentaris:\n" +"Aquest comentari ha estat publicat per un usuari que ha publicat menys de %" +"(count)s comentaris:\n" "\n" "%(text)s" @@ -1435,17 +1517,23 @@ msgstr "Un o més dels caps requerits no ha estat sotmès" #: contrib/comments/views/comments.py:198 #: contrib/comments/views/comments.py:289 msgid "Somebody tampered with the comment form (security violation)" -msgstr "Algú està jugant amb el formulari de comentaris (violació de seguretat)" +msgstr "" +"Algú està jugant amb el formulari de comentaris (violació de seguretat)" #: 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 "El formulari de comentaris tenia un paràmetre 'target' invàlid -- el ID del objecte era invàlid" +msgid "" +"The comment form had an invalid 'target' parameter -- the object ID was " +"invalid" +msgstr "" +"El formulari de comentaris tenia un paràmetre 'target' invàlid -- el ID del " +"objecte era invàlid" #: contrib/comments/views/comments.py:259 #: contrib/comments/views/comments.py:324 msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "El formulari del comentari no ha proveït ni 'previsualitzar' ni 'enviar'" +msgstr "" +"El formulari del comentari no ha proveït ni 'previsualitzar' ni 'enviar'" #: contrib/comments/views/karma.py:21 msgid "Anonymous users cannot vote" @@ -1472,8 +1560,11 @@ msgid "content types" msgstr "tipus de continguts" #: contrib/flatpages/models.py:8 -msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "Exemple: '/about/contact/'. Asseguri's de posar les barres al principi i al final." +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Exemple: '/about/contact/'. Asseguri's de posar les barres al principi i al " +"final." #: contrib/flatpages/models.py:9 msgid "title" @@ -1492,8 +1583,12 @@ msgid "template name" msgstr "nom de la plantilla" #: contrib/flatpages/models.py:13 -msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'." -msgstr "Exemple: 'flatpages/contact_page.html'. Si no el proporciona, el sistema utilitzarà 'flatpages/defaula.htmlt'." +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Exemple: 'flatpages/contact_page.html'. Si no el proporciona, el sistema " +"utilitzarà 'flatpages/defaula.htmlt'." #: contrib/flatpages/models.py:14 msgid "registration required" @@ -1596,15 +1691,12 @@ msgstr "demà" msgid "yesterday" msgstr "ahir" -#: contrib/localflavor/ar/forms.py:30 -#: contrib/localflavor/ar/forms.py:38 +#: contrib/localflavor/ar/forms.py:30 contrib/localflavor/ar/forms.py:38 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Introdueixi un codi postal en el format NNNN or ANNNNAAA." -#: contrib/localflavor/ar/forms.py:61 -#: contrib/localflavor/br/forms.py:103 -#: contrib/localflavor/pe/forms.py:34 -#: contrib/localflavor/pe/forms.py:57 +#: contrib/localflavor/ar/forms.py:61 contrib/localflavor/br/forms.py:103 +#: contrib/localflavor/pe/forms.py:34 contrib/localflavor/pe/forms.py:57 msgid "This field requires only numbers." msgstr "Aquest camps requereix només números." @@ -1614,7 +1706,8 @@ msgstr "Aquest camp requereix 7 o 8 dígits." #: contrib/localflavor/ar/forms.py:75 msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." -msgstr "Introdueixi un número CUIT vàlid en el format XX-XXXXXXXX-X o XXXXXXXXXXXX." +msgstr "" +"Introdueixi un número CUIT vàlid en el format XX-XXXXXXXX-X o XXXXXXXXXXXX." #: contrib/localflavor/ar/forms.py:88 msgid "Invalid CUIT." @@ -1633,8 +1726,12 @@ msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "El número de telèfon ha de ser en el format XX-XXXX-XXXX." #: contrib/localflavor/br/forms.py:68 -msgid "Select a valid brazilian state. That state is not one of the available states." -msgstr "Seleccioni un estat brasiler vàlid. Aquest estat no és un dels estats disponibles." +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." +msgstr "" +"Seleccioni un estat brasiler vàlid. Aquest estat no és un dels estats " +"disponibles." #: contrib/localflavor/br/forms.py:105 msgid "This field requires at most 11 digits or 14 characters." @@ -1658,7 +1755,9 @@ msgstr "Introdueixi un codi postal en el format XXX XXX." #: contrib/localflavor/ca/forms.py:81 msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXXX format." -msgstr "Introdueixi un número vàlid de la Seguretat Social de Canada en el format XXX-XXX-XXXX." +msgstr "" +"Introdueixi un número vàlid de la Seguretat Social de Canada en el format " +"XXX-XXX-XXXX." #: contrib/localflavor/ch/ch_states.py:5 msgid "Aargau" @@ -1764,14 +1863,17 @@ msgstr "Zug" msgid "Zurich" msgstr "Zurich" -#: contrib/localflavor/ch/forms.py:18 -#: contrib/localflavor/no/forms.py:14 +#: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:14 msgid "Enter a zip code in the format XXXX." msgstr "Introdueixi un codi zip en el format XXXX." #: contrib/localflavor/ch/forms.py:90 -msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format." -msgstr "Introdueixi un número de identificació o de passaport Suïssos en els formats 1234567890 o X1234567<0." +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" +"Introdueixi un número de identificació o de passaport Suïssos en els formats " +"1234567890 o X1234567<0." #: contrib/localflavor/cl/forms.py:32 msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X." @@ -1845,15 +1947,18 @@ msgstr "Schleswig-Holstein" msgid "Thuringia" msgstr "Thuringia" -#: contrib/localflavor/de/forms.py:16 -#: contrib/localflavor/fi/forms.py:14 +#: contrib/localflavor/de/forms.py:16 contrib/localflavor/fi/forms.py:14 #: contrib/localflavor/fr/forms.py:17 msgid "Enter a zip code in the format XXXXX." msgstr "Introdueixi un codi zip en el format XXXXX." #: contrib/localflavor/de/forms.py:60 -msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format." -msgstr "Introdueixi un número de tarjeta d'identificació alemany vàlid en el format XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" +"Introdueixi un número de tarjeta d'identificació alemany vàlid en el format " +"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." #: contrib/localflavor/es/es_provinces.py:5 msgid "Arava" @@ -2127,11 +2232,14 @@ msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." msgstr "Introdueixi un codi postal en rang i format 01XXX - 52XXX." #: contrib/localflavor/es/forms.py:39 -msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX." -msgstr "Introdueixi un número de telèfon vàlid en un dels formats 6XXXXXXXX, 8XXXXXXXX o 9XXXXXXXX." +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "" +"Introdueixi un número de telèfon vàlid en un dels formats 6XXXXXXXX, " +"8XXXXXXXX o 9XXXXXXXX." -#: contrib/localflavor/es/forms.py:73 -#: contrib/localflavor/es/forms.py:108 +#: contrib/localflavor/es/forms.py:73 contrib/localflavor/es/forms.py:108 #: db/models/fields/related.py:55 #, python-format msgid "Please enter a valid %s." @@ -2150,15 +2258,17 @@ msgid "Invalid checksum for CIF." msgstr "Validació invàlida del CIF." #: contrib/localflavor/es/forms.py:136 -msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." -msgstr "Introdueixi un número de compte bancari vàlid en el format XXXX-XXXX-XX-XXXXXXXXXX." +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "" +"Introdueixi un número de compte bancari vàlid en el format XXXX-XXXX-XX-" +"XXXXXXXXXX." #: contrib/localflavor/es/forms.py:150 msgid "Invalid checksum for bank account number." msgstr "Validació invàlida del número de compte bancari." -#: contrib/localflavor/fi/forms.py:40 -#: contrib/localflavor/fi/forms.py:45 +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 msgid "Enter a valid Finnish social security number." msgstr "Introdueixi un número vàlid de la seguretat social finlandesa." @@ -2167,8 +2277,10 @@ msgid "Enter a zip code in the format XXXXXXX." msgstr "Introdueixi un codi zip en el format XXXXXXX." #: contrib/localflavor/is_/forms.py:17 -msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." -msgstr "Introdueixi un número de identificació d'Islàndia. El format és XXXXXX-XXXX." +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" +"Introdueixi un número de identificació d'Islàndia. El format és XXXXXX-XXXX." #: contrib/localflavor/is_/forms.py:31 msgid "The Icelandic identification number is not valid." @@ -2459,7 +2571,8 @@ msgid "Wrong checksum for the National Identification Number." msgstr "Validació invàlida del número d'identificació nacional." #: 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." +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." msgstr "Introdueixi un número NIP en el format XXX-XXX-XX-XX o XX-XX-XXX-XXX." #: contrib/localflavor/pl/forms.py:78 @@ -2468,7 +2581,8 @@ msgstr "Validació invàlida del número tributari (NIP)." #: contrib/localflavor/pl/forms.py:107 msgid "National Business Register Number (REGON) consists of 7 or 9 digits." -msgstr "El número nacional de registre de negocis (REGON) consisteix en 7 o 9 dígits." +msgstr "" +"El número nacional de registre de negocis (REGON) consisteix en 7 o 9 dígits." #: contrib/localflavor/pl/forms.py:113 msgid "Wrong checksum for the National Business Register Number (REGON)." @@ -2896,7 +3010,9 @@ msgstr "Regió de Zilina" #: contrib/localflavor/uk/forms.py:18 msgid "Enter a postcode. A space is required between the two postcode parts." -msgstr "Introdueixi un codi postal. És necessari un espai entre les dues parts del codi postal." +msgstr "" +"Introdueixi un codi postal. És necessari un espai entre les dues parts del " +"codi postal." #: contrib/localflavor/us/forms.py:18 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." @@ -2904,23 +3020,33 @@ msgstr "Introdueixi un codi zip en el format XXXXX o XXXXX-XXXX." #: contrib/localflavor/us/forms.py:51 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." -msgstr "Introdueixi un número vàlid de la Seguretat Social dels E.U.A. en el format XXX-XX-XXXX." +msgstr "" +"Introdueixi un número vàlid de la Seguretat Social dels E.U.A. en el format " +"XXX-XX-XXXX." #: contrib/redirects/models.py:7 msgid "redirect from" msgstr "redreçar des de" #: contrib/redirects/models.py:8 -msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." -msgstr "Aquesta ruta hauria de ser el camí absolut, excloent-ne el nom del domini. Exemple '/events/search/'." +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Aquesta ruta hauria de ser el camí absolut, excloent-ne el nom del domini. " +"Exemple '/events/search/'." #: contrib/redirects/models.py:9 msgid "redirect to" msgstr "redreçar a" #: contrib/redirects/models.py:10 -msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." -msgstr "Això pot ser bé una ruta absoluta (com abans) o una URL completa que comenci per http:// ." +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Això pot ser bé una ruta absoluta (com abans) o una URL completa que comenci " +"per http:// ." #: contrib/redirects/models.py:13 msgid "redirect" @@ -2971,12 +3097,17 @@ msgid "This value must contain only letters, numbers and underscores." msgstr "Aquest valor ha de contenir només números, guions, i guions baixos." #: core/validators.py:76 -msgid "This value must contain only letters, numbers, underscores, dashes or slashes." -msgstr "Aquest valor ha de contenir només lletres, números, guions, guions baixos, i barres (/)." +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"Aquest valor ha de contenir només lletres, números, guions, guions baixos, i " +"barres (/)." #: core/validators.py:80 msgid "This value must contain only letters, numbers, underscores or hyphens." -msgstr "Aquest valor ha de contenir només lletres, números, guions o guions baixos" +msgstr "" +"Aquest valor ha de contenir només lletres, números, guions o guions baixos" #: core/validators.py:84 msgid "Uppercase letters are not allowed here." @@ -3010,8 +3141,7 @@ msgstr "No s'admeten caracters no numèrics." msgid "This value can't be comprised solely of digits." msgstr "Aquest valor no pot contenir només dígits." -#: core/validators.py:128 -#: newforms/fields.py:149 +#: core/validators.py:128 newforms/fields.py:157 msgid "Enter a whole number." msgstr "Introdueixi un número sencer." @@ -3028,8 +3158,7 @@ msgstr "L'any ha de ser posterior al 1900" msgid "Invalid date: %s" msgstr "Data invàlida: %s" -#: core/validators.py:156 -#: db/models/fields/__init__.py:505 +#: core/validators.py:156 db/models/fields/__init__.py:509 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Introdueixi una data vàlida en el forma AAAA-MM-DD." @@ -3037,27 +3166,27 @@ msgstr "Introdueixi una data vàlida en el forma AAAA-MM-DD." msgid "Enter a valid time in HH:MM format." msgstr "Introdueixi una hora vàlida en el format HH:MM." -#: core/validators.py:165 -#: db/models/fields/__init__.py:579 +#: core/validators.py:165 db/models/fields/__init__.py:583 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "Introdueixi un data/hora vàlida en format YYYY-MM-DD HH:MM." -#: core/validators.py:170 -#: newforms/fields.py:343 +#: core/validators.py:170 newforms/fields.py:408 msgid "Enter a valid e-mail address." msgstr "Introdueixi una adreça de correu vàlida." -#: core/validators.py:182 -#: core/validators.py:474 -#: newforms/fields.py:377 +#: core/validators.py:182 core/validators.py:474 newforms/fields.py:438 #: oldforms/__init__.py:686 msgid "No file was submitted. Check the encoding type on the form." -msgstr "No s'ha enviat cap fitxer. Comprovi el tipus de codificació del formulari." +msgstr "" +"No s'ha enviat cap fitxer. Comprovi el tipus de codificació del formulari." -#: core/validators.py:193 -#: newforms/fields.py:405 -msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." -msgstr "Envii una imatge vàilda. El fitxer que ha enviat no era una imatge o estaba corrupte." +#: core/validators.py:193 newforms/fields.py:462 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Envii una imatge vàilda. El fitxer que ha enviat no era una imatge o estaba " +"corrupte." #: core/validators.py:200 #, python-format @@ -3067,7 +3196,9 @@ msgstr "La URL %s no apunta una imatge vàlida." #: core/validators.py:204 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "El números de telèfon han de guardar-se en el format XXX-XXX-XXXX. \"%s\" no és vàlid." +msgstr "" +"El números de telèfon han de guardar-se en el format XXX-XXX-XXXX. \"%s\" no " +"és vàlid." #: core/validators.py:212 #, python-format @@ -3097,8 +3228,7 @@ msgstr "XML incorrectament formatejat: %s" msgid "Invalid URL: %s" msgstr "URL invalida: %s" -#: core/validators.py:259 -#: core/validators.py:261 +#: core/validators.py:259 core/validators.py:261 #, python-format msgid "The URL %s is a broken link." msgstr "La URL %sés un enllaç trencat." @@ -3123,8 +3253,7 @@ msgstr "Aquest camp ha de concordar amb el camp '%s'." msgid "Please enter something for at least one field." msgstr "Si us plau, introdueixi alguna cosa alemnys en un camp." -#: core/validators.py:316 -#: core/validators.py:327 +#: core/validators.py:316 core/validators.py:327 msgid "Please enter both fields or leave them both empty." msgstr "Si us plau, ompli els dos camps o deixi'ls tots dos en blanc." @@ -3169,23 +3298,37 @@ msgstr "Si us plau, introdueixi un número decimal vàlid." #: 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] "Si us plau, introdueixi un número decimal vàlid de com a màxim %s digit." -msgstr[1] "Si us plau, introdueixi un número decimal vàlid de com a màxim %s digits." +msgid_plural "" +"Please enter a valid decimal number with at most %s total digits." +msgstr[0] "" +"Si us plau, introdueixi un número decimal vàlid de com a màxim %s digit." +msgstr[1] "" +"Si us plau, introdueixi un número decimal vàlid de com a màxim %s digits." #: 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] "Si us plau, introdueixi un número decimal vàlid que la seva part sencera sigui de com a màxim %s digit." -msgstr[1] "Si us plau, introdueixi un número decimal vàlid que la seva part sencera sigui de com a màxim %s digits." +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] "" +"Si us plau, introdueixi un número decimal vàlid que la seva part sencera " +"sigui de com a màxim %s digit." +msgstr[1] "" +"Si us plau, introdueixi un número decimal vàlid que la seva part sencera " +"sigui de com a màxim %s digits." #: 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] "Si us plau, introdueixi un número decimal vàlid de com a màxim %s posició decimal." -msgstr[1] "Si us plau, introdueixi un número decimal vàlid de com a màxim %s posicions decimals." +msgid_plural "" +"Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "" +"Si us plau, introdueixi un número decimal vàlid de com a màxim %s posició " +"decimal." +msgstr[1] "" +"Si us plau, introdueixi un número decimal vàlid de com a màxim %s posicions " +"decimals." #: core/validators.py:458 msgid "Please enter a valid floating point number." @@ -3216,38 +3359,65 @@ msgstr "No s'ha pogut obtenir res de %s." #: core/validators.py:539 #, python-format -msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." -msgstr "La URL %(url)s ha va tornar la capcelera Content-Type '%(contenttype)s', que no és vàlida." +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" +"La URL %(url)s ha va tornar la capcelera Content-Type '%(contenttype)s', que " +"no és vàlida." #: core/validators.py:572 #, python-format -msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)" -msgstr "Si us plau, tanqui l'etiqueta %(tag)s des de la línia %(line)s. (La línia comença amb \"%(start)s\".)" +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Si us plau, tanqui l'etiqueta %(tag)s des de la línia %(line)s. (La línia " +"comença amb \"%(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 "Part del text que comença en la línia %(line)s no està permès en aquest context. (La línia comença per \"%(start)s\".)" +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Part del text que comença en la línia %(line)s no està permès en aquest " +"context. (La línia comença per \"%(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 "El \"%(attr)s\" de la línia %(line)s no és un atribut vàlid. (La línia comença per \"%(start)s\".)" +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"El \"%(attr)s\" de la línia %(line)s no és un atribut vàlid. (La línia " +"comença per \"%(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 "La \"<%(tag)s>\" de la línia %(line)s no és una etiqueta vàlida. (La línia comença per \"%(start)s\".)" +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"La \"<%(tag)s>\" de la línia %(line)s no és una etiqueta vàlida. (La línia " +"comença per \"%(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 "Una etiqueta de la línia %(line)s li falta un o més atributs requerits.(La línia comença per \"%(start)s\".)" +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Una etiqueta de la línia %(line)s li falta un o més atributs requerits.(La " +"línia comença per \"%(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 "L'atribut \"%(attr)s\" de la línia %(line)s té un valor que no és vàlid. (La línia comença per \"%(start)s\".)" +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"L'atribut \"%(attr)s\" de la línia %(line)s té un valor que no és vàlid. (La " +"línia comença per \"%(start)s\".)" #: db/models/manipulators.py:308 #, python-format @@ -3259,40 +3429,33 @@ msgstr "Ja existeix un %(object)s del tipus %(type)s amb aquest %(field)s." msgid "%(optname)s with this %(fieldname)s already exists." msgstr "Ja existeix %(optname)s amb auqest %(fieldname)s." -#: db/models/fields/__init__.py:159 -#: db/models/fields/__init__.py:316 -#: db/models/fields/__init__.py:731 -#: db/models/fields/__init__.py:742 -#: newforms/fields.py:93 -#: newforms/fields.py:513 -#: newforms/fields.py:589 -#: newforms/fields.py:600 -#: newforms/models.py:193 -#: oldforms/__init__.py:373 +#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:318 +#: db/models/fields/__init__.py:735 db/models/fields/__init__.py:746 +#: newforms/fields.py:45 newforms/models.py:211 oldforms/__init__.py:373 msgid "This field is required." msgstr "Aquest camp és obligatori." -#: db/models/fields/__init__.py:414 +#: db/models/fields/__init__.py:418 msgid "This value must be an integer." msgstr "Aquest valor ha de ser un enter." -#: db/models/fields/__init__.py:450 +#: db/models/fields/__init__.py:454 msgid "This value must be either True or False." msgstr "Aquest valor ha de ser True (Veritat) o False (Fals)" -#: db/models/fields/__init__.py:471 +#: db/models/fields/__init__.py:475 msgid "This field cannot be null." msgstr "Aquest camp no pot ser null (estar buit)." -#: db/models/fields/__init__.py:640 +#: db/models/fields/__init__.py:644 msgid "This value must be a decimal number." msgstr "Aquest valor ha de ser un número decimal." -#: db/models/fields/__init__.py:751 +#: db/models/fields/__init__.py:755 msgid "Enter a valid filename." msgstr "Introdueixi un nom de fitxer vàlid." -#: db/models/fields/__init__.py:900 +#: db/models/fields/__init__.py:904 msgid "This value must be either None, True or False." msgstr "Aquest valor ha de ser None (Cap), True (Veritat) o False (Fals)" @@ -3301,117 +3464,120 @@ msgid "Separate multiple IDs with commas." msgstr "Separi múltiples IDs amb comes." #: db/models/fields/related.py:660 -msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "Premi \"Control\" o \"Command\" en un Mac per escollir més d'un." #: db/models/fields/related.py:707 #, 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] "Si us plau, introdueixi els IDs de %(self)s vàlids. El valor %(value)r és invàlid." -msgstr[1] "Si us plau, introdueixi IDs de %(self)s vàlids. Els valors %(value)r són invàlids." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "" +"Si us plau, introdueixi els IDs de %(self)s vàlids. El valor %(value)r és " +"invàlid." +msgstr[1] "" +"Si us plau, introdueixi IDs de %(self)s vàlids. Els valors %(value)r són " +"invàlids." -#: newforms/fields.py:123 +#: newforms/fields.py:46 +msgid "Enter a valid value." +msgstr "Introdueixi un valor vàlid." + +#: newforms/fields.py:129 #, python-format msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." -msgstr "Asseguris de que el valor té com a màxim %(max)d caràcters (en té %(length)d)." +msgstr "" +"Asseguris de que el valor té com a màxim %(max)d caràcters (en té %(length)" +"d)." -#: newforms/fields.py:125 +#: newforms/fields.py:130 #, python-format msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." -msgstr "Asseguris de que el valor té com a mínim %(min)d caràcters (en té %(length)d)." +msgstr "" +"Asseguris de que el valor té com a mínim %(min)d caràcters (en té %(length)" +"d)." -#: newforms/fields.py:151 -#: newforms/fields.py:174 -#: newforms/fields.py:204 +#: newforms/fields.py:158 newforms/fields.py:187 newforms/fields.py:216 #, python-format msgid "Ensure this value is less than or equal to %s." msgstr "Aquest valor ha de ser menor o igual a %s." -#: newforms/fields.py:153 -#: newforms/fields.py:176 -#: newforms/fields.py:206 +#: newforms/fields.py:159 newforms/fields.py:188 newforms/fields.py:217 #, python-format msgid "Ensure this value is greater than or equal to %s." msgstr "Asseguris de que aquest valor sigui superior o igual a %s." -#: newforms/fields.py:172 -#: newforms/fields.py:199 +#: newforms/fields.py:186 newforms/fields.py:215 msgid "Enter a number." msgstr "Introdueixi un número." -#: newforms/fields.py:208 +#: newforms/fields.py:218 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Asseguris de que no hi ha més de %s dígits en total." -#: newforms/fields.py:210 +#: newforms/fields.py:219 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Asseguris de que no hi ha més de %s decimals." -#: newforms/fields.py:212 +#: newforms/fields.py:220 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Asseguris de que no hia ha més de %s dígits decimals." -#: newforms/fields.py:245 -#: newforms/fields.py:633 +#: newforms/fields.py:268 newforms/fields.py:724 msgid "Enter a valid date." msgstr "Introdueixi una data vàlida." -#: newforms/fields.py:272 -#: newforms/fields.py:635 +#: newforms/fields.py:301 newforms/fields.py:725 msgid "Enter a valid time." msgstr "Introdueixi una hora vàlida." -#: newforms/fields.py:308 +#: newforms/fields.py:340 msgid "Enter a valid date/time." msgstr "Introdueixi una data/hora vàlides." -#: newforms/fields.py:321 -msgid "Enter a valid value." -msgstr "Introdueixi un valor vàlid." - -#: newforms/fields.py:379 +#: newforms/fields.py:439 msgid "No file was submitted." msgstr "No s'ha enviat cap fitxer." -#: newforms/fields.py:381 -#: oldforms/__init__.py:688 +#: newforms/fields.py:440 oldforms/__init__.py:688 msgid "The submitted file is empty." msgstr "El fitxer enviat està buit." -#: newforms/fields.py:419 -#: newforms/fields.py:444 +#: newforms/fields.py:498 msgid "Enter a valid URL." msgstr "Introdueixi una URL vàlida." -#: newforms/fields.py:446 +#: newforms/fields.py:499 msgid "This URL appears to be a broken link." msgstr "Aquesta URL sembla ser un enllaç trencat." -#: newforms/fields.py:501 -#: newforms/models.py:180 +#: newforms/fields.py:560 newforms/models.py:194 msgid "Select a valid choice. That choice is not one of the available choices." -msgstr "Esculli una opció vàlida; Aquesta opció no és una de les opcions disponibles." +msgstr "" +"Esculli una opció vàlida; Aquesta opció no és una de les opcions disponibles." -#: newforms/fields.py:517 -#: newforms/fields.py:593 -#: newforms/models.py:197 +#: newforms/fields.py:599 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "Esculli una opció vàlida. %(value)s no és una de les opcions vàlides." + +#: newforms/fields.py:600 newforms/fields.py:662 newforms/models.py:215 msgid "Enter a list of values." msgstr "Introdueixi una llista de valors." -#: newforms/fields.py:523 -#: newforms/models.py:203 +#: newforms/fields.py:753 +msgid "Enter a valid IPv4 address." +msgstr "Introdueixi una adreça IPv4 vàlida." + +#: newforms/models.py:221 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "Esculli una opció vàlida; %s' no és una de les opcions vàlides." -#: newforms/fields.py:644 -msgid "Enter a valid IPv4 address." -msgstr "Introdueixi una adreça IPv4 vàlida." - #: oldforms/__init__.py:408 #, python-format msgid "Ensure your text is less than %s character." @@ -3423,9 +3589,7 @@ msgstr[1] "Asseguris de que el seu texte té menys de %s caracters." msgid "Line breaks are not allowed here." msgstr "No es permeten salts de línia." -#: oldforms/__init__.py:511 -#: oldforms/__init__.py:585 -#: oldforms/__init__.py:624 +#: oldforms/__init__.py:511 oldforms/__init__.py:585 oldforms/__init__.py:624 #, python-format msgid "Select a valid choice; '%(data)s' is not in %(choices)s." msgstr "Esculli una opció vàlida; %(data)s' no està dintre de %(choices)s." @@ -3442,28 +3606,28 @@ msgstr "Introdueixi un número positiu." msgid "Enter a whole number between 0 and 32,767." msgstr "Introdueixi un número entre 0 i 32,767." -#: template/defaultfilters.py:541 +#: template/defaultfilters.py:555 msgid "yes,no,maybe" msgstr "si,no,potser" -#: template/defaultfilters.py:570 +#: template/defaultfilters.py:585 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d byte" msgstr[1] "%(size)d bytes" -#: template/defaultfilters.py:572 +#: template/defaultfilters.py:587 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:574 +#: template/defaultfilters.py:589 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:575 +#: template/defaultfilters.py:590 #, python-format msgid "%.1f GB" msgstr "%.1f GB" @@ -3556,28 +3720,23 @@ msgstr "Gener" msgid "February" msgstr "Febrer" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "March" msgstr "Març" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "April" msgstr "Abril" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "May" msgstr "Maig" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "June" msgstr "Juny" -#: utils/dates.py:19 -#: utils/dates.py:31 +#: utils/dates.py:19 utils/dates.py:31 msgid "July" msgstr "Juliol" @@ -3731,23 +3890,23 @@ msgstr "%(number)d %(type)s" msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:391 +#: utils/translation/trans_real.py:395 msgid "DATE_FORMAT" msgstr "F j, Y" -#: utils/translation/trans_real.py:392 +#: utils/translation/trans_real.py:396 msgid "DATETIME_FORMAT" msgstr "F j, Y, H:i" -#: utils/translation/trans_real.py:393 +#: utils/translation/trans_real.py:397 msgid "TIME_FORMAT" msgstr "H:i" -#: utils/translation/trans_real.py:409 +#: utils/translation/trans_real.py:413 msgid "YEAR_MONTH_FORMAT" msgstr "j de/d' F del Y" -#: utils/translation/trans_real.py:410 +#: utils/translation/trans_real.py:414 msgid "MONTH_DAY_FORMAT" msgstr "j de/d' F del Y" @@ -3782,8 +3941,10 @@ msgstr "El %(verbose_name)s s'ha eliminat." #~ "(count)s comentaris:\n" #~ "\n" #~ "%(text)s" + #~ msgid "AnonymousUser" #~ msgstr "AnonymousUser" + #~ msgid "" #~ "Please enter a valid decimal number with a whole part of at most %s digit." #~ "Please enter a valid decimal number with a whole part of at most %s " @@ -3792,6 +3953,7 @@ msgstr "El %(verbose_name)s s'ha eliminat." #~ "Si us plau, introdueixi un número decimal vàlid amb la part entera amb " #~ "com a màxim %s dígit.Si us plau, introdueixi un número decimal vàlid amb " #~ "la part entera amb com a màxim %s dígits." + #~ msgid "" #~ "Please enter a valid decimal number with at most %s decimal place.Please " #~ "enter a valid decimal number with at most %s decimal places." @@ -3799,6 +3961,6 @@ msgstr "El %(verbose_name)s s'ha eliminat." #~ "Si us plau, introdueixi un número decimal vàlid amb no més de %s dígit en " #~ "la part decimal.Si us plau, introdueixi un número decimal vàlid amb no " #~ "més de %s dígits en la part decimal." + #~ msgid "%d milliseconds" #~ msgstr "%d milisegons" - diff --git a/django/conf/locale/he/LC_MESSAGES/django.mo b/django/conf/locale/he/LC_MESSAGES/django.mo index 49ea931fef82de5e3d3f255d562d2ceec3244e0d..9f4e1245276daccae2f7855771f81bfebb1cfe7a 100644 GIT binary patch delta 17643 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 delta 17324 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 diff --git a/django/conf/locale/he/LC_MESSAGES/django.po b/django/conf/locale/he/LC_MESSAGES/django.po index c0646a5518..191a06cab7 100644 --- a/django/conf/locale/he/LC_MESSAGES/django.po +++ b/django/conf/locale/he/LC_MESSAGES/django.po @@ -8,13 +8,13 @@ msgid "" msgstr "" "Project-Id-Version: Django 0.95\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-10-05 18:10+0200\n" +"POT-Creation-Date: 2007-11-10 02:19+0200\n" "PO-Revision-Date: 2007-10-07 01:31+0200\n" "Last-Translator: Meir Kriheli \n" "Language-Team: Hebrew \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit" +"Content-Transfer-Encoding: 8bit\n" #: conf/global_settings.py:39 msgid "Arabic" @@ -205,10 +205,8 @@ msgstr "" "

    ע\"י %s:

    \n" "
      \n" -#: contrib/admin/filterspecs.py:72 -#: contrib/admin/filterspecs.py:90 -#: contrib/admin/filterspecs.py:145 -#: contrib/admin/filterspecs.py:171 +#: contrib/admin/filterspecs.py:72 contrib/admin/filterspecs.py:90 +#: contrib/admin/filterspecs.py:145 contrib/admin/filterspecs.py:171 msgid "All" msgstr "הכל" @@ -232,20 +230,17 @@ msgstr "החודש" msgid "This year" msgstr "השנה" -#: contrib/admin/filterspecs.py:145 -#: newforms/widgets.py:198 +#: contrib/admin/filterspecs.py:145 newforms/widgets.py:221 #: oldforms/__init__.py:591 msgid "Yes" msgstr "כן" -#: contrib/admin/filterspecs.py:145 -#: newforms/widgets.py:198 +#: contrib/admin/filterspecs.py:145 newforms/widgets.py:221 #: oldforms/__init__.py:591 msgid "No" msgstr "לא" -#: contrib/admin/filterspecs.py:152 -#: newforms/widgets.py:198 +#: contrib/admin/filterspecs.py:152 newforms/widgets.py:221 #: oldforms/__init__.py:591 msgid "Unknown" msgstr "לא ידוע" @@ -317,8 +312,11 @@ msgid "Server Error (500)" msgstr "שגיאת שרת (500)" #: contrib/admin/templates/admin/500.html:10 -msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience." -msgstr "התרחשה שגיאה. היא דווחה למנהלי האתר בדוא\"ל ותתוקן בקרוב. תודה על סבלנותך." +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"התרחשה שגיאה. היא דווחה למנהלי האתר בדוא\"ל ותתוקן בקרוב. תודה על סבלנותך." #: contrib/admin/templates/admin/base.html:26 msgid "Welcome," @@ -365,7 +363,9 @@ msgstr "צפיה באתר" #: contrib/admin/templates/admin/change_form.html:31 #: contrib/admin/templates/admin/auth/user/change_password.html:23 msgid "Please correct the error below." -msgstr "נא לתקן את השגיאה המופיעה מתחת." +msgid_plural "Please correct the errors below." +msgstr[0] "נא לתקן את השגיאה המופיעה מתחת." +msgstr[1] "נא לתקן את השגיאות המופיעה מתחת." #: contrib/admin/templates/admin/change_form.html:49 msgid "Ordering" @@ -387,13 +387,22 @@ msgstr "מחיקה" #: 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 "מחיקת %(object_name)s '%(escaped_object)s' מצריכה מחיקת אובייקטים מקושרים, אך לחשבון שלך אין הרשאות למחיקתסוגי האובייקטים הבאים:" +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 "" +"מחיקת %(object_name)s '%(escaped_object)s' מצריכה מחיקת אובייקטים מקושרים, " +"אך לחשבון שלך אין הרשאות למחיקתסוגי האובייקטים הבאים:" #: 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 "האם ברצונך למחוק את %(object_name)s \"%(escaped_object)s\"? כל הפריטים הקשורים הבאים יימחקו:" +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 "" +"האם ברצונך למחוק את %(object_name)s \"%(escaped_object)s\"? כל הפריטים " +"הקשורים הבאים יימחקו:" #: contrib/admin/templates/admin/delete_confirmation.html:25 msgid "Yes, I'm sure" @@ -439,8 +448,13 @@ msgid "None available" msgstr "לא נמצאו" #: 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 "משהו שגוי בהתקנת בסיס הנתונים שלך. נא לוודא שנוצרו טבלאות בסיס הנתונים המתאימות, ובסיס הנתונים ניתן לקריאה על ידי המשתמש המתאים." +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 "" +"משהו שגוי בהתקנת בסיס הנתונים שלך. נא לוודא שנוצרו טבלאות בסיס הנתונים " +"המתאימות, ובסיס הנתונים ניתן לקריאה על ידי המשתמש המתאים." #: contrib/admin/templates/admin/login.html:17 #: contrib/comments/templates/comments/form.html:6 @@ -475,8 +489,11 @@ msgid "DATE_WITH_TIME_FULL" msgstr "l d.m.y H:i:s" #: 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 "לאובייקט זה אין היסטוריית שינוי. כנראה לא השתמשו בממשק הניהול הזה להוספתו." +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"לאובייקט זה אין היסטוריית שינוי. כנראה לא השתמשו בממשק הניהול הזה להוספתו." #: contrib/admin/templates/admin/pagination.html:10 msgid "Show all" @@ -489,7 +506,9 @@ msgstr "בצע" #: contrib/admin/templates/admin/search_form.html:10 #, python-format msgid "1 result" -msgstr "תוצאה אחת" +msgid_plural "%(counter)s results" +msgstr[0] "תוצאה אחת" +msgstr[1] "%(counter)s תוצאות" #: contrib/admin/templates/admin/search_form.html:10 #, python-format @@ -513,8 +532,12 @@ msgid "Save" msgstr "שמירה" #: 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 "ראשית יש להזין שם משתמש וסיסמה. לאחר מכן יהיה ביכולתך לערוך אפשרויותנוספות עבור המשתמש" +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"ראשית יש להזין שם משתמש וסיסמה. לאחר מכן יהיה ביכולתך לערוך אפשרויותנוספות " +"עבור המשתמש" #: contrib/admin/templates/admin/auth/user/add_form.html:12 msgid "Username" @@ -571,7 +594,9 @@ msgid "Documentation for this page" msgstr "תיעוד לדף זה" #: contrib/admin/templates/admin_doc/bookmarklets.html:19 -msgid "Jumps you from any page to the documentation for the view that generates that page." +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 @@ -579,7 +604,9 @@ msgid "Show object ID" msgstr "הצג מזהה אובייקט" #: contrib/admin/templates/admin_doc/bookmarklets.html:22 -msgid "Shows the content-type and unique ID for pages that represent a single object." +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." msgstr "מציג את סוג התוכן והמזהה הייחודי לעמודים המייצגים אובייקט בודד." #: contrib/admin/templates/admin_doc/bookmarklets.html:24 @@ -623,8 +650,12 @@ msgid "Your password was changed." msgstr "סיסמתך שונתה." #: 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 "נא להזין את סיסמתך הישנה, למען האבטחה, ולאחר מכן את סיסמתךהחדשה פעמיים כדי שנוכל לוודא שהקלדת אותה כראוי." +msgid "" +"Please enter your old password, for security's sake, and then enter your new " +"password twice so we can verify you typed it in correctly." +msgstr "" +"נא להזין את סיסמתך הישנה, למען האבטחה, ולאחר מכן את סיסמתךהחדשה פעמיים כדי " +"שנוכל לוודא שהקלדת אותה כראוי." #: contrib/admin/templates/registration/password_change_form.html:16 msgid "Old password:" @@ -655,8 +686,11 @@ msgid "Password reset successful" msgstr "הסיסמה אופסה בהצלחה" #: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly." -msgstr "שלחנו את הסיסמה החדשה לכתובת הדוא\"ל שהזנת. היא אמורה להתקבל תוך זמן קצר." +msgid "" +"We've e-mailed a new password to the e-mail address you submitted. You " +"should be receiving it shortly." +msgstr "" +"שלחנו את הסיסמה החדשה לכתובת הדוא\"ל שהזנת. היא אמורה להתקבל תוך זמן קצר." #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" @@ -690,8 +724,12 @@ msgid "The %(site_name)s team" msgstr "צוות %(site_name)s" #: 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 "שכחת את סיסמתך ? נא להזין את כתובת הדוא\"ל מתחת, אנו נאפסאת הסיסמה ונשלח את החדשה אליך." +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "" +"שכחת את סיסמתך ? נא להזין את כתובת הדוא\"ל מתחת, אנו נאפסאת הסיסמה ונשלח את " +"החדשה אליך." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" @@ -721,14 +759,12 @@ msgstr "שינוי:" msgid "All dates" msgstr "כל התאריכים" -#: contrib/admin/views/auth.py:20 -#: contrib/admin/views/main.py:264 +#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:264 #, python-format msgid "The %(name)s \"%(obj)s\" was added successfully." msgstr "הוספת %(name)s \"%(obj)s\" בוצעה בהצלחה." -#: contrib/admin/views/auth.py:25 -#: contrib/admin/views/main.py:268 +#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:268 #: contrib/admin/views/main.py:354 msgid "You may edit it again below." msgstr "ניתן לערוך שוב מתחת" @@ -746,18 +782,27 @@ msgstr "הסיסמה שונתה בהצלחה." msgid "Change password: %s" msgstr "שינוי סיסמה: %s" -#: contrib/admin/views/decorators.py:10 -#: contrib/auth/forms.py:60 -msgid "Please enter a correct username and password. Note that both fields are case-sensitive." -msgstr "נא להזין שם משתמש וסיסמה נכונים. בשני השדות גודל האותיות האנגליות משנה." +#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"נא להזין שם משתמש וסיסמה נכונים. בשני השדות גודל האותיות האנגליות משנה." #: contrib/admin/views/decorators.py:62 -msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved." -msgstr "נא להתחבר שוב, מאחר ופג תוקף ההתחברות הנוכחית. אל דאגה: המידע ששלחת נשמר." +msgid "" +"Please log in again, because your session has expired. Don't worry: Your " +"submission has been saved." +msgstr "" +"נא להתחבר שוב, מאחר ופג תוקף ההתחברות הנוכחית. אל דאגה: המידע ששלחת נשמר." #: contrib/admin/views/decorators.py:69 -msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again." -msgstr "נראה שהדפדפן שלך אינו מוגדר לקבל עוגיות. נא לאפשר עוגיות, לטעון מחדש את הדף ולנסות שוב." +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" +"נראה שהדפדפן שלך אינו מוגדר לקבל עוגיות. נא לאפשר עוגיות, לטעון מחדש את הדף " +"ולנסות שוב." #: contrib/admin/views/decorators.py:83 msgid "Usernames cannot contain the '@' character." @@ -768,20 +813,17 @@ msgstr "שם משתמש אינו יכול להכיל את התו '@'." msgid "Your e-mail address is not your username. Try '%s' instead." msgstr "כתובת הדוא\"ל שלך אינה שם המשתמש שלך. נסה/י '%s' במקום." -#: contrib/admin/views/doc.py:47 -#: contrib/admin/views/doc.py:49 +#: contrib/admin/views/doc.py:47 contrib/admin/views/doc.py:49 #: contrib/admin/views/doc.py:51 msgid "tag:" msgstr "תג:" -#: contrib/admin/views/doc.py:78 -#: contrib/admin/views/doc.py:80 +#: contrib/admin/views/doc.py:78 contrib/admin/views/doc.py:80 #: contrib/admin/views/doc.py:82 msgid "filter:" msgstr "סינון:" -#: contrib/admin/views/doc.py:136 -#: contrib/admin/views/doc.py:138 +#: contrib/admin/views/doc.py:136 contrib/admin/views/doc.py:138 #: contrib/admin/views/doc.py:140 msgid "view:" msgstr "צפיה (view):" @@ -801,10 +843,8 @@ msgstr "מודל %(name)r לא נמצא ביישום %(label)r" msgid "the related `%(label)s.%(type)s` object" msgstr "האובייקט `%(label)s.%(type)s` הקשור" -#: contrib/admin/views/doc.py:184 -#: contrib/admin/views/doc.py:206 -#: contrib/admin/views/doc.py:220 -#: contrib/admin/views/doc.py:225 +#: contrib/admin/views/doc.py:184 contrib/admin/views/doc.py:206 +#: contrib/admin/views/doc.py:220 contrib/admin/views/doc.py:225 msgid "model:" msgstr "מודל:" @@ -828,12 +868,9 @@ msgstr "מספר %s" msgid "Fields on %s objects" msgstr "Fields on %s objects" -#: contrib/admin/views/doc.py:292 -#: contrib/admin/views/doc.py:303 -#: contrib/admin/views/doc.py:305 -#: contrib/admin/views/doc.py:311 -#: contrib/admin/views/doc.py:312 -#: contrib/admin/views/doc.py:314 +#: contrib/admin/views/doc.py:292 contrib/admin/views/doc.py:303 +#: contrib/admin/views/doc.py:305 contrib/admin/views/doc.py:311 +#: contrib/admin/views/doc.py:312 contrib/admin/views/doc.py:314 msgid "Integer" msgstr "מספר שלם" @@ -841,8 +878,7 @@ msgstr "מספר שלם" msgid "Boolean (Either True or False)" msgstr "בוליאני (אמת או שקר)" -#: contrib/admin/views/doc.py:294 -#: contrib/admin/views/doc.py:313 +#: contrib/admin/views/doc.py:294 contrib/admin/views/doc.py:313 #, python-format msgid "String (up to %(max_length)s)" msgstr "מחרוזת (עד %(max_length)s תווים)" @@ -867,8 +903,7 @@ msgstr "מספר עשרוני" msgid "E-mail address" msgstr "כתובת דוא\"ל" -#: contrib/admin/views/doc.py:300 -#: contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:300 contrib/admin/views/doc.py:301 #: contrib/admin/views/doc.py:304 msgid "File path" msgstr "נתיב קובץ" @@ -877,8 +912,7 @@ msgstr "נתיב קובץ" msgid "Floating point number" msgstr "מספר עשרוני" -#: contrib/admin/views/doc.py:306 -#: contrib/comments/models.py:85 +#: contrib/admin/views/doc.py:306 contrib/comments/models.py:85 msgid "IP address" msgstr "כתובת IP" @@ -902,8 +936,7 @@ msgstr "טקסט" msgid "Time" msgstr "זמן" -#: contrib/admin/views/doc.py:317 -#: contrib/flatpages/models.py:7 +#: contrib/admin/views/doc.py:317 contrib/flatpages/models.py:7 msgid "URL" msgstr "URL" @@ -924,8 +957,7 @@ msgstr "לא נראה ש-%s הוא אובייקט urlpattern" msgid "Site administration" msgstr "ניהול אתר" -#: contrib/admin/views/main.py:278 -#: contrib/admin/views/main.py:363 +#: contrib/admin/views/main.py:278 contrib/admin/views/main.py:363 #, python-format msgid "You may add another %s below." msgstr "ניתן להוסיף %s נוסף מתחת." @@ -940,10 +972,8 @@ msgstr "הוספת %s" msgid "Added %s." msgstr "%s התווסף." -#: contrib/admin/views/main.py:342 -#: contrib/admin/views/main.py:344 -#: contrib/admin/views/main.py:346 -#: core/validators.py:283 +#: contrib/admin/views/main.py:342 contrib/admin/views/main.py:344 +#: contrib/admin/views/main.py:346 core/validators.py:283 #: db/models/manipulators.py:309 msgid "and" msgstr "ו" @@ -969,7 +999,8 @@ msgstr "שינוי %(name)s \"%(obj)s\" בוצע בהצלחה." #: contrib/admin/views/main.py:360 #, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." msgstr "הוספת %(name)s \"%(obj)s\" בוצעה בהצלחה. ניתן לערוך אותו שוב מתחת." #: contrib/admin/views/main.py:398 @@ -1015,8 +1046,7 @@ msgstr "בחירת %s לשינוי" msgid "Database error" msgstr "שגיאת בסיס נתונים" -#: contrib/auth/forms.py:17 -#: contrib/auth/forms.py:138 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 msgid "The two password fields didn't match." msgstr "שני שדות הסיסמה אינם זהים." @@ -1025,7 +1055,9 @@ msgid "A user with that username already exists." msgstr "משתמש עם שם משתמש זה קיים כבר" #: contrib/auth/forms.py:53 -msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in." +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." msgstr "נראה שעוגיות לא מאופשרות בדפדפן שלך.הן נדרשות כדי להתחבר." #: contrib/auth/forms.py:62 @@ -1033,9 +1065,16 @@ msgid "This account is inactive." msgstr "חשבון זה אינו פעיל." #: contrib/auth/forms.py:84 -msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?" +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" msgstr "כתובת דואר אלקטרוני זו אינה משוייכת למשתמש. בטוח שנרשמת ?" +#: contrib/auth/forms.py:107 +#, python-format +msgid "Password reset on %s" +msgstr "איפוס סיסמה על %s" + #: contrib/auth/forms.py:117 msgid "The two 'new password' fields didn't match." msgstr "שני שדות 'הסיסמה החדשה' אינם זהים." @@ -1044,8 +1083,7 @@ msgstr "שני שדות 'הסיסמה החדשה' אינם זהים." msgid "Your old password was entered incorrectly. Please enter it again." msgstr "סיסמתך הישנה הוזנה בצורה השגויה. נא להזינה שוב." -#: contrib/auth/models.py:73 -#: contrib/auth/models.py:93 +#: contrib/auth/models.py:73 contrib/auth/models.py:93 msgid "name" msgstr "שם" @@ -1057,8 +1095,7 @@ msgstr "שם קוד" msgid "permission" msgstr "הרשאה" -#: contrib/auth/models.py:79 -#: contrib/auth/models.py:94 +#: contrib/auth/models.py:79 contrib/auth/models.py:94 msgid "permissions" msgstr "הרשאות" @@ -1066,8 +1103,7 @@ msgstr "הרשאות" msgid "group" msgstr "קבוצה" -#: contrib/auth/models.py:98 -#: contrib/auth/models.py:141 +#: contrib/auth/models.py:98 contrib/auth/models.py:141 msgid "groups" msgstr "קבוצות" @@ -1076,8 +1112,11 @@ msgid "username" msgstr "שם משתמש" #: contrib/auth/models.py:131 -msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)." -msgstr "דורש 30 תווים או פחות. תווים אלפאנומריים בלבד (אותיות, ספרות וקווים תחתונים)." +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +"דורש 30 תווים או פחות. תווים אלפאנומריים בלבד (אותיות, ספרות וקווים תחתונים)." #: contrib/auth/models.py:132 msgid "first name" @@ -1096,8 +1135,12 @@ msgid "password" msgstr "סיסמה" #: contrib/auth/models.py:135 -msgid "Use '[algo]$[salt]$[hexdigest]' or use the change password form." -msgstr "יש להזין '[algo]$[salt]$[hexdigest]' או להשתמש בטופס שינוי הסיסמה." +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"יש להזין '[algo]$[salt]$[hexdigest]' או להשתמש בטופס " +"שינוי הסיסמה." #: contrib/auth/models.py:136 msgid "staff status" @@ -1112,15 +1155,21 @@ msgid "active" msgstr "פעיל" #: contrib/auth/models.py:137 -msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts." -msgstr "מציין האם המשתמש יכול להתחבר לאתר הניהול. יש לבטל בחירה זובמקום למחוק חשבונות משתמשים." +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "" +"מציין האם המשתמש יכול להתחבר לאתר הניהול. יש לבטל בחירה זובמקום למחוק " +"חשבונות משתמשים." #: contrib/auth/models.py:138 msgid "superuser status" msgstr "סטטוס משתמש על" #: contrib/auth/models.py:138 -msgid "Designates that this user has all permissions without explicitly assigning them." +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." msgstr "מציין שלמשתמש זה יש את כל ההרשאות ללא הצורך המפורש בהענקתן." #: contrib/auth/models.py:139 @@ -1132,8 +1181,12 @@ msgid "date joined" msgstr "תאריך הצטרפות" #: 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 "בנוסף לכל ההרשאות שהוקצו ידנית, יוענקו למשתמש גם כל ההרשאות של כל קבוצה המשוייכת אליו." +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"בנוסף לכל ההרשאות שהוקצו ידנית, יוענקו למשתמש גם כל ההרשאות של כל קבוצה " +"המשוייכת אליו." #: contrib/auth/models.py:143 msgid "user permissions" @@ -1171,8 +1224,7 @@ msgstr "הודעה" msgid "Logged out" msgstr "יצאת מהמערכת" -#: contrib/comments/models.py:67 -#: contrib/comments/models.py:169 +#: contrib/comments/models.py:67 contrib/comments/models.py:169 msgid "object ID" msgstr "מזהה אובייקט" @@ -1180,8 +1232,7 @@ msgstr "מזהה אובייקט" msgid "headline" msgstr "כותרת" -#: contrib/comments/models.py:69 -#: contrib/comments/models.py:90 +#: contrib/comments/models.py:69 contrib/comments/models.py:90 #: contrib/comments/models.py:170 msgid "comment" msgstr "תגובה" @@ -1222,13 +1273,11 @@ msgstr "דירוג #8" msgid "is valid rating" msgstr "האם דירוג חוקי" -#: contrib/comments/models.py:83 -#: contrib/comments/models.py:172 +#: contrib/comments/models.py:83 contrib/comments/models.py:172 msgid "date/time submitted" msgstr "תאריך/שעת הגשה" -#: contrib/comments/models.py:84 -#: contrib/comments/models.py:173 +#: contrib/comments/models.py:84 contrib/comments/models.py:173 msgid "is public" msgstr "ציבורי" @@ -1237,15 +1286,17 @@ msgid "is removed" msgstr "האם הוסר" #: contrib/comments/models.py:86 -msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead." -msgstr "יש לסמן תיבה זו עבור תגובה לא נאותה. הודעת \"תגובה זו נמחקה\" תוצג במקום." +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"יש לסמן תיבה זו עבור תגובה לא נאותה. הודעת \"תגובה זו נמחקה\" תוצג במקום." #: contrib/comments/models.py:91 msgid "comments" msgstr "תגובות" -#: contrib/comments/models.py:134 -#: contrib/comments/models.py:213 +#: contrib/comments/models.py:134 contrib/comments/models.py:213 msgid "Content object" msgstr "אובייקט תוכן" @@ -1387,21 +1438,30 @@ msgid "Your name:" msgstr "שמך:" #: contrib/comments/views/comments.py:28 -msgid "This rating is required because you've entered at least one other rating." +msgid "" +"This rating is required because you've entered at least one other rating." msgstr "הדירוג נדרש מאחר והזנת לפחות דרוג אחד אחר." #: 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)sThis comment was posted by a user who has posted fewer than %(count)s comments:\n" +"This comment was posted by a user who has posted fewer than %(count)s " +"comment:\n" "\n" "%(text)s" -msgstr "" -"תגובה זו נשלחה ממשתמש ששלח פחות מ-%(count)s תגובה:\n" +msgid_plural "" +"This comment was posted by a user who has posted fewer than %(count)s " +"comments:\n" "\n" -"%(text)sתגובה זו נשלחה ממשתמש ששלח פחות מ-%(count)s תגובות:\n" +"%(text)s" +msgstr[0] "" +"ההודעה נשלחה ע\"י משתמש ששלח פחות מ-%(count)s " +"תגובה:\n" +"\n" +"%(text)s" +msgstr[1] "" +"ההודעה נשלחה ע\"י משתמש ששלח פחות מ-%(count)s " +"תגובות:\n" "\n" "%(text)s" @@ -1433,7 +1493,9 @@ msgstr "מישהו התעסק עם טופס התגובה (הפרת אבטחה)" #: 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" +msgid "" +"The comment form had an invalid 'target' parameter -- the object ID was " +"invalid" msgstr "טופס התגובה הכיל פרמטר target לא חוקי -- מזהה האובייקט אינו חוקי" #: contrib/comments/views/comments.py:259 @@ -1466,8 +1528,10 @@ msgid "content types" msgstr "סוגי תוכן" #: contrib/flatpages/models.py:8 -msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "לדוגמא: '/about/contact/'. יש לוודא הימצאות הקווים הנטויים בהתחלה ובסוף." +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"לדוגמא: '/about/contact/'. יש לוודא הימצאות הקווים הנטויים בהתחלה ובסוף." #: contrib/flatpages/models.py:9 msgid "title" @@ -1486,8 +1550,12 @@ msgid "template name" msgstr "שם תבנית" #: contrib/flatpages/models.py:13 -msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'." -msgstr "דוגמא: 'flatpages/contact_page.html'. אם זה לא צויין, המערכת תשתמש ב-'flatpages/default.html'." +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"דוגמא: 'flatpages/contact_page.html'. אם זה לא צויין, המערכת תשתמש " +"ב-'flatpages/default.html'." #: contrib/flatpages/models.py:14 msgid "registration required" @@ -1524,17 +1592,23 @@ msgstr "שלישי" #: contrib/humanize/templatetags/humanize.py:50 #, python-format msgid "%(value).1f million" -msgstr "%(value).1f מיליון" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f מיליון" +msgstr[1] "%(value).1f מיליונים" #: contrib/humanize/templatetags/humanize.py:53 #, python-format msgid "%(value).1f billion" -msgstr "%(value).1f ביליון" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f ביליון" +msgstr[1] "%(value).1f ביליונים" #: contrib/humanize/templatetags/humanize.py:56 #, python-format msgid "%(value).1f trillion" -msgstr "%(value).1f טריליון" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f טריליון" +msgstr[1] "%(value).1f טריליונים" #: contrib/humanize/templatetags/humanize.py:71 msgid "one" @@ -1584,15 +1658,12 @@ msgstr "מחר" msgid "yesterday" msgstr "אתמול" -#: contrib/localflavor/ar/forms.py:30 -#: contrib/localflavor/ar/forms.py:38 +#: contrib/localflavor/ar/forms.py:30 contrib/localflavor/ar/forms.py:38 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "יש להזין קוד דואר בתחביר NNNN או ANNNNAAA." -#: contrib/localflavor/ar/forms.py:61 -#: contrib/localflavor/br/forms.py:103 -#: contrib/localflavor/pe/forms.py:34 -#: contrib/localflavor/pe/forms.py:57 +#: contrib/localflavor/ar/forms.py:61 contrib/localflavor/br/forms.py:103 +#: contrib/localflavor/pe/forms.py:34 contrib/localflavor/pe/forms.py:57 msgid "This field requires only numbers." msgstr "יש להזין רק ספרות בשדה זה." @@ -1621,7 +1692,9 @@ msgid "Phone numbers must be in XX-XXXX-XXXX format." msgstr "מספרי טלפון חייבים להיות בתחביר XX-XXXX-XXXX." #: contrib/localflavor/br/forms.py:68 -msgid "Select a valid brazilian state. That state is not one of the available states." +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." msgstr "נא לבחור מדינה ברזילאית חוקית. מדינה זו אינה אחת מהמדינות האפשריות." #: contrib/localflavor/br/forms.py:105 @@ -1752,13 +1825,14 @@ msgstr "צוג" msgid "Zurich" msgstr "ציריך" -#: contrib/localflavor/ch/forms.py:18 -#: contrib/localflavor/no/forms.py:14 +#: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:14 msgid "Enter a zip code in the format XXXX." msgstr "יש להזין מיקוד בתחביר XXXX." #: contrib/localflavor/ch/forms.py:90 -msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format." +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." msgstr "יש להזין מספר זיהוי או דרכון שוויצרי בתחביר X1234567<0 או 1234567890." #: contrib/localflavor/cl/forms.py:32 @@ -1833,18 +1907,355 @@ msgstr "שלזוויג-הולשטיין" msgid "Thuringia" msgstr "תורינגיה" -#: contrib/localflavor/de/forms.py:16 -#: contrib/localflavor/fi/forms.py:14 +#: contrib/localflavor/de/forms.py:16 contrib/localflavor/fi/forms.py:14 #: contrib/localflavor/fr/forms.py:17 msgid "Enter a zip code in the format XXXXX." msgstr "יש להזין מיקוד בתחביר XXXXX." #: contrib/localflavor/de/forms.py:60 -msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format." +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." msgstr "יש להזין מספר זיהוי גרמני חוקי בתחביר XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." -#: contrib/localflavor/fi/forms.py:40 -#: contrib/localflavor/fi/forms.py:45 +#: contrib/localflavor/es/es_provinces.py:5 +#, fuzzy +msgid "Arava" +msgstr "טרנאוה" + +#: contrib/localflavor/es/es_provinces.py:6 +msgid "Albacete" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:7 +msgid "Alacant" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:8 +#, fuzzy +msgid "Almeria" +msgstr "פומרניה" + +#: contrib/localflavor/es/es_provinces.py:9 +#, fuzzy +msgid "Avila" +msgstr "אקיטה" + +#: contrib/localflavor/es/es_provinces.py:10 +#, fuzzy +msgid "Badajoz" +msgstr "ברדיוב" + +#: contrib/localflavor/es/es_provinces.py:11 +msgid "Illes Balears" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:12 +#, fuzzy +msgid "Barcelona" +msgstr "מקדונית - Macedonian" + +#: contrib/localflavor/es/es_provinces.py:13 +msgid "Burgos" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:14 +msgid "Caceres" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:15 +#, fuzzy +msgid "Cadiz" +msgstr "צ'דקה" + +#: contrib/localflavor/es/es_provinces.py:16 +msgid "Castello" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:17 +msgid "Ciudad Real" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:18 +msgid "Cordoba" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:19 +msgid "A Coruna" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:20 +#, fuzzy +msgid "Cuenca" +msgstr "סניצ'ה" + +#: contrib/localflavor/es/es_provinces.py:21 +msgid "Girona" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:22 +#, fuzzy +msgid "Granada" +msgstr "קנדה - Kannada" + +#: contrib/localflavor/es/es_provinces.py:23 +msgid "Guadalajara" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:24 +msgid "Guipuzkoa" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:25 +msgid "Huelva" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:26 +#, fuzzy +msgid "Huesca" +msgstr "שלישי" + +#: contrib/localflavor/es/es_provinces.py:27 +#, fuzzy +msgid "Jaen" +msgstr "ינו'" + +#: contrib/localflavor/es/es_provinces.py:28 +#, fuzzy +msgid "Leon" +msgstr "כניסה" + +#: contrib/localflavor/es/es_provinces.py:29 +#, fuzzy +msgid "Lleida" +msgstr "סילסיה" + +#: contrib/localflavor/es/es_provinces.py:30 +#: contrib/localflavor/es/es_regions.py:17 +msgid "La Rioja" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:31 +msgid "Lugo" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:32 +#: contrib/localflavor/es/es_regions.py:18 +#, fuzzy +msgid "Madrid" +msgstr "מרטין" + +#: contrib/localflavor/es/es_provinces.py:33 +#, fuzzy +msgid "Malaga" +msgstr "גלנטה" + +#: contrib/localflavor/es/es_provinces.py:34 +#, fuzzy +msgid "Murcia" +msgstr "ז'ורה" + +#: contrib/localflavor/es/es_provinces.py:35 +msgid "Navarre" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:36 +#, fuzzy +msgid "Ourense" +msgstr "דרנתה" + +#: contrib/localflavor/es/es_provinces.py:37 +msgid "Asturias" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:38 +#, fuzzy +msgid "Palencia" +msgstr "גאליצית - Galician" + +#: contrib/localflavor/es/es_provinces.py:39 +msgid "Las Palmas" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:40 +msgid "Pontevedra" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:41 +#, fuzzy +msgid "Salamanca" +msgstr "סאיטאמה" + +#: contrib/localflavor/es/es_provinces.py:42 +msgid "Santa Cruz de Tenerife" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:43 +#: contrib/localflavor/es/es_regions.py:11 +#, fuzzy +msgid "Cantabria" +msgstr "קאטלונית - Catalan" + +#: contrib/localflavor/es/es_provinces.py:44 +#, fuzzy +msgid "Segovia" +msgstr "סלובנית - Slovenian" + +#: contrib/localflavor/es/es_provinces.py:45 +#, fuzzy +msgid "Seville" +msgstr "לביצה" + +#: contrib/localflavor/es/es_provinces.py:46 +#, fuzzy +msgid "Soria" +msgstr "סרבית - Serbian" + +#: contrib/localflavor/es/es_provinces.py:47 +msgid "Tarragona" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:48 +#, fuzzy +msgid "Teruel" +msgstr "שלישי" + +#: contrib/localflavor/es/es_provinces.py:49 +msgid "Toledo" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:50 +#, fuzzy +msgid "Valencia" +msgstr "גאליצית - Galician" + +#: contrib/localflavor/es/es_provinces.py:51 +#, fuzzy +msgid "Valladolid" +msgstr "ואלה" + +#: contrib/localflavor/es/es_provinces.py:52 +msgid "Bizkaia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:53 +#, fuzzy +msgid "Zamora" +msgstr "נארה" + +#: contrib/localflavor/es/es_provinces.py:54 +msgid "Zaragoza" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:55 +#, fuzzy +msgid "Ceuta" +msgstr "דטבה" + +#: contrib/localflavor/es/es_provinces.py:56 +msgid "Melilla" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:5 +msgid "Andalusia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:6 +msgid "Aragon" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:7 +msgid "Principality of Asturias" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:8 +msgid "Balearic Islands" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:9 +msgid "Basque Country" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:10 +#, fuzzy +msgid "Canary Islands" +msgstr "חבל הסאר" + +#: contrib/localflavor/es/es_regions.py:12 +msgid "Castile-La Mancha" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:13 +msgid "Castile and Leon" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:14 +#, fuzzy +msgid "Catalonia" +msgstr "קאטלונית - Catalan" + +#: contrib/localflavor/es/es_regions.py:15 +msgid "Extremadura" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:16 +#, fuzzy +msgid "Galicia" +msgstr "גאליצית - Galician" + +#: contrib/localflavor/es/es_regions.py:19 +msgid "Region of Murcia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:20 +msgid "Foral Community of Navarre" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:21 +msgid "Valencian Community" +msgstr "" + +#: contrib/localflavor/es/forms.py:22 +#, fuzzy +msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." +msgstr "יש להזין מיקוד בתחביר XXX XXX." + +#: contrib/localflavor/es/forms.py:39 +#, fuzzy +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "נא להזין שדה מספר מס (NIP) בתחביר XXX-XXX-XX-XX או XX-XX-XXX-XXX." + +#: contrib/localflavor/es/forms.py:73 contrib/localflavor/es/forms.py:108 +#: db/models/fields/related.py:55 +#, python-format +msgid "Please enter a valid %s." +msgstr "יש להזין %s חוקי." + +#: contrib/localflavor/es/forms.py:91 +msgid "Invalid checksum for NIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:97 +msgid "Invalid checksum for NIE." +msgstr "" + +#: contrib/localflavor/es/forms.py:106 +msgid "Invalid checksum for CIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:136 +#, fuzzy +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "יש להזין מספר זיהוי גרמני חוקי בתחביר XXXXXXXXXXX-XXXXXXX-XXXXXXX-X." + +#: contrib/localflavor/es/forms.py:150 +msgid "Invalid checksum for bank account number." +msgstr "" + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45 msgid "Enter a valid Finnish social security number." msgstr "יש להזין מספר ביטוח לאומי פיני חוקי." @@ -1853,7 +2264,8 @@ msgid "Enter a zip code in the format XXXXXXX." msgstr "יש להזין מיקוד בתחביר XXXXXXX." #: contrib/localflavor/is_/forms.py:17 -msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." msgstr "יש להזין מספר זיהוי איסלנדי חוקי. התחביר הוא XXXXXX-XXXX." #: contrib/localflavor/is_/forms.py:31 @@ -2136,19 +2548,35 @@ msgstr "שדה זה דורש 8 ספרות." msgid "This field requires 11 digits." msgstr "שדה זה דורש 11 ספרות." -#: contrib/localflavor/pl/forms.py:53 +#: contrib/localflavor/pl/forms.py:41 msgid "National Identification Number consists of 11 digits." msgstr "מספר זיהוי לאומי מורכב מ-11 ספרות" -#: contrib/localflavor/pl/forms.py:59 +#: contrib/localflavor/pl/forms.py:47 msgid "Wrong checksum for the National Identification Number." msgstr "סכום ביקורת שגוי עבודי מספר הזיהוי הלאומי" -#: contrib/localflavor/pl/forms.py:71 -msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +#: 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 "נא להזין שדה מספר מס (NIP) בתחביר XXX-XXX-XX-XX או XX-XX-XXX-XXX." -#: contrib/localflavor/pl/forms.py:82 +#: contrib/localflavor/pl/forms.py:78 +#, fuzzy +msgid "Wrong checksum for the Tax Number (NIP)." +msgstr "סכום ביקורת שגוי עבודי מספר הזיהוי הלאומי" + +#: contrib/localflavor/pl/forms.py:107 +#, fuzzy +msgid "National Business Register Number (REGON) consists of 7 or 9 digits." +msgstr "מספר זיהוי לאומי מורכב מ-11 ספרות" + +#: contrib/localflavor/pl/forms.py:113 +#, fuzzy +msgid "Wrong checksum for the National Business Register Number (REGON)." +msgstr "סכום ביקורת שגוי עבודי מספר הזיהוי הלאומי" + +#: contrib/localflavor/pl/forms.py:148 msgid "Enter a postal code in the format XX-XXX." msgstr "נא להזין מיקוד בתחביר XX-XXX." @@ -2585,7 +3013,9 @@ msgid "redirect from" msgstr "הפניה מ" #: contrib/redirects/models.py:8 -msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." msgstr "זה אמור להיות נתיב מלא, ללא שם המתחם. לדוגמא: '‎/events/search'." #: contrib/redirects/models.py:9 @@ -2593,7 +3023,9 @@ msgid "redirect to" msgstr "הפניה אל" #: contrib/redirects/models.py:10 -msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." msgstr "יכול להיות נתיב מלא (כנ\"ל) או URL מלא המתחיל ב'http://'." #: contrib/redirects/models.py:13 @@ -2645,7 +3077,9 @@ msgid "This value must contain only letters, numbers and underscores." msgstr "ערך זה חייב להכיל אותיות, ספרות וקווים תחתונים בלבד." #: core/validators.py:76 -msgid "This value must contain only letters, numbers, underscores, dashes or slashes." +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." msgstr "ערך זה חייב להכיל אותיות, ספרות, מקפים, קווים תחתונים ונטויים בלבד." #: core/validators.py:80 @@ -2684,8 +3118,7 @@ msgstr "מותר להזין ספרות בלבד." msgid "This value can't be comprised solely of digits." msgstr "ערך זה אינו יכול להכיל ספרות בלבד." -#: core/validators.py:128 -#: newforms/fields.py:149 +#: core/validators.py:128 newforms/fields.py:157 msgid "Enter a whole number." msgstr "נא להזין מספר שלם." @@ -2702,8 +3135,7 @@ msgstr "שנה צריכה להיות 1900 ומעלה." msgid "Invalid date: %s" msgstr "תאריך שגוי: %s" -#: core/validators.py:156 -#: db/models/fields/__init__.py:505 +#: core/validators.py:156 db/models/fields/__init__.py:509 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "יש להזין תאריך במבנה YYYY-MM-DD." @@ -2711,26 +3143,23 @@ msgstr "יש להזין תאריך במבנה YYYY-MM-DD." msgid "Enter a valid time in HH:MM format." msgstr "יש להזין שעה במבנה HH:MM." -#: core/validators.py:165 -#: db/models/fields/__init__.py:579 +#: core/validators.py:165 db/models/fields/__init__.py:583 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "יש להזין תאריך ושעה במבנה YYYY-MM-DD HH:MM." -#: core/validators.py:170 -#: newforms/fields.py:343 +#: core/validators.py:170 newforms/fields.py:408 msgid "Enter a valid e-mail address." msgstr "יש להזין כתובת דוא\"ל חוקית." -#: core/validators.py:182 -#: core/validators.py:474 -#: newforms/fields.py:377 +#: core/validators.py:182 core/validators.py:474 newforms/fields.py:438 #: oldforms/__init__.py:686 msgid "No file was submitted. Check the encoding type on the form." msgstr "לא נשלח שום קובץ. נא לבדוק את סוג הקידוד של הטופס." -#: core/validators.py:193 -#: newforms/fields.py:405 -msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." +#: core/validators.py:193 newforms/fields.py:462 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." msgstr "נא להעלות תמונה חוקית. הקובץ שהעלת אינו תמונה אומכיל תמונה מקולקלת." #: core/validators.py:200 @@ -2771,8 +3200,7 @@ msgstr "מבנה XML שגוי: %s" msgid "Invalid URL: %s" msgstr "URL שגוי: %s" -#: core/validators.py:259 -#: core/validators.py:261 +#: core/validators.py:259 core/validators.py:261 #, python-format msgid "The URL %s is a broken link." msgstr "ה-URL‏ %s הוא קישור שבור." @@ -2784,7 +3212,9 @@ msgstr "יש להזין קיצור חוקי למדינה בארה\"ב." #: core/validators.py:281 #, python-format msgid "Watch your mouth! The word %s is not allowed here." -msgstr "שמור על לשונך! המילה %s אסורה לשימוש כאן." +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "שמור על לשונך! המילה %s אסורה לשימוש כאן." +msgstr[1] "שמור על לשונך! המילים %s אסורות לשימוש כאן." #: core/validators.py:288 #, python-format @@ -2795,8 +3225,7 @@ msgstr "תוכן השדה חייב להיות זהה לשדה '%s'." msgid "Please enter something for at least one field." msgstr "יש להזין תוכן בלפחות אחד מהשדות." -#: core/validators.py:316 -#: core/validators.py:327 +#: core/validators.py:316 core/validators.py:327 msgid "Please enter both fields or leave them both empty." msgstr "יש להזין תוכן בשני השדות או להשאיר את שניהם ריקים." @@ -2840,18 +3269,28 @@ msgstr "יש להזין מספר עשרוני חוקי." #: core/validators.py:444 #, python-format -msgid "Please enter a valid decimal number with at most %s total digit.Please enter a valid decimal number with at most %s total digits." -msgstr "נא להזין מספר עשרוני חוקי עפ %s ספרה לכל היותר.נא להזין מספר עשרוני חוקי עם %s ספרות לכל היותר." +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "" +"Please enter a valid decimal number with at most %s total digits." +msgstr[0] "יש להזין מספר עשרוני חוקי עם ספרה %s לכל היותר." +msgstr[1] "יש להזין מספר עשרוני חוקי עם %s ספרות לכל היותר." #: core/validators.py:447 #, python-format -msgid "Please enter a valid decimal number with a whole part of at most %s digit.Please enter a valid decimal number with a whole part of at most %s digits." -msgstr "נא להזין מספר עשרוני חוקי כאשר החלק השלם מכיל %s ספרה לכל היותר.נא להזין מספר עשרוני חוקי כאשר החלק השלם מכיל %s ספרות לכל היותר." +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] "יש להזין מספר עשרוני חוקי עם ספרה %s בחלק השלם לכל היותר." +msgstr[1] "יש להזין מספר עשרוני חוקי עם %s ספרות בחלק השלם לכל היותר." #: core/validators.py:450 #, python-format -msgid "Please enter a valid decimal number with at most %s decimal place.Please enter a valid decimal number with at most %s decimal places." -msgstr "נא להזין מספר עשרוני חוקי עם %s מקום עשרוני לכל היותר.נא להזין מספר עשרוני חוקי עם %s מקומקומות עשרוניים לא היותר." +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "" +"Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "יש להזין מספר עשרוני חוקי עם ספרה %s בחלק העשרוני לכל היותר." +msgstr[1] "יש להזין מספר עשרוני חוקי עם %s ספרות בחלק העשרוני לכל היותר." #: core/validators.py:458 msgid "Please enter a valid floating point number." @@ -2882,38 +3321,58 @@ msgstr "לא ניתן לאחזר כלום מ %s." #: core/validators.py:539 #, python-format -msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "ה-URL·%(url)s·החזיר כותרת·Content-Type·לא חוקית·'%(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\".)" +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" msgstr "נא לסגור את תג·%(tag)s·בשורה·%(line)s.·(השורה מתחילה ב·\"%(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 "חלק מהטקסט בשורה·%(line)s·אסור בהקשר זה.·(השורה·מתחילה ב·\"%(start)s\".)" +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"חלק מהטקסט בשורה·%(line)s·אסור בהקשר זה.·(השורה·מתחילה ב·\"%(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 "\"%(attr)s\"·בשורה·%(line)s·אינה תכונה חוקית.·(השורה מתחילה ב·\"%(start)s\".)" +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"%(attr)s\"·בשורה·%(line)s·אינה תכונה חוקית.·(השורה מתחילה ב·\"%(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 "\"<%(tag)s>\"·בשורה·%(line)s·אינו תג חוקי.·(השורה מתחילה ב·\"%(start)s\".)" +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"<%(tag)s>\"·בשורה·%(line)s·אינו תג חוקי.·(השורה מתחילה ב·\"%(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 "לתג בשורה %(line)s חסרה תכונה אחת או יותר נדרשות. (השורה מתחילה ב-\"%(start)s\".)" +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"לתג בשורה %(line)s חסרה תכונה אחת או יותר נדרשות. (השורה מתחילה ב-\"%(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 "לתכונה·\"%(attr)s\"·בשורה·%(line)s·יש ערך לא חוקי.·(השורה·מתחילה ב·\"%(start)s\".)" +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"לתכונה·\"%(attr)s\"·בשורה·%(line)s·יש ערך לא חוקי.·(השורה·מתחילה ב·\"%(start)" +"s\".)" #: db/models/manipulators.py:308 #, python-format @@ -2925,174 +3384,159 @@ msgstr "%(object)s עם %(type)s קיים כבר עבור %(field)s נתון." msgid "%(optname)s with this %(fieldname)s already exists." msgstr "%(optname)s·עם·%(fieldname)s·זה קיימת כבר." -#: db/models/fields/__init__.py:159 -#: db/models/fields/__init__.py:316 -#: db/models/fields/__init__.py:731 -#: db/models/fields/__init__.py:742 -#: newforms/fields.py:93 -#: newforms/fields.py:513 -#: newforms/fields.py:589 -#: newforms/fields.py:600 -#: newforms/models.py:193 -#: oldforms/__init__.py:373 +#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:318 +#: db/models/fields/__init__.py:735 db/models/fields/__init__.py:746 +#: newforms/fields.py:45 newforms/models.py:211 oldforms/__init__.py:373 msgid "This field is required." msgstr "יש להזין תוכן בשדה זה." -#: db/models/fields/__init__.py:414 +#: db/models/fields/__init__.py:418 msgid "This value must be an integer." msgstr "ערך זה חייב להיות מספר שלם." -#: db/models/fields/__init__.py:450 +#: db/models/fields/__init__.py:454 msgid "This value must be either True or False." msgstr "ערך זה חייב להיות אמת או שקר." -#: db/models/fields/__init__.py:471 +#: db/models/fields/__init__.py:475 msgid "This field cannot be null." msgstr "שדה זה אינו יכול להכיל null." -#: db/models/fields/__init__.py:640 +#: db/models/fields/__init__.py:644 msgid "This value must be a decimal number." msgstr "ערך זה חייב להיות מספר עשרוני." -#: db/models/fields/__init__.py:751 +#: db/models/fields/__init__.py:755 msgid "Enter a valid filename." msgstr "יש להזין שם קובץ חוקי." -#: db/models/fields/__init__.py:900 +#: db/models/fields/__init__.py:904 msgid "This value must be either None, True or False." msgstr "ערך זה חייב להיות כלום, אמת או שקר." -#: db/models/fields/related.py:55 -#, python-format -msgid "Please enter a valid %s." -msgstr "יש להזין %s חוקי." - #: db/models/fields/related.py:658 msgid "Separate multiple IDs with commas." msgstr "יש להפריד מזהים מרובים בפסיקים." #: db/models/fields/related.py:660 -msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "החזק את \"Control\", או \"Command\" על מק, לחוץ כדי לבחור יותר מאחד." #: db/models/fields/related.py:707 #, python-format -msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid.Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr "נא להזין מזהה %(self)s חוקי. הערך %(value)r אינו חוקי. נא להזין מזהה %(self)s חוקי. הערכים %(value)r אינם חוקיים." +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "נא להזין מזהה %(self)s חוקי. הערך %(value)r אינו חוקי." +msgstr[1] "" +"נא להזין מזהי %(self)s חוקיים. הערכים %(value)r אינם חוקיים." -#: newforms/fields.py:123 +#: newforms/fields.py:46 +msgid "Enter a valid value." +msgstr "יש להזין ערך חוקי." + +#: newforms/fields.py:129 #, python-format msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." msgstr "נא לוודא שערך זה מכיל %(max)d תווים לכל היותר (מכיל %(length)d)." -#: newforms/fields.py:125 +#: newforms/fields.py:130 #, python-format msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." msgstr "נא לוודא שערך זה מכיל לפחות %(min)d תווים (מכיל %(length)d)." -#: newforms/fields.py:151 -#: newforms/fields.py:174 -#: newforms/fields.py:204 +#: newforms/fields.py:158 newforms/fields.py:187 newforms/fields.py:216 #, python-format msgid "Ensure this value is less than or equal to %s." msgstr "יש לוודא שערך זה פחות מ או שווה ל %s." -#: newforms/fields.py:153 -#: newforms/fields.py:176 -#: newforms/fields.py:206 +#: newforms/fields.py:159 newforms/fields.py:188 newforms/fields.py:217 #, python-format msgid "Ensure this value is greater than or equal to %s." msgstr "יש לוודא שהערך גדול מ או שווה ל %s." -#: newforms/fields.py:172 -#: newforms/fields.py:199 +#: newforms/fields.py:186 newforms/fields.py:215 msgid "Enter a number." msgstr "נא להזין מספר." -#: newforms/fields.py:208 +#: newforms/fields.py:218 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "נא לוודא שאין יותר מ-%s ספרות סה\"כ" -#: newforms/fields.py:210 +#: newforms/fields.py:219 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "נא לוודא שאין יותר מ-%s ספרות אחרי הנקודה" -#: newforms/fields.py:212 +#: newforms/fields.py:220 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "נא לוודא שאין יותר מ-%s ספרות לפני הנקודה העשרונית" -#: newforms/fields.py:245 -#: newforms/fields.py:633 +#: newforms/fields.py:268 newforms/fields.py:724 msgid "Enter a valid date." msgstr "יש להזין תאריך חוקי." -#: newforms/fields.py:272 -#: newforms/fields.py:635 +#: newforms/fields.py:301 newforms/fields.py:725 msgid "Enter a valid time." msgstr "יש להזין שעה חוקית." -#: newforms/fields.py:308 +#: newforms/fields.py:340 msgid "Enter a valid date/time." msgstr "יש להזין תאריך ושעה חוקיים." -#: newforms/fields.py:321 -msgid "Enter a valid value." -msgstr "יש להזין ערך חוקי." - -#: newforms/fields.py:379 +#: newforms/fields.py:439 msgid "No file was submitted." msgstr "לא נשלח שום קובץ" -#: newforms/fields.py:381 -#: oldforms/__init__.py:688 +#: newforms/fields.py:440 oldforms/__init__.py:688 msgid "The submitted file is empty." msgstr "הקובץ שנשלח ריק." -#: newforms/fields.py:419 -#: newforms/fields.py:444 +#: newforms/fields.py:498 msgid "Enter a valid URL." msgstr "יש להזין URL חוקי." -#: newforms/fields.py:446 +#: newforms/fields.py:499 msgid "This URL appears to be a broken link." msgstr "ה-URL הזה נראה כקישור שבור." -#: newforms/fields.py:501 -#: newforms/models.py:180 +#: newforms/fields.py:560 newforms/models.py:194 msgid "Select a valid choice. That choice is not one of the available choices." msgstr "יש לבחור אפשרות חוקית; '%(data)s' אינו בין %(choices)s." -#: newforms/fields.py:517 -#: newforms/fields.py:593 -#: newforms/models.py:197 +#: newforms/fields.py:599 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "יש לבחור אפשרות חוקית. %(value)s אינו בין האפשרויות הזמינות." + +#: newforms/fields.py:600 newforms/fields.py:662 newforms/models.py:215 msgid "Enter a list of values." msgstr "יש להזין רשימת ערכים" -#: newforms/fields.py:523 -#: newforms/models.py:203 +#: newforms/fields.py:753 +msgid "Enter a valid IPv4 address." +msgstr "יש להזין כתובת IPv4 חוקית." + +#: newforms/models.py:221 #, python-format msgid "Select a valid choice. %s is not one of the available choices." msgstr "יש לבחור אפשרות חוקית. %s אינו בין האפשרויות הזמינות." -#: newforms/fields.py:644 -msgid "Enter a valid IPv4 address." -msgstr "יש להזין כתובת IPv4 חוקית." - #: oldforms/__init__.py:408 #, python-format msgid "Ensure your text is less than %s character." -msgstr "נא לוודא שהטקסט שלך מכיל פחות מ %s תו." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "נא לוודא שהטקסט שלך מכיל פחות מ %s תו." +msgstr[1] "נא לוודא שהטקסט שלך מכיל פחות מ %s תווים." #: oldforms/__init__.py:413 msgid "Line breaks are not allowed here." msgstr "מעברי שורה אסורים כאן." -#: oldforms/__init__.py:511 -#: oldforms/__init__.py:585 -#: oldforms/__init__.py:624 +#: oldforms/__init__.py:511 oldforms/__init__.py:585 oldforms/__init__.py:624 #, python-format msgid "Select a valid choice; '%(data)s' is not in %(choices)s." msgstr "יש לבחור אפשרות חוקית; '%(data)s' אינו בין %(choices)s." @@ -3109,26 +3553,28 @@ msgstr "יש להזין מספר חיובי." msgid "Enter a whole number between 0 and 32,767." msgstr "יש להזין מספר שלם בין 0 ל- 32,767." -#: template/defaultfilters.py:541 +#: template/defaultfilters.py:555 msgid "yes,no,maybe" msgstr "כן,לא,אולי" -#: template/defaultfilters.py:570 +#: template/defaultfilters.py:585 #, python-format msgid "%(size)d byte" -msgstr "%(size)d בתים" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d בית" +msgstr[1] "%(size)d בתים" -#: template/defaultfilters.py:572 +#: template/defaultfilters.py:587 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:574 +#: template/defaultfilters.py:589 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:575 +#: template/defaultfilters.py:590 #, python-format msgid "%.1f GB" msgstr "%.1f GB" @@ -3221,28 +3667,23 @@ msgstr "ינואר" msgid "February" msgstr "פברואר" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "March" msgstr "מרס" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "April" msgstr "אפריל" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "May" msgstr "מאי" -#: utils/dates.py:18 -#: utils/dates.py:31 +#: utils/dates.py:18 utils/dates.py:31 msgid "June" msgstr "יוני" -#: utils/dates.py:19 -#: utils/dates.py:31 +#: utils/dates.py:19 utils/dates.py:31 msgid "July" msgstr "יולי" @@ -3348,27 +3789,39 @@ msgstr "או" #: utils/timesince.py:21 msgid "year" -msgstr "שנה" +msgid_plural "years" +msgstr[0] "שנה" +msgstr[1] "שנים" #: utils/timesince.py:22 msgid "month" -msgstr "חודש" +msgid_plural "months" +msgstr[0] "חודש" +msgstr[1] "חודשים" #: utils/timesince.py:23 msgid "week" -msgstr "שבוע" +msgid_plural "weeks" +msgstr[0] "שבוע" +msgstr[1] "שבועות" #: utils/timesince.py:24 msgid "day" -msgstr "יום" +msgid_plural "days" +msgstr[0] "יום" +msgstr[1] "ימים" #: utils/timesince.py:25 msgid "hour" -msgstr "שעה" +msgid_plural "hours" +msgstr[0] "שעה" +msgstr[1] "שעות" #: utils/timesince.py:26 msgid "minute" -msgstr "דקה" +msgid_plural "minutes" +msgstr[0] "דקה" +msgstr[1] "דקות" #: utils/timesince.py:46 msgid "minutes" @@ -3384,23 +3837,23 @@ msgstr "%(number)d %(type)s" msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:391 +#: utils/translation/trans_real.py:395 msgid "DATE_FORMAT" msgstr "d.m.Y" -#: utils/translation/trans_real.py:392 +#: utils/translation/trans_real.py:396 msgid "DATETIME_FORMAT" msgstr "d.m.y H:i:s" -#: utils/translation/trans_real.py:393 +#: utils/translation/trans_real.py:397 msgid "TIME_FORMAT" msgstr "H:i:s" -#: utils/translation/trans_real.py:409 +#: utils/translation/trans_real.py:413 msgid "YEAR_MONTH_FORMAT" msgstr "d.m.Y" -#: utils/translation/trans_real.py:410 +#: utils/translation/trans_real.py:414 msgid "MONTH_DAY_FORMAT" msgstr "d.m.Y" diff --git a/django/conf/locale/sv/LC_MESSAGES/django.mo b/django/conf/locale/sv/LC_MESSAGES/django.mo index 9d35676a65d99f4d7afefc4a01440100f248ede9..bb0deda35c4daf5999c04f83c3edfafc669341be 100644 GIT binary patch delta 5761 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 A3jhEB diff --git a/django/conf/locale/sv/LC_MESSAGES/django.po b/django/conf/locale/sv/LC_MESSAGES/django.po index d77cf04cc4..bf0d87e64e 100644 --- a/django/conf/locale/sv/LC_MESSAGES/django.po +++ b/django/conf/locale/sv/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-07-18 16:49+0200\n" -"PO-Revision-Date: 2007-03-06 10:30+0100\n" -"Last-Translator: Philip Lindborg \n" +"PO-Revision-Date: 2007-11-03 00:30+0100\n" +"Last-Translator: Dmitri Fedortchenko \n" "Language-Team: Django I18N \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -146,7 +146,7 @@ msgid_plural "" msgstr[0] "" "Var god och fyll giltiga %(self)s ID-nummer. Värdet %(value)r är ogiltigt." msgstr[1] "" -"Var god och fyll giltiga %(self)s ID-nummer. Värdena %(value)r är ogiltiga." +"Var god och fyll giltiga %(self)s ID-nummer. Värden %(value)r är ogiltiga." #: conf/global_settings.py:38 msgid "Arabic" @@ -318,20 +318,20 @@ msgstr "Traditionell Kinesiska" #: core/validators.py:71 msgid "This value must contain only letters, numbers and underscores." -msgstr "Det här värdet får bara innehålla bokstäver, siffror och understreck." +msgstr "Det här värdet får endast innehålla bokstäver, siffror och understreck." #: core/validators.py:75 msgid "" "This value must contain only letters, numbers, underscores, dashes or " "slashes." msgstr "" -"Det här värdet får bara innehålla bokstäver, siffror, understreck, " +"Det här värdet får endast innehålla bokstäver, siffror, understreck, " "bindestreck eller snedstreck." #: core/validators.py:79 msgid "This value must contain only letters, numbers, underscores or hyphens." msgstr "" -"Det här värdet får bara innehålla bokstäver, siffror, understreck eller " +"Det här värdet får endast innehålla bokstäver, siffror, understreck eller " "avstavningstecken." #: core/validators.py:83 @@ -352,7 +352,7 @@ msgstr "Fyll i giltiga e-postadresser avskilda med kommatecken." #: core/validators.py:110 msgid "Please enter a valid IP address." -msgstr "Var god fyll i en giltigt IP-adress." +msgstr "Var god fyll i en giltig IP-adress." #: core/validators.py:114 msgid "Empty values are not allowed here." @@ -414,7 +414,7 @@ msgstr "" #: core/validators.py:204 #, python-format msgid "The URL %s does not point to a valid QuickTime video." -msgstr "URL:en %s pekar inte på en giltig QuickTime-video." +msgstr "URL:en %s pekar inte mot en giltig QuickTime-video." #: core/validators.py:208 msgid "A valid URL is required." @@ -432,7 +432,7 @@ msgstr "" #: core/validators.py:229 #, python-format msgid "Badly formed XML: %s" -msgstr "Missformad XML: %s" +msgstr "Felaktigt XML: %s" #: core/validators.py:246 #, python-format @@ -480,7 +480,7 @@ msgstr "Det här fältet måste anges om %(field)s inte är %(value)s" #: core/validators.py:359 msgid "Duplicate values are not allowed." -msgstr "Dubbelvärden är inte tillåtna." +msgstr "Dubletter är inte tillåtna." #: core/validators.py:374 #, python-format @@ -544,12 +544,12 @@ msgstr "Fyll i ett giltigt decimaltal." #: core/validators.py:454 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Se till att filen du laddade upp är minst %s bytes stor." +msgstr "Se till att filen du laddade upp är minst %s byte stor." #: core/validators.py:455 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "Se till att filen du laddade upp är som mest %s bytes stor." +msgstr "Se till att filen du laddade upp är som mest %s byte stor." #: core/validators.py:472 msgid "The format for this field is wrong." @@ -876,7 +876,7 @@ msgstr "är ett giltigt betyg" #: contrib/comments/models.py:83 contrib/comments/models.py:169 msgid "date/time submitted" -msgstr "datum/tid skickat" +msgstr "skickat datum/tid" #: contrib/comments/models.py:84 contrib/comments/models.py:170 msgid "is public" @@ -915,7 +915,7 @@ msgid "" "\n" "http://%(domain)s%(url)s" msgstr "" -"Postat av %(user)s %(date)s\n" +"Inlagt av %(user)s %(date)s\n" "\n" "%(comment)s\n" "\n" @@ -947,7 +947,7 @@ msgstr "poäng" #: contrib/comments/models.py:234 msgid "score date" -msgstr "poängdatum" +msgstr "poängen tillsatt den" #: contrib/comments/models.py:237 msgid "karma score" @@ -960,7 +960,7 @@ msgstr "karmapoäng" #: contrib/comments/models.py:242 #, python-format msgid "%(score)d rating by %(user)s" -msgstr "Betyget %(score)d av %(user)s" +msgstr "Poäng %(score)d av %(user)s" #: contrib/comments/models.py:258 #, python-format @@ -996,20 +996,20 @@ msgstr "borttagningsdatum" #: contrib/comments/models.py:280 msgid "moderator deletion" -msgstr "moderatorborttagning" +msgstr "borttaget av moderator" #: contrib/comments/models.py:281 msgid "moderator deletions" -msgstr "moderatorborttagningar" +msgstr "borttagna av moderator" #: contrib/comments/models.py:285 #, python-format msgid "Moderator deletion by %r" -msgstr "Moderatorborttagning av %r" +msgstr "Borttaget av moderator %r" #: contrib/comments/views/karma.py:20 msgid "Anonymous users cannot vote" -msgstr "Anonyma användare kan inte rösta" +msgstr "Anonyma användare får inte rösta" #: contrib/comments/views/karma.py:24 msgid "Invalid comment ID" @@ -1162,7 +1162,7 @@ msgstr "domännamn" #: contrib/sites/models.py:16 msgid "display name" -msgstr "visat namn" +msgstr "visningsnamn" #: contrib/sites/models.py:20 msgid "site" @@ -1243,8 +1243,8 @@ msgid "" "Please enter a correct username and password. Note that both fields are case-" "sensitive." msgstr "" -"Var god ange ett korrekt användarnamn och lösenord. Observera att båda " -"fälten är skiftlägeskänsliga." +"Var god ange ett korrekt användarnamn och lösenord. Tänk på att " +"skilja mellan gemener och versaler." #: contrib/admin/views/decorators.py:24 #: contrib/admin/templates/admin/login.html:25 @@ -1474,12 +1474,12 @@ msgstr "Decimaltal" #: contrib/admin/views/doc.py:299 msgid "E-mail address" -msgstr "E-postadress:" +msgstr "E-postadress" #: contrib/admin/views/doc.py:300 contrib/admin/views/doc.py:301 #: contrib/admin/views/doc.py:304 msgid "File path" -msgstr "Filsökväg" +msgstr "Sökväg till fil" #: contrib/admin/views/doc.py:302 msgid "Floating point number" @@ -1697,7 +1697,7 @@ msgstr "Sidan kunde inte hittas" #: contrib/admin/templates/admin/404.html:10 msgid "We're sorry, but the requested page could not be found." -msgstr "Vi är ledsna, men den efterfrågade sidan kunde inte hittas." +msgstr "Vi beklagar, men den efterfrågade sidan kunde tyvärr inte hittas." #: contrib/admin/templates/admin/index.html:17 #, python-format @@ -2026,11 +2026,11 @@ msgstr "Python-modellklassnamn" #: contrib/contenttypes/models.py:40 msgid "content type" -msgstr "innehållstyp" +msgstr "typ av innehåll" #: contrib/contenttypes/models.py:41 msgid "content types" -msgstr "innehållstyper" +msgstr "typer av innehåll" #: contrib/auth/views.py:41 msgid "Logged out" @@ -2178,7 +2178,7 @@ msgstr "meddelande" #: contrib/auth/forms.py:17 contrib/auth/forms.py:138 msgid "The two password fields didn't match." -msgstr "De båda lösenorden stämde inte överens." +msgstr "Lösenorden stämde inte överens." #: contrib/auth/forms.py:25 msgid "A user with that username already exists." @@ -2218,7 +2218,7 @@ msgstr "Fyll i ett postnummer. Du måste ha mellanslag mellan nummerdelarna." #: contrib/localflavor/br/forms.py:18 msgid "Enter a zip code in the format XXXXX-XXX." -msgstr "Fyll i zipkod på formatet XXXXX-XXX." +msgstr "Fyll i ett postnummer på formatet XXXXX-XXX." #: contrib/localflavor/br/forms.py:30 msgid "Phone numbers must be in XX-XXXX-XXXX format." @@ -2246,16 +2246,16 @@ msgstr "Ogiltigt CNPJ-nummer." #: contrib/localflavor/au/forms.py:18 msgid "Enter a 4 digit post code." -msgstr "Fyll i en fyrsiffrig postkod." +msgstr "Fyll i ett fyrsiffrigt postnummer." #: contrib/localflavor/fr/forms.py:17 contrib/localflavor/de/forms.py:16 #: contrib/localflavor/fi/forms.py:14 msgid "Enter a zip code in the format XXXXX." -msgstr "Fyll i en zipkod på formatet XXXXX." +msgstr "Fyll i ett postnummer på formatet XXXXX." #: contrib/localflavor/us/forms.py:18 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." -msgstr "Fyll i zipkod på formatet XXXXX eller XXXXX-XXXX." +msgstr "Fyll i ett postnummer på formatet XXXXX eller XXXXX-XXXX." #: contrib/localflavor/us/forms.py:51 msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." @@ -2335,7 +2335,7 @@ msgstr "" #: contrib/localflavor/jp/forms.py:21 msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." -msgstr "Fyll i postkod på formatet XXXXXXX eller XXX-XXXX." +msgstr "Fyll i ett postnummer på formatet XXXXXXX eller XXX-XXXX." #: contrib/localflavor/jp/jp_prefectures.py:4 msgid "Hokkaido" @@ -2631,7 +2631,7 @@ msgstr "Zürich" #: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:14 msgid "Enter a zip code in the format XXXX." -msgstr "Fyll i zipkod på formatet XXXX." +msgstr "Fyll i postnummer på formatet XXXX." #: contrib/localflavor/ch/forms.py:90 msgid "" @@ -2652,7 +2652,7 @@ msgstr "Det isländska personnumret är inte giltigt." #: contrib/localflavor/it/forms.py:16 msgid "Enter a valid zip code." -msgstr "Fyll i en giltigt zipkod." +msgstr "Fyll i ett giltigt postnummer." #: contrib/localflavor/it/forms.py:41 msgid "Enter a valid Social Security number." @@ -2739,11 +2739,11 @@ msgstr "" #: contrib/flatpages/models.py:18 msgid "flat page" -msgstr "flat sida" +msgstr "statisk sida" #: contrib/flatpages/models.py:19 msgid "flat pages" -msgstr "flata sidor" +msgstr "statiska sidor" #: utils/dates.py:6 msgid "Monday" @@ -3024,7 +3024,7 @@ msgstr "ja,nej,kanske" msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d byte" -msgstr[1] "%(size)d bytes" +msgstr[1] "%(size)d byte" #: template/defaultfilters.py:516 #, python-format diff --git a/django/conf/locale/sv/LC_MESSAGES/djangojs.mo b/django/conf/locale/sv/LC_MESSAGES/djangojs.mo index 5daac634243e5c2d43dc052eecb68be05c59393b..f84e25d5fd9eb1b43a448c0fce822a92081d7240 100644 GIT binary patch delta 121 zcmbQh+r_)VhtZdffq~&4D+2=)kY)vP*nu<$kmd!_0zg_8NXr3f79ec{q)mXdBa~kT zq&a~6Y9I|Xf}v&eOvZE;mXwsl^vOJIZcK-lP7Y=>;8V!WFG|nPWAIErytIe`02Buj AXaE2J delta 127 zcmeC;oxr=nhtZdhfq~&4D+2=)kmhA$U|PWFIyI-rW46^!z*q&-BAf Gix>c|;}rh@ diff --git a/django/conf/locale/sv/LC_MESSAGES/djangojs.po b/django/conf/locale/sv/LC_MESSAGES/djangojs.po index 29fbe2eb15..8cead596b7 100644 --- a/django/conf/locale/sv/LC_MESSAGES/djangojs.po +++ b/django/conf/locale/sv/LC_MESSAGES/djangojs.po @@ -58,7 +58,7 @@ msgstr "" #: contrib/admin/media/js/dateparse.js:33 msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" -msgstr "Söndag Mondag Tisdag Onsdag Torsdag Fredag Lördag" +msgstr "Söndag Måndag Tisdag Onsdag Torsdag Fredag Lördag" #: contrib/admin/media/js/calendar.js:25 msgid "S M T W T F S" @@ -96,7 +96,7 @@ msgstr "06.00" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 msgid "Noon" -msgstr "Mitt på dagen" +msgstr "Middag" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:88 #: contrib/admin/media/js/admin/DateTimeShortcuts.js:183 @@ -118,5 +118,5 @@ msgstr "Igår" #: contrib/admin/media/js/admin/DateTimeShortcuts.js:179 msgid "Tomorrow" -msgstr "Imorgon" +msgstr "I morgon" diff --git a/django/conf/locale/zh_TW/LC_MESSAGES/django.mo b/django/conf/locale/zh_TW/LC_MESSAGES/django.mo index 891e4bf9678b61f2e9e4faee6afdbd131163bae4..9c31d511363e377831dd3728545570ee060ead9a 100644 GIT binary patch literal 41345 zcmcJY349z!nYWuHwn1QG(IW8%mnmTc!naSkVTViRA9?c9)zq_H%yG$Uq4wiPZp zwru&f^34s)0?WCugoRzAo*6-wu&@goVA=2aS5?o9WH|}@ec$}jdb+CX z>N?(f>#b_%=a-+i)Zz7tM%{47+wY3}(OK((`f zm*@3`H$&Cu)9_~40G0k`_#t=_D&JS&N8sHZjMJihB5#yY$esyt6Yz3&U~A$SnhLls)>8Hc7nL7K+<47>s!f@=S7LbdM?q3ZJ$ zI3B(V)z3aQ*uKvYI0^SBpb78z3RJuN5-NTUD&5~g<@+b7@aNuV%hL;5qg%;GG#Qklk z{&wa4R=)Is3bzT$e+M*j1S-GpxaU8HO8*y7`3BDaS5V=8=luT+sRC2TvEV)mtMJR9 z-g`Avc{f7E+X{3ir=Y;~@tTN#3;&*!;)Cb8$Zf)t{en?$5&WaZiORcPlJ~i=f8Qaj0?7 z3D1Y;P}$1oA}IG2Q1PyT=fUgYdtfQN0NxJIf%ibw|9y}l>Wzo*gNxvea2u4|_@VQE z6{oCTmhB;x19g0@Iu^| z54Z1i4V1e#d?&mSs(b^T|GiN4J{+olJqbSmpMwh50nHFc_-puH_@7Yqc@dMrgK!v>{9Fio!@q-S-`Akx{SK;pe}UJ)^B%GF;6tTf1{MBZ zsBjNJz1Jwm$Dr!vSxA+733xd?1y!E!L6tjz%I`I(`u_uDO7fl@%Nz=qL#6-VIIGu< zhKg4Q<)4D8hfhP5XQq2T52`+wK)v@$sDAkq_%!@IdXG-uYjIb?o8b#k^>P^Yg#pz2UHnN~-#5Vr zaDNJ_{oA41`2s3kybP+pTm#ik*F&{mDO9`mckbJv!r$fG54z_gq58pisQ&b{^KWpR z0@bgZ;kj@VR5~xY=ldX4=^ce7@V(F4`nVICegjp$l~C=p5vpFk10@gs3ibS54DuRy z1-u=822Ownq4K+?(uV5;^?v2feG9w{_g&6C8Y=wbj+O8l+;vdpZ-pA)bD_$!3VsNF z4XVF&!297ls?cfRPdmInLb8(-9 zD)$$i`v;Cch8N@i3RJ!P3aTA{@7#ZO?(?Fy{@xAsK37BKTLRUNH$%mL5GubhP~pZw z)q5pW_ykmbpN8**v*9IhA=LBrQ1N#{m18edJ+#B~;FqE5`x}nmch7$YRZm%{a2L~< z%J;oc-U3zLJE77a;y4;A{U@Ef8mfE=sB(SYahl^ysB+JN%5OPTdYhrr z+2fucb?&c1rSlJtKY)7AA48Sr7f|(+gXhCP!pq@bq3ZcEI<4~Q1NELaIo|F#2rB)- zP~nC`mE#e|r=iL_0V-V5aS~Mi&qI}e8dSLXQ1!P8NGrSVs1+Rx=q1tT5r@xK8T?_2Ov_)k#beg##o*I^0#Z>V(o#4K-wia!u4{H^dJSOHBxf=X{R zybwMM6+h;ffC|^>*bG&UIq;Tupx41^@Y~PXdU&|b%HbL~hH!_WVg(}x?px*0$pu&~J?ff$wMsPn1%ix#b)$q4a{jgWU@-nFLa231= z_I2)?9Pfh)|A^xgj?Y59XAP8mOgr~N_k0c1du?{^FS_U7fHZ;kBj>)m!Re210RGib z`7L#9gO}jm1l3;;K;`@Qjz574A2_}SH4pzD`tagU+3@|L-fxiO15o2|3{?Co=l>kM z6nEM^Z-L5hh4bG675*?(xlTgW^S7OU|Dcz(*JcLh{>*EsfZ{{0mAIdUcfmaHS7nML$&)?pvLF- z;2`*hdw$#V_I<0M#_e3F`ri$Q!e2s-lfIv}^|Q!v1yui82bJ%apz`?62C!KquW74q+DtyM%OUDo;kH&ndynr%5QbG!;7V!Ugio-cwQhHIhP;Utv*7vVto9Y=4f zP3I=ZkHM>Xey?*s303Zhb5De~;!Z;K^KDS$_&ZSHehHP&Yf$z3hNBkwa$f)y?qcV@ z3aWh9!mHp%;K$$~=bi+w!@U5iKK4PC?~73Byy6%*z79>kjxrvYd>t=#yb>z@2chcY z2B>@=haZJ6LgjZ7s$AcO3ZHTOt>d4d(m!vy?LY5=a(@_J4EsRU$1PCpIM}%#bM9)W z@XtH{sm?v$xtBU_g#8G&2UftJ!3cbRi^fYTy4b)cbq^YP@_KJ_!HC`S+b=-{)4S`WpoG z-Xq{euo8}kbFh z+(fAK8=>lBuJhjs)o%~Od*CaJ(3*-mZj--y05rH#z^wj?>-qMNs)~fU2*9@T0KTJlig}!gu4|4L=BvL%r`$ z9DfPlf%`S6aKCZH= zD*qu%Z9kd-mEH{J-UyZdm!R6|Pf+RhS!Un+<52Zc18;*%9lr(D9_KE%?bplk3Ml^% zJN9wx=XkSYh2vnyVUDAr+Wk?eeo^Jz^-%BeJUkb+Isf%g`R#&F!h=x#`;ry5|CK|f zGaafv=fhIC77l>lfS1EJpu)X-rL|kW52`*!!)M|1P|sh1$}fN_=WDPRd;_Xn=dH5O zFLb=b@qJMJ=tEH9DxmVc8>$~X?AQcV{~Msj_t)Skc>Ze7`#2mA-vie}h1(6)K0kn0 z!FRM-``rhi$~W5aX{hqY98*x`_$<5y}*Vz0og9?9*V_(Nxq3Yv4sB(>W{!chgfGS_gxu19LnNZ>9JO39Q*E#Nl zYR98c;X0gu&hbB?(miLb=U(Qx$@%YfJmPrD@vBhf`4&`peh8KR&mDgaRnPwgRi6Kbdf)TbS@(rd@h*Xi zceQih;5Y!j3;znJ_zytEAL-l=J3j9CjN=5TdZ>p=zu9rN;}XZUj@umfJDza-n&Wq& z%J);ptn>d5=l&~{e1F$^Th4({;qP$np-}ZS0$vQqIaa|7aVMeP>(fy0`FY0~Q2z6v z-e(cixY!K!UdN#F`3hA2--8PON2qlE?A+&Uu;I^#k~fz+`i=t}?}bWtjN_9~?N{v> zgDOWHz5{OH&j;YwxW3K(`?=hxbG?rLCO9Adg6mh@>s*b_-Fyz73uyxHHtrwf`YzWUxZe#m-+Y7Xn_T)e zjm5c;4iuQkme0A{7v9qvO~XNTwliBkE@z%3YUI2!{5Qf@CM>H z!K=BJbNx40lIvlfx4_;!|1j5kxW0&6zYoGIaO?L;t`@Fk`2866f$xQ1bK#qig2U3 z!e3j_{dwG<3Lg|Pi~kpJe~zo3Yrl*0e#(0QcL!Ik^V`k+%UsuRsUQB9OTTjnJDD&a z;(nqFdp>@5;{JQCKj1eHe#Jdo%>8e zX8dy8Z-H^=H-r1v-2Lz1X|CVk*9%UB*TXvaWB3G@ewT6$=XxjQzZAcJ<~o9VBfNtP zwZhmnfcHn-`X%5huAy8X$NdwoLEOI|UI;%1Cvg3g`#$g%u4lNvhpU|HRj#YZ@1O9m z;J%*gKe!(O_4^)t5i<3f-)#Qw!0%hm{T}!Q+!t{5RLo!>_Y^Q61iyb=EX%f&5)Q@O5l?(q4)ar0g0IOLvPNB%eCH` z7ahl0Xa4U#?#AcRKTQ}jW{hu|N%{zBLk zjKMPEG;n_rd;#}+xQ21P%=JP14)N@ZTp#56EPj86AK}t(67CXv>;2mCMtCj${|4$l)yef8p7$f|d9ad8zrTb3>FzVIgy%oR|4O(W_h-4k7`~5d5%<%feto(A zYVPcxg?k z4)uH1@rdI>{AO{ly`k{;v!eUwxnJnq;~XmpSj}}m?lP{cxPJ%lGuAzS6h4MuFRt-i z9k}RR<2)~J7gn%cXQo`JLdcj!w-?(-@#9~I3MM{f%_7!Uva;hOTW<;=5Hx~ zNAWz(^gQJ{BQ<`yHtN^K;uHOJ!f#46Ci7uZz0!$9U1cQM&rc-%WUQt(T~<{Wt0H6=B@(ap zBh}S@EPZC|a(`4}vQqS`BJp0SXkE05P{b@MgFhjesP`lBCchz46Qz_UKq{7wmit6c zM{!5eekxHP^%E2HFcs}p6hGxBqn~PwC8H)EUZ67SPl`n+$Kv+Al#3#3q=WBFSjH zgmN{Kb8JE{Q*HV5W5tP)Uz(bOW#Ho@=k-8YQOt4rb^o>XADJ?gN%I9cdo|qz~ zYbihFXll^AMCy{!NOhARokC5f{0Y>gdO}TXQZ!De39)Ehb!n*l}JWQt9_bC4PU96ZcIg~RvuD)jnUHbffM}7SY2H#5r0d+`X0jdChHn#PkNniE6p27KUVEhHdDVUyYotUgKBTSTfHY$ zF{nScy#_Vb(V+(WG+vLrraqQRsU8ya5-Pf$$_a-_Q9nw(b;A$#Rf}OmFb?HZD|Bnm zatdR6>G(%RsNcFlSmgeRkbm1@Wfa;;tj5= z)8$t)SP2|Y#GC39jVV)(l*EcEcM@WPXH6!QH#ouj62GCr?~^o@KY4Abjkf5Ts6@+{Wi*AAKMT?)YN)|88MZKNzr~jBi>Im zMB|J%#*2|fc~KehGe($E{mB^yn*dLUAlik9~H zxSwwxs`HJa6A~!NL=lZwHmV@W$n&wfScGhn(fVlIyFY>;!FhjeBwiDBQ0c6Pk03$v zHkkrDuX@cFsnp~|vN{ZPHg{393K!P)v-@kKW+tP%RwkxMu&ag<;*=?^P8^FfY?BH4 z4UJju5B7VHlS~Uk)G~KeMiF1U1x;1m+pmwNQkuo`4IWE1)J2-q5tx0Ef8`V)RvGc` zCzD87D%uc1VwuP3XiYT98{6C|Xd*r#maNaerSVCtU`}A%pJ=SBHr+cJMdU;$(K+Hx z2wld#nNu~C?r%&oPo?Xci2i)Es@5Aac-+u&!$%H%=7G_Vj2t}9xVzjxHhkQ$XKaY^ zBSv^bYAYWm-I}Kr-jHZjx&D~$sGC@Q zq|T2ws(0el&~UKLW4yv?y!%)zIdd$Q_>)bQSUD<9!i+bi5DrIMb*McWRA$PKR2gY& z1hwY#+6eX75KS5h%7l!-wxibcjluxetd`QacS-8?oKB&Eilj8tpOK#GC(^tM$=VrG zRTZ7mfIfvX(B#vdQA*qk*Q=`X2~Mt!nvtjeX_7?n`E`jJUXlWuoUC9ldQ;Ca>9{>b zjrv2LW7H+AWGVN@$Mbrc83Cr->P7RF>8gz0RUFgmN0Ri;*C<}5RNjz8Rinlfle3-| zyNXr8RJTV~N1zna480+Zsws6mGoMqXh;TEtO6W!zT0Vzm4NgwT)VMaHRJUBCX zV$@MjZyMZ;lyr285sHP-eGr9V(ep{ajj*O1Dq;kEm$#yG*(OyY*1sV^_dzvu;-Sj} z<_bh`b$+d&8I9_E-2U{++?C1IHJai`h^HDNRYWf6C)Q)DxLbW35_u!@l*-y|Iqr+Z@2 zE>fZUQx;`WDS6%fHG3)dH_K9Cy2mr!x!^gu76mG7^suv)-F#EO+i$yrNxRxNx3|AV zgaL0Ew2;8_F$@4bkCC?(=y5lU&KO8m5NM2(81B{mj688R z1fvl$|N13`q^hG6BCPmaD&7Op%5wclHb#<7+(hfp8%R4G0%&FWTR~wD@ zlfqPD7c!AblA{iznoP~=(x?`!+>r}Z+yiwiOtlCnqeQYM!5SoP^{p_?d(Qg6w{w7* zN4hpSa+;aGpJ}YgQ5A(5KI#;?Fk$o5#gjbO+^uCWr6oyQLUxIu4c!4~&>qvWTPiMrm#yoQTTA7>ds+ePTC zRrH_)z1*11OfB0vJ&wE?hCR$1*2tob#R=IpC2A7h@G*I{XE;W?$i$d8yo!}*yqXnn zp_4Lev+z*|HRBIGvL;$xhL}?$7FMfaBg>j*y0Yo=-thW{L^7?_vV?ZZ8%|-X=?ApD zimN&=R&;qI^pCuHYlj76#dH`mDp*A({2JP^yN+DLno)}*b+kxTEt(D0j&{|b(P@`w z<>YP_PS6So%nxS07rG@#=-mGBA>MG>V`5}-#2bzVp-LM*nHTUr9$_Zqj~R6zkFfrx zQ+Xe6tZU*=eS^$g=B0{O-cn3e8BWtrMjO--$tB{;?84Zvx+UqF6zF)}%$zRG>Mp9V z)pxD=k}T0_unR=BKy(?|2KabmJnB6ZsnM$d*UcV^#6z!mJW|c0gsdnJHP%P!6MRte zP?P?Sh@_dldB77o#dG_pN0F@|{c$4CQaNf|di&3X6JVl5FNf+VWm*bew~k`um+A{T+{8b$c&6d zxtbz1F@xtdnnyCF*M%muBHNa96igL7sf!>aOOrMvC7;BcW~!GE8k(W`O~K7_$|!P5 z*IKvjDvzOTrT550Tw-!$lW)y6ylg8Vl(- zfh6N)sMOJ9tg5ggF&#nkF=9pQL)Wimjw)0OQIlBDAHix8HEqyPE7>4#t7CIFN%>B) zR*TV9>2i-h3E3=0%Ro7LVx%d;G%$K1)*?paXoP#ADn=I>V4acM853!buq`UQw-<~E z$Q4Z5#lfBFF|@aa)lKc%?Fm=G#6bp+89jEK9U!h!taqf2*G4a8dCk%)T+($3=xT4Y znc=bek51BKD7Zj-c%$hI5pN8`waDT+CbZCnH-29;gi8r%ZFkB|CckcOItH>Lm15VS z@W@Q|-JCrItWcP=e>?M2Q;KhGLtBoyPbJvrVYp04cw=hS6`cL4*pc$#}OCvcA zxa<1pO+p(jxJzjEX4u?8jJS=Qa?c6As=5SXOTD`>Zti6rH`_MGuy2fbD5QlAp|`fz zhbbp8`?&t=GDl;i`1`XJjXCZV(Fg`@KObCn5(ksInV%t#_*-;CR3 z{2A%m$yyeP{3Ku%Q2U^u$eblWbr(f`hK$O% z)-8(mf6)k>S-yYt2B1mBC$cUf6g2{ zB%wKjJr(V>JfVXCW`Zt+G`k%sT8nvnOv0Eq$1s65q6#C!Wuc7t4Yg7<<)CEJBHTu- z#$%tpS~HZUdiBySr_s#is7I(_f3eRO=1_+9N2>rVU|dJoo>l_ z32Us7y?{MM)J<(Xr%KDoK}*r%Z7HKvXz^7xhTSc+7OgfO;SG(>`A8$xitaf!5=kl$ zH#HIdpi`htjE$rllhVA#QrYH@S=X}Af{YQg4?QuSGH}G=bZf1~H5c0_>^rj@by~7T z+2ADfJvX#8*zp{h1Pk1UsgfdM2N zyvCu^L<%aW4Tgj`OZ0JC;@Cj{7wO#Tvlm3Sij<~G!eoqc<+9hIg0XI+jfuT39cw`Q zL?YN(LtRUjCW4^a>95uF#zvEsrhTGG#+yG>`(FN_X#L%NZyhk8bWnfp2yLF(J+Wek zZvye}GoT3TFKtdM*2bPUW`?n~oQgpK!-pHU4KaL(acZTfJxG?d@pPGnw`t?Xc4MKZjdwddFvhOijYu^QzXHG&~JR)=BCLbkA7Gqx@A0x7JgXM`eQJAoO;u1r*U887b_)O5^tt;Lf@}DVDH< zywp=&qOwYQysx7>kmTIcrqFr4XF>D0Dps;2^Bj>8jMhaFE z4fgti>5v5Sk?8(9)?!vz$hz){OKqZ4xjp@{Y|~QMz8EnWT7CM~N2aj+t4Y_Erg$mD ziN-rC73~@o@6nEnaQ4I-7p-foX#`W!9wR5tvRjLw6h{NhYDqJsue~1aG8n^kzDgg9 zR$`c->C*}FC@+rQXwQjA)Dz%3Jz`U`i?O`x-YD}A)0uV?B;Sn{$888ALzxRTD}{$D zN{~=Vwkou=jaJ`7;!zz`3eP*`4>X_@G&jA@g*WM`2#hU_S!3EVYO4gP5n;Btd3y*-tu;M4U0B^qJCh~FieX8( z;BqfU@>R7qA+w7auCd*+?2J&!C<4@oI$q68Vr*rkLqDvVsCH_3YyUI?q-gF)U~0pb zm=_iZ$yBX5fWg9fLTrkrUj`1H6b#Y19HaNO8hgLQqAj* zYH*7##i_DMVSFjYL~;!(300X&)NxXh_F+BISNrWcOjW8Tj`%vuX!6X@Z$?sMzFG;H43^* z&1kB09$wHL5-iQ<`u{EA)EOz;j_Z!zQSEW6Q@xHV$oJ{|im0o1Xr<~BJT$i0qoAC^ z%AW?+=m=L@u99sIZyrSo>Di;1QDVkwNgp&ulb|b4J#vkyS8w9RvCeNwW|+;wh*O8d z^Jp3^+U=`k`ft*BS4cb2Xket3j@>oT*l~GaW|b1aqp&iH7iO9<&FYcPgRrniM2vEc z{N)6;iR@A;jJEDQp8dQjRdtQlh>GN}%PQaOaQlT#&HkJji>FilQw+SSS~f`StDDJI z3r*gJ=A~P604}BB%q})Bik@#*L0!U!O~L}unCA&4^Ny)Zn_@nMG^T^+GmL# z?w@1pRz{`NF`|e03IT$v$26T}knOi$*W-(C7QD+j#~uU56L$C0j>#VK)|AMK76pfj z%P%6W&CwRTXcc*87H=B8U-1f5lC8F>0W-qiT8b{ou)vLI?_0^`x4}&tHql9FO^&+6 zIeTL6Qc_qob(=pG-ZU;?z@PFCUj==Ut0-%(3C} zWL#s^rrDUBC?&Y);7MQ2Xr_sa_j*b_rVelXM0W1Y(q(*nVw{atZ@k&TLH649s?`>J zO`>LAm5!R<F-v1EeVsX{iDMwW!wSggh|UcIci2;GmNIYaq)3@s&3Me1r2 zpSb?16pL<98=biwk`vfEF)9GPG8wJt z)hFdWD$5HiKM61IG0gj>-5!&YVQokp#7@^tfUssmU8dUt z$F5oOTTxQ<3&IuqcQiK1$ZS6Ma2gHSRI{R1KYuJ*hlq^!(+z!=gVkp7>^(7b@FUOI zT}OA;_6aOIW@F6UG-`WRcX37>cltaa6p;fzHei4{AS+%iAfJe)boKLxm(-iZm8T-I zc^S@3^vR+Ft7d@`o&_ehTelP$k5ui>;2%EiaaF@ZwL+l^%$(+GugIQQ)G)~ZQ17%G zHl&gCwE_*dhQm44YJ6%EGrPL|U$-5s9YMQKYzA0 zq>QCU*?Dgq8^~tH&mYA$arLmmCR40iGeL8Xpf6sW^s#$Y=y@hau}Rlx`Qd~eW8>0n zmq_L9V%!f`i>|z3iYB%l>KIf_;$eCFF-MwB6upLeG%s$?(NuWSeHoY1NyB@s_su=l zLIxl0>&d2Q3>{c&rHG>JPMCmC(u*|Kcuv5$1M8m7iW!08lvq5BbvDI~F-3(m7UwRG zl&5v1{~QauXtlYwhxYPo8T^`b5inZC#WbkmE0%|?LkHxIYT^~CDPGqm^`iRp%*&q? zaAmWGYn#%9Xr+g6XS`HE4mH^{C$LKJR8uY#Bg)7Q`PsXar#?k3+s=|-X7HHriVEv< zf;A>Rb0RCOq+&}`G(5;=X zteWR>F57#K9nj|*<1h=@gBZs7iY%X|a@+47t-sT? zKQhn@?{3Q9-JHL>C4YBo{_eK?-R=3iJ3Ne7Y?M&M@W!0#DY)482%n_5li^DlQ?yWi z;VYS5?LQkH)ku|x7OQ97q9f(mW;TCqx8Omy$m>6ve?};wG-ZRs-{@@Xt z;+f$uA&_pwqmc@fs0lsTb*}KRd@~ps%cfH8eA`25t$imft(Qi5iF)RHMh_*;Q?lld z6;LJ@4ZxK3EHtR~FnK9Z%99nQ!s8_NMDr)*8J$yqberlIPxPbvRrPd#0S)OjVw?-c$lp`?iCUm@}k#Scx4ntpsKVtBx2geV7aHv0M z#E5(AV&%y9yL*k~)11OP>0R!(^0!R3Hf1m+-JeE^#qTt#9eYl9HKr$&-BAdq;!KDp z%Z9pRG!_0Gm9ccMGrtMWZJiqIo|W6QruZ9-*H6sN%%0uZyeWHVVP?*<&gT6cC)a0J zP0y@u&+gkC9N7}I90^*ND_HBYV8MaR;@P?F`)&B()ZEOny}`z{LF?Y)Sh-CbUTuCM zyWmvNwhjMa!JdxeTY^(-vxoO*cdR7wj^oEWPA=_SKecns#*R}nI;Xa07SAj$711*X zwq>R-2wDzzwC~ESTi9`Ib#VZnm&xpVL8+f^>0IBMS+R!48KBIUmTwkaALjRb|#DT<)bv@yv^fau}w zRoR29)Zm3rf=SQVAIt~9!Mv%#bpFYMV!!OlQ@Mrw(-*~lLCXw0QhvvY6CFqA(;cX^ zj`rrDc~0@CyV+UWJB}ab)7@a!%S^c@l@e7#%n)%Uxm>AQZwtA@|F6t8M?ux*k( zaV*%oh$?ZOt;;g24+fi8seiXMzumrIBWG8)2Mgy03+HJxFx*a_&Mw)OYi{XYm-(?n zS!{=snN+nL%vsuTvdy!@+kv9nHp#nFo(BKy_4y1`g=Au*DV@yp)!B7hyzEPJvP<@Q zLCZD0X5SDenwnbmP(PwwTlo(8HJ+nH$xBm!Gs?p(Q< zcd@ETxaGp2I^$d4*H5fNaCNlLu?40kso2itZJp~|va5G@PCJ=tn?`rEDOMCRBAzM2 z`lG?|BgD#WIh|dwD?4kYii6DQXrGNF={PxqF+f#GCcV5Ip{XIhbe$C@RydlbXknbS zQg;?d4rW&#&+gpXxovN-euI~p|03eKb1tvCnXK~P`36T0cAQukv~KS>MxMLY(MnW_ z3Xoa1AhUM4X9c_$v`@noG@tPM8uJ%Y-hRqk+Wk@ZiLXM~Z+wF}({d|zQ5+S740%uU zhV9dG3uk9Gws^scS(yWSv!_~uy(cJ#9_Dt>re8ZqL$n^5T}Ofi`^`yi=h3=|*9rE_ z$ZkC0!Z?S84P_#9oZg*Ta@2J_>u>7K2=~mc&AIJMb32x4Oi$gLU3!>N%7havV6I!q z_|7al8f;K|Fx3QmXVTz)?|dZsvgVYRj?-m&`?+niGgJ2vv*Y+Clf%4exka5 z5YyePcyiD6pD^gS~HkcZ| zWomBQzRsERa+_x&1C&c{-Vp}1x)EAXuxnxGv_qsBwCxSnH22^|2S2hccVdrT%gl~` zU)yP|R4YC6abDul1*fkLUS6GT-{fh;tz4QfQFi;WusCz}sVsTzEO(-v_TnXYo@r}l z%A^bEquOBCauxrq0XMJe8ql^ksb~`1a6H)j61o+#ExT)$l&n4}rPe(V9sbNfXJ$zS zQyi7eq~s%JT=6_xemhMgxN{q}*>`adGP^ce`C;B=$+qx&QD0Iw{8m(|R%ZPPCP14S zP1HGcZ7{EyVPTrk)Dga!C8zVgLCf~+q3O!ZD9qBI+h$SEB;@6G%qcDx53Dwjo4r$g z;nzS0 znfd15CVOgru=->^4O*m2edWXXW*Z_nvQ`Sz-VNwbg-Xo_(mq6SofUubYTHI7G4E@| zZx3lW#pZ0u*pE?UDEtLdk2HDdDp zIUHy9D}e6NY{9w@w=fg)B|!HmXAS&T0bQ>+zU2({qTR`ovxYF$-E&)aoSK6I`ud4g zXMQeAO{0KzuHThwohf6$nssQndgI-ztgy%|Ys(&4r3NWVMP^lVJh97%vL%GFi)%Ya zXBI5%IJG+1J&mc{E}5C}?M!^u4`fY7R^@P-M`p>X;Pf<2MXh_8FzkG06+Ww9RY(ab zn*CY%pgg_2B(tG4cLW2$A`c}ZbNW=Ua+~L5o94N#%Yv3xO6DrmEc*&-f>}ke;I~;& zs_gW`SU%82oCaa%KeJfN$6_jHm7rHJ>s6L1+g9dwt?+`=D{|Xbgxa8SIHksDx-9=# zJZNd$J_p-~E08hBoY|g~IMcc)XkLUtg6h;PzHL{R)KHOT&t|@5OwmcZq_AhYR_7V!z!xbyozp!&fn-|PK z&VpfXZsrOzU7y;_WaDK|ZSLH<)61OLXjTaAb6Jw1-Y7)p@kLtA1;;l9q;1uI)`H73 zhmLekU5pwvtK;N?;tyt-0JVa}8pDTtK1(Qq=(+ubwx7=swragwHX~|iSo#R5wzBqO zDP)S_c93P87v#2{M3z_?$KcZLRa~ zGFXBa4yeCbQ8@EJs5WEpVidGYqhqPE&lW?9Hv035JzA-DiP6zM%XF7xO9a;Zlr?DH z!Ei5Q;hH(HF*kolc9D9}EZ*4*cJF4eN#PH6?+6Yu?681zG3bOJwEDCVMjbU0!hYKZ zR(7HNDXCbYBjwxpvJw;O-WWj_Q-ML{c@1%0_jyY^e#^hy%a&G3!!I6F47e$?G*0S8D!S!FuG(~kQVDrkP zECGt?B{%m_8QOAY*`DmIqcSlx??9j$1zG}|^}8M9UGCI=co;}1%s{el2=?vsvI}Qr z7f$nXt+T^vtGM=QCNd^LnNrvxz+j2Zw9BWj6G-DdT zzJ6!(R1H#uvmJTCi9@;lCtU3neDec^9)eI;b;)>kYysMkyQ33%NW{(+FMC!#xz={Z zMcWx{E%cRi-#im5neny#z&RuXW;2WL?c%El+eqJp&j;z^EA@nlluucM&D%XYJ9yM* z$FXC%12Zu{X#t+wzRxbix;XNtT=ZS@HLCq2wV0GuAy47R2N5NiC_?agmY)}k2bU(ZCgSNe5Pu?W1L_D^LP`}vz zq$Es-v{$ZqTBc<;({8@S?W~@cb5i-3i_LPC3BYzS-ivuzv34)E%6Ddcd*}A$#MQos z=}a2pzYzV$!(hf990tbb-07kzRjbI>!*=GT=xm#GoJO59#wXnF&c0~w za0`;}<^i~n*Gz`Y;QY0^jh*u}$d4^${nKvVD>_-ICXQomDhGcq=w2e zD|a&+W?N68^P~K>NL$KpOmv){E~N=|O956OsE=&T9ccD~btkg(XF0_IZPc?B?;tC* z-2z`AosB+Uc#u7MB71DEHIF)9T3xyXuU}B>@^@wGo{L+_o@v|Y=yP7ot(cizJsZJX zhFz8?%<1f?(0`aJ%%(XzDET{Idb!ZUl(uSe?jE~&R_BJJU1Il`JO55s;pDaAH>u{ECR#MJ=_9c-X)Px-?iYujBL@Dy7tOVl&)xvPVpapP#|)ssaVZZc34g z6b-wrfBaZ>#~j2d$#-IITG}`$pK|p}!D=?^a2WeN+Y{?@JJ;}j9mi**kmY9Y zqbej}woX+&nte3pG_7IUcG`ARxx#4Lbk9F{{lrwao6yA!W42Z7(m`iR%()mvYdvE3 zeN>Oj+j3L)kgzH`Jfvc)FSqS@Fk?1_(vI_+pDM8@NthS&<^au@Z+@^O-0v^?w32+S z>RMR%{NIPN8(pfpE(b9EplwCxs@ZsU`FV5u~PQ>*JE?YP#EH#1n_z4Mc|X1U}b?Set8>8nMy!= z+Y>`-mmZtO?I5-v$e;|dRx*YlRhQ;nbU>_Uhn8|y%G#&Rku(&yQZ<-u4Q)-7gkLK9 z)G<1$xZ7;xV#Q& z`hc<4GI-6IF|t=e;X=R^CZC#%cW5hSx*nt2f%rCKcTaZbR^}@E!GSHQd6TxC(pl`g z+M#1j3RVD7L)P+5SoK?`JZ-s19JtGH(1A&UE>nVH@35C%=K&a6zrJ*1NE9~8PWF|*i4MVY7j zT0LF1>(+&Z5Vkc;Yq4iT|2w*Zqd0n=?-}_Zg)Q;?Gt5A|v3*6xk=Efo#O*lF`5r9{ z!%qj9WO2Dq2i=Zi5Ajs2qK^j|jP_8}S%P*wIn^bQs|a(tAS@(ZN9PWvwP=kqw}pe0 z-PSbu#g3AC%h0c4|1v8eqA@3s7WSdPEn3mm9;(h!#BSR%j)h4Jwz?As>%8zlkkNa* z%ntTKbVN_8k*5uP?c=OLMcV0g9@v78hN)|=F(4kDT2ODpO{TeIu`btqfc_|rOMCNe zbL^fwLeN+bWUUDe-1fu2>@*Gp&(VP7!kJJ1P+{$yNM+d# z8IO^Y*=5_WZ4P^JR?QDq97L0)OBPp*`ZWVHvuzUzQ;KYxIV3`-XwA&tm)SK-_7V(p z`(9ASX5+_cDaNpBs@iU3nngi=&(fJ(_Dp9Bfb6ZES4o_4Fo`4xVCQb?rQ;|k4)<+0IIS*M{6_b{@7(wd-m1C4Iza_nf>3{3kqmEjtMY3)rgIw=c7Co5!%= z7)-uu^~s(lX*Tap&1ICZUw~q>YC7*K^Mg^;X|nZJ-dig`@$o)_S_7|2M>vE(vXX|d zCQvKqgV3r#755wt6O~Kb7?%{NFaek;!J0&DU8-=inkAD>#V{*Kpklu*s!r*nq(8=t1TPiU$&8aUV+q-?iXVcFc^^~bG(kY7_bEq5Q7p!$QwCi`A{WQju zLeAZascyY+C$lEetj=k-_bDSrdbT~xA?nQX7!K*uK+ zoV;f7jbe&zF__6lj6K!tP5|3N*|VsKU(DAS{)`?U!rB8+on;oV`%K*&v)60m(e6xJ zxD!Kqjg==DY3ze+=YRTHIO}OnV!9~KBx1#q)eD@AI#vymNUjQT4vBJ(|;J2XIF3tD!fjMLN@3isO+!jb^_Dae^c=^e&u zWp~isZuUdw<33DVs7Cyg&ic~NIV6AcyU)Q(i!*x{c-e!^opX_!I&|LE(RKILb%|hJ zYp}VEQ@Jxb7p~y{PiXc|Rjpk%Lc2IrLe)A)-DGBCPTfT+MLUH$R>M$Ry0>#C<+0~H zb&kN^@lBt*GvD;NT}0m8ZFYq_S#Cp1eS6_N&wj*5@u+E+x2-du@AtyHoAP%z=kIRG z-`$$OyDfird;abYkKrBcozFVFa7WV@9Q4G3!*eR7v8izKS||N^>7Kvbv+t`)Rufu; zJ=z*5yMMlC?O)+Xdw%D<`_yLeAt)rDaq*3 d#u=AYX!rZ*Yp9qSEmB<tX`^;xP_ult2f4>*!-ZOQlOX&CW12Uj3ZSZxJfqaBbF{qc-ZZLKtAA-$s1h%GsV;qSd6wJgv_#nyvN>K)MK2Lwc^{Y_YO~zB0jm}Xdx`kSMwFqUTDJV<% zI0j=0%F>@kR@Hb0o1ux)!KWw#{}H7=u&-foyBOifA{aAJRwxyhU^dFiyxf=dCvAB6 z(+}H*S$h|a(!e_GfUzTty1%bE=AI5SFz>f4H24f2h(fI+`gnXpV55o!MM`Lq*6s5yF48$Uoe)iy0 zJc6=fZYPPyNPLHKVb(ya;!%{FtpugK0;R#zI)4sjKv#76Eu2XHX#j|plrzl zC=+pFYb-!%*QrQ2NF2g2Y&VEU1EX;`rlIWh3G~OaD0_DvrNQ4}Aij)k@LiOZ@t{oL z6O>oUPsrGePJ^v`W&*MzPGb%Unb}g587R_vGLWxOmhfjBhpo6H zm*NbZfG2P|NY~EtuX`EJ3-8I}Nis z-hi>>^HFB>B1%W^q0IanybJ%K^KIEjS;;Oa^*vEmydOF{kr+fmWev2#c1C$jV&**1j8nP=!t@hKAtbb<; zy73y66QYp8`(BF!@hW*4z(*K^KjR!6MW#0vq10ES?ClG<5a*3H3~mqOG_niE+jtpU zGdt<89=qUMP7-Xl@dYw@BV?>$@D??epgdNO;}R^w>G&}&#&D)99ps@r-&asp;4S{h z)&-5%dyT%mM%lVS+9;H*bB-d>i^N3q$0S{`7MGIGz%YCPd*at94R)Adb<_oAr9w~! z6o+yTJces<8?p<=*SH!7@RpJR?m})xr*VjcjO>I}V4Ou6NDa#4b`7P2XR$l}6}w@( zNrrJRhT{X6fvmFeGWNwlDuXc+`{68Xh1uH87$DF8b`t(n>_K^K_M_ajXHg!P8z@Wl zwDtv*8NP-xzzHj}OT&M4>iK{+oHrTwwkj{c2Vy5fG6JztBmL=Np^ zx_m3j%yy%1V7mNi?Mo=vy`%FVV>|Mn>-d90k(gt0)b=i_(!tpZE<1k^c#s zVaF-fO5KC9HGNP99*%O|D3tbMQ6@4Q<+=qZ=PkwdxOxifFCDJeC*-4CSd6k2dr&T@ zz#)EyaSpfO`%|qq*~;nGo6Ui9IqzxY{xdqxu;Pn8h9N0;XWLRzd`wi{D9I<_j7P?PBam ze!0$PqO`XW1F-;QWp<%#U77YghLHcAlY}f~1Ip6;p!Hv3<=dci*hSj|rQuMNfkog* zT!jPh5VpnV@NRq)Wk6q`JQaUO>BpaMyY%a9LqbmIjzKs;=O^fV9Lj}>x_lkVfHvs7 zQ(J;^vmQXX$=<+d9C4qurD-TD`U>{MFObi+(`dVl$AE$ql*i;YhT(fCGiq`_&omCg z4R{<^VK=Upfje<3mY~e&4U~zvP-glg%DvNcxmDi+p5*aN@O`3@_r_Ijbzk3_!2#x!j0B(Yr*co5};)3^|? zp{zigl~(;ow2_ZR>3B8Dz*14(kn2&(x8MlehBBe2P}+MBLotH=nSzVZDFuf~h|gdr zY(QDkpHW^!Q&{g_n1%AwYahzvbp`p(7$$bb$VAIHe4KnT@=`UtC|eqxWZkSQu$cV* zB=%qSrjOkkX*9-=pNnI$82jMwQD*i9@_-nB!&r=4&A;ARYNkT?=7@Ok>lzZVE%5#1LWgx#rY3O+j!~f9wKWMGcKpao`T;y$S z?8F)9LRrBf>#P-yM;S;e`ktO+I&lG8Qc;J};d3ZY!3(l5lxUP#ZOH2fB}#XqATHXaj5Y|$C{@5pk<`(PgF`*mJ!!p7sh z#svNQS_-2;W@h8$7j@-*`ob~fA0s{@`VoAIeMdj)yXbQ~x=d)Q%Oou?D|rLTF<+Pa zYvn2VUiu$IL3>^JM+#*H$_P1Pb@@fo1Bqvdp~OVW_u>>Hml&zfBWe7dc$SbAYfJe7 zl%s}_Pj=(+A&H%`|BE=OKas6#{tJ8P20zth1vri9s>_>_mapLpL?C6CQI4UcI}ZEaOR zi9ZvQIp+#~K}3+AMocHRlaC{!NN>W%<9!mrl=<$zD0oWJ`uI=mNwoBxz>iJRZxS5| zIVKXBzLa59;miMxowMC0){5x#A%`2kTYJMo&%@7LC9 z$8dg}ZtEOneMnEoe-QP=?+ND<{255aHQY?p5x+c^>dYJ*t%}meEa2V4P9=6*yrf1v6B-qww+E>P1VvYznbV}-I}Q9mv>hymUrp9(VmcL#IMcHbR;EgG~$z)viylL z;?sQv*>@On;agWz|NTBP(I`YV}@HZxvvlr54$Tt6lbPEs`@GSvFcx&)KJ`(W@t`6RX2} zCZ}a**^N{m4kI-^Eo-gy*I`J9YTlZV_Kk~cWY{wu>1ko=#+rle9f|3gcEk7AmXwfX zS0!u1TPD+%gFg=S;#yl*dum1sHPWZu$V$#iu^ZXU#@DVhc}L9fL6JiT4IOD48Wj^2 zF)(6eL`2}M1V`4O_{@Yf2Un(N#@IGyr>)tTooE}gabw~HhuxmFad3L(nwnV;1~j?L zee{M~9khk^^R?aIVN-QGdaC@C?*0vxr`5@nRY~sZ6H>h~!%nT|U>=$DRS((|v&fp) zE}PZ+&GIVu-a60KQ|9@D)(NYV?I}srdyiNCB`4Rgn(!6Mz^QPb%X8h@u3O8qSjgLMC1J>aRXao6;`SHwO3Ki{`N- z^rTj#j|(sl9def!syEUHsDO-Em6S0)(!FE1S-7vE zE-rHK-D*rqPhXdskhw0!p5;(qXN+rc?TYtgJvD08L-#iKp5Nv^bR|aBJ>=-!kh9Nw zpu#LHXgIis=Gbzf-hR!@FP1i58xh&kb^S&| z?McbKl{wijMg=~U&S zc2_55(hbYxx^+}~-n-ST-e+Fi#riWJo0(HA`TQ-i>i_E#y>-{k{FAQhIb80pKF(a^ za;wx`UgRz-lr>v8c!3Js&>_fm^Q3Jl$Dp{lL6axj+(+xox>B`rLr_n->Q}YXrp3g? z{owT{l_YI@_SAq2bXZ zM%uiETW!8%w9R#+n4a$J&p+q%KQ4@j{6Ab{?X)`kNOyJek+ID^7xG-Ui(}NMzeq=J zTBJ%gjRd* zPVH?tx>-I8Jap#a9K&o;aM7%Jl5SMf$4%SqGv(faqsipu3em4?&cx( z9w>8N-)`n__EueT@4e=&ERlWuhqJq~<#Z2Vr0)D;b#G3bzZ4(NvF+Y`w{qv)H`KG| zl1$%q^RoB&X0z~Y!+{fqO#XU~;V#_84w=Peu3P1XJjeR+>5S;Y%rJm4nHE!B-*HpRlN?BA_ZHe_ZY}j%u$i4r9Y{kV= z^THE6dS>BCT2YU$@8-|rt#;*iRzU?_Y923$_Ujzl@8N`$YO1Gu z)^_*&>uTAUcenm2z^uFKyEu5pq6b)!ro+I5nRn#fib34D`)H(BFoxT}e_41OD z-BKajW~g)9ddB2jX5;U?7aBHSXRTvwVWIu_geCNMgxO?$%d2>cC$3FTPP9AjdQ%DIm#!(vox#oTDXsPt9gx0wgSoC>W(&)68p^J*Q?!(tupxyXXjyCf zJNnCDxGxRQt|Mmtb-5ybdR**^DRbt>O^jE~cPtr3@1Aq#xGW_(t?{eHrz0UNE0ZsW z&AfEZopYKQST6!=?bPQx#syd(5*1l$Yx&P_O69?zmhN+vo@-U!x(n3V)eohQscAbq z1emujnOjQLzMUZv@^qXj^FFcHTUll9J@3A}TUMxar|b41TUbV>{o!Q$`Y@Zja4)%Z z2e0_gcji0q4B^gQW}e@|H`Vi`;*HUeQ`)e3N5i3;X7$d7EmvJPpEQqNGIwp`L(5a{ zdGfO7i36VVm7bjirmFn1uEf2y$b058i|@LTZ(h9QF5lukecXMiR&KVu3h%kY);Ghf z-|o%XDR;C=-aV_yV4J$Wd#IECtkq~ZSmnB1|I2&VU6f^KWh<+!bN`>sFbwMvvbIv@cBe?5sQUbd@|>D;YNp>< z&fHqWZww~uxmspk+-|+0Sw7dT0=aQZ^4-PfSX{HB!g^?FO~2=DYDn2)Rkk-o74B_2 zr2L$DM=$g-k;vuQ(nyOnx)6Rg(WKVK>r9{m1fQ^^LC+o+a-5(kqr6zcJ2_ij@P97QZB1! zz0|CCoN^pk+gFBgy@=(g^w#ePH+YG93U9mjUXaIzUqLqHc~hefzCM{rbGav{)O+fd zd7z5^UAGIY8`&(Y;5}wbdK)|)x11K zJysqZWc_UNR&8@{zF;J#C)s_!Tp;W0gZ zy;^sM!F#}6UO^3i4c19Uz3cFTwhc$C-Nz2g%1fvoN1|2Uk?_v^IOCE6cB0T1*2=2T zie9aKUl_wxTT7X8Ry-8!-CAQbY~5~N++ptAWiT1$=B>JE7Hm@yM}yR?qeI$QPn%(( pb{-8MRp~xlZ#8Q0S#PK;`SmUua(hT{2ZozFPldZ~RPfz2{u>gQ(Z>J) diff --git a/django/conf/locale/zh_TW/LC_MESSAGES/django.po b/django/conf/locale/zh_TW/LC_MESSAGES/django.po index 70ff1bd0f5..650ac5b912 100644 --- a/django/conf/locale/zh_TW/LC_MESSAGES/django.po +++ b/django/conf/locale/zh_TW/LC_MESSAGES/django.po @@ -1,21 +1,1186 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. +# zh_TW translation for Django. +# Copyright (C) 2005-2007 +# This file is distributed under the same license as the Django package. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: django v1.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-16 10:13+0200\n" -"PO-Revision-Date: 2005-12-28 23:30+0800\n" -"Last-Translator: yungyuc \n" +"PO-Revision-Date: 2007-04-05 01:32+1000\n" +"Last-Translator: terryh \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +#: db/models/manipulators.py:307 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "含有 %(type)s 的 %(object)s 對給予的 %(field)s 已經存在了。" + +#: db/models/manipulators.py:308 contrib/admin/views/main.py:335 +#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339 +msgid "and" +msgstr "和" + +#: db/models/fields/related.py:53 +#, python-format +msgid "Please enter a valid %s." +msgstr "請輸入正確的 %s。" + +#: db/models/fields/related.py:642 +msgid "Separate multiple IDs with commas." +msgstr "用逗點分隔IDs" + +#: db/models/fields/related.py:644 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "按住 \"Control\", 或者在 Mac 上按 \"Command\", 以選取更多值" + +#: db/models/fields/related.py:691 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "請輸入有效的 %(self)s ID。輸入值 %(value)r 是錯誤的。" +msgstr[1] "" + +#: db/models/fields/__init__.py:42 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)s 有 %(fieldname)s 已經存在。" + +#: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274 +#: db/models/fields/__init__.py:610 db/models/fields/__init__.py:621 +#: oldforms/__init__.py:357 newforms/fields.py:80 newforms/fields.py:376 +#: newforms/fields.py:452 newforms/fields.py:463 newforms/models.py:178 +msgid "This field is required." +msgstr "這個欄位是必須的。" + +#: db/models/fields/__init__.py:367 +msgid "This value must be an integer." +msgstr "這個值必須是整數。" + +#: db/models/fields/__init__.py:402 +msgid "This value must be either True or False." +msgstr "這個值必須是 True 或 False。" + +#: db/models/fields/__init__.py:423 +msgid "This field cannot be null." +msgstr "這個值不能是 null。" + +#: db/models/fields/__init__.py:457 core/validators.py:148 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "輸入一個 YYYY-MM-DD 格式的有效日期。" + +#: db/models/fields/__init__.py:526 core/validators.py:157 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "輸入一個 YYYY-MM-DD HH:MM 格式的有效日期/時間。" + +#: db/models/fields/__init__.py:630 +msgid "Enter a valid filename." +msgstr "輸入一個有效的檔名。" + +#: db/models/fields/__init__.py:751 +msgid "This value must be either None, True or False." +msgstr "這個值必須是 None, True 或 False。" + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "阿拉伯語" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "孟加拉語" + +#: conf/global_settings.py:41 +msgid "Catalan" +msgstr "嘉泰羅尼亞語" + +#: conf/global_settings.py:42 +msgid "Czech" +msgstr "捷克語" + +#: conf/global_settings.py:43 +msgid "Welsh" +msgstr "威爾斯語" + +#: conf/global_settings.py:44 +msgid "Danish" +msgstr "丹麥語" + +#: conf/global_settings.py:45 +msgid "German" +msgstr "德語" + +#: conf/global_settings.py:46 +msgid "Greek" +msgstr "希臘語" + +#: conf/global_settings.py:47 +msgid "English" +msgstr "英語" + +#: conf/global_settings.py:48 +msgid "Spanish" +msgstr "西班牙語" + +#: conf/global_settings.py:49 +msgid "Argentinean Spanish" +msgstr "阿根廷的西班牙語" + +#: conf/global_settings.py:50 +msgid "Finnish" +msgstr "芬蘭語" + +#: conf/global_settings.py:51 +msgid "French" +msgstr "法語" + +#: conf/global_settings.py:52 +msgid "Galician" +msgstr "加里西亞語" + +#: conf/global_settings.py:53 +msgid "Hungarian" +msgstr "匈牙利語" + +#: conf/global_settings.py:54 +msgid "Hebrew" +msgstr "希伯來語" + +#: conf/global_settings.py:55 +msgid "Icelandic" +msgstr "冰島語" + +#: conf/global_settings.py:56 +msgid "Italian" +msgstr "義大利語" + +#: conf/global_settings.py:57 +msgid "Japanese" +msgstr "日語" + +#: conf/global_settings.py:58 +msgid "Kannada" +msgstr "坎那達語" + +#: conf/global_settings.py:59 +msgid "Latvian" +msgstr "拉脫維亞語" + +#: conf/global_settings.py:60 +msgid "Macedonian" +msgstr "馬其頓語" + +#: conf/global_settings.py:61 +msgid "Dutch" +msgstr "荷蘭語" + +#: conf/global_settings.py:62 +msgid "Norwegian" +msgstr "挪威語" + +#: conf/global_settings.py:63 +msgid "Polish" +msgstr "波蘭嶼" + +#: conf/global_settings.py:64 +msgid "Portugese" +msgstr "葡萄牙語" + +#: conf/global_settings.py:65 +msgid "Brazilian" +msgstr "巴西語" + +#: conf/global_settings.py:66 +msgid "Romanian" +msgstr "羅馬尼亞語" + +#: conf/global_settings.py:67 +msgid "Russian" +msgstr "俄語" + +#: conf/global_settings.py:68 +msgid "Slovak" +msgstr "斯洛伐克語" + +#: conf/global_settings.py:69 +msgid "Slovenian" +msgstr "斯洛維尼亞語" + +#: conf/global_settings.py:70 +msgid "Serbian" +msgstr "塞爾維亞語" + +#: conf/global_settings.py:71 +msgid "Swedish" +msgstr "瑞典語" + +#: conf/global_settings.py:72 +msgid "Tamil" +msgstr "坦米爾語" + +#: conf/global_settings.py:73 +msgid "Telugu" +msgstr "泰盧固語" + +#: conf/global_settings.py:74 +msgid "Turkish" +msgstr "土耳其語" + +#: conf/global_settings.py:75 +msgid "Ukrainian" +msgstr "烏克蘭語" + +#: conf/global_settings.py:76 +msgid "Simplified Chinese" +msgstr "簡體中文" + +#: conf/global_settings.py:77 +msgid "Traditional Chinese" +msgstr "繁體中文" + +#: utils/timesince.py:12 +msgid "year" +msgid_plural "years" +msgstr[0] "年" +msgstr[1] "" + +#: utils/timesince.py:13 +msgid "month" +msgid_plural "months" +msgstr[0] "月" +msgstr[1] "" + +#: utils/timesince.py:14 +msgid "week" +msgid_plural "weeks" +msgstr[0] "週" +msgstr[1] "" + +#: utils/timesince.py:15 +msgid "day" +msgid_plural "days" +msgstr[0] "天" +msgstr[1] "" + +#: utils/timesince.py:16 +msgid "hour" +msgid_plural "hours" +msgstr[0] "小時" +msgstr[1] "" + +#: utils/timesince.py:17 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "分鐘" +msgstr[1] "" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "星期一" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "星期二" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "星期三" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "星期四" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "星期五" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "星期六" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "星期日" + +#: utils/dates.py:14 +msgid "January" +msgstr "一月" + +#: utils/dates.py:14 +msgid "February" +msgstr "二月" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "March" +msgstr "三月" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "April" +msgstr "四月" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "May" +msgstr "五月" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "June" +msgstr "六月" + +#: utils/dates.py:15 utils/dates.py:27 +msgid "July" +msgstr "七月" + +#: utils/dates.py:15 +msgid "August" +msgstr "八月" + +#: utils/dates.py:15 +msgid "September" +msgstr "九月" + +#: utils/dates.py:15 +msgid "October" +msgstr "十月" + +#: utils/dates.py:15 +msgid "November" +msgstr "十一月" + +#: utils/dates.py:16 +msgid "December" +msgstr "十二月" + +#: utils/dates.py:19 +msgid "jan" +msgstr "一月" + +#: utils/dates.py:19 +msgid "feb" +msgstr "二月" + +#: utils/dates.py:19 +msgid "mar" +msgstr "三月" + +#: utils/dates.py:19 +msgid "apr" +msgstr "四月" + +#: utils/dates.py:19 +msgid "may" +msgstr "五月" + +#: utils/dates.py:19 +msgid "jun" +msgstr "六月" + +#: utils/dates.py:20 +msgid "jul" +msgstr "七月" + +#: utils/dates.py:20 +msgid "aug" +msgstr "八月" + +#: utils/dates.py:20 +msgid "sep" +msgstr "九月" + +#: utils/dates.py:20 +msgid "oct" +msgstr "十月" + +#: utils/dates.py:20 +msgid "nov" +msgstr "十一月" + +#: utils/dates.py:20 +msgid "dec" +msgstr "十二月" + +#: utils/dates.py:27 +msgid "Jan." +msgstr "一月" + +#: utils/dates.py:27 +msgid "Feb." +msgstr "二月" + +#: utils/dates.py:28 +msgid "Aug." +msgstr "八月" + +#: utils/dates.py:28 +msgid "Sept." +msgstr "九月" + +#: utils/dates.py:28 +msgid "Oct." +msgstr "十月" + +#: utils/dates.py:28 +msgid "Nov." +msgstr "十一月" + +#: utils/dates.py:28 +msgid "Dec." +msgstr "十二月" + +#: utils/dateformat.py:40 +msgid "p.m." +msgstr "" + +#: utils/dateformat.py:41 +msgid "a.m." +msgstr "" + +#: utils/dateformat.py:46 +msgid "PM" +msgstr "" + + +#: utils/dateformat.py:47 +msgid "AM" +msgstr "" + +#: utils/dateformat.py:95 +msgid "midnight" +msgstr "午夜" + +#: utils/dateformat.py:97 +msgid "noon" +msgstr "中午" + +#: utils/translation/trans_real.py:358 +msgid "DATE_FORMAT" +msgstr "N j, Y" + +#: utils/translation/trans_real.py:359 +msgid "DATETIME_FORMAT" +msgstr "N j, Y, P" + +#: utils/translation/trans_real.py:360 +msgid "TIME_FORMAT" +msgstr "P" + + +#: utils/translation/trans_real.py:376 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y" + +#: utils/translation/trans_real.py:377 +msgid "MONTH_DAY_FORMAT" + +msgstr "F j" + +#: oldforms/__init__.py:392 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "確定你輸入的文字少於 %s 個字。" +msgstr[1] "" + +#: oldforms/__init__.py:397 +msgid "Line breaks are not allowed here." +msgstr "這裡不允許斷行" + +#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "選擇一個有效的選項: '%(data)s' 不在 %(choices)s 中。" + +#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:150 +#: newforms/widgets.py:174 +msgid "Unknown" +msgstr "未知" + +#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:143 +#: newforms/widgets.py:174 +msgid "Yes" +msgstr "是" + +#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:143 +#: newforms/widgets.py:174 +msgid "No" +msgstr "否" + +#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "没有檔案被提交。請檢查表單的編碼類型。" + +#: oldforms/__init__.py:674 +msgid "The submitted file is empty." +msgstr "提交的檔案是空的。" + +#: oldforms/__init__.py:730 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "輸入 -32,768 到 32,768 之間的一個整數。" + +#: oldforms/__init__.py:740 +msgid "Enter a positive number." +msgstr "輸入正整數。" + +#: oldforms/__init__.py:750 +msgid "Enter a whole number between 0 and 32,767." +msgstr "輸入 0 到 32,768 之間的一個整數。" + +#: contrib/localflavor/no/forms.py:15 +msgid "Enter a zip code in the format XXXX." +msgstr "用 XXXX 的格式輸入郵遞區號。" + +#: contrib/localflavor/no/forms.py:36 +msgid "Enter a valid Norwegian social security number." +msgstr "請輸入一個有效的挪威身份證號碼。" + +#: contrib/localflavor/it/forms.py:14 contrib/localflavor/fr/forms.py:17 +#: contrib/localflavor/fi/forms.py:14 contrib/localflavor/de/forms.py:16 +msgid "Enter a zip code in the format XXXXX." +msgstr "用 XXXXX 的格式輸入郵遞區號。" + +#: contrib/localflavor/jp/forms.py:21 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "用 XXXXXXX 或 XXX-XXXX 的格式輸入郵遞區號。" + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "北海道" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "青森" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "岩手" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "宮城縣" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "秋田" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "山形" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "福島" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "茨城" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "櫪木" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "群馬" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "埼玉" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "千葉" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "東京" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "神奈川" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "山梨" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "長野" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "新瀉" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "富山" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "石川" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "福井" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "岐阜" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "靜岡" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "愛知" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "三重" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "滋賀" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "京都" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "大阪" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "兵庫" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "奈良" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "和歌山" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "鳥取" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "島根" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "岡山" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "廣島" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "山口" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "德島" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "香川" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "愛媛縣" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "高知" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "福岡" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "左賀" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "長崎" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "熊本" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "大分" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "宫崎" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "鹿兒島" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "琉球" + +#: contrib/localflavor/br/forms.py:18 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "用 XXXXX-XXX 的格式輸入郵遞區號。" + +#: contrib/localflavor/br/forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "電話號碼必須是 XX-XXXX-XXXX 格式。" + +#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:46 +msgid "Enter a valid Finnish social security number." +msgstr "請輸入一個有效的芬蘭身份證號碼。" + +#: contrib/localflavor/uk/forms.py:18 +msgid "Enter a postcode. A space is required between the two postcode parts." +msgstr "輸入郵政區號。兩組的必須要有空格" + +#: contrib/localflavor/de/forms.py:63 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format" +msgstr "" +"以 XXXXXXXXXXX-XXXXXXX-XXXXXXX-X 的格式輸入一個有效的德國身份證號碼。" + + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "巴登符騰堡" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "巴伐利亞" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "柏林" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "勃蘭登堡" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "布萊梅" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "漢堡" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "黑森" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "梅克倫堡-前波莫瑞" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "下薩克森" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "北萊茵-威斯特法倫" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "萊茵蘭-普法爾茨" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "薩爾蘭" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "薩克森" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "薩克森-安哈爾特" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "石勒蘇益格-荷爾斯泰因" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "圖林根" + +#: contrib/localflavor/usa/forms.py:18 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "以 XXXXX 或 XXXXX-XXX 的格式輸入一個郵遞區號。" + +#: contrib/localflavor/usa/forms.py:51 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "以 XXX-XX-XXXX 的格式輸入一有效的美国身份證字號。" + +#: contrib/sessions/models.py:68 +msgid "session key" +msgstr "session 鍵值" + +#: contrib/sessions/models.py:69 +msgid "session data" +msgstr "session 資料" + +#: contrib/sessions/models.py:70 +msgid "expire date" +msgstr "到期日期" + +#: contrib/sessions/models.py:74 +msgid "session" +msgstr "session" + +#: contrib/sessions/models.py:75 +msgid "sessions" +msgstr "sessions" + +#: contrib/auth/forms.py:17 contrib/auth/forms.py:138 +msgid "The two password fields didn't match." +msgstr "兩個密碼欄位不同。" + +#: contrib/auth/forms.py:25 +msgid "A user with that username already exists." +msgstr "一個相同名稱的使用者已經存在。" + +#: contrib/auth/forms.py:53 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "你的Web瀏覽器好象不允許使用cookie。登入時需要使用cookie。" + +#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "請輸入有效的使用者名稱與密碼。請注意兩個欄位都有分大小寫" + +#: contrib/auth/forms.py:62 +msgid "This account is inactive." +msgstr "這個帳戶未啟用" + +#: contrib/auth/forms.py:85 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "這個電子郵件地址没有和任何用户帳號有關聯。你確定你已經註冊了?" + +#: contrib/auth/forms.py:117 +msgid "The two 'new password' fields didn't match." +msgstr "兩個'新密碼'欄位不一致" + +#: contrib/auth/forms.py:124 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "你的舊密碼不正確。請重新輸入。" + +#: contrib/auth/views.py:39 +msgid "Logged out" +msgstr "登出" + +#: contrib/auth/models.py:38 contrib/auth/models.py:57 +msgid "name" +msgstr "名稱" + +#: contrib/auth/models.py:40 +msgid "codename" +msgstr "代碼" + +#: contrib/auth/models.py:42 +msgid "permission" +msgstr "權限" + +#: contrib/auth/models.py:43 contrib/auth/models.py:58 +msgid "permissions" +msgstr "權限" + +#: contrib/auth/models.py:60 +msgid "group" +msgstr "群組" + +#: contrib/auth/models.py:61 contrib/auth/models.py:100 +msgid "groups" +msgstr "群組" + +#: contrib/auth/models.py:90 +msgid "username" +msgstr "使用者名稱" + +#: contrib/auth/models.py:90 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "必須。不超過30。只能用能字母數字與底線(字母、數字和底線)。" + +#: contrib/auth/models.py:91 +msgid "first name" +msgstr "名字" + +#: contrib/auth/models.py:92 +msgid "last name" +msgstr "姓氏" + +#: contrib/auth/models.py:93 +msgid "e-mail address" +msgstr "電子郵件地址" + +#: contrib/auth/models.py:94 +msgid "password" +msgstr "密碼" + +#: contrib/auth/models.py:94 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "使用 '[algo]$[salt]$[hexdigest]' 或是 修改密碼表單." + +#: contrib/auth/models.py:95 +msgid "staff status" +msgstr "工作人員狀態" + +#: contrib/auth/models.py:95 +msgid "Designates whether the user can log into this admin site." +msgstr "指定是否使用者可以登入此管理網站。" + +#: contrib/auth/models.py:96 +msgid "active" +msgstr "活動中" + +#: contrib/auth/models.py:96 +msgid "" +"Designates whether this user can log into the Django admin. Unselect this " +"instead of deleting accounts." +msgstr "指定是否使用者可以登入此管理網站。用取消選擇來取代刪除帳號。" + +#: contrib/auth/models.py:97 +msgid "superuser status" +msgstr "超級使用者狀態" + +#: contrib/auth/models.py:97 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "指定是否使用者可以登入到這個管理網站" + +#: contrib/auth/models.py:98 +msgid "last login" +msgstr "上次登入" + +#: contrib/auth/models.py:99 +msgid "date joined" +msgstr "加入日期" + +#: contrib/auth/models.py:101 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "除了手動指定的權限之外,這個使用者也會得到其群組擁有的所有權限。" + +#: contrib/auth/models.py:102 +msgid "user permissions" +msgstr "使用者權限" + +#: contrib/auth/models.py:105 +msgid "user" +msgstr "使用者" + +#: contrib/auth/models.py:106 +msgid "users" +msgstr "使用者" + +#: contrib/auth/models.py:111 +msgid "Personal info" +msgstr "個人資訊" + +#: contrib/auth/models.py:112 +msgid "Permissions" +msgstr "權限" + +#: contrib/auth/models.py:113 +msgid "Important dates" +msgstr "重要日期" + +#: contrib/auth/models.py:114 +msgid "Groups" +msgstr "群組" + +#: contrib/auth/models.py:258 +msgid "message" +msgstr "訊息" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "th" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "st" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "nd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:17 +msgid "rd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:47 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f 百萬" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:50 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f 十億" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:53 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f 兆" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "one" +msgstr "一" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "two" +msgstr "二" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "three" +msgstr "三" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "four" +msgstr "四" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "five" +msgstr "五" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "six" +msgstr "六" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "seven" +msgstr "七" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "eight" +msgstr "八" + +#: contrib/humanize/templatetags/humanize.py:68 +msgid "nine" +msgstr "九" + +#: contrib/contenttypes/models.py:36 +msgid "python model class name" +msgstr "python模組名稱" + +#: contrib/contenttypes/models.py:39 +msgid "content type" +msgstr "內容類型" + +#: contrib/contenttypes/models.py:40 +msgid "content types" +msgstr "內容類型" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "重導向自" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "應該是一個絕對路徑,不包括網域。例如:'/events/search/'。" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "重導向到" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "此可為一絕對路徑 (如上) 或一個以 'http://' 開頭的完整 URL。" + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "重導向" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "重導向" + +#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315 +msgid "URL" +msgstr "URL" + +#: contrib/flatpages/models.py:8 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "例如: '/about/contact/'。開頭與結束都一定要有斜線。" + +#: contrib/flatpages/models.py:9 +msgid "title" +msgstr "標題" + +#: contrib/flatpages/models.py:10 +msgid "content" +msgstr "內容" + +#: contrib/flatpages/models.py:11 +msgid "enable comments" +msgstr "啟用評論" + +#: contrib/flatpages/models.py:12 +msgid "template name" +msgstr "模板名稱" + +#: contrib/flatpages/models.py:13 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "例如: 'flatpages/contact_page'。如果沒有提供它,系統會使用 'flatpages/default.html'。" + +#: contrib/flatpages/models.py:14 +msgid "registration required" +msgstr "需要註冊" + +#: contrib/flatpages/models.py:14 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "如果此項被選取,則只有登入的使用者可以檢視頁面。" + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "簡平頁面" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "簡平頁面" + #: contrib/comments/models.py:67 contrib/comments/models.py:166 msgid "object ID" msgstr "物件 ID" @@ -88,7 +1253,6 @@ msgid "" msgstr "如果此評論不恰當則選取這個方塊,其將以 \"此評論已被移除\" 訊息取代。" #: contrib/comments/models.py:91 -#, fuzzy msgid "comments" msgstr "評論" @@ -124,12 +1288,10 @@ msgid "approved by staff" msgstr "由工作人員核准" #: contrib/comments/models.py:176 -#, fuzzy msgid "free comment" msgstr "自由評論" #: contrib/comments/models.py:177 -#, fuzzy msgid "free comments" msgstr "自由評論" @@ -142,19 +1304,17 @@ msgid "score date" msgstr "分數日期" #: contrib/comments/models.py:237 -#, fuzzy msgid "karma score" msgstr "Karma 分數" #: contrib/comments/models.py:238 -#, fuzzy msgid "karma scores" msgstr "Karma 分數" #: contrib/comments/models.py:242 #, python-format msgid "%(score)d rating by %(user)s" -msgstr "被 %(user)s 評定為 %(score)d 等級" +msgstr "被 %(user)s 定級為 %(score)d " #: contrib/comments/models.py:258 #, python-format @@ -172,12 +1332,10 @@ msgid "flag date" msgstr "標識日期" #: contrib/comments/models.py:268 -#, fuzzy msgid "user flag" msgstr "使用者旗標" #: contrib/comments/models.py:269 -#, fuzzy msgid "user flags" msgstr "使用者旗標" @@ -191,12 +1349,10 @@ msgid "deletion date" msgstr "刪除日期" #: contrib/comments/models.py:280 -#, fuzzy msgid "moderator deletion" msgstr "仲裁刪除" #: contrib/comments/models.py:281 -#, fuzzy msgid "moderator deletions" msgstr "仲裁刪除" @@ -205,6 +1361,75 @@ msgstr "仲裁刪除" msgid "Moderator deletion by %r" msgstr "由 %r 仲裁刪除" +#: contrib/comments/templates/comments/form.html:6 +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:17 +msgid "Username:" +msgstr "" + +#: contrib/comments/templates/comments/form.html:6 +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Log out" +msgstr "登出" + +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "密碼" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "忘記密碼" + +#: contrib/comments/templates/comments/form.html:12 +msgid "Ratings" +msgstr "等級" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Required" +msgstr "必須的" + +#: contrib/comments/templates/comments/form.html:12 +#: contrib/comments/templates/comments/form.html:23 +msgid "Optional" +msgstr "可選的" + +#: contrib/comments/templates/comments/form.html:23 +msgid "Post a photo" +msgstr "上傳一張照片" + +#: contrib/comments/templates/comments/form.html:28 +#: contrib/comments/templates/comments/freeform.html:5 +msgid "Comment:" +msgstr "評論:" + +#: contrib/comments/templates/comments/form.html:35 +#: contrib/comments/templates/comments/freeform.html:10 +msgid "Preview comment" +msgstr "評論預覽" + +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "你的名字:" + #: contrib/comments/views/karma.py:19 msgid "Anonymous users cannot vote" msgstr "匿名使用者不可投票" @@ -215,9 +1440,9 @@ msgstr "無效的評論 ID" #: contrib/comments/views/karma.py:25 msgid "No voting for yourself" -msgstr "不要投票給你自己" +msgstr "不能投票給你自己" -#: contrib/comments/views/comments.py:28 +#: contrib/comments/views/comments.py:27 msgid "" "This rating is required because you've entered at least one other rating." msgstr "此等級被要求是因為你至少輸入了一個其它的等級。" @@ -235,41 +1460,37 @@ msgid_plural "" "\n" "%(text)s" msgstr[0] "" -"張貼此評論的使用者之所有評論少於 %(count)s:\n" -"\n" -"%(text)s" -msgstr[1] "" -"張貼此評論的使用者之所有評論少於 %(count)s:\n" +"此評論由一個發表數少於 %(count)s 則評論的使用者張貼:\n" "\n" "%(text)s" -#: contrib/comments/views/comments.py:117 +#: contrib/comments/views/comments.py:116 #, python-format msgid "" "This comment was posted by a sketchy user:\n" "\n" "%(text)s" msgstr "" -"此評論被一個隨便的使用者所張貼:\n" +"此評論由一個膚淺的使用者張貼:\n" "\n" "%(text)s" -#: contrib/comments/views/comments.py:189 +#: contrib/comments/views/comments.py:188 #: contrib/comments/views/comments.py:280 msgid "Only POSTs are allowed" -msgstr "只允許 POST" +msgstr "只允許張貼" -#: contrib/comments/views/comments.py:193 +#: contrib/comments/views/comments.py:192 #: contrib/comments/views/comments.py:284 msgid "One or more of the required fields wasn't submitted" msgstr "一個或多個所需的欄位沒有送出" -#: contrib/comments/views/comments.py:197 +#: contrib/comments/views/comments.py:196 #: contrib/comments/views/comments.py:286 msgid "Somebody tampered with the comment form (security violation)" msgstr "有人篡改了評論表單 (違反保全)" -#: contrib/comments/views/comments.py:207 +#: contrib/comments/views/comments.py:206 #: contrib/comments/views/comments.py:292 msgid "" "The comment form had an invalid 'target' parameter -- the object ID was " @@ -279,80 +1500,23 @@ msgstr "此評論表單有一個無效的 'target' 參數 -- 物件 ID 是無效 #: contrib/comments/views/comments.py:257 #: contrib/comments/views/comments.py:321 msgid "The comment form didn't provide either 'preview' or 'post'" -msgstr "此評論表單沒有提供 'preview' 或 'post'" +msgstr "評論表格無法提供 '預覽' 或 '張貼' 功能" -#: contrib/comments/templates/comments/form.html:6 -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/login.html:17 -msgid "Username:" -msgstr "使用者名稱:" +#: contrib/sites/models.py:10 +msgid "domain name" +msgstr "網域名稱" -#: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "密碼:" +#: contrib/sites/models.py:11 +msgid "display name" +msgstr "顯示名稱" -#: contrib/comments/templates/comments/form.html:6 -#, fuzzy -msgid "Forgotten your password?" -msgstr "變更我的密碼" +#: contrib/sites/models.py:15 +msgid "site" +msgstr "網站" -#: contrib/comments/templates/comments/form.html:8 -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/model_index.html:5 -msgid "Log out" -msgstr "登出" - -#: contrib/comments/templates/comments/form.html:12 -#, fuzzy -msgid "Ratings" -msgstr "等級 #1" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Required" -msgstr "必需的" - -#: contrib/comments/templates/comments/form.html:12 -#: contrib/comments/templates/comments/form.html:23 -msgid "Optional" -msgstr "可選擇的" - -#: contrib/comments/templates/comments/form.html:23 -msgid "Post a photo" -msgstr "張貼照片" - -#: contrib/comments/templates/comments/form.html:27 -#: contrib/comments/templates/comments/freeform.html:5 -#, fuzzy -msgid "Comment:" -msgstr "評論" - -#: contrib/comments/templates/comments/form.html:32 -#: contrib/comments/templates/comments/freeform.html:9 -#, fuzzy -msgid "Preview comment" -msgstr "自由評論" - -#: contrib/comments/templates/comments/freeform.html:4 -#, fuzzy -msgid "Your name:" -msgstr "使用者名稱" +#: contrib/sites/models.py:16 +msgid "sites" +msgstr "網站" #: contrib/admin/filterspecs.py:40 #, python-format @@ -364,7 +1528,7 @@ msgstr "" "
        \n" #: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88 -#: contrib/admin/filterspecs.py:143 +#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169 msgid "All" msgstr "全部" @@ -374,7 +1538,7 @@ msgstr "任何日期" #: contrib/admin/filterspecs.py:110 msgid "Today" -msgstr "本日" +msgstr "今天" #: contrib/admin/filterspecs.py:113 msgid "Past 7 days" @@ -386,19 +1550,7 @@ msgstr "本月" #: contrib/admin/filterspecs.py:117 msgid "This year" -msgstr "本年" - -#: contrib/admin/filterspecs.py:143 -msgid "Yes" -msgstr "是" - -#: contrib/admin/filterspecs.py:143 -msgid "No" -msgstr "否" - -#: contrib/admin/filterspecs.py:150 -msgid "Unknown" -msgstr "未知" +msgstr "今年" #: contrib/admin/models.py:16 msgid "action time" @@ -428,552 +1580,65 @@ msgstr "紀錄項目" msgid "log entries" msgstr "紀錄項目" -#: contrib/admin/templatetags/admin_list.py:228 +#: contrib/admin/templatetags/admin_list.py:247 msgid "All dates" msgstr "所有日期" -#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36 -#: contrib/auth/forms.py:41 -msgid "" -"Please enter a correct username and password. Note that both fields are case-" -"sensitive." -msgstr "請輸入一個正確的使用者名稱與密碼。注意此二欄位都是大小寫有別的。" - -#: contrib/admin/views/decorators.py:23 -#: contrib/admin/templates/admin/login.html:25 -msgid "Log in" -msgstr "登入" - -#: contrib/admin/views/decorators.py:61 -msgid "" -"Please log in again, because your session has expired. Don't worry: Your " -"submission has been saved." -msgstr "請再登入一次,因為你的 session 已經到期。不必擔心: 你的提交已被儲存。" - -#: contrib/admin/views/decorators.py:68 -msgid "" -"Looks like your browser isn't configured to accept cookies. Please enable " -"cookies, reload this page, and try again." -msgstr "" -"看起來你的瀏覽器沒有組態成允許 cookie。請啟用 cookie、重新載入此頁,然後再試" -"一次。" - -#: contrib/admin/views/decorators.py:82 -msgid "Usernames cannot contain the '@' character." -msgstr "使用者名稱不能包含 '@' 字元。" - -#: contrib/admin/views/decorators.py:84 -#, python-format -msgid "Your e-mail address is not your username. Try '%s' instead." -msgstr "你的電子郵件地址不是你的使用者名稱。試著改用 '%s'。" - -#: contrib/admin/views/main.py:226 -msgid "Site administration" -msgstr "網站管理" - -#: contrib/admin/views/main.py:260 -#, python-format -msgid "The %(name)s \"%(obj)s\" was added successfully." -msgstr "%(name)s \"%(obj)s\" 已成功新增。" - -#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348 -msgid "You may edit it again below." -msgstr "你可以在下面再編輯一次。" - -#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357 -#, python-format -msgid "You may add another %s below." -msgstr "你可以在下面新增另一個 %s。" - -#: contrib/admin/views/main.py:290 -#, python-format -msgid "Add %s" -msgstr "新增 %s" - -#: contrib/admin/views/main.py:336 -#, python-format -msgid "Added %s." -msgstr "%s 已新增。" - -#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338 -#: contrib/admin/views/main.py:340 -msgid "and" -msgstr "和" - -#: contrib/admin/views/main.py:338 -#, python-format -msgid "Changed %s." -msgstr "%s 已變更。" - -#: contrib/admin/views/main.py:340 -#, python-format -msgid "Deleted %s." -msgstr "%s 已刪除。" - -#: contrib/admin/views/main.py:343 -msgid "No fields changed." -msgstr "沒有欄位被變更。" - -#: contrib/admin/views/main.py:346 -#, python-format -msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "%(name)s \"%(obj)s\" 已成功變更。" - -#: contrib/admin/views/main.py:354 -#, python-format -msgid "" -"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." -msgstr "%(name)s \"%(obj)s\" 已成功新增。你可以在下面再次編輯。" - -#: contrib/admin/views/main.py:392 -#, python-format -msgid "Change %s" -msgstr "變更 %s" - -#: contrib/admin/views/main.py:470 -#, python-format -msgid "One or more %(fieldname)s in %(name)s: %(obj)s" -msgstr "在 %(name) 裡的一個或多個 %(fieldname)s: %(obj)s" - -#: contrib/admin/views/main.py:475 -#, python-format -msgid "One or more %(fieldname)s in %(name)s:" -msgstr "在 %(name)s 裡的一個或多個 %(fieldname)s:" - -#: contrib/admin/views/main.py:508 -#, python-format -msgid "The %(name)s \"%(obj)s\" was deleted successfully." -msgstr "%(name)s \"%(obj)s\" 已成功刪除。" - -#: contrib/admin/views/main.py:511 -msgid "Are you sure?" -msgstr "你確定?" - -#: contrib/admin/views/main.py:533 -#, python-format -msgid "Change history: %s" -msgstr "變更歷史: %s" - -#: contrib/admin/views/main.py:565 -#, python-format -msgid "Select %s" -msgstr "選擇 %s" - -#: contrib/admin/views/main.py:565 -#, python-format -msgid "Select %s to change" -msgstr "選擇 %s 來變更" - -#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286 -#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294 -#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297 -msgid "Integer" -msgstr "整數" - -#: contrib/admin/views/doc.py:278 -msgid "Boolean (Either True or False)" -msgstr "布林值 (True 或 False)" - -#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296 -#, python-format -msgid "String (up to %(maxlength)s)" -msgstr "字串 (最長到 %(maxlength)s)" - -#: contrib/admin/views/doc.py:280 -msgid "Comma-separated integers" -msgstr "逗號分隔的整數" - -#: contrib/admin/views/doc.py:281 -msgid "Date (without time)" -msgstr "日期 (不包括時間)" - -#: contrib/admin/views/doc.py:282 -msgid "Date (with time)" -msgstr "日期 (包括時間)" - -#: contrib/admin/views/doc.py:283 -msgid "E-mail address" -msgstr "電子郵件地址" - -#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287 -msgid "File path" -msgstr "檔案路徑" - -#: contrib/admin/views/doc.py:285 -msgid "Decimal number" -msgstr "小數" - -#: contrib/admin/views/doc.py:291 -msgid "Boolean (Either True, False or None)" -msgstr "布林值 (True, False 或 None)" - -#: contrib/admin/views/doc.py:292 -msgid "Relation to parent model" -msgstr "與父模型的關係" - -#: contrib/admin/views/doc.py:293 -msgid "Phone number" -msgstr "電話號碼" - -#: contrib/admin/views/doc.py:298 -msgid "Text" -msgstr "文字" - -#: contrib/admin/views/doc.py:299 -msgid "Time" -msgstr "時間" - -#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7 -msgid "URL" -msgstr "URL" - -#: contrib/admin/views/doc.py:301 -msgid "U.S. state (two uppercase letters)" -msgstr "U.S. 州名 (兩個大寫字母)" - -#: contrib/admin/views/doc.py:302 -msgid "XML text" -msgstr "XML 文字" - -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/admin_doc/bookmarklets.html:3 -msgid "Documentation" -msgstr "文件" - -#: contrib/admin/templates/admin/object_history.html:3 -#: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 -#: contrib/admin/templates/admin/change_form.html:10 -#: contrib/admin/templates/registration/password_change_done.html:3 -#: contrib/admin/templates/registration/password_change_form.html:3 -#: contrib/admin/templates/admin_doc/bookmarklets.html:4 -#: contrib/admin/templates/admin_doc/view_detail.html:4 -#: contrib/admin/templates/admin_doc/template_tag_index.html:5 -#: contrib/admin/templates/admin_doc/template_detail.html:4 -#: contrib/admin/templates/admin_doc/template_filter_index.html:5 -#: contrib/admin/templates/admin_doc/missing_docutils.html:4 -#: contrib/admin/templates/admin_doc/view_index.html:5 -#: contrib/admin/templates/admin_doc/model_detail.html:3 -#: contrib/admin/templates/admin_doc/index.html:4 -#: contrib/admin/templates/admin_doc/model_index.html:5 -msgid "Change password" -msgstr "變更密碼" - -#: contrib/admin/templates/admin/object_history.html:5 #: contrib/admin/templates/admin/500.html:4 -#: contrib/admin/templates/admin/change_list.html:6 -#: contrib/admin/templates/admin/base.html:28 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:5 #: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/change_list.html:6 #: contrib/admin/templates/admin/change_form.html:13 -#: contrib/admin/templates/registration/password_change_done.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/admin/base.html:30 +#: contrib/admin/templates/admin/auth/user/change_password.html:12 #: contrib/admin/templates/registration/logged_out.html:4 #: contrib/admin/templates/registration/password_reset_done.html:4 #: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 msgid "Home" msgstr "首頁" -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/change_form.html:20 -msgid "History" -msgstr "歷史" - -#: contrib/admin/templates/admin/object_history.html:18 -msgid "Date/time" -msgstr "日期/時間" - -#: contrib/admin/templates/admin/object_history.html:19 -msgid "User" -msgstr "使用者" - -#: contrib/admin/templates/admin/object_history.html:20 -msgid "Action" -msgstr "動作" - -#: contrib/admin/templates/admin/object_history.html:26 -msgid "DATE_WITH_TIME_FULL" -msgstr "DATE_WITH_TIME_FULL" - -#: contrib/admin/templates/admin/object_history.html:36 -msgid "" -"This object doesn't have a change history. It probably wasn't added via this " -"admin site." -msgstr "這個物件沒有變更的歷史。它可能不是透過這個管理網站新增的。" - -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "Django 網站管理" - -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "Django 管理" - -#: contrib/admin/templates/admin/500.html:4 -msgid "Server error" -msgstr "伺服器錯誤" - -#: contrib/admin/templates/admin/500.html:6 -msgid "Server error (500)" -msgstr "伺服器錯誤 (500)" - -#: contrib/admin/templates/admin/500.html:9 -msgid "Server Error (500)" -msgstr "伺服器錯誤 (500)" - -#: contrib/admin/templates/admin/500.html:10 -msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"有一個錯誤。它已經被透過電子郵件報告給了網站管理員,應該不久就會解決。感謝你" -"的忍耐。" - -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "找不到頁面" - -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "我們很抱歉,不過被要求的頁面找不到。" - -#: contrib/admin/templates/admin/index.html:17 -#, python-format -msgid "Models available in the %(name)s application." -msgstr "" - -#: contrib/admin/templates/admin/index.html:28 -#: contrib/admin/templates/admin/change_form.html:15 -msgid "Add" -msgstr "新增" - -#: contrib/admin/templates/admin/index.html:34 -msgid "Change" -msgstr "變更" - -#: contrib/admin/templates/admin/index.html:44 -msgid "You don't have permission to edit anything." -msgstr "你沒有編輯任何東西的權限。" - -#: contrib/admin/templates/admin/index.html:52 -msgid "Recent Actions" -msgstr "最近的動作" - -#: contrib/admin/templates/admin/index.html:53 -msgid "My Actions" -msgstr "我的動作" - -#: contrib/admin/templates/admin/index.html:57 -msgid "None available" -msgstr "沒有可用的" - -#: contrib/admin/templates/admin/change_list.html:11 -#, python-format -msgid "Add %(name)s" -msgstr "新增 %(name)s" - -#: contrib/admin/templates/admin/login.html:22 -msgid "Have you forgotten your password?" -msgstr "你 忘記密碼了嗎?" - -#: contrib/admin/templates/admin/base.html:23 -msgid "Welcome," -msgstr "歡迎," - -#: contrib/admin/templates/admin/delete_confirmation.html:9 -#: contrib/admin/templates/admin/submit_line.html:3 -msgid "Delete" -msgstr "刪除" - -#: contrib/admin/templates/admin/delete_confirmation.html:14 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(object)s' would result in deleting related " -"objects, but your account doesn't have permission to delete the following " -"types of objects:" -msgstr "" -"刪除 %(object_name)s '%(object)s' 會把相關的物件也刪除,不過你的帳號並沒有刪" -"除以下型態物件的權限:" - -#: contrib/admin/templates/admin/delete_confirmation.html:21 -#, python-format -msgid "" -"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of " -"the following related items will be deleted:" -msgstr "" -"你確定想要刪除 %(object_name)s \"%(object)s\"?以下所有的相關項目都會被刪除:" - -#: contrib/admin/templates/admin/delete_confirmation.html:26 -msgid "Yes, I'm sure" -msgstr "是的,我確定" - -#: contrib/admin/templates/admin/filter.html:2 -#, python-format -msgid " By %(title)s " -msgstr " 根據 %(title)s " - -#: contrib/admin/templates/admin/search_form.html:8 -msgid "Go" -msgstr "去" - -#: contrib/admin/templates/admin/change_form.html:21 -msgid "View on site" -msgstr "在網站上檢視" - -#: contrib/admin/templates/admin/change_form.html:30 -msgid "Please correct the error below." -msgid_plural "Please correct the errors below." -msgstr[0] "請更正以下的錯誤。" -msgstr[1] "請更正以下的錯誤。" - -#: contrib/admin/templates/admin/change_form.html:48 -msgid "Ordering" -msgstr "排序中" - -#: contrib/admin/templates/admin/change_form.html:51 -msgid "Order:" -msgstr "順序:" - -#: contrib/admin/templates/admin/submit_line.html:4 -msgid "Save as new" -msgstr "儲存為新的" - -#: contrib/admin/templates/admin/submit_line.html:5 -msgid "Save and add another" -msgstr "儲存並新增另一個" - -#: contrib/admin/templates/admin/submit_line.html:6 -msgid "Save and continue editing" -msgstr "儲存並繼續編輯" - -#: contrib/admin/templates/admin/submit_line.html:7 -msgid "Save" -msgstr "儲存" - -#: contrib/admin/templates/registration/password_change_done.html:4 -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/registration/password_change_form.html:6 -#: contrib/admin/templates/registration/password_change_form.html:10 -msgid "Password change" -msgstr "密碼變更" - -#: contrib/admin/templates/registration/password_change_done.html:6 -#: contrib/admin/templates/registration/password_change_done.html:10 -msgid "Password change successful" -msgstr "密碼成功地變更" - -#: contrib/admin/templates/registration/password_change_done.html:12 -msgid "Your password was changed." -msgstr "你的密碼已變更。" - -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:6 -#: contrib/admin/templates/registration/password_reset_form.html:10 -#: contrib/admin/templates/registration/password_reset_done.html:4 -msgid "Password reset" -msgstr "密碼重設" - -#: contrib/admin/templates/registration/password_reset_form.html:12 -msgid "" -"Forgotten your password? Enter your e-mail address below, and we'll reset " -"your password and e-mail the new one to you." -msgstr "" -"忘記你的密碼了?在下面輸入你的電子郵件地址,我們就會重設你的密碼並把新的用電" -"子郵件寄給你。" - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "電子郵件地址:" - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "重設我的密碼" - -#: contrib/admin/templates/registration/logged_out.html:8 -msgid "Thanks for spending some quality time with the Web site today." -msgstr "感謝你今天花了重要的時間留在本網站。" - -#: contrib/admin/templates/registration/logged_out.html:10 -msgid "Log in again" -msgstr "再次登入" - -#: contrib/admin/templates/registration/password_reset_done.html:6 -#: contrib/admin/templates/registration/password_reset_done.html:10 -msgid "Password reset successful" -msgstr "密碼成功地重設" - -#: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "" -"We've e-mailed a new password to the e-mail address you submitted. You " -"should be receiving it shortly." -msgstr "我們已經把新的密碼寄到你送出的電子郵件地址。你應該不久就能收到。" - -#: contrib/admin/templates/registration/password_change_form.html:12 -msgid "" -"Please enter your old password, for security's sake, and then enter your new " -"password twice so we can verify you typed it in correctly." -msgstr "" -"為了安全上的考慮,請輸入你的舊密碼,再輸入新密碼兩次,讓我們核驗你已正確地輸" -"入。" - -#: contrib/admin/templates/registration/password_change_form.html:17 -msgid "Old password:" -msgstr "舊密碼:" - -#: contrib/admin/templates/registration/password_change_form.html:19 -msgid "New password:" -msgstr "新密碼:" - -#: contrib/admin/templates/registration/password_change_form.html:21 -msgid "Confirm password:" -msgstr "確認密碼:" - -#: contrib/admin/templates/registration/password_change_form.html:23 -msgid "Change my password" -msgstr "變更我的密碼" - -#: contrib/admin/templates/registration/password_reset_email.html:2 -msgid "You're receiving this e-mail because you requested a password reset" -msgstr "因為你要求重設密碼,所以收到了這封電子郵件" - -#: contrib/admin/templates/registration/password_reset_email.html:3 -#, python-format -msgid "for your user account at %(site_name)s" -msgstr "你在 %(site_name)s 裡的使用者帳號" - -#: contrib/admin/templates/registration/password_reset_email.html:5 -#, python-format -msgid "Your new password is: %(new_password)s" -msgstr "你的新密碼是: %(new_password)s" - -#: contrib/admin/templates/registration/password_reset_email.html:7 -msgid "Feel free to change this password by going to this page:" -msgstr "放心地到此頁面變更密碼:" - -#: contrib/admin/templates/registration/password_reset_email.html:11 -msgid "Your username, in case you've forgotten:" -msgstr "你的使用者名稱,萬一你已經忘記的話:" - -#: contrib/admin/templates/registration/password_reset_email.html:13 -msgid "Thanks for using our site!" -msgstr "感謝使用本網站!" - -#: contrib/admin/templates/registration/password_reset_email.html:15 -#, python-format -msgid "The %(site_name)s team" -msgstr "%(site_name)s 團隊" +#: contrib/admin/templates/admin_doc/bookmarklets.html:3 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Documentation" +msgstr "文件" #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Bookmarklets" -msgstr "Bookmarklets" +msgstr "書籤" + +#: contrib/admin/templates/admin_doc/bookmarklets.html:4 +#: contrib/admin/templates/admin_doc/missing_docutils.html:4 +#: contrib/admin/templates/admin_doc/view_detail.html:4 +#: contrib/admin/templates/admin_doc/template_filter_index.html:5 +#: contrib/admin/templates/admin_doc/view_index.html:5 +#: contrib/admin/templates/admin_doc/template_tag_index.html:5 +#: contrib/admin/templates/admin_doc/model_detail.html:3 +#: contrib/admin/templates/admin_doc/model_index.html:5 +#: contrib/admin/templates/admin_doc/index.html:4 +#: contrib/admin/templates/admin_doc/template_detail.html:4 +#: contrib/admin/templates/admin/object_history.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/change_list.html:5 +#: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:46 +#: contrib/admin/templates/registration/password_change_form.html:3 +#: contrib/admin/templates/registration/password_change_done.html:3 +msgid "Change password" +msgstr "變更密碼" #: contrib/admin/templates/admin_doc/bookmarklets.html:5 msgid "Documentation bookmarklets" @@ -1031,674 +1696,812 @@ msgstr "編輯此物件 (新視窗)" msgid "As above, but opens the admin page in a new window." msgstr "如上,但在新視窗裡開啟管理頁面。" -#: contrib/admin/templates/widget/date_time.html:3 -msgid "Date:" -msgstr "日期:" +#: contrib/admin/templates/admin/submit_line.html:3 +#: contrib/admin/templates/admin/delete_confirmation.html:9 +msgid "Delete" +msgstr "刪除" -#: contrib/admin/templates/widget/date_time.html:4 -msgid "Time:" -msgstr "時間:" +#: contrib/admin/templates/admin/submit_line.html:4 +msgid "Save as new" +msgstr "儲存為新的" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save and add another" +msgstr "儲存並新增另一個" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and continue editing" +msgstr "儲存並繼續編輯" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save" +msgstr "儲存" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "伺服器錯誤" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "伺服器錯誤 (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "伺服器錯誤 (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "存在一個錯誤。它已經透過電子郵件回報給網站管理員了,並且應該很快被改正。謝謝你的關心。" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr " 由 %(filter_title)s" + +#: contrib/admin/templates/admin/filters.html:4 +msgid "Filter" +msgstr "過濾器" + +#: 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 "你的資料庫安裝有錯誤。確定資料庫表格已經建立,並確定資料庫可被合適的使用者讀取。" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Go" +msgstr "去" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 則结果" +msgstr[1] "%(counter)s 則结果" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "總共 %(full_result_count)s" + +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/admin/change_form.html:21 + +msgid "History" +msgstr "歷史" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "日期/時間" + + +#: contrib/admin/templates/admin/object_history.html:19 +msgid "User" +msgstr "使用者" + +#: contrib/admin/templates/admin/object_history.html:20 + +msgid "Action" +msgstr "動作" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "N j, Y, P" + + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "這個物件沒有變更的歷史。它可能不是透過這個管理網站新增的。" + + +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " + +"following types of objects:" +msgstr "" +"刪除 %(object_name)s '%(escaped_object)s' 會把相關的物件也刪除,不過你的帳號並沒有刪" +"除以下型態物件的權限:" + +#: contrib/admin/templates/admin/delete_confirmation.html:21 +#, python-format +msgid "" + +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" +"你確定想要刪除 %(object_name)s \"%(escaped_object)s\"?以下所有的相關項目都會被刪除:" + +#: contrib/admin/templates/admin/delete_confirmation.html:26 +msgid "Yes, I'm sure" +msgstr "是的,我確定" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "顯示全部" + +#: contrib/admin/templates/admin/change_list.html:12 +#, python-format +msgid "Add %(name)s" +msgstr "新增 %(name)s" + +#: contrib/admin/templates/admin/change_form.html:15 +#: contrib/admin/templates/admin/index.html:28 +msgid "Add" +msgstr "新增" + +#: contrib/admin/templates/admin/change_form.html:22 +msgid "View on site" +msgstr "在網站上檢視" + +#: contrib/admin/templates/admin/change_form.html:32 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "请更正下面的錯誤。" + +#: contrib/admin/templates/admin/change_form.html:50 +msgid "Ordering" +msgstr "排序中" + +#: contrib/admin/templates/admin/change_form.html:53 +msgid "Order:" +msgstr "排序:" + +#: contrib/admin/templates/admin/base.html:25 +msgid "Welcome," +msgstr "歡迎" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "頁面沒有找到" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "很抱歉,請求的頁面無法找到。" + +#: contrib/admin/templates/admin/login.html:25 +#: contrib/admin/views/decorators.py:24 +msgid "Log in" +msgstr "登入" + +#: contrib/admin/templates/admin/index.html:17 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "在 %(name)s 應用中模形可用。" + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "%(name)s" +msgstr "%(name)s" + +#: contrib/admin/templates/admin/index.html:34 +msgid "Change" +msgstr "變更" + +#: contrib/admin/templates/admin/index.html:44 +msgid "You don't have permission to edit anything." +msgstr "你沒有編輯任何東西的權限。" + +#: contrib/admin/templates/admin/index.html:52 +msgid "Recent Actions" +msgstr "最近的動作" + +#: contrib/admin/templates/admin/index.html:53 +msgid "My Actions" +msgstr "我的動作" + +#: contrib/admin/templates/admin/index.html:57 +msgid "None available" +msgstr "沒有可用的" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Django 網站管理" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Django 管理" + +#: contrib/admin/templates/admin/auth/user/add_form.html:6 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "首先,輸入一個使用者名稱和密碼。然後你可以編輯更多使用者選項。" + +#: contrib/admin/templates/admin/auth/user/add_form.html:12 +msgid "Username" +msgstr "使用者名稱" + +#: contrib/admin/templates/admin/auth/user/add_form.html:18 +#: contrib/admin/templates/admin/auth/user/change_password.html:34 +msgid "Password" +msgstr "密碼" + +#: contrib/admin/templates/admin/auth/user/add_form.html:23 +#: contrib/admin/templates/admin/auth/user/change_password.html:39 +msgid "Password (again)" +msgstr "密碼(重複)" + +#: contrib/admin/templates/admin/auth/user/add_form.html:24 +#: contrib/admin/templates/admin/auth/user/change_password.html:40 +msgid "Enter the same password as above, for verification." +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "" #: contrib/admin/templates/widget/file.html:2 msgid "Currently:" -msgstr "目前:" +msgstr "目前" #: contrib/admin/templates/widget/file.html:3 msgid "Change:" -msgstr "變更:" +msgstr "修改" -#: contrib/redirects/models.py:7 -msgid "redirect from" -msgstr "重導向自" +#: contrib/admin/templates/widget/date_time.html:3 +msgid "Date:" +msgstr "日期" -#: contrib/redirects/models.py:8 +#: contrib/admin/templates/widget/date_time.html:4 +msgid "Time:" +msgstr "時間" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "感謝你今天花了重要的時間留在本網站。" + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "再次登入" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "因為你要求重設密碼,所以收到了這封電子郵件" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "你在 %(site_name)s 裡的使用者帳號" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "你的新密碼是: %(new_password)s" + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "放心地到此頁面變更密碼:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "你的使用者名稱,萬一你已經忘記的話:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "感謝使用本網站!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "%(site_name)s 團隊" + + +#: contrib/admin/templates/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 "密碼重設" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "密碼成功地重設" + +#: contrib/admin/templates/registration/password_reset_done.html:12 msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." -msgstr "此應為一絕對路徑,但不包括網域名稱。範例: '/events/search/'。" +"We've e-mailed a new password to the e-mail address you submitted. You " +"should be receiving it shortly." +msgstr "我們已經把新的密碼寄到你送出的電子郵件地址。你應該不久就能收到。" -#: contrib/redirects/models.py:9 -msgid "redirect to" -msgstr "重導向至" +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +#: contrib/admin/templates/registration/password_change_done.html:4 +msgid "Password change" +msgstr "密碼變更" -#: contrib/redirects/models.py:10 +#: contrib/admin/templates/registration/password_change_form.html:12 msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." -msgstr "此可為一絕對路徑 (如上) 或一個以 'http://' 開頭的完整 URL. " +"Please enter your old password, for security's sake, and then enter your new " +"password twice so we can verify you typed it in correctly." +msgstr "為了安全上的考慮,請輸入你的舊密碼,再輸入新密碼兩次,讓我們核驗你已正確地輸入。" -#: contrib/redirects/models.py:12 -msgid "redirect" -msgstr "重導向" +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "舊密碼" -#: contrib/redirects/models.py:13 -msgid "redirects" -msgstr "重導向" +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "新密碼" -#: contrib/flatpages/models.py:8 +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "確認密碼" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "變更我的密碼" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "密碼成功地變更" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "你的密碼已變更。" + +#: contrib/admin/templates/registration/password_reset_form.html:12 msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "範例: '/about/contact/'。開頭與結束都一定要有斜線。" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "忘記你的密碼了?在下面輸入你的電子郵件地址,我們就會重設你的密碼並把新的用電" +"子郵件寄給你。" +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "電子郵件地址:" -#: contrib/flatpages/models.py:9 -msgid "title" -msgstr "標題" +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "重設我的密碼" -#: contrib/flatpages/models.py:10 -msgid "content" -msgstr "內容" +#: contrib/admin/views/main.py:223 +msgid "Site administration" +msgstr "網站管理" -#: contrib/flatpages/models.py:11 -msgid "enable comments" -msgstr "啟用評論" +#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:19 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s\" 已成功變更。" -#: contrib/flatpages/models.py:12 -msgid "template name" -msgstr "模板名稱" +#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347 +#: contrib/admin/views/auth.py:24 +msgid "You may edit it again below." +msgstr "你可以在下面再編輯一次。" -#: contrib/flatpages/models.py:13 -msgid "" -"Example: 'flatpages/contact_page'. If this isn't provided, the system will " -"use 'flatpages/default'." +#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356 +#, python-format +msgid "You may add another %s below." +msgstr "你可以在下面新增另一個 %s。" + +#: contrib/admin/views/main.py:289 +#, python-format +msgid "Add %s" +msgstr "新增 %s" + +#: contrib/admin/views/main.py:335 +#, python-format +msgid "Added %s." +msgstr "%s 已新增。" + +#: contrib/admin/views/main.py:337 +#, python-format +msgid "Changed %s." +msgstr "%s 已變更。" + +#: contrib/admin/views/main.py:339 +#, python-format +msgid "Deleted %s." +msgstr "%s 已删除。" + +#: contrib/admin/views/main.py:342 +msgid "No fields changed." +msgstr "沒有欄位被變更。" + +#: contrib/admin/views/main.py:345 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." msgstr "" -"範例: 'flatpages/contact_page'。如果沒有提供它,系統會使用 'flatpages/" -"default'。" -#: contrib/flatpages/models.py:14 -msgid "registration required" -msgstr "需要註冊" +#: contrib/admin/views/main.py:353 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "%(name)s \"%(obj)s\" 已成功變更。" -#: contrib/flatpages/models.py:14 -msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "如果此項被選取,則只有登入的使用者可以檢視頁面。" +#: contrib/admin/views/main.py:391 +#, python-format +msgid "Change %s" +msgstr "變更 %s" -#: contrib/flatpages/models.py:18 -msgid "flat page" -msgstr "簡平頁面" +#: contrib/admin/views/main.py:476 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "在 %(name)s: 裡的一個或多個 %(fieldname)s %(obj)s" -#: contrib/flatpages/models.py:19 -msgid "flat pages" -msgstr "簡平頁面" +#: contrib/admin/views/main.py:481 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "在 %(name)s 裡的一個或多個 %(fieldname)s:" -#: contrib/auth/models.py:13 contrib/auth/models.py:26 -msgid "name" -msgstr "名稱" +#: contrib/admin/views/main.py:514 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "%(name)s \"%(obj)s\" 已成功刪除。" -#: contrib/auth/models.py:15 -msgid "codename" -msgstr "codename" +#: contrib/admin/views/main.py:517 +msgid "Are you sure?" +msgstr "你確定?" -#: contrib/auth/models.py:17 -#, fuzzy -msgid "permission" -msgstr "權限" +#: contrib/admin/views/main.py:539 +#, python-format +msgid "Change history: %s" +msgstr "變更歷史: %s" -#: contrib/auth/models.py:18 contrib/auth/models.py:27 -#, fuzzy -msgid "permissions" -msgstr "權限" +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s" +msgstr "選擇 %s" -#: contrib/auth/models.py:29 -#, fuzzy -msgid "group" -msgstr "群組" +#: contrib/admin/views/main.py:573 +#, python-format +msgid "Select %s to change" +msgstr "選擇 %s 來變更" -#: contrib/auth/models.py:30 contrib/auth/models.py:65 -#, fuzzy -msgid "groups" -msgstr "群組" +#: contrib/admin/views/main.py:768 +msgid "Database error" +msgstr "資料庫錯誤" -#: contrib/auth/models.py:55 -msgid "username" -msgstr "使用者名稱" +#: contrib/admin/views/decorators.py:62 +msgid "" +"Please log in again, because your session has expired. Don't worry: Your " +"submission has been saved." +msgstr "請再登入一次,因為你的 session 已經到期。不必擔心: 你的提交已被儲存。" -#: contrib/auth/models.py:56 -msgid "first name" -msgstr "名字" +#: contrib/admin/views/decorators.py:69 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "看起來你的瀏覽器沒有設定成允許 cookie。請啟用 cookie、重新載入此頁,然後再試一次" -#: contrib/auth/models.py:57 -msgid "last name" -msgstr "姓氏" +#: contrib/admin/views/decorators.py:83 +msgid "Usernames cannot contain the '@' character." +msgstr "使用者名稱不能包含 '@' 字元。" -#: contrib/auth/models.py:58 -msgid "e-mail address" +#: contrib/admin/views/decorators.py:85 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "你的電子郵件地址不是你的使用者名稱。試著改用 '%s'。" + +#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48 +#: contrib/admin/views/doc.py:50 +msgid "tag:" +msgstr "標籤:" + +#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 +#: contrib/admin/views/doc.py:81 +msgid "filter:" +msgstr "過濾器:" + +#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 +#: contrib/admin/views/doc.py:139 +msgid "view:" +msgstr "視圖:" + +#: contrib/admin/views/doc.py:164 +#, python-format +msgid "App %r not found" +msgstr "應用程式 %r 没有找到" + +#: contrib/admin/views/doc.py:171 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "在應用程式 %(label)r 裡找不到模型 %(name)r" + +#: contrib/admin/views/doc.py:183 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "相關的 `%(label)s.%(type)s` 物件" + +#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205 +#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224 +msgid "model:" +msgstr "模型:" + +#: contrib/admin/views/doc.py:214 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "相關的 `%(label)s.%(name)s` 物件" + +#: contrib/admin/views/doc.py:219 +#, python-format +msgid "all %s" +msgstr "所有 %s" + +#: contrib/admin/views/doc.py:224 +#, python-format +msgid "number of %s" +msgstr "%s 的数量" + +#: contrib/admin/views/doc.py:229 +#, python-format +msgid "Fields on %s objects" +msgstr "%s 物件的欄位" + +#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301 +#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309 +#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312 +msgid "Integer" +msgstr "整數" + +#: contrib/admin/views/doc.py:292 +msgid "Boolean (Either True or False)" +msgstr "布林值 (True 或 False)" + +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311 +#, python-format +msgid "String (up to %(maxlength)s)" +msgstr "字串(最長 %(maxlength)s)" + +#: contrib/admin/views/doc.py:294 +msgid "Comma-separated integers" +msgstr "逗號分隔的整數" + +#: contrib/admin/views/doc.py:295 +msgid "Date (without time)" +msgstr "日期 (不包括時間)" + +#: contrib/admin/views/doc.py:296 +msgid "Date (with time)" +msgstr "日期 (包括時間)" + +#: contrib/admin/views/doc.py:297 +msgid "E-mail address" msgstr "電子郵件地址" -#: contrib/auth/models.py:59 -msgid "password" -msgstr "密碼" +#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299 +#: contrib/admin/views/doc.py:302 +msgid "File path" +msgstr "檔案路徑" -#: contrib/auth/models.py:59 -msgid "Use '[algo]$[salt]$[hexdigest]'" -msgstr "使用 '[algo]$[salt]$[hexdigest]'" +#: contrib/admin/views/doc.py:300 +msgid "Decimal number" +msgstr "小數" -#: contrib/auth/models.py:60 -msgid "staff status" -msgstr "工作人員狀態" +#: contrib/admin/views/doc.py:306 +msgid "Boolean (Either True, False or None)" +msgstr "布林值 (True, False 或 None)" -#: contrib/auth/models.py:60 -msgid "Designates whether the user can log into this admin site." -msgstr "指明何使用者可以登入此管理網站。" +#: contrib/admin/views/doc.py:307 +msgid "Relation to parent model" +msgstr "與父模型的關係" -#: contrib/auth/models.py:61 -msgid "active" -msgstr "活動中" +#: contrib/admin/views/doc.py:308 +msgid "Phone number" +msgstr "電話號碼" -#: contrib/auth/models.py:62 -msgid "superuser status" -msgstr "超級使用者狀態" +#: contrib/admin/views/doc.py:313 +msgid "Text" +msgstr "文字" -#: contrib/auth/models.py:63 -msgid "last login" -msgstr "上次登入" +#: contrib/admin/views/doc.py:314 +msgid "Time" +msgstr "時間" -#: contrib/auth/models.py:64 -msgid "date joined" -msgstr "加入日期" +#: contrib/admin/views/doc.py:316 +msgid "U.S. state (two uppercase letters)" +msgstr "美國州名 (兩個大寫字母)" -#: contrib/auth/models.py:66 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." -msgstr "除了手動指定的權限之外,這個使用者也會得到其群組擁有的所有權限。" +#: contrib/admin/views/doc.py:317 +msgid "XML text" +msgstr "XML 文件" -#: contrib/auth/models.py:67 -#, fuzzy -msgid "user permissions" -msgstr "權限" +#: contrib/admin/views/doc.py:343 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "%s 似乎不是一個 urlpattern 物件" -#: contrib/auth/models.py:70 -#, fuzzy -msgid "user" -msgstr "使用者" +#: contrib/admin/views/auth.py:30 +msgid "Add user" +msgstr "增加使用者" -#: contrib/auth/models.py:71 -#, fuzzy -msgid "users" -msgstr "使用者" - -#: contrib/auth/models.py:76 -msgid "Personal info" -msgstr "個人資訊" - -#: contrib/auth/models.py:77 -msgid "Permissions" -msgstr "權限" - -#: contrib/auth/models.py:78 -msgid "Important dates" -msgstr "重要日期" - -#: contrib/auth/models.py:79 -msgid "Groups" -msgstr "群組" - -#: contrib/auth/models.py:219 -#, fuzzy -msgid "message" -msgstr "訊息" - -#: contrib/auth/forms.py:30 -msgid "" -"Your Web browser doesn't appear to have cookies enabled. Cookies are " -"required for logging in." -msgstr "你的網頁瀏覽器看來沒有啟用 cookie。若要登入則需使用 cookie。" - -#: contrib/contenttypes/models.py:25 -#, fuzzy -msgid "python model class name" -msgstr "python 模組名稱" - -#: contrib/contenttypes/models.py:28 -msgid "content type" -msgstr "內容型態" - -#: contrib/contenttypes/models.py:29 -msgid "content types" -msgstr "內容型態" - -#: contrib/sessions/models.py:35 -msgid "session key" -msgstr "session 鍵值" - -#: contrib/sessions/models.py:36 -msgid "session data" -msgstr "session 資料" - -#: contrib/sessions/models.py:37 -msgid "expire date" -msgstr "到期日期" - -#: contrib/sessions/models.py:41 -msgid "session" -msgstr "session" - -#: contrib/sessions/models.py:42 -msgid "sessions" -msgstr "sessions" - -#: contrib/sites/models.py:10 -msgid "domain name" -msgstr "網域名稱" - -#: contrib/sites/models.py:11 -msgid "display name" -msgstr "顯示名稱" - -#: contrib/sites/models.py:15 -msgid "site" -msgstr "網站" - -#: contrib/sites/models.py:16 -msgid "sites" -msgstr "網站" - -#: utils/translation.py:360 -msgid "DATE_FORMAT" -msgstr "DATE_FORMAT" - -#: utils/translation.py:361 -msgid "DATETIME_FORMAT" -msgstr "DATETIME_FORMAT" - -#: utils/translation.py:362 -msgid "TIME_FORMAT" -msgstr "TIME_FORMAT" - -#: utils/dates.py:6 -msgid "Monday" -msgstr "週一" - -#: utils/dates.py:6 -msgid "Tuesday" -msgstr "週二" - -#: utils/dates.py:6 -msgid "Wednesday" -msgstr "週三" - -#: utils/dates.py:6 -msgid "Thursday" -msgstr "週四" - -#: utils/dates.py:6 -msgid "Friday" -msgstr "週五" - -#: utils/dates.py:7 -msgid "Saturday" -msgstr "週六" - -#: utils/dates.py:7 -msgid "Sunday" -msgstr "週日" - -#: utils/dates.py:14 -msgid "January" -msgstr "一月" - -#: utils/dates.py:14 -msgid "February" -msgstr "二月" - -#: utils/dates.py:14 utils/dates.py:27 -msgid "March" -msgstr "三月" - -#: utils/dates.py:14 utils/dates.py:27 -msgid "April" -msgstr "四月" - -#: utils/dates.py:14 utils/dates.py:27 -msgid "May" -msgstr "五月" - -#: utils/dates.py:14 utils/dates.py:27 -msgid "June" -msgstr "六月" - -#: utils/dates.py:15 utils/dates.py:27 -msgid "July" -msgstr "七月" - -#: utils/dates.py:15 -msgid "August" -msgstr "八月" - -#: utils/dates.py:15 -msgid "September" -msgstr "九月" - -#: utils/dates.py:15 -msgid "October" -msgstr "十月" - -#: utils/dates.py:15 -msgid "November" -msgstr "十一月" - -#: utils/dates.py:16 -msgid "December" -msgstr "十二月" - -#: utils/dates.py:19 -#, fuzzy -msgid "jan" -msgstr "和" - -#: utils/dates.py:19 -msgid "feb" +#: contrib/admin/views/auth.py:57 +msgid "Password changed successfully." msgstr "" -#: utils/dates.py:19 -msgid "mar" -msgstr "" +#: contrib/admin/views/auth.py:64 +#, python-format +msgid "Change password: %s" +msgstr "密碼變更: %s" -#: utils/dates.py:19 -msgid "apr" -msgstr "" +#: newforms/fields.py:103 newforms/fields.py:256 +#, python-format +msgid "Ensure this value has at most %d characters." +msgstr "確定你輸入的值最多有 %d 字。" -#: utils/dates.py:19 -#, fuzzy -msgid "may" -msgstr "日" +#: newforms/fields.py:105 newforms/fields.py:258 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "確定你輸入的值最少有 %d 字。" -#: utils/dates.py:19 -msgid "jun" -msgstr "" +#: newforms/fields.py:128 core/validators.py:120 +msgid "Enter a whole number." +msgstr "輸入整數" -#: utils/dates.py:20 -msgid "jul" -msgstr "" +#: newforms/fields.py:130 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "這個值必须小於或等於 %s。" -#: utils/dates.py:20 -msgid "aug" -msgstr "" +#: newforms/fields.py:132 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "這個值必须大於或等於 %s。" -#: utils/dates.py:20 -msgid "sep" -msgstr "" +#: newforms/fields.py:165 +msgid "Enter a valid date." +msgstr "輸入有效的日期" -#: utils/dates.py:20 -msgid "oct" -msgstr "" +#: newforms/fields.py:192 +msgid "Enter a valid time." +msgstr "輸入有效的時間" -#: utils/dates.py:20 -msgid "nov" -msgstr "" +#: newforms/fields.py:228 +msgid "Enter a valid date/time." +msgstr "輸入有效的日期/時間" -#: utils/dates.py:20 -msgid "dec" -msgstr "" +#: newforms/fields.py:242 +msgid "Enter a valid value." +msgstr "輸入有效的值" -#: utils/dates.py:27 -msgid "Jan." -msgstr "一月" +#: newforms/fields.py:271 core/validators.py:162 +msgid "Enter a valid e-mail address." +msgstr "輸入有效的電子郵件地址。" -#: utils/dates.py:27 -msgid "Feb." -msgstr "二月" +#: newforms/fields.py:289 newforms/fields.py:311 +msgid "Enter a valid URL." +msgstr "輸入有效的URL" -#: utils/dates.py:28 -msgid "Aug." -msgstr "八月" +#: newforms/fields.py:313 +msgid "This URL appears to be a broken link." +msgstr "URL似乎是是斷掉的連結。" -#: utils/dates.py:28 -msgid "Sept." -msgstr "九月" +#: newforms/fields.py:362 newforms/models.py:165 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "選擇有效的選項: 此選擇不在可用的选项中。" -#: utils/dates.py:28 -msgid "Oct." -msgstr "十月" +#: newforms/fields.py:380 newforms/fields.py:456 newforms/models.py:182 +msgid "Enter a list of values." +msgstr "輸入一個列表的值" -#: utils/dates.py:28 -msgid "Nov." -msgstr "十一月" +#: newforms/fields.py:389 newforms/models.py:188 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "選擇一個有效的選項: '%s' 不在可用的選項中。" -#: utils/dates.py:28 -msgid "Dec." -msgstr "十二月" +#: template/defaultfilters.py:491 +msgid "yes,no,maybe" +msgstr "是、否、也許" -#: utils/timesince.py:12 -msgid "year" -msgid_plural "years" -msgstr[0] "年" -msgstr[1] "年" +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "%(verbose_name)s 新增成功。" -#: utils/timesince.py:13 -msgid "month" -msgid_plural "months" -msgstr[0] "月" -msgstr[1] "月" +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "%(verbose_name)s 變更成功。" -#: utils/timesince.py:14 -msgid "week" -msgid_plural "weeks" -msgstr[0] "" -msgstr[1] "" +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "%(verbose_name)s 已被删除。" -#: utils/timesince.py:15 -msgid "day" -msgid_plural "days" -msgstr[0] "日" -msgstr[1] "日" - -#: utils/timesince.py:16 -msgid "hour" -msgid_plural "hours" -msgstr[0] "時" -msgstr[1] "時" - -#: utils/timesince.py:17 -msgid "minute" -msgid_plural "minutes" -msgstr[0] "分" -msgstr[1] "分" - -#: conf/global_settings.py:37 -msgid "Bengali" -msgstr "孟加拉文" - -#: conf/global_settings.py:38 -msgid "Czech" -msgstr "捷克文" - -#: conf/global_settings.py:39 -msgid "Welsh" -msgstr "威爾斯文" - -#: conf/global_settings.py:40 -msgid "Danish" -msgstr "丹麥文" - -#: conf/global_settings.py:41 -msgid "German" -msgstr "德文" - -#: conf/global_settings.py:42 -msgid "Greek" -msgstr "" - -#: conf/global_settings.py:43 -msgid "English" -msgstr "英文" - -#: conf/global_settings.py:44 -msgid "Spanish" -msgstr "西班牙文" - -#: conf/global_settings.py:45 -msgid "French" -msgstr "法文" - -#: conf/global_settings.py:46 -msgid "Galician" -msgstr "加利西亞文" - -#: conf/global_settings.py:47 -msgid "Hungarian" -msgstr "" - -#: conf/global_settings.py:48 -msgid "Hebrew" -msgstr "" - -#: conf/global_settings.py:49 -msgid "Icelandic" -msgstr "冰島文" - -#: conf/global_settings.py:50 -msgid "Italian" -msgstr "義大利文" - -#: conf/global_settings.py:51 -msgid "Japanese" -msgstr "日文" - -#: conf/global_settings.py:52 -msgid "Dutch" -msgstr "荷蘭文" - -#: conf/global_settings.py:53 -msgid "Norwegian" -msgstr "挪威文" - -#: conf/global_settings.py:54 -msgid "Brazilian" -msgstr "巴西文" - -#: conf/global_settings.py:55 -msgid "Romanian" -msgstr "羅馬尼亞文" - -#: conf/global_settings.py:56 -msgid "Russian" -msgstr "俄文" - -#: conf/global_settings.py:57 -msgid "Slovak" -msgstr "斯洛伐克文" - -#: conf/global_settings.py:58 -#, fuzzy -msgid "Slovenian" -msgstr "斯洛伐克文" - -#: conf/global_settings.py:59 -msgid "Serbian" -msgstr "塞爾維亞文" - -#: conf/global_settings.py:60 -msgid "Swedish" -msgstr "瑞典文" - -#: conf/global_settings.py:61 -#, fuzzy -msgid "Ukrainian" -msgstr "巴西文" - -#: conf/global_settings.py:62 -msgid "Simplified Chinese" -msgstr "簡體中文" - -#: conf/global_settings.py:63 -#, fuzzy -msgid "Traditional Chinese" -msgstr "繁體中文" - -#: core/validators.py:60 +#: core/validators.py:64 msgid "This value must contain only letters, numbers and underscores." msgstr "此值僅能包含字母、數字與底線。" -#: core/validators.py:64 -#, fuzzy +#: core/validators.py:68 msgid "" "This value must contain only letters, numbers, underscores, dashes or " "slashes." msgstr "此值僅能包含字母、數字、底線與斜線。" #: core/validators.py:72 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "此值僅能包含字母、數字、底線與連字號" + +#: core/validators.py:76 msgid "Uppercase letters are not allowed here." msgstr "此處不允許大寫字母。" -#: core/validators.py:76 +#: core/validators.py:80 msgid "Lowercase letters are not allowed here." msgstr "此處不允許小寫字母。" -#: core/validators.py:83 +#: core/validators.py:87 msgid "Enter only digits separated by commas." msgstr "輸入以逗號分隔的數字。" -#: core/validators.py:95 +#: core/validators.py:99 msgid "Enter valid e-mail addresses separated by commas." msgstr "輸入以逗號分隔的有效電子郵件地址。" -#: core/validators.py:99 +#: core/validators.py:103 msgid "Please enter a valid IP address." msgstr "請輸入有效的 IP 位址。" -#: core/validators.py:103 +#: core/validators.py:107 msgid "Empty values are not allowed here." msgstr "此處不允許空值。" -#: core/validators.py:107 +#: core/validators.py:111 msgid "Non-numeric characters aren't allowed here." msgstr "此處不允許非數字字元。" -#: core/validators.py:111 +#: core/validators.py:115 msgid "This value can't be comprised solely of digits." msgstr "此值不能只以數字組成。" -#: core/validators.py:116 -msgid "Enter a whole number." -msgstr "輸入一個整數。" - -#: core/validators.py:120 +#: core/validators.py:124 msgid "Only alphabetical characters are allowed here." msgstr "此處只允許字母。" -#: core/validators.py:124 -msgid "Enter a valid date in YYYY-MM-DD format." -msgstr "以 YYYY-MM-DD 格式輸入有效的日期。" +#: core/validators.py:139 +msgid "Year must be 1900 or later." +msgstr "年份必須是1900或之後" -#: core/validators.py:128 +#: core/validators.py:143 +#, python-format +msgid "Invalid date: %s" +msgstr "" + +#: core/validators.py:153 msgid "Enter a valid time in HH:MM format." -msgstr "以 HH:MM 格式輸入有效的時間。" -#: core/validators.py:132 db/models/fields/__init__.py:468 -msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "以 YYYY-MM-DD HH:MM 格式輸入有效的日期/時間。" +msgstr "輸入 HH:MM 有效的時間格式。" -#: core/validators.py:136 -msgid "Enter a valid e-mail address." -msgstr "輸入有效的電子郵件地址。" - -#: core/validators.py:148 +#: core/validators.py:178 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." -msgstr "上傳一個有效的影像。你上傳的檔案不是影像,否則就是壞掉了。" +msgstr "上傳一個有效的影像。你上傳的檔案不是影像,否則就是壞掉的圖。" -#: core/validators.py:155 +#: core/validators.py:185 #, python-format msgid "The URL %s does not point to a valid image." -msgstr "URL %s 未指向有效的影像。" +msgstr "URL %s 不是指向一個有效的圖片。" -#: core/validators.py:159 +#: core/validators.py:189 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "電話號碼必須是 XXX-XXX-XXXX 格式。\"%s\" 無效。" -#: core/validators.py:167 +#: core/validators.py:197 #, python-format msgid "The URL %s does not point to a valid QuickTime video." + msgstr "URL %s 未指向有效的 QuickTime 視像。" -#: core/validators.py:171 +#: core/validators.py:201 msgid "A valid URL is required." msgstr "必須是有效的 URL。" -#: core/validators.py:185 + +#: core/validators.py:215 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" @@ -1707,68 +2510,85 @@ msgstr "" "必須是有效的 HTML。具體的錯誤是:\n" "%s" -#: core/validators.py:192 +#: core/validators.py:222 #, python-format msgid "Badly formed XML: %s" msgstr "排列錯誤的 XML: %s" -#: core/validators.py:202 +#: core/validators.py:239 #, python-format msgid "Invalid URL: %s" msgstr "無效的 URL: %s" -#: core/validators.py:206 core/validators.py:208 +#: core/validators.py:244 core/validators.py:246 #, python-format msgid "The URL %s is a broken link." msgstr "URL %s 是斷掉的連結。" -#: core/validators.py:214 +#: core/validators.py:252 msgid "Enter a valid U.S. state abbreviation." msgstr "輸入有效的 U.S. 州名簡稱。" -#: core/validators.py:229 +#: core/validators.py:266 #, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." -msgstr[0] "看管口舌!此處不允許 %s 這樣的字眼。" +msgstr[0] "看住你的嘴!此處不允許 %s 這樣的字眼。" +msgstr[1] "" -#: core/validators.py:236 +#: core/validators.py:273 #, python-format msgid "This field must match the '%s' field." msgstr "此欄位必須符合 '%s' 欄位。" -#: core/validators.py:255 +#: core/validators.py:292 msgid "Please enter something for at least one field." msgstr "請在至少一個欄位裡進行輸入。" -#: core/validators.py:264 core/validators.py:275 +#: core/validators.py:301 core/validators.py:312 msgid "Please enter both fields or leave them both empty." msgstr "請輸入兩個欄位或全部留空。" -#: core/validators.py:282 +#: core/validators.py:320 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "如果 %(field)s 是 %(value)s 則此欄位必須給定。" -#: core/validators.py:294 +#: core/validators.py:333 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "如果 %(field)s 不是 %(value)s 則此欄位必須給定。" -#: core/validators.py:313 +#: core/validators.py:352 msgid "Duplicate values are not allowed." msgstr "不允許重複值。" -#: core/validators.py:336 +#: core/validators.py:367 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "這個值必須介於 %(lower)s 和 %(upper)s 之間。" + +#: core/validators.py:369 +#, python-format +msgid "This value must be at least %s." +msgstr "這個值需要至少為 %s 。" + +#: core/validators.py:371 +#, python-format + +msgid "This value must be no more than %s." +msgstr "這個值不能大於 %s 。" + +#: core/validators.py:407 #, python-format msgid "This value must be a power of %s." msgstr "此值必須是 %s 的乘方。" -#: core/validators.py:347 +#: core/validators.py:418 msgid "Please enter a valid decimal number." msgstr "請輸入有效的小數。" -#: core/validators.py:349 +#: core/validators.py:422 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" @@ -1776,7 +2596,17 @@ msgid_plural "" msgstr[0] "請輸入最長 %s 位的有效小數。" msgstr[1] "請輸入最長 %s 位的有效小數。" -#: core/validators.py:352 +#: core/validators.py:425 +#, 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] "請輸入最長 %s 位的有效小數。" +msgstr[1] "請輸入最長 %s 位的有效小數。" + + +#: core/validators.py:428 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" @@ -1784,36 +2614,36 @@ msgid_plural "" msgstr[0] "請輸入小數最長 %s 位的有效小數。" msgstr[1] "請輸入小數最長 %s 位的有效小數。" -#: core/validators.py:362 +#: core/validators.py:438 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "確定你上傳的檔案至少有 %s 位元組。" -#: core/validators.py:363 +#: core/validators.py:439 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "確定你上傳的檔案最多是 %s 位元組。" -#: core/validators.py:376 +#: core/validators.py:456 msgid "The format for this field is wrong." msgstr "此欄位的格式錯誤。" -#: core/validators.py:391 +#: core/validators.py:471 msgid "This field is invalid." -msgstr "此欄位無效。" +msgstr "此欄位錯誤" -#: core/validators.py:426 +#: core/validators.py:507 #, python-format msgid "Could not retrieve anything from %s." msgstr "無法從 %s 取得任何東西。" -#: core/validators.py:429 +#: core/validators.py:510 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "URL %(url)s 傳回了無效的 Content-Type 標頭 '%(contenttype)s'。" -#: core/validators.py:462 +#: core/validators.py:543 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " @@ -1822,153 +2652,39 @@ msgstr "" "請將第 %(line)s 行開始未封閉的 %(tag)s 標籤封閉起來 (行開始於 \"%(start)s" "\")。" -#: core/validators.py:466 +#: core/validators.py:547 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " "starts with \"%(start)s\".)" msgstr "該內容不允許某些從第 %(line)s 開始的文字 (行開始於 \"%(start)s\")。" -#: core/validators.py:471 +#: core/validators.py:552 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" "(start)s\".)" msgstr "" -"第 \"%(line)s\" 的 \"%(attr)s\" 是無效的屬性 (行開始顧 \"%(start)s\")。" +"第 \"%(line)s\" 的 \"%(attr)s\" 是無效的屬性 (行開始於 \"%(start)s\")。" -#: core/validators.py:476 +#: core/validators.py:557 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" "(start)s\".)" msgstr "第 %(line)s 行的 \"<%(tag)s>\" 是無效的標籤 (行開始於 \"%(start)s\")。" -#: core/validators.py:480 +#: core/validators.py:561 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " "starts with \"%(start)s\".)" msgstr "" -"第 %(line)s 有一個標籤缺少了一個或更多必需的屬性 (行開始顧 \"%(start)s\")。" +"第 %(line)s 有一個標籤缺少了一個或更多必需的屬性 (行開始於 \"%(start)s\")。" -#: core/validators.py:485 +#: core/validators.py:566 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " "starts with \"%(start)s\".)" -msgstr "" -"在第 %(line)s 的 \"%(attr)s\" 屬性有一個無效值 (行開始於 \"%(start)s\")。" - -#: db/models/manipulators.py:302 -#, python-format -msgid "%(object)s with this %(type)s already exists for the given %(field)s." -msgstr "此 %(type)s 的 %(object)s 已存在於給定的 %(field)s 裡。" - -#: db/models/fields/__init__.py:40 -#, python-format -msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "此 %(fieldname)s 欄位的 %(optname)s 已經存在。" - -#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265 -#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553 -#: forms/__init__.py:346 -msgid "This field is required." -msgstr "此欄位是必需的。" - -#: db/models/fields/__init__.py:337 -#, fuzzy -msgid "This value must be an integer." -msgstr "此值必須是 %s 的乘方。" - -#: db/models/fields/__init__.py:369 -#, fuzzy -msgid "This value must be either True or False." -msgstr "此值必須是 %s 的乘方。" - -#: db/models/fields/__init__.py:385 -#, fuzzy -msgid "This field cannot be null." -msgstr "此欄位無效。" - -#: db/models/fields/__init__.py:562 -msgid "Enter a valid filename." -msgstr "輸入有效的檔名。" - -#: db/models/fields/related.py:43 -#, python-format -msgid "Please enter a valid %s." -msgstr "請輸入一個有效的 %s。" - -#: db/models/fields/related.py:579 -#, fuzzy -msgid "Separate multiple IDs with commas." -msgstr " 以逗號分隔多個 ID。" - -#: db/models/fields/related.py:581 -#, fuzzy -msgid "" -"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr " 押下 \"Control\" 或 Mac 下的 \"Command\",以進行多重選擇。" - -#: db/models/fields/related.py:625 -#, python-format -msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." -msgid_plural "" -"Please enter valid %(self)s IDs. The values %(value)r are invalid." -msgstr[0] "請輸入有效的 %(self)s ID。%(value)r 是無效的。" -msgstr[1] "請輸入有效的 %(self)s ID。%(value)r 是無效的。" - -#: forms/__init__.py:380 -#, python-format -msgid "Ensure your text is less than %s character." -msgid_plural "Ensure your text is less than %s characters." -msgstr[0] "確定你的文字少於 %s 個字元。" -msgstr[1] "確定你的文字少於 %s 個字元。" - -#: forms/__init__.py:385 -msgid "Line breaks are not allowed here." -msgstr "此處不允許斷行。" - -#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589 -#, python-format -msgid "Select a valid choice; '%(data)s' is not in %(choices)s." -msgstr "進行有效的選擇: '%(data)s' 不在 %(choices)s 裡。" - -#: forms/__init__.py:645 -msgid "The submitted file is empty." -msgstr "提交的檔案是空的。" - -#: forms/__init__.py:699 -msgid "Enter a whole number between -32,768 and 32,767." -msgstr "輸入一個介於 -32,768 與 32,767 之間的整數。" - -#: forms/__init__.py:708 -msgid "Enter a positive number." -msgstr "輸入一個正數。" - -#: forms/__init__.py:717 -msgid "Enter a whole number between 0 and 32,767." -msgstr "輸入一個介於 0 與 32,767 之間的整數。" - -#: template/defaultfilters.py:379 -msgid "yes,no,maybe" -msgstr "是,否,也許" - -#~ msgid "Comment" -#~ msgstr "評論" - -#~ msgid "Comments" -#~ msgstr "評論" - -#~ msgid "String (up to 50)" -#~ msgstr "字串 (最長到 50)" - -#~ msgid "label" -#~ msgstr "標示" - -#~ msgid "package" -#~ msgstr "套件" - -#~ msgid "packages" -#~ msgstr "套件" +msgstr "第 \"%(line)s\" 的 \"%(attr)s\" 屬性是無效的值 (行開始於 \"%(start)s\")。" diff --git a/django/contrib/auth/decorators.py b/django/contrib/auth/decorators.py index b6481ea52c..f3f7f530ef 100644 --- a/django/contrib/auth/decorators.py +++ b/django/contrib/auth/decorators.py @@ -8,19 +8,9 @@ def user_passes_test(test_func, login_url=None, redirect_field_name=REDIRECT_FIE redirecting to the log-in page if necessary. The test should be a callable that takes the user object and returns True if the user passes. """ - if not login_url: - from django.conf import settings - login_url = settings.LOGIN_URL - def _dec(view_func): - def _checklogin(request, *args, **kwargs): - if test_func(request.user): - return view_func(request, *args, **kwargs) - return HttpResponseRedirect('%s?%s=%s' % (login_url, redirect_field_name, urlquote(request.get_full_path()))) - _checklogin.__doc__ = view_func.__doc__ - _checklogin.__dict__ = view_func.__dict__ - - return _checklogin - return _dec + def decorate(view_func): + return _CheckLogin(view_func, test_func, login_url, redirect_field_name) + return decorate def login_required(function=None, redirect_field_name=REDIRECT_FIELD_NAME): """ @@ -42,3 +32,34 @@ def permission_required(perm, login_url=None): """ return user_passes_test(lambda u: u.has_perm(perm), login_url=login_url) +class _CheckLogin(object): + """ + Class that checks that the user passes the given test, redirecting to + the log-in page if necessary. If the test is passed, the view function + is invoked. The test should be a callable that takes the user object + and returns True if the user passes. + + We use a class here so that we can define __get__. This way, when a + _CheckLogin object is used as a method decorator, the view function + is properly bound to its instance. + """ + def __init__(self, view_func, test_func, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME): + if not login_url: + from django.conf import settings + login_url = settings.LOGIN_URL + self.view_func = view_func + self.test_func = test_func + self.login_url = login_url + self.redirect_field_name = redirect_field_name + self.__name__ = view_func.__name__ + + def __get__(self, obj, cls=None): + view_func = self.view_func.__get__(obj, cls) + return _CheckLogin(view_func, self.test_func, self.login_url, self.redirect_field_name) + + def __call__(self, request, *args, **kwargs): + if self.test_func(request.user): + return self.view_func(request, *args, **kwargs) + path = urlquote(request.get_full_path()) + tup = self.login_url, self.redirect_field_name, path + return HttpResponseRedirect('%s?%s=%s' % tup) diff --git a/django/core/handlers/base.py b/django/core/handlers/base.py index 13c7f4193f..1796cae8ea 100644 --- a/django/core/handlers/base.py +++ b/django/core/handlers/base.py @@ -4,6 +4,10 @@ from django import http import sys class BaseHandler(object): + # Changes that are always applied to a response (in this order). + response_fixes = [http.fix_location_header, + http.conditional_content_removal] + def __init__(self): self._request_middleware = self._view_middleware = self._response_middleware = self._exception_middleware = None @@ -50,10 +54,6 @@ class BaseHandler(object): def get_response(self, request): "Returns an HttpResponse object for the given HttpRequest" - response = self._real_get_response(request) - return fix_location_header(request, response) - - def _real_get_response(self, request): from django.core import exceptions, urlresolvers from django.core.mail import mail_admins from django.conf import settings @@ -134,15 +134,13 @@ class BaseHandler(object): import traceback return '\n'.join(traceback.format_exception(*(exc_info or sys.exc_info()))) -def fix_location_header(request, response): - """ - Ensure that we always use an absolute URI in any location header in the - response. This is required by RFC 2616, section 14.30. - - Code constructing response objects is free to insert relative paths and - this function converts them to absolute paths. - """ - if 'Location' in response and request.get_host(): - response['Location'] = request.build_absolute_uri(response['Location']) - return response + def apply_response_fixes(self, request, response): + """ + Applies each of the functions in self.response_fixes to the request and + response, modifying the response in the process. Returns the new + response. + """ + for func in self.response_fixes: + response = func(request, response) + return response diff --git a/django/core/handlers/modpython.py b/django/core/handlers/modpython.py index 2a3e03f3dd..e81a65be4d 100644 --- a/django/core/handlers/modpython.py +++ b/django/core/handlers/modpython.py @@ -162,6 +162,7 @@ class ModPythonHandler(BaseHandler): # Apply response middleware for middleware_method in self._response_middleware: response = middleware_method(request, response) + response = self.apply_response_fixes(request, response) finally: dispatcher.send(signal=signals.request_finished) diff --git a/django/core/handlers/wsgi.py b/django/core/handlers/wsgi.py index d06eee73f2..94575ca369 100644 --- a/django/core/handlers/wsgi.py +++ b/django/core/handlers/wsgi.py @@ -207,6 +207,7 @@ class WSGIHandler(BaseHandler): # Apply response middleware for middleware_method in self._response_middleware: response = middleware_method(request, response) + response = self.apply_response_fixes(request, response) finally: dispatcher.send(signal=signals.request_finished) @@ -220,3 +221,4 @@ class WSGIHandler(BaseHandler): response_headers.append(('Set-Cookie', str(c.output(header='')))) start_response(status, response_headers) return response + diff --git a/django/http/__init__.py b/django/http/__init__.py index 51744a0866..47f9736ce2 100644 --- a/django/http/__init__.py +++ b/django/http/__init__.py @@ -5,6 +5,7 @@ from urllib import urlencode from urlparse import urljoin from django.utils.datastructures import MultiValueDict, FileDict from django.utils.encoding import smart_str, iri_to_uri, force_unicode +from utils import * RESERVED_CHARS="!*'();:@&=+$,/?%#[]" diff --git a/django/http/utils.py b/django/http/utils.py new file mode 100644 index 0000000000..d08a9e0237 --- /dev/null +++ b/django/http/utils.py @@ -0,0 +1,34 @@ +""" +Functions that modify an HTTP request or response in some way. +""" + +# This group of functions are run as part of the response handling, after +# everything else, including all response middleware. Think of them as +# "compulsory response middleware". Be careful about what goes here, because +# it's a little fiddly to override this behaviour, so they should be truly +# universally applicable. + +def fix_location_header(request, response): + """ + Ensures that we always use an absolute URI in any location header in the + response. This is required by RFC 2616, section 14.30. + + Code constructing response objects is free to insert relative paths and + this function converts them to absolute paths. + """ + if 'Location' in response and request.get_host(): + response['Location'] = request.build_absolute_uri(response['Location']) + return response + +def conditional_content_removal(request, response): + """ + Removes the content of responses for HEAD requests, 1xx, 204 and 304 + responses. Ensures compliance with RFC 2616, section 4.3. + """ + if 100 <= response.status_code < 200 or response.status_code in (204, 304): + response.content = '' + response['Content-Length'] = 0 + if request.method == 'HEAD': + response.content = '' + return response + diff --git a/django/middleware/http.py b/django/middleware/http.py index d080ebcf0f..2ef46c6b61 100644 --- a/django/middleware/http.py +++ b/django/middleware/http.py @@ -6,8 +6,6 @@ class ConditionalGetMiddleware(object): Last-Modified header, and the request has If-None-Match or If-Modified-Since, the response is replaced by an HttpNotModified. - Removes the content from any response to a HEAD request. - Also sets the Date and Content-Length response-headers. """ def process_response(self, request, response): @@ -18,19 +16,17 @@ class ConditionalGetMiddleware(object): if response.has_header('ETag'): if_none_match = request.META.get('HTTP_IF_NONE_MATCH', None) if if_none_match == response['ETag']: - response.status_code = 304 - response.content = '' - response['Content-Length'] = '0' + # Setting the status is enough here. The response handling path + # automatically removes content for this status code (in + # http.conditional_content_removal()). + response.status = 304 if response.has_header('Last-Modified'): if_modified_since = request.META.get('HTTP_IF_MODIFIED_SINCE', None) if if_modified_since == response['Last-Modified']: - response.status_code = 304 - response.content = '' - response['Content-Length'] = '0' - - if request.method == 'HEAD': - response.content = '' + # Setting the status code is enough here (same reasons as + # above). + response.status = 304 return response diff --git a/django/newforms/forms.py b/django/newforms/forms.py index b502fb4de2..3e7ab957b0 100644 --- a/django/newforms/forms.py +++ b/django/newforms/forms.py @@ -2,7 +2,7 @@ Form classes """ -import copy +from copy import deepcopy from django.utils.datastructures import SortedDict from django.utils.html import escape @@ -21,18 +21,6 @@ def pretty_name(name): name = name[0].upper() + name[1:] return name.replace('_', ' ') -class SortedDictFromList(SortedDict): - "A dictionary that keeps its keys in the order in which they're inserted." - # This is different than django.utils.datastructures.SortedDict, because - # this takes a list/tuple as the argument to __init__(). - def __init__(self, data=None): - if data is None: data = [] - self.keyOrder = [d[0] for d in data] - dict.__init__(self, dict(data)) - - def copy(self): - return SortedDictFromList([(k, copy.deepcopy(v)) for k, v in self.items()]) - class DeclarativeFieldsMetaclass(type): """ Metaclass that converts Field attributes to a dictionary called @@ -50,7 +38,7 @@ class DeclarativeFieldsMetaclass(type): if hasattr(base, 'base_fields'): fields = base.base_fields.items() + fields - attrs['base_fields'] = SortedDictFromList(fields) + attrs['base_fields'] = SortedDict(fields) new_class = type.__new__(cls, name, bases, attrs) if 'media' not in attrs: @@ -79,7 +67,7 @@ class BaseForm(StrAndUnicode): # alter self.fields, we create self.fields here by copying base_fields. # Instances should always modify self.fields; they should not modify # self.base_fields. - self.fields = self.base_fields.copy() + self.fields = deepcopy(self.base_fields) def __unicode__(self): return self.as_table() diff --git a/django/newforms/models.py b/django/newforms/models.py index 3a80517816..82f794c02b 100644 --- a/django/newforms/models.py +++ b/django/newforms/models.py @@ -5,9 +5,10 @@ and database field objects. from django.utils.translation import ugettext from django.utils.encoding import smart_unicode +from django.utils.datastructures import SortedDict from util import ValidationError -from forms import BaseForm, SortedDictFromList +from forms import BaseForm from fields import Field, ChoiceField, IntegerField from formsets import BaseFormSet, formset_for_form, DELETION_FIELD_NAME from widgets import Select, SelectMultiple, HiddenInput, MultipleHiddenInput @@ -91,7 +92,7 @@ def form_for_model(model, form=BaseForm, fields=None, formfield = formfield_callback(f) if formfield: field_list.append((f.name, formfield)) - base_fields = SortedDictFromList(field_list) + base_fields = SortedDict(field_list) return type(opts.object_name + 'Form', (form,), {'base_fields': base_fields, '_model': model, 'save': make_model_save(model, fields, 'created')}) @@ -120,7 +121,7 @@ def form_for_instance(instance, form=BaseForm, fields=None, formfield = formfield_callback(f, initial=current_value) if formfield: field_list.append((f.name, formfield)) - base_fields = SortedDictFromList(field_list) + base_fields = SortedDict(field_list) return type(opts.object_name + 'InstanceForm', (form,), {'base_fields': base_fields, '_model': model, 'save': make_instance_save(instance, fields, 'changed')}) @@ -129,8 +130,8 @@ def form_for_fields(field_list): """ Returns a Form class for the given list of Django database field instances. """ - fields = SortedDictFromList([(f.name, f.formfield()) - for f in field_list if f.editable]) + fields = SortedDict([(f.name, f.formfield()) + for f in field_list if f.editable]) return type('FormForFields', (BaseForm,), {'base_fields': fields}) class QuerySetIterator(object): @@ -156,14 +157,22 @@ class ModelChoiceField(ChoiceField): def __init__(self, queryset, empty_label=u"---------", cache_choices=False, required=True, widget=Select, label=None, initial=None, help_text=None): - self.queryset = queryset self.empty_label = empty_label self.cache_choices = cache_choices # Call Field instead of ChoiceField __init__() because we don't need # ChoiceField.__init__(). Field.__init__(self, required, widget, label, initial, help_text) + self.queryset = queryset + + def _get_queryset(self): + return self._queryset + + def _set_queryset(self, queryset): + self._queryset = queryset self.widget.choices = self.choices + queryset = property(_get_queryset, _set_queryset) + def _get_choices(self): # If self._choices is set, then somebody must have manually set # the property self.choices. In this case, just return self._choices. @@ -191,7 +200,7 @@ class ModelChoiceField(ChoiceField): if value in ('', None): return None try: - value = self.queryset.model._default_manager.get(pk=value) + value = self.queryset.get(pk=value) except self.queryset.model.DoesNotExist: raise ValidationError(ugettext(u'Select a valid choice. That' u' choice is not one of the' @@ -218,7 +227,7 @@ class ModelMultipleChoiceField(ModelChoiceField): final_values = [] for val in value: try: - obj = self.queryset.model._default_manager.get(pk=val) + obj = self.queryset.get(pk=val) except self.queryset.model.DoesNotExist: raise ValidationError(ugettext(u'Select a valid choice. %s is' u' not one of the available' diff --git a/django/test/client.py b/django/test/client.py index 6a05d9dd9c..bbd8239c33 100644 --- a/django/test/client.py +++ b/django/test/client.py @@ -42,7 +42,7 @@ class ClientHandler(BaseHandler): # Apply response middleware for middleware_method in self._response_middleware: response = middleware_method(request, response) - + response = self.apply_response_fixes(request, response) finally: dispatcher.send(signal=signals.request_finished) diff --git a/django/test/testcases.py b/django/test/testcases.py index 732e713d4a..2aa0a0783d 100644 --- a/django/test/testcases.py +++ b/django/test/testcases.py @@ -1,6 +1,6 @@ import re import unittest -from urlparse import urlsplit +from urlparse import urlsplit, urlunsplit from django.http import QueryDict from django.db import transaction @@ -74,7 +74,7 @@ class TestCase(unittest.TestCase): super(TestCase, self).__call__(result) def assertRedirects(self, response, expected_url, status_code=302, - target_status_code=200): + target_status_code=200, host=None): """Asserts that a response redirected to a specific URL, and that the redirect URL can be loaded. @@ -86,6 +86,10 @@ class TestCase(unittest.TestCase): " (expected %d)" % (response.status_code, status_code))) url = response['Location'] scheme, netloc, path, query, fragment = urlsplit(url) + e_scheme, e_netloc, e_path, e_query, e_fragment = urlsplit(expected_url) + if not (e_scheme or e_netloc): + expected_url = urlunsplit(('http', host or 'testserver', e_path, + e_query, e_fragment)) self.assertEqual(url, expected_url, "Response redirected to '%s', expected '%s'" % (url, expected_url)) diff --git a/django/utils/datastructures.py b/django/utils/datastructures.py index e0835b2cfc..549aa3f183 100644 --- a/django/utils/datastructures.py +++ b/django/utils/datastructures.py @@ -62,12 +62,10 @@ class SortedDict(dict): else: self.keyOrder = [key for key, value in data] - def __deepcopy__(self,memo): + def __deepcopy__(self, memo): from copy import deepcopy - obj = self.__class__() - for k, v in self.items(): - obj[k] = deepcopy(v, memo) - return obj + return self.__class__([(key, deepcopy(value, memo)) + for key, value in self.iteritems()]) def __setitem__(self, key, value): dict.__setitem__(self, key, value) diff --git a/docs/sitemaps.txt b/docs/sitemaps.txt index 1d4fba2626..eb749dda2f 100644 --- a/docs/sitemaps.txt +++ b/docs/sitemaps.txt @@ -47,7 +47,7 @@ Initialization ============== To activate sitemap generation on your Django site, add this line to your -URLconf_: +URLconf_:: (r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}) diff --git a/tests/modeltests/model_forms/models.py b/tests/modeltests/model_forms/models.py index bc14c117d5..e4e230c98d 100644 --- a/tests/modeltests/model_forms/models.py +++ b/tests/modeltests/model_forms/models.py @@ -440,6 +440,8 @@ the data in the database when the form is instantiated. >>> from django.newforms import ModelChoiceField, ModelMultipleChoiceField >>> f = ModelChoiceField(Category.objects.all()) +>>> list(f.choices) +[(u'', u'---------'), (1, u'Entertainment'), (2, u"It's a test"), (3, u'Third'), (4, u'Fourth')] >>> f.clean('') Traceback (most recent call last): ... @@ -485,9 +487,23 @@ Traceback (most recent call last): ... ValidationError: [u'Select a valid choice. That choice is not one of the available choices.'] +# queryset can be changed after the field is created. +>>> f.queryset = Category.objects.exclude(name='Fourth') +>>> list(f.choices) +[(u'', u'---------'), (1, u'Entertainment'), (2, u"It's a test"), (3, u'Third')] +>>> f.clean(3) + +>>> f.clean(4) +Traceback (most recent call last): +... +ValidationError: [u'Select a valid choice. That choice is not one of the available choices.'] + + # ModelMultipleChoiceField #################################################### >>> f = ModelMultipleChoiceField(Category.objects.all()) +>>> list(f.choices) +[(1, u'Entertainment'), (2, u"It's a test"), (3, u'Third'), (4, u'Fourth')] >>> f.clean(None) Traceback (most recent call last): ... @@ -517,7 +533,7 @@ Traceback (most recent call last): ... ValidationError: [u'Enter a list of values.'] -# Add a Category object *after* the ModelChoiceField has already been +# Add a Category object *after* the ModelMultipleChoiceField has already been # instantiated. This proves clean() checks the database during clean() rather # than caching it at time of instantiation. >>> Category.objects.create(id=6, name='Sixth', url='6th') @@ -525,7 +541,7 @@ ValidationError: [u'Enter a list of values.'] >>> f.clean([6]) [] -# Delete a Category object *after* the ModelChoiceField has already been +# Delete a Category object *after* the ModelMultipleChoiceField has already been # instantiated. This proves clean() checks the database during clean() rather # than caching it at time of instantiation. >>> Category.objects.get(url='6th').delete() @@ -552,6 +568,22 @@ Traceback (most recent call last): ... ValidationError: [u'Select a valid choice. 10 is not one of the available choices.'] +# queryset can be changed after the field is created. +>>> f.queryset = Category.objects.exclude(name='Fourth') +>>> list(f.choices) +[(1, u'Entertainment'), (2, u"It's a test"), (3, u'Third')] +>>> f.clean([3]) +[] +>>> f.clean([4]) +Traceback (most recent call last): +... +ValidationError: [u'Select a valid choice. 4 is not one of the available choices.'] +>>> f.clean(['3', '4']) +Traceback (most recent call last): +... +ValidationError: [u'Select a valid choice. 4 is not one of the available choices.'] + + # PhoneNumberField ############################################################ >>> PhoneNumberForm = form_for_model(PhoneNumber) diff --git a/tests/modeltests/test_client/models.py b/tests/modeltests/test_client/models.py index 2df5d3cf77..c7aaaff67d 100644 --- a/tests/modeltests/test_client/models.py +++ b/tests/modeltests/test_client/models.py @@ -4,7 +4,7 @@ The test client is a class that can act like a simple browser for testing purposes. - + It allows the user to compose GET and POST requests, and obtain the response that the server gave to those requests. The server Response objects are annotated with the details @@ -15,8 +15,8 @@ Client objects are stateful - they will retain cookie (and thus session) details for the lifetime of the Client instance. This is not intended as a replacement for Twill,Selenium, or -other browser automation frameworks - it is here to allow -testing against the contexts and templates produced by a view, +other browser automation frameworks - it is here to allow +testing against the contexts and templates produced by a view, rather than the HTML rendered to the end-user. """ @@ -25,14 +25,14 @@ from django.core import mail class ClientTest(TestCase): fixtures = ['testdata.json'] - + def test_get_view(self): "GET a view" # The data is ignored, but let's check it doesn't crash the system # anyway. data = {'var': u'\xf2'} response = self.client.get('/test_client/get_view/', data) - + # Check some response details self.assertContains(response, 'This is a test') self.assertEqual(response.context['var'], u'\xf2') @@ -41,36 +41,36 @@ class ClientTest(TestCase): def test_get_post_view(self): "GET a view that normally expects POSTs" response = self.client.get('/test_client/post_view/', {}) - + # Check some response details self.assertEqual(response.status_code, 200) self.assertEqual(response.template.name, 'Empty GET Template') self.assertTemplateUsed(response, 'Empty GET Template') self.assertTemplateNotUsed(response, 'Empty POST Template') - + def test_empty_post(self): "POST an empty dictionary to a view" response = self.client.post('/test_client/post_view/', {}) - + # Check some response details self.assertEqual(response.status_code, 200) self.assertEqual(response.template.name, 'Empty POST Template') self.assertTemplateNotUsed(response, 'Empty GET Template') self.assertTemplateUsed(response, 'Empty POST Template') - + def test_post(self): "POST some data to a view" post_data = { 'value': 37 } response = self.client.post('/test_client/post_view/', post_data) - + # Check some response details self.assertEqual(response.status_code, 200) self.assertEqual(response.context['data'], '37') self.assertEqual(response.template.name, 'POST Template') self.failUnless('Data received' in response.content) - + def test_raw_post(self): "POST raw data (with a content type) to a view" test_doc = """BlinkMalcolm Gladwell""" @@ -83,18 +83,21 @@ class ClientTest(TestCase): def test_redirect(self): "GET a URL that redirects elsewhere" response = self.client.get('/test_client/redirect_view/') - # Check that the response was a 302 (redirect) - self.assertRedirects(response, 'http://testserver/test_client/get_view/') - - client_providing_host = Client(HTTP_HOST='django.testserver') + # Check that the response was a 302 (redirect) and that + # assertRedirect() understands to put an implicit http://testserver/ in + # front of non-absolute URLs. + self.assertRedirects(response, '/test_client/get_view/') + + host = 'django.testserver' + client_providing_host = Client(HTTP_HOST=host) response = client_providing_host.get('/test_client/redirect_view/') # Check that the response was a 302 (redirect) with absolute URI - self.assertRedirects(response, 'http://django.testserver/test_client/get_view/') - + self.assertRedirects(response, '/test_client/get_view/', host=host) + def test_redirect_with_query(self): "GET a URL that redirects with given GET parameters" response = self.client.get('/test_client/redirect_view/', {'var': 'value'}) - + # Check if parameters are intact self.assertRedirects(response, 'http://testserver/test_client/get_view/?var=value') @@ -112,7 +115,7 @@ class ClientTest(TestCase): def test_redirect_to_strange_location(self): "GET a URL that redirects to a non-200 page" response = self.client.get('/test_client/double_redirect_view/') - + # Check that the response was a 302, and that # the attempt to get the redirection location returned 301 when retrieved self.assertRedirects(response, 'http://testserver/test_client/permanent_redirect_view/', target_status_code=301) @@ -120,7 +123,7 @@ class ClientTest(TestCase): def test_notfound_response(self): "GET a URL that responds as '404:Not Found'" response = self.client.get('/test_client/bad_view/') - + # Check that the response was a 404, and that the content contains MAGIC self.assertContains(response, 'MAGIC', status_code=404) @@ -148,12 +151,12 @@ class ClientTest(TestCase): self.assertTemplateUsed(response, "Form GET Template") # Check that the multi-value data has been rolled out ok self.assertContains(response, 'Select a valid choice.', 0) - + def test_incomplete_data_form(self): "POST incomplete data to a form" post_data = { 'text': 'Hello World', - 'value': 37 + 'value': 37 } response = self.client.post('/test_client/form_view/', post_data) self.assertContains(response, 'This field is required.', 3) @@ -198,7 +201,7 @@ class ClientTest(TestCase): "POST incomplete data to a form using multiple templates" post_data = { 'text': 'Hello World', - 'value': 37 + 'value': 37 } response = self.client.post('/test_client/form_view_with_template/', post_data) self.assertContains(response, 'POST data has errors') @@ -226,21 +229,21 @@ class ClientTest(TestCase): self.assertTemplateNotUsed(response, "Invalid POST Template") self.assertFormError(response, 'form', 'email', 'Enter a valid e-mail address.') - + def test_unknown_page(self): "GET an invalid URL" response = self.client.get('/test_client/unknown_view/') - + # Check that the response was a 404 self.assertEqual(response.status_code, 404) - + def test_view_with_login(self): "Request a page that is protected with @login_required" - + # Get the page without logging in. Should result in 302. response = self.client.get('/test_client/login_protected_view/') self.assertRedirects(response, 'http://testserver/accounts/login/?next=/test_client/login_protected_view/') - + # Log in login = self.client.login(username='testclient', password='password') self.failUnless(login, 'Could not log in') @@ -250,9 +253,25 @@ class ClientTest(TestCase): self.assertEqual(response.status_code, 200) self.assertEqual(response.context['user'].username, 'testclient') + def test_view_with_method_login(self): + "Request a page that is protected with a @login_required method" + + # Get the page without logging in. Should result in 302. + response = self.client.get('/test_client/login_protected_method_view/') + self.assertRedirects(response, 'http://testserver/accounts/login/?next=/test_client/login_protected_method_view/') + + # Log in + login = self.client.login(username='testclient', password='password') + self.failUnless(login, 'Could not log in') + + # Request a page that requires a login + response = self.client.get('/test_client/login_protected_method_view/') + self.assertEqual(response.status_code, 200) + self.assertEqual(response.context['user'].username, 'testclient') + def test_view_with_login_and_custom_redirect(self): "Request a page that is protected with @login_required(redirect_field_name='redirect_to')" - + # Get the page without logging in. Should result in 302. response = self.client.get('/test_client/login_protected_view_custom_redirect/') self.assertRedirects(response, 'http://testserver/accounts/login/?redirect_to=/test_client/login_protected_view_custom_redirect/') @@ -295,6 +314,40 @@ class ClientTest(TestCase): response = self.client.get('/test_client/login_protected_view/') self.assertRedirects(response, 'http://testserver/accounts/login/?next=/test_client/login_protected_view/') + def test_view_with_permissions(self): + "Request a page that is protected with @permission_required" + + # Get the page without logging in. Should result in 302. + response = self.client.get('/test_client/permission_protected_view/') + self.assertRedirects(response, 'http://testserver/accounts/login/?next=/test_client/permission_protected_view/') + + # Log in + login = self.client.login(username='testclient', password='password') + self.failUnless(login, 'Could not log in') + + # Log in with wrong permissions. Should result in 302. + response = self.client.get('/test_client/permission_protected_view/') + self.assertRedirects(response, 'http://testserver/accounts/login/?next=/test_client/permission_protected_view/') + + # TODO: Log in with right permissions and request the page again + + def test_view_with_method_permissions(self): + "Request a page that is protected with a @permission_required method" + + # Get the page without logging in. Should result in 302. + response = self.client.get('/test_client/permission_protected_method_view/') + self.assertRedirects(response, 'http://testserver/accounts/login/?next=/test_client/permission_protected_method_view/') + + # Log in + login = self.client.login(username='testclient', password='password') + self.failUnless(login, 'Could not log in') + + # Log in with wrong permissions. Should result in 302. + response = self.client.get('/test_client/permission_protected_method_view/') + self.assertRedirects(response, 'http://testserver/accounts/login/?next=/test_client/permission_protected_method_view/') + + # TODO: Log in with right permissions and request the page again + def test_session_modifying_view(self): "Request a page that modifies the session" # Session value isn't set initially @@ -303,53 +356,53 @@ class ClientTest(TestCase): self.fail("Shouldn't have a session value") except KeyError: pass - + from django.contrib.sessions.models import Session response = self.client.post('/test_client/session_view/') - + # Check that the session was modified self.assertEquals(self.client.session['tobacconist'], 'hovercraft') def test_view_with_exception(self): "Request a page that is known to throw an error" self.assertRaises(KeyError, self.client.get, "/test_client/broken_view/") - + #Try the same assertion, a different way try: self.client.get('/test_client/broken_view/') self.fail('Should raise an error') except KeyError: pass - + def test_mail_sending(self): "Test that mail is redirected to a dummy outbox during test setup" - + response = self.client.get('/test_client/mail_sending_view/') self.assertEqual(response.status_code, 200) - + self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].subject, 'Test message') self.assertEqual(mail.outbox[0].body, 'This is a test email') - self.assertEqual(mail.outbox[0].from_email, 'from@example.com') + self.assertEqual(mail.outbox[0].from_email, 'from@example.com') self.assertEqual(mail.outbox[0].to[0], 'first@example.com') self.assertEqual(mail.outbox[0].to[1], 'second@example.com') def test_mass_mail_sending(self): "Test that mass mail is redirected to a dummy outbox during test setup" - + response = self.client.get('/test_client/mass_mail_sending_view/') self.assertEqual(response.status_code, 200) - + self.assertEqual(len(mail.outbox), 2) self.assertEqual(mail.outbox[0].subject, 'First Test message') self.assertEqual(mail.outbox[0].body, 'This is the first test email') - self.assertEqual(mail.outbox[0].from_email, 'from@example.com') + self.assertEqual(mail.outbox[0].from_email, 'from@example.com') self.assertEqual(mail.outbox[0].to[0], 'first@example.com') self.assertEqual(mail.outbox[0].to[1], 'second@example.com') self.assertEqual(mail.outbox[1].subject, 'Second Test message') self.assertEqual(mail.outbox[1].body, 'This is the second test email') - self.assertEqual(mail.outbox[1].from_email, 'from@example.com') + self.assertEqual(mail.outbox[1].from_email, 'from@example.com') self.assertEqual(mail.outbox[1].to[0], 'second@example.com') self.assertEqual(mail.outbox[1].to[1], 'third@example.com') - + diff --git a/tests/modeltests/test_client/urls.py b/tests/modeltests/test_client/urls.py index 3779a0ecd1..09ee7eaf34 100644 --- a/tests/modeltests/test_client/urls.py +++ b/tests/modeltests/test_client/urls.py @@ -13,7 +13,10 @@ urlpatterns = patterns('', (r'^form_view/$', views.form_view), (r'^form_view_with_template/$', views.form_view_with_template), (r'^login_protected_view/$', views.login_protected_view), + (r'^login_protected_method_view/$', views.login_protected_method_view), (r'^login_protected_view_custom_redirect/$', views.login_protected_view_changed_redirect), + (r'^permission_protected_view/$', views.permission_protected_view), + (r'^permission_protected_method_view/$', views.permission_protected_method_view), (r'^session_view/$', views.session_view), (r'^broken_view/$', views.broken_view), (r'^mail_sending_view/$', views.mail_sending_view), diff --git a/tests/modeltests/test_client/views.py b/tests/modeltests/test_client/views.py index c406e17d30..3f4a54c5bd 100644 --- a/tests/modeltests/test_client/views.py +++ b/tests/modeltests/test_client/views.py @@ -3,7 +3,7 @@ from xml.dom.minidom import parseString from django.core.mail import EmailMessage, SMTPConnection from django.template import Context, Template from django.http import HttpResponse, HttpResponseRedirect, HttpResponseNotFound -from django.contrib.auth.decorators import login_required +from django.contrib.auth.decorators import login_required, permission_required from django.newforms.forms import Form from django.newforms import fields from django.shortcuts import render_to_response @@ -130,6 +130,38 @@ def login_protected_view_changed_redirect(request): return HttpResponse(t.render(c)) login_protected_view_changed_redirect = login_required(redirect_field_name="redirect_to")(login_protected_view_changed_redirect) +def permission_protected_view(request): + "A simple view that is permission protected." + t = Template('This is a permission protected test. ' + 'Username is {{ user.username }}. ' + 'Permissions are {{ user.get_all_permissions }}.' , + name='Permissions Template') + c = Context({'user': request.user}) + return HttpResponse(t.render(c)) +permission_protected_view = permission_required('modeltests.test_perm')(permission_protected_view) + +class _ViewManager(object): + def login_protected_view(self, request): + t = Template('This is a login protected test using a method. ' + 'Username is {{ user.username }}.', + name='Login Method Template') + c = Context({'user': request.user}) + return HttpResponse(t.render(c)) + login_protected_view = login_required(login_protected_view) + + def permission_protected_view(self, request): + t = Template('This is a permission protected test using a method. ' + 'Username is {{ user.username }}. ' + 'Permissions are {{ user.get_all_permissions }}.' , + name='Permissions Template') + c = Context({'user': request.user}) + return HttpResponse(t.render(c)) + permission_protected_view = permission_required('modeltests.test_perm')(permission_protected_view) + +_view_manager = _ViewManager() +login_protected_method_view = _view_manager.login_protected_view +permission_protected_method_view = _view_manager.permission_protected_view + def session_view(request): "A view that modifies the session" request.session['tobacconist'] = 'hovercraft' diff --git a/tests/regressiontests/test_client_regress/models.py b/tests/regressiontests/test_client_regress/models.py index 60fd909f43..b5d9ae63b9 100644 --- a/tests/regressiontests/test_client_regress/models.py +++ b/tests/regressiontests/test_client_regress/models.py @@ -31,12 +31,12 @@ class AssertContainsTests(TestCase): self.assertContains(response, 'once', 2) except AssertionError, e: self.assertEquals(str(e), "Found 1 instances of 'once' in response (expected 2)") - + try: self.assertContains(response, 'twice', 1) except AssertionError, e: self.assertEquals(str(e), "Found 2 instances of 'twice' in response (expected 1)") - + try: self.assertContains(response, 'thrice') except AssertionError, e: @@ -46,37 +46,37 @@ class AssertContainsTests(TestCase): self.assertContains(response, 'thrice', 3) except AssertionError, e: self.assertEquals(str(e), "Found 0 instances of 'thrice' in response (expected 3)") - + class AssertTemplateUsedTests(TestCase): fixtures = ['testdata.json'] - + def test_no_context(self): "Template usage assertions work then templates aren't in use" response = self.client.get('/test_client_regress/no_template_view/') # Check that the no template case doesn't mess with the template assertions self.assertTemplateNotUsed(response, 'GET Template') - + try: self.assertTemplateUsed(response, 'GET Template') except AssertionError, e: self.assertEquals(str(e), "No templates used to render the response") - def test_single_context(self): + def test_single_context(self): "Template assertions work when there is a single context" response = self.client.get('/test_client/post_view/', {}) - # + # try: self.assertTemplateNotUsed(response, 'Empty GET Template') except AssertionError, e: self.assertEquals(str(e), "Template 'Empty GET Template' was used unexpectedly in rendering the response") - + try: - self.assertTemplateUsed(response, 'Empty POST Template') + self.assertTemplateUsed(response, 'Empty POST Template') except AssertionError, e: self.assertEquals(str(e), "Template 'Empty POST Template' was not a template used to render the response. Actual template(s) used: Empty GET Template") - + def test_multiple_context(self): "Template assertions work when there are multiple contexts" post_data = { @@ -99,37 +99,37 @@ class AssertTemplateUsedTests(TestCase): self.assertEquals(str(e), "Template 'base.html' was used unexpectedly in rendering the response") try: - self.assertTemplateUsed(response, "Valid POST Template") + self.assertTemplateUsed(response, "Valid POST Template") except AssertionError, e: self.assertEquals(str(e), "Template 'Valid POST Template' was not a template used to render the response. Actual template(s) used: form_view.html, base.html") class AssertRedirectsTests(TestCase): def test_redirect_page(self): - "An assertion is raised if the original page couldn't be retrieved as expected" + "An assertion is raised if the original page couldn't be retrieved as expected" # This page will redirect with code 301, not 302 - response = self.client.get('/test_client/permanent_redirect_view/') + response = self.client.get('/test_client/permanent_redirect_view/') try: self.assertRedirects(response, '/test_client/get_view/') except AssertionError, e: self.assertEquals(str(e), "Response didn't redirect as expected: Response code was 301 (expected 302)") - + def test_lost_query(self): "An assertion is raised if the redirect location doesn't preserve GET parameters" response = self.client.get('/test_client/redirect_view/', {'var': 'value'}) try: self.assertRedirects(response, '/test_client/get_view/') except AssertionError, e: - self.assertEquals(str(e), "Response redirected to 'http://testserver/test_client/get_view/?var=value', expected '/test_client/get_view/'") + self.assertEquals(str(e), "Response redirected to 'http://testserver/test_client/get_view/?var=value', expected 'http://testserver/test_client/get_view/'") def test_incorrect_target(self): "An assertion is raised if the response redirects to another target" - response = self.client.get('/test_client/permanent_redirect_view/') + response = self.client.get('/test_client/permanent_redirect_view/') try: # Should redirect to get_view self.assertRedirects(response, '/test_client/some_view/') except AssertionError, e: self.assertEquals(str(e), "Response didn't redirect as expected: Response code was 301 (expected 302)") - + def test_target_page(self): "An assertion is raised if the response redirect target cannot be retrieved as expected" response = self.client.get('/test_client/double_redirect_view/') @@ -138,7 +138,7 @@ class AssertRedirectsTests(TestCase): self.assertRedirects(response, 'http://testserver/test_client/permanent_redirect_view/') except AssertionError, e: self.assertEquals(str(e), "Couldn't retrieve redirection page '/test_client/permanent_redirect_view/': response code was 301 (expected 200)") - + class AssertFormErrorTests(TestCase): def test_unknown_form(self): "An assertion is raised if the form name is unknown" @@ -157,7 +157,7 @@ class AssertFormErrorTests(TestCase): self.assertFormError(response, 'wrong_form', 'some_field', 'Some error.') except AssertionError, e: self.assertEqual(str(e), "The form 'wrong_form' was not used to render the response") - + def test_unknown_field(self): "An assertion is raised if the field name is unknown" post_data = { @@ -175,7 +175,7 @@ class AssertFormErrorTests(TestCase): self.assertFormError(response, 'form', 'some_field', 'Some error.') except AssertionError, e: self.assertEqual(str(e), "The form 'form' in context 0 does not contain the field 'some_field'") - + def test_noerror_field(self): "An assertion is raised if the field doesn't have any errors" post_data = { @@ -193,7 +193,7 @@ class AssertFormErrorTests(TestCase): self.assertFormError(response, 'form', 'value', 'Some error.') except AssertionError, e: self.assertEqual(str(e), "The field 'value' on form 'form' in context 0 contains no errors") - + def test_unknown_error(self): "An assertion is raised if the field doesn't contain the provided error" post_data = { @@ -211,7 +211,7 @@ class AssertFormErrorTests(TestCase): self.assertFormError(response, 'form', 'email', 'Some error.') except AssertionError, e: self.assertEqual(str(e), "The field 'email' on form 'form' in context 0 does not contain the error 'Some error.' (actual errors: [u'Enter a valid e-mail address.'])") - + def test_unknown_nonfield_error(self): """ Checks that an assertion is raised if the form's non field errors @@ -231,7 +231,7 @@ class AssertFormErrorTests(TestCase): try: self.assertFormError(response, 'form', None, 'Some error.') except AssertionError, e: - self.assertEqual(str(e), "The form 'form' in context 0 does not contain the non-field error 'Some error.' (actual errors: )") + self.assertEqual(str(e), "The form 'form' in context 0 does not contain the non-field error 'Some error.' (actual errors: )") class FileUploadTests(TestCase): def test_simple_upload(self): @@ -256,8 +256,8 @@ class LoginTests(TestCase): # Get a redirection page with the second client. response = c.get("/test_client_regress/login_protected_redirect_view/") - - # At this points, the self.client isn't logged in. - # Check that assertRedirects uses the original client, not the + + # At this points, the self.client isn't logged in. + # Check that assertRedirects uses the original client, not the # default client. self.assertRedirects(response, "http://testserver/test_client_regress/get_view/")