From 7822a0639fd029e98e0d6a9d4f2c182f719f8d81 Mon Sep 17 00:00:00 2001 From: Joseph Kocherhans Date: Sat, 29 Mar 2008 07:40:20 +0000 Subject: [PATCH] newforms-admin: Merged from trunk up to [7377]. git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@7378 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/conf/global_settings.py | 4 +- django/conf/locale/ca/LC_MESSAGES/django.mo | Bin 66924 -> 67065 bytes django/conf/locale/ca/LC_MESSAGES/django.po | 1156 ++++++++++------- django/conf/locale/ca/LC_MESSAGES/djangojs.mo | Bin 1681 -> 1684 bytes django/conf/locale/ca/LC_MESSAGES/djangojs.po | 16 +- .../contrib/admin/templatetags/admin_list.py | 12 +- django/contrib/admin/views/main.py | 8 +- django/core/management/sql.py | 8 +- django/core/paginator.py | 2 +- django/db/backends/ado_mssql/__init__.py | 0 django/db/backends/ado_mssql/base.py | 112 -- django/db/backends/ado_mssql/client.py | 2 - django/db/backends/ado_mssql/creation.py | 25 - django/db/backends/ado_mssql/introspection.py | 13 - django/db/backends/mysql/base.py | 3 +- django/db/models/fields/related.py | 4 +- django/views/generic/list_detail.py | 4 +- django/views/i18n.py | 13 +- docs/Makefile | 68 + docs/conf.py | 132 ++ docs/db-api.txt | 3 - docs/i18n.txt | 55 +- docs/index.txt | 128 ++ docs/install.txt | 8 +- docs/modelforms.txt | 2 +- docs/request_response.txt | 27 +- docs/settings.txt | 2 +- docs/syndication_feeds.txt | 2 +- docs/testing.txt | 2 +- docs/tutorial04.txt | 2 +- docs/url_dispatch.txt | 2 +- tests/regressiontests/forms/fields.py | 20 +- tests/regressiontests/model_regress/models.py | 17 + 33 files changed, 1129 insertions(+), 723 deletions(-) delete mode 100644 django/db/backends/ado_mssql/__init__.py delete mode 100644 django/db/backends/ado_mssql/base.py delete mode 100644 django/db/backends/ado_mssql/client.py delete mode 100644 django/db/backends/ado_mssql/creation.py delete mode 100644 django/db/backends/ado_mssql/introspection.py create mode 100644 docs/Makefile create mode 100644 docs/conf.py create mode 100644 docs/index.txt diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index 3917d40943..84b3f5796e 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -114,7 +114,7 @@ SERVER_EMAIL = 'root@localhost' SEND_BROKEN_LINK_EMAILS = False # Database connection info. -DATABASE_ENGINE = '' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'. +DATABASE_ENGINE = '' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. DATABASE_NAME = '' # Or path to database file if using sqlite3. DATABASE_USER = '' # Not used with sqlite3. DATABASE_PASSWORD = '' # Not used with sqlite3. @@ -287,7 +287,7 @@ SESSION_COOKIE_PATH = '/' # The path of the sessio SESSION_SAVE_EVERY_REQUEST = False # Whether to save the session data on every request. SESSION_EXPIRE_AT_BROWSER_CLOSE = False # Whether sessions expire when a user closes his browser. SESSION_ENGINE = 'django.contrib.sessions.backends.db' # The module to store session data -SESSION_FILE_PATH = None # Directory to store session files if using the file session module. If set to None the backend will use a sensible default. +SESSION_FILE_PATH = None # Directory to store session files if using the file session module. If None, the backend will use a sensible default. ######### # CACHE # diff --git a/django/conf/locale/ca/LC_MESSAGES/django.mo b/django/conf/locale/ca/LC_MESSAGES/django.mo index 436f3609ce9a29340cd042d74af6296e38c9e5e3..7be507d151532ac9c6f945466e6816764b3daa1e 100644 GIT binary patch delta 22947 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\n" -"Language-Team: \n" +"POT-Creation-Date: 2007-02-15 01:00+0200\n" +"PO-Revision-Date: 2008-03-29 01:37+0100\n" +"Last-Translator: Django Catalan Group \n" +"Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -24,7 +24,7 @@ msgstr "Bengalí" #: conf/global_settings.py:41 msgid "Bulgarian" -msgstr "Bulgar" +msgstr "Búlgar" #: conf/global_settings.py:42 msgid "Catalan" @@ -63,134 +63,143 @@ msgid "Argentinean Spanish" msgstr "Castellà Argentí" #: conf/global_settings.py:51 +#, fuzzy +msgid "Basque" +msgstr "Euskadi" + +#: conf/global_settings.py:52 msgid "Persian" msgstr "Persa" -#: conf/global_settings.py:52 +#: conf/global_settings.py:53 msgid "Finnish" msgstr "Finlandès" -#: conf/global_settings.py:53 +#: conf/global_settings.py:54 msgid "French" msgstr "Francès" -#: conf/global_settings.py:54 -msgid "Gaeilge" -msgstr "Gaeilge" - #: conf/global_settings.py:55 -msgid "Galician" -msgstr "Galleg" +msgid "Irish" +msgstr "Irlandès" #: conf/global_settings.py:56 +msgid "Galician" +msgstr "Gallec" + +#: conf/global_settings.py:57 msgid "Hungarian" msgstr "Húngar" -#: conf/global_settings.py:57 +#: conf/global_settings.py:58 msgid "Hebrew" msgstr "Hebreu" -#: conf/global_settings.py:58 +#: conf/global_settings.py:59 msgid "Croatian" msgstr "Croat" -#: conf/global_settings.py:59 +#: conf/global_settings.py:60 msgid "Icelandic" msgstr "Islandès" -#: conf/global_settings.py:60 +#: conf/global_settings.py:61 msgid "Italian" msgstr "Italià" -#: conf/global_settings.py:61 +#: conf/global_settings.py:62 msgid "Japanese" msgstr "Japonès" -#: conf/global_settings.py:62 +#: conf/global_settings.py:63 +msgid "Georgian" +msgstr "Georgià" + +#: conf/global_settings.py:64 msgid "Korean" msgstr "Coreà" -#: conf/global_settings.py:63 +#: conf/global_settings.py:65 msgid "Khmer" msgstr "Khmer" -#: conf/global_settings.py:64 +#: conf/global_settings.py:66 msgid "Kannada" msgstr "Canès" -#: conf/global_settings.py:65 +#: conf/global_settings.py:67 msgid "Latvian" msgstr "Letó" -#: conf/global_settings.py:66 +#: conf/global_settings.py:68 msgid "Macedonian" msgstr "Macedoni" -#: conf/global_settings.py:67 +#: conf/global_settings.py:69 msgid "Dutch" msgstr "Holandès" -#: conf/global_settings.py:68 +#: conf/global_settings.py:70 msgid "Norwegian" msgstr "Norueg" -#: conf/global_settings.py:69 +#: conf/global_settings.py:71 msgid "Polish" msgstr "Polac" -#: conf/global_settings.py:70 +#: conf/global_settings.py:72 msgid "Portugese" msgstr "Portuguès" -#: conf/global_settings.py:71 +#: conf/global_settings.py:73 msgid "Brazilian" msgstr "Brasileny" -#: conf/global_settings.py:72 +#: conf/global_settings.py:74 msgid "Romanian" msgstr "Rumanès" -#: conf/global_settings.py:73 +#: conf/global_settings.py:75 msgid "Russian" msgstr "Rús" -#: conf/global_settings.py:74 +#: conf/global_settings.py:76 msgid "Slovak" msgstr "Eslovac" -#: conf/global_settings.py:75 +#: conf/global_settings.py:77 msgid "Slovenian" msgstr "Esloveni" -#: conf/global_settings.py:76 +#: conf/global_settings.py:78 msgid "Serbian" msgstr "Serbi" -#: conf/global_settings.py:77 +#: conf/global_settings.py:79 msgid "Swedish" msgstr "Suec" -#: conf/global_settings.py:78 +#: conf/global_settings.py:80 msgid "Tamil" msgstr "Tàmil" -#: conf/global_settings.py:79 +#: conf/global_settings.py:81 msgid "Telugu" msgstr "Telugu" -#: conf/global_settings.py:80 +#: conf/global_settings.py:82 msgid "Turkish" msgstr "Turc" -#: conf/global_settings.py:81 +#: conf/global_settings.py:83 msgid "Ukrainian" msgstr "Ucranià" -#: conf/global_settings.py:82 +#: conf/global_settings.py:84 msgid "Simplified Chinese" msgstr "Xinés simplificat" -#: conf/global_settings.py:83 +#: conf/global_settings.py:85 msgid "Traditional Chinese" msgstr "Xinés tradicional" @@ -203,10 +212,8 @@ msgstr "" "

Per %s:

\n" "
    \n" -#: contrib/admin/filterspecs.py:74 -#: contrib/admin/filterspecs.py:92 -#: contrib/admin/filterspecs.py:147 -#: contrib/admin/filterspecs.py:173 +#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 msgid "All" msgstr "Tots" @@ -230,20 +237,17 @@ msgstr "Aquest mes" msgid "This year" msgstr "Aquest any" -#: contrib/admin/filterspecs.py:147 -#: newforms/widgets.py:231 +#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231 #: oldforms/__init__.py:592 msgid "Yes" msgstr "Si" -#: contrib/admin/filterspecs.py:147 -#: newforms/widgets.py:231 +#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231 #: oldforms/__init__.py:592 msgid "No" msgstr "No" -#: contrib/admin/filterspecs.py:154 -#: newforms/widgets.py:231 +#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231 #: oldforms/__init__.py:592 msgid "Unknown" msgstr "Desconegut" @@ -283,7 +287,7 @@ msgstr "No s'ha pogut trobar la pàgina" #: contrib/admin/templates/admin/404.html:10 msgid "We're sorry, but the requested page could not be found." -msgstr "Ho sentim, però no s'ha pogut trobar la pàgina solicitada" +msgstr "Ho sentim, però no s'ha pogut trobar la pàgina sol·licitada" #: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/base.html:37 @@ -315,8 +319,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 "" +"Ha ocorregut un error. S'ha informat als administradors del lloc per correu " +"electrònic y hauria d'arreglar-se en breu. Gràcies per la vostra paciència." #: contrib/admin/templates/admin/base.html:26 msgid "Welcome," @@ -344,7 +352,7 @@ msgstr "Lloc administratiu de Django" #: contrib/admin/templates/admin/base_site.html:7 msgid "Django administration" -msgstr "Adminisitració de Django" +msgstr "Administració de Django" #: contrib/admin/templates/admin/change_form.html:14 #: contrib/admin/templates/admin/index.html:28 @@ -364,8 +372,8 @@ msgstr "Veure en el lloc" #: contrib/admin/templates/admin/auth/user/change_password.html:23 msgid "Please correct the error below." msgid_plural "Please correct the errors below." -msgstr[0] "Si us plau, corregeixi l'error mostrat abaix." -msgstr[1] "Si us plau, corregeixi els errors mostrats abaix." +msgstr[0] "Si us plau, corregiu l'error mostrat a baix." +msgstr[1] "Si us plau, corregiu els errors mostrats a baix." #: contrib/admin/templates/admin/change_form.html:49 msgid "Ordering" @@ -387,13 +395,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 vostre compte no te permissos 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" @@ -411,7 +429,7 @@ msgstr "Filtre" #: contrib/admin/templates/admin/index.html:17 #, python-format msgid "Models available in the %(name)s application." -msgstr "Models disponibles en la aplicació %(name)s." +msgstr "Models disponibles en l'aplicació %(name)s." #: contrib/admin/templates/admin/index.html:18 #, python-format @@ -424,7 +442,7 @@ msgstr "Modificar" #: contrib/admin/templates/admin/index.html:44 msgid "You don't have permission to edit anything." -msgstr "No té permís per editar res." +msgstr "No teniu permís per editar res." #: contrib/admin/templates/admin/index.html:52 msgid "Recent Actions" @@ -439,8 +457,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 vostra base de dades. " +"Assegureu-vos 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 @@ -454,7 +478,7 @@ msgid "Password:" msgstr "Contrasenya:" #: contrib/admin/templates/admin/login.html:25 -#: contrib/admin/views/decorators.py:25 +#: contrib/admin/views/decorators.py:31 msgid "Log in" msgstr "Iniciar sessió" @@ -475,8 +499,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 té historial de canvis. Probablement no va ser afegit " +"utilitzant aquest lloc administratiu." #: contrib/admin/templates/admin/pagination.html:10 msgid "Show all" @@ -515,8 +543,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 " +"de l'usuari." #: contrib/admin/templates/admin/auth/user/add_form.html:12 msgid "Username" @@ -535,12 +567,12 @@ msgstr "Contrasenya (de nou)" #: contrib/admin/templates/admin/auth/user/add_form.html:24 #: contrib/admin/templates/admin/auth/user/change_password.html:39 msgid "Enter the same password as above, for verification." -msgstr "Introdueixi la mateixa contrasenya que a sobre, per a verificació." +msgstr "Introduïu la mateixa contrasenya de dalt, per fer-ne la verificació." #: contrib/admin/templates/admin/auth/user/change_password.html:27 #, python-format msgid "Enter a new password for the user %(username)s." -msgstr "Introdueixi una contrasenya per l'usuari %(username)s" +msgstr "Introduïu una contrasenya per l'usuari %(username)s" #: contrib/admin/templates/admin_doc/bookmarklets.html:3 msgid "Bookmarklets" @@ -561,28 +593,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 instal·lar '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 +632,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)" @@ -602,7 +646,7 @@ msgstr "Com abans, però obre la pàgina d'administració en una nova finestra." #: contrib/admin/templates/registration/logged_out.html:8 msgid "Thanks for spending some quality time with the Web site today." -msgstr "Gràcies per emprar algun temps de cualitat amb el lloc web avui." +msgstr "Gràcies per destinar el vostre temps en el web durant el dia d'avui." #: contrib/admin/templates/registration/logged_out.html:10 msgid "Log in again" @@ -618,15 +662,20 @@ msgstr "Canvi de clau" #: contrib/admin/templates/registration/password_change_done.html:5 #: contrib/admin/templates/registration/password_change_done.html:9 msgid "Password change successful" -msgstr "Canvi de clau exitò" +msgstr "Canvi de clau exitòs" #: contrib/admin/templates/registration/password_change_done.html:11 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 contrasenya nova dues vegades per verificar que " +"l'ha escrit correctament." #: contrib/admin/templates/registration/password_change_form.html:16 msgid "Old password:" @@ -654,15 +703,21 @@ msgstr "Restablir contrasenya" #: contrib/admin/templates/registration/password_reset_done.html:6 #: contrib/admin/templates/registration/password_reset_done.html:10 msgid "Password reset successful" -msgstr "Contrasenya restaber-ta amb èxit" +msgstr "Restabliment de contrasenya exitòs" #: 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 +747,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 en crearem una de nova que li enviarem per correu." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" @@ -723,14 +782,12 @@ msgstr "Modificar:" msgid "All dates" msgstr "Totes les dates" -#: contrib/admin/views/auth.py:20 -#: contrib/admin/views/main.py:267 +#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267 #, 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:271 +#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271 #: contrib/admin/views/main.py:356 msgid "You may edit it again below." msgstr "Pot editar-lo de nou abaix." @@ -741,49 +798,59 @@ msgstr "Afegir usuari" #: contrib/admin/views/auth.py:58 msgid "Password changed successfully." -msgstr "Canvi de clau exitós" +msgstr "Clau cambiada exitosament" #: contrib/admin/views/auth.py:65 #, python-format msgid "Change password: %s" msgstr "Canviar clau: %s" -#: contrib/admin/views/decorators.py:11 -#: 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:17 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:63 -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 "" +"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:70 -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:76 +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:84 +#: contrib/admin/views/decorators.py:90 msgid "Usernames cannot contain the '@' character." msgstr "Els noms d'usuari no poden contenir el caracter '@'." -#: contrib/admin/views/decorators.py:86 +#: contrib/admin/views/decorators.py:92 #, 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:48 -#: contrib/admin/views/doc.py:50 +#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50 #: contrib/admin/views/doc.py:52 msgid "tag:" msgstr "etiqueta:" -#: contrib/admin/views/doc.py:79 -#: contrib/admin/views/doc.py:81 +#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81 #: contrib/admin/views/doc.py:83 msgid "filter:" msgstr "filtre:" -#: contrib/admin/views/doc.py:137 -#: contrib/admin/views/doc.py:139 +#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139 #: contrib/admin/views/doc.py:141 msgid "view:" msgstr "vista:" @@ -791,7 +858,7 @@ msgstr "vista:" #: contrib/admin/views/doc.py:166 #, python-format msgid "App %r not found" -msgstr "La aplicació %r no s'ha pogut trobar" +msgstr "No s'ha pogut trobar l'aplicació %r" #: contrib/admin/views/doc.py:173 #, python-format @@ -801,12 +868,10 @@ msgstr "El model %(name)r no s'ha trobat en la aplicació %(label)r" #: contrib/admin/views/doc.py:185 #, python-format msgid "the related `%(label)s.%(type)s` object" -msgstr "el objecte relacionat `%(label)s.%(type)s`" +msgstr "l'objecte relacionat `%(label)s.%(type)s`" -#: contrib/admin/views/doc.py:185 -#: contrib/admin/views/doc.py:207 -#: contrib/admin/views/doc.py:221 -#: contrib/admin/views/doc.py:226 +#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207 +#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226 msgid "model:" msgstr "model:" @@ -830,12 +895,9 @@ msgstr "nombre de %s" msgid "Fields on %s objects" msgstr "Camps en objectes %s" -#: contrib/admin/views/doc.py:293 -#: contrib/admin/views/doc.py:304 -#: contrib/admin/views/doc.py:306 -#: contrib/admin/views/doc.py:312 -#: contrib/admin/views/doc.py:313 -#: contrib/admin/views/doc.py:315 +#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304 +#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312 +#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315 msgid "Integer" msgstr "Enter" @@ -843,8 +905,7 @@ msgstr "Enter" msgid "Boolean (Either True or False)" msgstr "Booleà (Verdader o Fals)" -#: contrib/admin/views/doc.py:295 -#: contrib/admin/views/doc.py:314 +#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314 #, python-format msgid "String (up to %(max_length)s)" msgstr "Cadena (de fins a %(max_length)s)" @@ -869,8 +930,7 @@ msgstr "Número decimal" msgid "E-mail address" msgstr "Adreça de correu electrònic" -#: contrib/admin/views/doc.py:301 -#: contrib/admin/views/doc.py:302 +#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302 #: contrib/admin/views/doc.py:305 msgid "File path" msgstr "Ruta del fitxer" @@ -879,8 +939,7 @@ msgstr "Ruta del fitxer" msgid "Floating point number" msgstr "Número amb punt de coma flotant" -#: contrib/admin/views/doc.py:307 -#: contrib/comments/models.py:85 +#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89 msgid "IP address" msgstr "Adreça IP" @@ -904,8 +963,7 @@ msgstr "Texte" msgid "Time" msgstr "Hora" -#: contrib/admin/views/doc.py:318 -#: contrib/flatpages/models.py:7 +#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:7 msgid "URL" msgstr "URL" @@ -915,7 +973,7 @@ msgstr "Estat dels E.U.A. (dos lletres majúscules)" #: contrib/admin/views/doc.py:320 msgid "XML text" -msgstr "Texte XML" +msgstr "Text XML" #: contrib/admin/views/doc.py:346 #, python-format @@ -926,8 +984,7 @@ msgstr "%s no sembla ser un objecte 'urlpattern'" msgid "Site administration" msgstr "Lloc administratiu" -#: contrib/admin/views/main.py:280 -#: contrib/admin/views/main.py:365 +#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365 #, python-format msgid "You may add another %s below." msgstr "Pot afegir un altre %s a baix." @@ -942,10 +999,8 @@ msgstr "Afegir %s" msgid "Added %s." msgstr "Agregat %s." -#: contrib/admin/views/main.py:344 -#: contrib/admin/views/main.py:346 -#: contrib/admin/views/main.py:348 -#: core/validators.py:283 +#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346 +#: contrib/admin/views/main.py:348 core/validators.py:283 #: db/models/manipulators.py:309 msgid "and" msgstr "i" @@ -967,12 +1022,14 @@ msgstr "Cap camp canviat." #: contrib/admin/views/main.py:354 #, python-format msgid "The %(name)s \"%(obj)s\" was changed successfully." -msgstr "S'ha modificat amb èxist el/la %(name)s \"%(obj)s." +msgstr "S'ha modificat exitosament el/la %(name)s \"%(obj)s." #: contrib/admin/views/main.py:362 #, 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 exitosament el/la %(name)s \"%(obj)s\". Pot editar-lo de nou abaix." #: contrib/admin/views/main.py:400 #, python-format @@ -996,7 +1053,7 @@ msgstr "El/la %(name)s \"%(obj)s\".ha estat eliminat amb èxit." #: contrib/admin/views/main.py:527 msgid "Are you sure?" -msgstr "Està segur?" +msgstr "Esteu segurs?" #: contrib/admin/views/main.py:549 #, python-format @@ -1017,8 +1074,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 +1083,24 @@ 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 @@ -1049,10 +1113,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" @@ -1064,8 +1128,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" @@ -1073,8 +1136,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" @@ -1083,8 +1145,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 "" +"Obligatori. 30 o menys caracters. Només caracters alfanumèrics (lletres, " +"dígits i guions baixos)." #: contrib/auth/models.py:132 msgid "first name" @@ -1103,8 +1169,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" @@ -1119,16 +1189,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. Deseleccioni-ho enlloc d'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 permissos sense assignar-los " +"explícitament." #: contrib/auth/models.py:139 msgid "last login" @@ -1139,8 +1217,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" @@ -1156,7 +1238,7 @@ msgstr "usuaris" #: contrib/auth/models.py:154 msgid "Personal info" -msgstr "Informaciò personal" +msgstr "Informació personal" #: contrib/auth/models.py:155 msgid "Permissions" @@ -1178,85 +1260,84 @@ msgstr "missatge" msgid "Logged out" msgstr "Sessió finalitzada" -#: contrib/comments/models.py:67 -#: contrib/comments/models.py:169 +#: contrib/comments/models.py:71 contrib/comments/models.py:176 msgid "object ID" msgstr "ID de l'objecte" -#: contrib/comments/models.py:68 +#: contrib/comments/models.py:72 msgid "headline" msgstr "encapçalament" -#: contrib/comments/models.py:69 -#: contrib/comments/models.py:90 -#: contrib/comments/models.py:170 +#: contrib/comments/models.py:73 contrib/comments/models.py:95 +#: contrib/comments/models.py:177 msgid "comment" msgstr "comentari" -#: contrib/comments/models.py:70 +#: contrib/comments/models.py:74 msgid "rating #1" msgstr "qualificació #1" -#: contrib/comments/models.py:71 +#: contrib/comments/models.py:75 msgid "rating #2" msgstr "qualificació #2" -#: contrib/comments/models.py:72 +#: contrib/comments/models.py:76 msgid "rating #3" msgstr "qualificació #3" -#: contrib/comments/models.py:73 +#: contrib/comments/models.py:77 msgid "rating #4" msgstr "qualificació #4" -#: contrib/comments/models.py:74 +#: contrib/comments/models.py:78 msgid "rating #5" msgstr "qualificació #5" -#: contrib/comments/models.py:75 +#: contrib/comments/models.py:79 msgid "rating #6" msgstr "qualificació #6" -#: contrib/comments/models.py:76 +#: contrib/comments/models.py:80 msgid "rating #7" msgstr "qualificació #7" -#: contrib/comments/models.py:77 +#: contrib/comments/models.py:81 msgid "rating #8" msgstr "qualificació #8" -#: contrib/comments/models.py:82 +#: contrib/comments/models.py:86 msgid "is valid rating" msgstr "és qualificació vàlida" -#: contrib/comments/models.py:83 -#: contrib/comments/models.py:172 +#: contrib/comments/models.py:87 contrib/comments/models.py:179 msgid "date/time submitted" msgstr "data/hora d'enviament" -#: contrib/comments/models.py:84 -#: contrib/comments/models.py:173 +#: contrib/comments/models.py:88 contrib/comments/models.py:180 msgid "is public" msgstr "és públic" -#: contrib/comments/models.py:86 +#: contrib/comments/models.py:90 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\" " +#: contrib/comments/models.py:90 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"Marqui aquesta caixa si el comentari no és apropiat. En lloc seu es mostrarà " +"\"Aquest comentari ha estat eliminat\" " -#: contrib/comments/models.py:91 +#: contrib/comments/models.py:96 msgid "comments" msgstr "comentaris" -#: contrib/comments/models.py:134 -#: contrib/comments/models.py:213 +#: contrib/comments/models.py:140 contrib/comments/models.py:222 msgid "Content object" msgstr "Objecte Contingut" -#: contrib/comments/models.py:162 +#: contrib/comments/models.py:168 #, python-format msgid "" "Posted by %(user)s at %(date)s\n" @@ -1271,48 +1352,48 @@ msgstr "" "\n" "http://%(domain)s%(url)s" -#: contrib/comments/models.py:171 +#: contrib/comments/models.py:178 msgid "person's name" msgstr "nom de la persona" -#: contrib/comments/models.py:174 +#: contrib/comments/models.py:181 msgid "ip address" msgstr "adreça ip" -#: contrib/comments/models.py:176 +#: contrib/comments/models.py:183 msgid "approved by staff" msgstr "aprovat per el \"staff\"" -#: contrib/comments/models.py:179 +#: contrib/comments/models.py:187 msgid "free comment" msgstr "comentari lliure" -#: contrib/comments/models.py:180 +#: contrib/comments/models.py:188 msgid "free comments" msgstr "comentaris lliures" -#: contrib/comments/models.py:239 +#: contrib/comments/models.py:250 msgid "score" msgstr "puntuació" -#: contrib/comments/models.py:240 +#: contrib/comments/models.py:251 msgid "score date" msgstr "data de la puntuació" -#: contrib/comments/models.py:243 +#: contrib/comments/models.py:255 msgid "karma score" msgstr "puntuació de karma" -#: contrib/comments/models.py:244 +#: contrib/comments/models.py:256 msgid "karma scores" msgstr "punts de karma" -#: contrib/comments/models.py:248 +#: contrib/comments/models.py:260 #, python-format msgid "%(score)d rating by %(user)s" msgstr "%(score)d punt/s per %(user)s" -#: contrib/comments/models.py:264 +#: contrib/comments/models.py:277 #, python-format msgid "" "This comment was flagged by %(user)s:\n" @@ -1323,36 +1404,36 @@ msgstr "" "\n" "%(text)s" -#: contrib/comments/models.py:271 +#: contrib/comments/models.py:285 msgid "flag date" msgstr "data de la marca" -#: contrib/comments/models.py:274 +#: contrib/comments/models.py:289 msgid "user flag" msgstr "marca d'usuari" -#: contrib/comments/models.py:275 +#: contrib/comments/models.py:290 msgid "user flags" msgstr "marques d'usuari" -#: contrib/comments/models.py:279 +#: contrib/comments/models.py:294 #, python-format msgid "Flag by %r" msgstr "Marca de %r" -#: contrib/comments/models.py:284 +#: contrib/comments/models.py:300 msgid "deletion date" msgstr "data d'eliminació" -#: contrib/comments/models.py:286 +#: contrib/comments/models.py:303 msgid "moderator deletion" msgstr "eliminació del moderador" -#: contrib/comments/models.py:287 +#: contrib/comments/models.py:304 msgid "moderator deletions" msgstr "eliminacions del moderador" -#: contrib/comments/models.py:291 +#: contrib/comments/models.py:308 #, python-format msgid "Moderator deletion by %r" msgstr "eliminació del moderador per %r" @@ -1368,7 +1449,7 @@ msgstr "Qualificacions" #: contrib/comments/templates/comments/form.html:12 #: contrib/comments/templates/comments/form.html:23 msgid "Required" -msgstr "Requerit" +msgstr "Obligatori" #: contrib/comments/templates/comments/form.html:12 #: contrib/comments/templates/comments/form.html:23 @@ -1394,25 +1475,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 va ser enviat per un usuari que ha enviat 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 va ser enviat per un usuari que ha enviat menys de %" +"(count)s comentaris:\n" "\n" "%(text)s" @@ -1430,27 +1516,33 @@ msgstr "" #: contrib/comments/views/comments.py:190 #: contrib/comments/views/comments.py:283 msgid "Only POSTs are allowed" -msgstr "Només s'admed POST" +msgstr "Només s'admet POST" #: contrib/comments/views/comments.py:194 #: contrib/comments/views/comments.py:287 msgid "One or more of the required fields wasn't submitted" -msgstr "Un o més dels caps requerits no ha estat sotmès" +msgstr "Un o més dels caps obligatoris 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" @@ -1464,25 +1556,28 @@ msgstr "ID del comentari invàlid" msgid "No voting for yourself" msgstr "No pots votar-te a tu mateix" -#: contrib/contenttypes/models.py:37 +#: contrib/contenttypes/models.py:67 msgid "python model class name" msgstr "nom de la classe del model en python" -#: contrib/contenttypes/models.py:40 +#: contrib/contenttypes/models.py:71 msgid "content type" msgstr "tipus de contingut" -#: contrib/contenttypes/models.py:41 +#: contrib/contenttypes/models.py:72 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" -msgstr "tìtol" +msgstr "títol" #: contrib/flatpages/models.py:10 msgid "content" @@ -1497,12 +1592,16 @@ 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 es proporciona, el sistema " +"utilitzarà 'flatpages/default.htmlt'." #: contrib/flatpages/models.py:14 msgid "registration required" -msgstr "s'ha de estar registrat" +msgstr "cal estar registrat" #: contrib/flatpages/models.py:14 msgid "If this is checked, only logged-in users will be able to view the page." @@ -1516,112 +1615,111 @@ msgstr "pàgina estàtica" msgid "flat pages" msgstr "pàgines estàtiques" -#: contrib/humanize/templatetags/humanize.py:20 +#: contrib/humanize/templatetags/humanize.py:19 msgid "th" msgstr "rt" -#: contrib/humanize/templatetags/humanize.py:20 +#: contrib/humanize/templatetags/humanize.py:19 msgid "st" msgstr "r" -#: contrib/humanize/templatetags/humanize.py:20 +#: contrib/humanize/templatetags/humanize.py:19 msgid "nd" msgstr "n" -#: contrib/humanize/templatetags/humanize.py:20 +#: contrib/humanize/templatetags/humanize.py:19 msgid "rd" msgstr "r" -#: contrib/humanize/templatetags/humanize.py:52 +#: contrib/humanize/templatetags/humanize.py:51 #, python-format msgid "%(value).1f million" msgid_plural "%(value).1f million" msgstr[0] "%(value).1f milió" msgstr[1] "%(value).1f milions" -#: contrib/humanize/templatetags/humanize.py:55 +#: contrib/humanize/templatetags/humanize.py:54 #, python-format msgid "%(value).1f billion" msgid_plural "%(value).1f billion" msgstr[0] "%(value).1f bilió" msgstr[1] "%(value).1f bilions" -#: contrib/humanize/templatetags/humanize.py:58 +#: contrib/humanize/templatetags/humanize.py:57 #, python-format msgid "%(value).1f trillion" msgid_plural "%(value).1f trillion" msgstr[0] "%(value).1f trilió" msgstr[1] "%(value).1f trilions" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "one" msgstr "un" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "two" msgstr "dos" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "three" msgstr "tres" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "four" -msgstr "cuatre" +msgstr "quatre" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "five" msgstr "cinc" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "six" msgstr "sis" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "seven" msgstr "set" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "eight" msgstr "vuit" -#: contrib/humanize/templatetags/humanize.py:74 +#: contrib/humanize/templatetags/humanize.py:73 msgid "nine" msgstr "nou" -#: contrib/humanize/templatetags/humanize.py:94 +#: contrib/humanize/templatetags/humanize.py:93 msgid "today" msgstr "avui" -#: contrib/humanize/templatetags/humanize.py:96 +#: contrib/humanize/templatetags/humanize.py:95 msgid "tomorrow" msgstr "demà" -#: contrib/humanize/templatetags/humanize.py:98 +#: contrib/humanize/templatetags/humanize.py:97 msgid "yesterday" msgstr "ahir" -#: contrib/localflavor/ar/forms.py:28 +#: contrib/localflavor/ar/forms.py:27 msgid "Enter a postal code in the format NNNN or ANNNNAAA." msgstr "Introdueixi un codi postal en el format NNNN o ANNNNAAA." -#: contrib/localflavor/ar/forms.py:50 -#: contrib/localflavor/br/forms.py:96 -#: contrib/localflavor/br/forms.py:135 -#: contrib/localflavor/pe/forms.py:23 +#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96 +#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23 #: contrib/localflavor/pe/forms.py:51 msgid "This field requires only numbers." -msgstr "Aquest camps requereix només números." +msgstr "Aquest camp precisa només números." -#: contrib/localflavor/ar/forms.py:51 +#: contrib/localflavor/ar/forms.py:50 msgid "This field requires 7 or 8 digits." -msgstr "Aquest camp requereix 7 o 8 dígits." +msgstr "Aquest camp precisa 7 o 8 dígits." + +#: contrib/localflavor/ar/forms.py:79 +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." #: contrib/localflavor/ar/forms.py:80 -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." - -#: contrib/localflavor/ar/forms.py:81 msgid "Invalid CUIT." msgstr "Invàlid CUIT." @@ -1635,11 +1733,15 @@ msgstr "Introdueixi un codi zip en el format XXXXX-XXX." #: contrib/localflavor/br/forms.py:30 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." +msgstr "El número de telèfon ha de estar en el format XX-XXXX-XXXX." #: contrib/localflavor/br/forms.py:58 -msgid "Select a valid brazilian state. That state is not one of the available states." -msgstr "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:94 msgid "Invalid CPF number." @@ -1647,7 +1749,7 @@ msgstr "Número CPF invàlid." #: contrib/localflavor/br/forms.py:95 msgid "This field requires at most 11 digits or 14 characters." -msgstr "Aquest camp requereix com a màxim 11 dígits o 14 caracters." +msgstr "Aquest camp precisa com a màxim 11 dígits o 14 caracters." #: contrib/localflavor/br/forms.py:134 msgid "Invalid CNPJ number." @@ -1655,15 +1757,17 @@ msgstr "Número CNPJ invàlid." #: contrib/localflavor/br/forms.py:136 msgid "This field requires at least 14 digits" -msgstr "Aquest camp requereix almenys 14 dígits." +msgstr "Aquest camp precisa almenys 14 dígits." #: contrib/localflavor/ca/forms.py:17 msgid "Enter a postal code in the format XXX XXX." msgstr "Introdueixi un codi postal en el format XXX XXX." #: contrib/localflavor/ca/forms.py:88 -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 Canadà en el format XXX-XXX-XXXX." +msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." +msgstr "" +"Introdueixi un número vàlid de la Assegurança Social de Canadà en el format " +"XXX-XXX-XXX." #: contrib/localflavor/ch/ch_states.py:5 msgid "Aargau" @@ -1671,31 +1775,31 @@ msgstr "Argau" #: contrib/localflavor/ch/ch_states.py:6 msgid "Appenzell Innerrhoden" -msgstr "Appenzell Innerrhoden" +msgstr "Appenzell Inner-Rhoden" #: contrib/localflavor/ch/ch_states.py:7 msgid "Appenzell Ausserrhoden" -msgstr "Appenzell Ausserrhoden" +msgstr "Appenzell Ausser-Rhoden" #: contrib/localflavor/ch/ch_states.py:8 msgid "Basel-Stadt" -msgstr "Basel-Stadt" +msgstr "Basel-Ciutat" #: contrib/localflavor/ch/ch_states.py:9 msgid "Basel-Land" -msgstr "Basel-Land" +msgstr "Basel-Camp" #: contrib/localflavor/ch/ch_states.py:10 msgid "Berne" -msgstr "Berne" +msgstr "Berna" #: contrib/localflavor/ch/ch_states.py:11 msgid "Fribourg" -msgstr "Fribourg" +msgstr "Friburg" #: contrib/localflavor/ch/ch_states.py:12 msgid "Geneva" -msgstr "Geneva" +msgstr "Ginebra" #: contrib/localflavor/ch/ch_states.py:13 msgid "Glarus" @@ -1711,7 +1815,7 @@ msgstr "Jura" #: contrib/localflavor/ch/ch_states.py:16 msgid "Lucerne" -msgstr "Lucerne" +msgstr "Lucerna" #: contrib/localflavor/ch/ch_states.py:17 msgid "Neuchatel" @@ -1767,16 +1871,19 @@ msgstr "Zug" #: contrib/localflavor/ch/ch_states.py:30 msgid "Zurich" -msgstr "Zurich" +msgstr "Zuric" -#: contrib/localflavor/ch/forms.py:16 -#: contrib/localflavor/no/forms.py:12 +#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12 msgid "Enter a zip code in the format XXXX." msgstr "Introdueixi un codi zip en el format XXXX." #: contrib/localflavor/ch/forms.py:64 -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 d'identificació o de passaport Suïssos en els formats " +"1234567890 o X1234567<0." #: contrib/localflavor/cl/forms.py:29 msgid "Enter a valid Chilean RUT." @@ -1792,15 +1899,15 @@ msgstr "El RUT Xilè no és vàlid." #: contrib/localflavor/de/de_states.py:5 msgid "Baden-Wuerttemberg" -msgstr "Baden-Wuerttemberg" +msgstr "Baden-Württemberg" #: contrib/localflavor/de/de_states.py:6 msgid "Bavaria" -msgstr "Bavaria" +msgstr "Baviera" #: contrib/localflavor/de/de_states.py:7 msgid "Berlin" -msgstr "Berlin" +msgstr "Berlín" #: contrib/localflavor/de/de_states.py:8 msgid "Brandenburg" @@ -1820,19 +1927,19 @@ msgstr "Hessen" #: contrib/localflavor/de/de_states.py:12 msgid "Mecklenburg-Western Pomerania" -msgstr "Mecklenburg-Western Pomerania" +msgstr "Mecklenburg-Pomerània Occidental" #: contrib/localflavor/de/de_states.py:13 msgid "Lower Saxony" -msgstr "Lower Saxony" +msgstr "Baixa Saxònia" #: contrib/localflavor/de/de_states.py:14 msgid "North Rhine-Westphalia" -msgstr "North Rhine-Westphalia" +msgstr "Renània del Nord-Westfàlia" #: contrib/localflavor/de/de_states.py:15 msgid "Rhineland-Palatinate" -msgstr "Rhineland-Palatinate" +msgstr "Renània-Palatinat" #: contrib/localflavor/de/de_states.py:16 msgid "Saarland" @@ -1840,29 +1947,32 @@ msgstr "Saarland" #: contrib/localflavor/de/de_states.py:17 msgid "Saxony" -msgstr "Saxony" +msgstr "Saxònia" #: contrib/localflavor/de/de_states.py:18 msgid "Saxony-Anhalt" -msgstr "Saxony-Anhalt" +msgstr "Saxònia-Anhalt" #: contrib/localflavor/de/de_states.py:19 msgid "Schleswig-Holstein" -msgstr "Schleswig-Holstein" +msgstr "Slesvig-Holstein" #: contrib/localflavor/de/de_states.py:20 msgid "Thuringia" -msgstr "Thuringia" +msgstr "Turíngia" -#: contrib/localflavor/de/forms.py:14 -#: contrib/localflavor/fi/forms.py:12 +#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12 #: contrib/localflavor/fr/forms.py:15 msgid "Enter a zip code in the format XXXXX." msgstr "Introdueixi un codi zip en el format XXXXX." #: contrib/localflavor/de/forms.py:41 -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" @@ -2136,8 +2246,12 @@ 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:66 msgid "Please enter a valid NIF, NIE, or CIF." @@ -2160,8 +2274,11 @@ msgid "Invalid checksum for CIF." msgstr "Validació invàlida del CIF." #: contrib/localflavor/es/forms.py:142 -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:143 msgid "Invalid checksum for bank account number." @@ -2176,8 +2293,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:18 msgid "The Icelandic identification number is not valid." @@ -2195,7 +2314,7 @@ msgstr "Introdueixi un número valid de la Seguretat Social." msgid "Enter a valid VAT number." msgstr "Introdueixi un número de IVA (VAT) vàlid." -#: contrib/localflavor/jp/forms.py:19 +#: contrib/localflavor/jp/forms.py:17 msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." msgstr "Introdueixi un codi postal en el format XXXXXXX o XX-XXXX." @@ -2393,11 +2512,11 @@ msgstr "Aguascalientes" #: contrib/localflavor/mx/mx_states.py:13 msgid "Baja California" -msgstr "Baja California" +msgstr "Baixa California" #: contrib/localflavor/mx/mx_states.py:14 msgid "Baja California Sur" -msgstr "Baja California Sur" +msgstr "Baixa California Sud" #: contrib/localflavor/mx/mx_states.py:15 msgid "Campeche" @@ -2421,7 +2540,7 @@ msgstr "Colima" #: contrib/localflavor/mx/mx_states.py:20 msgid "Distrito Federal" -msgstr "Distrito Federal" +msgstr "Districte Federal" #: contrib/localflavor/mx/mx_states.py:21 msgid "Durango" @@ -2445,7 +2564,7 @@ msgstr "Jalisco" #: contrib/localflavor/mx/mx_states.py:26 msgid "Estado de México" -msgstr "Estado de México" +msgstr "Estat de Mèxic" #: contrib/localflavor/mx/mx_states.py:27 msgid "Michoacán" @@ -2517,15 +2636,15 @@ msgstr "Zacatecas" #: contrib/localflavor/nl/forms.py:21 msgid "Enter a valid postal code" -msgstr "Introdueixi un codi postal vàlid." +msgstr "Introduïu un codi postal vàlid." #: contrib/localflavor/nl/forms.py:52 msgid "Enter a valid phone number" -msgstr "Introdueixi un número de telèfon vàlid." +msgstr "Introduïu un número de telèfon vàlid." #: contrib/localflavor/nl/forms.py:78 msgid "Enter a valid SoFi number" -msgstr "Introdueixi un número SoFi vàlid." +msgstr "Introduïu un número SoFi vàlid." #: contrib/localflavor/nl/nl_provinces.py:4 msgid "Drente" @@ -2577,15 +2696,15 @@ msgstr "Zuid-Holland" #: contrib/localflavor/no/forms.py:33 msgid "Enter a valid Norwegian social security number." -msgstr "Introdueixi un número de la seguretat social Noruega vàlid." +msgstr "Introduïu un número de la seguretat social Noruega vàlid." #: contrib/localflavor/pe/forms.py:24 msgid "This field requires 8 digits." -msgstr "Aquest camp requereix 8 dígits." +msgstr "Aquest camp precisa 8 dígits." #: contrib/localflavor/pe/forms.py:52 msgid "This field requires 11 digits." -msgstr "Aquest camp requereix 11 dígits." +msgstr "Aquest camp precisa 11 dígits." #: contrib/localflavor/pl/forms.py:39 msgid "National Identification Number consists of 11 digits." @@ -2596,7 +2715,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:73 @@ -2605,7 +2725,8 @@ msgstr "Validació invàlida del número tributari (NIP)." #: contrib/localflavor/pl/forms.py:112 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)." @@ -2613,7 +2734,7 @@ msgstr "Validació invàlida del número nacional de registre de negocis." #: contrib/localflavor/pl/forms.py:156 msgid "Enter a postal code in the format XX-XXX." -msgstr "Introdueixi un codi postal en el format XX-XXX." +msgstr "Introduïu un codi postal en el format XX-XXX." #: contrib/localflavor/pl/pl_voivodeships.py:8 msgid "Lower Silesia" @@ -2681,7 +2802,7 @@ msgstr "West Pomerania" #: contrib/localflavor/sk/forms.py:30 msgid "Enter a postal code in the format XXXXX or XXX XX." -msgstr "Introdueixi un codi postal en el format XXXXX or XXX XX." +msgstr "Introduïu un codi postal en el format XXXXX or XXX XX." #: contrib/localflavor/sk/sk_districts.py:8 msgid "Banska Bystrica" @@ -3033,7 +3154,7 @@ msgstr "Regió de Zilina" #: contrib/localflavor/uk/forms.py:21 msgid "Enter a valid postcode." -msgstr "Introdueixi un codi postal vàlid." +msgstr "Introdueix un codi postal vàlid." #: contrib/localflavor/uk/uk_regions.py:11 msgid "Bedfordshire" @@ -3204,10 +3325,13 @@ msgid "County Armagh" msgstr "County Armagh" #: contrib/localflavor/uk/uk_regions.py:57 -#: contrib/localflavor/uk/uk_regions.py:58 msgid "County Down" msgstr "County Down" +#: contrib/localflavor/uk/uk_regions.py:58 +msgid "County Fermanagh" +msgstr "Comptat de Fermanagh" + #: contrib/localflavor/uk/uk_regions.py:59 msgid "County Londonderry" msgstr "County Londonderry" @@ -3242,11 +3366,11 @@ msgstr "Powys" #: contrib/localflavor/uk/uk_regions.py:70 msgid "South Glamorgan" -msgstr "South Glamorgan" +msgstr "Glamorgan Sud" #: contrib/localflavor/uk/uk_regions.py:71 msgid "West Glamorgan" -msgstr "West Glamorgan" +msgstr "Glamorgan Oest" #: contrib/localflavor/uk/uk_regions.py:75 msgid "Borders" @@ -3254,7 +3378,7 @@ msgstr "Borders" #: contrib/localflavor/uk/uk_regions.py:76 msgid "Central Scotland" -msgstr "Central Scotland" +msgstr "Escòcia central" #: contrib/localflavor/uk/uk_regions.py:77 msgid "Dumfries and Galloway" @@ -3298,19 +3422,19 @@ msgstr "Western Isles" #: contrib/localflavor/uk/uk_regions.py:90 msgid "England" -msgstr "England" +msgstr "Anglaterra" #: contrib/localflavor/uk/uk_regions.py:91 msgid "Northern Ireland" -msgstr "Northern Ireland" +msgstr "Irlanda del Nord" #: contrib/localflavor/uk/uk_regions.py:92 msgid "Scotland" -msgstr "Scotland" +msgstr "Escòcia" #: contrib/localflavor/uk/uk_regions.py:93 msgid "Wales" -msgstr "Wales" +msgstr "Gal·les" #: contrib/localflavor/us/forms.py:16 msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." @@ -3318,7 +3442,9 @@ msgstr "Introdueixi un codi zip en el format XXXXX o XXXXX-XXXX." #: contrib/localflavor/us/forms.py:54 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/localflavor/za/forms.py:20 msgid "Enter a valid South African ID number" @@ -3330,11 +3456,11 @@ msgstr "Introdueixi un codi postal Sud Africà vàlid." #: contrib/localflavor/za/za_provinces.py:4 msgid "Eastern Cape" -msgstr "Eastern Cape" +msgstr "Cap Oriental" #: contrib/localflavor/za/za_provinces.py:5 msgid "Free State" -msgstr "Free State" +msgstr "Estat lliure" #: contrib/localflavor/za/za_provinces.py:6 msgid "Gauteng" @@ -3354,31 +3480,39 @@ msgstr "Mpumalanga" #: contrib/localflavor/za/za_provinces.py:10 msgid "Northern Cape" -msgstr "Northern Cape" +msgstr "Cap Nord" #: contrib/localflavor/za/za_provinces.py:11 msgid "North West" -msgstr "North West" +msgstr "Cap Oest" #: contrib/localflavor/za/za_provinces.py:12 msgid "Western Cape" -msgstr "Western Cape" +msgstr "Cap Occidental" #: 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 adalt) o una URL completa que comenci " +"per http:// ." #: contrib/redirects/models.py:13 msgid "redirect" @@ -3388,23 +3522,23 @@ msgstr "redreçament" msgid "redirects" msgstr "redreçaments" -#: contrib/sessions/models.py:46 +#: contrib/sessions/models.py:41 msgid "session key" msgstr "clau de la sessió" -#: contrib/sessions/models.py:47 +#: contrib/sessions/models.py:42 msgid "session data" msgstr "dades de la sessió" -#: contrib/sessions/models.py:48 +#: contrib/sessions/models.py:43 msgid "expire date" msgstr "data de caducitat" -#: contrib/sessions/models.py:53 +#: contrib/sessions/models.py:48 msgid "session" msgstr "sessió" -#: contrib/sessions/models.py:54 +#: contrib/sessions/models.py:49 msgid "sessions" msgstr "sessions" @@ -3426,15 +3560,20 @@ msgstr "llocs" #: core/validators.py:72 msgid "This value must contain only letters, numbers and underscores." -msgstr "Aquest valor ha de contenir només números, guions, i guions baixos." +msgstr "Aquest valor ha de contenir només lletres, números 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 baixos, guions 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." @@ -3454,7 +3593,7 @@ msgstr "Introdueixi adreces de correu electrònic vàlides separades per comes." #: core/validators.py:111 msgid "Please enter a valid IP address." -msgstr "Per favor introdueixi una adreça IP vàlida." +msgstr "Si el plau, introdueixi una adreça IP vàlida." #: core/validators.py:115 msgid "Empty values are not allowed here." @@ -3468,14 +3607,13 @@ 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:151 +#: core/validators.py:128 newforms/fields.py:152 msgid "Enter a whole number." msgstr "Introdueixi un número sencer." #: core/validators.py:132 msgid "Only alphabetical characters are allowed here." -msgstr "Només s'admeted caracters alfabètics aquí." +msgstr "Només s'admeten caracters alfabètics aquí." #: core/validators.py:147 msgid "Year must be 1900 or later." @@ -3486,8 +3624,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:509 +#: core/validators.py:156 db/models/fields/__init__.py:527 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Introdueixi una data vàlida en el forma AAAA-MM-DD." @@ -3495,27 +3632,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:583 +#: core/validators.py:165 db/models/fields/__init__.py:604 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:402 +#: core/validators.py:170 newforms/fields.py:403 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:432 +#: core/validators.py:182 core/validators.py:474 newforms/fields.py:433 #: oldforms/__init__.py:687 msgid "No file was submitted. Check the encoding type on the form." -msgstr "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:456 -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:459 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Envii una imatge vàlida. El fitxer que ha enviat no era una imatge o estaba " +"corrupte." #: core/validators.py:200 #, python-format @@ -3525,7 +3662,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 "" +"Els 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 @@ -3534,7 +3673,7 @@ msgstr "La URL %s no apunta a un video QuickTime vàlid." #: core/validators.py:216 msgid "A valid URL is required." -msgstr "Es precisa d'una URL vàlida." +msgstr "Es precisa una URL vàlida." #: core/validators.py:230 #, python-format @@ -3542,7 +3681,7 @@ msgid "" "Valid HTML is required. Specific errors are:\n" "%s" msgstr "" -"Es precisa HTML vàlid. Els errors específics sòn:\n" +"Es precisa HTML vàlid. Els errors específics són:\n" "%s" #: core/validators.py:237 @@ -3555,22 +3694,21 @@ 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." #: core/validators.py:267 msgid "Enter a valid U.S. state abbreviation." -msgstr "Introdueixi una abreviatura vàlida d'estat d'els E.U.A.." +msgstr "Introdueixi una abreviatura vàlida d'estat dels E.U.A.." #: core/validators.py:281 #, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." -msgstr[0] "Vigili la seva boca! Aquí no admetem la paraula: %s." -msgstr[1] "Vigili la seva boca! Aquí no admetem les paraules: %s." +msgstr[0] "Vigili amb el llenguatge! Aquí no s'admet la paraula: %s." +msgstr[1] "Vigili amb el llenguatge! Aquí no s'admeten les paraules: %s." #: core/validators.py:288 #, python-format @@ -3581,20 +3719,19 @@ 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." #: core/validators.py:335 #, python-format msgid "This field must be given if %(field)s is %(value)s" -msgstr "S'ha de proporcionar aquest camps si %(field)s és %(value)s" +msgstr "S'ha de proporcionar aquest camp si %(field)s és %(value)s" #: core/validators.py:348 #, python-format msgid "This field must be given if %(field)s is not %(value)s" -msgstr "S'ha de proporcionar aquest camps si %(field)s no és %(value)s" +msgstr "S'ha de proporcionar aquest camp si %(field)s no és %(value)s" #: core/validators.py:367 msgid "Duplicate values are not allowed." @@ -3603,7 +3740,7 @@ msgstr "No s'admeten valors duplicats." #: core/validators.py:382 #, python-format msgid "This value must be between %(lower)s and %(upper)s." -msgstr "Aquest valor ha de estar comprés entre %(lower)s i %(upper)s." +msgstr "Aquest valor ha d'estar comprès entre %(lower)s i %(upper)s." #: core/validators.py:384 #, python-format @@ -3627,23 +3764,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." @@ -3674,38 +3825,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 @@ -3715,161 +3893,158 @@ msgstr "Ja existeix un %(object)s del tipus %(type)s amb aquest %(field)s." #: db/models/fields/__init__.py:52 #, python-format msgid "%(optname)s with this %(fieldname)s already exists." -msgstr "Ja existeix %(optname)s amb auqest %(fieldname)s." +msgstr "Ja existeix %(optname)s amb aquest %(fieldname)s." -#: 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 -#: oldforms/__init__.py:374 +#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:327 +#: db/models/fields/__init__.py:759 db/models/fields/__init__.py:770 +#: newforms/fields.py:46 oldforms/__init__.py:374 msgid "This field is required." msgstr "Aquest camp és obligatori." -#: db/models/fields/__init__.py:418 +#: db/models/fields/__init__.py:427 msgid "This value must be an integer." -msgstr "Aquest valor ha de ser un enter." +msgstr "Aquest valor ha de ser un enter." -#: db/models/fields/__init__.py:454 +#: db/models/fields/__init__.py:466 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:475 +#: db/models/fields/__init__.py:490 msgid "This field cannot be null." msgstr "Aquest camp no pot ser null (estar buit)." -#: db/models/fields/__init__.py:644 +#: db/models/fields/__init__.py:668 msgid "This value must be a decimal number." msgstr "Aquest valor ha de ser un número decimal." -#: db/models/fields/__init__.py:755 +#: db/models/fields/__init__.py:779 msgid "Enter a valid filename." msgstr "Introdueixi un nom de fitxer vàlid." -#: db/models/fields/__init__.py:904 +#: db/models/fields/__init__.py:960 msgid "This value must be either None, True or False." msgstr "Aquest valor ha de ser None (Cap), True (Veritat) o False (Fals)" -#: db/models/fields/related.py:55 +#: db/models/fields/related.py:93 #, python-format msgid "Please enter a valid %s." msgstr "Si us plau, introdueixi un %s vàlid." -#: db/models/fields/related.py:658 +#: db/models/fields/related.py:701 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." +#: db/models/fields/related.py:703 +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 +#: db/models/fields/related.py:750 #, 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:46 +#: newforms/fields.py:47 msgid "Enter a valid value." msgstr "Introdueixi un valor vàlid." -#: newforms/fields.py:123 -#, 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)." - #: newforms/fields.py:124 #, 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)." +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)." -#: newforms/fields.py:152 -#: newforms/fields.py:181 -#: newforms/fields.py:210 +#: newforms/fields.py:125 +#, 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)." + +#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211 #, python-format msgid "Ensure this value is less than or equal to %s." msgstr "Aquest valor ha de ser menor o igual a %s." -#: newforms/fields.py:153 -#: newforms/fields.py:182 -#: newforms/fields.py:211 +#: newforms/fields.py:154 newforms/fields.py:183 newforms/fields.py:212 #, python-format msgid "Ensure this value is greater than or equal to %s." msgstr "Asseguris de que aquest valor sigui superior o igual a %s." -#: newforms/fields.py:180 -#: newforms/fields.py:209 +#: newforms/fields.py:181 newforms/fields.py:210 msgid "Enter a number." msgstr "Introdueixi un número." -#: newforms/fields.py:212 +#: newforms/fields.py:213 #, 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:213 +#: newforms/fields.py:214 #, 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:214 +#: newforms/fields.py:215 #, 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:262 -#: newforms/fields.py:719 +#: newforms/fields.py:263 newforms/fields.py:751 msgid "Enter a valid date." msgstr "Introdueixi una data vàlida." -#: newforms/fields.py:295 -#: newforms/fields.py:720 +#: newforms/fields.py:296 newforms/fields.py:752 msgid "Enter a valid time." msgstr "Introdueixi una hora vàlida." -#: newforms/fields.py:334 +#: newforms/fields.py:335 msgid "Enter a valid date/time." msgstr "Introdueixi una data/hora vàlides." -#: newforms/fields.py:433 +#: newforms/fields.py:434 msgid "No file was submitted." msgstr "No s'ha enviat cap fitxer." -#: newforms/fields.py:434 -#: oldforms/__init__.py:689 +#: newforms/fields.py:435 oldforms/__init__.py:689 msgid "The submitted file is empty." msgstr "El fitxer enviat està buit." -#: newforms/fields.py:492 +#: newforms/fields.py:497 msgid "Enter a valid URL." msgstr "Introdueixi una URL vàlida." -#: newforms/fields.py:493 +#: newforms/fields.py:498 msgid "This URL appears to be a broken link." msgstr "Aquesta URL sembla ser un enllaç trencat." -#: newforms/fields.py:555 -#: newforms/models.py:317 +#: newforms/fields.py:560 newforms/models.py:299 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:594 +#: 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:595 -#: newforms/fields.py:657 -#: newforms/models.py:377 +#: newforms/fields.py:600 newforms/fields.py:662 newforms/models.py:371 msgid "Enter a list of values." msgstr "Introdueixi una llista de valors." -#: newforms/fields.py:748 +#: newforms/fields.py:780 msgid "Enter a valid IPv4 address." msgstr "Introdueixi una adreça IPv4 vàlida." -#: newforms/models.py:378 +#: newforms/models.py:372 #, 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." @@ -3885,9 +4060,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:512 -#: oldforms/__init__.py:586 -#: oldforms/__init__.py:625 +#: oldforms/__init__.py:512 oldforms/__init__.py:586 oldforms/__init__.py:625 #, python-format msgid "Select a valid choice; '%(data)s' is not in %(choices)s." msgstr "Esculli una opció vàlida; %(data)s' no està dintre de %(choices)s." @@ -3904,28 +4077,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:683 +#: template/defaultfilters.py:698 msgid "yes,no,maybe" msgstr "si,no,potser" -#: template/defaultfilters.py:714 +#: template/defaultfilters.py:729 #, python-format msgid "%(size)d byte" msgid_plural "%(size)d bytes" msgstr[0] "%(size)d byte" msgstr[1] "%(size)d bytes" -#: template/defaultfilters.py:716 +#: template/defaultfilters.py:731 #, python-format msgid "%.1f KB" msgstr "%.1f KB" -#: template/defaultfilters.py:718 +#: template/defaultfilters.py:733 #, python-format msgid "%.1f MB" msgstr "%.1f MB" -#: template/defaultfilters.py:719 +#: template/defaultfilters.py:734 #, python-format msgid "%.1f GB" msgstr "%.1f GB" @@ -3988,11 +4161,11 @@ msgstr "Dl" #: utils/dates.py:10 msgid "Tue" -msgstr "Dt" +msgstr "Dm" #: utils/dates.py:10 msgid "Wed" -msgstr "Dc" +msgstr "Dmx" #: utils/dates.py:10 msgid "Thu" @@ -4004,7 +4177,7 @@ msgstr "Dv" #: utils/dates.py:11 msgid "Sat" -msgstr "Db" +msgstr "Ds" #: utils/dates.py:11 msgid "Sun" @@ -4018,28 +4191,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" @@ -4193,23 +4361,23 @@ msgstr "%(number)d %(type)s" msgid ", %(number)d %(type)s" msgstr ", %(number)d %(type)s" -#: utils/translation/trans_real.py:399 +#: utils/translation/trans_real.py:403 msgid "DATE_FORMAT" msgstr "F j, Y" -#: utils/translation/trans_real.py:400 +#: utils/translation/trans_real.py:404 msgid "DATETIME_FORMAT" msgstr "F j, Y, H:i" -#: utils/translation/trans_real.py:401 +#: utils/translation/trans_real.py:405 msgid "TIME_FORMAT" msgstr "H:i" -#: utils/translation/trans_real.py:417 +#: utils/translation/trans_real.py:421 msgid "YEAR_MONTH_FORMAT" msgstr "j de/d' F del Y" -#: utils/translation/trans_real.py:418 +#: utils/translation/trans_real.py:422 msgid "MONTH_DAY_FORMAT" msgstr "j de/d' F del Y" @@ -4228,9 +4396,11 @@ msgstr "El/La %(verbose_name)s s'ha actualtzat amb èxit." msgid "The %(verbose_name)s was deleted." msgstr "El %(verbose_name)s s'ha eliminat." +#~ msgid "Gaeilge" +#~ msgstr "Gaeilge" + #~ 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." - diff --git a/django/conf/locale/ca/LC_MESSAGES/djangojs.mo b/django/conf/locale/ca/LC_MESSAGES/djangojs.mo index 6f3c9f2a5ae0152a23fbed6f548de0a86751e482..0df69aeb94e59626151b54bcea407675817c193f 100644 GIT binary patch delta 362 zcmX}lF-yZh7zW@=n_6wHND;(EZY;=!OEg$w2>}%?7z8O@^@!n6lAI*zT!$ib(oz?H zN5MZ+M`t$&H{aCa^zgoS-}g-#uZ@?F;YcIosZ7WUA*5dUvk5nlciD7I(fNPLl5maTfzWD7H|P@Y;gguvp;1BX|yVID+^} z#>@OXd(+ybn#D|;a?{~_Ixp`I_nBo=v+dXid)(x_b|JEy^-_^!k;ql*(35+SNJWoD zE+Uc8vs4WpXy@Eh316b&;+P$IB%s`6#(@a1iN|NknOv z{tPMj2mBd|;Oyq$s&8tS^Y9+d$IyDR9^dc!24i`Nv027grTp(QTtZ%h^Kb($z-_n! zTT?r55&0ah!Yf#Tw{Q;T@C-h{;?5^5{(M2aWZz}ho-F*JQA6VwZo(R-iUa$w1&^Q! z`w$~6pXU4V$Y{(|>$c}|(eS, 2007. msgid "" msgstr "" "Project-Id-Version: Django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-05-20 18:25+0200\n" -"PO-Revision-Date: 2008-01-22 19:39+0100\n" -"Last-Translator: Marc Garcia \n" -"Language-Team: español \n" +"POT-Creation-Date: 2007-02-15 01:00+0200\n" +"PO-Revision-Date: 2008-03-25 18:54+0100\n" +"Last-Translator: Django Catalan Group \n" +"Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" +"X-Generator: VIM 7.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: contrib/admin/media/js/SelectFilter2.js:33 diff --git a/django/contrib/admin/templatetags/admin_list.py b/django/contrib/admin/templatetags/admin_list.py index 17579064e0..711ab9bd91 100644 --- a/django/contrib/admin/templatetags/admin_list.py +++ b/django/contrib/admin/templatetags/admin_list.py @@ -22,7 +22,7 @@ def paginator_number(cl,i): elif i == cl.page_num: return mark_safe(u'%d ' % (i+1)) else: - return mark_safe(u'%d ' % (cl.get_query_string({PAGE_VAR: i}), (i == cl.paginator.pages-1 and ' class="end"' or ''), i+1)) + return mark_safe(u'%d ' % (cl.get_query_string({PAGE_VAR: i}), (i == cl.paginator.num_pages-1 and ' class="end"' or ''), i+1)) paginator_number = register.simple_tag(paginator_number) def pagination(cl): @@ -37,8 +37,8 @@ def pagination(cl): # If there are 10 or fewer pages, display links to every page. # Otherwise, do some fancy - if paginator.pages <= 10: - page_range = range(paginator.pages) + if paginator.num_pages <= 10: + page_range = range(paginator.num_pages) else: # Insert "smart" pagination links, so that there are always ON_ENDS # links at either end of the list of pages, and there are always @@ -50,12 +50,12 @@ def pagination(cl): page_range.extend(range(page_num - ON_EACH_SIDE, page_num + 1)) else: page_range.extend(range(0, page_num + 1)) - if page_num < (paginator.pages - ON_EACH_SIDE - ON_ENDS - 1): + if page_num < (paginator.num_pages - ON_EACH_SIDE - ON_ENDS - 1): page_range.extend(range(page_num + 1, page_num + ON_EACH_SIDE + 1)) page_range.append(DOT) - page_range.extend(range(paginator.pages - ON_ENDS, paginator.pages)) + page_range.extend(range(paginator.num_pages - ON_ENDS, paginator.num_pages)) else: - page_range.extend(range(page_num + 1, paginator.pages)) + page_range.extend(range(page_num + 1, paginator.num_pages)) need_show_all_link = cl.can_show_all and not cl.show_all and cl.multi_page return { diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py index c648a9722d..ee71e3cda0 100644 --- a/django/contrib/admin/views/main.py +++ b/django/contrib/admin/views/main.py @@ -3,7 +3,7 @@ from django.contrib.admin.filterspecs import FilterSpec from django.contrib.admin.options import IncorrectLookupParameters from django.contrib.admin.views.decorators import staff_member_required from django.views.decorators.cache import never_cache -from django.core.paginator import ObjectPaginator, InvalidPage +from django.core.paginator import QuerySetPaginator, InvalidPage from django.shortcuts import render_to_response from django.db import models from django.db.models.query import handle_legacy_orderlist, QuerySet @@ -177,11 +177,11 @@ class ChangeList(object): return mark_safe('?' + '&'.join([u'%s=%s' % (k, v) for k, v in p.items()]).replace(' ', '%20')) def get_results(self, request): - paginator = ObjectPaginator(self.query_set, self.list_per_page) + paginator = QuerySetPaginator(self.query_set, self.lookup_opts.admin.list_per_page) # Get the number of objects, with admin filters applied. try: - result_count = paginator.hits + result_count = paginator.count # Naked except! Because we don't have any other way of validating # "params". They might be invalid if the keyword arguments are # incorrect, or if the values are not in the correct type (which would @@ -206,7 +206,7 @@ class ChangeList(object): result_list = list(self.query_set) else: try: - result_list = paginator.get_page(self.page_num) + result_list = paginator.page(self.page_num+1).object_list except InvalidPage: result_list = () diff --git a/django/core/management/sql.py b/django/core/management/sql.py index ab3a7b64c5..a3d02696c9 100644 --- a/django/core/management/sql.py +++ b/django/core/management/sql.py @@ -294,8 +294,14 @@ def sql_model_create(model, style, known_models=set()): style.SQL_COLTYPE(models.IntegerField().db_type()) + ' ' + \ style.SQL_KEYWORD('NULL')) for field_constraints in opts.unique_together: - table_output.append(style.SQL_KEYWORD('UNIQUE') + ' (%s)' % \ + constraint_output = [style.SQL_KEYWORD('UNIQUE')] + constraint_output.append('(%s)' % \ ", ".join([style.SQL_FIELD(qn(opts.get_field(f).column)) for f in field_constraints])) + if opts.db_tablespace and connection.features.supports_tablespaces \ + and connection.features.autoindexes_primary_keys: + constraint_output.append(connection.ops.tablespace_sql( + opts.db_tablespace, inline=True)) + table_output.append(' '.join(constraint_output)) full_statement = [style.SQL_KEYWORD('CREATE TABLE') + ' ' + style.SQL_TABLE(qn(opts.db_table)) + ' ('] for i, line in enumerate(table_output): # Combine and add commas. diff --git a/django/core/paginator.py b/django/core/paginator.py index dabd20dfc0..04cc4bf481 100644 --- a/django/core/paginator.py +++ b/django/core/paginator.py @@ -173,7 +173,7 @@ class ObjectPaginator(Paginator): if self._count is None: try: self._count = self.object_list.count() - except AttributeError: + except TypeError: self._count = len(self.object_list) return self._count count = property(_get_count) diff --git a/django/db/backends/ado_mssql/__init__.py b/django/db/backends/ado_mssql/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/django/db/backends/ado_mssql/base.py b/django/db/backends/ado_mssql/base.py deleted file mode 100644 index 07ce02d591..0000000000 --- a/django/db/backends/ado_mssql/base.py +++ /dev/null @@ -1,112 +0,0 @@ -""" -ADO MSSQL database backend for Django. - -Requires adodbapi 2.0.1: http://adodbapi.sourceforge.net/ -""" - -from django.db.backends import BaseDatabaseWrapper, BaseDatabaseFeatures, BaseDatabaseOperations, util -try: - import adodbapi as Database -except ImportError, e: - from django.core.exceptions import ImproperlyConfigured - raise ImproperlyConfigured("Error loading adodbapi module: %s" % e) -import datetime -try: - import mx -except ImportError: - mx = None - -DatabaseError = Database.DatabaseError -IntegrityError = Database.IntegrityError - -# We need to use a special Cursor class because adodbapi expects question-mark -# param style, but Django expects "%s". This cursor converts question marks to -# format-string style. -class Cursor(Database.Cursor): - def executeHelper(self, operation, isStoredProcedureCall, parameters=None): - if parameters is not None and "%s" in operation: - operation = operation.replace("%s", "?") - Database.Cursor.executeHelper(self, operation, isStoredProcedureCall, parameters) - -class Connection(Database.Connection): - def cursor(self): - return Cursor(self) -Database.Connection = Connection - -origCVtoP = Database.convertVariantToPython -def variantToPython(variant, adType): - if type(variant) == bool and adType == 11: - return variant # bool not 1/0 - res = origCVtoP(variant, adType) - if mx is not None and type(res) == mx.DateTime.mxDateTime.DateTimeType: - # Convert ms.DateTime objects to Python datetime.datetime objects. - tv = list(res.tuple()[:7]) - tv[-2] = int(tv[-2]) - return datetime.datetime(*tuple(tv)) - if type(res) == float and str(res)[-2:] == ".0": - return int(res) # If float but int, then int. - return res -Database.convertVariantToPython = variantToPython - -class DatabaseFeatures(BaseDatabaseFeatures): - supports_tablespaces = True - -class DatabaseOperations(BaseDatabaseOperations): - def date_extract_sql(self, lookup_type, field_name): - return "DATEPART(%s, %s)" % (lookup_type, field_name) - - def date_trunc_sql(self, lookup_type, field_name): - if lookup_type == 'year': - return "Convert(datetime, Convert(varchar, DATEPART(year, %s)) + '/01/01')" % field_name - if lookup_type == 'month': - return "Convert(datetime, Convert(varchar, DATEPART(year, %s)) + '/' + Convert(varchar, DATEPART(month, %s)) + '/01')" % (field_name, field_name) - if lookup_type == 'day': - return "Convert(datetime, Convert(varchar(12), %s))" % field_name - - def deferrable_sql(self): - return " DEFERRABLE INITIALLY DEFERRED" - - def last_insert_id(self, cursor, table_name, pk_name): - cursor.execute("SELECT %s FROM %s WHERE %s = @@IDENTITY" % (pk_name, table_name, pk_name)) - return cursor.fetchone()[0] - - def quote_name(self, name): - if name.startswith('[') and name.endswith(']'): - return name # Quoting once is enough. - return '[%s]' % name - - def random_function_sql(self): - return 'RAND()' - - def tablespace_sql(self, tablespace, inline=False): - return "ON %s" % self.quote_name(tablespace) - -class DatabaseWrapper(BaseDatabaseWrapper): - features = DatabaseFeatures() - ops = DatabaseOperations() - operators = { - 'exact': '= %s', - 'iexact': 'LIKE %s', - 'contains': 'LIKE %s', - 'icontains': 'LIKE %s', - 'gt': '> %s', - 'gte': '>= %s', - 'lt': '< %s', - 'lte': '<= %s', - 'startswith': 'LIKE %s', - 'endswith': 'LIKE %s', - 'istartswith': 'LIKE %s', - 'iendswith': 'LIKE %s', - } - - def _cursor(self, settings): - if self.connection is None: - if settings.DATABASE_NAME == '' or settings.DATABASE_USER == '': - from django.core.exceptions import ImproperlyConfigured - raise ImproperlyConfigured("You need to specify both DATABASE_NAME and DATABASE_USER in your Django settings file.") - if not settings.DATABASE_HOST: - settings.DATABASE_HOST = "127.0.0.1" - # TODO: Handle DATABASE_PORT. - conn_string = "PROVIDER=SQLOLEDB;DATA SOURCE=%s;UID=%s;PWD=%s;DATABASE=%s" % (settings.DATABASE_HOST, settings.DATABASE_USER, settings.DATABASE_PASSWORD, settings.DATABASE_NAME) - self.connection = Database.connect(conn_string) - return self.connection.cursor() diff --git a/django/db/backends/ado_mssql/client.py b/django/db/backends/ado_mssql/client.py deleted file mode 100644 index 5c197cafa4..0000000000 --- a/django/db/backends/ado_mssql/client.py +++ /dev/null @@ -1,2 +0,0 @@ -def runshell(): - raise NotImplementedError diff --git a/django/db/backends/ado_mssql/creation.py b/django/db/backends/ado_mssql/creation.py deleted file mode 100644 index d4ba8f2897..0000000000 --- a/django/db/backends/ado_mssql/creation.py +++ /dev/null @@ -1,25 +0,0 @@ -DATA_TYPES = { - 'AutoField': 'int IDENTITY (1, 1)', - 'BooleanField': 'bit', - 'CharField': 'varchar(%(max_length)s)', - 'CommaSeparatedIntegerField': 'varchar(%(max_length)s)', - 'DateField': 'smalldatetime', - 'DateTimeField': 'smalldatetime', - 'DecimalField': 'numeric(%(max_digits)s, %(decimal_places)s)', - 'FileField': 'varchar(%(max_length)s)', - 'FilePathField': 'varchar(%(max_length)s)', - 'FloatField': 'double precision', - 'ImageField': 'varchar(%(max_length)s)', - 'IntegerField': 'int', - 'IPAddressField': 'char(15)', - 'NullBooleanField': 'bit', - 'OneToOneField': 'int', - 'PhoneNumberField': 'varchar(20)', - 'PositiveIntegerField': 'int CONSTRAINT [CK_int_pos_%(column)s] CHECK ([%(column)s] > 0)', - 'PositiveSmallIntegerField': 'smallint CONSTRAINT [CK_smallint_pos_%(column)s] CHECK ([%(column)s] > 0)', - 'SlugField': 'varchar(%(max_length)s)', - 'SmallIntegerField': 'smallint', - 'TextField': 'text', - 'TimeField': 'time', - 'USStateField': 'varchar(2)', -} diff --git a/django/db/backends/ado_mssql/introspection.py b/django/db/backends/ado_mssql/introspection.py deleted file mode 100644 index b125cc995f..0000000000 --- a/django/db/backends/ado_mssql/introspection.py +++ /dev/null @@ -1,13 +0,0 @@ -def get_table_list(cursor): - raise NotImplementedError - -def get_table_description(cursor, table_name): - raise NotImplementedError - -def get_relations(cursor, table_name): - raise NotImplementedError - -def get_indexes(cursor, table_name): - raise NotImplementedError - -DATA_TYPES_REVERSE = {} diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py index 697dcd3a67..7782387f41 100644 --- a/django/db/backends/mysql/base.py +++ b/django/db/backends/mysql/base.py @@ -17,7 +17,8 @@ except ImportError, e: version = Database.version_info if (version < (1,2,1) or (version[:3] == (1, 2, 1) and (len(version) < 5 or version[3] != 'final' or version[4] < 2))): - raise ImportError("MySQLdb-1.2.1p2 or newer is required; you have %s" % Database.__version__) + from django.core.exceptions import ImproperlyConfigured + raise ImproperlyConfigured("MySQLdb-1.2.1p2 or newer is required; you have %s" % Database.__version__) from MySQLdb.converters import conversions from MySQLdb.constants import FIELD_TYPE diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index f00b24da93..543888c945 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -508,7 +508,7 @@ class ForeignKey(RelatedField, Field): if 'edit_inline_type' in kwargs: import warnings - warnings.warn("edit_inline_type is deprecated. Use edit_inline instead.") + warnings.warn("edit_inline_type is deprecated. Use edit_inline instead.", DeprecationWarning) kwargs['edit_inline'] = kwargs.pop('edit_inline_type') kwargs['rel'] = ManyToOneRel(to, to_field, @@ -610,7 +610,7 @@ class OneToOneField(RelatedField, IntegerField): if 'edit_inline_type' in kwargs: import warnings - warnings.warn("edit_inline_type is deprecated. Use edit_inline instead.") + warnings.warn("edit_inline_type is deprecated. Use edit_inline instead.", DeprecationWarning) kwargs['edit_inline'] = kwargs.pop('edit_inline_type') kwargs['rel'] = OneToOneRel(to, to_field, diff --git a/django/views/generic/list_detail.py b/django/views/generic/list_detail.py index cb9b014eb5..ea77d46300 100644 --- a/django/views/generic/list_detail.py +++ b/django/views/generic/list_detail.py @@ -74,8 +74,8 @@ def object_list(request, queryset, paginate_by=None, page=None, 'page': page_obj.number, 'next': page_obj.next_page_number(), 'previous': page_obj.previous_page_number(), - 'last_on_page': page_obj.start_index(), - 'first_on_page': page_obj.end_index(), + 'first_on_page': page_obj.start_index(), + 'last_on_page': page_obj.end_index(), 'pages': paginator.num_pages, 'hits': paginator.count, 'page_range': paginator.page_range, diff --git a/django/views/i18n.py b/django/views/i18n.py index e420e3d7f7..e141c1d967 100644 --- a/django/views/i18n.py +++ b/django/views/i18n.py @@ -82,6 +82,17 @@ function interpolate(fmt, obj, named) { } """ +PluralIdx = r""" +function pluralidx(n) { + var v=%s; + if (typeof(v) == 'boolean') { + return v ? 1 : 0; + } else { + return v; + } +} +""" + def null_javascript_catalog(request, domain=None, packages=None): """ Returns "identity" versions of the JavaScript i18n functions -- i.e., @@ -154,7 +165,7 @@ def javascript_catalog(request, domain='djangojs', packages=None): # this should actually be a compiled function of a typical plural-form: # Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; plural = [el.strip() for el in plural.split(';') if el.strip().startswith('plural=')][0].split('=',1)[1] - src.append('function pluralidx(n) {\n return %s;\n}\n' % plural) + src.append(PluralIdx % plural) else: src.append(SimplePlural) csrc = [] diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000000..f79d4299d5 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,68 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . + +.PHONY: help clean html web htmlhelp latex changes linkcheck + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " web to make files usable by Sphinx.web" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " changes to make an overview over all changed/added/deprecated items" + @echo " linkcheck to check all external links for integrity" + +clean: + -rm -rf _build/* + +html: + mkdir -p _build/html _build/doctrees + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html + @echo + @echo "Build finished. The HTML pages are in _build/html." + +web: + mkdir -p _build/web _build/doctrees + $(SPHINXBUILD) -b web $(ALLSPHINXOPTS) _build/web + @echo + @echo "Build finished; now you can run" + @echo " python -m sphinx.web _build/web" + @echo "to start the server." + +htmlhelp: + mkdir -p _build/htmlhelp _build/doctrees + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in _build/htmlhelp." + +latex: + mkdir -p _build/latex _build/doctrees + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex + @echo + @echo "Build finished; the LaTeX files are in _build/latex." + @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ + "run these through (pdf)latex." + +changes: + mkdir -p _build/changes _build/doctrees + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes + @echo + @echo "The overview file is in _build/changes." + +linkcheck: + mkdir -p _build/linkcheck _build/doctrees + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in _build/linkcheck/output.txt." diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000000..0ced57d57b --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,132 @@ +# -*- coding: utf-8 -*- +# +# Django documentation build configuration file, created by +# sphinx-quickstart on Thu Mar 27 09:06:53 2008. +# +# This file is execfile()d with the current directory set to its containing dir. +# +# The contents of this file are pickled, so don't put values in the namespace +# that aren't pickleable (module imports are okay, they're removed automatically). +# +# All configuration values have a default value; values that are commented out +# serve to show the default value. + +import sys + +# If your extensions are in another directory, add it here. +#sys.path.append('some/directory') + +# General configuration +# --------------------- + +# Add any Sphinx extension module names here, as strings. They can be extensions +# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +#extensions = [] + +# Add any paths that contain templates here, relative to this directory. +templates_path = [] + +# The suffix of source filenames. +source_suffix = '.txt' + +# The master toctree document. +master_doc = 'index' + +# General substitutions. +project = 'Django' +copyright = '2008, Django Software Foundation' + +# The default replacements for |version| and |release|, also used in various +# other places throughout the built documents. +# +# The short X.Y version. +version = 'SVN' +# The full version, including alpha/beta/rc tags. +release = version + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +today_fmt = '%B %d, %Y' + +# List of documents that shouldn't be included in the build. +#unused_docs = [] + +# If true, '()' will be appended to :func: etc. cross-reference text. +add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +add_module_names = False + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + + +# Options for HTML output +# ----------------------- + +# The style sheet to use for HTML and HTML Help pages. A file of that name +# must exist either in Sphinx' static/ path, or in one of the custom paths +# given in html_static_path. +html_style = 'default.css' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +html_use_smartypants = True + +# Content template for the index page. +#html_index = '' + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_use_modindex = True + +# If true, the reST sources are included in the HTML build as _sources/. +html_copy_source = True + +# Output file base name for HTML help builder. +htmlhelp_basename = 'Djangodoc' + + +# Options for LaTeX output +# ------------------------ + +# The paper size ('letter' or 'a4'). +#latex_paper_size = 'letter' + +# The font size ('10pt', '11pt' or '12pt'). +#latex_font_size = '10pt' + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, document class [howto/manual]). +#latex_documents = [] + +# Additional stuff for the LaTeX preamble. +#latex_preamble = '' + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_use_modindex = True diff --git a/docs/db-api.txt b/docs/db-api.txt index e9b5c05f6b..f8ed16988e 100644 --- a/docs/db-api.txt +++ b/docs/db-api.txt @@ -1306,9 +1306,6 @@ SQL equivalents:: Using raw strings (e.g., ``r'foo'`` instead of ``'foo'``) for passing in the regular expression syntax is recommended. -Regular expression matching is not supported on the ``ado_mssql`` backend. -It will raise a ``NotImplementedError`` at runtime. - iregex ~~~~~~ diff --git a/docs/i18n.txt b/docs/i18n.txt index 8da19cd242..d6c86e1c9d 100644 --- a/docs/i18n.txt +++ b/docs/i18n.txt @@ -338,7 +338,7 @@ Django offers many utility functions (particularly in ``django.utils``) that take a string as their first argument and do something to that string. These functions are used by template filters as well as directly in other code. -If you write your own similar functions and deal with translations, you'll +If you write your own similar functions and deal with translations, you'll face the problem of what to do when the first argument is a lazy translation object. You don't want to convert it to a string immediately, because you might be using this function outside of a view (and hence the current thread's locale @@ -789,7 +789,7 @@ JavaScript that uses strings from different applications. You can make the view dynamic by putting the packages into the URL pattern:: urlpatterns = patterns('', - (r'^jsi18n/(?P\S+?)/$, 'django.views.i18n.javascript_catalog'), + (r'^jsi18n/(?P\S+?)/$', 'django.views.i18n.javascript_catalog'), ) With this, you specify the packages as a list of package names delimited by '+' @@ -811,24 +811,47 @@ interface to access it:: document.write(gettext('this is to be translated')); -There even is a ``ungettext`` interface and a string interpolation function:: +There is also an ``ngettext`` interface:: - d = { - count: 10 - }; - s = interpolate(ungettext('this is %(count)s object', 'this are %(count)s objects', d.count), d); + var object_cnt = 1 // or 0, or 2, or 3, ... + s = ngettext('literal for the singular case', + 'literal for the plural case', object_cnt); -The ``interpolate`` function supports both positional interpolation and named -interpolation. So the above could have been written as:: +and even a string interpolation function:: - s = interpolate(ungettext('this is %s object', 'this are %s objects', 11), [11]); + function interpolate(fmt, obj, named); -The interpolation syntax is borrowed from Python. You shouldn't go over the top -with string interpolation, though: this is still JavaScript, so the code will -have to do repeated regular-expression substitutions. This isn't as fast as -string interpolation in Python, so keep it to those cases where you really -need it (for example, in conjunction with ``ungettext`` to produce proper -pluralizations). +The interpolation syntax is borrowed from Python, so the ``interpolate`` +function supports both positional and named interpolation: + + * Positional interpolation: ``obj`` contains a JavaScript Array object + whose elements values are then sequentially interpolated in their + corresponding ``fmt`` placeholders in the same order they appear. + For example:: + + fmts = ngettext('There is %s object. Remaining: %s', + 'There are %s objects. Remaining: %s', 11); + s = interpolate(fmts, [11, 20]); + // s is 'There are 11 objects. Remaining: 20' + + * Named interpolation: This mode is selected by passing the optional + boolean ``named`` parameter as true. ``obj`` contains a JavaScript + object or associative array. For example:: + + d = { + count: 10 + total: 50 + }; + + fmts = ngettext('Total: %(total)s, there is %(count)s object', + 'there are %(count)s of a total of %(total)s objects', d.count); + s = interpolate(fmts, d, true); + +You shouldn't go over the top with string interpolation, though: this is still +JavaScript, so the code has to make repeated regular-expression substitutions. +This isn't as fast as string interpolation in Python, so keep it to those +cases where you really need it (for example, in conjunction with ``ngettext`` +to produce proper pluralizations). Creating JavaScript translation catalogs ---------------------------------------- diff --git a/docs/index.txt b/docs/index.txt new file mode 100644 index 0000000000..385ada455c --- /dev/null +++ b/docs/index.txt @@ -0,0 +1,128 @@ +==================== +Django Documentation +==================== + +The essential documentation +=========================== + +If you're new to Django, make sure to read the following documentation in +order.. The rest (in the "reference" section below) can be ready in any order as +you need various functionality. + +.. toctree:: + :maxdepth: 1 + + overview + install + tutorial01 + tutorial02 + tutorial03 + tutorial04 + faq + documentation + +Reference +========= + +.. toctree:: + :maxdepth: 1 + + django-admin + model-api + db-api + transactions + templates + templates_python + newforms + modelforms + testing + sessions + cache + settings + url_dispatch + request_response + generic_views + authentication + shortcuts + unicode + pagination + serialization + i18n + middleware + custom_model_fields + databases + +``django.contrib`` add-ons +-------------------------- + +.. toctree:: + :maxdepth: 1 + + add_ons + contenttypes + csrf + databrowse + flatpages + form_preview + form_wizard + localflavor + redirects + sites + sitemaps + syndication_feeds + webdesign + +Deployment +---------- + +.. toctree:: + :maxdepth: 1 + + modpython + fastcgi + +Solving specific problems +------------------------- + +.. toctree:: + :maxdepth: 1 + + apache_auth + static_files + email + legacy_databases + outputting_pdf + outputting_csv + +Et cetera +--------- + +.. toctree:: + :maxdepth: 1 + + design_philosophies + contributing + admin_css + api_stability + +Release notes +------------- + +.. toctree:: + :maxdepth: 1 + + release_notes_0.96 + release_notes_0.95 + +Also see the list of `backwards-incompatible changes`__ for changes made between +releases. + +__ http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/docs/install.txt b/docs/install.txt index 341c4280e8..bfe85fff8a 100644 --- a/docs/install.txt +++ b/docs/install.txt @@ -172,11 +172,11 @@ Installing the development version If you decide to use the latest development version of Django, you'll want to pay close attention to `the development timeline`_, and you'll want to keep an eye on `the list of - backwards-incompatible changes`_; this will help you stay on top + backwards-incompatible changes`_. This will help you stay on top of any new features you might want to use, as well as any changes - you'll need to make to your code when updating your copy of Django - (for stable releases, any necessary changes are documented in the - release notes). + you'll need to make to your code when updating your copy of Django. + (For stable releases, any necessary changes are documented in the + release notes.) .. _the development timeline: http://code.djangoproject.com/timeline .. _the list of backwards-incompatible changes: http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges diff --git a/docs/modelforms.txt b/docs/modelforms.txt index 05f9b1b3d4..554aeb7ea0 100644 --- a/docs/modelforms.txt +++ b/docs/modelforms.txt @@ -236,7 +236,7 @@ works exactly the same way as any other ``newforms`` form. For example, the ``is_valid()`` method is used to check for validity, the ``is_multipart()`` method is used to determine whether a form requires multipart file upload (and hence whether ``request.FILES`` must be -passed to the form), etc.; see `the standard newforms documentation`_ +passed to the form), etc. See `the standard newforms documentation`_ for more information. .. _the standard newforms documentation: ../newforms/ diff --git a/docs/request_response.txt b/docs/request_response.txt index 0e0f046a2d..a4f03b9185 100644 --- a/docs/request_response.txt +++ b/docs/request_response.txt @@ -143,14 +143,13 @@ All attributes except ``session`` should be considered read-only. ``urlconf`` Not defined by Django itself, but will be read if other code - (e.g., a custom middleware class) sets it; when present, this will - be used as the root URLConf for the current request, overriding + (e.g., a custom middleware class) sets it. When present, this will + be used as the root URLconf for the current request, overriding the ``ROOT_URLCONF`` setting. See `How Django processes a request`_ for details. .. _How Django processes a request: ../url_dispatch/#how-django-processes-a-request - Methods ------- @@ -202,19 +201,19 @@ Methods ``is_ajax()`` **New in Django development version** - Returns ``True`` if the request was made via an XMLHttpRequest by checking - the ``HTTP_X_REQUESTED_WITH`` header for the string *'XMLHttpRequest'*. The - following major Javascript libraries all send this header: + Returns ``True`` if the request was made via an ``XMLHttpRequest``, by checking + the ``HTTP_X_REQUESTED_WITH`` header for the string ``'XMLHttpRequest'``. The + following major JavaScript libraries all send this header: - * jQuery - * Dojo - * MochiKit - * MooTools - * Prototype - * YUI + * jQuery + * Dojo + * MochiKit + * MooTools + * Prototype + * YUI - If you write your own XMLHttpRequest call (on the browser side), you will - have to set this header manually to use this method. + If you write your own XMLHttpRequest call (on the browser side), you'll + have to set this header manually if you want ``is_ajax()`` to work. QueryDict objects ----------------- diff --git a/docs/settings.txt b/docs/settings.txt index fb2e04f1ea..5aee19102b 100644 --- a/docs/settings.txt +++ b/docs/settings.txt @@ -279,7 +279,7 @@ Default: ``''`` (Empty string) The database backend to use. The build-in database backends are ``'postgresql_psycopg2'``, ``'postgresql'``, ``'mysql'``, ``'mysql_old'``, -``'sqlite3'``, ``'oracle'``, or ``'ado_mssql'``. +``'sqlite3'`` and ``'oracle'``. In the Django development version, you can use a database backend that doesn't ship with Django by setting ``DATABASE_ENGINE`` to a fully-qualified path (i.e. diff --git a/docs/syndication_feeds.txt b/docs/syndication_feeds.txt index f86acfe54d..6a603c4e54 100644 --- a/docs/syndication_feeds.txt +++ b/docs/syndication_feeds.txt @@ -250,7 +250,7 @@ request to the URL ``/rss/beats/0613/``: will be an empty list. In our example, ``len(bits) != 1`` and an ``ObjectDoesNotExist`` exception will be raised, so ``/rss/beats/`` will generate a 404 page. But you can handle this case however you like. For - example you could generate a combined feed for all beats. + example, you could generate a combined feed for all beats. * To generate the feed's ````, ``<link>`` and ``<description>``, Django uses the ``title()``, ``link()`` and ``description()`` methods. In diff --git a/docs/testing.txt b/docs/testing.txt index 54b8ba9ae6..0ff3cce3d9 100644 --- a/docs/testing.txt +++ b/docs/testing.txt @@ -80,7 +80,7 @@ read Python's official documentation for the details. .. admonition:: What's a **docstring**? A good explanation of docstrings (and some guidelines for using them - effectively) can be found in :PEP:`257`: + effectively) can be found in :pep:`257`: A docstring is a string literal that occurs as the first statement in a module, function, class, or method definition. Such a docstring diff --git a/docs/tutorial04.txt b/docs/tutorial04.txt index 473fba1ef8..f09f08ce56 100644 --- a/docs/tutorial04.txt +++ b/docs/tutorial04.txt @@ -39,7 +39,7 @@ A quick rundown: Django; it's just good Web development practice. * ``forloop.counter`` indicates how many times the ``for`` tag has - gone through its loop; for more information, see `the + gone through its loop. For more information, see `the documentation for the "for" tag`_. .. _the documentation for the "for" tag: ../templates/#for diff --git a/docs/url_dispatch.txt b/docs/url_dispatch.txt index 053ee954a3..28f15289a9 100644 --- a/docs/url_dispatch.txt +++ b/docs/url_dispatch.txt @@ -32,7 +32,7 @@ How Django processes a request When a user requests a page from your Django-powered site, this is the algorithm the system follows to determine which Python code to execute: - 1. Django determines the root URLConf module to use; ordinarily + 1. Django determines the root URLconf module to use. Ordinarily, this is the value of the ``ROOT_URLCONF`` setting in your `settings file`_, but if the incoming ``HttpRequest`` object has an attribute called ``urlconf``, its value will be used in diff --git a/tests/regressiontests/forms/fields.py b/tests/regressiontests/forms/fields.py index 9421d8c005..f3b6a96a1e 100644 --- a/tests/regressiontests/forms/fields.py +++ b/tests/regressiontests/forms/fields.py @@ -1135,29 +1135,39 @@ u'' # FilePathField ############################################################### +>>> def fix_os_paths(x): +... if isinstance(x, basestring): +... return x.replace('\\', '/') +... elif isinstance(x, tuple): +... return tuple(fix_os_paths(list(x))) +... elif isinstance(x, list): +... return [fix_os_paths(y) for y in x] +... else: +... return x +... >>> import os >>> from django import newforms as forms >>> path = forms.__file__ >>> path = os.path.dirname(path) + '/' ->>> path +>>> fix_os_paths(path) '.../django/newforms/' >>> f = forms.FilePathField(path=path) >>> f.choices.sort() ->>> f.choices +>>> fix_os_paths(f.choices) [('.../django/newforms/__init__.py', '__init__.py'), ('.../django/newforms/__init__.pyc', '__init__.pyc'), ('.../django/newforms/fields.py', 'fields.py'), ('.../django/newforms/fields.pyc', 'fields.pyc'), ('.../django/newforms/forms.py', 'forms.py'), ('.../django/newforms/forms.pyc', 'forms.pyc'), ('.../django/newforms/models.py', 'models.py'), ('.../django/newforms/models.pyc', 'models.pyc'), ('.../django/newforms/util.py', 'util.py'), ('.../django/newforms/util.pyc', 'util.pyc'), ('.../django/newforms/widgets.py', 'widgets.py'), ('.../django/newforms/widgets.pyc', 'widgets.pyc')] >>> f.clean('fields.py') Traceback (most recent call last): ... ValidationError: [u'Select a valid choice. That choice is not one of the available choices.'] ->>> f.clean(path + 'fields.py') +>>> fix_os_paths(f.clean(path + 'fields.py')) u'.../django/newforms/fields.py' >>> f = forms.FilePathField(path=path, match='^.*?\.py$') >>> f.choices.sort() ->>> f.choices +>>> fix_os_paths(f.choices) [('.../django/newforms/__init__.py', '__init__.py'), ('.../django/newforms/fields.py', 'fields.py'), ('.../django/newforms/forms.py', 'forms.py'), ('.../django/newforms/models.py', 'models.py'), ('.../django/newforms/util.py', 'util.py'), ('.../django/newforms/widgets.py', 'widgets.py')] >>> f = forms.FilePathField(path=path, recursive=True, match='^.*?\.py$') >>> f.choices.sort() ->>> f.choices +>>> fix_os_paths(f.choices) [('.../django/newforms/__init__.py', '__init__.py'), ('.../django/newforms/extras/__init__.py', 'extras/__init__.py'), ('.../django/newforms/extras/widgets.py', 'extras/widgets.py'), ('.../django/newforms/fields.py', 'fields.py'), ('.../django/newforms/forms.py', 'forms.py'), ('.../django/newforms/models.py', 'models.py'), ('.../django/newforms/util.py', 'util.py'), ('.../django/newforms/widgets.py', 'widgets.py')] # SplitDateTimeField ########################################################## diff --git a/tests/regressiontests/model_regress/models.py b/tests/regressiontests/model_regress/models.py index 02e73a5aa9..2252531564 100644 --- a/tests/regressiontests/model_regress/models.py +++ b/tests/regressiontests/model_regress/models.py @@ -26,6 +26,9 @@ class Movie(models.Model): movie_id = models.AutoField(primary_key=True) name = models.CharField(max_length=60) +class Party(models.Model): + when = models.DateField() + __test__ = {'API_TESTS': """ (NOTE: Part of the regression test here is merely parsing the model declaration. The verbose_name, in particular, did not always work.) @@ -51,5 +54,19 @@ u'' >>> len(a4.article_text) 5000 +# #659 regression test +>>> import datetime +>>> p = Party.objects.create(when = datetime.datetime(1999, 12, 31)) +>>> p = Party.objects.create(when = datetime.datetime(1998, 12, 31)) +>>> p = Party.objects.create(when = datetime.datetime(1999, 1, 1)) +>>> [p.when for p in Party.objects.filter(when__month = 2)] +[] +>>> [p.when for p in Party.objects.filter(when__month = 1)] +[datetime.date(1999, 1, 1)] +>>> [p.when for p in Party.objects.filter(when__month = 12)] +[datetime.date(1999, 12, 31), datetime.date(1998, 12, 31)] +>>> [p.when for p in Party.objects.filter(when__year = 1998)] +[datetime.date(1998, 12, 31)] + """ }