Index: gc_lang/fr/dictionnaire/genfrdic.py
==================================================================
--- gc_lang/fr/dictionnaire/genfrdic.py
+++ gc_lang/fr/dictionnaire/genfrdic.py
@@ -19,10 +19,11 @@
 from distutils import file_util
 from string import Template
 
 import metagraphe
 import metaphone2
+import thes_build
 
 
 # Dictionnaire des caractères pour le tri naturel.
 # Ordre souhaitable, mais pose problème pour la recherche, car engendre des égalités de lemmes différents.
 # Il faut donc travailler sur un dictionnaire trié *numériquement* et le sauvegarder selon le tri *naturel*
@@ -566,14 +567,10 @@
         for dVars in lDictVars:
             dicPath = spBuild + '/' + PREFIX_DICT_PATH + self.sVersion
             file_util.copy_file(dicPath+'/'+dVars['asciiName']+'.dic', spExt+'/dictionaries/'+dVars['asciiName']+'.dic')
             file_util.copy_file(dicPath+'/'+dVars['asciiName']+'.aff', spExt+'/dictionaries/'+dVars['asciiName']+'.aff')
         copyTemplate('orthographe', spExt+'/dictionaries', 'README_dict_fr.txt', dTplVars)
-        # thesaurus
-        file_util.copy_file('thesaurus/thes_fr.dat', spExt+'/dictionaries')
-        file_util.copy_file('thesaurus/thes_fr.idx', spExt+'/dictionaries')
-        file_util.copy_file('thesaurus/README_thes_fr.txt', spExt+'/dictionaries')
         # hyphenation
         file_util.copy_file('césures/hyph_fr.dic', spExt+'/dictionaries')
         file_util.copy_file('césures/hyph_fr.iso8859-1.dic', spExt+'/dictionaries')
         file_util.copy_file('césures/frhyph.tex', spExt+'/dictionaries')
         file_util.copy_file('césures/hyph-fr.tex', spExt+'/dictionaries')
@@ -1502,10 +1499,22 @@
                 hDst.write(str(t)+"\n")
             for e in self.dFlexions.items():
                 hDst.write("{} - {}\n".format(e[0], e[1]))
 
 
+def createThesaurusPackage (spBuild, sVersion, spCopy=""):
+    print("Création du thésaurus")
+    spThesaurus = spBuild+"/thesaurus-v"+sVersion
+    dir_util.mkpath(spThesaurus)
+    thes_build.build("thesaurus/thes_fr.dat", "thesaurus/synsets_fr.dat", spThesaurus)
+    file_util.copy_file('thesaurus/README_thes_fr.txt', spThesaurus)
+    if spCopy:
+        # copy in libreoffice extension package
+        file_util.copy_file(spThesaurus+'/thes_fr.dat', spCopy)
+        file_util.copy_file(spThesaurus+'/thes_fr.idx', spCopy)
+        file_util.copy_file(spThesaurus+'/README_thes_fr.txt', spCopy)
+
 
 def main ():
     xParser = argparse.ArgumentParser()
     xParser.add_argument("-v", "--verdic", help="set dictionary version, i.e. 5.4", type=str, default="X.Y.z")
     xParser.add_argument("-m", "--mode", help="0: no tags,  1: Hunspell tags (default),  2: All tags", type=int, choices=[0, 1, 2], default=1)
@@ -1556,27 +1565,28 @@
     oStatsLex.addLexFromFile('lexique/corpus_data/stats_frwikisource.txt', 'S', 'Wikisource')
     oStatsLex.addLexFromFile('lexique/corpus_data/stats_litterature.txt', 'L', 'Littérature')
     oStatsLex.write(spBuild+'/test_lex.txt')
     oFrenchDict.calculateStats(oStatsLex, spfStats)
 
-    ### écriture des paquets
+    ### Écriture des paquets
     echo("Création des paquets...")
 
     spLexiconDestGL = "../../../lexicons"  if xArgs.grammalecte  else ""
     spLibreOfficeExtDestGL = "../oxt/Dictionnaires/dictionaries"  if xArgs.grammalecte  else ""
     spMozillaExtDestGL = ""  if xArgs.grammalecte  else "" # no more Hunspell dictionaries in Mozilla extensions for now
     spDataDestGL = "../data"  if xArgs.grammalecte  else ""
 
