...
authorpierre <pierre@esp-at7.crie.i-univ-tlse2.fr>
Thu, 4 Dec 2014 10:47:36 +0000 (11:47 +0100)
committerpierre <pierre@esp-at7.crie.i-univ-tlse2.fr>
Thu, 4 Dec 2014 10:47:36 +0000 (11:47 +0100)
Merge branch 'master' of http://www.iramuteq.org/git/iramuteq

26 files changed:
Liste.py
ProfList.py
analysetxt.py
checkinstall.py
configuration/global.cfg
configuration/iramuteq.cfg
corpus.py
dialog.py
functions.py
guifunct.py
images/splash.png
images/splash.svg
iramuteq.py
iramuteq_en.po
iramuteq_fr_FR.po
layout.py
listlex.py
locale/es_ES/LC_MESSAGES/iramuteq.mo
locale/fr_FR/LC_MESSAGES/iramuteq.mo
locale/it_IT/LC_MESSAGES/iramuteq.mo
locale/pt_PT/LC_MESSAGES/iramuteq.mo
messages.pot
search_tools.py
textsimi.py
textstat.py
tree.py

index 1bd0f0a..daf58f5 100644 (file)
--- a/Liste.py
+++ b/Liste.py
@@ -53,9 +53,9 @@ class ListPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ColumnSorte
         self.attr2.SetBackgroundColour("light blue")
 
         
-        self.InsertColumn(0, 'forme', wx.LIST_FORMAT_RIGHT)
-        self.InsertColumn(1, 'nb', wx.LIST_FORMAT_RIGHT)
-        self.InsertColumn(2, 'type', wx.LIST_FORMAT_RIGHT)
+        self.InsertColumn(0, _(u'Form').decode('utf8'), wx.LIST_FORMAT_RIGHT)
+        self.InsertColumn(1, _(u'Freq.').decode('utf8'), wx.LIST_FORMAT_RIGHT)
+        self.InsertColumn(2, _(u'POS').decode('utf8'), wx.LIST_FORMAT_RIGHT)
         #self.InsertColumn(3, '', wx.LIST_FORMAT_RIGHT)
 
         self.SetColumnWidth(0, 150)   
@@ -160,8 +160,8 @@ class ListPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ColumnSorte
         # make a menu
         menu = wx.Menu()
         # add some items
-        menu.Append(self.popupID1, u"Formes associées")
-        menu.Append(self.popupID2, u"Concordancier")
+        menu.Append(self.popupID1, _(u"Associated forms").decode('utf8'))
+        menu.Append(self.popupID2, _(u"Concordance").decode('utf8'))
 #        menu.Append(self.popupID3, "recharger")
 
         self.PopupMenu(menu)
@@ -188,7 +188,7 @@ class ListPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ColumnSorte
         uce_ok = corpus.getlemuces(item)
         ucis_txt, ucestxt = doconcorde(corpus, uce_ok, [item])
         items = dict([[i, '<br><br>'.join([ucis_txt[i], ucestxt[i]])] for i in range(0,len(ucestxt))])
-        win = message(self, items, u"Concordancier - %s" % item, (800, 500), uceids = uce_ok)
+        win = message(self, items, ' - '.join([_(u"Concordance").decode('utf8'),  "%s" % item]), (800, 500), uceids = uce_ok)
         #win = message(self, u"Concordancier", (750, 600))
         #win.html = ('<html>\n<h1>%s</h1>' % item) + '<br>'.join(['<br>'.join([ucis_txt[i], ucestxt[i]]) for i in range(0,len(ucestxt))]) + '\n</html>'
         #win.HtmlPage.SetPage(win.html)
index b8d368c..1ecb47a 100644 (file)
@@ -20,14 +20,14 @@ import  wx.lib.mixins.listctrl  as  listmix
 #from tabsimi import DoSimi
 from listlex import ListForSpec
 from chemins import ConstructPathOut, ffr
-from dialog import PrefExport, PrefUCECarac, SearchDial, message, MessageImage, BarFrame
-from tableau import Tableau, copymatrix
+from dialog import PrefUCECarac, SearchDial, message, BarFrame
+from tableau import copymatrix
 from search_tools import SearchFrame
 import webbrowser
 #import cStringIO
 import tempfile
 import codecs
-from functions import exec_rcode, progressbar, treat_var_mod, doconcorde
+from functions import progressbar, treat_var_mod, doconcorde
 from PrintRScript import barplot
 from textclassechd import ClasseCHD
 from shutil import copyfile
@@ -45,6 +45,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col
         self.cl = cl
         self.var_mod = {}
         self.them_mod = {}
+        self.ira = wx.GetApp().GetTopWindow()
 
         line1 = profclasse.pop(0)
         classen = [line for line in profclasse if line[0] != '*' and line[0] != '*****']
@@ -245,7 +246,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col
 
     def onsearchall(self, evt) :
         if 'FrameSearch' not in dir(self.Source) :
-            self.Source.FrameSearch = SearchFrame(self.parent, -1, u"Rechercher...", self.Source.corpus)
+            self.Source.FrameSearch = SearchFrame(self.parent, -1, _(u"Search...").decode('utf8'), self.Source.corpus)
         self.dial = SearchDial(self, self.Source.FrameSearch.liste, 1, False)
         self.dial.CenterOnParent()
         self.dial.Show()
@@ -309,37 +310,37 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col
     
             # make a menu
             menu = wx.Menu()
-            menu.Append(self.popupID1, u"Formes associées")
-            menu.Append(self.idtablex, u"Chi2 par classe")
-            menu.Append(self.idlexdendro, u"Chi2 par classe + dendro")
-            menu.Append(self.idchimod, u"Chi2 modalités de la variable")
-            menu.Append(self.idwordgraph, u"Graphe du mot")
+            menu.Append(self.popupID1, _(u"Associated forms").decode('utf8'))
+            menu.Append(self.idtablex, _(u"Chi2 by cluster").decode('utf8'))
+            menu.Append(self.idlexdendro, _(u"Chi2 by cluster on dendrogram").decode('utf8'))
+            menu.Append(self.idchimod, _(u"Chi2 modalities of variable").decode('utf8'))
+            menu.Append(self.idwordgraph, _(u"Word graph").decode('utf8'))
             #menu.Append(self.export_classes, u"Exporter le corpus...") 
             
             #menu.Append(self.popupID10, u"Spécificités")
 
             menu_conc = wx.Menu()
-            menu_conc.Append(self.popupID2, u"dans les segments de texte de la classe")
-            menu_conc.Append(self.popupID3, u"dans les segments de texte classés")
-            menu_conc.Append(self.popupID4, u"dans tous les segments de texte")
-            menu.AppendMenu(-1, u"Concordancier", menu_conc)
+            menu_conc.Append(self.popupID2, _(u"In segments of this cluster").decode('utf8'))
+            menu_conc.Append(self.popupID3, _(u"In segments of this clustering").decode('utf8'))
+            menu_conc.Append(self.popupID4, _(u"In all segments").decode('utf8'))
+            menu.AppendMenu(-1, _(u"Concordance").decode('utf8'), menu_conc)
             menu.Append(self.onmaketgen, _(u"Make Tgen").decode('utf8'))
             menu_cnrtl = wx.Menu()      
-            menu_cnrtl.Append(self.popupID5, u"Définition")
-            menu_cnrtl.Append(self.popupID6, u"Etymologie")
-            menu_cnrtl.Append(self.popupID7, u"Synonymie")
-            menu_cnrtl.Append(self.popupID8, u"Antonymie")
-            menu_cnrtl.Append(self.popupID9, u"Morphologie")
-            menu_cnrtl.Append(self.popup_proxe, u"Proxémie")
-            menu.AppendMenu(-1, u"Outils du CNRTL", menu_cnrtl)
+            menu_cnrtl.Append(self.popupID5, _(u"Definition").decode('utf8'))
+            menu_cnrtl.Append(self.popupID6, _(u"Etymology").decode('utf8'))
+            menu_cnrtl.Append(self.popupID7, _(u"Synonymous").decode('utf8'))
+            menu_cnrtl.Append(self.popupID8, _(u"Antonym").decode('utf8'))
+            menu_cnrtl.Append(self.popupID9, _(u"Morphology").decode('utf8'))
+            menu_cnrtl.Append(self.popup_proxe, _(u"Proxemy").decode('utf8'))
+            menu.AppendMenu(-1, _(u"Tools from CNRTL (french only)").decode('utf8'), menu_cnrtl)
             menu.AppendSeparator()
-            menu.Append(self.popupIDgraph, u"Graphe de la classe")
-            menu.Append(self.idseg, u"Segments répétés")
-            menu.Append(self.iducecarac, u"Segments de texte caractéristiques")
-            menu.Append(self.idcloud, u"Nuage de la classe")
-            menu.Append(self.idexport, u'Exporter...')
-            menu.Append(self.idexporttropes, 'Exporter pour Tropes')
-            menu.Append(self.idexportowledge, 'Exporter pour Owledge')
+            menu.Append(self.popupIDgraph, _(u"Graph of cluster").decode('utf8'))
+            menu.Append(self.idseg, _(u"Repeated segments").decode('utf8'))
+            menu.Append(self.iducecarac, _(u"Typical text segments").decode('utf8'))
+            menu.Append(self.idcloud, _(u"Word cloud of cluster").decode('utf8'))
+            menu.Append(self.idexport, _(u'Export...').decode('utf8'))
+            menu.Append(self.idexporttropes, _(u'Export for Tropes').decode('utf8'))
+            menu.Append(self.idexportowledge, _('Exporter for Owledge').decode('utf8'))
             #menu.Append(self.popupID2, u"Concordancier")
     #        menu.Append(self.popupID3, "recharger")
     
@@ -355,10 +356,10 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col
                 self.Bind(wx.EVT_MENU, self.quest_var_mod, id=self.pop3)
 
             menu = wx.Menu()
-            menu.Append(self.pop2, u"Chi2 par classe")
-            menu.Append(self.pop3, u"Chi2 modalités de la variable")
+            menu.Append(self.pop2, _(u"Chi2 by cluster").decode('utf8'))
+            menu.Append(self.pop3, _(u"Chi2 modalities of variable").decode('utf8'))
             menu.AppendSeparator()
-            menu.Append(self.pop1, u"Graphe de la classe")
+            menu.Append(self.pop1, _(u"Graph of cluster").decode('utf8'))
             self.PopupMenu(menu)
             menu.Destroy()
 
@@ -424,7 +425,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col
     def quest_var_mod(self, evt) :  
         word = self.getselectedwords()[0]
         if len(word.split('_')) <= 1 :
-            dial = wx.MessageDialog(self, u"Ce n'est pas une forme du type variable_modalité", u"Problème", wx.OK | wx.ICON_WARNING)
+            dial = wx.MessageDialog(self, _(u"This is not a variable_modality form").decode('utf8'), _(u"Problem").decode('utf8'), wx.OK | wx.ICON_WARNING)
             dial.CenterOnParent()
             dial.ShowModal()
             dial.Destroy()
@@ -458,7 +459,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col
         try :
             words = [word for word in var_mod[var[0]]]
         except KeyError:
-            dial = wx.MessageDialog(self, _(u"This is not a meta-data"), u"Problème", wx.OK | wx.ICON_WARNING)
+            dial = wx.MessageDialog(self, _(u"This is not a meta-data").decode('utf8'), _(u"Problem").decode('utf8'), wx.OK | wx.ICON_WARNING)
             dial.CenterOnParent()
             dial.ShowModal()
             dial.Destroy()
@@ -546,7 +547,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col
                         'lem' : self.Source.parametres['lem'],
                         'tmpchi' : self.tmpchi}
         #try :
-        self.parent.SimiFromCluster(self.parent, self.Source.corpus, self.la, self.lfreq, self.lchi, self.cl - 1, parametres = parametres, dlg = progressbar(self, 4))
+        self.parent.SimiFromCluster(self.parent, self.Source.corpus, self.la, self.lfreq, self.lchi, self.cl - 1, parametres = parametres, dlg = progressbar(self.ira, 4))
         #except :
         #    print 'not acitve'
 
@@ -560,7 +561,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col
                         'lem' : self.Source.parametres['lem'],
                         'tmpchi' : self.tmpchi}
 
-        self.parent.SimiFromCluster(self.parent, self.Source.corpus, self.la, self.lfreq, self.lchi, self.cl - 1, parametres = parametres, dlg = progressbar(self, 4))
+        self.parent.SimiFromCluster(self.parent, self.Source.corpus, self.la, self.lfreq, self.lchi, self.cl - 1, parametres = parametres, dlg = progressbar(self.ira, 4))
 
     def on_segments(self,evt) :
         dlg = progressbar(self, 2)
@@ -586,7 +587,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col
         first = ['','','']
         para={'dico': d,'fline':first}
         dlg.Destroy()
-        win = wliste(self, -1, u"Segments répétés - Classe %i" % self.cl, d, first, size=(600, 500))
+        win = wliste(self, -1, ' - '.join([_(u"Repeated segments").decode('utf8'), "Classe %i" % self.cl]), d, first, size=(600, 500))
         win.Show(True)
 
     def on_uce_carac(self,evt) :
@@ -617,11 +618,11 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col
             dlg.Update(3, u'concordancier...')
             ucis_txt, ucestxt = doconcorde(corpus, nuces, self.la, uci = uci)
             items = dict([[i, '<br>'.join([ucis_txt[i], '<table bgcolor = #1BF0F7 border=0><tr><td><b>score : %.2f</b></td></tr></table><br>' % ntab2[i][0], ucestxt[i]])] for i, uce in enumerate(nuces)])
-            dlg.Update(4, u'texte...')
-            win = message(self, items, u"Segments de texte caractéristiques - Classe %i" % self.cl, (750, 600), uceids = nuces)
+            dlg.Destroy()
+            win = message(self, items, ' - '.join([_(u"Typical text segments").decode('utf8'), "Classe %i" % self.cl]), (750, 600), uceids = nuces)
+            #win.SetWindowStyle(wx.STAY_ON_TOP)
             #win.html = '<html>\n' + '<br>'.join(['<br>'.join([ucis_txt[i], '<table bgcolor = #1BF0F7 border=0><tr><td><b>score : %.2f</b></td></tr></table>' % ntab2[i][0], ucestxt[i]]) for i in range(0,len(ucestxt))]) + '\n</html>'
             #win.HtmlPage.SetPage(win.html)
-            dlg.Destroy()
             win.Show(True)
     
     def on_tablex(self, evt):
@@ -684,19 +685,19 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col
         if 'corpus' in dir(self.Source) :
             corpus = self.Source.corpus
             uces = corpus.lc[self.cl-1]
-            win = self.make_concord(uces, "Concordancier - Classe %i" % self.cl)
+            win = self.make_concord(uces, ' - '.join([_(u"Concordance").decode('utf8'), "Classe %i" % self.cl]))
             win.Show(True)
     
     def OnPopupThree(self, event):
         corpus = self.Source.corpus
         uces = [classe[i] for classe in corpus.lc for i in range(0,len(classe))]
-        win = self.make_concord(uces, "Concordancier - Segments de texte classés")
+        win = self.make_concord(uces, ' - '.join([_(u"Concordance").decode('utf8'), _(u"Segments of this clustering").decode('utf8')]))
         win.Show(True)
         
     def OnPopupFour(self, event):
         corpus = self.Source.corpus
         uces = [classe[i] for classe in corpus.lc for i in range(0,len(classe))] + corpus.lc0
-        win = self.make_concord(uces, "Concordancier - Tous les segments de texte")
+        win = self.make_concord(uces, ' - '.join([_(u"Concordance").decode('utf8'), _(u"All segments").decode('utf8')]))
         win.Show(True)
 
     def OnPopupFive(self, event):
@@ -750,7 +751,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col
         rep.sort(key = itemgetter(1), reverse = True)
         #win = message(self, u"Formes associées", wx.Size(300, 200))
         items = dict([[i, '\t:\t'.join([str(val) for val in forme])] for i, forme in enumerate(rep)])
-        win = message(self, items, u"Formes associées", (300, 200))
+        win = message(self, items, _(u"Associated forms").decode('utf8'), (300, 200))
         #win.html = '<html>\n' + '<br>'.join([' : '.join([str(val) for val in forme]) for forme in rep]) + '\n</html>'
         #win.HtmlPage.SetPage(win.html)
         win.Show(True)
@@ -763,7 +764,7 @@ class wliste(wx.Frame):
     def __init__(self, parent, id, title, d, fline, size=(600, 500)):
         wx.Frame.__init__(self, parent, id)
         self.liste = ListForSpec(self, parent, d, fline[1:], menu = False)
-        self.button_1 = wx.Button(self, -1, "Fermer")
+        self.button_1 = wx.Button(self, -1, _(u"Close").decode('utf8'))
         self.Bind(wx.EVT_BUTTON, self.OnCloseMe, self.button_1)
         self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
         self.__do_layout()
index cc99482..cf2b231 100644 (file)
@@ -50,6 +50,7 @@ class AnalyseText :
             if not self.parametres.get('dictionary', False) :
                 self.corpus.make_lems(lem=self.parametres['lem'])
             else :
+                print 'read new dico'
                 dico = ReadDicoAsDico(self.parametres['dictionary'])
                 self.corpus.make_lems_from_dict(dico, dolem=self.parametres['lem'])
                 dictname = os.path.basename(self.parametres['dictionary'])
index 34b3748..e7dca8a 100644 (file)
@@ -23,26 +23,48 @@ def IsNew(self):
         version_user = self.pref.get('iramuteq','version_nb').split('.')
     except NoOptionError :
         return True
+    userab = False
+    globab = False
     if version_user :
         version_user[0] = int(version_user[0])
         version_user[1] = int(version_user[1])
         version_glob[0] = int(version_glob[0])
         version_glob[1] = int(version_glob[1])
+        if len(version_user) == 3 :
+            if 'a' in version_user[2] :
+                userab = 'a'
+                version_user[2] = int(version_user[2].replace('a', ''))
+            elif 'b' in version_user[2] :
+                userab = 'b'
+                version_user[2] = int(version_user[2].replace('b', ''))
+            else :
+                version_user[2] = int(version_user[2])
+        if len(version_glob) == 3 :
+            if 'a' in version_glob[2] :
+                globab = 'a'
+                version_glob[2] = int(version_glob[2].replace('a', ''))
+            elif 'b' in version_glob[2] :
+                globab = 'b'
+                version_glob[2] = int(version_glob[2].replace('b', ''))
+            else :
+                version_glob[2] = int(version_glob[2])
         if len(version_user) == len(version_glob) :
             if version_glob > version_user :
                 return True
+            elif version_glob == version_user :
+                if globab == userab :
+                    return False
+                elif globab > userab :
+                    return True
+                else :
+                    return False
             else :
                 return False
-        if len(version_glob) == 2 :
-            if version_glob[:2] >= version_user[:2] :
+        else :
+            if version_glob > version_user :
                 return True
             else :
                 return False
-        elif len(version_glob) == 3 :
-            if version_glob[:2] <= version_user[:2] :
-                return False
-            else :
-                return True
 
 def UpgradeConf(self) :
     log.info('upgrade conf')
index fa99eef..6c92be5 100644 (file)
@@ -6,6 +6,6 @@ copyright = (c) 2008-2014 Pierre Ratinaud
 author = Pierre Ratinaud
 gpl-fr = gpl-2.0-fr.txt
 dev = Pierre Ratinaud (Université de Toulouse - Laboratoire LERASS - ratinaud@univ-tlse2.fr);Sébastien Déjean (Université de Toulouse);David Skalinder (Mash Strategy - davids@mash.uk.com);
-version = 0.6 alpha 11
+version = 0.6 alpha 14
 licence = GNU GPL (v2)
-version_nb = 0.6.a11
\ No newline at end of file
+version_nb = 0.6.a14
\ No newline at end of file
index eb15ab1..6f1b59e 100644 (file)
@@ -5,7 +5,7 @@ language=french
 guilanguage=french
 R_mem = false
 R_max_mem = 1535
-version_nb = 0.6.a11
+version_nb = 0.6.a14
 rlibs = false
 libsvdc = false
 libsvdc_path = /usr/bin/svd
index 011206f..6e667b3 100644 (file)
--- a/corpus.py
+++ b/corpus.py
@@ -1597,6 +1597,8 @@ class Builder :
                 filein = parametres['dictionary']
             else :
                 filein = None
+            if dial.corpusname.GetValue() != '' :
+                parametres['corpus_name'] = dial.corpusname.GetValue()
             dial.Destroy()
             ReadLexique(self.parent, lang = parametres['lang'], filein = filein)
             if parametres['lang'] != 'other' and  os.path.exists(self.parent.DictPath.get(parametres['lang']+'_exp', 'french_exp')):
index 14b8a24..e063cda 100755 (executable)
--- a/dialog.py
+++ b/dialog.py
@@ -543,9 +543,9 @@ class PrefGraph(wx.Dialog):
         self.paramgraph=paramgraph
         self.labeltype = wx.StaticText(self, -1, _(u"Graphic type").decode('utf8'))
         if self.paramgraph['clnb'] <= 3 :
-            choix = [u'2D', 'web 2D']
+            choix = [u'2D']#, 'web 2D']
         else :
-            choix=[u'2D' ,u'3D', 'web 2D', 'web 3D']
+            choix=[u'2D' ,u'3D']#, 'web 2D', 'web 3D']
         self.choicetype = wx.Choice(self, -1, (100,50), choices=choix)
         self.label_format = wx.StaticText(self, -1, _(u"Picture format").decode('utf8'))
         self.choix_format =  wx.Choice(self, -1, (100,50), choices = ['png', 'svg'])        
