diff --git a/django/conf/locale/fr/LC_MESSAGES/django.mo b/django/conf/locale/fr/LC_MESSAGES/django.mo
index fbf70067f1..8301b1cb4b 100644
Binary files a/django/conf/locale/fr/LC_MESSAGES/django.mo and b/django/conf/locale/fr/LC_MESSAGES/django.mo differ
diff --git a/django/conf/locale/fr/LC_MESSAGES/django.po b/django/conf/locale/fr/LC_MESSAGES/django.po
index f5a531242b..133c7c4553 100644
--- a/django/conf/locale/fr/LC_MESSAGES/django.po
+++ b/django/conf/locale/fr/LC_MESSAGES/django.po
@@ -6,10 +6,10 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Django\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-29 15:35-0700\n"
+"POT-Creation-Date: 2008-09-02 00:51+0200\n"
 "PO-Revision-Date: 2008-08-29 02:31+0100\n"
 "Last-Translator: David Larlet <http://david.larlet.fr>\n"
-"Language-Team: français <fr@li.org>\n"
+"Language-Team: français <http://django-fr.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -284,59 +284,60 @@ msgstr "entrée d'historique"
 msgid "log entries"
 msgstr "entrées d'historique"
 
-#: contrib/admin/options.py:56 contrib/admin/options.py:120
+#: contrib/admin/options.py:59 contrib/admin/options.py:120
 msgid "None"
 msgstr "Aucun(e)"
 
-#: contrib/admin/options.py:334
+#: contrib/admin/options.py:332
 #, python-format
 msgid "Changed %s."
 msgstr "Modifié %s."
 
-#: contrib/admin/options.py:334 contrib/admin/options.py:344
+#: contrib/admin/options.py:332 contrib/admin/options.py:342
+#: forms/models.py:264
 msgid "and"
 msgstr "et"
 
-#: contrib/admin/options.py:339
+#: contrib/admin/options.py:337
 #, python-format
 msgid "Added %(name)s \"%(object)s\"."
 msgstr "%(name)s \"%(object)s\" ajouté."
 
-#: contrib/admin/options.py:343
-#, fuzzy, python-format
+#: contrib/admin/options.py:341
+#, python-format
 msgid "Changed %(list)s for %(name)s \"%(object)s\"."
 msgstr "%(list)s modifié pour %(name)s \"%(object)s\"."
 
-#: contrib/admin/options.py:348
+#: contrib/admin/options.py:346
 #, python-format
 msgid "Deleted %(name)s \"%(object)s\"."
 msgstr "%(name)s \"%(object)s\" supprimé."
 
-#: contrib/admin/options.py:352
+#: contrib/admin/options.py:350
 msgid "No fields changed."
 msgstr "Aucun champ modifié."
 
-#: contrib/admin/options.py:413 contrib/auth/admin.py:51
+#: contrib/admin/options.py:411 contrib/auth/admin.py:51
 #, python-format
 msgid "The %(name)s \"%(obj)s\" was added successfully."
 msgstr "L'objet %(name)s \"%(obj)s\" a été ajouté avec succès."
 
-#: contrib/admin/options.py:417 contrib/admin/options.py:450
-#: contrib/auth/admin.py:57
+#: contrib/admin/options.py:415 contrib/admin/options.py:448
+#: contrib/auth/admin.py:59
 msgid "You may edit it again below."
 msgstr "Vous pouvez continuer l'édition ci-dessous."
 
-#: contrib/admin/options.py:427 contrib/admin/options.py:460
+#: contrib/admin/options.py:425 contrib/admin/options.py:458
 #, python-format
 msgid "You may add another %s below."
 msgstr "Vous pouvez ajouter un autre %s ci-dessous."
 
-#: contrib/admin/options.py:448
+#: contrib/admin/options.py:446
 #, python-format
 msgid "The %(name)s \"%(obj)s\" was changed successfully."
 msgstr "L'objet %(name)s \"%(obj)s\" a été modifié avec succès."
 
-#: contrib/admin/options.py:456
+#: contrib/admin/options.py:454
 #, python-format
 msgid ""
 "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
@@ -344,30 +345,30 @@ msgstr ""
 "L'objet %(name)s \"%(obj)s\" a été ajouté avec succès. Vous pouvez continuer "
 "l'édition ci-dessous."
 
-#: contrib/admin/options.py:532
+#: contrib/admin/options.py:530
 #, python-format
 msgid "Add %s"
 msgstr "Ajouter %s"
 
-#: contrib/admin/options.py:610
+#: contrib/admin/options.py:608
 #, python-format
 msgid "Change %s"
 msgstr "Changement %s"
 
-#: contrib/admin/options.py:642
+#: contrib/admin/options.py:640
 msgid "Database error"
 msgstr "Erreur de base de données"
 
-#: contrib/admin/options.py:692
+#: contrib/admin/options.py:690
 #, python-format
 msgid "The %(name)s \"%(obj)s\" was deleted successfully."
 msgstr "L'objet %(name)s \"%(obj)s\" a été supprimé avec succès."
 