+    ### dictionnaires
     if not xArgs.uncompress:
         oFrenchDict.defineAbreviatedTags(xArgs.mode, spfStats)
     oFrenchDict.createFiles(spBuild, [dTOUTESVAR, dCLASSIQUE, dREFORME1990], xArgs.mode, xArgs.simplify)
     oFrenchDict.createLexiconPackages(spBuild, xArgs.verdic, oStatsLex, spLexiconDestGL)
     oFrenchDict.createFileIfqForDB(spBuild)
+    createThesaurusPackage(spBuild, xArgs.verdic, spLibreOfficeExtDestGL)
     oFrenchDict.createLibreOfficeExtension(spBuild, dMOZEXT, [dTOUTESVAR, dCLASSIQUE, dREFORME1990], spLibreOfficeExtDestGL)
     oFrenchDict.createMozillaExtensions(spBuild, dMOZEXT, [dTOUTESVAR, dCLASSIQUE, dREFORME1990], spMozillaExtDestGL)
     oFrenchDict.createDictConj(spBuild, spDataDestGL)
     oFrenchDict.createDictDecl(spBuild, spDataDestGL)
-
 
 
 if __name__ == '__main__':
     main()

ADDED   gc_lang/fr/dictionnaire/thes_build.py
Index: gc_lang/fr/dictionnaire/thes_build.py
==================================================================
--- /dev/null
+++ gc_lang/fr/dictionnaire/thes_build.py
@@ -0,0 +1,122 @@
+# Thesaurus builder
+
+import os
+import re
+
+
+def readFile (spf):
+    if os.path.isfile(spf):
+        with open(spf, "r", encoding="utf-8") as hSrc:
+            for sLine in hSrc:
+                yield sLine.strip()
+    else:
+        print("# Error. File not found or not loadable: " + spf)
+
+
+
+class ThesaurusBuilder ():
+
+    def __init__ (self):
+        # synsets
+        self.dSynEntry = {}     # {sWord: iSynset}
+        self.dSynset = {}       # {iSynset: lSynset}
+        # thesaurus
+        self.dThesEntry = {}    # {sWord: lWord}
+
+    def readSynsets (self, spf):
+        if not spf:
+            return
+        for i, sLine in enumerate(readFile(spf), 1):
+            sPOS, *lSynset = sLine.split("|")
+            lSynset = self._removeDuplicatesFrom(lSynset)
+            self.dSynset[i] = lSynset
+            for sWord in lSynset:
+                if not sWord.endswith("*"):
+                    if sWord not in self.dSynEntry:
+                        self.dSynEntry[sWord] = [ (sPOS, i) ]
+                    else:
+                        self.dSynEntry[sWord].append( (sPOS, i) )
+
+    def showSynsetEntries (self):
+        for sWord, lSynset in self.dSynEntry.items():
+            for sPOS, iSynset in lSynset:
+                print(sWord, sPOS, "|".join(self.dSynset[iSynset]))
+
+    def readThesaurus (self, spf):
+        if not spf:
+            return
+        genRead = readFile(spf)
+        sLine1 = next(genRead)
+        sEntry = ""
+        iEntryLine = 0
+        nClass = 0
+        nClassFound = 0
+        for i, sLine in enumerate(genRead, 2):
+            sLine = sLine.strip()
+            if re.search(r"^[^|]+\|[1-9][0-9]*$", sLine):
+                # new entry
+                if nClass != nClassFound:
+                    print("Ligne:", iEntryLine, ", nombre de liste incorrect")
+                iEntryLine = i
+                sEntry, sNum = sLine.split("|")
+                self.dThesEntry[sEntry] = []
+                nClass = int(sNum)
+                nClassFound = 0
+            else:
+                # new list of synonyms
+                nClassFound += 1
+                sPOS, *lClass = sLine.split("|")
+                lClass = self._removeDuplicatesFrom(lClass)
+                self.dThesEntry[sEntry].append( (sPOS, lClass) )
+
+    def showThesaurusEntries (self):
+        for sWord, lClass in self.dThesEntry.items():
+            for sPOS, lWord in lClass:
+                print(sWord, sPOS, "|".join(lWord))
+
+    def _removeDuplicatesFrom (self, lWord):
+        return [ sWord.strip()  for sWord  in dict.fromkeys(lWord) ]  # remove duplicates: use <dict.fromkeys()> instead of <set()> to keep order
+
+    def merge (self):
+        for sWord, lSynset in self.dSynEntry.items():
+            for sPOS, iSynset in lSynset:
+                if sWord in self.dThesEntry:
+                    self.dThesEntry[sWord].append( (sPOS, self.dSynset[iSynset]) )
+                else:
+                    self.dThesEntry[sWord] = [ (sPOS, self.dSynset[iSynset]) ]
+
+    def write (self, spDest):
+        nOffset = 0     # the offset for finding data is the number of bytes (-> encoding("utf-8"))
+        dOffset = {}
+        with open(spDest + "/thes_fr.dat", "w", encoding="utf-8", newline="\n") as hThes:
+            sHeader = "UTF-8\n"
+            hThes.write(sHeader)
+            nOffset = len(sHeader.encode("utf-8"))
+            for sWord, lClass in self.dThesEntry.items():
+                dOffset[sWord] = nOffset
+                sWordLine = sWord+"|"+str(len(lClass))+"\n"
+                hThes.write(sWordLine)
+                nOffset += len(sWordLine.encode("utf-8"))
+                for sPOS, lWord in lClass:
+                    sClassLine = sPOS+"|"+"|".join(lWord)+"\n"
+                    hThes.write(sClassLine)
+                    nOffset += len(sClassLine.encode("utf-8"))
+        with open(spDest + "/thes_fr.idx", "w", encoding="utf-8", newline="\n") as hIndex:
+            hIndex.write("UTF-8\n")
+            hIndex.write(str(len(self.dThesEntry))+"\n")
+            for sWord, nOffset in sorted(dOffset.items()):
+                hIndex.write(sWord+"|"+str(nOffset)+"\n")
+
+
+def build (spfThesaurus="", spfSynsets="", spDest="_build"):
+    oThes = ThesaurusBuilder()
+    oThes.readSynsets(spfSynsets)
+    #oThes.showSynsetEntries()
+    oThes.readThesaurus(spfThesaurus)
+    #oThes.showThesaurusEntries()
+    oThes.merge()
+    oThes.write(spDest)
+
+
+if __name__ == '__main__':
+    build("thesaurus/thes_fr.dat", "thesaurus/synsets_fr.dat")