@@ -1038,7 +1038,7 @@ class PrefSimpleFile(wx.Dialog):
 class StatDialog ( wx.Dialog ):
     
     def __init__( self, parent, keys ):
-        wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = u"Settings", pos = wx.DefaultPosition, size = wx.Size( -1,-1 ), style = wx.DEFAULT_DIALOG_STYLE )
+        wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = _(u"Settings").decode('utf8'), pos = wx.DefaultPosition, size = wx.Size( -1,-1 ), style = wx.DEFAULT_DIALOG_STYLE )
         
         self.fileout = ""
         self.parent = parent
@@ -1049,27 +1049,27 @@ class StatDialog ( wx.Dialog ):
         
         gSizer1 = wx.GridSizer( 0, 2, 0, 0 )
         
-        self.m_staticText1 = wx.StaticText( self, wx.ID_ANY, u"Lemmatization", wx.DefaultPosition, wx.DefaultSize, 0 )
+        self.m_staticText1 = wx.StaticText( self, wx.ID_ANY, _(u"Lemmatization").decode('utf8'), wx.DefaultPosition, wx.DefaultSize, 0 )
         self.m_staticText1.Wrap( -1 )
         gSizer1.Add( self.m_staticText1, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
         
-        radio_lemChoices = [ u"yes", u"no" ]
+        radio_lemChoices = [ _(u"yes").decode('utf8'), _(u"no").decode('utf8') ]
         self.radio_lem = wx.RadioBox( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, radio_lemChoices, 1, wx.RA_SPECIFY_COLS )
         self.radio_lem.SetSelection( 0 )
         gSizer1.Add( self.radio_lem, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT|wx.ALL, 5 )
         
-        self.m_staticText2 = wx.StaticText( self, wx.ID_ANY, u"Keys properties", wx.DefaultPosition, wx.DefaultSize, 0 )
+        self.m_staticText2 = wx.StaticText( self, wx.ID_ANY, _(u"Keys properties").decode('utf8'), wx.DefaultPosition, wx.DefaultSize, 0 )
         self.m_staticText2.Wrap( -1 )
         gSizer1.Add( self.m_staticText2, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
         
-        self.button_5 = wx.Button( self, wx.ID_PREFERENCES, u"properties", wx.DefaultPosition, wx.DefaultSize, 0 )
+        self.button_5 = wx.Button( self, wx.ID_PREFERENCES, _(u"properties").decode('utf8'), wx.DefaultPosition, wx.DefaultSize, 0 )
         gSizer1.Add( self.button_5, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT|wx.ALL, 5 )
         
-        self.m_staticText3 = wx.StaticText( self, wx.ID_ANY, u"Dictionary", wx.DefaultPosition, wx.DefaultSize, 0 )
+        self.m_staticText3 = wx.StaticText( self, wx.ID_ANY, _(u"Dictionary").decode('utf8'), wx.DefaultPosition, wx.DefaultSize, 0 )
         self.m_staticText3.Wrap( -1 )
         gSizer1.Add( self.m_staticText3, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
         
-        radio_dictchoiceChoices = [ u"indexation", u"other" ]
+        radio_dictchoiceChoices = [ _(u"indexation").decode('utf8'), _(u"other").decode('utf8') ]
         self.radio_dictchoice = wx.RadioBox( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, radio_dictchoiceChoices, 1, wx.RA_SPECIFY_COLS )
         self.radio_dictchoice.SetSelection( 0 )
         gSizer1.Add( self.radio_dictchoice, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT|wx.ALL, 5 )
@@ -1739,6 +1739,7 @@ class OptLexi(wx.Dialog):
             self.label = wx.StaticText(self, -1, _(u"Minimum frequency").decode('utf8'))
             self.spin = wx.SpinCtrl(self, -1, min = 1, max = 10000, initial = 10)
         self.Bind(wx.EVT_CHOICE, self.onselect, self.choice)
+        self.Bind(wx.EVT_LISTBOX, self.onchoose, self.list_box_1)
         self.__set_properties()
         self.__do_layout()
         # end wxGlade
@@ -1750,6 +1751,7 @@ class OptLexi(wx.Dialog):
             self.spin.SetValue(10)
         self.choice.SetSelection(0)
         self.choice_indice.SetSelection(0)
+        self.button_1.Enable(False)
         #self.SetMinSize(wx.Size(300, 400))
         # end wxGlade
 
@@ -1789,7 +1791,18 @@ class OptLexi(wx.Dialog):
         else :
             for et in self.listet :
                 self.list_box_1.Append(et)
-
+    
+    def onchoose(self, evt):
+        if self.choice.GetSelection()== 0 :
+            if len(self.list_box_1.GetSelections()) > 0 :
+                self.button_1.Enable(True)
+            else :
+                self.button_1.Enable(False)
+        elif self.choice.GetSelection() == 1 :
+            if len(self.list_box_1.GetSelections()) > 1 :
+                self.button_1.Enable(True)
+            else :
+                self.button_1.Enable(False)    
 
 class PrefDendro ( wx.Dialog ):
     
@@ -2600,10 +2613,11 @@ class ConcordList(wx.HtmlListBox):
 
 class message(wx.Frame):
     def __init__(self, parent, items, title, size, save = True, uceids = None):
-        wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = title, pos = wx.DefaultPosition, size = size, style = wx.DEFAULT_FRAME_STYLE )
+        wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = title, pos = wx.DefaultPosition, size = size, style = wx.CLOSE_BOX|wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT|wx.TAB_TRAVERSAL )
         self.save = save
         self.uceids = uceids
-        self.ira = wx.GetApp().GetTopWindow() 
+        self.ira = wx.GetApp().GetTopWindow()
+        self.SetIcon(self.ira._icon)
         self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )
         self.items = items
         self.html = ""
@@ -2793,44 +2807,6 @@ class ExtractDialog ( wx.Dialog ):
     def __del__( self ):
         pass
 
-# class FreqDialog(wx.Dialog):
-#     def __init__(self, parent, ID, listcol, title, size) :
-#         wx.Dialog.__init__(self, parent, ID, title, size=size, pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE | wx.CANCEL | wx.OK )
-#         pre = wx.PreDialog()
-#         pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP)
-#         pre.Create(parent, ID, title, wx.DefaultPosition, size, wx.DEFAULT_DIALOG_STYLE | wx.CANCEL | wx.OK)
-#         self.PostCreate(pre)
-#         self.parent = parent 
-#         sizer = wx.BoxSizer(wx.VERTICAL)
-#         #self.content = parent.content
-#         self.header = listcol
-#         #LABELLIST = []
-#         #for i in self.header:
-#         #    forme = i
-#         #    if len(forme) > 60 :
-#         #        LABELLIST.append(i[0:60])
-#         #    else:
-#         #        LABELLIST.append(i)
-#         self.list_box_1 = wx.ListBox(self, -1, choices=self.header, style=wx.LB_EXTENDED | wx.LB_HSCROLL)
-#         sizer.Add(self.list_box_1, 0, 5)
-#         
-#         btnsizer = wx.BoxSizer(wx.HORIZONTAL)
-#         
-#         btn = wx.Button(self, wx.ID_CANCEL)
-#         btnsizer.Add(btn)
-#         
-#         btn = wx.Button(self, wx.ID_OK)
-#         btn.SetDefault()
-#         btnsizer.Add(btn)
-#         
-#         sizer.Add(btnsizer, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_CENTER_HORIZONTAL, 5)
-#         self.SetSizer(sizer)
-#         sizer.Fit(self)
-#         self.SetTitle(_(u"Selection").decode('utf8'))
-#   
-        # end wxGlade
-
-
 class FreqDialog ( wx.Dialog ):
     
     def __init__( self, parent, listcol, title, size =  wx.Size( -1,-1 ), showNA = True):
@@ -3202,14 +3178,16 @@ class BarGraphDialog ( wx.Dialog ):
 
 class MessageImage(wx.Frame):
     def __init__(self, parent, parametres, title, size):
-        wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = title, pos = wx.DefaultPosition, size = size, style = wx.DEFAULT_FRAME_STYLE )
+        wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = title, pos = wx.DefaultPosition, size = size, style = wx.CLOSE_BOX|wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT|wx.TAB_TRAVERSAL )
+        self.ira = wx.GetApp().GetTopWindow()
+        self.SetIcon(self.ira._icon)
         self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )
         self.parametres = parametres
         self.imageFile = self.parametres['tmpgraph']
         if parametres['svg'] == 'TRUE' :
             self.imagename = u"image.svg"
         else :
-            self.imagename = u"iamge.png"
+            self.imagename = u"image.png"
         self.HtmlPage = wx.html.HtmlWindow(self, -1)
         self.HtmlPage.SetMinSize(size)
         if "gtk2" in wx.PlatformInfo:
index 6ad088d..6373176 100644 (file)
@@ -189,6 +189,19 @@ class History :
 
     def rmtab(self, analyse) :
         del self.opened[analyse['uuid']]
+    
+    def update(self, analyse) :
+        if 'matrix_name' in analyse :
+            self.matrixanalyse[analyse['uuid']].update(analyse)
+        elif 'corpus_name' in analyse :
+            self.corpus[analyse['uuid']].update(analyse)
+        elif 'corpus' in analyse :
+            self.analyses[analyse['uuid']].update(analyse)
+        else :
+            toupdate = [an for an in self.matrixanalyse[analyse['matrix']]['analyses'] if an['uuid'] == analyse['uuid']]
+            toupdate[0].update(analyse)
+        self.write()
+        self.read()
 
     def clean(self) :
         corpustodel = [corpus for corpus in self.history if not os.path.exists(corpus['ira'])]