-#: contrib/admin/options.py:699
+#: contrib/admin/options.py:697
 msgid "Are you sure?"
 msgstr "Êtes-vous sûr ?"
 
-#: contrib/admin/options.py:728
+#: contrib/admin/options.py:726
 #, python-format
 msgid "Change history: %s"
 msgstr "Historique des changements : %s"
@@ -434,28 +435,27 @@ msgstr "Un ou plusieurs %(fieldname)s dans %(name)s : %(obj)s"
 msgid "One or more %(fieldname)s in %(name)s:"
 msgstr "Un ou plusieurs %(fieldname)s dans %(name)s :"
 
-#: contrib/admin/widgets.py:65
+#: contrib/admin/widgets.py:70
 msgid "Date:"
 msgstr "Date :"
 
-#: contrib/admin/widgets.py:65
+#: contrib/admin/widgets.py:70
 msgid "Time:"
 msgstr "Heure :"
 
-#: contrib/admin/widgets.py:89
+#: contrib/admin/widgets.py:94
 msgid "Currently:"
 msgstr "Actuellement :"
 
-#: contrib/admin/widgets.py:89
+#: contrib/admin/widgets.py:94
 msgid "Change:"
 msgstr "Modification :"
 
-#: contrib/admin/widgets.py:115
-#, fuzzy
+#: contrib/admin/widgets.py:120
 msgid "Lookup"
 msgstr "Recherche :"
 
-#: contrib/admin/widgets.py:195
+#: contrib/admin/widgets.py:204
 msgid "Add Another"
 msgstr "Ajouter un autre :"
 
@@ -691,7 +691,7 @@ msgid "Go"
 msgstr "Envoyer"
 
 #: contrib/admin/templates/admin/search_form.html:10
-#, fuzzy, python-format
+#, python-format
 msgid "1 result"
 msgid_plural "%(counter)s results"
 msgstr[0] "1 résultat"
@@ -756,7 +756,6 @@ msgstr ""
 "strong>."
 
 #: contrib/admin/templates/admin/edit_inline/tabular.html:15
-#, fuzzy
 msgid "Delete?"
 msgstr "Supprimer ?"
 
@@ -823,7 +822,6 @@ msgstr "Réinitialisation de votre mot de passe"
 
 #: contrib/admin/templates/registration/password_reset_complete.html:6
 #: contrib/admin/templates/registration/password_reset_complete.html:10
-#, fuzzy
 msgid "Password reset complete"
 msgstr "Mise à jour de votre mot de passe effectuée avec succès"
 
@@ -834,17 +832,14 @@ msgstr ""
 "authentifier."
 
 #: contrib/admin/templates/registration/password_reset_confirm.html:4
-#, fuzzy
 msgid "Password reset confirmation"
 msgstr "Confirmation de mise à jour de votre mot de passe"
 
 #: contrib/admin/templates/registration/password_reset_confirm.html:12
-#, fuzzy
 msgid "Enter new password"
 msgstr "Saisissez un nouveau mot de passe"
 
 #: contrib/admin/templates/registration/password_reset_confirm.html:14
-#, fuzzy
 msgid ""
 "Please enter your new password twice so we can verify you typed it in "
 "correctly."
@@ -853,7 +848,6 @@ msgstr ""
 "vérifier que vous l'avez tapé correctement."
 
 #: contrib/admin/templates/registration/password_reset_confirm.html:26
-#, fuzzy
 msgid "Password reset unsuccessful"
 msgstr "Echec lors de la mise à jour du mot de passe"
 
@@ -872,7 +866,6 @@ msgid "Password reset successful"
 msgstr "Mot de passe mis à jour avec succès"
 
 #: contrib/admin/templates/registration/password_reset_done.html:12
-#, fuzzy
 msgid ""
 "We've e-mailed you instructions for setting your password to the e-mail "
 "address you submitted. You should be receiving it shortly."
@@ -910,7 +903,6 @@ msgid "The %(site_name)s team"
 msgstr "L'équipe %(site_name)s"
 
 #: contrib/admin/templates/registration/password_reset_form.html:12
-#, fuzzy
 msgid ""
 "Forgotten your password? Enter your e-mail address below, and we'll e-mail "
 "instructions for setting a new one."
@@ -945,7 +937,6 @@ msgid "site"
 msgstr "site"
 
 #: contrib/admin/views/template.py:38
-#, fuzzy
 msgid "template"
 msgstr "template"
 
@@ -970,13 +961,13 @@ msgid "App %r not found"
 msgstr "L'application %r n'a pas été trouvée."
 
 #: contrib/admindocs/views.py:193
-#, fuzzy, python-format
+#, python-format
 msgid "Model %(model_name)r not found in app %(app_label)r"
 msgstr ""
 "Le modèle %(model_name)r n'a pas été trouvé dans l'application %(app_label)r"
 
 #: contrib/admindocs/views.py:205
