diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po
new file mode 100644
index 0000000000000000000000000000000000000000..3b0bb88dc0faccd1e5c07dfab9329e36a3041a1c
--- /dev/null
+++ b/locale/de/LC_MESSAGES/django.po
@@ -0,0 +1,480 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-02-06 21:37+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: apps/activity/apps.py:11 apps/activity/models.py:77
+msgid "activity"
+msgstr ""
+
+#: apps/activity/models.py:20 apps/activity/models.py:45
+#: apps/member/models.py:61 apps/member/models.py:112
+#: apps/note/models/notes.py:178 apps/note/models/transactions.py:24
+#: templates/member/profile_detail.html:10
+msgid "name"
+msgstr ""
+
+#: apps/activity/models.py:24
+msgid "can invite"
+msgstr ""
+
+#: apps/activity/models.py:27
+msgid "guest entry fee"
+msgstr ""
+
+#: apps/activity/models.py:31
+msgid "activity type"
+msgstr ""
+
+#: apps/activity/models.py:32
+msgid "activity types"
+msgstr ""
+
+#: apps/activity/models.py:49
+msgid "description"
+msgstr ""
+
+#: apps/activity/models.py:55 apps/note/models/notes.py:154
+#: apps/note/models/transactions.py:39 apps/note/models/transactions.py:85
+msgid "type"
+msgstr ""
+
+#: apps/activity/models.py:61
+msgid "organizer"
+msgstr ""
+
+#: apps/activity/models.py:67
+msgid "attendees club"
+msgstr ""
+
+#: apps/activity/models.py:70
+msgid "start date"
+msgstr ""
+
+#: apps/activity/models.py:73
+msgid "end date"
+msgstr ""
+
+#: apps/activity/models.py:78
+msgid "activities"
+msgstr ""
+
+#: apps/activity/models.py:109
+msgid "guest"
+msgstr ""
+
+#: apps/activity/models.py:110
+msgid "guests"
+msgstr ""
+
+#: apps/member/apps.py:11
+msgid "member"
+msgstr ""
+
+#: apps/member/models.py:25
+msgid "phone number"
+msgstr ""
+
+#: apps/member/models.py:31 templates/member/profile_detail.html:18
+msgid "section"
+msgstr ""
+
+#: apps/member/models.py:32
+msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
+msgstr ""
+
+#: apps/member/models.py:38 templates/member/profile_detail.html:20
+msgid "address"
+msgstr ""
+
+#: apps/member/models.py:44
+msgid "paid"
+msgstr ""
+
+#: apps/member/models.py:49 apps/member/models.py:50
+msgid "user profile"
+msgstr ""
+
+#: apps/member/models.py:66
+msgid "email"
+msgstr ""
+
+#: apps/member/models.py:71
+msgid "membership fee"
+msgstr ""
+
+#: apps/member/models.py:75
+msgid "membership duration"
+msgstr ""
+
+#: apps/member/models.py:76
+msgid "The longest time a membership can last (NULL = infinite)."
+msgstr ""
+
+#: apps/member/models.py:81
+msgid "membership start"
+msgstr ""
+
+#: apps/member/models.py:82
+msgid "How long after January 1st the members can renew their membership."
+msgstr ""
+
+#: apps/member/models.py:87
+msgid "membership end"
+msgstr ""
+
+#: apps/member/models.py:88
+msgid ""
+"How long the membership can last after January 1st of the next year after "
+"members can renew their membership."
+msgstr ""
+
+#: apps/member/models.py:94 apps/note/models/notes.py:129
+msgid "club"
+msgstr ""
+
+#: apps/member/models.py:95
+msgid "clubs"
+msgstr ""
+
+#: apps/member/models.py:118
+msgid "role"
+msgstr ""
+
+#: apps/member/models.py:119
+msgid "roles"
+msgstr ""
+
+#: apps/member/models.py:140
+msgid "membership starts on"
+msgstr ""
+
+#: apps/member/models.py:143
+msgid "membership ends on"
+msgstr ""
+
+#: apps/member/models.py:147
+msgid "fee"
+msgstr ""
+
+#: apps/member/models.py:151
+msgid "membership"
+msgstr ""
+
+#: apps/member/models.py:152
+msgid "memberships"
+msgstr ""
+
+#: apps/note/admin.py:112 apps/note/models/transactions.py:65
+msgid "source"
+msgstr ""
+
+#: apps/note/admin.py:120 apps/note/admin.py:148
+#: apps/note/models/transactions.py:32 apps/note/models/transactions.py:71
+msgid "destination"
+msgstr ""
+
+#: apps/note/apps.py:15 apps/note/models/notes.py:51
+msgid "note"
+msgstr ""
+
+#: apps/note/models/notes.py:28
+msgid "account balance"
+msgstr ""
+
+#: apps/note/models/notes.py:29
+msgid "in centimes, money credited for this instance"
+msgstr ""
+
+#: apps/note/models/notes.py:33
+msgid "active"
+msgstr ""
+
+#: apps/note/models/notes.py:36
+msgid ""
+"Designates whether this note should be treated as active. Unselect this "
+"instead of deleting notes."
+msgstr ""
+
+#: apps/note/models/notes.py:41
+msgid "display image"
+msgstr ""
+
+#: apps/note/models/notes.py:46 apps/note/models/transactions.py:74
+msgid "created at"
+msgstr ""
+
+#: apps/note/models/notes.py:52
+msgid "notes"
+msgstr ""
+
+#: apps/note/models/notes.py:60
+msgid "Note"
+msgstr ""
+
+#: apps/note/models/notes.py:70 apps/note/models/notes.py:92
+msgid "This alias is already taken."
+msgstr ""
+
+#: apps/note/models/notes.py:107
+msgid "user"
+msgstr ""
+
+#: apps/note/models/notes.py:111
+msgid "one's note"
+msgstr ""
+
+#: apps/note/models/notes.py:112
+msgid "users note"
+msgstr ""
+
+#: apps/note/models/notes.py:118
+#, python-format
+msgid "%(user)s's note"
+msgstr ""
+
+#: apps/note/models/notes.py:133
+msgid "club note"
+msgstr ""
+
+#: apps/note/models/notes.py:134
+msgid "clubs notes"
+msgstr ""
+
+#: apps/note/models/notes.py:140
+#, python-format
+msgid "Note of %(club)s club"
+msgstr ""
+
+#: apps/note/models/notes.py:160
+msgid "special note"
+msgstr ""
+
+#: apps/note/models/notes.py:161
+msgid "special notes"
+msgstr ""
+
+#: apps/note/models/notes.py:184
+msgid "Invalid alias"
+msgstr ""
+
+#: apps/note/models/notes.py:200
+msgid "alias"
+msgstr ""
+
+#: apps/note/models/notes.py:201
+msgid "aliases"
+msgstr ""
+
+#: apps/note/models/notes.py:229
+msgid "Alias too long."
+msgstr ""
+
+#: apps/note/models/notes.py:232
+msgid "An alias with a similar name already exists."
+msgstr ""
+
+#: apps/note/models/transactions.py:35 apps/note/models/transactions.py:82
+msgid "amount"
+msgstr ""
+
+#: apps/note/models/transactions.py:36
+msgid "in centimes"
+msgstr ""
+
+#: apps/note/models/transactions.py:44
+msgid "transaction template"
+msgstr ""
+
+#: apps/note/models/transactions.py:45
+msgid "transaction templates"
+msgstr ""
+
+#: apps/note/models/transactions.py:78
+msgid "quantity"
+msgstr ""
+
+#: apps/note/models/transactions.py:89
+msgid "reason"
+msgstr ""
+
+#: apps/note/models/transactions.py:93
+msgid "valid"
+msgstr ""
+
+#: apps/note/models/transactions.py:98
+msgid "transaction"
+msgstr ""
+
+#: apps/note/models/transactions.py:99
+msgid "transactions"
+msgstr ""
+
+#: apps/note/models/transactions.py:141
+msgid "membership transaction"
+msgstr ""
+
+#: apps/note/models/transactions.py:142
+msgid "membership transactions"
+msgstr ""
+
+#: apps/note/views.py:26
+msgid "Transfer money from your account to one or others"
+msgstr ""
+
+#: note_kfet/settings/base.py:130
+msgid "German"
+msgstr ""
+
+#: note_kfet/settings/base.py:131
+msgid "English"
+msgstr ""
+
+#: note_kfet/settings/base.py:132
+msgid "French"
+msgstr ""
+
+#: templates/base.html:14
+msgid "The ENS Paris-Saclay BDE note."
+msgstr ""
+
+#: templates/member/club_detail.html:10
+msgid "Membership starts on"
+msgstr ""
+
+#: templates/member/club_detail.html:12
+msgid "Membership ends on"
+msgstr ""
+
+#: templates/member/club_detail.html:14
+msgid "Membership duration"
+msgstr ""
+
+#: templates/member/club_detail.html:18 templates/member/profile_detail.html:22
+msgid "balance"
+msgstr ""
+
+#: templates/member/profile_detail.html:12
+msgid "first name"
+msgstr ""
+
+#: templates/member/profile_detail.html:14
+msgid "username"
+msgstr ""
+
+#: templates/member/profile_detail.html:26
+msgid "Update Profile"
+msgstr ""
+
+#: templates/member/profile_detail.html:27
+msgid "Change password"
+msgstr ""
+
+#: templates/member/profile_detail.html:35
+msgid "View my memberships"
+msgstr ""
+
+#: templates/member/profile_update.html:13
+msgid "Save Changes"
+msgstr ""
+
+#: templates/member/signup.html:14
+msgid "Sign Up"
+msgstr ""
+
+#: templates/note/transaction_form.html:35
+msgid "Transfer"
+msgstr ""
+
+#: templates/registration/logged_out.html:8
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr ""
+
+#: templates/registration/logged_out.html:9
+msgid "Log in again"
+msgstr ""
+
+#: templates/registration/login.html:7 templates/registration/login.html:8
+#: templates/registration/login.html:22
+#: templates/registration/password_reset_complete.html:10
+msgid "Log in"
+msgstr ""
+
+#: templates/registration/login.html:13
+#, python-format
+msgid ""
+"You are authenticated as %(username)s, but are not authorized to access this "
+"page. Would you like to login to a different account?"
+msgstr ""
+
+#: templates/registration/login.html:23
+msgid "Forgotten your password or username?"
+msgstr ""
+
+#: templates/registration/password_change_done.html:8
+msgid "Your password was changed."
+msgstr ""
+
+#: templates/registration/password_change_form.html:9
+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 ""
+
+#: templates/registration/password_change_form.html:11
+#: templates/registration/password_reset_confirm.html:12
+msgid "Change my password"
+msgstr ""
+
+#: templates/registration/password_reset_complete.html:8
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr ""
+
+#: templates/registration/password_reset_confirm.html:9
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+
+#: templates/registration/password_reset_confirm.html:15
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used.  Please request a new password reset."
+msgstr ""
+
+#: templates/registration/password_reset_done.html:8
+msgid ""
+"We've emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+
+#: templates/registration/password_reset_done.html:9
+msgid ""
+"If you don't receive an email, please make sure you've entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+
+#: templates/registration/password_reset_form.html:8
+msgid ""
+"Forgotten your password? Enter your email address below, and we'll email "
+"instructions for setting a new one."
+msgstr ""
+
+#: templates/registration/password_reset_form.html:11
+msgid "Reset my password"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index 96da86e15f3170a57421012b625a2b5190e67d6f..0c742fd521770d3a9d615a48efbf0d8255351b43 100644
--- a/locale/fr/LC_MESSAGES/django.po
+++ b/locale/fr/LC_MESSAGES/django.po
@@ -3,7 +3,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-08-14 15:14+0200\n"
+"POT-Creation-Date: 2020-02-06 21:37+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -13,67 +13,67 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: apps/activity/apps.py:11 apps/activity/models.py:70
+#: apps/activity/apps.py:11 apps/activity/models.py:77
 msgid "activity"
 msgstr "activité"
 