index 6280e94..c20ee70 100644 (file)
@@ -250,7 +250,7 @@ class PrefSimi ( wx.Dialog ):
         self.m_staticText5.Wrap( -1 )
         fgSizer3.Add( self.m_staticText5, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
         
-        choice3Choices = [ u"dynamique", u"statique", u"3D", u'web2D', u"web3D" ]
+        choice3Choices = [ u"dynamique", u"statique", u"3D"]#, u'web2D', u"web3D" ]
         self.choice3 = wx.Choice( self.m_panel2, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, choice3Choices, 0 )
         self.choice3.SetSelection( 0 )
 
@@ -728,16 +728,6 @@ class PrefSimi ( wx.Dialog ):
         self.__set_properties()
  
         # Connect Events
-       # if not self.paramsimi['first'] :
-       #     self.check_coord.Bind( wx.EVT_CHECKBOX, self.OnKeepCoords )
-       # self.choice3.Bind( wx.EVT_CHOICE, self.OnChangeType )
-       # self.check2.Bind( wx.EVT_CHECKBOX, self.OnCheck2 )
-       # self.checki.Bind( wx.EVT_CHECKBOX, self.OnChecki )
-       # self.check_vcex.Bind( wx.EVT_CHECKBOX, self.OnCheck_vcex )
-       # self.checkit.Bind( wx.EVT_CHECKBOX, self.OnCheckit )
-       # self.check_s_size.Bind( wx.EVT_CHECKBOX, self.OnCheck_s_size )
-        
-        # Connect Events
         if not self.paramsimi['first'] :
             self.check_coord.Bind( wx.EVT_CHECKBOX, self.OnKeepCoords )
         self.choice3.Bind( wx.EVT_CHOICE, self.OnChangeType )
@@ -923,19 +913,22 @@ class PrepSimi :
                         self.parametres['listet'] = self.etline
                     else:
                         vardial.Destroy()
-            last = self.dial.listcol.GetFirstSelected()
-            lastl = [self.dial.listcol.GetFirstSelected()]
-            indexes = [self.dial.listcol.getColumnText(self.dial.listcol.GetFirstSelected(),0)]
-            while self.dial.listcol.GetNextSelected(last) != -1:
-                last = self.dial.listcol.GetNextSelected(last)
-                lastl.append(last)
-                indexes.append(self.dial.listcol.getColumnText(last,0))
-            column = [actives.index(val) for val in indexes]
-            column.sort()
-            with open(pathout, 'w') as f :
-                f.write('\n'.join([`val` for val in column]))
-            self.make_param()
-            self.dial.Destroy()
+                        self.val = False
+                        self.dial.Destroy()
+            if self.val :
+                last = self.dial.listcol.GetFirstSelected()
+                lastl = [self.dial.listcol.GetFirstSelected()]
+                indexes = [self.dial.listcol.getColumnText(self.dial.listcol.GetFirstSelected(),0)]
+                while self.dial.listcol.GetNextSelected(last) != -1:
+                    last = self.dial.listcol.GetNextSelected(last)
+                    lastl.append(last)
+                    indexes.append(self.dial.listcol.getColumnText(last,0))
+                column = [actives.index(val) for val in indexes]
+                column.sort()
+                with open(pathout, 'w') as f :
+                    f.write('\n'.join([`val` for val in column]))
+                self.make_param()
+                self.dial.Destroy()
         else :
             self.dial.Destroy()
 
index 4396bf1..9b6d61a 100644 (file)
Binary files a/images/splash.png and b/images/splash.png differ
index b0138d5..c17ed19 100644 (file)
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="false"
-     inkscape:window-width="2878"
-     inkscape:window-height="1778"
-     inkscape:window-x="0"
-     inkscape:window-y="20"
+     inkscape:window-width="2837"
+     inkscape:window-height="1776"
+     inkscape:window-x="43"
+     inkscape:window-y="24"
      inkscape:window-maximized="1"
      showguides="true"
      inkscape:guide-bbox="true">
            x="110.10663"
            y="146.45171"
            style="font-size:14px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#1c1010;fill-opacity:1;font-family:gargi;-inkscape-font-specification:gargi Medium" /></flowRegion><flowPara
-         id="flowPara3866">Version 0.6 alpha 10</flowPara></flowRoot>    <flowRoot
+         id="flowPara3866">Version 0.6 alpha 14</flowPara></flowRoot>    <flowRoot
        xml:space="preserve"
        id="flowRoot3868"
        style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Bitstream Vera Sans;font-style:normal;font-weight:normal;font-size:40px;line-height:125%;letter-spacing:0px;word-spacing:0px"
index 8a0e628..8896308 100644 (file)
@@ -248,7 +248,7 @@ class IraFrame(wx.Frame):
         file_menu.Append(wx.ID_EXIT, _(u"Exit").decode('utf8'))
         
         edit_menu = wx.Menu()
-        edit_menu.Append(wx.ID_PREFERENCES, '', _(u'Preferences').decode('utf8'))
+        edit_menu.Append(wx.ID_PREFERENCES, _(u'Preferences').decode('utf8'))
         
         view_menu = wx.Menu()
         view_menu.Append(ID_ACCEUIL, _(u"Home page").decode('utf8'))
@@ -305,8 +305,8 @@ class IraFrame(wx.Frame):
 #--------------------------------------------------------------------
         self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
         self.statusbar.SetStatusWidths([-2, -3])
-        self.statusbar.SetStatusText(_(u"Ready"), 0)
-        self.statusbar.SetStatusText(_(u"Welcome"), 1)
+        self.statusbar.SetStatusText(_(u"Ready").decode('utf8'), 0)
+        self.statusbar.SetStatusText(_(u"Welcome").decode('utf8'), 1)
 
         # min size for the frame itself isn't completely done.
         # see the end up FrameManager::Update() for the test
index a26e13f..9ac4937 100644 (file)
 # This file is distributed under the same license as the PACKAGE package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
+#, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: iramuteq 0.6 alpha 1\n"
+"Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-02-01 19:26+0100\n"
-"PO-Revision-Date: 2013-02-02 09:23+0100\n"
-"Last-Translator: Pierre Ratinaud <ratinaud@univ-tlse2.fr>\n"
-"Language-Team: LANGUAGE <ratinaud@univ-tlse2.fr>\n"
+"POT-Creation-Date: 2014-09-11 16:30+0200\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"
-"X-Poedit-Language: English\n"
-"X-Poedit-Country: UNITED KINGDOM\n"
 
-#: iramuteq.py:268
+#: layout.py:507
+msgid "3D graph"
+msgstr ""
+
+#: iramuteq.py:279
+msgid "About..."
+msgstr ""
+
+#: dialog.py:1692 dialog.py:1693
+msgid "Absent form"
+msgstr ""
+
+#: dialog.py:1336
+msgid "Actives variables (almost 3)"
+msgstr ""
+
+#: dialog.py:1873
+msgid "Add cluster size"
+msgstr ""
+
+#: layout.py:336 tree.py:433 tree.py:638
+msgid "Antiprofiles"
+msgstr ""
+
+#: layout.py:133
+msgid "Are you sure ?"
+msgstr ""
+
+#: dialog.py:952 dialog.py:1029
+msgid "Attention"
+msgstr ""
+
+#: dialog.py:574
+msgid "Avoid overlay"
+msgstr ""
+
+#: dialog.py:2083
+msgid "Background color"
+msgstr ""
+
+#: dialog.py:1247
+msgid "Be carefull : computation of repeated segments profiles can be very long on large corpus"
+msgstr ""
+
+#: layout.py:487 layout.py:514
+msgid "CA"
+msgstr ""
+
+#: dialog.py:2345
+msgid "Change ..."
+msgstr ""
+
+#: dialog.py:1215
+msgid "Characteristic text segments"
+msgstr ""
+
+#: dialog.py:82 dialog.py:2284 dialog.py:2645
+msgid "Characters set"
+msgstr ""
+
+#: dialog.py:393
+msgid "Check"
+msgstr ""
+
+#: dialog.py:354
+msgid ""
+"Check for new \n"
+"releases at startup"
+msgstr ""
+
+#: dialog.py:383
+msgid ""
+"Check installation \n"
+"of R packages"
+msgstr ""
+
+#: dialog.py:1481 iramuteq.py:246
+msgid "Chi2"
+msgstr ""
+
+#: dialog.py:1728
+msgid "Choice"
+msgstr ""
+
+#: guifunct.py:27
+msgid "Choose a file"
+msgstr ""
+
+#: dialog.py:2490
+msgid "Choose a folder"
+msgstr ""
+
+#: dialog.py:2463
+msgid "Cleaning"
+msgstr ""
+
+#: layout.py:382 layout.py:479
+msgid "Cluster"
+msgstr ""
+
+#: dialog.py:1308 iramuteq.py:251 iramuteq.py:272 layout.py:519
+#: OptionAlceste.py:29 tree.py:394
+msgid "Clustering"
+msgstr ""
+
+#: tree.py:441 tree.py:620 tree.py:629
+msgid "Clusters statistics"
+msgstr ""
+
+#: dialog.py:1856
+msgid "Color or black and white"
+msgstr ""
+
+#: tree.py:439 tree.py:593
+msgid "Colored corpus"
+msgstr ""
+
+#: dialog.py:63 dialog.py:64 dialog.py:68
+msgid "Column separator"
+msgstr ""
+
+#: guifunct.py:337
+msgid "Communities"
+msgstr ""
+
+#: tree.py:462
+msgid "Compute Tgen"
+msgstr ""
+
+#: dialog.py:2277
+msgid "Corpus' name"
+msgstr ""
+
+#: dialog.py:2312
+msgid "Default"
+msgstr ""
+
+#: dialog.py:440
+msgid "Default R mirror"
+msgstr ""
+
+#: OptionAlceste.py:52
+msgid "Default values"
+msgstr ""
+
+#: dialog.py:2409
+msgid "Delete characters not in this list"
+msgstr ""
+
+#: tree.py:473
+msgid "Delete from history"
+msgstr ""
+
+#: dialog.py:1797
+msgid "Dendrogram"
+msgstr ""
+
+#: dialog.py:1841
+msgid "Dendrogram type"
+msgstr ""
+
+#: dialog.py:2302
+msgid "Dictionary"
+msgstr ""
+
+#: tree.py:607
+msgid "Done"
+msgstr ""
+
+#: guifunct.py:610
+msgid "Edges color"
+msgstr ""
+
+#: guifunct.py:275
+msgid "Edges threshold"
+msgstr ""
+
+#: guifunct.py:510
+msgid "Edges width proportional to score"
+msgstr ""
+
+#: iramuteq.py:283
 msgid "Edition"
-msgstr "Edition"
+msgstr ""
 
-#: iramuteq.py:226
+#: iramuteq.py:234
 msgid "Exit"
-msgstr "Exit"
+msgstr ""
+
+#: tree.py:443
+msgid "Export Clusters"
+msgstr ""
 
-#: iramuteq.py:214
+#: tree.py:438
+msgid "Export corpus"
+msgstr ""
+
+#: tree.py:455
+msgid "Export dictionary"
+msgstr ""
+
+#: dialog.py:2915
+msgid "Export finished. Open in a web browser :"
+msgstr ""
+
+#: dialog.py:924
+msgid "Export for ..."
+msgstr ""
+
+#: tree.py:456
+msgid "Export lemma dictionary"
+msgstr ""
+
+#: iramuteq.py:219
 msgid "Extract mods"
-msgstr "Extract mods"
+msgstr ""
+
+#: iramuteq.py:220
+msgid "Extract thematics"
+msgstr ""
+
+#: dialog.py:2676
+msgid "Extraction type"
+msgstr ""
 
-#: iramuteq.py:267
+#: layout.py:496
+msgid "Factor"
+msgstr ""
+
+#: dialog.py:590
+msgid "Factor x : "
+msgstr ""
+
+#: dialog.py:592
+msgid "Factor y : "
+msgstr ""
+
+#: dialog.py:594
+msgid "Factor z : "
+msgstr ""
+
+#: iramuteq.py:282
 msgid "File"
-msgstr "File"
+msgstr ""
 
-#: iramuteq.py:272
+#: guifunct.py:51 guifunct.py:62 guifunct.py:73
+msgid "File format"
+msgstr ""
+
+#: dialog.py:53 dialog.py:54 dialog.py:58
+msgid "First column is an id"
+msgstr ""
+
+#: dialog.py:43 dialog.py:44 dialog.py:48
+msgid "First line is header"
+msgstr ""
+
+#: iramuteq.py:245
+msgid "Frequencies"
+msgstr ""
+
+#: dialog.py:2395
+msgid "General"
+msgstr ""
+
+#: guifunct.py:375
+msgid "Graph settings"
+msgstr ""
+
+#: dialog.py:544 guifunct.py:239
+msgid "Graphic type"
+msgstr ""
+
+#: guifunct.py:683
+msgid "Graphical settings"
+msgstr ""
+
+#: guifunct.py:549
+msgid "Gray scale on text proportional to frequency (0=black, 1=white)"
+msgstr ""
+
+#: iramuteq.py:287
 msgid "Help"
-msgstr "Help"
+msgstr ""
 
-#: iramuteq.py:232
+#: iramuteq.py:240
 msgid "Home page"
-msgstr "Home page"
+msgstr ""
+
+#: iramuteq.py:213
+msgid "Import from TXM"
+msgstr ""
 
-#: iramuteq.py:210
+#: iramuteq.py:211
 msgid "Import from factiva"
-msgstr "Import from factiva"
+msgstr ""
+
+#: tree.py:384
+msgid "Informations"
+msgstr ""
+
+#: dialog.py:369
+msgid "Interface language"
+msgstr ""
+
+#: dialog.py:2445
+msgid "Keep punctuation"
+msgstr ""
+
+#: dialog.py:2293
+msgid "Language"
+msgstr ""
+
+#: guifunct.py:224
+msgid "Layout"
+msgstr ""
+
+#: dialog.py:919 dialog.py:1255
+msgid "Lemmatised corpus"
+msgstr ""
+
+#: iramuteq.py:1131
+msgid "License GNU GPL"
+msgstr ""
+
+#: dialog.py:972
+msgid "Like ALCESTE"
+msgstr ""
+
+#: dialog.py:972
+msgid "Like Lexico"
+msgstr ""
+
+#: dialog.py:2826
+msgid "Limit frequency"
+msgstr ""
+
+#: dialog.py:570
+msgid "Limit points by cluster chi2"
+msgstr ""
+
+#: dialog.py:2846
+msgid "Limit rank"
+msgstr ""
+
+#: layout.py:72
+msgid "List of not plotted points : "
+msgstr ""
+
+#: dialog.py:599 guifunct.py:660
+msgid "Make a movie"
+msgstr ""
+
+#: dialog.py:2367
+msgid "Make text segments"
+msgstr ""
+
+#: iramuteq.py:285 iramuteq.py:446 iramuteq.py:635 iramuteq.py:697
+#: iramuteq.py:700
+msgid "Matrix analysis"
+msgstr ""
+
+#: dialog.py:400
+msgid ""
+"Maximum \n"
+"memory for R"
+msgstr ""
+
+#: OptionAlceste.py:43
+msgid "Maximum number of analyzed forms"
+msgstr ""
+
+#: dialog.py:2003
+msgid "Maximum number of forms"
+msgstr ""
+
+#: dialog.py:1224
+msgid "Maximum number of text segments"
+msgstr ""
+
+#: guifunct.py:262
+msgid "Maximum tree"
+msgstr ""
+
+#: dialog.py:1273
+msgid "Maxmum size of segments"
+msgstr ""
+
+#: dialog.py:1739 dialog.py:2866
+msgid "Minimum frequency"
+msgstr ""
+
+#: OptionAlceste.py:40
+msgid "Minimum frequency of an analyzed form (2=automatic)"
+msgstr ""
+
+#: dialog.py:1281
+msgid "Minimum frequency of segments"
+msgstr ""
+
+#: OptionAlceste.py:37
+msgid "Minimum frequency of text segments by clusters (0=automatic)"
+msgstr ""
+
+#: dialog.py:1265
+msgid "Minimum size of segments"
+msgstr ""
+
+#: dialog.py:1371
+msgid "Minimum text segments frenquency in clusters (2= automatic)"
+msgstr ""
+
+#: dialog.py:2667
+msgid "Modalities (one by line, with the *)"
+msgstr ""
+
+#: iramuteq.py:328 tree.py:440
+msgid "Navigator"
+msgstr ""
+
+#: dialog.py:1354 dialog.py:1582
+msgid "Next"
+msgstr ""
+
+#: corpus.py:1431
+msgid "No Text in corpus. Are you sure of the formatting ?"
+msgstr ""
+
+#: dialog.py:2452
+msgid "No space between two forms"
+msgstr ""
+
+#: dialog.py:1361 OptionAlceste.py:35
+msgid "Number of terminal clusters on phase 1"
+msgstr ""
+
+#: dialog.py:2680
+msgid "One file by modality"
+msgstr ""
+
+#: iramuteq.py:280
+msgid "Online help..."
+msgstr ""
+
+#: dialog.py:2680
+msgid "Only one file"
+msgstr ""
 
-#: corpus.py:1147
-msgid "No Text in corpora. Are you sure of the formatting ?"
-msgstr "No Text in corpora. Are you sure of the formatting ?"
+#: tree.py:434 tree.py:469
+msgid "Open ..."
+msgstr ""
 
-#: iramuteq.py:190
+#: iramuteq.py:191
 msgid "Open a matrix"
-msgstr "Open a matrix"
+msgstr ""
 
-#: iramuteq.py:194
-msgid "Open a text corpora"
-msgstr "Open a text corpora"
+#: iramuteq.py:195
+msgid "Open a text corpus"
+msgstr ""
 
-#: iramuteq.py:198
+#: iramuteq.py:199
 msgid "Open an analysis"
-msgstr "Open an analysis"
+msgstr ""
+
+#: tree.py:607
+msgid "Open in a web browser ?"
+msgstr ""
+
+#: dialog.py:2320
+msgid "Other"
+msgstr ""
+
+#: dialog.py:930 dialog.py:976 dialog.py:1007 parse_factiva_xml.py:94
+msgid "Output file"
+msgstr ""
+
+#: dialog.py:2332
+msgid "Output folder"
+msgstr ""
+
+#: tree.py:437
+msgid "POS profiles"
+msgstr ""
+
+#: dialog.py:1080 dialog.py:2273
+msgid "Path"
+msgstr ""
+
+#: dialog.py:428 dialog.py:437
+msgid "Path : "
+msgstr ""
 
-#: iramuteq.py:229
+#: dialog.py:550 dialog.py:1978 guifunct.py:247
+msgid "Picture format"
+msgstr ""
+
+#: dialog.py:1805 guifunct.py:385
+msgid "Picture size"
+msgstr ""
+
+#: dialog.py:341
+msgid "Play a sound at the end of analysis"
+msgstr ""
+
+#: iramuteq.py:602 tree.py:712 tree.py:1010
+msgid "Please wait..."
+msgstr ""
+
+#: tree.py:495
+msgid "Please wait...Reading corpus"
+msgstr ""
+
+#: OptionAlceste.py:47
+msgid "Potato mode (less precise, faster)"
+msgstr ""
+
+#: iramuteq.py:237
 msgid "Preferences"
-msgstr "Preferences"
+msgstr ""
 
-#: iramuteq.py:222
-msgid "Save tab as..."
-msgstr "Save tab as..."
+#: dialog.py:1357 dialog.py:1581
+msgid "Previous"
+msgstr ""
+
+#: layout.py:510
+msgid "Profiles"
+msgstr ""
 
-#: iramuteq.py:233
+#: iramuteq.py:254
+msgid "Prototypical Analysis"
+msgstr ""
+
+#: dialog.py:2401
+msgid "Put text in lowercase"
+msgstr ""
+
+#: dialog.py:432
+msgid "R path"
+msgstr ""
+
+#: dialog.py:1220
+msgid "Ranking score"
+msgstr ""
+
+#: dialog.py:2803
+msgid "Ranks"
+msgstr ""
+
+#: layout.py:375
+msgid "Reading profiles"
+msgstr ""
+
+#: tree.py:392
+msgid "Reinert method"
+msgstr ""
+
+#: iramuteq.py:249 iramuteq.py:270
+msgid "Reinert's Method"
+msgstr ""
+
+#: tree.py:385
+msgid "Rename"
+msgstr ""
+
+#: dialog.py:1243 layout.py:516 tree.py:436
+msgid "Repeated segments profiles"
+msgstr ""
+
+#: dialog.py:2429
+msgid "Replace apostrophe by space"
+msgstr ""
+
+#: dialog.py:2437
+msgid "Replace dash by space"
+msgstr ""
+
+#: tree.py:442 tree.py:647 tree.py:657
+msgid "Report"
+msgstr ""
+
+#: dialog.py:556
+msgid "Representation"
+msgstr ""
+
+#: dialog.py:1521
+msgid "Results"
+msgstr ""
+
+#: dialog.py:2605
+msgid "Save as ..."
+msgstr ""
+
+#: dialog.py:1736 guifunct.py:209
+msgid "Score"
+msgstr ""
+
+#: guifunct.py:309
+msgid "Score on edges"
+msgstr ""
+
+#: tree.py:616
+msgid "Search ..."
+msgstr ""
+
+#: parse_factiva_xml.py:89
+msgid "Select a directory of txt files"
+msgstr ""
+
+#: parse_factiva_xml.py:87
+msgid "Select a directory of xml files"
+msgstr ""
+
+#: dialog.py:2323 dialog.py:2640
+msgid "Select a file"
+msgstr ""
+
+#: guifunct.py:356
+msgid "Select a variable"
+msgstr ""
+
+#: dialog.py:1726
+msgid "Select by"
+msgstr ""
+
+#: tabsimi.py:97
+msgid "Select columns"
+msgstr ""
+
+#: dialog.py:2782
+msgid "Selection"
+msgstr ""
+
+#: dialog.py:330 dialog.py:469 dialog.py:970 dialog.py:2120 dialog.py:2250
+#: dialog.py:2789 guifunct.py:160 OptionAlceste.py:63
+msgid "Settings"
+msgstr ""
+
+#: iramuteq.py:241
 msgid "Show data"
-msgstr "Show data"
+msgstr ""
 
-#: iramuteq.py:234
+#: iramuteq.py:242
 msgid "Show results"
-msgstr "Show results"
+msgstr ""
 
-#: iramuteq.py:213
+#: iramuteq.py:253 iramuteq.py:273
+msgid "Similarities Analysis"
+msgstr ""
+
+#: tree.py:395
+msgid "Similarities analysis"
+msgstr ""
+
+#: OptionAlceste.py:31
+msgid "Size of rst1"
+msgstr ""
+
+#: OptionAlceste.py:33
+msgid "Size of rst2"
+msgstr ""
+
+#: iramuteq.py:267 tree.py:390
+msgid "Specificities and CA"
+msgstr ""
+
+#: dialog.py:596 guifunct.py:647
+msgid "Spheres transparency"
+msgstr ""
+
+#: iramuteq.py:218 tree.py:417
 msgid "Split from variable"
-msgstr "Split from variable"
-
-#: iramuteq.py:270
-#: iramuteq.py:427
-#: iramuteq.py:636
-#: tableau.py:185
-msgid "Spreadsheet analysis"
-msgstr "Spreadsheet analysis"
-
-#: iramuteq.py:271
-#: iramuteq.py:428
-#: iramuteq.py:635
-#: openanalyse.py:116
-#: openanalyse.py:119
-#: openanalyse.py:122
-#: openanalyse.py:125
-#: openanalyse.py:128
-#: openanalyse.py:131
-#: tableau.py:186
+msgstr ""
+
+#: tree.py:418
+msgid "Split matrix"
+msgstr ""
+
+#: layout.py:544
+msgid "Stat by cluster"
+msgstr ""
+
+#: iramuteq.py:266 tree.py:389
+msgid "Statistics"
+msgstr ""
+
+#: tree.py:398
+msgid "Sub corpus from metadata"
+msgstr ""
+
+#: tree.py:399
+msgid "Sub corpus from thematic"
+msgstr ""
+
+#: tree.py:400
+msgid "Subcorpus"
+msgstr ""
+
+#: dialog.py:1340
+msgid "Supplementaries variables (almost 1)"
+msgstr ""
+
+#: dialog.py:1327
+msgid "Supplementary variables are marked with a *"
+msgstr ""
+
+#: dialog.py:562
+msgid "Take the x first points"
+msgstr ""
+
+#: dialog.py:566
+msgid "Take the x first points by cluster"
+msgstr ""
+
+#: iramuteq.py:286 iramuteq.py:447 iramuteq.py:634 iramuteq.py:696
+#: iramuteq.py:699 openanalyse.py:152 openanalyse.py:155 openanalyse.py:158
+#: openanalyse.py:161 openanalyse.py:164 openanalyse.py:167
 msgid "Text analysis"
-msgstr "Text analysis"
+msgstr ""
 
-#: iramuteq.py:219
+#: dialog.py:2072
+msgid "Text color"
+msgstr ""
+
+#: dialog.py:2350
+msgid "Text mark"
+msgstr ""
+
+#: guifunct.py:296
+msgid "Text on vertex"
+msgstr ""
+
+#: dialog.py:2375
+msgid "Text segments build process"
+msgstr ""
+
+#: dialog.py:2384
+msgid "Text segments size"
+msgstr ""
+
+#: dialog.py:73 dialog.py:74 dialog.py:78
+msgid "Text separator"
+msgstr ""
+
+#: dialog.py:560 dialog.py:2032 guifunct.py:322
+msgid "Text size"
+msgstr ""
+
+#: dialog.py:583
+msgid "Text size proportional to chi2"
+msgstr ""
+
+#: dialog.py:576
+msgid "Text size proportional to frequency"
+msgstr ""
+
+#: tree.py:461
+msgid "Tgen Editor"
+msgstr ""
+
+#: dialog.py:952 dialog.py:1029
+msgid "This file already exists. Continue anyway ?"
+msgstr ""
+
+#: layout.py:133
+msgid "This file will be delete : "
+msgstr ""
+
+#: iramuteq.py:227
 msgid "Tools"
-msgstr "Tools"
+msgstr ""
+
+#: guifunct.py:196
+msgid "Use previous coordinates"
+msgstr ""
+
+#: dialog.py:420
+msgid "Use svdlibc"
+msgstr ""
+
+#: dialog.py:2359
+msgid "Use the expression dictionary"
+msgstr ""
+
+#: dialog.py:1721 dialog.py:2017
+msgid "Used forms"
+msgstr ""
+
+#: dialog.py:2799
+msgid "Variables"
+msgstr ""
+
+#: dialog.py:2657
+msgid "Variables (with the * but without the _)"
+msgstr ""
+
+#: dialog.py:1748
+msgid "Variables choice"
+msgstr ""
+
+#: dialog.py:2217
+msgid "Variables selection"
+msgstr ""
+
+#: guifunct.py:598
+msgid "Vertex color"
+msgstr ""
+
+#: guifunct.py:626
+msgid "Vertex size"
+msgstr ""
+
+#: guifunct.py:416
+msgid "Vertex size proportional to frequency"
+msgstr ""
+
+#: guifunct.py:463
+msgid "Vertex text size proportional to frequency"
+msgstr ""
 
-#: iramuteq.py:269
-#: iramuteq.py:426
-#: iramuteq.py:564
-#: iramuteq.py:634
-#: tableau.py:184
+#: iramuteq.py:284 iramuteq.py:445 iramuteq.py:574 iramuteq.py:633
 msgid "View"
-msgstr "View"
+msgstr ""
 
-#: iramuteq.py:206
+#: dialog.py:1988
+msgid "Word size proportional to ..."
+msgstr ""
+
+#: iramuteq.py:275
+msgid "WordCloud"
+msgstr ""
+
+#: tree.py:396
+msgid "Wordcloud"
+msgstr ""
+
+#: dialog.py:1927
+msgid "Wordcloud settings"
+msgstr ""
+
+#: dialog.py:1222
+msgid "absolute (sum of chi2 of marked forms in segment)"
+msgstr ""
+
+#: dialog.py:559 dialog.py:1722 dialog.py:2021
+msgid "actives"
+msgstr ""
+
+#: dialog.py:1722 dialog.py:2021
+msgid "actives and supplementaries"
+msgstr ""
+
+#: OptionAlceste.py:32
+msgid "actives forms"
+msgstr ""
+
+#: tree.py:468
+msgid "antiprofiles"
+msgstr ""
+
+#: dialog.py:2832 dialog.py:2852
+msgid "automatic (mean)"
+msgstr ""
+
+#: dialog.py:1883
+msgid "bar"
+msgstr ""
+
+#: dialog.py:1860
+msgid "black and white"
+msgstr ""
+
+#: dialog.py:2154
+msgid "black and white graphical"
+msgstr ""
+
+#: dialog.py:2257
+msgid "characters"
+msgstr ""
+
+#: dialog.py:1733 dialog.py:1735 dialog.py:1992
+msgid "chi2"
+msgstr ""
+
+#: dialog.py:1883
+msgid "circular diagram"
+msgstr ""
+
+#: dialog.py:1481
+msgid "cluster"
+msgstr ""
+
+#: dialog.py:559 dialog.py:873
+msgid "clusters"
+msgstr ""
+
+#: dialog.py:1860
+msgid "color"
+msgstr ""
+
+#: dialog.py:2148
+msgid "column percentage"
+msgstr ""
+
+#: dialog.py:557
+msgid "coordinates"
+msgstr ""
+
+#: dialog.py:2269 dialog.py:2636
+msgid "corpus"
+msgstr ""
+
+#: dialog.py:557
+msgid "correlations"
+msgstr ""
+
+#: OptionAlceste.py:30
+msgid "double on RST"
+msgstr ""
+
+#: dialog.py:2132
+msgid "expected values"
+msgstr ""
+
+#: dialog.py:1481
+msgid "form"
+msgstr ""
+
+#: dialog.py:1992
+msgid "frequency"
+msgstr ""
+
+#: iramuteq.py:207
 msgid "from copy/paste"
-msgstr "from copy/paste"
+msgstr ""
 
-#: iramuteq.py:205
+#: iramuteq.py:206
 msgid "from mail"
-msgstr "from mail"
+msgstr ""
 
-#: iramuteq.py:204
+#: iramuteq.py:205
 msgid "from xml"
-msgstr "from xml"
+msgstr ""
+
+#: dialog.py:2151
+msgid "graphical"
+msgstr ""
+
+#: dialog.py:554 dialog.py:1813 dialog.py:1950 guifunct.py:393
+msgid "height"
+msgstr ""
+
+#: dialog.py:1733
+msgid "hypergeometrical law"
+msgstr ""
+
+#: dialog.py:2832 dialog.py:2852
+msgid "manual"
+msgstr ""
+
+#: dialog.py:1727
+msgid "modalities"
+msgstr ""
+
+#: dialog.py:46 dialog.py:56 dialog.py:349 dialog.py:364 dialog.py:921
+#: dialog.py:1259 dialog.py:1331
+msgid "no"
+msgstr ""
+
+#: dialog.py:2129
+msgid "observed values"
+msgstr ""
+
+#: dialog.py:2257
+msgid "occurrences"
+msgstr ""
 
+#: dialog.py:2257
+msgid "paragraphs"
+msgstr ""
+
+#: dialog.py:1222
+msgid "relative (mean of chi2 of marked forms in segment)"
+msgstr ""
+
+#: dialog.py:2135
+msgid "residuals"
+msgstr ""
+
+#: dialog.py:2145
+msgid "row percentage"
+msgstr ""
+
+#: dialog.py:1481
+msgid "see"
+msgstr ""
+
+#: OptionAlceste.py:30
+msgid "simple on text segments"
+msgstr ""
+
+#: OptionAlceste.py:30
+msgid "simple on texts"
+msgstr ""
+
+#: dialog.py:2138
+msgid "standardized residuals"
+msgstr ""
+
+#: dialog.py:559
+msgid "stars"
+msgstr ""
+
+#: dialog.py:559 dialog.py:1722 dialog.py:2021
+msgid "supplementaries"
+msgstr ""
+
+#: OptionAlceste.py:45
+msgid "svd method"
+msgstr ""
+
+#: dialog.py:2686
+msgid "thematics (one by line, with the -*)"
+msgstr ""
+
+#: dialog.py:2142
+msgid "total percentage"
+msgstr ""
+
+#: dialog.py:1727
+msgid "variables"
+msgstr ""
+
+#: dialog.py:552 dialog.py:1824 dialog.py:1962 guifunct.py:400
+msgid "width"
+msgstr ""
+
+#: dialog.py:46 dialog.py:56 dialog.py:349 dialog.py:364 dialog.py:921
+#: dialog.py:1259 dialog.py:1331
+msgid "yes"
+msgstr ""
index 5389ccd..be3646a 100644 (file)
 # 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.
-#
+# Pierre Ratinaud <ratinaud@univ-tlse2.fr>, 2014.
 msgid ""
 msgstr ""
 "Project-Id-Version: iramuteq 0.6 alpha 1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-02-01 19:26+0100\n"
-"PO-Revision-Date: 2013-02-01 19:37+0100\n"
+"POT-Creation-Date: 2014-12-02 18:12+0100\n"
+"PO-Revision-Date: 2014-12-02 18:17+0200\n"
 "Last-Translator: Pierre Ratinaud <ratinaud@univ-tlse2.fr>\n"
 "Language-Team: LANGUAGE <ratinaud@univ-tlse2.fr>\n"
-"Language: \n"
+"Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: French\n"
-"X-Poedit-Country: FRANCE\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Virtaal 0.7.1\n"
 
-#: iramuteq.py:268
+#: layout.py:510
+msgid "3D graph"
+msgstr "Graphe 3D"
+
+#: iramuteq.py:294
+msgid "About..."
+msgstr "A propos..."
+
+#: dialog.py:1692 dialog.py:1693
+msgid "Absent form"
+msgstr "Formes absentes"
+
+#: layout.py:772 textstat.py:50
+msgid "Abstract"
+msgstr "Résumé"
+
+#: layout.py:775
+msgid "Actives forms"
+msgstr "Formes actives"
+
+#: dialog.py:1336
+msgid "Actives variables (almost 3)"
+msgstr "Variables actives (au moins 3)"
+
+#: dialog.py:1901
+msgid "Add cluster size"
+msgstr "Ajouter la taille des classes"
+
+#: ProfList.py:700
+msgid "All segments"
+msgstr "Tous les segments"
+
+#: layout.py:339 tree.py:444 tree.py:657
+msgid "Antiprofiles"
+msgstr "Antiprofils"
+
+#: ProfList.py:332
+msgid "Antonym"
+msgstr "Antonyme"
+
+#: layout.py:133
+msgid "Are you sure ?"
+msgstr "Êtes-vous sûr ?"
+
+#: Liste.py:163 Liste.py:180 listlex.py:198 listlex.py:233 ProfList.py:313
+#: ProfList.py:754
+msgid "Associated forms"
+msgstr "Formes associées"
+
+#: dialog.py:952 dialog.py:1029
+msgid "Attention"
+msgstr "Attention"
+
+#: dialog.py:574
+msgid "Avoid overlay"
+msgstr "Empêcher les recouvrements"
+
+#: dialog.py:2112
+msgid "Background color"
+msgstr "Couleur du fond"
+
+#: layout.py:728
+msgid "Banal forms"
+msgstr "Formes banales"
+
+#: dialog.py:1247
+msgid "Be carefull : computation of repeated segments profiles can be very long on large corpus"
+msgstr "Attention : le calcul des profils de segments répétés peut être très long sur de gros corpus"
+
+#: dialog.py:2638
+msgid "Build sub corpus"
+msgstr "Construire un sous-corpus"
+
+#: layout.py:490 layout.py:517 layout.py:742
+msgid "CA"
+msgstr "AFC"
+
+#: layout.py:741
+msgid "CA POS"
+msgstr "AFC Types"
+
+#: layout.py:738
+msgid "CA forms"
+msgstr "AFC sur les formes"
+
+#: dialog.py:2376
+msgid "Change ..."
+msgstr "Changer ..."
+
+#: dialog.py:1215
+msgid "Characteristic text segments"
+msgstr "Segments de texte caractéristiques"
+
+#: dialog.py:82 dialog.py:2313 dialog.py:2706 layout.py:1030
+msgid "Characters set"
+msgstr "Encodage"
+
+#: dialog.py:393
+msgid "Check"
+msgstr "Vérifier"
+
+#: dialog.py:354
+msgid ""
+"Check for new \n"
+"releases at startup"
+msgstr ""
+"Vérifier l'existence d'une\n"
+"nouvelle version au démarrage"
+
+#: dialog.py:383
+msgid ""
+"Check installation \n"
+"of R packages"
+msgstr ""
+"Vérifier l'installation\n"
+"des libraires de R"
+
+#: dialog.py:1481 iramuteq.py:261
+msgid "Chi2"
+msgstr "Chi2"
+
+#: ProfList.py:314 ProfList.py:359
+msgid "Chi2 by cluster"
+msgstr "Chi2 par classe"
+
+#: ProfList.py:315
+msgid "Chi2 by cluster on dendrogram"
+msgstr "Chi2 par classe et dendrogramme"
+
+#: ProfList.py:316 ProfList.py:360
+msgid "Chi2 modalities of variable"
+msgstr "Chi2 modalités de la variable"
+
+#: dialog.py:1728
+msgid "Choice"
+msgstr "Choix"
+
+#: guifunct.py:27
+msgid "Choose a file"
+msgstr "Choisissez un fichier"
+
+#: dialog.py:2523
+msgid "Choose a folder"
+msgstr "Choisissez un répertoire"
+
+#: dialog.py:2494
+msgid "Cleaning"
+msgstr "Nettoyage"
+
+#: ProfList.py:767
+msgid "Close"
+msgstr "Fermer"
+
+#: layout.py:385 layout.py:482
+msgid "Cluster"
+msgstr "Classe"
+
+#: dialog.py:1308 iramuteq.py:266 iramuteq.py:287 layout.py:526
+#: OptionAlceste.py:29 tree.py:399
+msgid "Clustering"
+msgstr "Classification"
+
+#: tree.py:454 tree.py:639 tree.py:648
+msgid "Clusters statistics"
+msgstr "Statistiques des classes"
+
+#: dialog.py:1884
+msgid "Color or black and white"
+msgstr "Couleur ou noir et blanc"
+
+#: tree.py:452 tree.py:612
+msgid "Colored corpus"
+msgstr "Corpus en couleur"
+
+#: dialog.py:63 dialog.py:64 dialog.py:68
+msgid "Column separator"
+msgstr "Séparateur de colonnes"
+
+#: guifunct.py:360
+msgid "Communities"
+msgstr "Communautés"
+
+#: tree.py:450 tree.py:479
+msgid "Compute Tgen"
+msgstr "Calculer les TGen"
+
+#: Liste.py:164 Liste.py:191 listlex.py:199 listlex.py:294 ProfList.py:326
+#: ProfList.py:688 ProfList.py:694 ProfList.py:700
+msgid "Concordance"
+msgstr "Concordancier"
+
+#: dialog.py:2306
+msgid "Corpus' name"
+msgstr "Nom du corpus"
+
+#: dialog.py:2341
+msgid "Default"
+msgstr "Défaut"
+
+#: dialog.py:440
+msgid "Default R mirror"
+msgstr "Miroir par défaut de R"
+
+#: OptionAlceste.py:52
+msgid "Default values"
+msgstr "Valeurs par défaut"
+
+#: ProfList.py:329
+msgid "Definition"
+msgstr "Définition"
+
+#: dialog.py:2440
+msgid "Delete characters not in this list"
+msgstr "Éliminer les caractères en dehors de cette liste"
+
+#: tree.py:492
+msgid "Delete from history"
+msgstr "Supprimer de l'historique"
+
+#: dialog.py:1810
+msgid "Dendrogram"
+msgstr "Dendrogramme"
+
+#: dialog.py:1854
+msgid "Dendrogram type"
+msgstr "Type de dendrogramme"
+
+#: layout.py:1012
+msgid "Description of corpus"
+msgstr "Description du corpus"
+
+#: dialog.py:1068 dialog.py:2331
+msgid "Dictionary"
+msgstr "Dictionnaire"
+
+#: tree.py:626
+msgid "Done"
+msgstr "Fait"
+
+#: guifunct.py:332
+msgid "Edge curved"
+msgstr "Arêtes courbées"
+
+#: guifunct.py:633
+msgid "Edges color"
+msgstr "Couleur des arêtes"
+
+#: guifunct.py:285
+msgid "Edges threshold"
+msgstr "Seuil pour les arêtes"
+
+#: guifunct.py:533
+msgid "Edges width proportional to score"
+msgstr "Largeur des arêtes proportionnelle à l'indice"
+
+#: iramuteq.py:298
 msgid "Edition"
 msgstr "Edition"
 
-#: iramuteq.py:226
+#: ProfList.py:330
+msgid "Etymology"
+msgstr "Etymologie"
+
+#: iramuteq.py:248
 msgid "Exit"
 msgstr "Quitter"
 
-#: iramuteq.py:214
+#: tree.py:456
+msgid "Export clusters"
+msgstr "Exporter les classes"
+
+#: tree.py:451
+msgid "Export corpus"
+msgstr "Exporter le corpus"
+
+#: tree.py:472
+msgid "Export dictionary"
+msgstr "Exporter le dictionnaire"
+
+#: dialog.py:2998
+msgid "Export finished. Open in a web browser :"
+msgstr "Export terminé. Ouvrez ce lien dans un navigateur :"
+
+#: dialog.py:924
+msgid "Export for ..."
+msgstr "Exporter pour ..."
+
+#: ProfList.py:342
+msgid "Export for Tropes"
+msgstr "Exporter pour Tropes"
+
+#: tree.py:473
+msgid "Export lemma dictionary"
+msgstr "Exporter le dictionnaire des lemmes"
+
+#: ProfList.py:341
+msgid "Export..."
+msgstr "Exporter..."
+
+#: ProfList.py:343
+msgid "Exporter for Owledge"
+msgstr "Exporter pour Owledge"
+
+#: iramuteq.py:233
 msgid "Extract mods"
 msgstr "Extraire à partir des modalités"
 
-#: iramuteq.py:267
+#: iramuteq.py:234
+msgid "Extract thematics"
+msgstr "Extraire à partir des thématiques"
+
+#: dialog.py:2737
+msgid "Extraction type"
+msgstr "Type d'extraction"
+
+#: layout.py:499
+msgid "Factor"
+msgstr "Facteur"
+
+#: dialog.py:590
+msgid "Factor x : "
+msgstr "Facteur x:"
+
+#: dialog.py:592
+msgid "Factor y : "
+msgstr "Facteur y:"
+
+#: dialog.py:594
+msgid "Factor z : "
+msgstr "Facteur z:"
+
+#: iramuteq.py:297
 msgid "File"
 msgstr "Fichier"
 
-#: iramuteq.py:272
+#: layout.py:1218 layout.py:1461
+msgid "File exported"
+msgstr "Fichier exporté"
+
+#: guifunct.py:51 guifunct.py:63 guifunct.py:74
+msgid "File format"
+msgstr "Format du fichier"
+
+#: dialog.py:53 dialog.py:54 dialog.py:58
+msgid "First column is an id"
+msgstr "La première colonne est un identifiant"
+
+#: dialog.py:43 dialog.py:44 dialog.py:48
+msgid "First line is header"
+msgstr "La première ligne contient les noms des colonnes"
+
+#: Liste.py:56
+msgid "Form"
+msgstr "Forme"
+
+#: layout.py:726
+msgid "Forms"
+msgstr "Formes"
+
+#: layout.py:730
+msgid "Forms frequencies"
+msgstr "Fréquences des formes"
+
+#: layout.py:732
+msgid "Forms relative frequencies"
+msgstr "Fréquences relatives des formes"
+
+#: Liste.py:57
+msgid "Freq."
+msgstr "Freq."
+
+#: iramuteq.py:259
+msgid "Frequencies"
+msgstr "Fréquences"
+
+#: layout.py:1245
+msgid "Frequency"
+msgstr "Fréquences"
+
+#: dialog.py:2426
+msgid "General"
+msgstr "Général"
+
+#: layout.py:1126 layout.py:1295
+msgid "Graph analysis"
+msgstr "Analyse de graphe"
+
+#: ProfList.py:337 ProfList.py:362
+msgid "Graph of cluster"
+msgstr "Graphe de la classe"
+
+#: guifunct.py:398
+msgid "Graph settings"
+msgstr "Paramètres du graphe"
+
+#: listlex.py:200 listlex.py:345
+msgid "Graphic"
+msgstr "Graphique"
+
+#: dialog.py:544 guifunct.py:249
+msgid "Graphic type"
+msgstr "Type de graphique"
+
+#: guifunct.py:706
+msgid "Graphical settings"
+msgstr "Paramètres graphiques"
+
+#: guifunct.py:572
+msgid "Gray scale on text proportional to frequency (0=black, 1=white)"
+msgstr "Nuance de gris des textes proportionnelle à la fréquence (0 = noir, 1 = blanc)"
+
+#: layout.py:777
+msgid "Hapax"
+msgstr "Hapax"
+
+#: iramuteq.py:302
 msgid "Help"
 msgstr "Aide"
 
-#: iramuteq.py:232
+#: iramuteq.py:343
+msgid "Historic"
+msgstr "Historique"
+
+#: iramuteq.py:254
 msgid "Home page"
 msgstr "Page d'accueil"
 
-#: iramuteq.py:210
+#: dialog.py:1869
+msgid "Image format"
+msgstr "Format de l'image"
+
+#: iramuteq.py:227
+msgid "Import from TXM"
+msgstr "Importer de TXM"
+
+#: iramuteq.py:225
 msgid "Import from factiva"
 msgstr "Importer de factiva"
 
-#: corpus.py:1147
-msgid "No Text in corpora. Are you sure of the formatting ?"
-msgstr "Pas de textes dans le corpus. Etes-vous sûr du formatage ?"
+#: ProfList.py:325
+msgid "In all segments"
+msgstr "Dans tous les segments"
+
+#: ProfList.py:323
+msgid "In segments of this cluster"
+msgstr "Dans les segments de cette classe"
+
+#: ProfList.py:324
+msgid "In segments of this clustering"
+msgstr "Dans les segments de cette classification"
+
+#: dialog.py:2831
+msgid "Include empty cells (NA)"
+msgstr "Inclure les cellules vides (NA)"
 
-#: iramuteq.py:190
+#: tree.py:389
+msgid "Informations"
+msgstr "Informations"
+
+#: dialog.py:369
+msgid "Interface language"
+msgstr "Langue de l'interface"
+
+#: dialog.py:2476
+msgid "Keep punctuation"
+msgstr "Conserver la ponctuation"
+
+#: dialog.py:1061
+msgid "Keys properties"
+msgstr "Paramètres des clés"
+
+#: dialog.py:2322 layout.py:1029
+msgid "Language"
+msgstr "Langue"
+
+#: guifunct.py:234
+msgid "Layout"
+msgstr "Présentation"
+
+#: dialog.py:919 dialog.py:1255
+msgid "Lemmatised corpus"
+msgstr "Corpus lemmatisé"
+
+#: dialog.py:1052
+msgid "Lemmatization"
+msgstr "Lemmatisation"
+
+#: iramuteq.py:1087
+msgid "License GNU GPL"
+msgstr "Licence GNU GPL"
+
+#: dialog.py:972
+msgid "Like ALCESTE"
+msgstr "Comme ALCESTE"
+
+#: dialog.py:972
+msgid "Like Lexico"
+msgstr "Comme Lexico"
+
+#: dialog.py:2901
+msgid "Limit frequency"
+msgstr "Fréquence limite"
+
+#: dialog.py:570
+msgid "Limit points by cluster chi2"
+msgstr "Limiter les points par le chi2 de liaison aux classes"
+
+#: dialog.py:2921
+msgid "Limit rank"
+msgstr "Rang limite"
+
+#: layout.py:72
+msgid "List of not plotted points : "
+msgstr "Liste des points non-représentés"
+
+#: listlex.py:210 ProfList.py:327
+msgid "Make Tgen"
+msgstr "Faire un TGen"
+
+#: dialog.py:599 guifunct.py:683
+msgid "Make a movie"
+msgstr "Faire un film"
+
+#: dialog.py:2398
+msgid "Make text segments"
+msgstr "Faire des segments de texte"
+
+#: tree.py:169
+msgid "Matrix"
+msgstr "Matrice"
+
+#: iramuteq.py:300
+msgid "Matrix analysis"
+msgstr "Analyses de matrice"
+
+#: dialog.py:400
+msgid ""
+"Maximum \n"
+"memory for R"
+msgstr ""
+"Mémoire\n"
+"maximum de R"
+
+#: OptionAlceste.py:43
+msgid "Maximum number of analyzed forms"
+msgstr "Nombres maximum de formes analysées"
+
+#: dialog.py:2032
+msgid "Maximum number of forms"
+msgstr "Nombre maximum de formes"
+
+#: dialog.py:1224
+msgid "Maximum number of text segments"
+msgstr "Nombre maximum de segments de texte"
+
+#: guifunct.py:272
+msgid "Maximum tree"
+msgstr "Arbre maximum"
+
+#: dialog.py:1273
+msgid "Maxmum size of segments"
+msgstr "Taille maximum des segments"
+
+#: layout.py:581
+msgid "Mean of forms by segment"
+msgstr "Moyenne de formes par segment"
+
+#: textstat.py:56
+msgid "Mean of occurrences by text"
+msgstr "Moyenne d'occurrences par texte"
+
+#: dialog.py:1739 dialog.py:2941
+msgid "Minimum frequency"
+msgstr "Fréquence minimale"
+
+#: OptionAlceste.py:40
+msgid "Minimum frequency of an analyzed form (2=automatic)"
+msgstr "Fréquence minimum d'une forme analysée (2 = automatique)"
+
+#: dialog.py:1281
+msgid "Minimum frequency of segments"
+msgstr "Fréquence minimum d'un segment"
+
+#: OptionAlceste.py:37
+msgid "Minimum frequency of text segments by clusters (0=automatic)"
+msgstr "Nombre minimum de segments de texte par classe (0 = automatique)"
+
+#: dialog.py:1265
+msgid "Minimum size of segments"
+msgstr "Taille minimum des segments"
+
+#: dialog.py:1371
+msgid "Minimum text segments frenquency in clusters (2= automatic)"
+msgstr "Nombre minimum de segments de texte par classe (2 = automatique)"
+
+#: dialog.py:2728
+msgid "Modalities (one by line, with the *)"
+msgstr "Modalités (une par ligne, avec l'étoile (*))"
+
+#: ProfList.py:333
+msgid "Morphology"
+msgstr "Morphologie"
+
+#: iramuteq.py:260
+msgid "Multiple frequencies"
+msgstr "Fréquences multiples"
+
+#: tree.py:453
+msgid "Navigator"
+msgstr "Navigateur"
+
+#: dialog.py:1354 dialog.py:1582
+msgid "Next"
+msgstr "Suivant"
+
+#: tree.py:720
+msgid "No TGen yet !"
+msgstr "Pas encore de TGen !"
+
+#: corpus.py:1524
+msgid "No Text in corpus. Are you sure of the formatting ?"
+msgstr "Pas de textes dans le corpus. Êtes-vous sûr du formatage ?"
+
+#: dialog.py:2483
+msgid "No space between two forms"
+msgstr "Pas d'espace entre deux formes"
+
+#: layout.py:578
+msgid "Number of active forms"
+msgstr "Nombre de formes actives"
+
+#: layout.py:580
+msgid "Number of active forms with a frequency"
+msgstr "Nombre de formes actives avec une fréquence"
+
+#: layout.py:588 layout.py:590
+msgid "Number of clusters"
+msgstr "Nombre de classes"
+
+#: layout.py:574 layout.py:1033 textstat.py:53
+msgid "Number of forms"
+msgstr "Nombre de formes"
+
+#: layout.py:1034 textstat.py:54
+msgid "Number of hapax"
+msgstr "Nombre d'hapax"
+
+#: layout.py:577
+msgid "Number of lemmas"
+msgstr "Nombre de lemmes"
+
+#: layout.py:587
+msgid "Number of lines"
+msgstr "Nombre de lignes"
+
+#: layout.py:575 textstat.py:52
+msgid "Number of occurrences"
+msgstr "Nombre d'occurrences"
+
+#: layout.py:579
+msgid "Number of supplementary forms"
+msgstr "Nombre de formes supplémentaires"
+
+#: dialog.py:1361 OptionAlceste.py:35
+msgid "Number of terminal clusters on phase 1"
+msgstr "Nombre de classes terminales de la phase 1"
+
+#: layout.py:573 layout.py:1032
+msgid "Number of text segments"
+msgstr "Nombre de segments de texte"
+
+#: layout.py:572 layout.py:1031 textstat.py:51
+msgid "Number of texts"
+msgstr "Nombre de textes"
+
+#: dialog.py:2741
+msgid "One file by modality"
+msgstr "Un fichier par modalité"
+
+#: iramuteq.py:295
+msgid "Online help..."
+msgstr "Aide en ligne ..."
+
+#: dialog.py:2741
+msgid "Only one file"
+msgstr "Seulement un fichier"
+
+#: tree.py:445 tree.py:487
+msgid "Open ..."
+msgstr "Ouvrir ..."
+
+#: iramuteq.py:205
 msgid "Open a matrix"
 msgstr "Ouvrir une matrice"
 
-#: iramuteq.py:194
-msgid "Open a text corpora"
-msgstr "Ouvrir un corpus"
+#: iramuteq.py:209
+msgid "Open a text corpus"
+msgstr "Ouvrir un corpus texte"
 
-#: iramuteq.py:198
+#: iramuteq.py:213
 msgid "Open an analysis"
 msgstr "Ouvrir une Analyse"
 
-#: iramuteq.py:229
+#: tree.py:626
+msgid "Open in a web browser ?"
+msgstr "Ouvrir dans un navigateur ?"
+
+#: dialog.py:2349
+msgid "Other"
+msgstr "Autre"
+
+#: dialog.py:930 dialog.py:976 dialog.py:1007 parse_factiva_xml.py:94
+msgid "Output file"
+msgstr "Fichier en sortie"
+
+#: dialog.py:2363
+msgid "Output folder"
+msgstr "Répertoire en sortie"
+
+#: layout.py:729 Liste.py:58
+msgid "POS"
+msgstr "Types"
+
+#: layout.py:731
+msgid "POS frequencies"
+msgstr "Fréquences des types"
+
+#: tree.py:448
+msgid "POS profiles"
+msgstr "Profil des types grammaticaux"
+
+#: layout.py:733
+msgid "POS relative frequencies"
+msgstr "Fréquences relatives des types"
+
+#: dialog.py:1080 dialog.py:2302
+msgid "Path"
+msgstr "Chemin"
+
+#: dialog.py:428 dialog.py:437
+msgid "Path : "
+msgstr "Chemin :"
+
+#: dialog.py:550 dialog.py:2007 guifunct.py:257
+msgid "Picture format"
+msgstr "Format de l'image"
+
+#: dialog.py:1818 guifunct.py:408
+msgid "Picture size"
+msgstr "Taille de l'image"
+
+#: dialog.py:341
+msgid "Play a sound at the end of analysis"
+msgstr "Jouer un son à la fin des analyses"
+
+#: corpus.py:1622 iramuteq.py:581 iramuteq.py:626 layout.py:946 tree.py:739
+#: tree.py:1063
+msgid "Please wait..."
+msgstr "Patientez ..."
+
+#: tree.py:514
+msgid "Please wait...Reading corpus"
+msgstr "Patientez... Lecture du corpus"
+
+#: OptionAlceste.py:47
+msgid "Potato mode (less precise, faster)"
+msgstr "Mode patate (moins précis, plus rapide)"
+
+#: iramuteq.py:251
 msgid "Preferences"
 msgstr "Préférences"
 
-#: iramuteq.py:222
-msgid "Save tab as..."
-msgstr "Enregistrer l'onglet sous ..."
+#: dialog.py:1357 dialog.py:1581
+msgid "Previous"
+msgstr "Précédent"
 
-#: iramuteq.py:233
+#: ProfList.py:428 ProfList.py:462
+msgid "Problem"
+msgstr "Problème"
+
+#: layout.py:513
+msgid "Profiles"
+msgstr "Profils"
+
+#: iramuteq.py:269
+msgid "Prototypical Analysis"
+msgstr "Analyses Prototypiques"
+
+#: layout.py:1263 layout.py:1273
+msgid "Prototypical analysis"
+msgstr "Analyses Prototypiques"
+
+#: ProfList.py:334
+msgid "Proxemy"
+msgstr "Proxémie"
+
+#: dialog.py:2432
+msgid "Put text in lowercase"
+msgstr "Mettre le texte en minuscule"
+
+#: dialog.py:432
+msgid "R path"
+msgstr "Chemin de R"
+
+#: dialog.py:1220
+msgid "Ranking score"
+msgstr "Indice de rang"
+
+#: dialog.py:2878
+msgid "Ranks"
+msgstr "Rangs"
+
+#: layout.py:378
+msgid "Reading profiles"
+msgstr "Lecture des profils"
+
+#: iramuteq.py:308
+msgid "Ready"
+msgstr "Prêt"
+
+#: iramuteq.py:264 iramuteq.py:285 tree.py:397
+msgid "Reinert's Method"
+msgstr "Méthode Reinert"
+
+#: tree.py:390
+msgid "Rename"
+msgstr "Renommer"
+
+#: ProfList.py:338 ProfList.py:590
+msgid "Repeated segments"
+msgstr "Segments répétés"
+
+#: dialog.py:1243 layout.py:519 tree.py:447
+msgid "Repeated segments profiles"
+msgstr "Profils des segments répétés"
+
+#: dialog.py:2460
+msgid "Replace apostrophe by space"
+msgstr "Remplacer les apostrophes par des espaces"
+
+#: dialog.py:2468
+msgid "Replace dash by space"
+msgstr "Remplacer les tirets par des espaces"
+
+#: tree.py:455 tree.py:486 tree.py:666 tree.py:676
+msgid "Report"
+msgstr "Rapport"
+
+#: dialog.py:556
+msgid "Representation"
+msgstr "Représentation"
+
+#: dialog.py:1521
+msgid "Results"
+msgstr "Résultats"
+
+#: dialog.py:2661
+msgid "Save as ..."
+msgstr "Enregistrer sous ..."
+
+#: dialog.py:1736 guifunct.py:219
+msgid "Score"
+msgstr "Indice"
+
+#: guifunct.py:319
+msgid "Score on edges"
+msgstr "Indices sur les arêtes"
+
+#: tree.py:635
+msgid "Search ..."
+msgstr "Rechercher ..."
+
+#: ProfList.py:249
+msgid "Search..."
+msgstr "Rechercher ..."
+
+#: ProfList.py:694
+msgid "Segments of this clustering"
+msgstr "Segments de cette classe"
+
+#: parse_factiva_xml.py:89
+msgid "Select a directory of txt files"
+msgstr "Sélectionnez un répertoire contenant les fichiers txt"
+
+#: parse_factiva_xml.py:87
+msgid "Select a directory of xml files"
+msgstr "Sélectionnez un répertoire contenant les fichiers xml"
+
+#: dialog.py:2352 dialog.py:2701
+msgid "Select a file"
+msgstr "Sélectionnez un fichier"
+
+#: guifunct.py:379
+msgid "Select a variable"
+msgstr "Sélectionnez une variable"
+
+#: dialog.py:1726
+msgid "Select by"
+msgstr "Sélection par"
+
+#: tabsimi.py:78
+msgid "Select columns"
+msgstr "Sélectionnez les colonnes"
+
+#: dialog.py:330 dialog.py:469 dialog.py:970 dialog.py:1041 dialog.py:2149
+#: dialog.py:2279 dialog.py:2864 guifunct.py:161 OptionAlceste.py:63
+msgid "Settings"
+msgstr "Paramètres"
+
+#: iramuteq.py:255
 msgid "Show data"
 msgstr "Voir les données"
 
-#: iramuteq.py:234
+#: iramuteq.py:256
 msgid "Show results"
 msgstr "Voir les résultats"
 
-#: iramuteq.py:213
+#: iramuteq.py:268 iramuteq.py:288 tree.py:400
+msgid "Similarities Analysis"
+msgstr "Analyses de similitudes"
+
+#: OptionAlceste.py:31
+msgid "Size of rst1"
+msgstr "Taille de rst1"
+
+#: layout.py:584
+msgid "Size of rst1 / rst2"
+msgstr "Taille de rst1 / rst2"
+
+#: OptionAlceste.py:33
+msgid "Size of rst2"
+msgstr "Taille de rst2"
+
+#: layout.py:744
+msgid "Specificities"
+msgstr "Spécificités"
+
+#: iramuteq.py:282 tree.py:395
+msgid "Specificities and CA"
+msgstr "Spécificités et AFC"
+
+#: dialog.py:596 guifunct.py:670
+msgid "Spheres transparency"
+msgstr "Transparence des sphéres"
+
+#: iramuteq.py:232 tree.py:428
 msgid "Split from variable"
 msgstr "Sous corpus par variable"
 
-#: iramuteq.py:270
-#: iramuteq.py:427
-#: iramuteq.py:636
-#: tableau.py:185
-msgid "Spreadsheet analysis"
-msgstr "Analyse de tableau"
-
-#: iramuteq.py:271
-#: iramuteq.py:428
-#: iramuteq.py:635
-#: openanalyse.py:116
-#: openanalyse.py:119
-#: openanalyse.py:122
-#: openanalyse.py:125
-#: openanalyse.py:128
-#: openanalyse.py:131
-#: tableau.py:186
+#: tree.py:429
+msgid "Split matrix"
+msgstr "Extraire de la matrice..."
+
+#: layout.py:551
+msgid "Stat by cluster"
+msgstr "Stat par classe"
+
+#: iramuteq.py:281 tree.py:394
+msgid "Statistics"
+msgstr "Statistiques"
+
+#: tree.py:405
+msgid "Sub corpus"
+msgstr "Sous-corpus"
+
+#: tree.py:457
+msgid "Sub corpus from clusters"
+msgstr "Sous-corpus par classe"
+
+#: tree.py:403
+msgid "Sub corpus from metadata"
+msgstr "Sous-corpus par méta-données"
+
+#: tree.py:404
+msgid "Sub corpus from thematic"
+msgstr "Sous-corpus par thématique"
+
+#: dialog.py:1340
+msgid "Supplementaries variables (almost 1)"
+msgstr "Variables supplémentaires (au moins 1)"
+
+#: layout.py:776
+msgid "Supplementary forms"
+msgstr "Formes supplémentaires"
+
+#: dialog.py:1327
+msgid "Supplementary variables are marked with a *"
+msgstr "Les variables supplémentaires sont marquées par une *"
+
+#: ProfList.py:331
+msgid "Synonymous"
+msgstr "Synonymes"
+
+#: dialog.py:562
+msgid "Take the x first points"
+msgstr "Prendre les x premiers points"
+
+#: dialog.py:566
+msgid "Take the x first points by cluster"
+msgstr "Prendre les x premiers par classe"
+
+#: iramuteq.py:301
 msgid "Text analysis"
 msgstr "Analyse de texte"
 
-#: iramuteq.py:219
+#: dialog.py:2101
+msgid "Text color"
+msgstr "Couleur du texte"
+
+#: dialog.py:2381
+msgid "Text mark"
+msgstr "Marqueur de texte"
+
+#: guifunct.py:306
+msgid "Text on vertex"
+msgstr "Texte sur les sommets"
+
+#: dialog.py:2406
+msgid "Text segments build process"
+msgstr "Méthode de construction des segments"
+
+#: dialog.py:2415
+msgid "Text segments size"
+msgstr "Taille des segments de texte"
+
+#: dialog.py:73 dialog.py:74 dialog.py:78
+msgid "Text separator"
+msgstr "Séparateur de texte"
+
+#: dialog.py:560 dialog.py:2061 guifunct.py:345
+msgid "Text size"
+msgstr "Taille du texte"
+
+#: dialog.py:583
+msgid "Text size proportional to chi2"
+msgstr "Taille du texte proportionnelle au chi2"
+
+#: dialog.py:576
+msgid "Text size proportional to frequency"
+msgstr "Taille du texte proportionnelle à la fréquence"
+
+#: tree.py:147
+msgid "Textual corpus"
+msgstr "Corpus textuel"
+
+#: tree.py:449 tree.py:478
+msgid "Tgen Editor"
+msgstr "Editeur de TGen"
+
+#: layout.py:689
+msgid "Tgens Specificities"
+msgstr "Spécificités des TGens"
+
+#: dialog.py:952 dialog.py:1029
+msgid "This file already exists. Continue anyway ?"
+msgstr "Ce fichier existe déjà. Continuer quand même ?"
+
+#: tree.py:1074
+#, python-format
+msgid "This file does not exist : %s"
+msgstr "Ce fichier n'existe pas : %s"
+
+#: layout.py:133
+msgid "This file will be delete : "
+msgstr "Ce fichier sera supprimer : "
+
+#: ProfList.py:462
+msgid "This is not a meta-data"
+msgstr "Ce n'est pas une méta-donnée"
+
+#: ProfList.py:428
+msgid "This is not a variable_modality form"
+msgstr "Ce n'est pas une forme du type variable_modalité"
+
+#: iramuteq.py:241
 msgid "Tools"
 msgstr "Outils"
 
-#: iramuteq.py:269
-#: iramuteq.py:426
-#: iramuteq.py:564
-#: iramuteq.py:634
-#: tableau.py:184
+#: ProfList.py:335
+msgid "Tools from CNRTL (french only)"
+msgstr "Outils du CNTRL (français uniquement)"
+
+#: layout.py:774
+msgid "Total"
+msgstr "Total"
+
+#: listlex.py:209 listlex.py:274 ProfList.py:339 ProfList.py:622
+msgid "Typical text segments"
+msgstr "Segments de texte caractéristiques"
+
+#: guifunct.py:206
+msgid "Use previous coordinates"
+msgstr "Utiliser les coordonnées précédentes"
+
+#: dialog.py:420
+msgid "Use svdlibc"
+msgstr "Utiliser svdlibc"
+
+#: dialog.py:2390
+msgid "Use the expression dictionary"
+msgstr "Utiliser le dictionnaire des expressions"
+
+#: dialog.py:1721 dialog.py:2046
+msgid "Used forms"
+msgstr "Formes utilisées"
+
+#: dialog.py:2874
+msgid "Variables"
+msgstr "Variables"
+
+#: dialog.py:2718
+msgid "Variables (with the * but without the _)"
+msgstr "Variables (avec le * mais sans le _ )"
+
+#: dialog.py:1749
+msgid "Variables choice"
+msgstr "Choix des variables"
+
+#: dialog.py:2246
+msgid "Variables selection"
+msgstr "Sélection des variables"
+
+#: guifunct.py:621
+msgid "Vertex color"
+msgstr "Couleur des sommets"
+
+#: guifunct.py:649
+msgid "Vertex size"
+msgstr "Taille des sommets"
+
+#: guifunct.py:439
+msgid "Vertex size proportional to frequency"
+msgstr "Taille des sommets proportionnelle à la fréquence"
+
+#: guifunct.py:486
+msgid "Vertex text size proportional to frequency"
+msgstr "Taille du texte des sommets proportionnelle à la fréquence"
+
+#: iramuteq.py:299
 msgid "View"
 msgstr "Vue"
 
-#: iramuteq.py:206
+#: iramuteq.py:309
+msgid "Welcome"
+msgstr "Bienvenue"
+
+#: ProfList.py:340
+msgid "Word cloud of cluster"
+msgstr "Nuage de mots de la classe"
+
+#: ProfList.py:317
+msgid "Word graph"
+msgstr "Graphe du mot"
+
+#: dialog.py:2017
+msgid "Word size proportional to ..."
+msgstr "Taille des mots proportionnelles à ..."
+
+#: iramuteq.py:290 tree.py:401
+msgid "WordCloud"
+msgstr "Nuage de mots"
+
+#: dialog.py:1956
+msgid "Wordcloud settings"
+msgstr "Préférences de wordcloud"
+
+#: dialog.py:1222
+msgid "absolute (sum of chi2 of marked forms in segment)"
+msgstr "absolue (somme des chi2 des formes marquées du segment)"
+
+#: dialog.py:559 dialog.py:1722 dialog.py:2050
+msgid "actives"
+msgstr "actives"
+
+#: dialog.py:1722 dialog.py:2050
+msgid "actives and supplementaries"
+msgstr "actives et supplémentaires"
+
+#: OptionAlceste.py:32
+msgid "actives forms"
+msgstr "formes actives"
+
+#: tree.py:485
+msgid "antiprofiles"
+msgstr "antiprofils"
+
+#: dialog.py:2907 dialog.py:2927
+msgid "automatic (mean)"
+msgstr "automatique (moyenne)"
+
+#: dialog.py:1911
+msgid "bar"
+msgstr "barre"
+
+#: dialog.py:1888
+msgid "black and white"
+msgstr "noir et blanc"
+
+#: dialog.py:2183
+msgid "black and white graphical"
+msgstr "graphique en noir et blanc"
+
+#: dialog.py:2286
+msgid "characters"
+msgstr "caractères"
+
+#: dialog.py:1733 dialog.py:1735 dialog.py:2021
+msgid "chi2"
+msgstr "chi2"
+
+#: dialog.py:1911
+msgid "circular diagram"
+msgstr "camembert"
+
+#: dialog.py:1481
+msgid "cluster"
+msgstr "classe"
+
+#: dialog.py:559 dialog.py:873
+msgid "clusters"
+msgstr "classes"
+
+#: dialog.py:1888
+msgid "color"
+msgstr "couleur"
+
+#: dialog.py:2177
+msgid "column percentage"
+msgstr "pourcentage en colonne"
+
+#: dialog.py:557
+msgid "coordinates"
+msgstr "coordonnées"
+
+#: dialog.py:2298 dialog.py:2697
+msgid "corpus"
+msgstr "corpus"
+
+#: dialog.py:557
+msgid "correlations"
+msgstr "corrélations"
+
+#: OptionAlceste.py:30
+msgid "double on RST"
+msgstr "double sur RST"
+
+#: dialog.py:2161
+msgid "expected values"
+msgstr "valeurs attendues"
+
+#: dialog.py:1481
+msgid "form"
+msgstr "forme"
+
+#: dialog.py:2021
+msgid "frequency"
+msgstr "fréquences"
+
+#: iramuteq.py:221
 msgid "from copy/paste"
 msgstr "à partir de copier/coller"
 
-#: iramuteq.py:205
+#: iramuteq.py:220
 msgid "from mail"
 msgstr "à partir de mails"
 
-#: iramuteq.py:204
+#: iramuteq.py:219
 msgid "from xml"
 msgstr "à partir de fichiers xml"
 
+#: dialog.py:2180
+msgid "graphical"
+msgstr "Graphique"
+
+#: dialog.py:554 dialog.py:1826 dialog.py:1979 guifunct.py:416
+msgid "height"
+msgstr "hauteur"
+
+#: dialog.py:1733
+msgid "hypergeometrical law"
+msgstr "loi hypergéométrique"
+
+#: dialog.py:1072
+msgid "indexation"
+msgstr "indexation"
+
+#: layout.py:596
+msgid "line classified on"
+msgstr "lignes classées sur"
+
+#: dialog.py:2907 dialog.py:2927
+msgid "manual"
+msgstr "manuelle"
+
+#: dialog.py:1727
+msgid "modalities"
+msgstr "modalités"
+
+#: dialog.py:46 dialog.py:56 dialog.py:349 dialog.py:364 dialog.py:921
+#: dialog.py:1259 dialog.py:1331
+msgid "no"
+msgstr "non"
+
+#: dialog.py:2158
+msgid "observed values"
+msgstr "valeurs observées"
+
+#: dialog.py:2286
+msgid "occurrences"
+msgstr "occurrences"
+
+#: textstat.py:54
+msgid "of forms"
+msgstr "des formes"
+
+#: textstat.py:54
+msgid "of occurrences"
+msgstr "des occurrences"
+
+#: dialog.py:1072
+msgid "other"
+msgstr "Autre"
+
+#: dialog.py:2286
+msgid "paragraphs"
+msgstr "paragraphes"
+
+#: dialog.py:1065
+msgid "properties"
+msgstr "propriétés"
+
+#: dialog.py:1222
+msgid "relative (mean of chi2 of marked forms in segment)"
+msgstr "relative (moyenne des chi2 des formes marquées par segment)"
+
+#: dialog.py:2164
+msgid "residuals"
+msgstr "résidus"
+
+#: dialog.py:2174
+msgid "row percentage"
+msgstr "pourcentages en ligne"
+
+#: dialog.py:1481
+msgid "see"
+msgstr "voir"
+
+#: layout.py:592
+msgid "segments classified on"
+msgstr "segments classés sur"
+
+#: OptionAlceste.py:30
+msgid "simple on text segments"
+msgstr "simple sur segments de texte"
+
+#: OptionAlceste.py:30
+msgid "simple on texts"
+msgstr "simple sur texte"
+
+#: dialog.py:2167
+msgid "standardized residuals"
+msgstr "résidus standardisés"
+
+#: dialog.py:559
+msgid "stars"
+msgstr "étoiles"
+
+#: dialog.py:559 dialog.py:1722 dialog.py:2050
+msgid "supplementaries"
+msgstr "supplémentaires"
+
+#: OptionAlceste.py:45
+msgid "svd method"
+msgstr "méthode pour svd"
+
+#: layout.py:594
+msgid "texts classified on"
+msgstr "textes classés sur"
+
+#: dialog.py:2747
+msgid "thematics (one by line, with the -*)"
+msgstr "thématiques (une par ligne, avec l'étoile (*))"
+
+#: layout.py:598
+msgid "time"
+msgstr "temps"
+
+#: dialog.py:2171
+msgid "total percentage"
+msgstr "pourcentage total"
+
+#: dialog.py:1727
+msgid "variables"
+msgstr "variables"
+
+#: dialog.py:552 dialog.py:1837 dialog.py:1991 guifunct.py:423
+msgid "width"
+msgstr "largeur"
+
+#: dialog.py:46 dialog.py:56 dialog.py:349 dialog.py:364 dialog.py:921
+#: dialog.py:1259 dialog.py:1331
+msgid "yes"
+msgstr "oui"
+
 #~ msgid "&Open a questionnaire\tCtrl+O"
 #~ msgstr "Ouvrir un questionnaire"
 
+#, fuzzy
+#~ msgid "Associated Forms"
+#~ msgstr "Formes utilisées"
+
+#~ msgid "Graphical type"
+#~ msgstr "Type de graphique"
+
 #~ msgid "Open a questionnaire"
 #~ msgstr "Ouvrir un questionnaire"
+
+#, fuzzy
+#~ msgid "Reinert method"
+#~ msgstr "Méthode Reinert"
+
+#~ msgid "Selection"
+#~ msgstr "Sélection"
+
+#, fuzzy
+#~ msgid "Similarities analysis"
+#~ msgstr "Analyses de similitudes"
+
+#, fuzzy
+#~ msgid "Wordcloud"
+#~ msgstr "Nuage de mots"
index 6050d2e..a7d7b2e 100644 (file)
--- a/layout.py
+++ b/layout.py
@@ -569,37 +569,34 @@ def PrintRapport(self, corpus, parametres, istxt = True):
 """ % datetime.datetime.now().ctime()
     if istxt :
         totocc = corpus.gettotocc()
-        txt += u'nombre de textes: %i%s' % (corpus.getucinb(), sep)
-        txt += u'nombre de segments de textes: %i%s' % (corpus.getucenb(), sep)
-        txt += u'nombre de formes: %i%s' % (len(corpus.formes), sep)
-        txt += u'nombre d\'occurrences: %i%s' % (totocc, sep)
-        txt += u'moyenne d\'occurrences par forme: %f%s' % (float(totocc) / float(len(self.corpus.formes)), sep)
-        txt += u'nombre de lemmes: %i%s' % (len(corpus.lems), sep)
-        txt += u'nombre de formes actives: %i%s' % (corpus.getactivesnb(1), sep)
-        txt += u'nombre de formes supplémentaires: %i%s' % (corpus.getactivesnb(2), sep)
-        txt += u'nombre de formes actives de fréquence >= %i: %i%s' % (parametres['eff_min_forme'], parametres['nbactives'], sep)
-        txt += u'moyenne d\'occurrences par segments :%f%s' % (float(totocc) / float(corpus.getucenb()), sep)
+        txt += ': '.join([_(u'Number of texts').decode('utf8'),  u'%i%s' % (corpus.getucinb(), sep)])
+        txt += ': '.join([_(u'Number of text segments').decode('utf8'),  '%i%s' % (corpus.getucenb(), sep)])
+        txt += ': '.join([_(u'Number of forms').decode('utf8'), '%i%s' % (len(corpus.formes), sep)])
+        txt += ': '.join([_(u'Number of occurrences').decode('utf8'), '%i%s' % (totocc, sep)])
+        #txt += u'moyenne d\'occurrences par forme: %f%s' % (float(totocc) / float(len(self.corpus.formes)), sep)
+        txt += ': '.join([_(u'Number of lemmas').decode('utf8'), '%i%s' % (len(corpus.lems), sep)])
+        txt += ': '.join([_(u'Number of active forms').decode('utf8'), '%i%s' % (corpus.getactivesnb(1), sep)])
+        txt += ': '.join([_(u'Number of supplementary forms').decode('utf8'), '%i%s' % (corpus.getactivesnb(2), sep)])
+        txt += ' >= '.join([_(u'Number of active forms with a frequency').decode('utf8'), '%i: %i%s' % (parametres['eff_min_forme'], parametres['nbactives'], sep)])
+        txt += ': '.join([_(u'Mean of forms by segment').decode('utf8'), '%f%s' % (float(totocc) / float(corpus.getucenb()), sep)])
         if 'tailleuc1' in parametres :
             if parametres['classif_mode'] == 0 :
-                txt += u'taille rst1 / rst2: %i / %i - %i / %i%s' % (parametres['tailleuc1'], parametres['tailleuc2'], parametres['lenuc1'], parametres['lenuc2'], sep)
+                txt += ': '.join([_(u'Size of rst1 / rst2').decode('utf8'), '%i / %i - %i / %i%s' % (parametres['tailleuc1'], parametres['tailleuc2'], parametres['lenuc1'], parametres['lenuc2'], sep)])
     else :
         self.Ucenb = self.nbind
-        txt += u'nombre d\'individus : %i%s' % (self.nbind, sep)
-        txt += u'nombre de classes : %i%s' % (self.clnb, sep)
+        txt += ': '.join([_(u'Number of lines').decode('utf8'), '%i%s' % (self.nbind, sep)])
+        txt += ': '.join([_(u'Number of clusters').decode('utf8'), '%i%s' % (self.clnb, sep)])
     if istxt :
-        txt += u'nombre de classes : %i%s' % (parametres['clnb'], sep)
+        txt += ': '.join([_(u'Number of clusters').decode('utf8'), '%i%s' % (parametres['clnb'], sep)])
         if parametres['classif_mode'] == 0 or parametres['classif_mode'] == 1 :
-            txt += u'%i segments classés sur %i (%.2f%%)%s' % (sum([len(cl) for cl in corpus.lc]), corpus.getucenb(), (float(sum([len(cl) for cl in corpus.lc])) / float(corpus.getucenb())) * 100, sep)
+            txt += ' '.join(['%i' % sum([len(cl) for cl in corpus.lc]), _(u'segments classified on').decode('utf8'), '%i (%.2f%%)%s' % (corpus.getucenb(), (float(sum([len(cl) for cl in corpus.lc])) / float(corpus.getucenb())) * 100, sep)])
         elif self.parametres['classif_mode'] == 2 :
-            txt += u'%i textes classés sur %i (%.2f%%)%s' % (sum([len(cl) for cl in corpus.lc]), corpus.getucinb(), (float(sum([len(cl) for cl in corpus.lc]))) / float(corpus.getucinb()) * 100, sep)
+            txt += ' '.join([u'%i' % sum([len(cl) for cl in corpus.lc]), _(u'texts classified on').decode('utf8'), '%i (%.2f%%)%s' % (corpus.getucinb(), (float(sum([len(cl) for cl in corpus.lc]))) / float(corpus.getucinb()) * 100, sep)])
     else :
-        txt += u'%i segments classées sur %i (%.2f%%)%s' % (self.ucecla, self.Ucenb, (float(self.ucecla) / float(self.Ucenb)) * 100, sep)
+        txt += ' '.join(['%i' % self.ucecla, _(u'line classified on').decode('utf8'), '%i (%.2f%%)%s' % (self.Ucenb, (float(self.ucecla) / float(self.Ucenb)) * 100, sep)])
  
-    txt += """
-###########################
-temps d'analyse : %s
-###########################
-""" % parametres.get('time', '')
+    txt += ''.join([sep, u'###########################', sep, _(u'time').decode('utf8'), ' : %s' % parametres.get('time', ''), sep, u'###########################', sep])
+
     with open(self.pathout['pre_rapport'], 'w') as f :
         f.write(txt)
 
@@ -689,7 +686,7 @@ class TgenLayout :
             self.page.tgentab = ListForSpec(ira, gparent, self.page.tgens, etoiles[1:])
             self.page.tgentab.tgen = True
             self.page.tgentab.tgens = tgen.tgen
-            page.AddPage(self.page.tgentab, u'Tgens Specificities')
+            page.AddPage(self.page.tgentab, _(u'Tgens Specificities').decode('utf8'))
             page.SetSelection(page.GetPageCount() - 1)
 
 class dolexlayout :
@@ -726,25 +723,25 @@ class dolexlayout :
         self.ListPanEffRelForme = ListForSpec(ira, self, self.DictEffRelForme, self.etoiles)
         self.ListPanEffRelType = ListForSpec(ira, self, self.DictEffRelType, self.etoiles)
         
-        self.TabStat.AddPage(self.ListPan, u'formes'
+        self.TabStat.AddPage(self.ListPan, _(u'Forms').decode('utf8')
         if os.path.exists(self.pathout['banalites.csv']) :
-            self.TabStat.AddPage(self.listban, u'banalités')
-        self.TabStat.AddPage(self.ListPant, u'Types')
-        self.TabStat.AddPage(self.ListPanEff, u'Effectifs formes')
-        self.TabStat.AddPage(self.ListPanEffType, u'Effectifs Type')
-        self.TabStat.AddPage(self.ListPanEffRelForme, u'Effectifs relatifs formes')
-        self.TabStat.AddPage(self.ListPanEffRelType, u'Effectifs relatifs Type')
+            self.TabStat.AddPage(self.listban, _(u'Banal forms').decode('utf8'))
+        self.TabStat.AddPage(self.ListPant, _(u'POS').decode('utf8'))
+        self.TabStat.AddPage(self.ListPanEff, _(u'Forms frequencies').decode('utf8'))
+        self.TabStat.AddPage(self.ListPanEffType, _(u'POS frequencies').decode('utf8'))
+        self.TabStat.AddPage(self.ListPanEffRelForme, _(u'Forms relative frequencies').decode('utf8'))
+        self.TabStat.AddPage(self.ListPanEffRelType, _(u'POS relative frequencies').decode('utf8'))
         if self.parametres['clnb'] > 2 :
             self.TabAFC = aui.AuiNotebook(self.TabStat, -1, wx.DefaultPosition)
             list_graph=read_list_file(self.dictpathout['liste_graph_afcf'], encoding = self.encoding)
             self.tabAFCGraph = GraphPanelAfc(self.TabAFC, self.dictpathout, list_graph, self.parametres['clnb'], itempath ='liste_graph_afcf', coding = self.encoding)
-            self.TabAFC.AddPage(self.tabAFCGraph, 'AFC formes')
+            self.TabAFC.AddPage(self.tabAFCGraph, _(u'CA forms').decode('utf8'))
             list_graph=read_list_file(self.dictpathout['liste_graph_afct'], encoding = self.encoding)
             self.tabAFCTGraph = GraphPanelAfc(self.TabAFC, self.dictpathout, list_graph, self.parametres['clnb'], itempath ='liste_graph_afct', coding=self.encoding)
-            self.TabAFC.AddPage(self.tabAFCTGraph, 'AFC type')
-            self.TabStat.AddPage(self.TabAFC, 'AFC')
+            self.TabAFC.AddPage(self.tabAFCTGraph, _(u'CA POS').decode('utf8'))
+            self.TabStat.AddPage(self.TabAFC, _(u'CA').decode('utf8'))
         
-        ira.nb.AddPage(self.TabStat, u'Spécificités')
+        ira.nb.AddPage(self.TabStat, ' - '.join([_(u'Specificities').decode('utf8'), self.parametres['name']]))
         self.ira = ira
         
         self.TabStat.corpus = self.corpus
@@ -772,12 +769,19 @@ class StatLayout:
         #self.TabStatTot = wx.TextCtrl(self.TabStat, -1, style=wx.NO_BORDER | wx.TE_MULTILINE | wx.TE_RICH2)
         list_graph = [['zipf.png', 'zipf']]
         self.TabStatTot = GraphPanel(ira.nb, self.pathout, list_graph, self.result['glob'])
-        self.TabStat.AddPage(self.TabStatTot, 'global')
+        self.TabStat.AddPage(self.TabStatTot, _(u'Abstract').decode('utf8'))
+        
+        dictlabel = {'total' : _(u'Total').decode('utf8'),
+                     u'formes_actives' : _(u'Actives forms').decode('utf8'),
+                     u'formes_supplémentaires': _(u'Supplementary forms').decode('utf8'),
+                     u'hapax' : _(u'Hapax').decode('utf8'),
+                     }
+        
         for item in self.result:
             if item != 'glob':
                 datam = [['forme', 'nb']]
                 self.ListPan = ListPanel(ira, self, self.result[item])
-                self.TabStat.AddPage(self.ListPan, ' '.join(item.split('_'))
+                self.TabStat.AddPage(self.ListPan, dictlabel[item]
         ira.nb.AddPage(self.TabStat, '%s' % parametres['name'])
         ira.nb.SetSelection(ira.nb.GetPageCount() - 1)
         ira.ShowAPane("Tab_content")
@@ -1005,7 +1009,7 @@ class CopusPanel(wx.Panel) :
         fgSizer5.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )        
         self.fgSizer5 = fgSizer5
         
-        self.m_staticText18 = wx.StaticText( self, wx.ID_ANY, u"Description du corpus", wx.DefaultPosition, wx.DefaultSize, 0 )
+        self.m_staticText18 = wx.StaticText( self, wx.ID_ANY, _(u"Description of corpus").decode('utf8'), wx.DefaultPosition, wx.DefaultSize, 0 )
 
         self.m_staticText18.Wrap( -1 )
         fgSizer5.Add( self.m_staticText18, 0, wx.ALL, 5 )
@@ -1022,12 +1026,12 @@ class CopusPanel(wx.Panel) :
         self.m_staticText21.Wrap( -1 )
         fgSizer5.Add( self.m_staticText21, 0, wx.ALL, 5 )
 
-        description = {'lang' : u'langue',
-                       'encoding' : u'encodage',
-                       'ucinb' : u'Nombre de textes',
-                       'ucenb' : u'Nombre de segments de texte',
-                       'formesnb' : u'Nombre de formes',
-                       'hapax' : u'Nombre d\'hapax'
+        description = {'lang' : _(u'Language').decode('utf8'),
+                       'encoding' : _(u'Characters set').decode('utf8'),
+                       'ucinb' : _(u'Number of texts').decode('utf8'),
+                       'ucenb' : _(u'Number of text segments').decode('utf8'),
+                       'formesnb' : _(u'Number of forms').decode('utf8'),
+                       'hapax' : _(u'Number of hapax').decode('utf8'),
                       }
 
         keys = ['lang', 'encoding', 'originalpath', 'pathout', 'date', 'time']
@@ -1119,7 +1123,7 @@ class SimiLayout(DefaultTextLayout) :
         self.graphpan.Bind(wx.EVT_BUTTON, self.redosimi, self.graphpan.butafc)
         self.graphpan.Bind(wx.EVT_BUTTON, self.export, self.graphpan.butexport)
         self.tabsimi.AddPage(self.graphpan, 'Graph')
-        self.ira.nb.AddPage(self.tabsimi, 'Analyse de graph')
+        self.ira.nb.AddPage(self.tabsimi, _(u'Graph analysis').decode('utf8'))
         self.ira.ShowTab(True)
         self.ira.nb.SetSelection(self.ira.nb.GetPageCount() - 1)
         
@@ -1211,7 +1215,7 @@ class SimiLayout(DefaultTextLayout) :
         with open(filetmp, 'w') as f :
             f.write(txt)
         exec_rcode(self.ira.RPath, filetmp)
-        mss = wx.MessageDialog(self.ira, fileout, u'Fichier exporté', wx.OK)
+        mss = wx.MessageDialog(self.ira, fileout, _(u'File exported').decode('utf8'), wx.OK)
         mss.CenterOnParent()
         mss.ShowModal()
         mss.Destroy()
@@ -1238,7 +1242,7 @@ class FreqLayout(DefaultMatLayout) :
         res = normpath_win32(self.pathout['resultats.html']).replace('\\','/')
         self.tab.LoadPage(res)
         self.tab.parametres = self.parametres
-        self.ira.nb.AddPage(self.tab, u"Fréquences")
+        self.ira.nb.AddPage(self.tab, ' - '.join([_(u"Frequency").decode('utf8'), self.parametres['name']]))
 
 
 class Chi2Layout(DefaultMatLayout) :
@@ -1249,14 +1253,14 @@ class Chi2Layout(DefaultMatLayout) :
         res = normpath_win32(self.pathout['resultats-chi2.html']).replace('\\','/')
         self.tab.LoadPage(res)
         self.tab.parametres = self.parametres
-        self.ira.nb.AddPage(self.tab, ' - '.join([u"Chi2", "%s" % self.parametres['name']]))
+        self.ira.nb.AddPage(self.tab, ' - '.join([u"Chi2", self.parametres['name']]))
         #self.ira.nb.SetSelection(self.ira.nb.GetPageCount() - 1)
         #self.ira.ShowAPane("Tab_content")  
 
 
 class ProtoLayout(DefaultMatLayout) :
     def dolayout(self) :
-        list_graph = [['proto.png', 'Analyse prototypique']]
+        list_graph = [['proto.png', _(u'Prototypical analysis').decode('utf8')]]
         #self.Tab = aui.AuiNotebook(self.ira.nb, -1, wx.DefaultPosition)
         #if self.parametres['svg'] :
         #    list_graph = [['nuage_1.svg', 'Nuage']]
@@ -1266,7 +1270,7 @@ class ProtoLayout(DefaultMatLayout) :
         #self.Tab.AddPage(self.TabProto, 'Analyse Prototypique')
         #self.Tab.corpus = self.corpus
         self.TabProto.parametres = self.parametres
-        self.ira.nb.AddPage(self.TabProto, 'Analyse Prototypique - %s' % self.parametres['name'])
+        self.ira.nb.AddPage(self.TabProto, ' - '.join([_(u'Prototypical analysis').decode('utf8'), self.parametres['name']]))
         #self.ira.nb.SetSelection(self.ira.nb.GetPageCount() - 1)
         #self.ira.ShowAPane("Tab_content")
 
@@ -1288,7 +1292,7 @@ class SimiMatLayout(DefaultMatLayout) :
         self.graphpan.Bind(wx.EVT_BUTTON, self.export, self.graphpan.butexport)
         self.tabsimi.AddPage(self.graphpan, 'Graph')
         self.tabsimi.parametres = self.parametres
-        self.parent.nb.AddPage(self.tabsimi, 'Analyse de graph')
+        self.parent.nb.AddPage(self.tabsimi, ' - '.join([_(u'Graph analysis').decode('utf8'), self.parametres['name']]))
         #self.parent.ShowTab(True)
         #self.parent.nb.SetSelection(self.parent.nb.GetPageCount() - 1)
 
@@ -1454,7 +1458,7 @@ class SimiMatLayout(DefaultMatLayout) :
         with open(filetmp, 'w') as f :
             f.write(txt)
         exec_rcode(self.ira.RPath, filetmp)
-        mss = wx.MessageDialog(self.ira, fileout, u'Fichier exporté', wx.OK)
+        mss = wx.MessageDialog(self.ira, fileout, _(u'File exported').decode('utf8'), wx.OK)
         mss.CenterOnParent()
         mss.ShowModal()
         mss.Destroy()
index 10729e8..5cddd28 100644 (file)
@@ -194,9 +194,9 @@ class ListForSpec(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ColumnSor
             # make a menu
             menu = wx.Menu()
             # add some items
-            menu.Append(self.popupID1, u"Formes associées")
-            menu.Append(self.popupID2, u"Concordancier")
-            menu.Append(self.popupID3, u"Graphique")
+            menu.Append(self.popupID1, _(u"Associated forms").decode('utf8'))
+            menu.Append(self.popupID2, _(u"Concordance").decode('utf8'))
+            menu.Append(self.popupID3, _(u"Graphic").decode('utf8'))
             menu_stcaract = wx.Menu()
             self.menuid = {}
             if not self.tgen :
@@ -205,7 +205,7 @@ class ListForSpec(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ColumnSor
                     self.menuid[nid] = i
                     menu_stcaract.Append(nid, et)
                     self.Bind(wx.EVT_MENU, self.onstcaract, id = nid)
-                menu.AppendMenu(-1, u"Segments de texte caractéristiques", menu_stcaract)
+                menu.AppendMenu(-1, _(u"Typical text segments").decode('utf8'), menu_stcaract)
                 menu.Append(self.onmaketgen, _(u"Make Tgen").decode('utf8'))
             self.PopupMenu(menu)
             menu.Destroy()
@@ -229,7 +229,7 @@ class ListForSpec(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ColumnSor
             rep.append([corpus.getforme(forme).forme, corpus.getforme(forme).freq])
         rep.sort(key = itemgetter(1), reverse = True)
         items = dict([[i, '<font face="courier">' + '\t:\t'.join([str(val) for val in forme]) + '</font>'] for i, forme in enumerate(rep)])
-        win = message(self, items, u"Formes associées", (300, 200))
+        win = message(self, items, _(u"Associated forms").decode('utf8'), (300, 200))
         #win = message(self, u"Formes associées", (300, 200))
         #win.html = '<html>\n' + '<br>'.join([' : '.join([str(val) for val in forme]) for forme in rep]) + '\n</html>'
         #win.HtmlPage.SetPage(win.html)
@@ -270,7 +270,7 @@ class ListForSpec(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ColumnSor
         nuces = [val[1] for val in ntab2]
         ucis_txt, ucestxt = doconcorde(corpus, nuces, self.la)
         items = dict([[i, '<br>'.join([ucis_txt[i], '<table bgcolor = #1BF0F7 border=0><tr><td><b>score : %.2f</b></td></tr></table><br>' % ntab2[i][0], ucestxt[i]])] for i in range(0,len(ucestxt))])
-        win = message(self, items, u"Segments de texte caractéristiques - %s" % self.first[ind], (900, 600))
+        win = message(self, items, ' - '.join([_(u"Typical text segments").decode('utf8'), "%s" % self.first[ind]]), (900, 600))
         win.Show(True)
         
     def OnPopupTwo(self, event):
@@ -290,7 +290,7 @@ class ListForSpec(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ColumnSor
             wordlist = [val for val in self.tgens[item] if val in corpus.lems]
         ucis_txt, ucestxt = doconcorde(corpus, uce_ok, wordlist)
         items = dict([[i, '<br><br>'.join([ucis_txt[i], ucestxt[i]])] for i in range(0,len(ucestxt))])
-        win = message(ira, items, u"Concordancier - %s" % item, (800, 500), uceids = uce_ok)
+        win = message(ira, items, ' - '.join([_(u"Concordance").decode('utf8'), "%s" % item]), (800, 500), uceids = uce_ok)
         win.Show(True)
 
     def getinf(self, txt) :
@@ -341,7 +341,7 @@ class ListForSpec(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ColumnSor
         with open(tmpscript, 'w') as f :
             f.write(txt)
         exec_rcode(self.parent.RPath, tmpscript, wait = True)
-        win = MessageImage(self, -1, u"Graphique", size=(700, 500),style = wx.DEFAULT_FRAME_STYLE)
+        win = MessageImage(self, -1, _(u"Graphic").decode('utf8'), size=(700, 500),style = wx.DEFAULT_FRAME_STYLE)
         win.addsaveimage(tmpgraph)
         txt = "<img src='%s'>" % tmpgraph
         win.HtmlPage.SetPage(txt)
index c59bfc5..d2b3c56 100644 (file)
Binary files a/locale/es_ES/LC_MESSAGES/iramuteq.mo and b/locale/es_ES/LC_MESSAGES/iramuteq.mo differ
index 071a79c..aabce4f 100644 (file)
Binary files a/locale/fr_FR/LC_MESSAGES/iramuteq.mo and b/locale/fr_FR/LC_MESSAGES/iramuteq.mo differ
index c59bfc5..d2b3c56 100644 (file)
Binary files a/locale/it_IT/LC_MESSAGES/iramuteq.mo and b/locale/it_IT/LC_MESSAGES/iramuteq.mo differ
index 373b3e5..863054b 100644 (file)
Binary files a/locale/pt_PT/LC_MESSAGES/iramuteq.mo and b/locale/pt_PT/LC_MESSAGES/iramuteq.mo differ
index bf48abf..e73ae25 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-02-01 19:26+0100\n"
+"POT-Creation-Date: 2014-12-03 18:41+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"
@@ -17,97 +17,1400 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: iramuteq.py:268
+#: layout.py:510
+msgid "3D graph"
+msgstr ""
+
+#: iramuteq.py:294
+msgid "About..."
+msgstr ""
+
+#: dialog.py:1692 dialog.py:1693
+msgid "Absent form"
+msgstr ""
+
+#: layout.py:772 textstat.py:50
+msgid "Abstract"
+msgstr ""
+
+#: layout.py:775
+msgid "Actives forms"
+msgstr ""
+
+#: dialog.py:1336
+msgid "Actives variables (almost 3)"
+msgstr ""
+
+#: dialog.py:1901
+msgid "Add cluster size"
+msgstr ""
+
+#: ProfList.py:700
+msgid "All segments"
+msgstr ""
+
+#: layout.py:339 tree.py:444 tree.py:657
+msgid "Antiprofiles"
+msgstr ""
+
+#: ProfList.py:332
+msgid "Antonym"
+msgstr ""
+
+#: layout.py:133
+msgid "Are you sure ?"
+msgstr ""
+
+#: Liste.py:163 Liste.py:180 listlex.py:198 listlex.py:233 ProfList.py:313
+#: ProfList.py:754
+msgid "Associated forms"
+msgstr ""
+
+#: dialog.py:952 dialog.py:1029
+msgid "Attention"
+msgstr ""
+
+#: dialog.py:574
+msgid "Avoid overlay"
+msgstr ""
+
+#: dialog.py:2112
+msgid "Background color"
+msgstr ""
+
+#: layout.py:728
+msgid "Banal forms"
+msgstr ""
+
+#: dialog.py:1247
+msgid "Be carefull : computation of repeated segments profiles can be very long on large corpus"
+msgstr ""
+
+#: dialog.py:2638
+msgid "Build sub corpus"
+msgstr ""
+
+#: layout.py:490 layout.py:517 layout.py:742
+msgid "CA"
+msgstr ""
+
+#: layout.py:741
+msgid "CA POS"
+msgstr ""
+
+#: layout.py:738
+msgid "CA forms"
+msgstr ""
+
+#: dialog.py:2376
+msgid "Change ..."
+msgstr ""
+
+#: dialog.py:1215
+msgid "Characteristic text segments"
+msgstr ""
+
+#: dialog.py:82 dialog.py:2313 dialog.py:2706 layout.py:1030
+msgid "Characters set"
+msgstr ""
+
+#: dialog.py:393
+msgid "Check"
+msgstr ""
+
+#: dialog.py:354
+msgid ""
+"Check for new \n"
+"releases at startup"
+msgstr ""
+
+#: dialog.py:383
+msgid ""
+"Check installation \n"
+"of R packages"
+msgstr ""
+
+#: dialog.py:1481 iramuteq.py:261
+msgid "Chi2"
+msgstr ""
+
+#: ProfList.py:314 ProfList.py:359
+msgid "Chi2 by cluster"
+msgstr ""
+
+#: ProfList.py:315
+msgid "Chi2 by cluster on dendrogram"
+msgstr ""
+
+#: ProfList.py:316 ProfList.py:360
+msgid "Chi2 modalities of variable"
+msgstr ""
+
+#: dialog.py:1728
+msgid "Choice"
+msgstr ""
+
+#: guifunct.py:27
+msgid "Choose a file"
+msgstr ""
+
+#: dialog.py:2523
+msgid "Choose a folder"
+msgstr ""
+
+#: dialog.py:2494
+msgid "Cleaning"
+msgstr ""
+
+#: ProfList.py:767
+msgid "Close"
+msgstr ""
+
+#: layout.py:385 layout.py:482
+msgid "Cluster"
+msgstr ""
+
+#: dialog.py:1308 iramuteq.py:266 iramuteq.py:287 layout.py:526
+#: OptionAlceste.py:29 tree.py:399
+msgid "Clustering"
+msgstr ""
+
+#: tree.py:454 tree.py:639 tree.py:648
+msgid "Clusters statistics"
+msgstr ""
+
+#: dialog.py:1884
+msgid "Color or black and white"
+msgstr ""
+
+#: tree.py:452 tree.py:612
+msgid "Colored corpus"
+msgstr ""
+
+#: dialog.py:63 dialog.py:64 dialog.py:68
+msgid "Column separator"
+msgstr ""
+
+#: guifunct.py:360
+msgid "Communities"
+msgstr ""
+
+#: tree.py:450 tree.py:479
+msgid "Compute Tgen"
+msgstr ""
+
+#: Liste.py:164 Liste.py:191 listlex.py:199 listlex.py:294 ProfList.py:326
+#: ProfList.py:688 ProfList.py:694 ProfList.py:700
+msgid "Concordance"
+msgstr ""
+
+#: dialog.py:2306
+msgid "Corpus' name"
+msgstr ""
+
+#: dialog.py:2341
+msgid "Default"
+msgstr ""
+
+#: dialog.py:440
+msgid "Default R mirror"
+msgstr ""
+
+#: OptionAlceste.py:52
+msgid "Default values"
+msgstr ""
+
+#: ProfList.py:329
+msgid "Definition"
+msgstr ""
+
+#: dialog.py:2440
+msgid "Delete characters not in this list"
+msgstr ""
+
+#: tree.py:492
+msgid "Delete from history"
+msgstr ""
+
+#: dialog.py:1810
+msgid "Dendrogram"
+msgstr ""
+
+#: dialog.py:1854
+msgid "Dendrogram type"
+msgstr ""
+
+#: layout.py:1012
+msgid "Description of corpus"
+msgstr ""
+
+#: dialog.py:1068 dialog.py:2331
+msgid "Dictionary"
+msgstr ""
+
+#: tree.py:626
+msgid "Done"
+msgstr ""
+
+#: guifunct.py:332
+msgid "Edge curved"
+msgstr ""
+
+#: guifunct.py:633
+msgid "Edges color"
+msgstr ""
+
+#: guifunct.py:285
+msgid "Edges threshold"
+msgstr ""
+
+#: guifunct.py:533
+msgid "Edges width proportional to score"
+msgstr ""
+
+#: iramuteq.py:298
 msgid "Edition"
 msgstr ""
 
-#: iramuteq.py:226
-msgid "Exit"
+#: ProfList.py:330
+msgid "Etymology"
+msgstr ""
+
+#: iramuteq.py:248
+msgid "Exit"
+msgstr ""
+
+#: tree.py:456
+msgid "Export clusters"
+msgstr ""
+
+#: tree.py:451
+msgid "Export corpus"
+msgstr ""
+
+#: tree.py:472
+msgid "Export dictionary"
+msgstr ""
+
+#: dialog.py:2998
+msgid "Export finished. Open in a web browser :"
+msgstr ""
+
+#: dialog.py:924
+msgid "Export for ..."
+msgstr ""
+
+#: ProfList.py:342
+msgid "Export for Tropes"
+msgstr ""
+
+#: tree.py:473
+msgid "Export lemma dictionary"
+msgstr ""
+
+#: ProfList.py:341
+msgid "Export..."
+msgstr ""
+
+#: ProfList.py:343
+msgid "Exporter for Owledge"
+msgstr ""
+
+#: iramuteq.py:233
+msgid "Extract mods"
+msgstr ""
+
+#: iramuteq.py:234
+msgid "Extract thematics"
+msgstr ""
+
+#: dialog.py:2737
+msgid "Extraction type"
+msgstr ""
+
+#: layout.py:499
+msgid "Factor"
+msgstr ""
+
+#: dialog.py:590
+msgid "Factor x : "
+msgstr ""
+
+#: dialog.py:592
+msgid "Factor y : "
+msgstr ""
+
+#: dialog.py:594
+msgid "Factor z : "
+msgstr ""
+
+#: iramuteq.py:297
+msgid "File"
+msgstr ""
+
+#: layout.py:1218 layout.py:1461
+msgid "File exported"
+msgstr ""
+
+#: guifunct.py:51 guifunct.py:63 guifunct.py:74
+msgid "File format"
+msgstr ""
+
+#: dialog.py:53 dialog.py:54 dialog.py:58
+msgid "First column is an id"
+msgstr ""
+
+#: dialog.py:43 dialog.py:44 dialog.py:48
+msgid "First line is header"
+msgstr ""
+
+#: Liste.py:56
+msgid "Form"
+msgstr ""
+
+#: layout.py:726
+msgid "Forms"
+msgstr ""
+
+#: layout.py:730
+msgid "Forms frequencies"
+msgstr ""
+
+#: layout.py:732
+msgid "Forms relative frequencies"
+msgstr ""
+
+#: Liste.py:57
+msgid "Freq."
+msgstr ""
+
+#: iramuteq.py:259
+msgid "Frequencies"
+msgstr ""
+
+#: layout.py:1245
+msgid "Frequency"
+msgstr ""
+
+#: dialog.py:2426
+msgid "General"
+msgstr ""
+
+#: layout.py:1126 layout.py:1295
+msgid "Graph analysis"
+msgstr ""
+
+#: ProfList.py:337 ProfList.py:362
+msgid "Graph of cluster"
+msgstr ""
+
+#: guifunct.py:398
+msgid "Graph settings"
+msgstr ""
+
+#: listlex.py:200 listlex.py:345
+msgid "Graphic"
+msgstr ""
+
+#: dialog.py:544 guifunct.py:249
+msgid "Graphic type"
+msgstr ""
+
+#: guifunct.py:706
+msgid "Graphical settings"
+msgstr ""
+
+#: guifunct.py:572
+msgid "Gray scale on text proportional to frequency (0=black, 1=white)"
+msgstr ""
+
+#: layout.py:777
+msgid "Hapax"
+msgstr ""
+
+#: iramuteq.py:302
+msgid "Help"
+msgstr ""
+
+#: iramuteq.py:343
+msgid "Historic"
+msgstr ""
+
+#: iramuteq.py:254
+msgid "Home page"
+msgstr ""
+
+#: dialog.py:1869
+msgid "Image format"
+msgstr ""
+
+#: iramuteq.py:227
+msgid "Import from TXM"
+msgstr ""
+
+#: iramuteq.py:225
+msgid "Import from factiva"
+msgstr ""
+
+#: ProfList.py:325
+msgid "In all segments"
+msgstr ""
+
+#: ProfList.py:323
+msgid "In segments of this cluster"
+msgstr ""
+
+#: ProfList.py:324
+msgid "In segments of this clustering"
+msgstr ""
+
+#: dialog.py:2831
+msgid "Include empty cells (NA)"
+msgstr ""
+
+#: tree.py:389
+msgid "Informations"
+msgstr ""
+
+#: dialog.py:369
+msgid "Interface language"
+msgstr ""
+
+#: dialog.py:2476
+msgid "Keep punctuation"
+msgstr ""
+
+#: dialog.py:1061
+msgid "Keys properties"
+msgstr ""
+
+#: dialog.py:2322 layout.py:1029
+msgid "Language"
+msgstr ""
+
+#: guifunct.py:234
+msgid "Layout"
+msgstr ""
+
+#: dialog.py:919 dialog.py:1255
+msgid "Lemmatised corpus"
+msgstr ""
+
+#: dialog.py:1052
+msgid "Lemmatization"
+msgstr ""
+
+#: iramuteq.py:1087
+msgid "License GNU GPL"
+msgstr ""
+
+#: dialog.py:972
+msgid "Like ALCESTE"
+msgstr ""
+
+#: dialog.py:972
+msgid "Like Lexico"
+msgstr ""
+
+#: dialog.py:2901
+msgid "Limit frequency"
+msgstr ""
+
+#: dialog.py:570
+msgid "Limit points by cluster chi2"
+msgstr ""
+
+#: dialog.py:2921
+msgid "Limit rank"
+msgstr ""
+
+#: layout.py:72
+msgid "List of not plotted points : "
+msgstr ""
+
+#: listlex.py:210 ProfList.py:327
+msgid "Make Tgen"
+msgstr ""
+
+#: dialog.py:599 guifunct.py:683
+msgid "Make a movie"
+msgstr ""
+
+#: dialog.py:2398
+msgid "Make text segments"
+msgstr ""
+
+#: tree.py:169
+msgid "Matrix"
+msgstr ""
+
+#: iramuteq.py:300
+msgid "Matrix analysis"
+msgstr ""
+
+#: dialog.py:400
+msgid ""
+"Maximum \n"
+"memory for R"
+msgstr ""
+
+#: OptionAlceste.py:43
+msgid "Maximum number of analyzed forms"
+msgstr ""
+
+#: dialog.py:2032
+msgid "Maximum number of forms"
+msgstr ""
+
+#: dialog.py:1224
+msgid "Maximum number of text segments"
+msgstr ""
+
+#: guifunct.py:272
+msgid "Maximum tree"
+msgstr ""
+
+#: dialog.py:1273
+msgid "Maxmum size of segments"
+msgstr ""
+
+#: layout.py:581
+msgid "Mean of forms by segment"
+msgstr ""
+
+#: textstat.py:56
+msgid "Mean of occurrences by text"
+msgstr ""
+
+#: dialog.py:1739 dialog.py:2941
+msgid "Minimum frequency"
+msgstr ""
+
+#: OptionAlceste.py:40
+msgid "Minimum frequency of an analyzed form (2=automatic)"
+msgstr ""
+
+#: dialog.py:1281
+msgid "Minimum frequency of segments"
+msgstr ""
+
+#: OptionAlceste.py:37
+msgid "Minimum frequency of text segments by clusters (0=automatic)"
+msgstr ""
+
+#: dialog.py:1265
+msgid "Minimum size of segments"
+msgstr ""
+
+#: dialog.py:1371
+msgid "Minimum text segments frenquency in clusters (2= automatic)"
+msgstr ""
+
+#: dialog.py:2728
+msgid "Modalities (one by line, with the *)"
+msgstr ""
+
+#: ProfList.py:333
+msgid "Morphology"
+msgstr ""
+
+#: iramuteq.py:260
+msgid "Multiple frequencies"
+msgstr ""
+
+#: tree.py:453
+msgid "Navigator"
+msgstr ""
+
+#: dialog.py:1354 dialog.py:1582
+msgid "Next"
+msgstr ""
+
+#: tree.py:720
+msgid "No TGen yet !"
+msgstr ""
+
+#: corpus.py:1524
+msgid "No Text in corpus. Are you sure of the formatting ?"
+msgstr ""
+
+#: dialog.py:2483
+msgid "No space between two forms"
+msgstr ""
+
+#: layout.py:578
+msgid "Number of active forms"
+msgstr ""
+
+#: layout.py:580
+msgid "Number of active forms with a frequency"
+msgstr ""
+
+#: layout.py:588 layout.py:590
+msgid "Number of clusters"
+msgstr ""
+
+#: layout.py:574 layout.py:1033 textstat.py:53
+msgid "Number of forms"
+msgstr ""
+
+#: layout.py:1034 textstat.py:54
+msgid "Number of hapax"
+msgstr ""
+
+#: layout.py:577
+msgid "Number of lemmas"
+msgstr ""
+
+#: layout.py:587
+msgid "Number of lines"
+msgstr ""
+
+#: layout.py:575 textstat.py:52
+msgid "Number of occurrences"
+msgstr ""
+
+#: layout.py:579
+msgid "Number of supplementary forms"
+msgstr ""
+
+#: dialog.py:1361 OptionAlceste.py:35
+msgid "Number of terminal clusters on phase 1"
+msgstr ""
+
+#: layout.py:573 layout.py:1032
+msgid "Number of text segments"
+msgstr ""
+
+#: layout.py:572 layout.py:1031 textstat.py:51
+msgid "Number of texts"
+msgstr ""
+
+#: dialog.py:2741
+msgid "One file by modality"
+msgstr ""
+
+#: iramuteq.py:295
+msgid "Online help..."
+msgstr ""
+
+#: dialog.py:2741
+msgid "Only one file"
+msgstr ""
+
+#: tree.py:445 tree.py:487
+msgid "Open ..."
+msgstr ""
+
+#: iramuteq.py:205
+msgid "Open a matrix"
+msgstr ""
+
+#: iramuteq.py:209
+msgid "Open a text corpus"
+msgstr ""
+
+#: iramuteq.py:213
+msgid "Open an analysis"
+msgstr ""
+
+#: tree.py:626
+msgid "Open in a web browser ?"
+msgstr ""
+
+#: dialog.py:2349
+msgid "Other"
+msgstr ""
+
+#: dialog.py:930 dialog.py:976 dialog.py:1007 parse_factiva_xml.py:94
+msgid "Output file"
+msgstr ""
+
+#: dialog.py:2363
+msgid "Output folder"
+msgstr ""
+
+#: layout.py:729 Liste.py:58
+msgid "POS"
+msgstr ""
+
+#: layout.py:731
+msgid "POS frequencies"
+msgstr ""
+
+#: tree.py:448
+msgid "POS profiles"
+msgstr ""
+
+#: layout.py:733
+msgid "POS relative frequencies"
+msgstr ""
+
+#: dialog.py:1080 dialog.py:2302
+msgid "Path"
+msgstr ""
+
+#: dialog.py:428 dialog.py:437
+msgid "Path : "
+msgstr ""
+
+#: dialog.py:550 dialog.py:2007 guifunct.py:257
+msgid "Picture format"
+msgstr ""
+
+#: dialog.py:1818 guifunct.py:408
+msgid "Picture size"
+msgstr ""
+
+#: dialog.py:341
+msgid "Play a sound at the end of analysis"
+msgstr ""
+
+#: corpus.py:1624 iramuteq.py:581 iramuteq.py:626 layout.py:946 tree.py:739
+#: tree.py:1063
+msgid "Please wait..."
+msgstr ""
+
+#: tree.py:514
+msgid "Please wait...Reading corpus"
+msgstr ""
+
+#: OptionAlceste.py:47
+msgid "Potato mode (less precise, faster)"
+msgstr ""
+
+#: iramuteq.py:251
+msgid "Preferences"
+msgstr ""
+
+#: dialog.py:1357 dialog.py:1581
+msgid "Previous"
+msgstr ""
+
+#: ProfList.py:428 ProfList.py:462
+msgid "Problem"
+msgstr ""
+
+#: layout.py:513
+msgid "Profiles"
+msgstr ""
+
+#: iramuteq.py:269
+msgid "Prototypical Analysis"
+msgstr ""
+
+#: layout.py:1263 layout.py:1273
+msgid "Prototypical analysis"
+msgstr ""
+
+#: ProfList.py:334
+msgid "Proxemy"
+msgstr ""
+
+#: dialog.py:2432
+msgid "Put text in lowercase"
+msgstr ""
+
+#: dialog.py:432
+msgid "R path"
+msgstr ""
+
+#: dialog.py:1220
+msgid "Ranking score"
+msgstr ""
+
+#: dialog.py:2878
+msgid "Ranks"
+msgstr ""
+
+#: layout.py:378
+msgid "Reading profiles"
+msgstr ""
+
+#: iramuteq.py:308
+msgid "Ready"
+msgstr ""
+
+#: iramuteq.py:264 iramuteq.py:285 tree.py:397
+msgid "Reinert's Method"
+msgstr ""
+
+#: tree.py:390
+msgid "Rename"
+msgstr ""
+
+#: ProfList.py:338 ProfList.py:590
+msgid "Repeated segments"
+msgstr ""
+
+#: dialog.py:1243 layout.py:519 tree.py:447
+msgid "Repeated segments profiles"
 msgstr ""
 
-#: iramuteq.py:214
-msgid "Extract mods"
+#: dialog.py:2460
+msgid "Replace apostrophe by space"
 msgstr ""
 
-#: iramuteq.py:267
-msgid "File"
+#: dialog.py:2468
+msgid "Replace dash by space"
 msgstr ""
 
-#: iramuteq.py:272
-msgid "Help"
+#: tree.py:455 tree.py:486 tree.py:666 tree.py:676
+msgid "Report"
 msgstr ""
 
-#: iramuteq.py:232
-msgid "Home page"
+#: dialog.py:556
+msgid "Representation"
 msgstr ""
 
-#: iramuteq.py:210
-msgid "Import from factiva"
+#: dialog.py:1521
+msgid "Results"
 msgstr ""
 
-#: corpus.py:1147
-msgid "No Text in corpora. Are you sure of the formatting ?"
+#: dialog.py:2661
+msgid "Save as ..."
 msgstr ""
 
-#: iramuteq.py:190
-msgid "Open a matrix"
+#: dialog.py:1736 guifunct.py:219
+msgid "Score"
 msgstr ""
 
-#: iramuteq.py:194
-msgid "Open a text corpora"
+#: guifunct.py:319
+msgid "Score on edges"
 msgstr ""
 
-#: iramuteq.py:198
-msgid "Open an analysis"
+#: tree.py:635
+msgid "Search ..."
 msgstr ""
 
-#: iramuteq.py:229
-msgid "Preferences"
+#: ProfList.py:249
+msgid "Search..."
 msgstr ""
 
-#: iramuteq.py:222
-msgid "Save tab as..."
+#: ProfList.py:694
+msgid "Segments of this clustering"
 msgstr ""
 
-#: iramuteq.py:233
+#: parse_factiva_xml.py:89
+msgid "Select a directory of txt files"
+msgstr ""
+
+#: parse_factiva_xml.py:87
+msgid "Select a directory of xml files"
+msgstr ""
+
+#: dialog.py:2352 dialog.py:2701
+msgid "Select a file"
+msgstr ""
+
+#: guifunct.py:379
+msgid "Select a variable"
+msgstr ""
+
+#: dialog.py:1726
+msgid "Select by"
+msgstr ""
+
+#: tabsimi.py:78
+msgid "Select columns"
+msgstr ""
+
+#: dialog.py:330 dialog.py:469 dialog.py:970 dialog.py:1041 dialog.py:2149
+#: dialog.py:2279 dialog.py:2864 guifunct.py:161 OptionAlceste.py:63
+msgid "Settings"
+msgstr ""
+
+#: iramuteq.py:255
 msgid "Show data"
 msgstr ""
 
-#: iramuteq.py:234
+#: iramuteq.py:256
 msgid "Show results"
 msgstr ""
 
-#: iramuteq.py:213
+#: iramuteq.py:268 iramuteq.py:288 tree.py:400
+msgid "Similarities Analysis"
+msgstr ""
+
+#: OptionAlceste.py:31
+msgid "Size of rst1"
+msgstr ""
+
+#: layout.py:584
+msgid "Size of rst1 / rst2"
+msgstr ""
+
+#: OptionAlceste.py:33
+msgid "Size of rst2"
+msgstr ""
+
+#: layout.py:744
+msgid "Specificities"
+msgstr ""
+
+#: iramuteq.py:282 tree.py:395
+msgid "Specificities and CA"
+msgstr ""
+
+#: dialog.py:596 guifunct.py:670
+msgid "Spheres transparency"
+msgstr ""
+
+#: iramuteq.py:232 tree.py:428
 msgid "Split from variable"
 msgstr ""
 
-#: iramuteq.py:270 iramuteq.py:427 iramuteq.py:636 tableau.py:185
-msgid "Spreadsheet analysis"
+#: tree.py:429
+msgid "Split matrix"
+msgstr ""
+
+#: layout.py:551
+msgid "Stat by cluster"
+msgstr ""
+
+#: iramuteq.py:281 tree.py:394
+msgid "Statistics"
+msgstr ""
+
+#: tree.py:405
+msgid "Sub corpus"
+msgstr ""
+
+#: tree.py:457
+msgid "Sub corpus from clusters"
+msgstr ""
+
+#: tree.py:403
+msgid "Sub corpus from metadata"
+msgstr ""
+
+#: tree.py:404
+msgid "Sub corpus from thematic"
+msgstr ""
+
+#: dialog.py:1340
+msgid "Supplementaries variables (almost 1)"
+msgstr ""
+
+#: layout.py:776
+msgid "Supplementary forms"
+msgstr ""
+
+#: dialog.py:1327
+msgid "Supplementary variables are marked with a *"
+msgstr ""
+
+#: ProfList.py:331
+msgid "Synonymous"
+msgstr ""
+
+#: dialog.py:562
+msgid "Take the x first points"
+msgstr ""
+
+#: dialog.py:566
+msgid "Take the x first points by cluster"
 msgstr ""
 
-#: iramuteq.py:271 iramuteq.py:428 iramuteq.py:635 openanalyse.py:116
-#: openanalyse.py:119 openanalyse.py:122 openanalyse.py:125 openanalyse.py:128
-#: openanalyse.py:131 tableau.py:186
+#: iramuteq.py:301
 msgid "Text analysis"
 msgstr ""
 
-#: iramuteq.py:219
+#: dialog.py:2101
+msgid "Text color"
+msgstr ""
+
+#: dialog.py:2381
+msgid "Text mark"
+msgstr ""
+
+#: guifunct.py:306
+msgid "Text on vertex"
+msgstr ""
+
+#: dialog.py:2406
+msgid "Text segments build process"
+msgstr ""
+
+#: dialog.py:2415
+msgid "Text segments size"
+msgstr ""
+
+#: dialog.py:73 dialog.py:74 dialog.py:78
+msgid "Text separator"
+msgstr ""
+
+#: dialog.py:560 dialog.py:2061 guifunct.py:345
+msgid "Text size"
+msgstr ""
+
+#: dialog.py:583
+msgid "Text size proportional to chi2"
+msgstr ""
+
+#: dialog.py:576
+msgid "Text size proportional to frequency"
+msgstr ""
+
+#: tree.py:147
+msgid "Textual corpus"
+msgstr ""
+
+#: tree.py:449 tree.py:478
+msgid "Tgen Editor"
+msgstr ""
+
+#: layout.py:689
+msgid "Tgens Specificities"
+msgstr ""
+
+#: dialog.py:952 dialog.py:1029
+msgid "This file already exists. Continue anyway ?"
+msgstr ""
+
+#: tree.py:1074
+#, python-format
+msgid "This file does not exist : %s"
+msgstr ""
+
+#: layout.py:133
+msgid "This file will be delete : "
+msgstr ""
+
+#: ProfList.py:462
+msgid "This is not a meta-data"
+msgstr ""
+
+#: ProfList.py:428
+msgid "This is not a variable_modality form"
+msgstr ""
+
+#: iramuteq.py:241
 msgid "Tools"
 msgstr ""
 
-#: iramuteq.py:269 iramuteq.py:426 iramuteq.py:564 iramuteq.py:634
-#: tableau.py:184
+#: ProfList.py:335
+msgid "Tools from CNRTL (french only)"
+msgstr ""
+
+#: layout.py:774
+msgid "Total"
+msgstr ""
+
+#: listlex.py:209 listlex.py:274 ProfList.py:339 ProfList.py:622
+msgid "Typical text segments"
+msgstr ""
+
+#: guifunct.py:206
+msgid "Use previous coordinates"
+msgstr ""
+
+#: dialog.py:420
+msgid "Use svdlibc"
+msgstr ""
+
+#: dialog.py:2390
+msgid "Use the expression dictionary"
+msgstr ""
+
+#: dialog.py:1721 dialog.py:2046
+msgid "Used forms"
+msgstr ""
+
+#: dialog.py:2874
+msgid "Variables"
+msgstr ""
+
+#: dialog.py:2718
+msgid "Variables (with the * but without the _)"
+msgstr ""
+
+#: dialog.py:1749
+msgid "Variables choice"
+msgstr ""
+
+#: dialog.py:2246
+msgid "Variables selection"
+msgstr ""
+
+#: guifunct.py:621
+msgid "Vertex color"
+msgstr ""
+
+#: guifunct.py:649
+msgid "Vertex size"
+msgstr ""
+
+#: guifunct.py:439
+msgid "Vertex size proportional to frequency"
+msgstr ""
+
+#: guifunct.py:486
+msgid "Vertex text size proportional to frequency"
+msgstr ""
+
+#: iramuteq.py:299
 msgid "View"
 msgstr ""
 
-#: iramuteq.py:206
+#: iramuteq.py:309
+msgid "Welcome"
+msgstr ""
+
+#: ProfList.py:340
+msgid "Word cloud of cluster"
+msgstr ""
+
+#: ProfList.py:317
+msgid "Word graph"
+msgstr ""
+
+#: dialog.py:2017
+msgid "Word size proportional to ..."
+msgstr ""
+
+#: iramuteq.py:290 tree.py:401
+msgid "WordCloud"
+msgstr ""
+
+#: dialog.py:1956
+msgid "Wordcloud settings"
+msgstr ""
+
+#: dialog.py:1222
+msgid "absolute (sum of chi2 of marked forms in segment)"
+msgstr ""
+
+#: dialog.py:559 dialog.py:1722 dialog.py:2050
+msgid "actives"
+msgstr ""
+
+#: dialog.py:1722 dialog.py:2050
+msgid "actives and supplementaries"
+msgstr ""
+
+#: OptionAlceste.py:32
+msgid "actives forms"
+msgstr ""
+
+#: tree.py:485
+msgid "antiprofiles"
+msgstr ""
+
+#: dialog.py:2907 dialog.py:2927
+msgid "automatic (mean)"
+msgstr ""
+
+#: dialog.py:1911
+msgid "bar"
+msgstr ""
+
+#: dialog.py:1888
+msgid "black and white"
+msgstr ""
+
+#: dialog.py:2183
+msgid "black and white graphical"
+msgstr ""
+
+#: dialog.py:2286
+msgid "characters"
+msgstr ""
+
+#: dialog.py:1733 dialog.py:1735 dialog.py:2021
+msgid "chi2"
+msgstr ""
+
+#: dialog.py:1911
+msgid "circular diagram"
+msgstr ""
+
+#: dialog.py:1481
+msgid "cluster"
+msgstr ""
+
+#: dialog.py:559 dialog.py:873
+msgid "clusters"
+msgstr ""
+
+#: dialog.py:1888
+msgid "color"
+msgstr ""
+
+#: dialog.py:2177
+msgid "column percentage"
+msgstr ""
+
+#: dialog.py:557
+msgid "coordinates"
+msgstr ""
+
+#: dialog.py:2298 dialog.py:2697
+msgid "corpus"
+msgstr ""
+
+#: dialog.py:557
+msgid "correlations"
+msgstr ""
+
+#: OptionAlceste.py:30
+msgid "double on RST"
+msgstr ""
+
+#: dialog.py:2161
+msgid "expected values"
+msgstr ""
+
+#: dialog.py:1481
+msgid "form"
+msgstr ""
+
+#: dialog.py:2021
+msgid "frequency"
+msgstr ""
+
+#: iramuteq.py:221
 msgid "from copy/paste"
 msgstr ""
 
-#: iramuteq.py:205
+#: iramuteq.py:220
 msgid "from mail"
 msgstr ""
 
-#: iramuteq.py:204
+#: iramuteq.py:219
 msgid "from xml"
 msgstr ""
+
+#: dialog.py:2180
+msgid "graphical"
+msgstr ""
+
+#: dialog.py:554 dialog.py:1826 dialog.py:1979 guifunct.py:416
+msgid "height"
+msgstr ""
+
+#: dialog.py:1733
+msgid "hypergeometrical law"
+msgstr ""
+
+#: dialog.py:1072
+msgid "indexation"
+msgstr ""
+
+#: layout.py:596
+msgid "line classified on"
+msgstr ""
+
+#: dialog.py:2907 dialog.py:2927
+msgid "manual"
+msgstr ""
+
+#: dialog.py:1727
+msgid "modalities"
+msgstr ""
+
+#: dialog.py:46 dialog.py:56 dialog.py:349 dialog.py:364 dialog.py:921
+#: dialog.py:1056 dialog.py:1259 dialog.py:1331
+msgid "no"
+msgstr ""
+
+#: dialog.py:2158
+msgid "observed values"
+msgstr ""
+
+#: dialog.py:2286
+msgid "occurrences"
+msgstr ""
+
+#: textstat.py:54
+msgid "of forms"
+msgstr ""
+
+#: textstat.py:54
+msgid "of occurrences"
+msgstr ""
+
+#: dialog.py:1072
+msgid "other"
+msgstr ""
+
+#: dialog.py:2286
+msgid "paragraphs"
+msgstr ""
+
+#: dialog.py:1065
+msgid "properties"
+msgstr ""
+
+#: dialog.py:1222
+msgid "relative (mean of chi2 of marked forms in segment)"
+msgstr ""
+
+#: dialog.py:2164
+msgid "residuals"
+msgstr ""
+
+#: dialog.py:2174
+msgid "row percentage"
+msgstr ""
+
+#: dialog.py:1481
+msgid "see"
+msgstr ""
+
+#: layout.py:592
+msgid "segments classified on"
+msgstr ""
+
+#: OptionAlceste.py:30
+msgid "simple on text segments"
+msgstr ""
+
+#: OptionAlceste.py:30
+msgid "simple on texts"
+msgstr ""
+
+#: dialog.py:2167
+msgid "standardized residuals"
+msgstr ""
+
+#: dialog.py:559
+msgid "stars"
+msgstr ""
+
+#: dialog.py:559 dialog.py:1722 dialog.py:2050
+msgid "supplementaries"
+msgstr ""
+
+#: OptionAlceste.py:45
+msgid "svd method"
+msgstr ""
+
+#: layout.py:594
+msgid "texts classified on"
+msgstr ""
+
+#: dialog.py:2747
+msgid "thematics (one by line, with the -*)"
+msgstr ""
+
+#: layout.py:598
+msgid "time"
+msgstr ""
+
+#: dialog.py:2171
+msgid "total percentage"
+msgstr ""
+
+#: dialog.py:1727
+msgid "variables"
+msgstr ""
+
+#: dialog.py:552 dialog.py:1837 dialog.py:1991 guifunct.py:423
+msgid "width"
+msgstr ""
+
+#: dialog.py:46 dialog.py:56 dialog.py:349 dialog.py:364 dialog.py:921
+#: dialog.py:1056 dialog.py:1259 dialog.py:1331
+msgid "yes"
+msgstr ""
index 53206e6..5a0984d 100644 (file)
@@ -10,11 +10,13 @@ import codecs
 
 
 class SearchFrame(wx.Frame):
-    def __init__(self, parent, id, title, corpus, size=(800, 500)):
+    def __init__(self, parent, id, title, corpus, size=(800, 900)):
         # begin wxGlade: MyFrame.__init__
         #kwds["style"] = wx.DEFAULT_FRAME_STYLE
-        wx.Frame.__init__(self, parent, id)
+        wx.Frame.__init__(self, parent, id, size = size, style = wx.CLOSE_BOX|wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL)
         self.parent = parent
+        self.ira = wx.GetApp().GetTopWindow()
+        self.SetIcon(self.ira._icon)
         search_id = wx.NewId()
         self.Bind(wx.EVT_MENU, self.onsearch, id = search_id)
         self.accel_tbl = wx.AcceleratorTable([(wx.ACCEL_CTRL, ord('F'), search_id)])
@@ -51,7 +53,7 @@ class SearchFrame(wx.Frame):
         self.Bind(wx.EVT_BUTTON, self.OnCloseMe, self.button_1)
         self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
         self.SetTitle(u'Navigation')
-        self.SetSize(wx.Size(400,700))
+        self.SetSize(wx.Size(900,700))
         self.__do_layout()
         # end wxGlade
 
index dd5349c..55e2f2b 100644 (file)
@@ -4,19 +4,13 @@
 #License: GNU/GPL
 
 from chemins import ffr, simipath
-#from corpus import Corpus
 import os
 from analysetxt import AnalyseText
-#from ConfigParser import RawConfigParser
-#from guifunct import getPage, getCorpus
 from guifunct import PrepSimi
 from functions import indices_simi, progressbar, treat_var_mod, read_list_file, print_liste
-#from tableau import Tableau
-#from tabsimi import DoSimi
 from PrintRScript import PrintSimiScript
 import wx
 from copy import copy
-
 import logging
 
 log = logging.getLogger('iramuteq.textsimi')
@@ -44,6 +38,8 @@ class SimiTxt(AnalyseText):
                 continu = True
                 self.parametres = prep.parametres
                 self.dlg = progressbar(self.ira, 4)
+            else :
+                return False
         else :
             continu = True
         if continu :
@@ -123,7 +119,8 @@ class SimiFromCluster(SimiTxt) :
         self.lfreq = lfreq
         self.lchi = lchi
         parametres['name'] = 'simi_classe_%i' % (numcluster + 1)
-        SimiTxt.__init__(self, ira, corpus, parametres, dlg, lemdial = False)
+        dlg.Destroy()
+        SimiTxt.__init__(self, ira, corpus, parametres, dlg=True, lemdial = False)
     
     def preferences(self) :
         return self.parametres
@@ -138,9 +135,9 @@ class SimiFromCluster(SimiTxt) :
             del self.parametres['bystar']
         dictcol = dict([[i, [act, self.corpus.getlemclustereff(act, self.numcluster)]] for i, act in enumerate(self.actives)]) 
         continu = True
+        #print self.dlg
         if self.dlg :
-            #self.listet = self.corpus.make_etoiles()
-            #self.listet.sort()
+            self.dlg.Destroy()
             self.stars = []#copy(self.listet)
             self.parametres['stars'] = 0#copy(self.listet)
             self.parametres['sfromchi'] = 1
@@ -151,6 +148,7 @@ class SimiFromCluster(SimiTxt) :
             else :
                 continu = False
         if continu :
+            self.dlg = progressbar(self.parent, 3)
             self.makefiles()
             self.parametres['type'] = 'clustersimitxt'
             script = PrintSimiScript(self)
index 76ecb40..c25b9dc 100644 (file)
@@ -5,20 +5,10 @@
 #License: GNU/GPL
 
 from chemins import ffr
-from chemins import PathOut
 from analysetxt import AnalyseText
-#from corpus import Corpus
-from guifunct import getPage, getCorpus
-from ConfigParser import RawConfigParser
-from functions import sortedby, progressbar, CreateIraFile, exec_rcode, check_Rresult, DoConf
-from dialog import StatDialog
-from openanalyse import OpenAnalyse
-#from ttparser import * 
+from functions import sortedby, progressbar, exec_rcode, check_Rresult 
 import tempfile
 from time import sleep
-import wx
-import os
-
 import logging
 
 logger = logging.getLogger('iramuteq.textstat')
@@ -57,14 +47,13 @@ class Stat(AnalyseText) :
         phapax = (float(len(hapax)) / float(occurrences)) * 100
         phapax_forme = (float(len(hapax)) / (float(len(formes)))) * 100
         moy_occu_mot = float(occurrences) / float(len(formes))
-        txt = 'Globale\n'
-        txt += 'nombre de textes : %i\n' % len(self.corpus.ucis)
-        txt += 'nombre d\'occurrences : %i\n' % occurrences
-        txt += 'nombre de formes : %i\n' % (len(formes))
-        txt += 'moyenne d\'occurrences par forme : %.2f\n' % moy_occu_mot
-        txt += 'nombre d\'hapax : %i (%.2f%% des occurrences - %.2f%% des formes)\n' % (len(hapax), phapax, phapax_forme)
-        print float(occurrences), float(len(self.corpus.ucis))
-        txt += 'moyenne d\'occurrences par texte : %.2f' % (float(occurrences)/float(len(self.corpus.ucis)))
+        txt = ''.join([_(u'Abstract').decode('utf8'), '\n'])
+        txt += ''.join([_(u'Number of texts').decode('utf8'),' : ', '%i\n' % len(self.corpus.ucis)])
+        txt += ''.join([_(u"Number of occurrences").decode('utf8'),' : %i\n' % occurrences])
+        txt += ''.join([_(u'Number of forms').decode('utf8'), ' : %i\n' % (len(formes))])
+        txt += ''.join([_(u"Number of hapax").decode('utf8'),' : %i (%.2f%%' % (len(hapax),phapax), _(u'of occurrences').decode('utf8'), ' - %.2f%% ' % phapax_forme, _(u'of forms').decode('utf8'), ')\n']) 
+        #print float(occurrences), float(len(self.corpus.ucis))
+        txt += ''.join([_(u"Mean of occurrences by text").decode('utf8'), ' : %.2f' % (float(occurrences)/float(len(self.corpus.ucis)))])
         if self.dlg :
             self.dlg.Update(7, u'Ecriture...')
         self.result['glob'] = txt
diff --git a/tree.py b/tree.py
index 3d8196c..12627f4 100644 (file)
--- a/tree.py
+++ b/tree.py
@@ -394,11 +394,11 @@ class LeftTree(CT.CustomTreeCtrl):
                 stat = menu.Append(wx.ID_ANY, _(u"Statistics").decode('utf8'))
                 spec = menu.Append(wx.ID_ANY, _(u"Specificities and CA").decode('utf8'))
                 classification = wx.Menu()
-                reinert = classification.Append(wx.ID_ANY, _(u"Reinert method").decode('utf8'))
+                reinert = classification.Append(wx.ID_ANY, _(u"Reinert's Method").decode('utf8'))
                 #pam = classification.Append(wx.ID_ANY, u"Par matrice des distances")
                 menu.AppendMenu(-1, _(u"Clustering").decode('utf8'), classification)
-                simi = menu.Append(wx.ID_ANY, _(u"Similarities analysis").decode('utf8'))
-                wdc = menu.Append(wx.ID_ANY, _(u"Wordcloud").decode('utf8'))
+                simi = menu.Append(wx.ID_ANY, _(u"Similarities Analysis").decode('utf8'))
+                wdc = menu.Append(wx.ID_ANY, _(u"WordCloud").decode('utf8'))
                 subcorpus = wx.Menu()
                 subcorpusfrommeta = subcorpus.Append(wx.ID_ANY, _(u'Sub corpus from metadata').decode('utf8'))
                 subcorpusfromtheme = subcorpus.Append(wx.ID_ANY, _(u'Sub corpus from thematic').decode('utf8'))
@@ -750,7 +750,25 @@ class LeftTree(CT.CustomTreeCtrl):
     
     def OnRename(self, event):
         pydata = self.itemdict['pydata']
-        print pydata
+        if 'matrix_name' in pydata :
+            name = 'matrix_name'
+        elif 'corpus_name' in pydata :
+            name = 'corpus_name'
+        else :
+            name = 'name'
+        oldname = pydata[name]
+        dlg = wx.TextEntryDialog(self, "Please Enter The New Item Name", 'Item Naming', oldname)
+        if dlg.ShowModal() == wx.ID_OK:
+            newname = dlg.GetValue()
+            dlg.Destroy()
+            pydata[name] = newname
+            Totconf = DoConf(configfile=pydata['ira'])
+            conf = Totconf.getoptions()
+            conf[name] = newname
+            Totconf.makeoptions(Totconf.getsections(), [conf])
+            self.history.update(pydata)
+            self.SetItemText(self.current, newname)
+            self.EnsureVisible(self.current)
 
     def OnItemBackground(self, event):