-#, fuzzy, python-format
+#, python-format
 msgid "the related `%(app_label)s.%(data_type)s` object"
 msgstr "l'objet `%(app_label)s.%(data_type)s` en relation "
 
@@ -986,7 +977,7 @@ msgid "model:"
 msgstr "modèle :"
 
 #: contrib/admindocs/views.py:236
-#, fuzzy, python-format
+#, python-format
 msgid "related `%(app_label)s.%(object_name)s` objects"
 msgstr "les objets `%(app_label)s.%(object_name)s` en relation"
 
@@ -1049,7 +1040,7 @@ msgstr "Chemin vers le fichier"
 msgid "Floating point number"
 msgstr "Nombre à virgule flottante"
 
-#: contrib/admindocs/views.py:328 contrib/comments/models.py:57
+#: contrib/admindocs/views.py:328 contrib/comments/models.py:58
 msgid "IP address"
 msgstr "adresse IP"
 
@@ -1073,7 +1064,7 @@ msgstr "Texte"
 msgid "Time"
 msgstr "Heure"
 
-#: contrib/admindocs/views.py:339 contrib/comments/forms.py:20
+#: contrib/admindocs/views.py:339 contrib/comments/forms.py:21
 #: contrib/flatpages/admin.py:8 contrib/flatpages/models.py:7
 msgid "URL"
 msgstr "URL"
@@ -1176,15 +1167,15 @@ msgstr "Dates importantes"
 msgid "Groups"
 msgstr "Groupes"
 
-#: contrib/auth/admin.py:62
+#: contrib/auth/admin.py:64
 msgid "Add user"
 msgstr "Ajouter l'utilisateur"
 
-#: contrib/auth/admin.py:88
+#: contrib/auth/admin.py:90
 msgid "Password changed successfully."
 msgstr "Mot de passe modifié avec succés"
 
-#: contrib/auth/admin.py:94
+#: contrib/auth/admin.py:96
 #, python-format
 msgid "Change password: %s"
 msgstr "Modifier le mot de passe : %s"
@@ -1204,7 +1195,6 @@ msgstr ""
 "Ce champ ne doit contenir que des lettres, des nombres et des tirets bas _."
 
 #: contrib/auth/forms.py:18
-#, fuzzy
 msgid "Password confirmation"
 msgstr "Confirmation de votre mot de passe"
 
@@ -1247,17 +1237,14 @@ msgid "Password reset on %s"
 msgstr "Mot de passe mis à jour sur %s"
 
 #: contrib/auth/forms.py:142
-#, fuzzy
 msgid "New password"
 msgstr "Nouveau mot de passe :"
 
 #: contrib/auth/forms.py:143
-#, fuzzy
 msgid "New password confirmation"
 msgstr "Confirmation de votre nouveau mot de passe :"
 
 #: contrib/auth/forms.py:168
-#, fuzzy
 msgid "Old password"
 msgstr "Ancien mot de passe :"
 
@@ -1330,7 +1317,6 @@ msgid "active"
 msgstr "actif"
 
 #: contrib/auth/models.py:142
-#, fuzzy
 msgid ""
 "Designates whether this user should be treated as active. Unselect this "
 "instead of deleting accounts."
@@ -1387,12 +1373,11 @@ msgstr "message"
 msgid "Logged out"
 msgstr "Déconnecté"
 
-#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:423
+#: contrib/auth/management/commands/createsuperuser.py:23 forms/fields.py:425
 msgid "Enter a valid e-mail address."
 msgstr "Entrez une adresse de courriel valide."
 
 #: contrib/comments/admin.py:11
-#, fuzzy
 msgid "Content"
 msgstr "contenu"
 
@@ -1400,78 +1385,73 @@ msgstr "contenu"
 msgid "Metadata"
 msgstr "Metadonnée"
 
-#: contrib/comments/forms.py:18
-#, fuzzy
+#: contrib/comments/forms.py:19
 msgid "Name"
 msgstr "Nom"
 
-#: contrib/comments/forms.py:19
-#, fuzzy
+#: contrib/comments/forms.py:20
 msgid "Email address"
 msgstr "Courriel"
 
-#: contrib/comments/forms.py:21
+#: contrib/comments/forms.py:22
 msgid "Comment"
 msgstr "Commentaire"
 
-#: contrib/comments/forms.py:24
+#: contrib/comments/forms.py:25
 msgid ""
 "If you enter anything in this field your comment will be treated as spam"
 msgstr ""
 "Si vous soumettez quelque chose dans ce champs votre commentaire va être "
 "considéré comme étant indésirable"
 
-#: contrib/comments/forms.py:124
-#, fuzzy, python-format
+#: contrib/comments/forms.py:125
+#, 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 terme %s n'est pas autorisé ici."
 msgstr[1] ""
 "Attention à votre langage ! Les termes %s ne sont pas autorisés ici."
 