-#: apps/activity/models.py:15 apps/activity/models.py:38
-#: apps/member/models.py:59 apps/member/models.py:107
-#: apps/note/models/notes.py:167 apps/note/models/transactions.py:19
+#: apps/activity/models.py:20 apps/activity/models.py:45
+#: apps/member/models.py:61 apps/member/models.py:112
+#: apps/note/models/notes.py:178 apps/note/models/transactions.py:24
 #: templates/member/profile_detail.html:10
 msgid "name"
 msgstr "nom"
 
-#: apps/activity/models.py:19
+#: apps/activity/models.py:24
 msgid "can invite"
 msgstr "peut inviter"
 
-#: apps/activity/models.py:22
+#: apps/activity/models.py:27
 msgid "guest entry fee"
 msgstr "cotisation de l'entrée invité"
 
-#: apps/activity/models.py:26
+#: apps/activity/models.py:31
 msgid "activity type"
 msgstr "type d'activité"
 
-#: apps/activity/models.py:27
+#: apps/activity/models.py:32
 msgid "activity types"
 msgstr "types d'activité"
 
-#: apps/activity/models.py:42
+#: apps/activity/models.py:49
 msgid "description"
 msgstr "description"
 
-#: apps/activity/models.py:48 apps/note/models/notes.py:149
-#: apps/note/models/transactions.py:34 apps/note/models/transactions.py:71
+#: apps/activity/models.py:55 apps/note/models/notes.py:154
+#: apps/note/models/transactions.py:39 apps/note/models/transactions.py:85
 msgid "type"
 msgstr "type"
 
