diff --git a/src/modules/cs_appendtopic.c b/src/modules/cs_appendtopic.c
index 13d232105..fe21e9cef 100644
--- a/src/modules/cs_appendtopic.c
+++ b/src/modules/cs_appendtopic.c
@@ -236,12 +236,25 @@ static void my_add_languages(void)
         "Sintassi: APPENDTOPIC canale testo\n"
     };
 
+    /* French (US) */
+    char *langtable_fr[] = {
+        /* LNG_CHAN_HELP */
+        "    APPENDTOPIC   Ajoute du texte dans le sujet d'un salon",
+        /* LNG_CHAN_HELP_APPENDTOPIC */
+        "Cette commande permet aux utilisateurs d'ajouter du texte à un sujet\n"
+            "du salon. Quand TOPICLOCK est actif, le sujet est mis à jour et\n"
+            "le nouveau sujet modifié est vérrouillé.",
+        /* LNG_APPENDTOPIC_SYNTAX */
+        "Syntaxe: \002APPENDTOPIC \037canal\037 \037texte\037\002\n"
+    };
+
     moduleInsertLanguage(LANG_EN_US, LNG_NUM_STRINGS, langtable_en_us);
     moduleInsertLanguage(LANG_NL, LNG_NUM_STRINGS, langtable_nl);
     moduleInsertLanguage(LANG_DE, LNG_NUM_STRINGS, langtable_de);
     moduleInsertLanguage(LANG_PT, LNG_NUM_STRINGS, langtable_pt);
     moduleInsertLanguage(LANG_RU, LNG_NUM_STRINGS, langtable_ru);
 	moduleInsertLanguage(LANG_IT, LNG_NUM_STRINGS, langtable_it);
+	moduleInsertLanguage(LANG_FR, LNG_NUM_STRINGS, langtable_fr);
 }
 
 /* EOF */
diff --git a/src/modules/cs_enforce.c b/src/modules/cs_enforce.c
index 542676cfd..27aa964f1 100644
--- a/src/modules/cs_enforce.c
+++ b/src/modules/cs_enforce.c
@@ -464,12 +464,47 @@ static void my_add_languages(void)
         "Forzato %s"
     };
 
+    /* French (FR) */
+    char *langtable_fr[] = {
+        /* LNG_CHAN_HELP */
+        "    ENFORCE    Renforce divers modes et options de salons",
+        /* LNG_ENFORCE_SYNTAX */
+        "Syntaxe: \002ENFORCE \037canal\037 [\037option\037]\002",
+        /* LNG_CHAN_HELP_ENFORCE */
+        "Renforce divers modes et options de salons. Le paramètre \037canal\037\n"
+            "indique pour quel canal renforcer les options ou modes.\n"
+            "Le paramètre \037option\037 indique quels modes et options\n"
+            "renforcer, et peut être SET, SECUREOPS, RESTRICTED, MODES,\n"
+            "ou +R. Par défaut, il est SET.\n"
+            " \n"
+            "Si \037option\037 est SET, cela renforce les options SECUREOPS et RESTRICTED\n"
+            "pour les utilisateur présents sur le canal, si elles sont déjà actives. Indiquez\n"
+            "SECUREOPS pour renforcer l'option SECUREOPS, même si ce n'est pas déjà\n"
+            "activé. Utilisez RESTRICTED pour renforcer l'option RESTRICTED, également\n"
+            "même si ce n'est pas déjà activé.",
+        /* LNG_CHAN_HELP_ENFORCE_R_ENABLED */
+        "Si \037option\037 est MODES, cela renforce le mode de canal +R s'il est\n"
+            "actif. Si +R est spécifié pour \037option\037, le mode de canal +R sera\n"
+            "également renforcé, et même s'il n'est pas déjà actif. S'il n'est pas actif,\n"
+            "les utilisateurs seront bannis pour être sûr qu'ils ne reviennent pas.",
+        /* LNG_CHAN_HELP_ENFORCE_R_DISABLED */
+        "Si \037option\037 est MODES, rien ne sera renforcé, car cela\n"
+            "renforcerait des modes que le serveur Irc ne connait pas. Si +R est\n"
+            "specifié pour \037option\037, un équivalent du mode de canal +R des\n"
+            "autres serveurs Irc sera appliqué. Tous les utilisateurs qui sont sur le canal\n"
+            "mais non identifiés avec leur pseudo d'inscrit seront éjectés et\n"
+            "bannis du canal.",
+        /* LNG_CHAN_RESPONSE */
+        "Renforcé %s"
+    };
+
     moduleInsertLanguage(LANG_EN_US, LNG_NUM_STRINGS, langtable_en_us);
     moduleInsertLanguage(LANG_NL, LNG_NUM_STRINGS, langtable_nl);
     moduleInsertLanguage(LANG_DE, LNG_NUM_STRINGS, langtable_de);
     moduleInsertLanguage(LANG_PT, LNG_NUM_STRINGS, langtable_pt);
     moduleInsertLanguage(LANG_RU, LNG_NUM_STRINGS, langtable_ru);
 	moduleInsertLanguage(LANG_IT, LNG_NUM_STRINGS, langtable_it);