-#: contrib/comments/models.py:22
+#: contrib/comments/models.py:23
 msgid "object ID"
 msgstr "ID de l'objet"
 
-#: contrib/comments/models.py:49
-#, fuzzy
+#: contrib/comments/models.py:50
 msgid "user's name"
 msgstr "nom d'utilisateur"
 
-#: contrib/comments/models.py:50
-#, fuzzy
+#: contrib/comments/models.py:51
 msgid "user's email address"
 msgstr "courriel de l'utilisateur"
 
-#: contrib/comments/models.py:51
-#, fuzzy
+#: contrib/comments/models.py:52
 msgid "user's URL"
 msgstr "URL de l'utilisateur"
 
-#: contrib/comments/models.py:53
+#: contrib/comments/models.py:54
 msgid "comment"
 msgstr "commentaire"
 
-#: contrib/comments/models.py:56
+#: contrib/comments/models.py:57
 msgid "date/time submitted"
 msgstr "date et heure soumises"
 
-#: contrib/comments/models.py:58
+#: contrib/comments/models.py:59
 msgid "is public"
 msgstr "est public"
 
-#: contrib/comments/models.py:59
+#: contrib/comments/models.py:60
 msgid ""
 "Uncheck this box to make the comment effectively disappear from the site."
 msgstr ""
 "Déselectionnez cette case pour faire vraiment disparaître ce commentaire du "
 "site."
 
-#: contrib/comments/models.py:61
+#: contrib/comments/models.py:62
 msgid "is removed"
 msgstr "est supprimé"
 
-#: contrib/comments/models.py:62
+#: contrib/comments/models.py:63
 msgid ""
 "Check this box if the comment is inappropriate. A \"This comment has been "
 "removed\" message will be displayed instead."
@@ -1479,8 +1459,7 @@ msgstr ""
 "Cochez cette case si le commentaire est inadéquat. Un message type \"Ce "
 "commentaire a été supprimé\" sera affiché en lieu et place de celui-ci."
 
-#: contrib/comments/models.py:114
-#, fuzzy
+#: contrib/comments/models.py:115
 msgid ""
 "This comment was posted by an authenticated user and thus the name is read-"
 "only."
@@ -1488,8 +1467,7 @@ msgstr ""
 "Ce commentaire a été posté par un utilisateur authentifié, le nom est donc "
 "en lecture seule."
 
-#: contrib/comments/models.py:123
-#, fuzzy
+#: contrib/comments/models.py:124
 msgid ""
 "This comment was posted by an authenticated user and thus the email is read-"
 "only."
@@ -1497,7 +1475,7 @@ msgstr ""
 "Ce commentaire a été posté par un utilisateur authentifié et le courriel est "
 "donc en lecture seule"
 
-#: contrib/comments/models.py:148
+#: contrib/comments/models.py:149
 #, python-format
 msgid ""
 "Posted by %(user)s at %(date)s\n"
@@ -1598,12 +1576,10 @@ msgid "No geometry value provided."
 msgstr "Valeur géométrique manquante."
 
 #: contrib/gis/forms/fields.py:15
-#, fuzzy
 msgid "Invalid geometry value."
 msgstr "Valeur géométrique invalide"
 
 #: contrib/gis/forms/fields.py:16
-#, fuzzy
 msgid "Invalid geometry type."
 msgstr "Type de géométrie invalide"
 
@@ -1624,25 +1600,25 @@ msgid "rd"
 msgstr "<sup>e</sup>"
 
 #: contrib/humanize/templatetags/humanize.py:51
-#, fuzzy, python-format
+#, python-format
 msgid "%(value).1f million"
 msgid_plural "%(value).1f million"
 msgstr[0] "%(value).1f million"
-msgstr[1] "%(value).1f million"
+msgstr[1] "%(value).1f millions"
 
 #: contrib/humanize/templatetags/humanize.py:54
-#, fuzzy, python-format
+#, python-format
 msgid "%(value).1f billion"
 msgid_plural "%(value).1f billion"
 msgstr[0] "%(value).1f milliard"
-msgstr[1] "%(value).1f milliard"
+msgstr[1] "%(value).1f milliards"
 
 #: contrib/humanize/templatetags/humanize.py:57
-#, fuzzy, python-format
+#, python-format
 msgid "%(value).1f trillion"
 msgid_plural "%(value).1f trillion"
 msgstr[0] "%(value).1f billion"
-msgstr[1] "%(value).1f billion"
+msgstr[1] "%(value).1f billions"
 
 #: contrib/humanize/templatetags/humanize.py:73
 msgid "one"
@@ -1715,17 +1691,14 @@ msgid "Invalid CUIT."
 msgstr "CUIT invalide."
 
 #: contrib/localflavor/at/at_states.py:5
-#, fuzzy
 msgid "Burgenland"
 msgstr "Burgenland"
 
 #: contrib/localflavor/at/at_states.py:6
-#, fuzzy
 msgid "Carinthia"
 msgstr "Carinthie"
 
 #: contrib/localflavor/at/at_states.py:7