DELETED gc_lang/fr/dictionnaire/thesaurus/create_idx.py
Index: gc_lang/fr/dictionnaire/thesaurus/create_idx.py
==================================================================
--- gc_lang/fr/dictionnaire/thesaurus/create_idx.py
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/usr/bin/python
-# -*- coding: UTF-8 -*-
-
-import sys
-import re
-import codecs
-
-def help ():
-    print ""
-    print "Syntax:"
-    print "thes_convert.py filename"
-
-
-def indexCreation (thfilename):
-    # This method is a modified Python transcription of a Perl script (th_gen_idx.pl) 
-    # made by Kevin B. Hendricks (see MyThes-1.0)
-    """
-    /*
-     * Copyright 2003 Kevin B. Hendricks, Stratford, Ontario, Canada
-     * And Contributors.  All rights reserved.
-     *
-     * Redistribution and use in source and binary forms, with or without
-     * modification, are permitted provided that the following conditions
-     * are met:
-     *
-     * 1. Redistributions of source code must retain the above copyright
-     *    notice, this list of conditions and the following disclaimer.
-     *
-     * 2. Redistributions in binary form must reproduce the above copyright
-     *    notice, this list of conditions and the following disclaimer in the
-     *    documentation and/or other materials provided with the distribution.
-     *
-     * 3. All modifications to the source code must be clearly marked as
-     *    such.  Binary redistributions based on modified source code
-     *    must be clearly marked as modified versions in the documentation
-     *    and/or other materials provided with the distribution.
-     *
-     * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS 
-     * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
-     * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
-     * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL 
-     * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-     * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
-     * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
-     * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-     * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-     * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-     * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-     * SUCH DAMAGE.
-     *
-     */
-    """
-
-    print("Creating the index file for the thesaurus ...")
-    # we read the thesaurus
-    entries = []
-    pattern = re.compile('^[^|]+\|[1-9][0-9]*$')
-    sourcefile = open(thfilename, 'r')
-    encodingline = sourcefile.readline() # encoding
-    fileOffset = len(encodingline)
-    line = sourcefile.readline()
-    i = 2
-    while line != "" :
-        while not re.search(pattern, line) :
-            try:
-                print(u"## Error at line %d. This line is not a new entry:\n%s" % (i, line))
-            except:
-                print(u"## Error at line %d. This line is not a new entry." % i)
-            line = sourcefile.readline()
-            i = i + 1
-        offset = len(line)
-        line = line.rstrip()
-        entry, nbclass = line.split('|')
-        nbcl = int(nbclass)
-        for k in range(nbcl) :
-            line = sourcefile.readline()
-            offset = offset + len(line)
-            i = i + 1
-        entries.append((entry, fileOffset))
-        fileOffset = fileOffset + offset
-        line = sourcefile.readline()
-        i = i + 1
-    sourcefile.close()
-    
-    # we create the index
-    entries.sort(elemsort)
-    idxfilenames = thfilename.rsplit('.', 1)
-    idxfilename = idxfilenames[0] + ".idx"
-    destfile = open(idxfilename, 'w')
-    destfile.write(encodingline)
-    destfile.write("%d\n" % len(entries))
-    for entry in entries :
-        destfile.write("%s|%d\n" % (entry[0], entry[1]))
-    destfile.close()
-    print("Done.")
-
-
-def main ():
-    if len(sys.argv) != 2:
-        help()
-        return False
-    
-    indexCreation(sys.argv[1])
-
-    
-if __name__ == "__main__" :
-    main()