+	moduleInsertLanguage(LANG_FR, LNG_NUM_STRINGS, langtable_fr);
 }
 
 /* EOF */
diff --git a/src/modules/cs_tban.c b/src/modules/cs_tban.c
index da152ce6d..d81ad5682 100644
--- a/src/modules/cs_tban.c
+++ b/src/modules/cs_tban.c
@@ -240,13 +240,21 @@ static void mAddLanguages(void)
         "%s bannato da %s, scadrà automaticamente tra %s"
     };
 
+    char *langtable_fr[] = {
+        "    TBAN       Bannit l'utilisateur pour une période définie",
+        "Syntaxe: \002TBAN \037canal\037 \037pseudo\037 \037durée\037\002",
+        "Bannit un utilisateur d'un canal pour une durée spécifiée.\n"
+            "Si le ban est retiré manuellement avant la fin du délai, il ne sera PAS remis.",
+        "%s banni de %s, avec expiration dans %s"
+    };
+
     moduleInsertLanguage(LANG_EN_US, LANG_NUM_STRINGS, langtable_en_us);
     moduleInsertLanguage(LANG_NL, LANG_NUM_STRINGS, langtable_nl);
     moduleInsertLanguage(LANG_DE, LANG_NUM_STRINGS, langtable_de);
     moduleInsertLanguage(LANG_PT, LANG_NUM_STRINGS, langtable_pt);
     moduleInsertLanguage(LANG_RU, LANG_NUM_STRINGS, langtable_ru);
 	moduleInsertLanguage(LANG_IT, LANG_NUM_STRINGS, langtable_it);
-
+	moduleInsertLanguage(LANG_FR, LANG_NUM_STRINGS, langtable_fr);
 }
 
 
diff --git a/src/modules/hs_request.c b/src/modules/hs_request.c
index 250fb3c14..e0b13ef69 100644
--- a/src/modules/hs_request.c
+++ b/src/modules/hs_request.c
@@ -1032,12 +1032,64 @@ static void my_add_languages(void)
         "Dieser Befehl ist Benutzerfreundlicher. Es ist genau derselbe\n"
             "als wenn man LIST +req benutzt."
     };