-#, fuzzy
 msgid "Lower Austria"
 msgstr "Basse-Autriche"
 
@@ -1734,12 +1707,10 @@ msgid "Upper Austria"
 msgstr "Haute-Autriche"
 
 #: contrib/localflavor/at/at_states.py:9
-#, fuzzy
 msgid "Salzburg"
 msgstr "Salzburg"
 
 #: contrib/localflavor/at/at_states.py:10
-#, fuzzy
 msgid "Styria"
 msgstr "Styrie"
 
@@ -1761,7 +1732,6 @@ msgid "Enter a zip code in the format XXXX."
 msgstr "Entrez un code postal Norvégien au format XXXX."
 
 #: contrib/localflavor/at/forms.py:48
-#, fuzzy
 msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
 msgstr ""
 "Entrez un numéro de sécurité sociale autrichien valide au format XXXX XXXXXX."
@@ -2598,13 +2568,11 @@ msgid "Jalisco"
 msgstr "Jalisco"
 
 #: contrib/localflavor/mx/mx_states.py:26
-#, fuzzy
-msgid "Estado de México"
+msgid "Estado de México"
 msgstr "État de Mexico"
 
 #: contrib/localflavor/mx/mx_states.py:27
-#, fuzzy
-msgid "Michoacán"
+msgid "Michoacán"
 msgstr "Michoacán"
 
 #: contrib/localflavor/mx/mx_states.py:28
@@ -2616,8 +2584,7 @@ msgid "Nayarit"
 msgstr "Nayarit"
 
 #: contrib/localflavor/mx/mx_states.py:30
-#, fuzzy
-msgid "Nuevo León"
+msgid "Nuevo León"
 msgstr "Nuevo León"
 
 #: contrib/localflavor/mx/mx_states.py:31
@@ -2629,8 +2596,7 @@ msgid "Puebla"
 msgstr "Puebla"
 
 #: contrib/localflavor/mx/mx_states.py:33
-#, fuzzy
-msgid "Querétaro"
+msgid "Querétaro"
 msgstr "Querétaro"
 
 #: contrib/localflavor/mx/mx_states.py:34
@@ -2642,8 +2608,7 @@ msgid "Sinaloa"
 msgstr "Sinaloa"
 
 #: contrib/localflavor/mx/mx_states.py:36
-#, fuzzy
-msgid "San Luis Potosí"
+msgid "San Luis Potosí"
 msgstr "San Luis Potosí"
 
 #: contrib/localflavor/mx/mx_states.py:37
@@ -2667,8 +2632,7 @@ msgid "Veracruz"
 msgstr "Veracruz"
 
 #: contrib/localflavor/mx/mx_states.py:42
-#, fuzzy
-msgid "Yucatán"
+msgid "Yucatán"
 msgstr "Yucatán"
 
 #: contrib/localflavor/mx/mx_states.py:43
@@ -2688,7 +2652,6 @@ msgid "Enter a valid SoFi number"
 msgstr "Entrez un numero SoFi valide."
 
 #: contrib/localflavor/nl/nl_provinces.py:4
-#, fuzzy
 msgid "Drenthe"
 msgstr "Drenthe"
 
@@ -2844,27 +2807,22 @@ msgid "West Pomerania"
 msgstr "Poméranie Occidentale"
 
 #: contrib/localflavor/ro/forms.py:19
-#, fuzzy
 msgid "Enter a valid CIF."
 msgstr "Entrez une CIF valide."
 
 #: contrib/localflavor/ro/forms.py:56
-#, fuzzy
 msgid "Enter a valid CNP."
 msgstr "Entrez une CNP valide."
 
 #: contrib/localflavor/ro/forms.py:141
-#, fuzzy
 msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
 msgstr "Entrez un IBAN valid au format ROXX-XXXX-XXXX-XXXX-XXXX-XXXX."
 
 #: contrib/localflavor/ro/forms.py:171
-#, fuzzy
 msgid "Phone numbers must be in XXXX-XXXXXX format."
 msgstr "Les numéros de téléphone doivent être au format XXXX-XXXXXX."
 
 #: contrib/localflavor/ro/forms.py:194
-#, fuzzy
 msgid "Enter a valid postal code in the format XXXXXX"
 msgstr "Entrez un code postal valide au format XXXXXX"
 
@@ -3620,60 +3578,58 @@ msgstr "nom à afficher"
 msgid "sites"
 msgstr "sites"
 
-#: db/models/fields/__init__.py:332 db/models/fields/__init__.py:667
+#: db/models/fields/__init__.py:350 db/models/fields/__init__.py:685
 msgid "This value must be an integer."
 msgstr "Cette valeur doit être un entier."
 
-#: db/models/fields/__init__.py:363
+#: db/models/fields/__init__.py:381
 msgid "This value must be either True or False."
 msgstr "Cette valeur doit être soit Vraie (True) soit Fausse (False)."
 