-#: apps/activity/models.py:54
+#: apps/activity/models.py:61
 msgid "organizer"
 msgstr "organisateur"
 
-#: apps/activity/models.py:60
+#: apps/activity/models.py:67
 msgid "attendees club"
 msgstr ""
 
-#: apps/activity/models.py:63
+#: apps/activity/models.py:70
 msgid "start date"
 msgstr "date de début"
 
-#: apps/activity/models.py:66
+#: apps/activity/models.py:73
 msgid "end date"
 msgstr "date de fin"
 
-#: apps/activity/models.py:71
+#: apps/activity/models.py:78
 msgid "activities"
 msgstr "activités"
 
-#: apps/activity/models.py:100
+#: apps/activity/models.py:109
 msgid "guest"
 msgstr "invité"
 
-#: apps/activity/models.py:101
+#: apps/activity/models.py:110
 msgid "guests"
 msgstr "invités"
 
@@ -81,251 +81,252 @@ msgstr "invités"
 msgid "member"
 msgstr "adhérent"
 
-#: apps/member/models.py:24
+#: apps/member/models.py:25
 msgid "phone number"
 msgstr "numéro de téléphone"
 
-#: apps/member/models.py:30 templates/member/profile_detail.html:18
+#: apps/member/models.py:31 templates/member/profile_detail.html:18
 msgid "section"
 msgstr "section"
 