ADDED   gc_lang/fr/dictionnaire/thesaurus/synsets_fr.dat
Index: gc_lang/fr/dictionnaire/thesaurus/synsets_fr.dat
==================================================================
--- /dev/null
+++ gc_lang/fr/dictionnaire/thesaurus/synsets_fr.dat
@@ -0,0 +1,59 @@
+(nom)|aigreur|indignation|rancœur|rancune|dépit|ressentiment|amertume|acrimonie|antipathie|colère
+(nom)|arbre|végétal|baliveau|tige|buisson|feuillu|résineux|arbuste|résinifère|tronc
+(nom)|assemblée|communauté|confrérie|sororité|collectivité|compagnie|association|corporation|congrégation|clergé|coterie|loge|corps|Église|ordre|groupe|société
+(nom)|atout|carte-maîtresse|carte-maitresse|as|joker
+(nom)|âtre|feu|foyer|cheminée|réchaud|fourneau|chaufferette|brasero|chauffe-plat|tison|brasier|fournaise|chauffage|haut-fourneau|four
+(nom)|axe|pivot|essieu|manivelle|bielle|embiellage|pivot|charnière|balancier|bras|arbre|transmission
+(nom)|bordel|foutoir|chantier|désordre|galère|merdier|merde|bazar
+(nom)|cadavre|défunt|mort|trépassé|esprit|spectre|âme|décédé|victime|dépouille|défunt|tué|disparu|martyr|souffre-douleur|corps
+(verb)|capitulez|rendez-vous|acceptez|abandonnez|renoncez|repliez-vous|agenouillez-vous|soumettez-vous
+(adj)|certain|indiscutable|indubitable|concret|positif|précis|net|patent|effectif|solide|sûr|sérieux|visible
+(adj)|charnel|sexuel|physiologique|organique|physique
+(nom)|chef|maître|maitre|responsable|dirigeant|patron|commandant|directeur|supérieur|leader|meneur|propriétaire|employeur|dictateur|tyran
+(nom)|chocolatine|pain au chocolat
+(nom)|clé|clef|rossignol|crochet|sésame|carouble|accès|passe|mot de passe|passe-partout
+(nom)|colère|courroux|animosité|irritation|humeur|malveillance|inimitié|agressivité|haine|emportement|véhémence|ire|rage|exaspération|impatience|déchaînement|explosion|crise|irritation
+(adj)|commun|ordinaire|normal|vulgaire|général|quelconque|terne|habituel|insignifiant|universel|global|consensuel|léger|vague
+(adj)|concret|palpable|réel|matériel|corporel|physique|tangible|visible|solide
+(nom)|conjonction|coïncidence|jonction|association|entremêlement|réunion|rendez-vous
+(nom)|créateur|maître|maitre|dieu|divinité|déité|démiurge|verbe|idole|logos|éternel|père|artiste|maestro|virtuose|répétiteur|musicien
+(nom)|destruction|combustion|calcination|incendie|incinération|oxydation|déflagration|flamboiement|ignition|sinistre|feu
+(nom)|disparu|mort|décédé|trépassé|défunt|tué|passé|oublié|feu
+(nom)|douleur|feu|brûlure|aigreur|ampoule|cloque|inflammation|irradiation|irritation|insolation|ulcération|rougeur|enfer|souffrance
+(nom)|église|temple|mosquée|synagogue|cathédrale|cloître|chapelle|couvent|abbatiale|monastère|oratoire|sanctuaire|asile|basilique|ziggourat|presbytère|monument mégalithique|fanum
+(nom)|entreprise|société|compagnie|holding|groupe|corporation|SARL|SA
+(nom)|épée|sabre|katana|lame|rapière|cimeterre|yatagan|kriss|coupe-chou|glaive|poignard|dague|couteau|fleuret
+(nom)|escrime|épéisme
+(nom)|excrément|merde|selles|bouse|crottin|crotte|caca
+(nom)|famille|lignage|foyer|maison|ménage|dynastie|descendance|progéniture|généalogie|souche|parentèle|race|sang|extraction|lignée|parenté|postérité|ascendance|filiation|racine|tronc|tige|branche
+(nom)|fin|achèvement|extrémité|limite|terme|terminaison|terminus|queue|aboutissement|issue|épilogue|conclusion|dénouement|mort
+(adj)|flou|vague|incertain|indistinct|indécis|brouillé|nébuleux|équivoque|confus|indéterminé|imprécis|obscur|douteux|ténébreux|ambigu|indéfini|vaporeux|brumeux|clair-obscur|évasif|imperceptible|incompréhensible|indiscernable|lâche|indéfinissable|abstrait|sombre|imparfait|approximatif|fumeux|fuligineux|délayé|inclassable|indéterminable|trouble|voilé|sibyllin|nuageux|estompé|inconsistant|diffus
+(adj)|fluctuant|ondulant|changeant|fuyant|inconstant|flottant|vague
+(nom)|force|puissance|énergie|attraction|gravitation|pénétration|portée|effet|ampleur|intensité|amplitude|étendue|immensité|importance|impact|efficacité
+(adj)|foutu|râpé|terminé|fini|déglingué|mort
+(adj)|hésitant|irrésolu|indécis|perplexe|inexpressif|atone|froid|négligé|vague
+(adj)|inanimé|inerte|inactif|crevé|épuisé|immobile|stagnant|dormant|marécageux|stationnaire|mort
+(nom)|lumière|feu|flamme|lanterne|fanal|flambeau|phare|flammes|flambée|flammèche|éblouissement|éclat|étincelle|embrasement|lueur|lumière|clarté|rayon|scintillement|éclair|illumination|fulgurance|luisance|phosphorescence|falot
+(nom)|maladie|mal|crève|grippe|mort
+(interj)|marre|assez|ça suffit|ras le bol|j’en peux plus
+(nom)|matériel|outilllage|fourbi|attirail|barda|matériau|outil|mobilier|équipement|machine|matos|appareillage|instrument|hardware
+(nom)|mentor|maître|maitre|enseignant|éducateur|initiateur|expert|savant|précepteur|formateur|professeur|pion|surveillant|éveilleur|instructeur|moniteur|pédagogue|instituteur|entraîneur|gourou
+(nom)|mort|décès|trépas|agonie|glas|meurtre|anéantissement|disparition|extinction|consommation|suicide|assassinat|fin
+(nom)|noblesse|excellence|sagesse|expérience|plénitude|profondeur|grandeur|élévation|mérite|valeur|maturité|force
+(nom)|ordinateur|calculateur|machine|PC|calculatrice|micro-ordinateur|unité centrale|station|terminal|bécane|computer|tour|portable|ordinant|robot|androïde|gynoïde|marionnette|automate
+(nom)|passion|feu|ardeur|fanatisme|emballement|délire|exaltation|ferveur|fièvre|frénésie|fureur|impétuosité|flamme|élan
+(nom)|pouvoir|autorité|grâce|grandeur|gloire|domination|présence|charisme|influence|ascendant|stature|assurance|impassibilité|force
+(nom)|prostituée|pute|catin|putain|péripatéticienne|hétaïre|courtisane|geisha|asphalteuse|belle-de-nuit|demi-mondaine|femme de mauvaise vie|femme publique|fille publique|fille de joie|fille de mauvaise vie|fille des rues|fleur de macadam|michetonneuse|poule|professionnelle|raccrocheuse|racoleuse|ribaude|sirène|tapineuse|traînée|trimardeuse|turfeuse|bagasse|cocotte|sirène
+(nom)|réalité|réel|matériel|matériau|nature
+(nom)|religion|confession|culte|croyance|Église
+(nom)|rendez-vous|rancard|rancart|rencard|tête-à-tête|entretien|entrevue|audience|assignation|convocation|réunion|rencontre|match
+(nom)|résistance|endurance|dureté|fermeté|invulnérabilité|inflexibilité|solidité|robustesse|patience|force
+(nom)|sang|hémoglobine|plasma|sérum|cruor|sève|fluide vital
+(nom)|seigneur|maître|maitre|roi|prince|empereur|monarque|majesté|magister|régent|sieur|sire|suzerain|hobereau|souverain|châtelain|paladin|aristocrate|franc-maçon|juge
+(nom)|signal|drapeau|balise|déclencheur|déclic|signalement|alarme|feu|alerte
+(nom)|solution|clé|clef|point-clé|réponse|conclusion|dénouement
+(nom)|vague|onde|flot|vaguelette|ressac|marée|lame|flux|reflux|afflux|courant|eau|déferlement|torrent|onde de choc|raz-de-marée|houle|roulis|rut|rush|remous|déferlante|rouleau|fluctuation|déluge|pluie|ondée
+(nom)|vigueur|activité|dynamisme|énergie|force|enthousiasme|sang
+(nom)|vigueur|fougue|sève|activité|sang|tonicité|tonus|punch|verdeur|jeunesse|élan|ressort|impétuosité|dynamisme|impulsivité|vitalité|ardeur|virulence|véhémence|exaltation|force
+(nom)|violence|force|tyrannie|despotisme|contrainte|oppression
+(nom)|volonté|courage|audace|cran|détermination|constance|persévérance|résolution|ténacité|trempe|acharnement|persistance|force