-#: db/models/fields/__init__.py:396
+#: db/models/fields/__init__.py:414
 msgid "This field cannot be null."
 msgstr "Ce champ ne peut pas être vide."
 
-#: db/models/fields/__init__.py:412
+#: db/models/fields/__init__.py:430
 msgid "Enter only digits separated by commas."
 msgstr "Saisissez uniquement des chiffres séparés par des virgules."
 
-#: db/models/fields/__init__.py:443
+#: db/models/fields/__init__.py:461
 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:452
+#: db/models/fields/__init__.py:470
 #, python-format
 msgid "Invalid date: %s"
 msgstr "Date invalide : %s"
 
-#: db/models/fields/__init__.py:516 db/models/fields/__init__.py:534
-#, fuzzy
+#: db/models/fields/__init__.py:534 db/models/fields/__init__.py:552
 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
 msgstr ""
 "Entrez une date et une heure valides au format AAAA-MM-JJ HH:MM[:ss[."
 "uuuuuu]]."
 
-#: db/models/fields/__init__.py:570
+#: db/models/fields/__init__.py:588
 msgid "This value must be a decimal number."
 msgstr "Cette valeur doit être un nombre décimal."
 
-#: db/models/fields/__init__.py:703
+#: db/models/fields/__init__.py:721
 msgid "This value must be either None, True or False."
 msgstr "Cette valeur doit être Nulle (None), Vraie (True) ou Fausse (False)."
 
-#: db/models/fields/__init__.py:811 db/models/fields/__init__.py:825
-#, fuzzy
+#: db/models/fields/__init__.py:829 db/models/fields/__init__.py:843
 msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
 msgstr "Entrez une heure valide au format HH:MM[:ss[.uuuuuu]]."
 
-#: db/models/fields/related.py:748
+#: db/models/fields/related.py:753
 msgid ""
 "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
 msgstr ""
 "Maintenez appuyé \"Contrôle (ctrl)\", ou \"Commande (touche pomme)\" sur un "
 "Mac, pour en sélectionner plusieurs."
 
-#: db/models/fields/related.py:825
-#, fuzzy, python-format
+#: db/models/fields/related.py:830
+#, 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."
@@ -3681,87 +3637,87 @@ 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."
 
-#: forms/fields.py:52
+#: forms/fields.py:54
 msgid "This field is required."
 msgstr "Ce champ est obligatoire."
 
-#: forms/fields.py:53
+#: forms/fields.py:55
 msgid "Enter a valid value."
 msgstr "Entrez une valeur valide."
 
-#: forms/fields.py:133
+#: forms/fields.py:135
 #, python-format
 msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
 msgstr ""
 "Assurez-vous que cette valeur fait moins de %(max)d caractères (il fait "
 "actuellement %(length)d caractères)."
 
-#: forms/fields.py:134
+#: forms/fields.py:136
 #, python-format
 msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
 msgstr ""
 "Assurez-vous que cette valeur fait plus de %(min)d caractères (il fait "
 "actuellement %(length)d caractères)."
 
-#: forms/fields.py:161
+#: forms/fields.py:163
 msgid "Enter a whole number."
 msgstr "Entrez un nombre entier."
 
-#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
+#: forms/fields.py:164 forms/fields.py:193 forms/fields.py:222
 #, python-format
 msgid "Ensure this value is less than or equal to %s."
 msgstr "Assurez-vous que cette valeur soit inférieure ou égale à %s."
 
-#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
+#: forms/fields.py:165 forms/fields.py:194 forms/fields.py:223
 #, python-format
 msgid "Ensure this value is greater than or equal to %s."
 msgstr "Assurez-vous que cette valeur soit supérieure ou égale à %s."
 
-#: forms/fields.py:190 forms/fields.py:219
+#: forms/fields.py:192 forms/fields.py:221
 msgid "Enter a number."
 msgstr "Entrez un nombre."
 
-#: forms/fields.py:222
+#: forms/fields.py:224
 #, python-format
 msgid "Ensure that there are no more than %s digits in total."
 msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres au total."
 
-#: forms/fields.py:223
+#: forms/fields.py:225
 #, python-format
 msgid "Ensure that there are no more than %s decimal places."
 msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres après la virgule."
 
-#: forms/fields.py:224
+#: forms/fields.py:226
 #, python-format
 msgid "Ensure that there are no more than %s digits before the decimal point."
 msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres avant la virgule."
 
-#: forms/fields.py:282 forms/fields.py:815
+#: forms/fields.py:284 forms/fields.py:844
 msgid "Enter a valid date."
 msgstr "Entrez une date valide."
 
-#: forms/fields.py:316 forms/fields.py:816
+#: forms/fields.py:318 forms/fields.py:845
 msgid "Enter a valid time."
 msgstr "Entrez une heure valide."
 
-#: forms/fields.py:355
+#: forms/fields.py:357
 msgid "Enter a valid date/time."
 msgstr "Entrez une date et une heure valides."
 