-#: apps/member/models.py:31
+#: apps/member/models.py:32
 msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
 msgstr "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
 
-#: apps/member/models.py:37 templates/member/profile_detail.html:20
+#: apps/member/models.py:38 templates/member/profile_detail.html:20
 msgid "address"
 msgstr "adresse"
 
-#: apps/member/models.py:43
+#: apps/member/models.py:44
 msgid "paid"
 msgstr "payé"
 
-#: apps/member/models.py:48 apps/member/models.py:49
+#: apps/member/models.py:49 apps/member/models.py:50
 msgid "user profile"
 msgstr "profil utilisateur"
 
-#: apps/member/models.py:64
+#: apps/member/models.py:66
 msgid "email"
 msgstr "courriel"
 
-#: apps/member/models.py:69
+#: apps/member/models.py:71
 msgid "membership fee"
 msgstr "cotisation pour adhérer"
 
-#: apps/member/models.py:73
+#: apps/member/models.py:75
 msgid "membership duration"
 msgstr "durée de l'adhésion"
 
-#: apps/member/models.py:74
+#: apps/member/models.py:76
 msgid "The longest time a membership can last (NULL = infinite)."
 msgstr "La durée maximale d'une adhésion (NULL = infinie)."
 
-#: apps/member/models.py:79
+#: apps/member/models.py:81
 msgid "membership start"
 msgstr "début de l'adhésion"
 
