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/")