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 8f10d00c4e..fdba04abd2 100644
Binary files a/django/conf/locale/ca/LC_MESSAGES/django.mo and b/django/conf/locale/ca/LC_MESSAGES/django.mo differ
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 49ea931fef..9f4e124527 100644
Binary files a/django/conf/locale/he/LC_MESSAGES/django.mo and b/django/conf/locale/he/LC_MESSAGES/django.mo differ
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 9d35676a65..bb0deda35c 100644
Binary files a/django/conf/locale/sv/LC_MESSAGES/django.mo and b/django/conf/locale/sv/LC_MESSAGES/django.mo differ
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 5daac63424..f84e25d5fd 100644
Binary files a/django/conf/locale/sv/LC_MESSAGES/djangojs.mo and b/django/conf/locale/sv/LC_MESSAGES/djangojs.mo differ
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 891e4bf967..9c31d51136 100644
Binary files a/django/conf/locale/zh_TW/LC_MESSAGES/django.mo and b/django/conf/locale/zh_TW/LC_MESSAGES/django.mo differ
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/")