-#: apps/member/models.py:80
+#: apps/member/models.py:82
 msgid "How long after January 1st the members can renew their membership."
 msgstr ""
 
-#: apps/member/models.py:85
+#: apps/member/models.py:87
 msgid "membership end"
 msgstr "fin de l'adhésion"
 
-#: apps/member/models.py:86
+#: apps/member/models.py:88
 msgid ""
 "How long the membership can last after January 1st of the next year after "
 "members can renew their membership."
 msgstr ""
 
-#: apps/member/models.py:92 apps/note/models/notes.py:125
+#: apps/member/models.py:94 apps/note/models/notes.py:129
 msgid "club"
 msgstr "club"
 
-#: apps/member/models.py:93
+#: apps/member/models.py:95
 msgid "clubs"
 msgstr "clubs"
 
-#: apps/member/models.py:113
+#: apps/member/models.py:118
 msgid "role"
 msgstr "rôle"
 
-#: apps/member/models.py:114
+#: apps/member/models.py:119
 msgid "roles"
 msgstr "rôles"
 
-#: apps/member/models.py:134
+#: apps/member/models.py:140
 msgid "membership starts on"
 msgstr "l'adhésion commence le"
 
-#: apps/member/models.py:137
+#: apps/member/models.py:143
 msgid "membership ends on"
 msgstr "l'adhésion finie le"
 
-#: apps/member/models.py:141
+#: apps/member/models.py:147
 msgid "fee"
 msgstr "cotisation"
 
-#: apps/member/models.py:145
+#: apps/member/models.py:151
 msgid "membership"
 msgstr "adhésion"
 
-#: apps/member/models.py:146
+#: apps/member/models.py:152
 msgid "memberships"
 msgstr "adhésions"
 
-#: apps/note/admin.py:112 apps/note/models/transactions.py:51
+#: apps/note/admin.py:112 apps/note/models/transactions.py:65
 msgid "source"
 msgstr "source"
 
 #: apps/note/admin.py:120 apps/note/admin.py:148
-#: apps/note/models/transactions.py:27 apps/note/models/transactions.py:57
+#: apps/note/models/transactions.py:32 apps/note/models/transactions.py:71
 msgid "destination"
 msgstr "destination"
 
-#: apps/note/apps.py:15 apps/note/models/notes.py:47
+#: apps/note/apps.py:15 apps/note/models/notes.py:51
 msgid "note"
 msgstr "note"
 
-#: apps/note/models/notes.py:24
+#: apps/note/models/notes.py:28
 msgid "account balance"
 msgstr "solde du compte"
 
-#: apps/note/models/notes.py:25
+#: apps/note/models/notes.py:29
 msgid "in centimes, money credited for this instance"
 msgstr "en centimes, argent crédité pour cette instance"
 
-#: apps/note/models/notes.py:29
+#: apps/note/models/notes.py:33
 msgid "active"
 msgstr "actif"
 
-#: apps/note/models/notes.py:32
+#: apps/note/models/notes.py:36
 msgid ""
 "Designates whether this note should be treated as active. Unselect this "
 "instead of deleting notes."
 msgstr ""
 "Indique si la note est active. Désactiver cela plutôt que supprimer la note."
 
-#: apps/note/models/notes.py:37
+#: apps/note/models/notes.py:41
 msgid "display image"
 msgstr "image affichée"
 