+
+    char *langtable_fr[] = {
+        /* LNG_REQUEST_SYNTAX */
+        "Syntaxe: \002REQUEST \037vhost\037\002",
+        /* LNG_REQUESTED */
+        "Votre demande de vHost a été envoyée",
+        /* LNG_REQUEST_WAIT */
+        "Merci d'attendre %d secondes avant de demander un autre vHost",
+        /* LNG_REQUEST_MEMO */
+        "[auto memo] Le vHost \002%s\002 a été demandé.",
+        /* LNG_ACTIVATE_SYNTAX */
+        "Syntaxe: \002ACTIVATE \037pseudo\037\002",
+        /* LNG_ACTIVATED */
+        "Le vHost de %s est activé",
+        /* LNG_ACTIVATE_MEMO */
+        "[auto memo] Votre demande de vHost a été approuvée.",
+        /* LNG_REJECT_SYNTAX */
+        "Syntaxe: \002REJECT \037pseudo\037\002",
+        /* LNG_REJECTED */
+        "Le vHost de %s a été refusé",
+        /* LNG_REJECT_MEMO */
+        "[auto memo] Votre demande de vHost a été refusée.",
+        /* LNG_REJECT_MEMO_REASON */
+        "[auto memo] Votre demande de vHost a été refusée pour le motif suivant : %s",
+        /* LNG_NO_REQUEST */
+        "Aucune demande faite pour %s.",
+        /* LNG_HELP */
+        "    REQUEST     Demander un vHost pour votre pseudo",
+        /* LNG_HELP_SETTER */
+        "    ACTIVATE    Approuver la demande de vHost d'un utilisateur\n"
+            "    REJECT      Refuser la demande de vHost d'un utilisateur\n"
+            "    WAITING     Raccourci de la commande LIST +req",
+        /* LNG_HELP_REQUEST */
+        "Demande le vHost spécifié à être activé pour votre pseudo par les\n"
+            "administrateurs du réseau. Merci d'être patient le temps que votre demande\n"
+            "soit prise en compte.",
+        /* LNG_HELP_ACTIVATE */
+        "Active le vHost demandé pour un pseudo spécifié.",
+        /* LNG_HELP_ACTIVATE_MEMO */
+        "Un mémo informant l'utilisateur de l'activation sera envoyé également.",
+        /* LNG_HELP_REJECT */
+        "Refuse le vHost demandé pour un pseudo spécifié.",
+        /* LNG_HELP_REJECT_MEMO */
+        "Un mémo informant l'utilisateur du refus sera envoyé également.",
+        /* LNG_WAITING_SYNTAX */
+        "Syntaxe: \002WAITING\002",
+        /* LNG_HELP_WAITING */
+        "Cette commande est fournie par commodité. C'est essentiellement\n"
+            "la même que LIST +req ."
+    };
+
     moduleInsertLanguage(LANG_EN_US, LNG_NUM_STRINGS, langtable_en_us);
     moduleInsertLanguage(LANG_NL, LNG_NUM_STRINGS, langtable_nl);
     moduleInsertLanguage(LANG_PT, LNG_NUM_STRINGS, langtable_pt);
     moduleInsertLanguage(LANG_RU, LNG_NUM_STRINGS, langtable_ru);
     moduleInsertLanguage(LANG_IT, LNG_NUM_STRINGS, langtable_it);
-	moduleInsertLanguage(LANG_DE, LNG_NUM_STRINGS, langtable_de);
+    moduleInsertLanguage(LANG_DE, LNG_NUM_STRINGS, langtable_de);
+    moduleInsertLanguage(LANG_FR, LNG_NUM_STRINGS, langtable_fr);
 }
 
 /* EOF */
diff --git a/src/modules/ns_maxemail.c b/src/modules/ns_maxemail.c
index 3f009f5f5..f19a3e6ef 100644
--- a/src/modules/ns_maxemail.c
+++ b/src/modules/ns_maxemail.c
@@ -271,12 +271,20 @@ static void my_add_languages(void)
         "L'indirizzo email specificato ha raggiunto il suo limite d'utilizzo di 1 utente."
     };
 
+    char *langtable_fr[] = {
+        /* LNG_NSEMAILMAX_REACHED */
+        "L'adresse e-mail indiquée a atteint la limite fixée à %d utilisateurs.",
+        /* LNG_NSEMAILMAX_REACHED_ONE */
+        "L'adresse e-mail indiquée a atteint la limite fixée à 1 utilisateur."
+    };
+
     moduleInsertLanguage(LANG_EN_US, LNG_NUM_STRINGS, langtable_en_us);
     moduleInsertLanguage(LANG_NL, LNG_NUM_STRINGS, langtable_nl);
     moduleInsertLanguage(LANG_DE, LNG_NUM_STRINGS, langtable_de);
     moduleInsertLanguage(LANG_PT, LNG_NUM_STRINGS, langtable_pt);
     moduleInsertLanguage(LANG_RU, LNG_NUM_STRINGS, langtable_ru);
     moduleInsertLanguage(LANG_IT, LNG_NUM_STRINGS, langtable_it);
+    moduleInsertLanguage(LANG_FR, LNG_NUM_STRINGS, langtable_fr);
 }
 
 /* EOF */