Index: gc_lang/fr/modules/conj_data.py
==================================================================
--- gc_lang/fr/modules/conj_data.py
+++ gc_lang/fr/modules/conj_data.py
cannot compute difference between binary files

Index: gc_lang/fr/modules/phonet_data.py
==================================================================
--- gc_lang/fr/modules/phonet_data.py
+++ gc_lang/fr/modules/phonet_data.py
cannot compute difference between binary files

Index: gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-classique.aff
==================================================================
--- gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-classique.aff
+++ gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-classique.aff
@@ -2,11 +2,11 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “CLASSIQUE” v6.4.1
 # par Olivier R. -- licence MPL 2.0
-# Généré le 15-05-2019 à 08:25
+# Généré le 26-06-2019 à 20:44
 # Pour améliorer le dictionnaire, allez sur https://grammalecte.net/
 
 
 
 SET UTF-8

Index: gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-reforme1990.aff
==================================================================
--- gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-reforme1990.aff
+++ gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-reforme1990.aff
@@ -2,11 +2,11 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “RÉFORME 1990” v6.4.1
 # par Olivier R. -- licence MPL 2.0
-# Généré le 15-05-2019 à 08:25
+# Généré le 26-06-2019 à 20:44
 # Pour améliorer le dictionnaire, allez sur https://grammalecte.net/
 
 
 
 SET UTF-8

Index: gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-toutesvariantes.aff
==================================================================
--- gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-toutesvariantes.aff
+++ gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-toutesvariantes.aff
@@ -2,11 +2,11 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “TOUTES VARIANTES” v6.4.1
 # par Olivier R. -- licence MPL 2.0
-# Généré le 15-05-2019 à 08:25
+# Généré le 26-06-2019 à 20:44
 # Pour améliorer le dictionnaire, allez sur https://grammalecte.net/
 
 
 
 SET UTF-8