-#: apps/note/models/notes.py:42 apps/note/models/transactions.py:60
+#: apps/note/models/notes.py:46 apps/note/models/transactions.py:74
 msgid "created at"
 msgstr "créée le"
 
-#: apps/note/models/notes.py:48
+#: apps/note/models/notes.py:52
 msgid "notes"
 msgstr "notes"
 
-#: apps/note/models/notes.py:56
+#: apps/note/models/notes.py:60
 msgid "Note"
 msgstr "Note"
 
-#: apps/note/models/notes.py:66 apps/note/models/notes.py:88
+#: apps/note/models/notes.py:70 apps/note/models/notes.py:92
 msgid "This alias is already taken."
 msgstr "Cet alias est déjà pris."
 
-#: apps/note/models/notes.py:103
+#: apps/note/models/notes.py:107
 msgid "user"
 msgstr "utilisateur"
 
-#: apps/note/models/notes.py:107
+#: apps/note/models/notes.py:111
 msgid "one's note"
 msgstr "note d'un utilisateur"
 
-#: apps/note/models/notes.py:108
+#: apps/note/models/notes.py:112
 msgid "users note"
 msgstr "notes des utilisateurs"
 
-#: apps/note/models/notes.py:114
+#: apps/note/models/notes.py:118
 #, python-format
 msgid "%(user)s's note"
 msgstr "Note de %(user)s"
 
-#: apps/note/models/notes.py:129
+#: apps/note/models/notes.py:133
 msgid "club note"
 msgstr "note d'un club"
 
-#: apps/note/models/notes.py:130
+#: apps/note/models/notes.py:134
 msgid "clubs notes"
 msgstr "notes des clubs"
 
-#: apps/note/models/notes.py:136
-#, python-format
-msgid "Note for %(club)s club"
+#: apps/note/models/notes.py:140
+#, fuzzy, python-format
+#| msgid "Note for %(club)s club"
+msgid "Note of %(club)s club"
 msgstr "Note du club %(club)s"
 
-#: apps/note/models/notes.py:155
+#: apps/note/models/notes.py:160
 msgid "special note"
 msgstr "note spéciale"
 
-#: apps/note/models/notes.py:156
+#: apps/note/models/notes.py:161
 msgid "special notes"
 msgstr "notes spéciales"
 
-#: apps/note/models/notes.py:173
+#: apps/note/models/notes.py:184
 msgid "Invalid alias"
 msgstr "Alias invalide"
 
-#: apps/note/models/notes.py:189
+#: apps/note/models/notes.py:200
 msgid "alias"
 msgstr "alias"
 
-#: apps/note/models/notes.py:190
+#: apps/note/models/notes.py:201
 msgid "aliases"
 msgstr "alias"
 
-#: apps/note/models/notes.py:218
+#: apps/note/models/notes.py:229
 msgid "Alias too long."
 msgstr "L'alias est trop long."
 
-#: apps/note/models/notes.py:221
+#: apps/note/models/notes.py:232
 msgid "An alias with a similar name already exists."
 msgstr "Un alias avec un nom similaire existe déjà."
 
-#: apps/note/models/transactions.py:30 apps/note/models/transactions.py:68
+#: apps/note/models/transactions.py:35 apps/note/models/transactions.py:82
 msgid "amount"
 msgstr "montant"
 
-#: apps/note/models/transactions.py:31
+#: apps/note/models/transactions.py:36
 msgid "in centimes"
 msgstr "en centimes"
 
-#: apps/note/models/transactions.py:39
+#: apps/note/models/transactions.py:44
 msgid "transaction template"
 msgstr "modèle de transaction"
 
-#: apps/note/models/transactions.py:40
+#: apps/note/models/transactions.py:45
 msgid "transaction templates"
 msgstr "modèles de transaction"
 
-#: apps/note/models/transactions.py:64
+#: apps/note/models/transactions.py:78
 msgid "quantity"
 msgstr "quantité"
 