-#: forms/fields.py:441
+#: forms/fields.py:443
 msgid "No file was submitted. Check the encoding type on the form."
 msgstr ""
 "Aucun fichier n'a été soumis. Vérifiez le type d'encodage du formulaire."
 
-#: forms/fields.py:442
+#: forms/fields.py:444
 msgid "No file was submitted."
 msgstr "Aucun fichier n'a été soumis."
 
-#: forms/fields.py:443
+#: forms/fields.py:445
 msgid "The submitted file is empty."
 msgstr "Le fichier soumis est vide."
 
-#: forms/fields.py:472
+#: forms/fields.py:474
 msgid ""
 "Upload a valid image. The file you uploaded was either not an image or a "
 "corrupted image."
@@ -3769,29 +3725,28 @@ msgstr ""
 "Envoyez une image valide. Le fichier que vous avez transféré n'est pas une "
 "image ou bien est corrompu."
 
-#: forms/fields.py:533
+#: forms/fields.py:535
 msgid "Enter a valid URL."
 msgstr "Entrez une URL valide."
 
-#: forms/fields.py:534
+#: forms/fields.py:536
 msgid "This URL appears to be a broken link."
 msgstr "Cette URL semble être cassée."
 
-#: forms/fields.py:613 forms/fields.py:664
+#: forms/fields.py:615 forms/fields.py:693
 #, python-format
 msgid "Select a valid choice. %(value)s is not one of the available choices."
 msgstr "Sélectionnez un choix valide. %(value)s n'en fait pas partie."
 
-#: forms/fields.py:665 forms/fields.py:726 forms/models.py:531
+#: forms/fields.py:694 forms/fields.py:755 forms/models.py:633
 msgid "Enter a list of values."
 msgstr "Entrez une liste de valeurs."
 
-#: forms/fields.py:844
+#: forms/fields.py:873
 msgid "Enter a valid IPv4 address."
 msgstr "Entrez une adresse IPv4 valide."
 
-#: forms/fields.py:854
-#, fuzzy
+#: forms/fields.py:883
 msgid ""
 "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
 msgstr ""
@@ -3799,17 +3754,21 @@ msgstr ""
 "des traits d'union."
 
 #: forms/formsets.py:242 forms/formsets.py:244
-#, fuzzy
 msgid "Order"
 msgstr "Ordre :"
 
-#: forms/models.py:463
+#: forms/models.py:258 forms/models.py:266
+#, python-format
+msgid "%(model_name)s with this %(field_label)s already exists."
+msgstr "Un(e) %(model_name)s avec ce %(field_label)s existe déjà."
+
+#: forms/models.py:565
 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."
 
-#: forms/models.py:532
+#: forms/models.py:634
 #, 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."
@@ -3819,7 +3778,7 @@ msgid "yes,no,maybe"
 msgstr "oui, non, peut-être"
 
 #: template/defaultfilters.py:737
-#, fuzzy, python-format
+#, python-format
 msgid "%(size)d byte"
 msgid_plural "%(size)d bytes"
 msgstr[0] "%(size)d octet"
@@ -4079,7 +4038,6 @@ msgstr[0] "heure"
 msgstr[1] "heures"
 
 #: utils/timesince.py:26
-#, fuzzy
 msgid "minute"
 msgid_plural "minutes"
 msgstr[0] "minute"
diff --git a/django/conf/locale/fr/LC_MESSAGES/djangojs.mo b/django/conf/locale/fr/LC_MESSAGES/djangojs.mo
index 33e508761f..616335e547 100644
Binary files a/django/conf/locale/fr/LC_MESSAGES/djangojs.mo and b/django/conf/locale/fr/LC_MESSAGES/djangojs.mo differ
diff --git a/django/conf/locale/fr/LC_MESSAGES/djangojs.po b/django/conf/locale/fr/LC_MESSAGES/djangojs.po
index ce457d47a5..14605d7e7e 100644
--- a/django/conf/locale/fr/LC_MESSAGES/djangojs.po
+++ b/django/conf/locale/fr/LC_MESSAGES/djangojs.po
@@ -2,108 +2,117 @@
 # Copyright (C) 2005 Mikaël Barbero 
 # This file is distributed under the same license as the PACKAGE package. 
 # 
-msgid "" 
-msgstr "" 
+msgid ""
+msgstr ""
 "Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n" 
-"POT-Creation-Date: 2005-12-24 16:39+0100\n" 
-"PO-Revision-Date: 2005-12-24 16:39+0100\n" 
-"Last-Translator: Mikaël Barbero <mikael.barbero nospam at nospam free.fr>\n" 
-"Language-Team: French <fr@li.org>\n" 
-"MIME-Version: 1.0\n" 
-"Content-Type: text/plain; charset=UTF-8\n" 
-"Content-Transfer-Encoding: 8bit\n" 
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-02 01:08+0200\n"
+"PO-Revision-Date: 2005-12-24 16:39+0100\n"
+"Last-Translator: David Larlet <http://david.larlet.fr>\n"
+"Language-Team: français <http://django-fr.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
 
