From 508848805701ae11273dc814a7012ad608318ef1 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Fri, 16 Mar 2007 16:09:29 +0000 Subject: [PATCH] newforms-admin: Merged to [4749] git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@4750 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- AUTHORS | 7 +- django/bin/compile-messages.py | 17 +- django/bin/make-messages.py | 4 +- django/conf/global_settings.py | 8 + django/conf/locale/es/LC_MESSAGES/django.mo | Bin 40242 -> 40248 bytes django/conf/locale/es/LC_MESSAGES/django.po | 42 +- django/conf/locale/fi/LC_MESSAGES/django.mo | Bin 33602 -> 34867 bytes django/conf/locale/fi/LC_MESSAGES/django.po | 59 +- django/conf/locale/fr/LC_MESSAGES/django.mo | Bin 32919 -> 39707 bytes django/conf/locale/fr/LC_MESSAGES/django.po | 2184 +++++++++------ django/conf/locale/sv/LC_MESSAGES/django.mo | Bin 32592 -> 39640 bytes django/conf/locale/sv/LC_MESSAGES/django.po | 2334 ++++++++++------- django/conf/locale/sv/LC_MESSAGES/djangojs.mo | Bin 1575 -> 1680 bytes django/conf/locale/sv/LC_MESSAGES/djangojs.po | 81 +- django/conf/locale/te/LC_MESSAGES/django.mo | Bin 0 -> 35017 bytes django/conf/locale/te/LC_MESSAGES/django.po | 2106 +++++++++++++++ django/conf/locale/te/LC_MESSAGES/djangojs.mo | Bin 0 -> 2206 bytes django/conf/locale/te/LC_MESSAGES/djangojs.po | 110 + django/conf/project_template/settings.py | 3 +- django/contrib/contenttypes/management.py | 1 + django/contrib/contenttypes/models.py | 10 + .../contrib/humanize/templatetags/humanize.py | 17 +- django/contrib/localflavor/usa/us_states.py | 3 +- django/contrib/sessions/middleware.py | 6 +- django/core/management.py | 327 ++- django/core/serializers/__init__.py | 12 + django/core/serializers/base.py | 8 +- django/core/serializers/python.py | 9 +- django/core/serializers/pyyaml.py | 36 + django/core/serializers/xml_serializer.py | 40 +- django/core/validators.py | 5 +- django/db/backends/ado_mssql/base.py | 18 +- django/db/backends/dummy/base.py | 2 + django/db/backends/mysql/base.py | 95 +- django/db/backends/mysql/client.py | 29 +- django/db/backends/oracle/base.py | 19 +- django/db/backends/postgresql/base.py | 67 +- .../db/backends/postgresql_psycopg2/base.py | 63 +- django/db/backends/sqlite3/base.py | 23 +- django/db/models/fields/__init__.py | 9 +- django/db/models/related.py | 4 +- django/oldforms/__init__.py | 7 +- django/template/__init__.py | 9 +- django/template/defaultfilters.py | 17 +- django/template/defaulttags.py | 53 +- django/test/__init__.py | 6 + django/test/testcases.py | 20 + django/utils/datastructures.py | 7 + django/utils/dateformat.py | 13 +- django/views/i18n.py | 6 +- docs/contributing.txt | 41 +- docs/databases.txt | 162 ++ docs/db-api.txt | 6 +- docs/distributions.txt | 2 +- docs/django-admin.txt | 153 +- docs/fastcgi.txt | 11 + docs/forms.txt | 21 + docs/i18n.txt | 11 + docs/model-api.txt | 4 + docs/settings.txt | 31 +- docs/testing.txt | 51 +- extras/django_bash_completion | 2 +- tests/modeltests/fixtures/__init__.py | 2 + .../fixtures/fixtures/fixture1.json | 18 + .../fixtures/fixtures/fixture2.json | 18 + .../modeltests/fixtures/fixtures/fixture2.xml | 11 + .../modeltests/fixtures/fixtures/fixture3.xml | 11 + .../fixtures/fixtures/initial_data.json | 10 + tests/modeltests/fixtures/models.py | 88 + .../test_client/fixtures/testdata.json | 20 + tests/modeltests/test_client/management.py | 10 - tests/modeltests/test_client/models.py | 7 +- tests/regressiontests/datastructures/tests.py | 33 +- tests/regressiontests/forms/tests.py | 1 + .../many_to_one_regress/models.py | 29 +- .../serializers_regress/__init__.py | 0 .../serializers_regress/models.py | 170 ++ .../serializers_regress/tests.py | 243 ++ tests/regressiontests/templates/tests.py | 14 + tests/urls.py | 2 +- 80 files changed, 6973 insertions(+), 2105 deletions(-) create mode 100644 django/conf/locale/te/LC_MESSAGES/django.mo create mode 100644 django/conf/locale/te/LC_MESSAGES/django.po create mode 100644 django/conf/locale/te/LC_MESSAGES/djangojs.mo create mode 100644 django/conf/locale/te/LC_MESSAGES/djangojs.po create mode 100644 django/core/serializers/pyyaml.py create mode 100644 docs/databases.txt create mode 100644 tests/modeltests/fixtures/__init__.py create mode 100644 tests/modeltests/fixtures/fixtures/fixture1.json create mode 100644 tests/modeltests/fixtures/fixtures/fixture2.json create mode 100644 tests/modeltests/fixtures/fixtures/fixture2.xml create mode 100644 tests/modeltests/fixtures/fixtures/fixture3.xml create mode 100644 tests/modeltests/fixtures/fixtures/initial_data.json create mode 100644 tests/modeltests/fixtures/models.py create mode 100644 tests/modeltests/test_client/fixtures/testdata.json delete mode 100644 tests/modeltests/test_client/management.py create mode 100644 tests/regressiontests/serializers_regress/__init__.py create mode 100644 tests/regressiontests/serializers_regress/models.py create mode 100644 tests/regressiontests/serializers_regress/tests.py diff --git a/AUTHORS b/AUTHORS index 521a210900..760ffdd21e 100644 --- a/AUTHORS +++ b/AUTHORS @@ -42,7 +42,6 @@ people who have submitted patches, reported bugs, added translations, helped answer newbie questions, and generally made Django that much better: adurdin@gmail.com - akaihola Andreas andy@jadedplanet.net ant9000@netwise.it @@ -86,10 +85,12 @@ answer newbie questions, and generally made Django that much better: Marc Fargas favo@exoweb.net Eric Floehr + Jorge Gajon gandalf@owca.info Baishampayan Ghose martin.glueck@gmail.com Simon Greenhill + Owen Griffiths Espen Grindhaug Brian Harring Brant Harris @@ -107,10 +108,12 @@ answer newbie questions, and generally made Django that much better: Michael Josephson jpellerin@gmail.com junzhang.jn@gmail.com + Antti Kaihola Ben Dean Kawamura Garth Kidd kilian Sune Kirkeby + Bastian Kleineidam Cameron Knight (ckknight) Meir Kriheli Bruce Kroeze @@ -136,6 +139,7 @@ answer newbie questions, and generally made Django that much better: Jason McBrayer mccutchen@gmail.com michael.mcewan@gmail.com + mikko@sorl.net mitakummaa@gmail.com mmarshall Eric Moritz @@ -147,6 +151,7 @@ answer newbie questions, and generally made Django that much better: Neal Norwitz oggie rob Jay Parlar + pavithran s pgross@thoughtworks.com phaedo phil@produxion.net diff --git a/django/bin/compile-messages.py b/django/bin/compile-messages.py index 0137ec8dd4..f2193d3122 100755 --- a/django/bin/compile-messages.py +++ b/django/bin/compile-messages.py @@ -1,9 +1,10 @@ #!/usr/bin/env python +import optparse import os import sys -def compile_messages(): +def compile_messages(locale=None): basedir = None if os.path.isdir(os.path.join('conf', 'locale')): @@ -14,6 +15,9 @@ def compile_messages(): print "This script should be run from the Django SVN tree or your project or app tree." sys.exit(1) + if locale is not None: + basedir = os.path.join(basedir, locale, 'LC_MESSAGES') + for dirpath, dirnames, filenames in os.walk(basedir): for f in filenames: if f.endswith('.po'): @@ -32,5 +36,14 @@ def compile_messages(): cmd = 'msgfmt -o "$djangocompilemo" "$djangocompilepo"' os.system(cmd) +def main(): + parser = optparse.OptionParser() + parser.add_option('-l', '--locale', dest='locale', + help="The locale to process. Default is to process all.") + options, args = parser.parse_args() + if len(args): + parser.error("This program takes no arguments") + compile_messages(options.locale) + if __name__ == "__main__": - compile_messages() + main() diff --git a/django/bin/make-messages.py b/django/bin/make-messages.py index 557cb5eeec..34fb68dcfe 100755 --- a/django/bin/make-messages.py +++ b/django/bin/make-messages.py @@ -81,7 +81,7 @@ def make_messages(): src = pythonize_re.sub('\n#', src) open(os.path.join(dirpath, '%s.py' % file), "wb").write(src) thefile = '%s.py' % file - cmd = 'xgettext %s -d %s -L Perl --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy -o - "%s"' % ( + cmd = 'xgettext %s -d %s -L Perl --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy --from-code UTF-8 -o - "%s"' % ( os.path.exists(potfile) and '--omit-header' or '', domain, os.path.join(dirpath, thefile)) (stdin, stdout, stderr) = os.popen3(cmd, 'b') msgs = stdout.read() @@ -103,7 +103,7 @@ def make_messages(): open(os.path.join(dirpath, '%s.py' % file), "wb").write(templatize(src)) thefile = '%s.py' % file if verbose: sys.stdout.write('processing file %s in %s\n' % (file, dirpath)) - cmd = 'xgettext %s -d %s -L Python --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy -o - "%s"' % ( + cmd = 'xgettext %s -d %s -L Python --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy --from-code UTF-8 -o - "%s"' % ( os.path.exists(potfile) and '--omit-header' or '', domain, os.path.join(dirpath, thefile)) (stdin, stdout, stderr) = os.popen3(cmd, 'b') msgs = stdout.read() diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index 148afe0e38..02a882fd99 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -69,6 +69,7 @@ LANGUAGES = ( ('sr', gettext_noop('Serbian')), ('sv', gettext_noop('Swedish')), ('ta', gettext_noop('Tamil')), + ('te', gettext_noop('Telugu')), ('tr', gettext_noop('Turkish')), ('uk', gettext_noop('Ukrainian')), ('zh-cn', gettext_noop('Simplified Chinese')), @@ -319,3 +320,10 @@ TEST_RUNNER = 'django.test.simple.run_tests' # The name of the database to use for testing purposes. # If None, a name of 'test_' + DATABASE_NAME will be assumed TEST_DATABASE_NAME = None + +############ +# FIXTURES # +############ + +# The list of directories to search for fixtures +FIXTURE_DIRS = () diff --git a/django/conf/locale/es/LC_MESSAGES/django.mo b/django/conf/locale/es/LC_MESSAGES/django.mo index 8edce68c5373f5828bc09e0d572cf0823602b359..e9105aa64c1b2a4e0173dba97d493feff276f35d 100644 GIT binary patch delta 4070 zcmY+_32;@_9mnyL5VMdCk^nJ4cwvbUDs&7HL&It?tq2x_3qvt^NnV!nHr^wkG5SOT z1rjLw*peWn4pWR}5mTukbc119I@m@Ui$ z)B;Jh&JOc2iTFFHapg8%h8pj|5g0-xycv~1Cn|xi2o3G@UDQs`q91!vB`>WrCK)SH zJM^L^YDPWZf?B8x@4{o4fG2Hy#>VGt{65~z^NTo8!9Lp}Lu-nc`$Ie%U3dr=vA%haMlKzrdAbBk z@Bw@obxY5oCi)naXg23F6N^wg3S$xOzK{quv7CbEX1XFFK)q6tZ&|> zq0i|e>cxy8N#JbMLd~eso$J40FTtMB8zaUeX%b1Ld zL)2e8T2A9xY(h^3p*2~STn6T);#M(Oyd2i_!t)3{x;OSQB1*3)E#;~O#Mq~ z9Hk=zZ{u^Aw8~jo^PF!nt?@l}O5T4u8g}zzWnQ+kmRrA=Hk4g{s7FQHh`1qqe}d1)FnEHgRuv*@RE&h;4tETROK?7oL{`L zIDvQus=pHT6$DZ9ZAB7_m>o2<(0jW$zJQlezXuh~&gZla z_YohpKK8s5-^8i(Z|9|Hcm}_TcW}SH{{sHsPRAdx0c&1#GJFrUvtBI2Pca({*E*$q z1eNGA)KU3SrEkS5++m;p8@1zPE|QKY0~L>utZ8y-Xy+4fB+fwH`X^8m)}s~<;e2ex zx!8jxn7Pim&EG{`svzp9R-+bLi!R)VO1KL(-${(c317r-<47^9^S-u9MF}jehnAk)R*m9W4s1p9JZp4Y8wv1oj4RbP~#4wo_Avb9!HJ4f=PG{ld%sQ z@Jn>*`>%h++1Vyc;K6MissX5-4~gfaTuJ;8YQY1j1&^W< zJ7xP%qY^uhdHVi)XvETS6Nlh!9E%A%oV!tgDrp(c$65^FL3|WP?Q}jjFODN#gG;az zb+n)3eVDw&+JCz-Y5iKyDMix#)4Va0VV6ly>t!q#dwxZtKi%R@8)E#&O_1;m` z5uLX21)N0uF)HzNJ{`^DYPa8iAsw2a7`3B0)&-bC{Dh6GQKj?aaC{z>$ad>)>mF1^ z_MzTCh)U=BK8f0Z8#PZo zYGJSSS?dPWd{NZ6*CI4@JAZ;IRx1qmYiZs2AQwRpKP-vYbI(s$SFrS8e>cjbmSR-b+SRC<8Sv54Ev^ z?yk{`=1yAZ4mAW^WdVPa+v{m^mDD*c-$3`ARjxXpyTLo9I^gThsrc)lm|*vRs@%zO zbNR2k!auVhrZ)QOZtrBCd;F^g-tjh6g*@he9bwl%PuSFj8iN5-7oFB#n;LBNuL`(U zxI;d-2}TdJKN;hTe$}2EyInON b*Z*~dzusft3>$yIM>1c3)ENC@Ptkt?Hkyt< delta 4093 zcmYk-dr*|u8OQO%T@+C8hN5OgG|?1rf;Sw*PzBOj3?^EmiOK?tps*{u3y~OEV+4(f zSHuD_nIxoMYEx;5m)hz$tsT=6OKKYbu&s`lbS4q4Q)XzIY14jxdCyGajDF5@-t(UG zoadZ(J##kv{j=d+cM?LI!;C3gZOjS0xyG1L#+ZF>V@mKSmSQabq+m4;!X226`!F4Q z@FDycPR221#-!qW)O@8_iw!sh@8VcYDmNh$O(VVBm>8Ua!!QR2V-Y6cGZ=?!F%pBQ zaSf;icj8d&!f|*3qwufR+xQ~!=NOL_9%B+Q=m{B9NTZpKNc;mTp-*r)UPC2zAC9US7hU5sPSuXG*+V$-iAt`6_r3|h=z8061CF{=*3=C$#d5lGXz(n zc36R$s2=rvJ8Gd$jKVIA!BaLqZ{v$L{s_nL{0eHGP@ir52bD-drBi`1sEW8yJDiM4 zFcSx1E-JA??82vU2}V{K^IiNQ`mi07F?O9X6EPK4frU7p_03Z>RMHK0z%Gm?K7qPa zr_hC0aT5L$b-7a3e=~u}MU8(BXJeW5b$pEY6Kiy}F*U^5=)xnonDxzvG$zn7nx{)~ z7S6#}QMdFWYN8vcM3Xq5d6jXxn%m}@u$ z7x}5bcC?&E0|rqO-nR}|zeY_I9dL}dj{yYI`m6*9#y(eaTtDvTX6tg*ii2*(1F_NJD7_<#XP)=N+kVxC$TJCL_7yG za2u-P-KcRNhiIrISFN`(ocIB1U_UO!VH=$acu<#Y3#wvAP&+=0s>H8RiCwbsAMNw2 zm_Yw^Ov8JqyB12~;OEnrk1A~lAI26`iGPVY`-?ajdvF9^weejXNj!k6T-*!JFWxwu zOgsbCzY_HotV7MW14$@k_R!EmZ=xnXg4)@y@EPpIHTVb@V+roSM!bglJy`Lg^EqwC zw}_8hf3Vq!?_nnWyLo8_p2z9fkMHXHPvh?aI(~;$xO$6|;fJW5^e9Z{XN z5jPTV$Hi!xjQI&XiMotmq0TzI*@<1K#2&#g%&_tFX6mm8v*?(OIq1S5@>5`1QNLKR z+l`rqFW?jSV|*0vTgUEjzK#OaS-Wux?n8|`gUj#^>g?yfLNd7i73#0EJ3vPP{v6%- zB|eNRcRK$!Y(;&?Z{tL~hwV7@RVO}%V~KmP1pkIvSooTg@FqM%d=Xu^d6#npZ-!{- z#nYILS5Rjfx7+zXzlVc}>#-U`xB&a`S)9Jd8TT40;a}hcyor<0>~;S0N<&p-Ii_JF z=3=OmhIW1n7va=>_N*~l12GbtP)D^BBXBP!;sMmS!>H%);WX?W(bNq1cSIc+mC_;u|g@ejK&n+o%PPqY^u9 z`_G{gyMz<<{rAuar{f+D!v~m(VXe;HNJEu05A(4EeRvq3#8C&G&#eL{5!d2UY(*XI z7x)-P{m4mt4ki#kf!}=p%V}umt1%2Ka3ofuGHtYOMOCI5m1r9d#$%|Ret_Ef1=P6T zV-o(w#(&4*#9?htWk+I23rwIf0#i`~W}_xpWaCxVTGWJ1sQ21Xi627Ufp<~w9Y-C} zIU8Tbsl+!>iO2HkXr8g{_WMt#Llb17b~M+Tk8#AsHeQ7)T_ujf=TV95w(hqcL{+2% z_5NX0Lfxne{RXw+%k7-Mc6^HtO*CNr3bnJZQ42BNG>*oPP%qxG_FKbWclr~pE^DSW*II+!P0PZ)5c%e_}{4aqTX;S5r-O=g4$SG z_p$Md^Cso3b^8nITsf52nksKy&}Rvl8eh4m+BetaS6A`GT~^iab(MQu>h`, 2005. # Ricardo Javier Cardenes Medina , 2005. # AgarFu , 2007. -# Mario Gonzalez +# Mario Gonzalez , 2007 msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-02-24 17:08+0000\n" "PO-Revision-Date: 2007-02-24 18:02-0600\n" -"Last-Translator: AgarFu \n" +"Last-Translator: Mario Gonzalez \n" "Language-Team: Castellano \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" @@ -435,7 +435,7 @@ msgstr "Introduzca una fecha v #: db/models/fields/__init__.py:521 core/validators.py:156 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Introduzca una fecha/hora vlida en formato YYYY-MM-DD HH:MM." +msgstr "Introduzca una fecha/hora vlida en formato AAAA-MM-DD HH:MM." #: db/models/fields/__init__.py:625 msgid "Enter a valid filename." @@ -934,19 +934,19 @@ msgstr "nombre en c #: contrib/auth/models.py:42 msgid "permission" -msgstr "Permiso" +msgstr "permiso" #: contrib/auth/models.py:43 contrib/auth/models.py:58 msgid "permissions" -msgstr "Permisos" +msgstr "permisos" #: contrib/auth/models.py:60 msgid "group" -msgstr "Grupo" +msgstr "grupo" #: contrib/auth/models.py:61 contrib/auth/models.py:100 msgid "groups" -msgstr "Grupos" +msgstr "grupos" #: contrib/auth/models.py:90 msgid "username" @@ -1034,15 +1034,15 @@ msgstr "" #: contrib/auth/models.py:102 msgid "user permissions" -msgstr "Permisos" +msgstr "permisos" #: contrib/auth/models.py:105 msgid "user" -msgstr "Usuario" +msgstr "usuario" #: contrib/auth/models.py:106 msgid "users" -msgstr "Usuarios" +msgstr "usuarios" #: contrib/auth/models.py:111 msgid "Personal info" @@ -1062,7 +1062,7 @@ msgstr "Grupos" #: contrib/auth/models.py:258 msgid "message" -msgstr "Mensaje" +msgstr "mensaje" #: contrib/auth/forms.py:17 contrib/auth/forms.py:138 msgid "The two password fields didn't match." @@ -1220,11 +1220,11 @@ msgstr "aprobado por el staff" #: contrib/comments/models.py:176 msgid "free comment" -msgstr "Comentario libre" +msgstr "comentario libre" #: contrib/comments/models.py:177 msgid "free comments" -msgstr "Comentarios libres" +msgstr "comentarios libres" #: contrib/comments/models.py:233 msgid "score" @@ -1236,16 +1236,16 @@ msgstr "fecha de la puntuaci #: contrib/comments/models.py:237 msgid "karma score" -msgstr "Punto karma" +msgstr "punto karma" #: contrib/comments/models.py:238 msgid "karma scores" -msgstr "Puntos karma" +msgstr "puntos karma" #: contrib/comments/models.py:242 #, python-format msgid "%(score)d rating by %(user)s" -msgstr "Puntuado %(score)d por %(user)s" +msgstr "puntuado %(score)d por %(user)s" #: contrib/comments/models.py:258 #, python-format @@ -1264,11 +1264,11 @@ msgstr "fecha de la marca" #: contrib/comments/models.py:268 msgid "user flag" -msgstr "Marca de usuario" +msgstr "marca de usuario" #: contrib/comments/models.py:269 msgid "user flags" -msgstr "Marcas de usuario" +msgstr "marcas de usuario" #: contrib/comments/models.py:273 #, python-format @@ -1281,11 +1281,11 @@ msgstr "fecha de eliminaci #: contrib/comments/models.py:280 msgid "moderator deletion" -msgstr "Eliminacin de moderador" +msgstr "eliminacin de moderador" #: contrib/comments/models.py:281 msgid "moderator deletions" -msgstr "Eliminaciones de moderador" +msgstr "eliminaciones de moderador" #: contrib/comments/models.py:285 #, python-format @@ -2095,7 +2095,7 @@ msgstr "etiqueta:" #: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79 #: contrib/admin/views/doc.py:81 msgid "filter:" -msgstr "Filtro:" +msgstr "filtro:" #: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137 #: contrib/admin/views/doc.py:139 diff --git a/django/conf/locale/fi/LC_MESSAGES/django.mo b/django/conf/locale/fi/LC_MESSAGES/django.mo index f6470abdd00179e2510cbee608644af51f73a06a..024d2ad98b1e5ede4edd8d27d78283f78c0c5db9 100644 GIT binary patch delta 10183 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 XKXRLU)bjylwMr1lj}5)_nM3{ug^vHM delta 9512 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 diff --git a/django/conf/locale/fr/LC_MESSAGES/django.po b/django/conf/locale/fr/LC_MESSAGES/django.po index 104e9a2aa1..62f3b46c37 100644 --- a/django/conf/locale/fr/LC_MESSAGES/django.po +++ b/django/conf/locale/fr/LC_MESSAGES/django.po @@ -7,14 +7,775 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-05-16 10:11+0200\n" +"POT-Creation-Date: 2007-03-11 11:46+0100\n" "PO-Revision-Date: 2006-05-08 15:12+0200\n" -"Last-Translator: Gaël Chardon \n" +"Last-Translator: Baptiste Goupil \n" "Language-Team: français \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +#: oldforms/__init__.py:357 db/models/fields/__init__.py:116 +#: db/models/fields/__init__.py:273 db/models/fields/__init__.py:609 +#: db/models/fields/__init__.py:620 newforms/models.py:177 +#: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450 +#: newforms/fields.py:461 +msgid "This field is required." +msgstr "Ce champ est obligatoire." + +#: oldforms/__init__.py:392 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "Assurez-vous que votre texte fait moins de %s caractère." +msgstr[1] "Assurez-vous que votre texte fait moins de %s caractères." + +#: oldforms/__init__.py:397 +msgid "Line breaks are not allowed here." +msgstr "Les retours à la ligne ne sont pas autorisés ici." + +#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "Sélectionnez un choix valide ; '%(data)s' n'est pas dans %(choices)s." + +#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:150 +msgid "Unknown" +msgstr "Inconnu" + +#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:143 +msgid "Yes" +msgstr "Oui" + +#: oldforms/__init__.py:577 newforms/widgets.py:170 +#: contrib/admin/filterspecs.py:143 +msgid "No" +msgstr "Non" + +#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" + +#: oldforms/__init__.py:674 +msgid "The submitted file is empty." +msgstr "Le fichier soumis est vide." + +#: oldforms/__init__.py:730 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Entrez un nombre entier entre -32 768 et 32 767." + +#: oldforms/__init__.py:740 +msgid "Enter a positive number." +msgstr "Entrez un nombre entier positif." + +#: oldforms/__init__.py:750 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Entrez un nombre entier entre 0 et 32 767." + +#: db/models/manipulators.py:307 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "" + +#: db/models/manipulators.py:308 contrib/admin/views/main.py:335 +#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339 +msgid "and" +msgstr "et" + +#: db/models/fields/__init__.py:42 +#, python-format +msgid "%(optname)s with this %(fieldname)s already exists." +msgstr "%(optname)s avec le champ %(fieldname)s existe déjà." + +#: db/models/fields/__init__.py:366 +msgid "This value must be an integer." +msgstr "Cette valeur doit être un entier." + +#: db/models/fields/__init__.py:401 +msgid "This value must be either True or False." +msgstr "Cette valeur doit être soit Vraie soit Fausse." + +#: db/models/fields/__init__.py:422 +msgid "This field cannot be null." +msgstr "Ce champ ne peut pas être vide." + +#: db/models/fields/__init__.py:456 core/validators.py:148 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Entrez une date valide au format AAAA-MM-JJ." + +#: db/models/fields/__init__.py:525 core/validators.py:157 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Entrez une date et une heure valide au format AAAA-MM-JJ HH:MM." + +#: db/models/fields/__init__.py:629 +msgid "Enter a valid filename." +msgstr "Entrez un nom de fichier valide." + +#: db/models/fields/related.py:53 +#, python-format +msgid "Please enter a valid %s." +msgstr "Entrez un %s valide." + +#: db/models/fields/related.py:642 +msgid "Separate multiple IDs with commas." +msgstr "Séparez les ID par des virgules." + +#: db/models/fields/related.py:644 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Maintenez \"Contrôle (ctrl)\", ou \"Commande (touche pomme)\" sur un Mac, " +"pour en sélectionner plusieurs." + +#: db/models/fields/related.py:691 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "Entrez un ID %(self)s valide. La valeur %(value)r est invalide." +msgstr[1] "" +"Entrez des ID %(self)s valides. Les valeurs %(value)r sont invalides." + +#: conf/global_settings.py:39 +msgid "Arabic" +msgstr "Arabe" + +#: conf/global_settings.py:40 +msgid "Bengali" +msgstr "Indien" + +#: conf/global_settings.py:41 +msgid "Catalan" +msgstr "Catalan" + +#: conf/global_settings.py:42 +msgid "Czech" +msgstr "Tchèque" + +#: conf/global_settings.py:43 +msgid "Welsh" +msgstr "Gallois" + +#: conf/global_settings.py:44 +msgid "Danish" +msgstr "Dannois" + +#: conf/global_settings.py:45 +msgid "German" +msgstr "Allemand" + +#: conf/global_settings.py:46 +msgid "Greek" +msgstr "Grec" + +#: conf/global_settings.py:47 +msgid "English" +msgstr "Anglais" + +#: conf/global_settings.py:48 +msgid "Spanish" +msgstr "Espagnol" + +#: conf/global_settings.py:49 +msgid "Argentinean Spanish" +msgstr "Espagnol Argentin" + +#: conf/global_settings.py:50 +msgid "Finnish" +msgstr "Dannois" + +#: conf/global_settings.py:51 +msgid "French" +msgstr "Français" + +#: conf/global_settings.py:52 +msgid "Galician" +msgstr "Galicien" + +#: conf/global_settings.py:53 +msgid "Hungarian" +msgstr "Hongrois" + +#: conf/global_settings.py:54 +msgid "Hebrew" +msgstr "Israélien" + +#: conf/global_settings.py:55 +msgid "Icelandic" +msgstr "Islandais" + +#: conf/global_settings.py:56 +msgid "Italian" +msgstr "Italien" + +#: conf/global_settings.py:57 +msgid "Japanese" +msgstr "Japonais" + +#: conf/global_settings.py:58 +msgid "Kannada" +msgstr "Kannada" + +#: conf/global_settings.py:59 +msgid "Latvian" +msgstr "Letton" + +#: conf/global_settings.py:60 +msgid "Macedonian" +msgstr "Macédonien" + +#: conf/global_settings.py:61 +msgid "Dutch" +msgstr "Néerlandais" + +#: conf/global_settings.py:62 +msgid "Norwegian" +msgstr "Norvégien" + +#: conf/global_settings.py:63 +msgid "Polish" +msgstr "Polonais" + +#: conf/global_settings.py:64 +msgid "Brazilian" +msgstr "Brésilien" + +#: conf/global_settings.py:65 +msgid "Romanian" +msgstr "Roumain" + +#: conf/global_settings.py:66 +msgid "Russian" +msgstr "Russe" + +#: conf/global_settings.py:67 +msgid "Slovak" +msgstr "Slovaque" + +#: conf/global_settings.py:68 +msgid "Slovenian" +msgstr "Slovaque" + +#: conf/global_settings.py:69 +msgid "Serbian" +msgstr "Serbe" + +#: conf/global_settings.py:70 +msgid "Swedish" +msgstr "Suédois" + +#: conf/global_settings.py:71 +msgid "Tamil" +msgstr "Tamoul" + +#: conf/global_settings.py:72 +msgid "Telugu" +msgstr "Télougou" + +#: conf/global_settings.py:73 +msgid "Turkish" +msgstr "Turc" + +#: conf/global_settings.py:74 +msgid "Ukrainian" +msgstr "Ukrainien" + +#: conf/global_settings.py:75 +msgid "Simplified Chinese" +msgstr "Chinois simplifié" + +#: conf/global_settings.py:76 +msgid "Traditional Chinese" +msgstr "Chinois traditionnel" + +#: core/validators.py:64 +msgid "This value must contain only letters, numbers and underscores." +msgstr "" +"Ce champ ne doit contenir que des lettres, des nombres et des tirets bas " +"('_')." + +#: core/validators.py:68 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"Ce champ ne doit contenir que des lettres, des nombres, des tirets bas ('_') " +"et des '/'." + +#: core/validators.py:72 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "" +"Ce champ ne doit contenir que des lettres, des nombres, des tirets bas ('_') " +"et des '-'." + +#: core/validators.py:76 +msgid "Uppercase letters are not allowed here." +msgstr "Les lettres majuscules ne sont pas autorisées ici." + +#: core/validators.py:80 +msgid "Lowercase letters are not allowed here." +msgstr "Les lettres minuscules ne sont pas autorisées ici." + +#: core/validators.py:87 +msgid "Enter only digits separated by commas." +msgstr "Saisissez uniquement des chiffres séparés par des virgules." + +#: core/validators.py:99 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Entrez des adresses de courriel valides séparées par des virgules." + +#: core/validators.py:103 +msgid "Please enter a valid IP address." +msgstr "Entrez une adresse IP valide." + +#: core/validators.py:107 +msgid "Empty values are not allowed here." +msgstr "Vous ne pouvez pas laisser ce champ vide." + +#: core/validators.py:111 +msgid "Non-numeric characters aren't allowed here." +msgstr "Les caractères non numériques ne sont pas autorisés ici." + +#: core/validators.py:115 +msgid "This value can't be comprised solely of digits." +msgstr "Cette valeur ne peut pas être composé uniquement de chiffres." + +#: core/validators.py:120 newforms/fields.py:126 +msgid "Enter a whole number." +msgstr "Entrez un nombre entier." + +#: core/validators.py:124 +msgid "Only alphabetical characters are allowed here." +msgstr "Seules les lettres de l'alphabet sont autorisées ici." + +#: core/validators.py:139 +msgid "Year must be 1900 or later." +msgstr "L'année doit être supérieure à 1900." + +#: core/validators.py:143 +#, fuzzy, python-format +msgid "Invalid date: %s" +msgstr "URL invalide : %s" + +#: core/validators.py:153 +msgid "Enter a valid time in HH:MM format." +msgstr "Entrez une heure valide au format HH:MM." + +#: core/validators.py:162 newforms/fields.py:269 +msgid "Enter a valid e-mail address." +msgstr "Entrez une adresse de courriel valide." + +#: core/validators.py:178 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Envoyez une image valide. Le fichier que vous avez transferé n'est pas une " +"image ou bien est une image corrompue." + +#: core/validators.py:185 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "L'URL %s ne pointe pas vers une image valide." + +#: core/validators.py:189 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "" +"Les numéros de téléphone doivent être au format XXX-XXX-XXXX. \"%s\" est " +"incorrect." + +#: core/validators.py:197 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "L'URL %s ne pointe pas vers une vidéo QuickTime valide." + +#: core/validators.py:201 +msgid "A valid URL is required." +msgstr "Une URL valide est requise." + +#: core/validators.py:215 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"Du HTML valide est requis. Les erreurs sont les suivantes :\n" +"%s" + +#: core/validators.py:222 +#, python-format +msgid "Badly formed XML: %s" +msgstr "XML mal formé : %s" + +#: core/validators.py:239 +#, python-format +msgid "Invalid URL: %s" +msgstr "URL invalide : %s" + +#: core/validators.py:244 core/validators.py:246 +#, python-format +msgid "The URL %s is a broken link." +msgstr "L'URL %s est un lien cassé." + +#: core/validators.py:252 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Entrez une abréviation d'état américain valide." + +#: core/validators.py:266 +#, python-format +msgid "Watch your mouth! The word %s is not allowed here." +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "Attention à votre langage ! Le mot %s n'est pas autorisé ici." +msgstr[1] "Attention à votre langage ! Les mots %s ne sont pas autorisés ici." + +#: core/validators.py:273 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Ce champ doit correspondre au champ '%s'." + +#: core/validators.py:292 +msgid "Please enter something for at least one field." +msgstr "Saisissez au moins une valeur dans un des champs s'il vous plaît." + +#: core/validators.py:301 core/validators.py:312 +msgid "Please enter both fields or leave them both empty." +msgstr "" +"Renseignez chacun des champs ou laissez les deux vides s'il vous plaît." + +#: core/validators.py:320 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Ce champ doit être renseigné si %(field)s vaut %(value)s" + +#: core/validators.py:333 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Ce champ doit être renseigné si %(field)s ne vaut pas %(value)s" + +#: core/validators.py:352 +msgid "Duplicate values are not allowed." +msgstr "Des valeurs identiques ne sont pas autorisées." + +#: core/validators.py:367 +#, fuzzy, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Cette valeur doit être entre %(lower)s et %(upper)s." + +#: core/validators.py:369 +#, fuzzy, python-format +msgid "This value must be at least %s." +msgstr "Cette valeur doit être au moins %s." + +#: core/validators.py:371 +#, fuzzy, python-format +msgid "This value must be no more than %s." +msgstr "Cette valeur ne doit pas dépasser %s." + +#: core/validators.py:407 +#, python-format +msgid "This value must be a power of %s." +msgstr "Cette valeur doit être une puissance de %s." + +#: core/validators.py:418 +msgid "Please enter a valid decimal number." +msgstr "Saisissez un nombre décimal valide s'il vous plaît." + +#: core/validators.py:422 +#, 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] "" +"Saisissez un nombre décimal valide avec au plus %s chiffre s'il vous plaît." +msgstr[1] "" +"Saisissez un nombre décimal valide avec au plus %s chiffres s'il vous plaît." + +#: core/validators.py:425 +#, python-format +msgid "" +"Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "" +"Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "Veuillez saisir un nombre décimal valide avec au plus %s chiffre." +msgstr[1] "Veuillez saisir un nombre décimal valide avec au plus %s chiffres." + +#: core/validators.py:428 +#, 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] "Veuillez saisir un nombre décimal valide avec au plus %s décimale." +msgstr[1] "Veuillez saisir un nombre décimal valide avec au plus %s décimales." + +#: core/validators.py:438 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "" +"Vérifiez que le fichier transféré fait au moins une taille de %s octets." + +#: core/validators.py:439 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "" +"Vérifiez que le fichier transféré fait au plus une taille de %s octets." + +#: core/validators.py:456 +msgid "The format for this field is wrong." +msgstr "Le format de ce champ est mauvais." + +#: core/validators.py:471 +msgid "This field is invalid." +msgstr "Ce champ est invalide." + +#: core/validators.py:507 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Impossible de récupérer quoi que ce soit depuis %s." + +#: core/validators.py:510 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" +"L'entête Content-Type '%(contenttype)s', renvoyée par l'url %(url)s n'est " +"pas valide." + +#: core/validators.py:543 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Veuillez fermer le tag %(tag)s de la ligne %(line)s. (La ligne débutant par " +"\"%(start)s\".)" + +#: core/validators.py:547 +#, python-format +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Du texte commençant à la ligne %(line)s n'est pas autorisé dans ce contexte. " +"(Ligne débutant par \"%(start)s\".)" + +#: core/validators.py:552 +#, python-format +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"%(attr)s\" ligne %(line)s n'est pas un attribut valide. (Ligne débutant " +"par \"%(start)s\".)" + +#: core/validators.py:557 +#, python-format +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"<%(tag)s>\" ligne %(line)s n'est pas un tag valide. (Ligne débutant par \"%" +"(start)s\".)" + +#: core/validators.py:561 +#, python-format +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Un tag, ou un ou plusieurs attributs, de la ligne %(line)s est manquant. " +"(Ligne débutant par \"%(start)s\".)" + +#: core/validators.py:566 +#, python-format +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"La valeur de l'attribut \"%(attr)s\" de la ligne %(line)s n'est pas valide. " +"(Ligne débutant par \"%(start)s\".)" + +#: views/generic/create_update.py:43 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "L'objet %(verbose_name)s a été créé avec succès." + +#: views/generic/create_update.py:117 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "L'objet %(verbose_name)s a été mis à jour avec succès." + +#: views/generic/create_update.py:184 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "L'objet %(verbose_name)s a été supprimé." + +#: newforms/models.py:164 newforms/fields.py:360 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" +"Sélectionnez un choix valide. Ce choix ne fait pas partie de ceux " +"disponibles." + +#: newforms/models.py:181 newforms/fields.py:378 newforms/fields.py:454 +msgid "Enter a list of values." +msgstr "Entrez une liste de valeur." + +#: newforms/models.py:187 newforms/fields.py:387 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Sélectionnez un choix valide ; %s n'en fait pas partie." + +#: newforms/fields.py:101 newforms/fields.py:254 +#, python-format +msgid "Ensure this value has at most %d characters." +msgstr "Assurez-vous que cette valeur fait moins de %d caractère." + +#: newforms/fields.py:103 newforms/fields.py:256 +#, python-format +msgid "Ensure this value has at least %d characters." +msgstr "Assurez-vous que cette valeur fait au moins %d caractère." + +#: newforms/fields.py:128 +#, python-format +msgid "Ensure this value is less than or equal to %s." +msgstr "Assurez-vous que cette valeur soit plus petite ou égale à %s." + +#: newforms/fields.py:130 +#, python-format +msgid "Ensure this value is greater than or equal to %s." +msgstr "Assurez-vous que cette valeur soit plus grande ou égale à %s." + +#: newforms/fields.py:163 +msgid "Enter a valid date." +msgstr "Entrez une date valide." + +#: newforms/fields.py:190 +msgid "Enter a valid time." +msgstr "Entrez une heure valide." + +#: newforms/fields.py:226 +msgid "Enter a valid date/time." +msgstr "Entrez une date et une heure valides." + +#: newforms/fields.py:240 +msgid "Enter a valid value." +msgstr "Entrez une valeur valide." + +#: newforms/fields.py:287 newforms/fields.py:309 +msgid "Enter a valid URL." +msgstr "Entrez une URL valide." + +#: newforms/fields.py:311 +msgid "This URL appears to be a broken link." +msgstr "L'URL est un lien cassé." + +#: contrib/humanize/templatetags/humanize.py:16 +msgid "th" +msgstr "e" + +#: contrib/humanize/templatetags/humanize.py:16 +msgid "st" +msgstr "er" + +#: contrib/humanize/templatetags/humanize.py:16 +msgid "nd" +msgstr "d" + +#: contrib/humanize/templatetags/humanize.py:16 +msgid "rd" +msgstr "e" + +#: contrib/humanize/templatetags/humanize.py:48 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f million" +msgstr[1] "%(value).1f millions" + +#: contrib/humanize/templatetags/humanize.py:51 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f milliard" +msgstr[1] "%(value).1f milliards" + +#: contrib/humanize/templatetags/humanize.py:54 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f billion" +msgstr[1] "%(value).1f billions" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "one" +msgstr "un" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "two" +msgstr "deux" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "three" +msgstr "trois" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "four" +msgstr "quatre" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "five" +msgstr "cinq" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "six" +msgstr "six" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "seven" +msgstr "sept" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "eight" +msgstr "huit" + +#: contrib/humanize/templatetags/humanize.py:69 +msgid "nine" +msgstr "neuf" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "redirigé depuis" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Ceci doit être un chemin absolu, sans nom de domaine. Par exemple: '/events/" +"search/'." + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "redirigé vers" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Ceci peut être soit un chemin absolu (voir ci-dessus) soit une URL complète " +"débutant par 'http://'." + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "redirige" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "redirige" + #: contrib/comments/models.py:67 contrib/comments/models.py:166 msgid "object ID" msgstr "ID de l'objet" @@ -72,7 +833,7 @@ msgstr "date et heure soumises" msgid "is public" msgstr "est public" -#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289 +#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304 msgid "IP address" msgstr "adresse IP" @@ -209,13 +970,13 @@ msgstr "ID de commentaire invalide" msgid "No voting for yourself" msgstr "Impossible de voter pour soi-même" -#: contrib/comments/views/comments.py:28 +#: contrib/comments/views/comments.py:27 msgid "" "This rating is required because you've entered at least one other rating." msgstr "" "Ce votre est nécéssaire parceque vous avez saisi au moins un autre vote." -#: contrib/comments/views/comments.py:112 +#: contrib/comments/views/comments.py:111 #, python-format msgid "" "This comment was posted by a user who has posted fewer than %(count)s " @@ -238,7 +999,7 @@ msgstr[1] "" "\n" "%(text)s" -#: contrib/comments/views/comments.py:117 +#: contrib/comments/views/comments.py:116 #, python-format msgid "" "This comment was posted by a sketchy user:\n" @@ -249,24 +1010,24 @@ msgstr "" "\n" "%(text)s" -#: contrib/comments/views/comments.py:189 +#: contrib/comments/views/comments.py:188 #: contrib/comments/views/comments.py:280 msgid "Only POSTs are allowed" msgstr "Seuls les POSTs sont autorisés" -#: contrib/comments/views/comments.py:193 +#: contrib/comments/views/comments.py:192 #: contrib/comments/views/comments.py:284 msgid "One or more of the required fields wasn't submitted" msgstr "Un ou plusieurs champs requis n'ont pas été remplis" -#: contrib/comments/views/comments.py:197 +#: contrib/comments/views/comments.py:196 #: contrib/comments/views/comments.py:286 msgid "Somebody tampered with the comment form (security violation)" msgstr "" "Quelqu'un a trafiqué le formulaire de commentaire (violation des règles de " "sécurité)" -#: contrib/comments/views/comments.py:207 +#: contrib/comments/views/comments.py:206 #: contrib/comments/views/comments.py:292 msgid "" "The comment form had an invalid 'target' parameter -- the object ID was " @@ -282,6 +1043,20 @@ msgstr "" "Le formulaire de commentaire ne proposait ni les options de prévisualisation " "ni d'envoi" +#: contrib/comments/templates/comments/freeform.html:4 +msgid "Your name:" +msgstr "Votre nom :" + +#: contrib/comments/templates/comments/freeform.html:5 +#: contrib/comments/templates/comments/form.html:28 +msgid "Comment:" +msgstr "Commentaire :" + +#: contrib/comments/templates/comments/freeform.html:10 +#: contrib/comments/templates/comments/form.html:35 +msgid "Preview comment" +msgstr "Prévisualisation du commentaire" + #: contrib/comments/templates/comments/form.html:6 #: contrib/comments/templates/comments/form.html:8 #: contrib/admin/templates/admin/login.html:17 @@ -289,20 +1064,12 @@ msgid "Username:" msgstr "Nom d'utilisateur" #: contrib/comments/templates/comments/form.html:6 -#: contrib/admin/templates/admin/login.html:20 -msgid "Password:" -msgstr "Mot de passe" - -#: contrib/comments/templates/comments/form.html:6 -msgid "Forgotten your password?" -msgstr "Mot de passe oublié?" - -#: contrib/comments/templates/comments/form.html:8 #: contrib/admin/templates/admin/object_history.html:3 #: contrib/admin/templates/admin/change_list.html:5 -#: contrib/admin/templates/admin/base.html:23 -#: contrib/admin/templates/admin/delete_confirmation.html:3 #: contrib/admin/templates/admin/change_form.html:10 +#: contrib/admin/templates/admin/base.html:25 +#: contrib/admin/templates/admin/delete_confirmation.html:3 +#: contrib/admin/templates/admin/auth/user/change_password.html:9 #: contrib/admin/templates/registration/password_change_done.html:3 #: contrib/admin/templates/registration/password_change_form.html:3 #: contrib/admin/templates/admin_doc/bookmarklets.html:4 @@ -318,6 +1085,15 @@ msgstr "Mot de passe oublié?" msgid "Log out" msgstr "Déconnexion" +#: contrib/comments/templates/comments/form.html:8 +#: contrib/admin/templates/admin/login.html:20 +msgid "Password:" +msgstr "Mot de passe" + +#: contrib/comments/templates/comments/form.html:8 +msgid "Forgotten your password?" +msgstr "Mot de passe oublié?" + #: contrib/comments/templates/comments/form.html:12 msgid "Ratings" msgstr "Votes" @@ -336,19 +1112,21 @@ msgstr "Optionel" msgid "Post a photo" msgstr "Poster une photo" -#: contrib/comments/templates/comments/form.html:27 -#: contrib/comments/templates/comments/freeform.html:5 -msgid "Comment:" -msgstr "Commentaire :" +#: contrib/sites/models.py:10 +msgid "domain name" +msgstr "nom de domaine" -#: contrib/comments/templates/comments/form.html:32 -#: contrib/comments/templates/comments/freeform.html:9 -msgid "Preview comment" -msgstr "Prévisualisation du commentaire" +#: contrib/sites/models.py:11 +msgid "display name" +msgstr "nom à afficher" -#: contrib/comments/templates/comments/freeform.html:4 -msgid "Your name:" -msgstr "Votre nom :" +#: contrib/sites/models.py:15 +msgid "site" +msgstr "site" + +#: contrib/sites/models.py:16 +msgid "sites" +msgstr "sites" #: contrib/admin/filterspecs.py:40 #, python-format @@ -360,7 +1138,7 @@ msgstr "" "