-#: apps/note/models/transactions.py:75
+#: apps/note/models/transactions.py:89
 msgid "reason"
 msgstr "raison"
 
-#: apps/note/models/transactions.py:79
+#: apps/note/models/transactions.py:93
 msgid "valid"
 msgstr "valide"
 
-#: apps/note/models/transactions.py:84
+#: apps/note/models/transactions.py:98
 msgid "transaction"
 msgstr "transaction"
 
-#: apps/note/models/transactions.py:85
+#: apps/note/models/transactions.py:99
 msgid "transactions"
 msgstr "transactions"
 
-#: apps/note/models/transactions.py:118
+#: apps/note/models/transactions.py:141
 msgid "membership transaction"
 msgstr "transaction d'adhésion"
 
-#: apps/note/models/transactions.py:119
+#: apps/note/models/transactions.py:142
 msgid "membership transactions"
 msgstr "transactions d'adhésion"
 
@@ -333,11 +334,15 @@ msgstr "transactions d'adhésion"
 msgid "Transfer money from your account to one or others"
 msgstr "Transfert d'argent de ton compte vers un ou plusieurs autres"
 
-#: note_kfet/settings.py:140
+#: note_kfet/settings/base.py:130
+msgid "German"
+msgstr ""
+
+#: note_kfet/settings/base.py:131
 msgid "English"
 msgstr ""
 
-#: note_kfet/settings.py:141
+#: note_kfet/settings/base.py:132
 msgid "French"
 msgstr ""
 
@@ -345,6 +350,30 @@ msgstr ""
 msgid "The ENS Paris-Saclay BDE note."
 msgstr ""
 
+#: templates/member/club_detail.html:10
+#, fuzzy
+#| msgid "membership starts on"
+msgid "Membership starts on"
+msgstr "l'adhésion commence le"
+
+#: templates/member/club_detail.html:12
+#, fuzzy
+#| msgid "membership ends on"
+msgid "Membership ends on"
+msgstr "l'adhésion finie le"
+
+#: templates/member/club_detail.html:14
+#, fuzzy
+#| msgid "membership duration"
+msgid "Membership duration"
+msgstr "durée de l'adhésion"
+
+#: templates/member/club_detail.html:18 templates/member/profile_detail.html:22
+#, fuzzy
+#| msgid "account balance"
+msgid "balance"
+msgstr "solde du compte"
+
 #: templates/member/profile_detail.html:12
 msgid "first name"
 msgstr ""
@@ -355,16 +384,30 @@ msgstr ""
 msgid "username"
 msgstr "nom"
 
-#: templates/member/profile_detail.html:22
+#: templates/member/profile_detail.html:26
 #, fuzzy
-#| msgid "account balance"
-msgid "balance"
-msgstr "solde du compte"
+#| msgid "user profile"
+msgid "Update Profile"
+msgstr "profil utilisateur"
 
-#: templates/member/profile_detail.html:26
+#: templates/member/profile_detail.html:27
 msgid "Change password"
 msgstr ""
 
+#: templates/member/profile_detail.html:35
+#, fuzzy
+#| msgid "memberships"
+msgid "View my memberships"
+msgstr "adhésions"
+
+#: templates/member/profile_update.html:13
+msgid "Save Changes"
+msgstr ""
+
+#: templates/member/signup.html:14
+msgid "Sign Up"
+msgstr ""
+
 #: templates/note/transaction_form.html:35
 msgid "Transfer"
 msgstr "Virement"
diff --git a/note_kfet/settings/base.py b/note_kfet/settings/base.py
index e583d8a6b0edd7e4105f502d0c5442a857b1e46f..af1f474bbf8f8d3e534c5299efd8ec3c644601de 100644
--- a/note_kfet/settings/base.py
+++ b/note_kfet/settings/base.py
@@ -127,6 +127,7 @@ GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.guardian.get_polymorphic_base_c
 LANGUAGE_CODE = 'en'
 
 LANGUAGES = [
+    ('de', _('German')),
     ('en', _('English')),
     ('fr', _('French')),
 ]