-#: contrib/admin/media/js/calendar.js:24 
-#: contrib/admin/media/js/dateparse.js:26 
-msgid "" 
-"January February March April May June July August September October November " 
-"December" 
-msgstr "" 
-"Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre " 
-"Décembre" 
+#: contrib/admin/media/js/SelectFilter2.js:33
+#, perl-format
+msgid "Available %s"
+msgstr "%s disponible(s)"
 
-#: contrib/admin/media/js/calendar.js:25 
-msgid "S M T W T F S" 
-msgstr "D L M M J V S" 
+#: contrib/admin/media/js/SelectFilter2.js:41
+msgid "Choose all"
+msgstr "Tout choisir"
 
-#: contrib/admin/media/js/dateparse.js:27 
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" 
-msgstr "Dimanche Lundi Mardi Mercredi Jeudi Vendredi Samedi" 
+#: contrib/admin/media/js/SelectFilter2.js:46
+msgid "Add"
+msgstr "Ajouter"
 
-#: contrib/admin/media/js/SelectFilter2.js:33 
-#, perl-format 
-msgid "Available %s" 
-msgstr "%s disponible(s)" 
+#: contrib/admin/media/js/SelectFilter2.js:48
+msgid "Remove"
+msgstr "Enlever"
 
-#: contrib/admin/media/js/SelectFilter2.js:41 
-msgid "Choose all" 
-msgstr "Tout choisir" 
+#: contrib/admin/media/js/SelectFilter2.js:53
+#, perl-format
+msgid "Chosen %s"
+msgstr "%s choisi(es)"
 
-#: contrib/admin/media/js/SelectFilter2.js:46 
-msgid "Add" 
-msgstr "Ajouter" 
+#: contrib/admin/media/js/SelectFilter2.js:54
+msgid "Select your choice(s) and click "
+msgstr "Sélectionnez un ou plusieurs choix et cliquez "
 
-#: contrib/admin/media/js/SelectFilter2.js:48 
-msgid "Remove" 
-msgstr "Enlever" 
+#: contrib/admin/media/js/SelectFilter2.js:59
+msgid "Clear all"
+msgstr "Tout enlever"
 
-#: contrib/admin/media/js/SelectFilter2.js:53 
-#, perl-format 
-msgid "Chosen %s" 
-msgstr "%s choisi(es)" 
+#: contrib/admin/media/js/calendar.js:24
+#: contrib/admin/media/js/dateparse.js:32
+msgid ""
+"January February March April May June July August September October November "
+"December"
+msgstr ""
+"Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre "
+"Décembre"
 
-#: contrib/admin/media/js/SelectFilter2.js:54 
-msgid "Select your choice(s) and click " 
-msgstr "Sélectionnez un ou plusieurs choix et cliquez " 
+#: contrib/admin/media/js/calendar.js:25
+msgid "S M T W T F S"
+msgstr "D L M M J V S"
 
-#: contrib/admin/media/js/SelectFilter2.js:59 
-msgid "Clear all" 
-msgstr "Tout enlever" 
+#: contrib/admin/media/js/dateparse.js:33
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
+msgstr "Dimanche Lundi Mardi Mercredi Jeudi Vendredi Samedi"
 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 
-msgid "Now" 
-msgstr "Maintenant" 
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
+msgid "Show"
+msgstr "Montrer"
 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48 
-msgid "Clock" 
-msgstr "Horloge" 
+#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
+msgid "Hide"
+msgstr "Masquer"
 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77 
-msgid "Choose a time" 
-msgstr "Choisir une heure" 
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
+msgid "Now"
+msgstr "Maintenant"
 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 
-msgid "Midnight" 
-msgstr "Minuit" 
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
+msgid "Clock"
+msgstr "Horloge"
 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 
-msgid "6 a.m." 
-msgstr "6:00" 
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
+msgid "Choose a time"
+msgstr "Choisir une heure"
 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 
-msgid "Noon" 
-msgstr "Midi" 
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
+msgid "Midnight"
+msgstr "Minuit"
 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168 
-msgid "Cancel" 
-msgstr "Annuler" 
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
+msgid "6 a.m."
+msgstr "6:00"
 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162 
-msgid "Today" 
-msgstr "Aujourd'hui" 
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
+msgid "Noon"
+msgstr "Midi"
 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114 
-msgid "Calendar" 
-msgstr "Calendrier" 
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
+msgid "Cancel"
+msgstr "Annuler"
 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160 
-msgid "Yesterday" 
-msgstr "Hier" 
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
+msgid "Today"
+msgstr "Aujourd'hui"
 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 
-msgid "Tomorrow" 
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
+msgid "Calendar"
+msgstr "Calendrier"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
+msgid "Yesterday"
+msgstr "Hier"
+
+#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
+msgid "Tomorrow"
 msgstr "Demain"