diff --git a/src/modules/os_info.c b/src/modules/os_info.c
index 73a2b7c50..481285bd4 100644
--- a/src/modules/os_info.c
+++ b/src/modules/os_info.c
@@ -732,13 +732,43 @@ static void m_AddLanguages(void)
         "    OINFO         Aggiunge/Rimuove una linea OperInfo ad/da un canale"
     };
 
+    char *langtable_fr[] = {
+        /* OINFO_SYNTAX */
+        "Syntaxe: \002OINFO [ADD|DEL] \037pseudo\037 \037<info>\037\002",
+        /* OINFO_ADD_SUCCESS */
+        "Ligne OperInfo ajoutée au pseudo %s",
+        /* OINFO_DEL_SUCCESS */
+        "Ligne OperInfo retirée au pseudo %s",
+        /* OCINFO_SYNTAX */
+        "Syntaxe: \002OINFO [ADD|DEL] \037canal\037 \037<info>\037\002",
+        /* OCINFO_ADD_SUCCESS */
+        "Ligne OperInfo ajoutée au canal %s",
+        /* OCINFO_DEL_SUCCESS */
+        "Ligne OperInfo retirée au canal %s",
+        /* OINFO_HELP */
+        "Syntaxe: \002OINFO [ADD|DEL] \037pseudo\037 \037info\037\002\n"
+            "Ajoute ou supprime une information Oper au pseudo spécifié\n"
+            "Elle sera vue par un oper avec la commande /ns info pseudo pour l'utilisateur\n"
+            "et peut être utilisée pour 'taguer' les utilisateurs etc....",
+        /* OCINFO_HELP */
+        "Syntax: \002OINFO [ADD|DEL] \037canal\037 \037info\037\002\n"
+            "Ajoute ou supprime une information Oper au canal spécifié\n"
+            "Elle sera vue par un oper avec la commande /ns info canal pour le canal.\n"
+            "et peut être utilisée pour 'taguer' les canaux etc....",
+        /* OINFO_HELP_CMD */
+        "    OINFO         Ajoute / Supprime une ligne OperInfo à un pseudo",
+        /* OCINFO_HELP_CMD */
+        "    OINFO         Ajoute / Supprime une ligne OperInfo à un canal"
+    };
+
     moduleInsertLanguage(LANG_EN_US, LANG_NUM_STRINGS, langtable_en_us);
     moduleInsertLanguage(LANG_ES, LANG_NUM_STRINGS, langtable_es);
     moduleInsertLanguage(LANG_NL, LANG_NUM_STRINGS, langtable_nl);
     moduleInsertLanguage(LANG_DE, LANG_NUM_STRINGS, langtable_de);
     moduleInsertLanguage(LANG_PT, LANG_NUM_STRINGS, langtable_pt);
     moduleInsertLanguage(LANG_RU, LANG_NUM_STRINGS, langtable_ru);
-	moduleInsertLanguage(LANG_IT, LANG_NUM_STRINGS, langtable_it);
+    moduleInsertLanguage(LANG_IT, LANG_NUM_STRINGS, langtable_it);
+    moduleInsertLanguage(LANG_FR, LANG_NUM_STRINGS, langtable_fr);
 }
 
 /*************************************************************************/
diff --git a/version.log b/version.log
index 85987a072..e8c1d8ae0 100644
--- a/version.log
+++ b/version.log
@@ -8,9 +8,13 @@ VERSION_MAJOR="1"
 VERSION_MINOR="8"
 VERSION_PATCH="8"
 VERSION_EXTRA="-git"
-VERSION_BUILD="3104"
+VERSION_BUILD="3105"
 
 # Changes since 1.8.7 Release
+#Revision 3105 - Added french language support to some modules (patch provided by Coolsmile)
+#Revision 3104 - Updated the Polish language file
+#Revision 3103 - Updated .gitignore
+#Revision 3102 - Cleanup many compile warnings from make and make strict
 #Revision 3101 - Use base 10 for strtol() in the config parser to prevent numbers beginning with 0 from confusing it
 #Revision 3100 - Fix typo in NICK_SASET_MSG_SYNTAX
 #Revision 3098 - Made all module functions static to fix OSX's linker from linking modules with similar function names to each other
